强迫复杂的密码比盐腌"更重要"?

Gal*_*len 11 passwords hash cryptography salt rainbowtable

我花了两个小时阅读盐渍密码,确保我理解了这个想法.我希望你们中的一些人可以分享你对我的结论的了解.


如果我是攻击者,并且我可以访问用户数据库,那么我可以使用表中存在的所有用户盐并使用它们来创建我的彩虹表.对于大桌子,这可能需要很长时间.如果我可以将列表切换到感兴趣的用户(管理员,模组),我可以使用更大的字典列表来创建彩虹表,提高我的命中百分比......

如果这是真的那么盐腌似乎真的没有那么多帮助.它只会轻微地减慢攻击者的速度.

我知道理想情况下你会想要强制使用复杂的密码并用独特的随机字符串加密它们,但强制使用复杂的密码会让用户烦恼(我知道这让我感到烦恼),所以很多网站都不这样做.看起来网站对他们的用户不利,并且强制复杂的密码比一个好的腌制方法更重要.

我想这不是一个问题,而是要求其他人了解情况.

Bil*_*ard 14

盐的一点是攻击者不能再使用预先存在的字典来攻击系统中的任何用户.他们必须使用该用户的盐为每个用户创建一个全新的字典,这需要时间和精力.如果您在为系统的所有用户创建词典之前了解了违规行为,那么您就有时间采取行动.(警告用户必须更改其登录凭据,这应生成新的随机盐.)

我要说的是,你应该使用这两种盐,并在最复杂的密码(口令短语,真的),你的用户会容忍.即便如此,腌制是一项基本的安全措施,如果没有盐腌,你就无法承受.

  • 同意,腌制不应该是可选的.它取出了一个可能危及整个安全系统的整个攻击向量,因为允许弱密码只会破坏个人帐户. (2认同)
  • 你还应该提到创建一个每用户字典是没有意义的 - 更快地破解他们的密码暴力. (2认同)
  • 这里最重要的一点是,创建这个全新的字典只需要直接强制该用户的盐渍哈希 - *彩虹表只是一个优化,如果相同的表可以用于多个密码哈希*. (2认同)

bca*_*cat 6

保持适当的水分比呼吸更重要吗?


tva*_*son 5

对于大多数网站,我倾向于采用一种方法,即每个用户使用一个盐,全局盐(每个算法的盐),以及适度的密码复杂性规则(8个字符,其中包含至少2个大写/数字/标点字符的组合).使用盐需要为每个要破解的帐户生成彩虹表 - 假设每个用户使用独特的盐.使用全局salt要求您同时破坏数据库和应用程序服务器.就我而言,这些总是两个独立的系统.使用密码复杂性规则有助于防止使用简单,易于猜测的密码.

对于具有更多权限的帐户,您可能希望强制实施更高的密码复杂性.例如,我们的AD林中的管理员必须至少具有15个字符的密码.它实际上比短密码更容易,因为它几乎迫使你使用密码短语而不是密码.

您还希望指导用户如何创建正确的密码,或者更好地传递短语,并了解各种社会工程攻击,这些攻击会绕过保护数据的所有技术手段.

  • @erickson - 通常每用户盐存储在DB中.如果您破坏了数据库,破解密码只是时间和资源的问题.存储在算法中的全局盐要求它们破解应用服务器以及数据库.另外一个好处是,当散列时,饼干需要检查三次排列的两倍. (2认同)