Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 711

Lucky 13

审核人Cybersecurity entrepreneur & security researcher

Lucky 13 是什么?

Lucky 132013 年 AlFardan 与 Paterson 发布的 TLS 计时攻击,针对 MAC-then-encrypt 的 CBC 实现构造填充预言机以恢复明文。


Lucky 13(CVE-2013-0169)于 2013 年 2 月由伦敦大学皇家霍洛威学院信息安全组的 Nadhem AlFardan 与 Kenny Paterson 披露。它是对 Serge Vaudenay 于 2002 年提出的填充预言机攻击的计时旁路改进,影响 SSL 3.0 与 TLS 1.0–1.2(以及 DTLS)中所有采用 MAC-then-encrypt(HMAC)的 CBC 套件。

名字中的 13 指 MAC 覆盖的 TLS 头部与序列号等常数字节。由于 HMAC-SHA1 以 64 字节为块处理数据,压缩函数的调用次数——也就是验证耗时——取决于记录中填充字节的数量。能够注入伪造密文的中间人攻击者在大量试验中测量这些亚微秒级的时间差,以判断猜测的明文是否产生了合法填充,从而像 BEAST 或 POODLE 那样逐字节恢复明文。原始研究在 DTLS 上恢复了完整明文,在 TLS 上恢复了部分字节,并在 OpenSSL 和 GnuTLS 上得到验证。

恒定时间的对策(无论填充如何都计算固定数量的 HMAC 块)已在 OpenSSL 1.0.1d、GnuTLS 和 NSS 中发布。持久的修复方法是放弃 CBC,改用 AES-GCM、ChaCha20-Poly1305 等 AEAD 套件——TLS 1.3 已强制仅使用 AEAD。

flowchart TD
  A[中间人注入伪造的 TLS-CBC 记录] --> B[服务器解密并去除填充]
  B --> C{填充长度}
  C -->|填充较多| D[HMAC-SHA1 块更少 - 更快]
  C -->|填充较少| E[HMAC 块更多 - 更慢]
  D --> F[攻击者测量 MAC 验证时间]
  E --> F
  F --> G[对数百万次试验做统计]
  G --> H[填充预言机恢复一个明文字节]

示例

  1. 01

    通过数百万条伪造记录,从 TLS-CBC 会话中恢复少量明文字节。

  2. 02

    在 DTLS 实现中借助重传获得更多计时样本。

常见问题

Lucky 13 是什么?

2013 年 AlFardan 与 Paterson 发布的 TLS 计时攻击,针对 MAC-then-encrypt 的 CBC 实现构造填充预言机以恢复明文。 它属于网络安全的 攻击与威胁 分类。

Lucky 13 是什么意思?

2013 年 AlFardan 与 Paterson 发布的 TLS 计时攻击,针对 MAC-then-encrypt 的 CBC 实现构造填充预言机以恢复明文。

如何防御 Lucky 13?

针对 Lucky 13 的防御通常结合技术控制与运营实践,详见上方完整定义。

Lucky 13 还有哪些其他名称?

常见的别称包括: Lucky Thirteen。

相关术语