常见的“最小密码长度”准则起源于哪里?

信息安全 密码策略 历史的
2021-09-11 05:18:33

不久前,人们普遍认为密码至少应包含 8 个字符。如今,最常见的最小值是 12。

这些共同价值观从何而来?有趣的是,8 正是“密码”中的字符数——这与第一个有关吗?

有没有人特别说“8”或“12”,而整个行业的其他人都听从了他们的建议?还是有一些常用的操作系统或应用程序任意决定了它们的最小值,然后被其他人复制?

3个回答

具有旧的基于 DES 的crypt()功能的 Unix 密码被限制为 8 个字符(并且每个字节的高位被忽略)。因此,超过 8 个字符的下限根本行不通。

最小密码大小的驱动力是蛮力效率:小密码绝对是弱密码,因为尝试所有组合,比如 7 个字符,可以用相对便宜的硬件完成,而且不需要太多时间。特别是在旧的基于 DES 的crypt()函数的情况下,尝试一个密码的计算成本很低。因此,在“旧 Unix”环境(典型的 1980 年代机房)中,最小大小为 8 是可以期望的最佳值,并且您真的不希望允许使用更小的密码。

我认为“8”来自于此。剩下的就是历史、社会学和香蕉的问题了。

黑猩猩的证词

15 多年前,我在 Tru64 上担任系统管理员,这是一个由Digital Equipment Corporation在 OSF/1 之上开发的操作系统。该系统建立在 64 位架构上,并在基本安全方面取得了许多重大进展。其中之一是允许使用DES来管理长度不超过 16 个字符的密码。由于我已经充分了解破解 56 位 DES 的简单性,因此我是最早使用更严格密码的人之一。我当时计算出,对我来说,密码的最佳大小在 12 到 16 之间。

不幸的是,有一天……我在输入密码以远程访问我的系统时犯了一个愚蠢的错误。我知道我打错了一个字符,因为我使用的是外语键盘。它奏效了。这是直接在大脑中进行的虚拟冷水淋浴。

我立即停止了正在进行的工作(并完全放弃了我的香蕉)。我追捕了丑陋的虫子。我一个接一个地缩短密码以查找错误所在。

很快就发现了限制:它是 8。无论我在第一个正确的 8 个字符之后输入的字符是什么,这个被截断的密码都被接受了。一个错误立即被填满了 DEC,并以艰难的方式吸取了教训。

同一天,我立即呼吁所有同事和用户停止使用超过 8 个字符的密码,因为它们只是虚假的安全性。它们应该保持在 8 个字符的限制,因为对于某些服务器,其他字符不是身份验证过程的一部分。

显然没有历史渊源,我的很多同事把这种宗教恐惧传播到了今天☺。因此,您可以看到史前操作系统仍然无法跨越这 8 个字符的障碍,而不会害怕失去他们的字符。

他们不会永远陷入这种恐惧之中,或者……也许他们会。

12 来自当前最先进的蛮力哈希硬件。一个有钱的普通人可以购买两打显卡,将它们安装在散热良好的机箱中,加载一些专门的 GPU 软件,每秒执行 3480 亿次哈希。这足以让计算机在非常合理的时间内暴力破解所有可能的 10 个字符的密码。(除非他们受到 PBKDF2 的保护,并且有很多回合。)

12个随机字符比10个随机字符要好一些,但它离明天容易破解只有几美元的距离。

更长的密码仍然更好,但如果只是成对的字典单词,它们也很容易掉。

类似的问题是“为什么北美电话号码是 7 位数长?”这个问题的答案。电话公司的测试表明,这已接近人类能够可靠记忆的极限。这是一个糟糕的指南,特别是如果用户使用字典单词作为他的密码,但很容易看出建议如何从一种情​​况传递到另一种情况。