首页 > 解决方案 > 密码破解者每秒可以尝试多少次?

问题描述

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

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

密码破解者是否会在许多机器之间分发密码尝试,以便他们可以同时尝试?对于网站服务器来说,这不是微不足道的自动攻击吗?是否有一些更快的方法可以让破解者进行多次尝试(以及为什么服务器会允许它)?

标签: securitypasswords

解决方案


破解密码的速度因散列类型、硬件能力、使用的软件和散列数量而异。攻击者和防御者之间还有一场军备竞赛,随着时间的推移而起起落落,所以你的问题的答案只适用于它被问到的艰难时期。因此,即使已经接受了另一个答案,并且即使该问题可能是重复的,也值得偶尔明确地重新回答。

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

如果有人编写软件来自动化在线攻击的过程- 尝试针对活动 Web 界面的用户名和密码列表 - 他们将(希望)迅速遇到旨在阻止这种攻击的机制(例如,只允许 5 次错误尝试给定的用户名或来自特定时间窗口中的给定 IP 地址等)。

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

因此,密码破解讨论通常围绕离线攻击展开,因为重要的威胁模型是威胁参与者是否窃取了您的哈希值并可以使用他们选择的平台对其进行攻击

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

  • 密码的存储情况如何(哈希的“慢”程度);

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

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

因此,为您的问题添加一些实数:

  • 用于比较密码破解性能的最常见基准之一是NTLM(Windows 系统用于存储本地密码的哈希)。它对基准测试很有用,因为它非常常见,对许多攻击模型都非常感兴趣,而且也是一个非常“快速”(更容易破解)的哈希。近日(2019 年 2 月),hashcat 展示了在块 NVIDIA 2080Ti 卡上以每秒1000 亿哈希的速度破解 NTLM 哈希的能力(披露:我是 Hashcat 团队的成员)。以这样的速度,人们使用的绝大多数密码记住策略很可能被具有正确工具和专有技术的攻击者破解。只有最强的密码(随机的或基于随机密码的 - 并且具有足够的长度/熵)对于攻击者来说是完全无法触及的。

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

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

另外,请记住密码哈希泄漏是永远的防御者今天应该以一种在未来几年内都不会被破解的方式存储密码,包括对未来硬件能力的估计、摩尔定律等。


推荐阅读