algorithm - bcrypt 真的比其他 key 派生算法更能缓解 GPU 攻击吗?

标签 algorithm encryption cryptography

bcrypt 是 10 多年前设计的。

根据固执己见的互联网声音,bcrypt 比 PBKDF2 等替代方案更好,因为它具有 GPGPU 攻击缓解功能(高内存、变异表),尽管这两种算法都有可修改的工作因素,会减慢暴力破解尝试的速度。

我读到,bcrypt 实际上只需要 4k 的可变内存,对于现代 GPU 或 FPGA,它并不比替代方案更好。

这有多真实? bcrypt 相对于此类攻击是否还有优势?

最佳答案

bcrypt 比 PBKDF2 更强

  1. 尽管现代 GPU 和 FPGA 可能有足够的内存来处理 bcrypt,但与 SHA 哈希系列(大多数 PBKDF2 实现的基础)相比,较高的内存要求仍然会减慢它们的速度。
  2. 与 SHA 系列不同,Blowfish 是一种非常难以矢量化的算法。矢量化 SHA 对 GPU 非常友好,并且允许更多并行性。

但这可能并不重要

bcrypt 充其量比 PBKDF2 具有线性优势。也就是说,如果敌人可以在 X 时间内破解 PBKDF2 系统,那么他们可以在 n*X 时间内破解 bcrypt 系统,对于某个常数 n>1。而且 n 可能还不够大,不足以产生改变游戏规则的差异。

我的看法是,如果我的密码足够弱,可以在任何合理的时间内被破解,那么将该时间乘以 n(通过更改算法)不会改变太多。

关于algorithm - bcrypt 真的比其他 key 派生算法更能缓解 GPU 攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391066/

相关文章:

python - 为什么我的 python 合并排序实现只返回具有最小项目的单例列表?

java - 编写通用的二分查找方法

algorithm - 找到 <=200 的毕达哥拉斯三元组 (a,b,c)

.net - 加密 SQL Server 2008 中某些字段的最佳方法?

javascript - 在javascript中加密字符串的简单方法?

node.js - Nodejs中字节转十六进制和十六进制转字节

cryptography - 基于 key 大小的 RSA 性能

algorithm - 最小化函数

mysql - 用于解密由 PBEWithMD5AndTripleDES 加密的值的 SQL 查询

encryption - 为什么我的 crypto.createHmac() 会为相同的输入生成不同的 HMAC?