从数学上讲,破解 bcrypt 密码哈希需要多长时间?

信息安全 哈希 密码破解 bcrypt 河豚
2021-08-27 11:54:45

所以我目前正在使用 bcrypt 用随机生成的盐(如 pipbcrypt模块中所示)对密码进行哈希处理,共 12 轮。

我一直在环顾四周,但找不到详细而清晰的数学方法来估计强大的 GPU(甚至其他破解方法)破解我的 bcrypt 哈希需要多长时间。

我找到了描述 8x Nvidia GTX 1080 Hashcat 基准的这个要点,但我似乎无法使用为 bcrypt 提供的数据来应用我的哈希算法实现。

2个回答

好的,所以从您链接的文章中,我们了解到 8x Nvidia 设置每秒可以计算大约 100 000 个 bcrypt 哈希 (H/s)。如果要相信评论,则用于基准的成本系数为 5 - 非常低。对于 bcrypt,轮数等于成本因子的 2 次方。因此,如果您的哈希是 12,那么您的哈希将慢 2 12 /2 5 = 2 7 = 128 倍。所以从 10 5 H/s 你下降到 10 3 H/s。

现在您需要知道的是,要破解具有 n 位熵的哈希,平均需要尝试 2 n-1次。因此,以一个由 8 个随机小写字母组成的密码为例。它的熵为 n = log 2 (26 8 ) = 38 位。要破解它,您需要 2 38-1 /1000 秒 = 4 年。

请注意,基准测试是从 2016 年开始的。随着时间的推移,硬件变得越来越快。您需要定期重新评估您的成本因素以保持最新状态。

这是对密码的常见误解。这取决于您对密码的定义。您必须首先定义密码的含义,例如“8 个字母数字字符”。一旦你定义了它,我们就可以计算了。

“字母数字”是 26 个大写字母、26 个小写字母和 10 个数字字符,或 62 种可能的组合。

要尝试 8 个字符密码的所有组合,即:62 * 62 * 62 * 62 * 62 * 62 * 62 * 62

那是 218,000,000,000,000。

除以 13094(每秒的哈希数),得到 16674820955 秒,即 528 年。

尝试所有组合的不切实际导致其他策略,例如选择字典单词或“马尔可夫链”来测试可能选择的密码类型,而不是尝试所有随机组合。您无法从数学上计算这有多快,因为它完全是主观的。这取决于运气、目标选择的密码以及您选择测试的密码。破解几个小时的密码通常有 10% 的机会破解密码,但同样,这是主观体验。根据您要破解的密码以及破解方式,您的体验会有所不同。

无论如何,关键是这个问题没有答案。这是对事物运作方式的误解。这就是为什么你不能用谷歌搜索答案。