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破解能看到显著更低的加速因子吗?是我的谷歌搜索结果完全混乱,还是我遗漏了一些重要的注意事项,或者是什么?
作为脚注,我知道