And*_*Dog 10 security hash salt password-protection
我只是看着密码哈希的在Django的实施,发现它预先将盐,所以散列创建类似sha1(salt + password),例如.
在我看来,盐有两个目的
防止彩虹表查找
好吧,预先添加/添加盐对彩虹表并没有什么影响.
强化蛮力/字典攻击
这就是我的问题所在.如果有人想从被盗的密码数据库中攻击单个密码,他需要尝试大量密码(例如字典单词或[A-Za-z0-9]排列).
假设我的密码是"ABCDEF",该盐是"盐",而攻击者尝试所有[AZ] {6}密码.
使用前置盐,必须计算hash("salt"),存储哈希算法的状态,然后从该点继续进行每个排列.也就是说,遍历所有排列将需要26 ^ 6个复制哈希算法的状态结构操作和26 ^ 6个hash(permutation of [a-z]{6})操作.由于复制哈希算法的状态非常快,所以无论多长时间,盐都不会增加任何复杂性.
但是,使用附加的盐,攻击者必须计算hash(permutation of [a-z]{6} + salt)每个排列,导致26 ^ 10个哈希操作.显然,添加盐会增加复杂程度,具体取决于盐的长度.
我不相信这是出于历史原因,因为Django相当新颖.那么预先添加盐有什么意义呢?
| 归档时间: |
|
| 查看次数: |
2942 次 |
| 最近记录: |