计算密码熵?

信息安全 密码
2021-08-18 07:50:24

每当我查看密码熵时,我看到的唯一等式是 E = log 2 (R L ) = log 2 (R) * L,其中 E 是密码熵,R 是可用字符的范围,L 是密码长度。

我想知道是否有任何用于计算熵的替代方程式,将弱密码因素纳入方程式。例如,带有连续字符(0123456789)、常用短语(logmein)、重复单词(happyhappy)或附加数字(password1)的密码,由于其各种缺点,都会获得较低的熵等级。

这样的等式存在吗?如果是这样,它是在安全领域普遍使用,还是人们倾向于坚持“标准方程”?

3个回答

当密码是从给定的集合中随机均匀地选择时,有一些方程式;即,如果集合的大小为N,则熵为N(以位表示,取N的以 2 为底的对数)。

例如,如果密码是正好由 8 个小写字母组成的序列,那么所有 8 个小写字符的序列都可能被选中,并且没有任何序列被选择的概率比其他任何序列都高,那么熵为N = 26 8 = 208827064576,即大约 37.6 位(因为这个值接近2 37.6)。

这样一个很好的公式只有在出现均匀随机性的情况下才有效,而且,让我们面对现实吧,在普通人脑中不可能出现均匀随机性。对于人为选择的密码,我们只能根据调查进行估计(查看一些提示)。

必须记住的是,熵限定了密码生成过程,而不是密码本身。根据定义,“密码计”应用程序和网站不看过程,只看结果,并且统一返回糟糕的结果(例如,他们会告诉你“BillClinton”是一个好的密码)。当这个过程是一个大脑内的过程时,任何事情都会发生。

(我用电脑生成密码,而不是用脑袋生成密码,我鼓励人们也这样做。)

剑桥大学的 Joseph Bonneau在用户选择密码领域进行了广泛的研究。最近的一篇论文 (PDF)中,Bonneau 建议使用“个人密码强度的统计指标”。在这篇论文中,他描述了

几种可能的度量标准,用于衡量个人密码或从已知的倾斜分布中提取的任何其他秘密的强度。与以前依赖密码文本属性的临时方法相比,我们在不了解密码结构的情况下考虑该问题。这可以在给定大量样本分布的情况下对密码的强度进行评级,而无需对密码语义做出任何假设

当我们谈论密码的熵时,我们真正感兴趣的是猜测它的难易程度。Bonneau 的论文描述了如何根据实际密码的统计信息来衡量这一点。

从纯粹的组合数学角度来看,0123456789 并不比任何其他 10 个字符的字符串弱。您所指的此类方程式基于组合数学。

但是从统计的角度来看,它较弱,因为人们通常使用它,因为它更容易记住,因此构建通用密码字典的攻击者首先包括那些,因此它很可能是攻击者在它附近破解的第一个密码之一列表的开头让他尝试。您可以创建一些稍微复杂的方程式,或者只是说,好吧,因为您只使用了数字,即使我允许更多,我将仅使用数字作为字符集来计算强度。这将有助于估计统计问题,但不会完全符合实际情况。

您实际上还可以检查密码破解字典并检查单词是否在其中以及最相似的单词有多接近,但这只会根据该特定字典提供强度,而另一个攻击者将使用不同的字典。