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

时序攻击

审核人Cybersecurity entrepreneur & security researcher

时序攻击 是什么?

时序攻击一种侧信道攻击,通过测量操作在不同输入下的耗时来恢复机密信息。


时序攻击利用密码学和认证代码中依赖于输入的执行时间。经典的攻击目标包括:非恒定时间的字符串比较(首个不匹配的字节会提前短路,从而暴露猜测匹配到了哪一位)、模幂运算(square-and-multiply 会泄露密钥比特)、受缓存状态影响的 AES 查表,以及耗时会暴露用户名是否存在的账户查找。即便是纳秒级的差异,也可以通过对数千次测量取平均来抑制网络抖动,从而被放大。

Paul Kocher 于 1996 年发表的论文首次将其武器化,用于攻击 RSA 和 Diffie-Hellman。尤为关键的是,Brumley 与 Boneh 于 2003 年发表的《Remote Timing Attacks Are Practical》(USENIX Security)通过网络提取出了 OpenSSL 0.9.7 的 RSA 私钥,其手段是利用 Montgomery 约简以及 Karatsuba/常规乘法切换过程中的时序差异——这正是 OpenSSL 默认启用 RSA 盲化(blinding) 的原因。Lucky ThirteenCVE-2013-0169,2013 年)通过测量 CBC 模式填充处理中 MAC 验证的时间差异,恢复了 TLS 明文。

flowchart TD
  A[攻击者提交大量精心构造的输入] --> B[精确测量响应时间]
  B --> C[对样本取平均以消除抖动]
  C --> D{时间是否与<br/>机密相关?}
  D -->|是| E[推断出机密的一个比特/字节]
  E --> F[重复进行,缩小密钥空间]
  F --> G[完整恢复机密]
  D -->|否| H[恒定时间代码:无泄露]

防御手段需要恒定时间实现:无分支的条件移动、固定时间的比较(crypto_memcmp、Python 的 hmac.compare_digest、Java 的 MessageDigest.isEqual)、针对 RSA/ECC 的盲化,以及经缓存加固的密码原语。自动化工具(dudect、ctgrind、MicroWalk)有助于审计依赖于数据的时序问题,而速率限制则在网络边界处压缩了攻击者的测量预算。

示例

  1. 01

    Kocher 于 1996 年提出的时序攻击,可恢复 RSA/Diffie-Hellman 私钥的比特位。

  2. 02

    Lucky Thirteen(CVE-2013-0169)——针对 TLS CBC 填充的时序攻击。

常见问题

时序攻击 是什么?

一种侧信道攻击,通过测量操作在不同输入下的耗时来恢复机密信息。 它属于网络安全的 漏洞 分类。

时序攻击 是什么意思?

一种侧信道攻击,通过测量操作在不同输入下的耗时来恢复机密信息。

如何防御 时序攻击?

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

时序攻击 还有哪些其他名称?

常见的别称包括: 时序侧信道。

相关术语

另见