Cryptography 彩虹攻击到底是什么?

Cryptography 彩虹攻击到底是什么?,cryptography,saltedhash,rainbowattack,Cryptography,Saltedhash,Rainbowattack,我读了一些关于salt和密码哈希的文章,一些人提到了彩虹攻击。彩虹攻击到底是什么?防止彩虹攻击的最佳方法是什么?当有人使用密码破解密码时 如果您对此感到担忧,您应该使用。还有一个方法可能会帮助你比维基百科更好地理解salt…维基百科是你的朋友: 这是为非专业人士准备的。(这并不是说你是个外行,但写得很好,很简洁。)维基百科的文章有点难理解。简而言之,您可以将Rainbow表视为一个大型字典,其中包含预先计算的哈希值和密码 Rainbow表和其他字典的区别仅仅在于条目的存储方法。Rainbow表针

我读了一些关于salt和密码哈希的文章,一些人提到了彩虹攻击。彩虹攻击到底是什么?防止彩虹攻击的最佳方法是什么?

当有人使用密码破解密码时


如果您对此感到担忧,您应该使用。还有一个方法可能会帮助你比维基百科更好地理解salt…

维基百科是你的朋友:


这是为非专业人士准备的。(这并不是说你是个外行,但写得很好,很简洁。)

维基百科的文章有点难理解。简而言之,您可以将Rainbow表视为一个大型字典,其中包含预先计算的哈希值和密码

Rainbow表和其他字典的区别仅仅在于条目的存储方法。Rainbow表针对哈希和密码进行了优化,从而在保持良好查找速度的同时实现了极大的空间优化。但本质上,它只是一本字典

当攻击者从您那里窃取一长串密码哈希时,他可以快速检查彩虹表中是否有密码哈希。对于那些是,Rainbow表还将包含从中散列的字符串


当然,有太多的散列,无法将它们全部存储在彩虹表中。因此,如果某个哈希不在特定的表中,黑客就不走运了。但是如果您的用户使用简单的英语单词,并且您只对它们进行了一次哈希运算,那么一个好的Rainbow表很可能包含密码。

广义上讲,您可以加密大量可能的短明文字符串(即密码),并将加密值与明文一起存储。这使得在拥有加密值时简单地查找明文变得(相对)简单

这对于弱密码散列和/或未加盐密码散列最有用。一个流行的例子是,在XP之前的Windows版本中使用的存储用户密码


请注意,即使是像LM哈希这样简单的东西的预计算彩虹表也需要大量的CPU时间来生成,并占用相当大的空间(大约10s的千兆字节IIRC)。

彩虹表基本上允许用户存储大量预计算的哈希

这使得破解散列密码变得很容易,因为不再执行一堆散列函数,而是已经完成了工作,实际上他们只需要进行数据库查找

针对此类攻击的最佳保护措施是在密码中使用salt(随机字符)。i、 e.不存储md5(密码),而是存储md5(密码+salt),或者更好的md5(salt+md5(密码))

因为即使使用rainbow表,也几乎不可能存储所有可能的盐哈希


顺便说一句,很明显,你必须将盐与散列一起存储,以便对用户进行身份验证。

派对迟到了,但我也意识到彩虹表是攻击散列/无盐密码的一种方法。然而,根据您的需要和关注点,Twitter上最近有人分享了这些信息。。您可能无法通过salt进入安全密码存储


我希望这能为您提供信息。

虽然不是流行的选择,但这正是我所寻找的。我对salt和密码哈希有一点经验,但由于某种原因,直到今天我才听说彩虹表攻击。所有这些答案确实有助于澄清这一点。谢谢你所说的“而且你只把它们散列了一次”是什么意思?我可以理解添加密码的价值,但递归散列n次(就像我有时看到的那样)对我有什么好处?@Jeach-这会使暴力检查每个密码的速度变慢,而且你需要一个彩虹表,该表是根据递归散列的确切数量制作的。