gpt4 book ai didi

passwords - 盐渍哈希和密码历史

转载 作者:行者123 更新时间:2023-12-03 22:24:29 33 4
gpt4 key购买 nike

想知道每次更改密码时对于单个给定用户是否唯一的盐是否重要,或者每次重复使用相同的盐是否重要。

我目前每次给定用户更新密码时都会生成一个新的随机字符串作为盐。这样每次用户有一个新密码时,他们也是一个盐变化。这很容易做到,所以为什么不呢。

嗯……这就是原因。我需要存储以前的 X 密码以确保密码不被重复使用。在过去(我最后一次为此编写代码时),我可以只存储以前的 MD5 哈希值,并将新的哈希值与该列表进行比较。好吧,现在我正在使用盐化哈希,其中盐每次都是唯一的,这些比较不再可能,因为以前的盐不再为人所知。

为了使该系统工作,我有两个选择:除了最终的哈希值之外,还存储盐的历史记录,或者在每次密码更新时为任何给定用户重复使用相同的盐。这些中的任何一个都可以让我建立可以与历史进行比较的值(value)观。

后者是少做功,但它是否失去了任何力量?从实际的角度来看,我不认为它确实如此。以为我会在这里得到第二意见。谢谢。

为了保持“可回答”的问题——为任何一个用户重复使用相同的盐,为了维护可搜索的密码历史(以防止 pswd 回收),保护的减少是否可以接受?

最佳答案

重用相同的盐意味着如果用户明确成为黑客的目标,他们可以使用“用户的盐”生成“哈希密码”字典——这样即使用户更改了密码,黑客仍然会立即知道无需任何额外工作即可使用新密码。

我每次都会用不同的盐。

至于存储 MD5 哈希加盐 - 大概您已经存储了盐 + 哈希,以验证用户的当前密码。为什么不能为历史检查保留完全相同的信息?这样您就可以使用一段代码来进行密码检查,而不是将当前路径和历史路径分开。他们在做同样的事情,所以他们使用相同的代码是有意义的。

编辑:为了解释我的意思,考虑一个 4 个字符的盐,加在密码前面......为了论证,假设有人在他们的密码(和盐)中只使用 A-Z、a-z 和 0-9。

如果您事先不知道盐(在准备字典攻击时),那么为了为所有 8 个字符的“人类”密码准备一个字典,您需要散列 62^12 个连接密码。但是,如果您总是知道连接密码的前 4 个字符是什么(因为您提前知道了 salt),那么您可以只对 62^8 值进行散列——所有以 salt 开头的值。它使盐对这种特殊攻击毫无用处。

当然,这仅适用于目标用户 - 并且仅当攻击者可以在密码更改之前和之后获得哈希列表时。它基本上使更改密码作为安全措施的有效性降低。

关于passwords - 盐渍哈希和密码历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1464267/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com