密码破解者实际上每秒可以尝试多少次?

How many attempts per second can a password cracker actually make?

Google 搜索显示密码破解者可以快速尝试数百万种组合并轻松破解许多密码。

我的研究并未表明他们是否可以在现实世界的攻击中如此迅速地进行如此多的尝试。这些密码破解者实际上如何与服务器交互?他们是否以自动方式填写表格?当我提交密码 IRL 时,最多需要几秒钟才能收到回复。这将使破解密码所需的时间成倍增加!这应该对这些密码破解者提供很多保护!

密码破解者是否会在许多机器上分配密码尝试以便他们可以同时尝试?对于网站服务器而言,将其识别为自动攻击不是微不足道的吗?是否有一些更快的方法允许破解者进行多次尝试(为什么服务器会允许它)?

Hashcat is the fastest and most advanced password crack utility. It can run on CPUs and GPUs. It can use multiple cores in the GPU and can be parallelized to use multiple cores and boards. The number of the tested password depends on the applied password protection mechanism. See a benchmark here。 BCrypt 和 Argon2 等现代密码保护机制具有针对 memorySizeKBparallelism 等快速密码搜索的功能。

系统管理员可以使用 Hashcat 来测试其用户的密码。如果不容易发现,随着时间的推移有一个门槛,那么它就是一个很好的。否则,建议用户修改密码。当然,应该有防止简单密码的规则。最小长度、数字、字母数字等...

攻击者在访问系统时,下载密码文件后就可以使用Hashcat了。它不是一次又一次地输入密码登录。如果是,则登录系统开始延迟登录机制或锁定用户账号。

真正的好处是人们也倾向于对其他网站使用相同的密码。一旦攻击者从被黑站点 x 中找到了一些用户的密码,就可以尝试另一个站点来查看密码是否相同。

破解密码的速度因散列类型、硬件性能、使用的软件和散列数而异。随着时间的推移,攻击者和防御者之间的军备竞赛也会起伏不定,所以你的问题的答案只适用于它所问的那个艰难的时代。因此,即使另一个答案已被接受,即使问题可能重复,也值得偶尔重新明确回答。

首先,听起来我们需要澄清在线离线攻击之间的区别。

如果有人编写软件来自动执行 在线攻击 - 尝试针对活动 Web 界面的用户名和密码列表 - 他们(希望)很快 运行 到旨在阻止这种情况的机制中(例如,在特定的 window 时间内,只允许对给定用户名或给定 IP 地址进行 5 次错误尝试,等等)。

相比之下,大多数密码破解软件旨在执行离线攻击 - 攻击者获取存储在后端的哈希密码,并可以将它们移动到他们的自己的平台进行批量攻击。

所以密码破解的讨论通常围绕 离线 攻击,因为重要的威胁模型是威胁参与者 窃取您的哈希并可以攻击他们使用自己选择的平台.

离线破解速度完全取决于多种因素:

  • 密码的存储情况(散列有多“慢”);

  • 攻击者可用的硬件(通常,更多 GPU = 更好);

  • 对于存储良好的“加盐”哈希,有多少哈希受到攻击(更少的独特盐 = 更快的攻击,因此攻击单个哈希比攻击一百万个加盐快得多哈希等)

所以要用一些实数来回答你的问题:

  • 用于比较密码破解性能的最常见基准之一是 NTLM(Windows 系统用于存储本地密码的散列).它对基准测试很有用,因为它非常常见,对许多攻击模型很感兴趣,而且是非常“快速”(更容易破解)的哈希。最近(2019 年 2 月),hashcat 展示了以 100 billion hashes per second(披露:我是 Team Hashcat 的成员)。以这样的速度,人们使用的绝大多数密码记忆策略很可能会被攻击者使用正确的工具和专业知识破解。只有最强的密码(随机或基于随机密码短语 - 并且足够 length/entropy)是攻击者完全无法访问的。

  • 相比之下,最慢的哈希之一(对防御者来说最好)是 bcrypt。 Bcrypt 有一个 'cost' 因素,每次迭代都会使攻击者的成本加倍。建议成本为 12 左右的 Bcrypt 哈希值,但即使是相对“快速”的 bcrypt 成本(成本为 5),在相同的 2080Ti GPU 上,也只能以每秒约 28,000 个哈希值的速度被破解。以这种速度,只有最弱的密码才能被快速破解,中等强度的密码具有“数量上的优势”并且更难批量破解(但如果针对单个人的哈希仍然可以破解),以及任何相当强的密码攻击者通常无法触及。

同样,这些是时间点答案,必须适应您的特定威胁模型。

此外,请记住 密码哈希泄漏是永远存在的。防御者现在存储密码的方式应能在未来数年 中抵抗破解,包括对未来硬件能力的估计、摩尔定律等