[“为什么别人会做我认为愚蠢的事情?” 始终是一个非常开放的问题,需要猜测(并且不太适合 Stack Exchange。)但是因为这个问题在密码策略中非常普遍,我相信它值得探索。]
首先,有很多关于密码的错误信息、迷信、令人困惑的数学和技术问题。
- 一些安全专家认为,特殊字符、数字和混合大小写字母的组合会自动使密码无法猜测,但他们不知道或不同意最佳组合是什么。该指南还应根据用户的母语进行更改,但许多站点管理员并未意识到这些差异。
- 有些人不了解现代密码攻击者可用的大规模并行计算资源。包含用 MD5 散列的每个可能的 8 个字符串的彩虹表的硬盘在网上出售。基于云的计算集群、专用的显卡阵列以及数千台受僵尸网络控制的计算机都被人们用来破解密码。当需要测试猜测时,有进取心的黑客可以随时使用以前破解的密码、每种语言的字典、歌词和电影引用的数据库。
- 人们记得听到过诸如“不要写下密码”之类的话,这是 20 年前的建议,当时您可以指望秘书将老板的密码写在贴在显示器上的便利贴上,而最大的威胁是某人午饭时可以从她的办公桌旁走过。我还没有拆开一个按键记录器,它能够读取我钱包里的一张手写纸。但有些人今天仍然重复这个建议。
- 技术人员在折腾诸如“熵”之类的术语和诸如“7 的 95 次方”之类的数字时也无济于事,这对普通人来说毫无意义。同时,他们忽略了不想输入 12 个加密随机字符的普通用户的心理,更不用说被要求为十几个网站中的每一个记住它们。
其次,众所周知,好的密码很难学习。如果被要求在网站中输入工作密码以便研究其复杂性,大多数人会说“不”。许多涉及人们输入虚构密码的研究没有可靠地模拟现实世界中的记忆或使用的测试条件。因此,我们有关用户选择的密码的主要数据来源是在(越来越频繁的)数据泄露之后发布的密码和哈希值。但这些通常来自像“long-eared-rabbit-fanciers-forum.com”这样的网站,人们知道使用弱密码并没有什么价值。它们似乎不太经常从用户保护自己的信用卡、账户余额或其他形式的数字贵重物品的网站上发布。我不知道银行有任何情况” s 明文密码数据库在线发布。在许多情况下,已发布的数据库是经过哈希处理的,为了分析它们,研究人员必须在分析开始之前使用哈希算法对它们进行暴力攻击。
还有教育。网站管理员不参加“选择一个好的密码复杂性方案”的课程,也不参加“安全存储密码”的课程。并且大量的计算机课程使用“创建登录屏幕”作为介绍程序的示例;但是我见过的许多示例都没有演示过pbkdf2()
在将密码放入数据库之前对密码进行哈希处理。尽管如此,如果您确实提出了选择好密码的有效规则,您仍然必须说服用户选择比“P@ssword1”更安全的密码。
尽管如此,有许多研究人员在密码方面做了很多工作。您可以在http://www.passwordresearch.com找到数百篇关于该主题的精选学术论文。在许多重要的安全会议上都有关于密码的演示。一年一度的国际密码会议。所以有一些知识体系正在建立,但它们还没有形成一套标准化的结论或建议。而且这些信息还没有传播给许多构建网站的架构师和工程师。根本没有从研究人员到实践的可靠信息的直接管道。这可能是最大的障碍。