0Pricing
Cryptology Academy · 课时

速率限制与账户锁定防御

研究服务器端和协议层面的防御措施,了解它们如何让暴力破解攻击在实践中难以奏效

速率限制与账户锁定防御 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

在线与离线暴力破解

在线暴力破解攻击通过网络向实时系统进行身份验证。每次尝试至少需要一次往返通信(通常为 50–500 毫秒),因此攻击者最多只能每分钟尝试几千次。这比离线哈希破解慢得多。速率限制和账户锁定利用了这一限制,使在线暴力破解在任何现实可行的时间范围内都几乎不可能成功。

连续 N 次失败尝试后锁定账户

防御在线暴力破解最简单的方法,是在连续登录失败达到规定次数后锁定账户,通常为 5 到 10 次。账户可以锁定固定时长(15 分钟),也可以一直锁定到管理员手动解锁。账户锁定会将在线暴力破解从密码破解变成针对账户可用性的耗尽攻击。

账户锁定带来的拒绝服务风险

账户锁定会造成拒绝服务漏洞:知道有效用户名的攻击者可以针对每个账户发送 5 次失败尝试,从而锁定所有账户。这是账户锁定策略固有的权衡。一些系统采用临时锁定(5 分钟)而不是永久锁定,以减轻拒绝服务的影响。另一些系统完全不锁定账户,而是使用指数退避,在不造成拒绝服务的情况下减慢攻击者的速度。

CAPTCHA 作为机器人遏制措施

CAPTCHA(完全自动化公共图灵测试,用于区分计算机和人类)要求用户解决视觉或音频挑战题。此类题目对人类来说容易,但对自动化机器人来说很难。Google reCAPTCHA v3 使用行为分析代替明确的挑战题,根据鼠标移动、操作时序和浏览历史分配风险分数。CAPTCHA 能显著减慢自动化暴力破解,而不会锁定账户。

对失败尝试使用指数退避

指数退避会在每次失败后增加允许再次登录前的等待时间:第一次失败后等待 1 秒,第二次失败后等待 2 秒,第三次失败后等待 4 秒,以此类推。失败 10 次后,等待时间将超过 17 分钟。这种方式无需完全锁定账户,就能使暴力破解变得极其缓慢,避免拒绝服务风险,同时遏制自动化攻击。

基于 IP 的速率限制

基于 IP 的速率限制会阻止或质询在单位时间内失败次数超过阈值的 IP 地址发起的登录尝试。如果某个 IP 在一分钟内提交了 50 次失败登录,来自该 IP 的后续尝试将被阻止一小时。使用数千个不同 IP 地址的僵尸网络发动的分布式攻击可以绕过简单的单 IP 限制,因此需要结合多个信号进行更复杂的速率检测。

使用 TOTP 遏制暴力破解

基于时间的一次性密码(TOTP,用于 Google Authenticator 和类似应用)会生成一个有效期为 30 秒的 6 位代码。即使攻击者通过暴力破解得到了正确密码,还需要当前的 TOTP 代码。6 位代码只有 100 万种可能组合,且有效窗口仅为 30 秒,因此实际可用于暴力破解 TOTP 的时间窗口极小。MFA 能有效消除密码暴力破解这一可行的攻击途径。

bcrypt 工作因子减慢哈希计算

bcrypt 是一种带可配置成本因子的密码哈希函数。成本因子为 10 时,bcrypt 对单个密码进行哈希大约需要 100 毫秒;成本因子为 12 时,大约需要 400 毫秒。这意味着攻击者离线破解 bcrypt 哈希时,在 GPU 上每秒最多只能测试几百个密码,而使用 MD5 时每秒可测试数十亿个密码。随着硬件性能提升,可以增加工作因子,以维持恒定的破解难度。

Argon2 的内存困难性

Argon2 在 2015 年赢得密码哈希竞赛,是目前新系统的推荐方案。它的关键特性是内存困难性:计算时需要使用可配置大小的 RAM(通常为 64MB 到 1GB)。这会限制 GPU 和 ASIC 加速,因为这些设备的内存带宽有限。拥有能够并行运行数千次 bcrypt 计算的 GPU,由于内存限制,只能运行少量 Argon2 计算。

凭据填充攻击的 WAF 规则

Web 应用防火墙可以通过识别失败登录流量中的模式来检测凭据填充攻击:来自单个 IP 的高流量、使用常见用户名列表的尝试、登录尝试地理分布异常,以及与自动化工具相符的时间模式。WAF 规则可以在可疑流量到达应用之前将其阻止、发起质询或降低其速度。现代 WAF 还会整合威胁情报源,以识别已知僵尸网络的 IP 地址范围。

用于检查已知泄露密码的 HIBP 应用程序编程接口

将“我是否被攻破”应用程序编程接口(HIBP)集成到密码修改流程中,可以防止用户设置出现在已知泄露数据库中的密码。该应用程序编程接口使用 k-匿名性:只发送 SHA-1 哈希的前 5 个十六进制字符,在保护用户隐私的同时,也能与 8.5 亿个已知泄露密码进行匹配。在注册时阻止已泄露密码,可以消除凭据填充攻击风险中相当大的一部分。

账户锁定

严格的账户锁定策略会永久锁定账户,这会带来什么主要安全风险?

速率限制与账户锁定:要点

在线暴力破解受网络延迟限制,速率限制和账户锁定利用了这一点。账户锁定可以阻止暴力破解,但会导致拒绝服务攻击。指数退避和 CAPTCHA 可以同时缓解这两种风险。基于 IP 的速率限制可以拦截单一来源的攻击。TOTP MFA 能有效抵御密码暴力破解。bcrypt 和 Argon2 可以减慢离线哈希破解。HIBP 应用程序编程接口可以在注册时阻止已知泄露密码。

常见问题解答

「速率限制与账户锁定防御」课时是免费的吗?

是的 — 「速率限制与账户锁定防御」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「速率限制与账户锁定防御」这节课中我会学到什么?

研究服务器端和协议层面的防御措施,了解它们如何让暴力破解攻击在实践中难以奏效 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「速率限制与账户锁定防御」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 暴力破解攻击的工作原理
  2. 字典攻击与彩虹表
  3. 密码学密钥长度为何重要
  4. 速率限制与账户锁定防御
← 返回 Cryptology Academy