时序攻击:从执行时间提取密钥
演示针对非恒定时间实现的缓存时序攻击
时序攻击:从执行时间提取密钥 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
什么是时序攻击?
时序攻击是一种侧信道攻击,对手通过测量密码运算耗时来推断秘密数据。即使是纳秒级的差异,也可能泄露密钥位。
执行时间为何会泄露秘密
密码学代码中的分支和内存访问通常取决于秘密值。遇到 0 位就提前退出的循环运行得更快,攻击者可以测量这种差异。
针对 AES 的缓存时序攻击
经典 AES 表查找会访问地址取决于密钥字节的 CPU 缓存行。Flush+Reload 等工具可以让攻击者观察访问了哪些缓存行。
Bleichenbacher RSA 时序预言机
Bleichenbacher 在 1998 年发起的攻击利用了 PKCS#1 v1.5 填充验证中的时序差异。攻击者可以选择数百万条密文,从而恢复 1024 位 RSA 私钥。
远程时序攻击
即使通过网络传输,只要收集足够多的样本,也可以测量亚毫秒级的时序差异。Lucky13 利用了互联网上 TLS 的 CBC 模式 MAC 时序。
在 Python 中测量时间
使用 time.perf_counter_ns() 获得纳秒级分辨率。要演示易受攻击的比较操作:
import time
def vulnerable_compare(a, b):
for x, y in zip(a, b):
if x != y:
return False
return len(a) == len(b)
start = time.perf_counter_ns()
vulnerable_compare(b"secret_key_here", b"wrong_key_xxxxx")
elapsed = time.perf_counter_ns() - start
print(f"Elapsed: {elapsed} ns")模拟时序预言机
时序预言机会返回猜测是否正确 AND 泄露耗时信息。我们可以通过测量每个猜测在返回假值前的耗时,找出耗时最长的猜测,从而逐字节恢复秘密。
时序数据的统计分析
单次测量噪声很大。攻击者会为每个候选值收集数千个样本,并使用统计检验(t 检验、Welch 检验)区分信号与噪声。
Manger 对 OAEP 的攻击
2001 年,Manger 证明,即使是经过 OAEP 填充的 RSA,如果实现用不同的时序来区分“首字节为零”和其他错误,也会泄露信息。
现实世界中的示例
OpenSSL、GnuTLS 和 NSS 都曾存在与时序攻击有关的 CVE。Lucky13 TLS 攻击(CVE-2013-0169)在披露时影响了几乎所有 TLS 库。
知识检查
哪种统计技术可以帮助攻击者区分时序信号与测量噪声?
课程回顾
时序攻击通过测量执行时间差异来提取密码学秘密。它们既可以在本地利用缓存实施,也可以通过网络远程实施。统计分析能够将信号与噪声分离。解决方法是使用恒定时间代码,这将在《防护措施》课程中介绍。
常见问题解答
「时序攻击:从执行时间提取密钥」课时是免费的吗?
是的 — 「时序攻击:从执行时间提取密钥」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「时序攻击:从执行时间提取密钥」这节课中我会学到什么?
演示针对非恒定时间实现的缓存时序攻击 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「时序攻击:从执行时间提取密钥」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 时序攻击:从执行时间提取密钥
- 功耗分析:SPA 与 DPA
- 电磁与声学侧信道
- 对策:掩码、盲化与恒定时间代码