错误的密码会产生错误的加盐哈希吗?

信息安全 密码 哈希 密码策略
2021-08-08 16:22:03

当您将密码存储在经过强烈哈希和加盐处理的数据库中时,底层用户密码是否很弱真的很重要吗?

如果您设置了限制登录猜测等功能并使用验证码停止自动猜测,您是否可以有效地弥补诸如“ password”之类的弱密码?

我想我的问题是使用像“密码”这样的密码会使加盐哈希比使用更长的密码(如“ fish&*n0d1cTionaRYatt@ck”)更弱吗?- 所有加盐哈希是否同样安全,还是取决于密码是否正确?

4个回答

加盐哈希旨在防止攻击者能够同时攻击多个哈希或构建预先计算的哈希值的彩虹表。就这些。他们没有做任何事情来提高密码本身的潜在强度,无论是弱还是强。

这也意味着它们并非旨在防御在线攻击,因此它们不会影响攻击者操纵您的登录表单的能力,其中盐是无关紧要的,因为攻击者不是直接计算哈希值,而是输入候选密码变成可能(如您所说)受验证码限制或保护的形式。

弱密码很弱。强密码是强密码。盐不会以任何方式影响这个方程。

您必须考虑两个攻击向量:

  • 在线攻击
  • 离线攻击

限制登录猜测有助于抵御在线攻击。
假设是 3 次,这意味着攻击者可以测试所有帐户的三个最常见的密码是否符合您的密码策略(“密码”、“12345678”和“12345”呢?)。

加盐有助于抵御离线攻击
相同的未加盐哈希是相同的明文密码。所以每个哈希都必须计算一次,而不是每个盐计算一次。即使有盐,攻击者仍然可以尝试字典攻击,没有人(除了他的计算能力限制)会阻止他,因为你的“三击”规则在这里不适用。

弱密码在这两种情况下都会降低安全性
在线攻击:如果您允许使用通用密码(如“密码”或“12345”),攻击者将能够通过三次猜测侵入您 5% 的帐户。
离线攻击:当然,他们也会首先尝试最常用的密码。因此,如果他们为每个用户计算 3 个哈希值,他们已经破坏了 5% 的帐户......

如果您的数据库被盗,加盐/散列非常好,但它与可能通过正常登录过程发生的字典攻击无关。

正如您提到的限制登录尝试次数和使用 CAPTCHA 可以使通过正常登录过程发生的字典攻击无效,但加盐(或不加盐)不会对这种类型的攻击产生任何影响。

即使有有限的登录尝试和验证码,允许超级弱密码也不是一个好主意,如果恶意用户足够确定或看到足够的价值,他们可以找到利用该弱点的方法。

不,加盐散列的一点是在散列中获得良好的随机性,而不管起始材料如何。

但是,这并不能让我们自由使用错误的密码。良好的散列只能防止一种攻击向量:入侵者窃取带有散列的文件。存在许多其他针对密码的攻击向量......肩部冲浪、暴力破解、修改后的暴力破解(智能开始猜测等)......好的密码仍然很重要。

加盐散列可以保护好的密码,但不会把你从坏密码中解救出来。