最佳密码强度检查器

信息安全 密码 蛮力 密码策略
2021-09-02 05:35:43

XKCD #936:短复杂密码,还是长字典密码?Jeff 声称用“用空格分隔的字典单词”、“带有标点符号的完整句子”或“leet-speak numb3r 替换”来破解密码“在实践中是极不可能的”。

但是,肯定有 John-the-Ripper 规则集执行 l33t-speak 替换和“预/附加标点符号或 1-4 位数字(有些甚至包含在默认集中,更多内容在https://www. owasp.org/images/a/af/2011-Supercharged-Slides-Redman-OWASP-Feb.pdf,其中谈到使用此类技术破解约 5 万个“公司”密码;http: //contest-2010.korelogic.com/ rules.html使用了一些特定的 JtR 规则),我看不出攻击者不使用它们的任何原因。

Jeff 使用 rumkin.com 部分证明了他的说法,即 Tr0ub4dor&3 在实践中与 4-word-from-2K-wordlist 密码短语一样安全。但是 rumkin.com 在确定熵时似乎没有考虑 l33t-speak 替换。

所以我的问题是:是否有任何密码强度检查器考虑到 l33t-speak 和类似的替换和连接添加的有限熵?

理想情况下,评级将与实际攻击者(使用“最先进的”技术,而不仅仅是逐个字符的暴力破解)查找密码所需的时间量密切相关。这些技术将包括 l33t-speak 转换、通用密码、单词表等。

出于显而易见的原因,首选开源非基于 Web 的。虽然一个好的密码生成算法(根据定义)是安全的,即使攻击者已经看到了由相同算法生成的其他密码,其想法是将天真的用户指向这个检查器,关键是他们的密码不太可能被通过声音算法生成。

如果它从提交给它的密码中获悉,则加分……除非它自动闯入用户的贝宝账户并用这笔钱资助天网……

4个回答

理论上,密码强度检查器不起作用。这是因为密码的强度不取决于密码(您提供给检查器),而是取决于密码生成过程(您不经常正式化,更不用说输入检查器了)。

在实践中,密码强度检查器使用一组描述常见密码生成方法的规则;然后,他们会告诉您,如果攻击者使用完全相同的规则,您的密码会抵抗多长时间。但是攻击者并没有使用完全相同的规则。攻击者在追你;认识你(如果你只被不认识你的人攻击,那么你可以认为自己很幸运——或者很无趣)。因此,攻击者将修改他的密码暴力破解方法,以针对您的心灵,您可能的密码生成方法。

密码强度检查器擅长告诉您您的密码对无能的攻击者有多强大。这有一些价值,如果仅仅是因为有这么多无能的黑客。但是过分依赖这些工具是错误的。

综合这里的答案,并查看几个(Javascript)密码质量检查器的代码,我不相信有一个完全符合标准的检查器。

具体来说,虽然有几个使用词表,还有几个使用特殊情况的 l33t-speak,但没有一个可以同时使用 JtR 和类似的“审计”工具。所以“圣诞节”被发现了,但几乎一样不安全的“Chr1stm4$”获得了免费通行证。

在使用词表的地方(Microsoft、Rumkin、How Secure ...),它们通常相对较小。How Secure ... 和 Rumkin 每个都有约 10K,而 JtR 有数百万个单词(跨多种语言)。

此外,我发现没有一个检查器将常见的“附加数字/符号”模式视为与“随机混合字符集”有任何不同。

如果有人想扩展现有的检查器之一,它可能不会太难。Rumkin 将是一个很好的起点(并且是 GPL 许可的),通过在字典检查和三字母频率查找之前添加一个“de-l33t-ify”步骤。人们还希望添加一些假设因素以反映 Chr1stma5 不像圣诞节那么容易破解这一事实,例如将“l33t-ified”视为比“字母”稍大的字符集。

对于公司环境,花时间实施“您可以保留密码直到 JtR 猜到它”的密码更改策略(结合有关创建强密码/密码短语的良好建议)可能是一个更好的说服者——员工是需要始终能够登录的俘虏受众,并且人们发现强制更改密码很烦人,因此很快就会学会不使用弱密码(除了要求豁免的 CIO ......)。但是,这种方法不适用于激怒您的客户可能会将他们推向(不太安全!)竞争对手的公共网站。

我认为passwdqc 包(由 John the Ripper 的创建者)也应该被提及。

该软件包中的 pwqcheck 是独立的密码/密码强度检查程序。

在回答上一个关于如何在 SU 上确定密码熵的问题时,提到了三个工具:

我的密码有多安全似乎给出了合理的结果。