Security salt如何防止字典攻击?
可能重复:Security salt如何防止字典攻击?,security,cryptography,passwords,salt,Security,Cryptography,Passwords,Salt,可能重复: 我刚刚读了一些关于salt的使用,我所读的示例给出了在散列之前向密码添加salt以防止字典攻击的方法 然而,我并不认为这有什么帮助——如果攻击者能够访问密码的散列(就像我在阅读的示例中所做的那样),那么他们很可能也能够访问salt。 因此,攻击者难道不能在运行字典以查看其是否与哈希匹配之前,对字典中的每一项预先或延迟salt吗?因此,他们必须多次遍历字典,这似乎不是什么保护增强?字典攻击基于字典中的单词。通过添加随机盐,您不再有字典中的单词。因此,基于字典单词的密码哈希表对破解密码
我刚刚读了一些关于salt的使用,我所读的示例给出了在散列之前向密码添加salt以防止字典攻击的方法 然而,我并不认为这有什么帮助——如果攻击者能够访问密码的散列(就像我在阅读的示例中所做的那样),那么他们很可能也能够访问salt。
因此,攻击者难道不能在运行字典以查看其是否与哈希匹配之前,对字典中的每一项预先或延迟salt吗?因此,他们必须多次遍历字典,这似乎不是什么保护增强?字典攻击基于字典中的单词。通过添加随机盐,您不再有字典中的单词。因此,基于字典单词的密码哈希表对破解密码没有帮助。1-您不能使用rainbow表来破解哈希
2-如果两个用户拥有相同的密码,则salt后的散列将不同(因此很难捕获常见密码)通过增加密码文件中可能的答案数量,确实增加了他们必须完成的工作 进行字典攻击的一种方法是扫描密码文件。如果没有盐,您看到“DFGE$%%TEW”,那么您知道密码是“password”。添加salt意味着您必须使用一个更大的字典,其中包含“PASSWORD”的所有值以及所有可能的salt,或者您必须花费精力阅读salt并进行加密,这会降低您的速度。它不再是一个简单的搜索
在多个用户选择相同密码的情况下,Salt也有帮助。特别是在过去,当所有用户都可以读取密码文件时,如果其他用户的密码与您相同,或者与您知道的密码相同,这就不明显了。实际上,salt不能防止字典攻击。它有以下好处:
每个salt值都需要一个不同的字典,因此每个不使用salt的数据库都可能受到相同字典的攻击
- 没有任何盐,攻击者只需使用现成的 预计算字典,其中有很多
- 如果您的整个数据库只有一种盐,那么他们需要 创建特定于数据库的词典
- 如果每个用户记录都有自己的salt,那么现在他们需要创建1个salt 每个用户的字典
为了防止字典攻击,您还将使用慢速散列算法,而不是简单的MD5或SHA1/SHA2等快速算法。Bcrypt就是这样一种算法(具有可配置的工作因子),同一位作者后来提出了scrypt(它不仅需要大量时间,而且需要大量内存,攻击者通常没有处理能力)。如果您知道字典内容,并且知道salt,然后,附加到字典上的盐是一本新字典,附加到字典上的盐是另一本新字典。你现在知道两本字典了吗?或者salt有时会散布在密码中?在UNIX系统上的/etc/passwd中,密码前面有两个字符。相同的两个字符存储在密码文件中值的开头。当用户设置密码时,会使用随机salt,因此“password”变为“azPASSWORD”,哈希值为(比如)az12345。然后,当用户尝试登录时,他们键入“PASSWORD”,系统知道使用“az”作为salt。即使salt仅仅是a-zA-Z0-9,你的字典仍然是(10+26+26)^2=3844倍大。BiscutWoofington的思路是正确的,Teddy的答案是完全错误的。您可以简单地修改您选择的破解引擎,实际上所有引擎都是开源的,添加salt值,您就拥有了魔力。salting的目的是消除可以快速搜索的预计算彩虹表的威胁,现在我们生活在EC2和GPU并行化的时代,今天每个需要破解密码的人都可以以非常便宜的价格破解密码。@geteipordietryin-Ouch!我完全错了??关于云计算等暴力攻击,你确实提出了一个正确的观点。盐可以防止彩虹塔