Gru*_*kes 2 security passwords cryptography salt
可能重复:
盐的目的是什么?
我刚刚读了一些关于盐的使用的内容,我一直在阅读的例子给出了在散列之前为密码添加盐以防止字典攻击的问题.
但是,我真的没有看到它有多大帮助 - 如果攻击者可以访问密码的哈希值(就像我在阅读的例子中那样),他们很可能也可以访问盐.因此,在运行字典之前,攻击者是否只能将salt添加到字典中的每个项目之前并将其后置,以查看它是否与哈希匹配?所以他们不得不多次迭代字典,这似乎不是一个保护增强?
一个字典攻击是攻击下,攻击者需要密码,可能是由情形产生/概率有序的大名单,并应用算法为每次它,检查的结果.
如果是盐渍密码,如果攻击者有盐(通常假设的话),这样的攻击仍然可能(而且费用不高):只需在算法中输入盐.
什么盐保护,是彩虹表.甲彩虹表是包含明文的对(例如,密码)和相应的散列,散列通过有序的表.在给定散列的情况下,这样的表允许简单地查找密码.
生成彩虹表是一个代价高昂的步骤(取决于用作输入的字典的大小),但是之后您可以毫不费力地使用它来查找所需数量的密码.
由于盐可以防止这种情况发生,因为现在每种盐都需要一个单独的表.即使使用简单的Unix crypt的2个字母的盐,这已经是3,844的因素了.现代密码哈希算法使用更大的盐(例如,bcrypt使用128位盐,这给出了2 128的因子.)
为了防止字典攻击,您将使用慢速哈希算法而不是像简单的MD5或SHA1/SHA2那样的快速哈希算法.Bcrypt就是这样一种算法(具有可配置的工作因子),同一作者后来提出了scrypt(这不仅花费了很多时间,而且还需要大量内存,攻击者通常没有处理能力那么多).
| 归档时间: |
|
| 查看次数: |
2801 次 |
| 最近记录: |