Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security salt如何防止字典攻击?_Security_Cryptography_Passwords_Salt - Fatal编程技术网

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 每个用户的字典


    A字典攻击是一种攻击,攻击者获取大量密码,可能按似然/概率排序,并对每个密码应用算法,检查结果

    在使用salt密码的情况下,如果攻击者拥有salt(通常假定的情况),则仍然可能发生此类攻击(并且不会显著增加成本):只需在算法中输入salt即可

    一张彩虹桌是一种盐可以防止的东西。彩虹表是一个包含成对明文(例如密码)和相应哈希的表,按哈希排序。这样的表允许在给定哈希的情况下简单地查找密码

    生成rainbow表是一个代价高昂的步骤(取决于用作输入的字典的大小),但随后您可以使用它来查找所需的任意多个密码,而无需任何成本

    因为盐可以防止这种情况,因为你现在需要一张单独的桌子来放每一种盐。即使使用简单的Unix crypt的两个字母salt,这也已经是3844的一个系数。现代密码散列算法使用更大的salt(例如,bcrypt使用128位salt,其系数为2128)


    为了防止字典攻击,您还将使用慢速散列算法,而不是简单的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!我完全错了??关于云计算等暴力攻击,你确实提出了一个正确的观点。盐可以防止彩虹塔