登录尝试失败时用户锁定的 MD5 密码哈希

MD5 password hash with user lockout on failed login attempts

我知道 md5 salt+password hash 很容易受到暴力攻击,因为 md5 hash 的生成速度太快了。在多次登录尝试失败后锁定用户是否可以解决此漏洞?

我的假设是锁定功能与 md5 速度漏洞无关。此外,我假设在尝试使用蛮力破解密码之前必须首先获得密码哈希值。

你的假设是正确的。帐户锁定更多是为了减轻有根据的猜测或互联网上的暴力破解。如果您的散列算法 非常昂贵,它还有助于防止有人对您的服务器进行 DoSing。

MD5 的弱点来自于当您想在本地破解散列时,通常是在窃取保存散列的数据库(或从数据库中获取散列的转储)之后。当谈到通过互联网进行攻击时,瓶颈来自网络,而不一定是算法。我们仍然不希望人们能够尝试,因为人们倾向于使用非常弱的密码,而字典攻击可能会在合理的时间内破解某人的密码……即使是通过互联网。

锁定可能不是一个坏主意,但正如 Gray 提到的那样,网络速度将产生更大的差异,除非并且直到攻击者可以离线访问哈希。只要盐与散列分开存储,盐就有很大的帮助。如果不是,那么当哈希值被盗时它们将被盗,因此可以使用字典攻击将盐附加到每个字典 "try".

锁定无济于事的一种攻击是攻击者不关心他进入了谁的帐户,只要他进入一个即可。然后攻击者可以选择密码来尝试循环用户名,永远不会对服务器施加足够的压力来触发锁定。

尽管如此,锁定还是有帮助的。或者尝试之间有 5 秒的延迟。对于需要猜测 5 次密码拼写的人来说,这是一种不便。对于攻击者来说,这 5 秒时间乘以他本应尝试的所有攻击尝试将是一个很大的麻烦。同样,只要他们无法离线访问您的散列密码和盐。