在更新用户记录(id、用户名、密码、salt)时,是否也为此记录创建一个新的 salt 是否明智,或者无论用户多久更改一次密码,始终使用相同的 salt 是否没有安全缺陷?
问问题
76 次
3 回答
0
只要每个用户的盐不同并且用户没有被专门针对,更改用户的盐就没有(或充其量是最小的)安全优势。
加盐的目的是 1) 使预先计算可能的哈希值更难,以及 2) 使不同用户使用相同密码的情况不明显。两者都不需要你改变盐。
也就是说,只要您确保新盐是不可预测的,更换盐当然没有坏处。
于 2013-05-30T09:48:16.820 回答
0
如果您更改用户盐,当可怜的用户更改他的用户名或除密码之外的任何其他内容时,您最终会得到一个错误的哈希密码盐组合。
没有理由像 Old Pro 中描述的那样更改用户盐,但是如果您想在某个时候更改它,只有在用户更改密码时才这样做。
于 2013-05-30T10:20:19.030 回答
0
您是否将盐用于密码以外的其他条目?在这种情况下,如果不使用此盐重新散列所有条目,则无法更改盐。不过,有比为每个用户存储盐更简单的解决方案。
大多数密码散列函数的实现(例如 PHP 的BCrypt实现)会自动为每个散列值生成一个新的安全盐,并将使用的盐作为散列值的一部分返回。所以不需要单独存储salt,每次计算一个新的hash-value,函数都会生成一个新的salt。
所以是的,为每个哈希计算创建一个新的盐是一件好事,特别是因为它比单独存储盐更容易。
于 2013-05-30T13:12:35.120 回答