用于哈希密码的双盐?

时间:2010-01-14 16:13:38

标签: passwords salt

我正在考虑使用两个不同的salt字符串哈希用户密码,一个存储在代码中,对于所有用户都是相同的,另一个存储在数据库中,每个用户都有自己独特的值。

这比仅仅将值存储在数据库中更有效吗?

任何建议,意见相关。

由于

1 个答案:

答案 0 :(得分:20)

如果有的话,效果微乎其微。考虑到静态的硬编码盐只能被视为对散列算法的改变 - 它每次都以完全相同的方式发生,所以它也可以被认为是算法的一部分。

但盐的目的是创建一些类似于扩展密码(最小)强度的随机性,目的是使离线破解(包括彩虹表)更加资源密集(非彩虹表破解)将需要更多的CPU时间,彩虹表将需要所有字符串的所有盐。)

从这里得到任何价值的唯一方法是静态盐未知 - 相当于算法未知。如果您的二进制文件或源代码可供攻击者使用,则逆向工程将演示算法和硬编码盐。

如果这个问题公之于众,你可能不得不面对许多安全爱好者的抨击,他们认为任何不完美的东西都会被彻底打破,即使你的产品已经做对了,而且额外的步骤也没用。 / p>

当然,你必须处理有静态盐的维护问题 - 向后兼容性和散列代码周围的错误修复可能会很痛苦。

静态键(或盐)的非常小的好处根本不值得花费。始终使钥匙和盐动态。