0

re question non-random-salt-for-password-hashes Potato Head 先生指出,使用 md5 而不是 SHA-512 可以更轻松地生成彩虹表?我原以为一旦生成彩虹表,使用的算法就无关紧要了?这对您如何使用彩虹表检查已知哈希没有影响?有没有办法知道以任何方式使用了什么散列算法?

编辑更新:

我认为需要对您的密码表进行适当的哈希处理,这不是为了保护您的应用程序,而是为了保护用户将重复使用密码和 ID 的其他所有人。

4

4 回答 4

3

他说过

对于生成彩虹表的人来说,使用 SHA-512 比使用 MD5 更痛苦,

计算 SHA-512 哈希比计算 MD5 哈希更昂贵。

于 2009-03-30T10:36:47.510 回答
2

它纯粹是一个性能问题。MD5 比 SHA-512 更简单,因此您可以在给定时间范围内生成更多彩虹表条目或更多暴力攻击。

于 2009-03-30T10:50:02.737 回答
1

彩虹表就够了:您需要了解的有关安全密码方案的内容简要介绍了这一点。它以关于人们误解彩虹表和它们所呈现的实际危险程度的小型咆哮开始,但随后变成了对密码哈希算法性能影响的很好的讨论。

关于你的最后一个问题,更直接的答案是,通过单独检查输出,你只能确定最终散列算法输出中的位数。根据算法的不同,这可能是唯一的,也可能不是唯一的,但是,如果算法很好,就不会有任何可检测的模式来准确识别它。(我说“最终”是因为 MD5-only 的输出看起来与 SHA512-then-MD5 的最终结果相同,因为最后一步在两种情况下都是相同的。)

但更实际的是,任何可以窃取您的密码数据库的人也可能会窃取您的源代码,因此他们只需查看您的源代码以了解您的算法是什么,然后复制它以攻击您的数据库。

于 2009-03-30T11:11:09.563 回答
1

实际上,生成表格的时间是无关紧要的,因为您只执行一次。

破解的时间更为重要。彩虹表只是减少恢复密码所需的哈希运算次数的一种方法,但您仍然需要在破解密码时应用哈希函数。例如,彩虹表可以将散列操作的数量减少 10,000 倍。如果你有一个较慢的哈希(例如 SHA-512),破解会比较慢。

请注意,一个好的密码哈希函数不仅包括盐,它还应用了数千次哈希函数。对于所有实际目的,散列仍然会很快,但破解(通过任何方法)会慢数千倍。

于 2009-04-30T11:26:08.833 回答