关于哈希算法优势的最新发展,我真的不及时了。什么是目前存储密码的最佳选择?
另外,腌制和关键拉伸对我有多大安全性?
至于散列提供的额外安全性,这取决于您使用的散列迭代次数。举个例子,假设您决定使用2 ^ 14个哈希迭代。这会将密码的熵增加14位。根据摩尔定律,哈希提供的每个额外的熵都意味着在今天同一时间内破解密码大约需要18个月。因此,在今天可以破解原始密码的同时破解迭代哈希之前将是21年(14 x 18个月)。
salting提供的额外安全性是双重的:它阻止了彩虹表的有效使用,并且使得破解大量密码(但不是单个密码)更加耗时。
在security.stackexchange上的这个问题是对bcrypt与PBKDF2的良好讨论 - Do any security experts recommend bcrypt for password storage?
关键是单独的散列函数不会阻止预计算攻击(例如彩虹表)。添加盐不会保护您免受字典或暴力攻击。使用bcrypt或PBKDF2比使用哈希算法构建自己的方案要好得多。