【发布时间】:2011-08-14 16:20:45
【问题描述】:
假设我为每个用户存储了一个随机的salt value。更改用户密码时是否必须生成新的 salt 值,还是在该用户帐户的整个生命周期内使用相同的值?
【问题讨论】:
标签: security hash salt password-hash
假设我为每个用户存储了一个随机的salt value。更改用户密码时是否必须生成新的 salt 值,还是在该用户帐户的整个生命周期内使用相同的值?
【问题讨论】:
标签: security hash salt password-hash
如果密码不弱(并且攻击者不知道 salt),那么在更改密码时使用不同的 salt 值不会提高您的密码安全性,因此您可以保持不变。
salt值的目的是保证不同用户使用相同密码的密码哈希值不同。
无论如何,假设攻击者之前已经破解了用户密码并且知道盐值。如果你只更改密码,攻击者可以做更少的计算来再次破解它,因为他已经知道盐。
所以也许在设置新密码的同时更改盐是个好主意。
【讨论】:
你应该换盐。 salt 被设计为对所有密码实例都是唯一的(尽可能)。
如果您对旧密码和新密码使用相同的盐,那么看到旧哈希密码和新哈希密码的攻击者可以以低于攻击成本两倍的成本攻击两者。这正是盐旨在避免的那种事情(盐没有其他用途)。
当然,旧密码已不再是进入您的系统的有效方式,但由于用户倾向于重复使用密码,旧密码可能仍然值得(来自攻击者观点看法)。特别是,当用户再次更改密码时,他可能会重复使用旧密码(这是大多数用户在面对需要定期更改密码的系统时所做的事情:他们在两个密码之间交替使用)。
【讨论】: