bcrypt iterations/cost 参数的安全性

Security of bcrypt iterations/cost parameter

事实 A. 根据鸽巢原理,即使 none 被发现,每个哈希函数都有无限次冲突。

事实 B. 重新散列哈希,如 hash(hash(password)) 并不比 hash(password) 更安全,实际上 hash(hash(password)) 会引发冲突攻击哈希(密码).

事实 C。基于 B,通过增加迭代,我们达到了大多数密码和盐将 return 相同的常量哈希值的程度。我的意思是碰撞的概率会很高,甚至是 100%。

事实 D. bcrypt 有一个 iteration/cost 参数,我们可以根据我们的硬件规格随时间增加该参数。

那么,结合这些事实,我们是否可以说,随着 bcrypt 成本值的增加,我们通过增加碰撞概率来降低安全性? 如果答案是 "no",为什么?

BCrypt 不会进行愚蠢的迭代,它在每次迭代中都包含原始密码和盐。 PBKDF2 也是如此,它在每次迭代中都使用 HMAC。看看 BCrypt 的 pseudo code

illustrative answer关于信息安全关于迭代散列冲突的影响。在实践中,据我所知,冲突对于密码散列来说并不是真正的问题,即使在迭代时也是如此。