当更改用户密码时,我是否需要更改盐值?

16
假设我为每个用户存储一个随机的盐值。当用户更改密码时,我是否必须生成一个新的盐值,还是可以在整个用户帐户的生命周期内使用相同的值?
2个回答

25

您应该更改盐值。盐值的设计目的是对所有密码实例尽可能保持唯一。

如果您为旧密码和新密码使用相同的盐值,则能够看到旧密码和新密码的攻击者可以以少于两倍攻击一个密码所需成本的代价攻击两个密码。这正是盐的设计要避免的情况(而盐没有其他用途)。

当然,由于旧密码已经过时,不能再用于进入您的系统,但由于用户倾向于重复使用密码,从攻击者的角度来看,旧密码仍然可能具有价值。特别是,当用户再次更改密码时,他可能会重新使用那个旧密码(这是大多数用户在面对需要定期更改密码的系统时做的事情:他们在两个密码之间交替使用)。


您可能需要更改密码盐并更新用户记录。 - Paolo Perego

3
如果密码不弱(且攻击者不知道盐值),更改盐值并不会提高密码的安全性,如果密码被更改,您可以保持不变。
盐值的目的是确保使用相同密码的不同用户没有相同的密码哈希值。
无论如何,假设攻击者以前已经破解了用户密码并知道盐值。如果您只更改密码,攻击者可能需要更少的计算来再次破解它,因为他已经知道盐值。
因此,也许在设置新密码时更改盐值是一个好主意。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接