Ton*_*ony 9 security authentication hash salt
我知道salt会将相同的密码哈希值设置为不同的值.但是,盐通常使用密码存储在数据库中.所以让我说我是攻击者,这里是我如何使用字典攻击盐(注意在这个例子中我不写出128位哈希或盐为了简洁起见):
user_pw = 'blowfish'
Given:
email = 'blah@blah.com'
hash = '1234567890'
salt = '0987654321'
function attack(){
for each(word in dictionary)
md5( word * salt ) == hash ? cracked_one(email, word)
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这可以防止黑客使用彩虹表......但似乎并没有阻止字典攻击.我想你可以在哈希算法中添加其他东西,但是在安全性的情况下我们必须假设攻击方法是已知的.
因此,盐腌似乎可以防止黑客弄清楚哪些密码可能是字典密码(多个用户拥有的密码)并防止彩虹攻击......但不会阻止字典攻击.
这是正确的分析吗?有关更好安全性的建议吗?
谢谢!
Ste*_*dit 10
Salt不会阻止字典攻击,只会预先计算字典攻击.特别是,它可以防止彩虹表(http://en.wikipedia.org/wiki/Rainbow_table),并确保破解一个用户的密码不会自动让您破解任何共享该密码的用户.
我链接的文章提到了一些改进盐渍的方法,包括加强关键强化(http://en.wikipedia.org/wiki/Key_strengthening).