经过搜集整理了以下5种进行密码强度评估方法,你可以根据产品的数据风控程度选择匹配版本投产使用。
–
3. 计算方式
密码彩虹表——示例有关防御彩虹表攻击,开发者在编码时请勿在密码散列函数中使用MD5或SHA1,在密码散列例程中使用密码盐来帮助应用程序“防虹”的编码。
Google 密码强度反馈选取了10个领域共50个流量排名靠前的网站,借助网站曾经泄露的密码数据库,先利用离线漫步攻击分析得到密码最常用的结构和使用频次的字典表。
测量核心公式:Nmin*log2Cmin,具体解释可参照论文解释。
作者提出从6个维度评估密码的强度,分别是:
- 长度要求密码不小于8位;
- 强制执行强制最小字符类型要求;
- 允许使用符号,带符号的密码通常比不带符号的密码安全得多;
- 使用常用弱密码的黑名单表(彩虹表),禁止使用;
- 禁用账户名或个人名;
- 向用户提供明确的密码建议和指导。
另外,中国用户喜欢把名字放在密码中,作者在破解过程中充分利用名字信息,对算法进行改进,用于度量密码强度测试。
彩虹表需要集成“中式密码”,比如,“woaini”、“5201314”、“zhangsan2022”和“longguofu123”之类的密码。
六、总结
在真实的世界,对于普通用户来说有没有办法可以设置真正意义上高强度的密码呢?
参照专家们给出的建议,你可以试试这样做。
1) 不要在密码中包含用户名、真实姓名、生日或公司名称,也不要包含任何与登录信息相关的信息。
例如,地址或电话号码。最好也不要包含任何可以在社交媒体上访问的信息,例如孩子或宠物的名字。
还有,比如在银行网站让你设置3个安全登录问题的时候,不要如实回答。
2) 研究发现45%的人使用8个字符或更少字符的密码。如果可能的话,密码的长度至少应为16个字符。
相较于在密码中加入非字母字符而言,增加长度可以更简单地使密码变强。
例如,12个字母的密码比12个数字的密码的破解难度仅大8倍。
但由16个仅字母字符组成的密码比由12个各类字符组成的密码的破解难度大800万倍。
3) 密码应包括字母、数字和字符的组合,不应包含任何连续的字母或数字,不应是“密码”一词或重复的相同字母或数字。
例如,guofu8888、mima777、password111。
4) 密码不应是在键盘上经常连续敲击的字符串。例如,asdfghjkl。
5) 密码不应与任何其他帐户共享。可以使用专业的密码管理器和定期修改密码(虽然很难),可以用密码强度工具帮忙生成密码。
密码的存在笔者一直认为是反人性的设计,但是它的存在对鉴权、保护隐私又有其必要性。
选择哪种密码强度取决于设计者对于“便捷”与“安全”的平衡,对于金融级别的产品,毫无疑问需要高强度或多重验证。
而对于轻应用,更多可把方便为主要考虑。
此外,笔者一直有种感觉,或者没有密码,使用生物生命特征才是更人性化的设计。
次之,用社交账号授权、手机动态验证码进行验证,对于安全性较低的产品也是不错的解决方案。
最后,没有一个密码是“最安全的”,如果有的话,把它写出来就会变得不安全,因为有成千上万的人会在他们的账户上使用它。
题图来Unsplash,基于CC0协议。