什么是彩虹攻击?

我正在阅读一些关于盐和密码哈希的文章,还有一些人提到了彩虹攻击。 彩虹攻击究竟是什么,防止它的最好方法是什么?

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

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

当攻击者从你那里窃取一长串密码哈希时,他可以快速检查是否有任何一个在彩虹表中。 对于那些,彩虹表还将包含他们被散列的string。

当然,有太多的哈希存储在彩虹表中。 所以如果一个哈希不在特定的表中,那么黑客运气不好。 但是,如果你的用户使用简单的英文单词,而且只有一次散列它们,那么彩虹表很可能会包含密码。

有人使用彩虹表来破解密码。

如果你担心这个,你应该使用盐 。 还有一个堆栈溢出的问题 ,可能会帮助你了解盐比维基百科好一点…

这是一个非常有用的文章彩虹表为外行的人。 (不要暗示你是一个非专业人士,但是写得很好,很简洁。)

晚了,但我也知道彩虹表是一种对散列/无码密码进行攻击的方法。 然而在Twitter上,最近http://codahale.com/how-to-safely-store-a-password/被分享,并根据您的需求和疑虑;..你可能无法用自己的方式来安全的密码存储。

我希望这是你的信息。

维基百科是你的朋友:

http://en.wikipedia.org/wiki/Rainbow_table

一般来说,您可以encryption大量可能的短明文string(即密码),并将encryption值与明文一起存储。 这使得它(相对)简单直接查找明文,当你有encryption的价值。

这对弱密码和/或无密码密码是最有用的。 一个stream行的例子是局域网pipe理器哈希 ,用于XP版本的Windows存储用户密码。

请注意,甚至像LM散列一样简单的预先计算的彩虹表需要大量的CPU时间来生成并占用相当数量的空间(大小为十亿字节IIRC)。

彩虹表基本上允许某人存储大量的预先计算好的哈希值。

这样可以很容易地破解你的哈希密码,因为不是执行整个哈希函数堆,而是完成了工作,而且他们实际上只需要做一个数据库查询。

防止这种攻击的最好方法是在密码中使用盐(随机字符)。 即代替存储md5(密码),存储md5(密码+盐),或者甚至更好的md5(盐+ md5(密码))。

因为即使有彩虹桌,也几乎不可能存储所有可能的盐渍散列。

顺便说一句,显然你必须储存你的哈希值,以便你可以validation用户。