测量密码熵并拒绝低熵密码不是更聪明吗?
这将允许使用整个字符集的短密码通过,以及仅使用部分字符集的长密码。
上述方案是可能的还是实现细节阻止了这样的事情发生?
是否有任何网站或程序已经包含此类密码要求?
测量密码熵并拒绝低熵密码不是更聪明吗?
这将允许使用整个字符集的短密码通过,以及仅使用部分字符集的长密码。
上述方案是可能的还是实现细节阻止了这样的事情发生?
是否有任何网站或程序已经包含此类密码要求?
在著名的 XKCD strip之后,启动了一些项目来处理这种熵检查。其中之一是由 Dropbox 员工制作的ZXCVBN 密码检查器。
它可能是同类中最彻底的密码检查器。它检查模式、单词等,并相应地添加(或减去)熵分数。他们的博客上有详细的解释。
这是一个好主意,实际上它是衡量密码强度的唯一正确方法。
但是你将如何测量密码熵?
熵是生成过程的一个方面,而不是输出的一个方面。
例如,这种测量的输出是Tr0ub4dor&3
什么?通过基于给定密码的任何可能的熵的合理测量,这将是相当不错的 - 超过 70 位的熵。或者,考虑到假定的密码生成过程,我可能足够聪明地意识到它实际上只有 28 位,因为每个字符不是随机选择的,而是首先选择一个完整的单词。但实际上我应该完全抛弃这整个想法,因为我显然只是直接从那部漫画中复制出来的。
correct horse battery staple
如果密码是(特定人群中最流行的密码之一), 同样的问题也将适用。
所以是的,密码要求应该基于密码熵,但你不能在事后将此要求应用于给定的密码。
(顺便说一句,正如我在关于这个主题的另一个答案中提到的(从不同的方向),实现一个系统可能是一个好主意,其中密码/密码短语自动生成给定的熵级别,并提供给用户,而不是要求用户提出一个符合我们要求的。当然,这是一个好的密码管理器在客户端上所做的,无论如何......)
选择静态密码策略有两个主要原因:可用性和研究主体证明可接受的有效性。我的大部分答案来自关于高级密码强度计的优秀研究论文Telepathwords。
首先,总结一些用于备份当前密码策略的研究:
密码组合规则至少可以追溯到 1979 年,当时 Morris 和 Thompson 报告了用户在其 Unix 系统上使用的密码的可预测性;他们提出,超过四个字符的密码,或超过五个字符的纯字母密码,将“确实非常安全” [19] [然而] Bonneau 在 33 年后的 2012 年分析了近 7000 万个密码,以衡量六个字符的最低要求与无要求相比[2]。他发现这对安全性几乎没有影响......
这包括 Komanduri 等人的工作。[13]和凯利等人。[12],他们使用类似的研究设计对密码组成规则进行比较分析。这些先前的研究发现,密码长度要求的增加通常会导致更多可用的密码,这些密码也不太可能被他们的猜测算法识别为弱密码 [ 13 12 ]。最近,Shay 等人。研究了需要更长密码的密码组合策略,发现最好的性能来自于混合最少 12 个字符和三个字符集的要求 [25]。
可用性是不更频繁地使用密码熵等更复杂标准的一个重要原因:
在对密码策略分布的研究中,Florencio 和 Herley 发现,在所检查的 75 个网站中,可用性要求似乎至少与安全性一样重要 [8]。...
乌尔等人。还研究了密码强度计对密码创建的影响。他们发现,当用户变得沮丧并对仪表失去信心时,就会出现更多的弱密码。[28] ...
虽然与仅依赖组合规则的方法相比,[Dropbox 的] zxcvbn 在其强度估计的可信度方面提供了急需的改进,但用户不太可能观察到这种可信度。事实上,如果被告知添加字符会增加密码强度的用户看到添加某些字符时分数降低,则其感知可信度可能会受到影响。例如,当键入 iatemylunch 时,当添加最后一个字符时,强度估计值会从第二好的分数 (3) 下降到最差的分数 (1)。即使用户发现 zxcvbn 的强度估计可信,他们也不太可能理解潜在的熵估计机制,因此不确定如何提高他们的分数。[30]
最后,为了完整起见,我们必须意识到在这个例子中定义熵是非常困难的(但远非不可能)。对于密码破解者的猜测算法或字典的复杂程度,我们可以做出许多不同的假设,这些都会导致对密码熵的不同答案,如“Tr0ub4dor&3”或“正确的马电池主食”。最复杂的密码熵测量基于数百万个密码的字典和对密码模式的高级研究,对于许多管理员(和黑客)来说,这种复杂程度是难以实现的。
熵是根据您创建密码的方式计算的。为了计算熵,您不需要知道密码,而是需要知道它是如何创建的。拥有密码并不能帮助您计算熵,它只会让您对熵做出非常糟糕的估计。
例子:
如果我们的密码“Password123”是从包含字母、数字、大小写字母且长度超过 10 个字符的 3 个最常用密码列表中选择的,那么 Password123 的熵低得离谱。
如果一个完美的随机生成器选择相同的密码“Password123”,该生成器创建 11 位密码,每个数字从 5000 个可能的 unicode 代码点中选择,那么 Password123 的熵高得离谱。
换句话说:你在做某事,但“熵”是错误的词——“熵”已经有了不同的含义。您正在寻找的是密码的“强度”。密码的强度很难衡量正确,更难沟通。每当攻击方法改变时,强度就会改变这一事实也无济于事。