0Pricing
Cryptology Academy · 课时

时序攻击:从执行时间提取密钥

演示针对非恒定时间实现的缓存时序攻击

时序攻击:从执行时间提取密钥 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 时序攻击:从执行时间提取密钥
  2. 功耗分析:SPA 与 DPA
  3. 电磁与声学侧信道
  4. 对策:掩码、盲化与恒定时间代码
← 返回 Cryptology Academy