密码破解之战:PBKDF2、bcrypt与Argon2的GPU加速性能对比

本文探讨了PBKDF2、bcrypt和Argon2三种密码哈希算法在面对GPU加速破解时的表现。作者通过对比不同算法在相同验证延迟下的参数配置,并查找其在高端GPU上的破解速率,发现三者获得的GPU加速比惊人地相似,这与bcrypt和Argon2设计初衷相悖,引发了关于其内存消耗配置有效性的深入讨论。

GPU加速对PBKDF2、bcrypt与Argon2的影响

我目前有一项服务使用PBKDF2-HMAC-SHA256进行密码哈希,我考虑将其升级为对GPU破解更具抵抗力的算法。因此,我一直在研究我的选择,比较PBKDF2-HMAC-SHA256、bcrypt和Argon2。对于Argon2可配置的内存成本,考虑到我的各种限制,我确定我无法真正使用超过64 MB的内存。

我目前为PBKDF2使用100万次迭代。对于正常的串行验证速度,这似乎与bcrypt的cost=12(4096轮)以及Argon2的m=65536,t=3,p=1大致相当,在我测试用的Ryzen 7 7700上,串行验证时间大约为100毫秒。

为此,我一直在尝试寻找相同设置下的GPU哈希速率。我本人实际上无法使用高速GPU,因此一直在网上搜索尝试找到哈希速率,所以我可能错了,但我找到的结果让我非常惊讶。我找到的RTX 4090结果如下:

算法 配置 CPU时间 GPU哈希率 加速比
PBKDF2-HMAC-256 2^20 轮 170 ms 1,000-2,000 H/s 170-340
bcrypt cost=12 (4096轮) 140 ms ~2,500 H/s 参考值 (根据成本调整) ~350
Argon2 m=65536,t=3,p=1 95 ms 1,667 H/s 参考值 158

那么,根据这些结果,在正常串行验证中大致相同的参数,在GPU上也大致相同,从正常使用到GPU破解提供了大致相同的加速因子。bcrypt和Argon2的全部(或至少一半)意义不就在于从串行验证到GPU破解能看到显著更低的加速因子吗?是我的谷歌搜索结果完全混乱,还是我遗漏了一些重要的注意事项,或者是什么?

作为脚注,我知道

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计