📑 本页目录(点开跳转)
23 · 后量子密码
⏱ 30 分钟 | ⭐⭐ 这是正在发生的迁移,不是未来学
🎯 一句话
量子计算机会彻底打死 RSA、DH、椭圆曲线(本教程第 14–17 章的全部公钥密码), 但几乎不影响 AES 和哈希。 所以这不是"密码学完蛋了",而是换掉公钥那一半 —— 而且现在就必须开始。
⚛️ 一、两个算法,两种命运
Shor 算法 —— 对公钥密码是灭顶之灾
能在【多项式时间】内解决:
├─ 大整数分解 ⟹ RSA 死 💀
├─ 离散对数 ⟹ DH、DSA、ElGamal 死 💀
└─ 椭圆曲线离散对数 ⟹ ECDH、ECDSA、Ed25519 死 💀
⭐ 注意:不是"变慢一点",是【从指数时间降到多项式时间】
加密钥长度完全没用 —— 2048 位换 4096 位只是拖一点点
Grover 算法 —— 对对称密码只是"减半"
把暴力搜索从 O(N) 降到 O(√N)
⟹ AES-128 的有效强度 ≈ 64 位 ⚠️
⟹ AES-256 的有效强度 ≈ 128 位 ✅ 仍然安全
哈希同理:SHA-256 抗碰撞 ≈ 128 位 → 仍够用
| 算法 | 量子影响 | 对策 |
|---|---|---|
| RSA / DH / ECC | 💀 完全破解 | 必须换算法 |
| AES-128 | ⚠️ 强度减半 | 换 AES-256 |
| AES-256 | ✅ 基本无影响 | 不动 |
| SHA-256/3 | ✅ 基本无影响 | 不动 |
🔑 一句话记住:对称密码"加倍密钥长度"就行,公钥密码必须"换掉整个算法"。
⏰ 二、为什么"现在"就要做
「先存后解」攻击(Harvest Now, Decrypt Later)
攻击者【今天】就把你的加密流量存下来
等【十年后】有了量子计算机再解密 💀
⭐ 所以真正的截止时间不是"量子计算机造出来那天",而是:
今天 + 数据需要保密的年限 < 量子计算机出现的时间
─────────────────────────
如果这个不等式不成立,你【已经晚了】
Mosca 定理:设
- $x$ = 你的数据需要保密多少年
- $y$ = 你完成迁移需要多少年
- $z$ = 距离量子计算机出现还有多少年
$$\boxed{x + y > z \;\Longrightarrow\; \text{你现在就有麻烦了}}$$
💡 代入现实:政府和医疗数据 $x$ 常常是 25–50 年; 大型机构的密码学迁移 $y$ 历史上要 5–15 年(想想 SHA-1 和 TLS 1.0 退役花了多久)。 即便 $z$ 是 20 年,$x+y$ 也早就超过它了。
⭐ 这就是为什么 NIST 把最后期限定在 2030(弃用)/ 2035(禁用)。
🏆 三、NIST 标准化的结果
2024 年 8 月正式发布的三个标准:
| 标准 | 原名 | 用途 | 数学基础 |
|---|---|---|---|
| FIPS 203 · ML-KEM | CRYSTALS-Kyber | 密钥封装(替代 DH/ECDH) | 格(Module-LWE) |
| FIPS 204 · ML-DSA | CRYSTALS-Dilithium | 签名(主力) | 格(Module-LWE) |
| FIPS 205 · SLH-DSA | SPHINCS+ | 签名(备份) | ⭐ 只依赖哈希 |
2025 年补充:HQC 被选为基于编码的备份 KEM —— 理由是不能把所有鸡蛋放在"格"这一个篮子里。
尺寸代价(这是迁移最现实的痛点)
| 方案 | 公钥 | 密文/签名 |
|---|---|---|
| X25519(经典) | 32 B | 32 B |
| ML-KEM-768 | 1184 B | 1088 B |
| Ed25519(经典) | 32 B | 64 B |
| ML-DSA-65 | 1952 B | 3309 B ⭐ |
| SLH-DSA(小参数) | 32 B | 7856 B 💀 |
⚠️ 为什么尺寸是大问题: TLS 握手要传证书链(多个签名 + 公钥)。 从 64 字节涨到 3309 字节,握手可能超过初始拥塞窗口,多一个 RTT —— 在移动网络上这是可感知的延迟。 PQC 迁移的主要工程挑战是带宽和延迟,不是 CPU。
🧮 四、格密码为什么可信(直觉版)
格 = 空间里规则排列的点阵
⭐ 困难问题(SVP / LWE):
给你一组"歪斜的"基向量,
找出格中【离原点最近的非零点】—— 高维下极难
LWE(带错误的学习):
给你一堆 (aᵢ, bᵢ),其中 bᵢ = ⟨aᵢ, s⟩ + eᵢ(eᵢ 是小噪声)
求 s
💡 没有噪声就是解线性方程组(高斯消元,很简单)
⭐ 加了一点点噪声,就变成了公认的困难问题
🔑 格密码的两个额外优点: ① 有最坏情况到平均情况的归约 —— 随机实例和最难实例一样难,这个保证很罕见 ② 能支撑同态加密(第 22 章的 FHE 几乎都建在格上)
🔀 五、迁移怎么做:混合模式
⭐ 当前最佳实践 —— 【混合密钥交换】:
共享密钥 = KDF( X25519 的结果 ‖ ML-KEM 的结果 )
→ 只要【两者之一】还安全,整体就安全 ✅
→ 经典算法防"新算法有未知缺陷"
→ 后量子算法防"量子计算机"
💡 这个设计非常值得学: 在对新算法还没有几十年信心时,不要单独依赖它。 Chrome/Firefox 从 2024 年起默认启用 X25519MLKEM768 混合组, Signal(PQXDH)、iMessage(PQ3)、Cloudflare 都已上线。 今天你访问大网站,很可能已经在用后量子密钥交换了。
一个真实的警示:不要自己上新算法
💥 SIKE(基于同源):进入 NIST 决赛,被认为很有前途
2022 年被一台【普通笔记本】在【一小时内】用数学攻击彻底击破 💀
💥 Rainbow(多变量签名):同样进决赛,2022 年被击破
🔑 教训:后量子算法的分析历史比 RSA 短得多,缺陷仍在被发现。 这正是混合模式存在的理由,也是别自己实现、别抢跑用未标准化方案的理由。
🧭 六、你现在该做什么
① 【盘点】哪里用了公钥密码,用了什么算法、什么密钥长度
—— ⭐ 这一步最容易被跳过,也最花时间
② 【识别长寿数据】哪些数据 10 年后还敏感(Mosca 的 x)
③ 【建立密码学敏捷性】把算法做成可替换的配置,而不是硬编码
—— ⭐ 这是最有长期价值的一步,无论下一次换什么算法
④ 【优先换密钥交换】因为"先存后解"只威胁保密性;
签名可以晚一点(伪造签名需要【当下】就有量子计算机)⭐
⑤ 【用混合模式】不要单独依赖 PQC
🔑 第 ④ 点的逻辑值得单独记: 保密性是"追溯性"风险(今天的流量十年后能被解密), 认证性是"实时性"风险(伪造签名必须在签名有效期内完成)。 所以密钥交换的迁移比签名的迁移更急。
🔗 和站内其他章的关系
| 相关的地方 | 和这一章的关系 |
|---|---|
| 第 14 章 RSA / 第 15 章 DH / 第 16 章 ECC | 全部被 Shor 打死 |
| 第 6 章 AES | Grover 只让强度减半 → 用 AES-256 |
| 第 9 章哈希 | 基本不受影响,SLH-DSA 全靠它 |
| 第 21 章 STARK | 只依赖哈希,天然抗量子 |
| 第 18 章 PKI | 证书链尺寸暴涨是最大工程挑战 |
| 第 19 章密码学敏捷性 | 迁移能否顺利的关键 |
| 大模型 · 合规与伦理 | 那边「数据保留期限」那一条就是你的迁移倒计时:你承诺留多久的密文,就得提前多久换算法(Harvest Now, Decrypt Later) ⭐ |
| 模型上线之后 · 灰度影子与回滚 | 混合模式本质就是灰度:新旧两条路同时跑、随时能退回——⚠️ 动手前先去那边把回滚触发条件要预先写死这一条学走 |
| 模型上线之后 · 成本与容量 | 签名从 64 字节涨到几 KB、握手包变大,这是一笔要重做的容量账,不是纯密码学问题 |
✅ 检查点
- Shor 和 Grover 分别影响什么?为什么说影响完全不同量级?
- 为什么"把 RSA 密钥加长"救不了?
- 什么是"先存后解"攻击?
- 写出 Mosca 定理并解释每个变量。代入现实数字说明为什么现在就晚了。
- NIST 2024 年发布的三个标准分别是什么、干什么用?
- 为什么 2025 年还要补一个 HQC?
- PQC 迁移最主要的工程挑战是什么?为什么?
- LWE 问题去掉噪声会变成什么?说明了什么?
- 什么是混合密钥交换?为什么必须这么做?举一个被击破的候选算法。
- 为什么密钥交换的迁移比签名更紧急?
👀 答案
- Shor 完全破解 RSA/DH/ECC(分解和离散对数降到多项式时间);Grover 只把对称密码强度减半(O(N)→O(√N))。量级不同:一个是"从指数降到多项式",一个只是开平方。
- 因为 Shor 是多项式时间算法,加长密钥只带来多项式级的成本增长,2048→4096 位只拖延一点点,改变不了它可解的事实。
- 攻击者今天就把加密流量存下来,等十年后有量子计算机再解密。所以截止时间不是"量子计算机出现那天"。
- x + y > z ⟹ 现在就有麻烦。x=数据保密年限,y=迁移所需年限,z=距量子计算机的年数。现实:政府/医疗数据 x 常为 25–50 年,大机构迁移 y 历史上 5–15 年,即便 z=20 年,x+y 也早已超过。
- FIPS 203 ML-KEM(Kyber,密钥封装,替代 DH/ECDH)、FIPS 204 ML-DSA(Dilithium,主力签名)、FIPS 205 SLH-DSA(SPHINCS+,只依赖哈希的备份签名)。
- 因为 ML-KEM 和 ML-DSA 都基于格,不能把所有鸡蛋放在一个篮子里。HQC 基于编码,提供数学基础上的多样性。
- 带宽和延迟,不是 CPU。签名从 64 B 涨到 3309 B,TLS 证书链可能超过初始拥塞窗口,多一个 RTT,移动网络上可感知。
- 变成解线性方程组(高斯消元,很简单)。说明加一点点噪声就把简单问题变成了公认的困难问题。
- 共享密钥 = KDF(经典算法结果 ‖ PQC 结果),只要两者之一还安全整体就安全。必须这么做是因为PQC 分析历史短、缺陷仍在被发现——SIKE 进了 NIST 决赛,2022 年被一台普通笔记本在一小时内击破;Rainbow 同样被破。
- 因为保密性是追溯性风险(今天的流量十年后能解密),而认证性是实时性风险(伪造签名必须在有效期内完成,需要当下就有量子计算机)。
🛑 可以停在这里
⚡ 走神救援
⭐Shor 彻底打死 RSA/DH/ECC(分解和离散对数从指数降到多项式,所以加长密钥没用);Grover 只把对称强度减半(AES-128→64 位⚠️,AES-256 和 SHA-256 基本不受影响)。🔑一句话:对称密码加倍密钥长度就行,公钥密码必须换掉整个算法。⏰⭐"先存后解":攻击者今天存流量、十年后解密 → 截止时间不是量子计算机出现那天。Mosca 定理:x(保密年限)+y(迁移年限)>z(距量子计算机) ⟹ 你已经晚了;现实中政府/医疗 x=25–50 年、大机构迁移 y=5–15 年,即便 z=20 也早就超了 —— 这就是 NIST 定 2030 弃用/2035 禁用的原因。NIST 2024 三标准:ML-KEM(Kyber,密钥封装)、ML-DSA(Dilithium,主力签名)、SLH-DSA(SPHINCS+,只靠哈希的备份);2025 补 HQC(基于编码)因为不能把鸡蛋都放在"格"这个篮子里。⚠️⭐迁移的主要挑战是带宽和延迟不是 CPU:签名 64B→3309B,TLS 证书链可能超过初始拥塞窗口多一个 RTT。格密码靠 LWE:b=⟨a,s⟩+e,去掉噪声就是高斯消元(简单),加一点噪声就变成困难问题;优点是有最坏到平均情况的归约,且能撑起 FHE(第 22 章)。⭐混合模式:KDF(X25519 ‖ ML-KEM),两者之一安全则整体安全 —— 必须这么做,因为💥SIKE 进了 NIST 决赛却在 2022 年被一台普通笔记本一小时内击破,Rainbow 同样被破。现在该做:盘点公钥用法 → 识别长寿数据 → ⭐建立密码学敏捷性(算法可配置而非硬编码) → 优先换密钥交换 → 用混合模式。🔑⭐为什么密钥交换比签名急:保密性是追溯性风险(今天流量十年后可解),认证性是实时性风险(伪造签名要当下就有量子机)。
下一节 👉 24-实战与挑战项目.md