时序攻击
时序攻击 是什么?
时序攻击一种侧信道攻击,通过测量操作在不同输入下的耗时来恢复机密信息。
时序攻击利用密码学和认证代码中依赖于输入的执行时间。经典的攻击目标包括:非恒定时间的字符串比较(首个不匹配的字节会提前短路,从而暴露猜测匹配到了哪一位)、模幂运算(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 Thirteen(CVE-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)有助于审计依赖于数据的时序问题,而速率限制则在网络边界处压缩了攻击者的测量预算。
● 示例
- 01
Kocher 于 1996 年提出的时序攻击,可恢复 RSA/Diffie-Hellman 私钥的比特位。
- 02
Lucky Thirteen(CVE-2013-0169)——针对 TLS CBC 填充的时序攻击。
● 常见问题
时序攻击 是什么?
一种侧信道攻击,通过测量操作在不同输入下的耗时来恢复机密信息。 它属于网络安全的 漏洞 分类。
时序攻击 是什么意思?
一种侧信道攻击,通过测量操作在不同输入下的耗时来恢复机密信息。
如何防御 时序攻击?
针对 时序攻击 的防御通常结合技术控制与运营实践,详见上方完整定义。
时序攻击 还有哪些其他名称?
常见的别称包括: 时序侧信道。