目前,我正在学习Rails,但答案并不一定是Rails特定的。
因此,据我所知,安全密码系统的工作方式如下:
password
登录时尝试:
algorithm
据我所知,这种方法会受到彩虹攻击--其中可能发生以下情况。
攻击者可以编写脚本,该脚本实质上尝试字符、数字和符号的每一个排列,使用相同的加密算法创建哈希,并将它们与数据库中的哈希进行比较。
因此,它的方法是将散列与唯一的盐类结合起来。在许多情况下,用户注册的当前日期和时间(下至毫秒)。
但是,此salt存储在数据库列“salt”中。
因此,我的问题是,这如何改变这样一个事实:如果攻击者首先访问了数据库,并创建了“真实”密码的哈希,同时也有了salt的哈希,这怎么不只是受到彩虹攻击呢?因为,理论上他会尝试每一个置换+盐类哈希,并将结果与密码哈希进行比较。可能需要更长的时间,但我不认为这是万无一失的。
原谅我的无知,我只是在学习这些东西,这对我来说从来没有什么意义。
发布于 2010-10-23 20:09:23
盐的主要优点(随机选择)是,即使两个人使用相同的密码,哈希将是不同的,因为盐将是不同的。这意味着攻击者无法预先计算常见密码的散列,因为有太多不同的盐值。
请注意,盐不一定要保密;它只需要足够大(例如64位)和随机,两个使用相同密码的人也使用相同的盐的可能性极小。(如果你愿意的话,你可以检查盐是独一无二的。)
发布于 2010-10-23 20:09:44
攻击者不能进行彩虹表攻击,必须使用暴力,效率要低得多。
https://stackoverflow.com/questions/4005826
复制相似问题