假设我为每个用户存储一个随机盐值。更改用户密码时是否必须生成新的盐值,还是在该用户帐户的整个生命周期中使用相同的值?
问问题
2910 次
2 回答
25
你应该换盐。salt 被设计为对所有密码实例都是唯一的(尽可能)。
如果您对旧密码和新密码使用相同的盐,那么看到旧哈希密码和新哈希密码的攻击者可以以低于攻击成本两倍的成本攻击两者。这正是盐旨在避免的那种事情(盐没有其他用途)。
当然,旧密码不再是进入系统的有效方式,但由于用户倾向于重复使用密码,旧密码可能仍然值得(从攻击者的角度来看)。特别是,当用户再次更改密码时,他可能会重复使用旧密码(这是大多数用户在面对需要定期更改密码的系统时所做的事情:他们在两个密码之间交替使用)。
于 2011-04-28T13:51:22.897 回答
3
如果密码不弱(并且攻击者不知道盐值),那么在更改密码时使用不同的盐值不会提高您的密码安全性,因此您可以保持不变。
盐值的目的是确保具有相同密码的不同用户没有相同的密码哈希。
无论如何,假设攻击者之前已经破解了用户密码并且知道盐值。如果您只更改密码,攻击者可以做更少的计算来再次破解它,因为他已经知道盐。
所以也许在设置新密码的同时更改盐是个好主意。
于 2011-04-28T12:25:04.757 回答