两因素蛮力保护

信息安全 攻击预防 蛮力 顶部
2021-09-01 22:57:10

如果我使用 TOTP 实现两因素身份验证,我(显然)必须防止对 TOTP 值的简单暴力攻击。

如果我在密码登录成功后询问 TOTP 值,则攻击者已经知道有效密码。由于 TOTP 值的默认长度为 6 位,因此很容易暴力破解。

可能的解决方案:

  • 阻止用户帐户:阻止合法用户而无法解除阻止的缺点。
  • 阻止 IP:可能有效,但可能会被僵尸网络绕过。应该为 IPv6 阻止多个 IP。

不起作用的解决方案:

  • 阻止当前会话:不起作用,因为攻击者知道密码并且可以打开另一个会话。

如何实施蛮力保护,使其不会锁定合法用户,但仍能尽可能好地阻止攻击?

1个回答

暴力破解 TOTP 令牌的问题是您必须在正确的时间正确猜测。因此,如果您不想在 x 次尝试失败后将用户锁定(这是常见做法),您可以将失败尝试减慢到使 TOTP 正确的几率在统计上微不足道的程度。

例如:6 位 TOTP 代币有 1,000,000 种可能性。但是正确的密钥每 30 秒更改一次(在 TOTP 的标准实现中),所以成功的窗口不是用尽整个令牌空间需要多长时间,而是攻击者在给定时间段内可以通过多少令牌除以令牌空间,它仍然只有成功的机会使在 30 秒内无法通过令牌空间,您将攻击减少为赌博。

示例:攻击者每秒猜测一次。他们只能通过任何给定令牌的 30 次猜测,因此成功的几率基本上是随机的。使用随机变量的伯努利过程(失败几率乘以猜测次数),24 小时以这种方式攻击(86,400 次猜测)仅产生 8.2% 的成功概率。在第 10 天,它上升到 57%。因此,只需说服您的用户更改他们的密码,或者在该百分比变得非常高之前找到其他方法来阻止攻击者(通过 IP 等)。