估计密码破解时间

Estimating Password Cracking Times

所以我最近一直在研究密码破解。我偶然发现了几个声称可以大致告诉您破解密码需要多长时间的网站。

真的,我想知道他们是如何计算的。

据我了解,密码的可能组合是池大小 ^ 密码长度。 例如,一个包含大写字母和小写字母的 5 字母密码将是 52^5 = 380204032 种可能的组合,平均而言,假设仅使用暴力破解方法,在破解密码之前只需要检查这些组合中的 50% .

那么一个网站如何预估被破解的时间呢?当然,这取决于所使用的哈希算法、处理能力等,还是它们只是假设每秒的猜测次数?

我想知道是否有 definitive/standard 估计密码破解时间的方法,如果有,它是如何计算的。

谢谢

假设仅使用暴力破解方法

几乎从来没有这种情况,所有半专业破解者都使用组合方法。然而,对于检查器站点,实现可能会有所不同......通常他们会实现一个简单的基于客户端 JS 的检查器,它可以使用生成的统计信息(字典单词或仅略有不同?长度?字符集? - >你有答案所有这些)。

可能是最佳实施方式:

  1. 密码(和散列)是否在最常用的密码列表中或 leaked already, hence been commonly tested by crackers? Also, famous xkcd 1 and 2

  2. 如果不是,密码的复杂性(字符集、特殊字符等)是多少,因此密码的熵是多少?它最终出现在密码类别 complexity and pre-estimated cracking time?

  3. 的哪个位置

最后,破解密码很便宜,有服务可以租,2019年费用预估are here using AWS and hashcat. In hashcat or john the ripper, you will see exactly the startegies they implement e.g. starting off with your dictionary of choice(e.g. use dict from a specificy language - if for instance the adversary got hold of a spanish website's hashed password database - and the tools will use typical replacements of o->0, a->4 etc., add short words, adding numbers(e.g. dates) before and after so exploiting all the human elements really). Users have been conditioned( really wrongly) to choose a word, and make it more "complex" by adding few numbers, and some special chars in the beginning/end. But it's been long known that lenght beats complexity.

这是来自著名证券公司 expert/researcher 的另一篇精彩文章 explanation,主题完全相同。

对于具体提到的网站,如果您检查网页的来源,目前有一个特定的 JS 资产,您可以将其放入美化器中。

view-source:https://howsecureismypassword.net/app.60d36fdc.js

它有 12k 行,所以我不能真正 post 代码,但是有一段时间这里是 pastebin 上的美化版本。