如果哈希有冲突,一个密码可以有另一个的哈希吗?
If hash has collision, can a password have the hash of another?
有点疑惑
我不是加密或散列方面的专家,但我知道散列可能会有一些冲突,即两个不同的文本输入可以给出相同的散列字符串。
所以..这意味着(也是远程)两个密码可以给出相同的哈希值,因此一个用户可以使用另一个密码登录(因为哈希值相同)?
是的,这在数学上是不可能的,但有可能。
它可能会发生,但不太可能。我使用 ripemd320 是因为在我开始使用它时,它从未被黑过。这相当于意味着它会生成非常独特的哈希码。
这并不是那么重要,因为 25% 的密码可以在 15 分钟内被猜出。如果您知道用户的狗、孩子和配偶的姓名和出生日期,则更少。
重点是,如果有人使用哈希码获取您的用户数据库,则很容易尝试使用糟糕的哈希算法进行黑客攻击。
破解它的方法是为所有常用密码生成一个散列码,看看它是否与存储的散列匹配。
几年前一些政府安全机构表示,在使用 rip320 时,没有已知的此类成功黑客攻击。
是的,并且已知它会发生在较差的哈希函数中(想想 crc32)。现代哈希函数发生这种情况的可能性实际上几乎为零。使用某种字典攻击猜测正确密码的机会要高得多。
攻击者在散列密码时是否能发现冲突并不重要。一个用户知道多个有效密码不是问题。
事实上,对于 PBKDF2 和 scrypt,它们都是流行和推荐的密码哈希,发现冲突和第二原像 is easy, but you need quite a bit of imagination to come up with scenarios where this matters。
重要的是:
- 给定一个哈希很难算出密码(第一个原像阻力)
- 冲突很少见,因此它们不会减少密码熵。任何具有至少 128 位输出的体面散列都可以满足这一要求。
- 计算成本高,减缓密码猜测攻击。这意味着你不能
- 盐渍化,防止多目标攻击。
有关详细信息,请参阅 security.se 上的 How to securely hash passwords?。
有点疑惑
我不是加密或散列方面的专家,但我知道散列可能会有一些冲突,即两个不同的文本输入可以给出相同的散列字符串。
所以..这意味着(也是远程)两个密码可以给出相同的哈希值,因此一个用户可以使用另一个密码登录(因为哈希值相同)?
是的,这在数学上是不可能的,但有可能。
它可能会发生,但不太可能。我使用 ripemd320 是因为在我开始使用它时,它从未被黑过。这相当于意味着它会生成非常独特的哈希码。
这并不是那么重要,因为 25% 的密码可以在 15 分钟内被猜出。如果您知道用户的狗、孩子和配偶的姓名和出生日期,则更少。
重点是,如果有人使用哈希码获取您的用户数据库,则很容易尝试使用糟糕的哈希算法进行黑客攻击。
破解它的方法是为所有常用密码生成一个散列码,看看它是否与存储的散列匹配。
几年前一些政府安全机构表示,在使用 rip320 时,没有已知的此类成功黑客攻击。
是的,并且已知它会发生在较差的哈希函数中(想想 crc32)。现代哈希函数发生这种情况的可能性实际上几乎为零。使用某种字典攻击猜测正确密码的机会要高得多。
攻击者在散列密码时是否能发现冲突并不重要。一个用户知道多个有效密码不是问题。
事实上,对于 PBKDF2 和 scrypt,它们都是流行和推荐的密码哈希,发现冲突和第二原像 is easy, but you need quite a bit of imagination to come up with scenarios where this matters。
重要的是:
- 给定一个哈希很难算出密码(第一个原像阻力)
- 冲突很少见,因此它们不会减少密码熵。任何具有至少 128 位输出的体面散列都可以满足这一要求。
- 计算成本高,减缓密码猜测攻击。这意味着你不能
- 盐渍化,防止多目标攻击。
有关详细信息,请参阅 security.se 上的 How to securely hash passwords?。