后量子密码|通识认知 03|量子威胁辟谣:Grover 算法对对称密码的影响与误区
-
- 前言
- [一、Grover 算法解决什么问题](#一、Grover 算法解决什么问题)
-
- [1.1 无结构搜索问题](#1.1 无结构搜索问题)
- [1.2 Grover 算法不是一次得到答案](#1.2 Grover 算法不是一次得到答案)
- 二、振幅放大为什么能够加速搜索
-
- [2.1 初始叠加态](#2.1 初始叠加态)
- [2.2 Oracle 标记目标](#2.2 Oracle 标记目标)
- [2.3 关于平均值反演](#2.3 关于平均值反演)
- [2.4 密钥搜索中的 Oracle 是什么](#2.4 密钥搜索中的 Oracle 是什么)
- [三、Grover 算法对 AES 的影响](#三、Grover 算法对 AES 的影响)
-
- [3.1 理论查询复杂度](#3.1 理论查询复杂度)
- [3.2 为什么不能直接说"AES-128 等于 64 位安全"](#3.2 为什么不能直接说“AES-128 等于 64 位安全”)
- [3.3 AES-128 是否必须立即停用](#3.3 AES-128 是否必须立即停用)
- [四、Grover 算法对 SM4 的影响](#四、Grover 算法对 SM4 的影响)
-
- [4.1 不能自行发明"SM4-256"](#4.1 不能自行发明“SM4-256”)
- [4.2 如何评估 SM4 的长期使用](#4.2 如何评估 SM4 的长期使用)
- [五、Grover 算法对哈希函数的影响](#五、Grover 算法对哈希函数的影响)
-
- [5.1 原像攻击](#5.1 原像攻击)
- [5.2 碰撞攻击不能简单套用 Grover](#5.2 碰撞攻击不能简单套用 Grover)
- [5.3 哈希输出长度仍然重要](#5.3 哈希输出长度仍然重要)
- [六、Grover 算法对口令和 KDF 的影响](#六、Grover 算法对口令和 KDF 的影响)
-
- [6.1 Grover 不会拯救弱口令](#6.1 Grover 不会拯救弱口令)
- [6.2 正确防护方向](#6.2 正确防护方向)
- [七、Shor 与 Grover 的本质区别](#七、Shor 与 Grover 的本质区别)
- [八、Grover 算法常见误区](#八、Grover 算法常见误区)
-
- [误区一:AES-128 已经只剩 64 位现实安全性](#误区一:AES-128 已经只剩 64 位现实安全性)
- [误区二:量子计算机可以把 Grover 搜索无限并行](#误区二:量子计算机可以把 Grover 搜索无限并行)
- [误区三:AES-256 在量子时代等于今天的 AES-128](#误区三:AES-256 在量子时代等于今天的 AES-128)
- [误区四:SM4 必须立即停用](#误区四:SM4 必须立即停用)
- [误区五:SHA-256 会被量子计算机瞬间碰撞](#误区五:SHA-256 会被量子计算机瞬间碰撞)
- [误区六:只要使用 PQC,低熵密码就安全](#误区六:只要使用 PQC,低熵密码就安全)
- 九、工程上应该怎么选
-
- [9.1 新建长期安全系统](#9.1 新建长期安全系统)
- [9.2 已有系统](#9.2 已有系统)
- [9.3 迁移优先级](#9.3 迁移优先级)
- 十、总结
专栏说明 :《后量子密码》专栏,本专栏面向零基础读者,循序渐进讲解后量子密码理论、NIST标准算法、攻击分析、工程落地与迁移实践。
前言
上一节讲到,Shor 算法能够从根本上威胁 RSA、ECC 与 SM2。于是一个自然问题出现了:
公钥密码要换,对称密码是不是也要全部换掉?
网络上经常流传一种简单结论:
text
量子计算让密钥安全强度减半
AES-128 只剩 64 位安全性
所以 AES-128 很快就会失效
这段话抓住了 Grover 算法的平方级搜索加速,却省略了攻击模型、量子查询成本、串行深度、错误纠正、并行化限制和完整密码电路等重要条件。
Grover 算法确实会影响对称密码,但它与 Shor 算法有本质区别:
- Shor 算法利用整数分解和离散对数的数学结构,直接破坏传统公钥密码基础;
- Grover 算法为无结构搜索提供平方级加速,主要改变穷举密钥和寻找哈希原像的成本。
因此,本篇不简单回答"AES 安不安全",而是建立一套更准确的分析方法:先看理论查询复杂度,再看真实量子资源,最后决定参数是否需要调整。
本节小结:Grover 算法会降低对称密钥搜索复杂度,但不能直接照搬"密钥位数除以二"得出现实破解时间。理论安全强度与工程攻击成本必须分开讨论。
一、Grover 算法解决什么问题
1.1 无结构搜索问题
假设存在 N N N 个候选项,其中只有一个满足条件。我们拥有一个验证函数:
f ( x ) = { 1 , x 是目标 0 , x 不是目标 f(x)= \begin{cases} 1,&x\text{ 是目标}\\ 0,&x\text{ 不是目标} \end{cases} f(x)={1,0,x 是目标x 不是目标
如果候选项没有排序,也没有其他可利用结构,经典算法平均需要检查约 N / 2 N/2 N/2 个候选,最坏需要检查 N N N 个候选。
经典查询复杂度为:
O ( N ) O(N) O(N)
Grover 算法可以把量子查询复杂度降低为:
O ( N ) O(\sqrt N) O(N )
如果搜索空间由 k k k 比特密钥构成,那么:
N = 2 k N=2^k N=2k
代入得到:
O ( 2 k ) = O ( 2 k / 2 ) O(\sqrt{2^k})= O(2^{k/2}) O(2k )=O(2k/2)
这就是"对称密钥理论安全指数减半"的来源。
1.2 Grover 算法不是一次得到答案
Grover 算法并不是把所有候选密钥放入量子计算机后立刻读出正确密钥。
它需要反复执行两个核心步骤:
- 使用 Oracle 标记满足条件的候选;
- 使用扩散算子放大目标态振幅。
经过大约:
π 4 N \frac{\pi}{4}\sqrt N 4πN
轮振幅放大后,再进行测量,才会以较高概率得到目标。
因此,Grover 算法虽然降低了查询次数,但仍需要大量连续量子操作,并不是常数时间破解。
本节小结 :Grover 算法针对的是没有可利用结构的搜索问题,将 O ( N ) O(N) O(N) 查询降低到 O ( N ) O(\sqrt N) O(N )。它仍需反复运行 Oracle 和扩散操作,不是"一次测量得到所有答案"。
二、振幅放大为什么能够加速搜索
2.1 初始叠加态
对 n n n 个量子比特施加 Hadamard 门,可以构造 N = 2 n N=2^n N=2n 个候选的均匀叠加:
∣ ψ ⟩ = 1 N ∑ x = 0 N − 1 ∣ x ⟩ |\psi\rangle= \frac{1}{\sqrt N} \sum_{x=0}^{N-1}|x\rangle ∣ψ⟩=N 1x=0∑N−1∣x⟩
此时每个候选被测量到的概率相同:
∣ 1 N ∣ 2 = 1 N \left|\frac{1}{\sqrt N}\right|^2= \frac1N N 1 2=N1
直接测量仍然相当于随机猜测,并没有获得搜索优势。
2.2 Oracle 标记目标
Oracle 根据验证函数 f ( x ) f(x) f(x) 改变目标态相位:
O f ∣ x ⟩ = ( − 1 ) f ( x ) ∣ x ⟩ O_f|x\rangle= (-1)^{f(x)}|x\rangle Of∣x⟩=(−1)f(x)∣x⟩
对于非目标项, f ( x ) = 0 f(x)=0 f(x)=0,振幅不变;对于目标项, f ( x ) = 1 f(x)=1 f(x)=1,振幅符号翻转。
Oracle 并没有直接告诉我们目标是什么,只是在量子态中对目标作出相位标记。
2.3 关于平均值反演
扩散算子对各状态振幅执行"关于平均值反演"。目标态在 Oracle 步骤中被翻转到平均值下方,扩散后就会被推到平均值上方,其振幅增加;其他状态的振幅略微下降。
重复"相位标记---平均值反演",目标态振幅会逐步放大。
text
均匀叠加
│
▼
Oracle 翻转目标相位
│
▼
扩散算子放大目标振幅
│
▼
重复约 √N 次
│
▼
测量得到目标
如果重复次数过多,目标振幅还会再次下降。因此,Grover 算法需要控制迭代次数,而不是无限循环。
2.4 密钥搜索中的 Oracle 是什么
攻击对称密码时,Oracle 需要验证某个候选密钥是否正确。
假设攻击者掌握一组明密文:
C = E K ( P ) C=E_K(P) C=EK(P)
对于候选密钥 K ′ K' K′,验证函数可以定义为:
f ( K ′ ) = { 1 , E K ′ ( P ) = C 0 , E K ′ ( P ) ≠ C f(K')= \begin{cases} 1,&E_{K'}(P)=C\\ 0,&E_{K'}(P)\neq C \end{cases} f(K′)={1,0,EK′(P)=CEK′(P)=C
这意味着量子 Oracle 内部必须实现完整的、可逆的 AES 或 SM4 加密电路,还需要比较计算结果与目标密文,并清理中间垃圾状态。
所以一次"量子查询"并不等于一次普通整数比较,而可能对应一个复杂的容错量子密码电路。
本节小结:Grover 的优势来自振幅放大,而不是直接读取叠加态。对称密码攻击中的每次 Oracle 查询都要执行完整可逆加密,查询次数之外还存在巨大的电路和纠错成本。
三、Grover 算法对 AES 的影响
3.1 理论查询复杂度
AES 提供三种密钥长度:
- AES-128;
- AES-192;
- AES-256。
按理想 Grover 查询数量级估计:
| 算法 | 经典穷举复杂度 | Grover 查询复杂度 |
|---|---|---|
| AES-128 | O ( 2 128 ) O(2^{128}) O(2128) | O ( 2 64 ) O(2^{64}) O(264) |
| AES-192 | O ( 2 192 ) O(2^{192}) O(2192) | O ( 2 96 ) O(2^{96}) O(296) |
| AES-256 | O ( 2 256 ) O(2^{256}) O(2256) | O ( 2 128 ) O(2^{128}) O(2128) |
从指数上看,AES-256 在 Grover 模型下仍保留约 2 128 2^{128} 2128 级别的查询空间,因此常被视为长期量子安全场景中的保守选择。
3.2 为什么不能直接说"AES-128 等于 64 位安全"
2 64 2^{64} 264 描述的是理想模型中的 Oracle 查询数量级,不是现实中的普通 CPU 指令数量,也不是攻击所需秒数。
一次 Grover 迭代至少包含:
- 可逆 AES 密钥扩展;
- 多轮 SubBytes、ShiftRows、MixColumns、AddRoundKey;
- 明密文比较;
- 相位标记;
- 逆向清理辅助量子比特;
- 扩散操作;
- 量子纠错与容错门开销。
此外,Grover 迭代具有较强串行性。经典穷举可以增加机器数量,几乎线性切分密钥空间;Grover 并行化后,单台设备获得的平方优势会被部分稀释。
如果使用 M M M 台量子设备划分搜索空间,每台设备搜索约 N / M N/M N/M 个候选,则单台查询量约为:
O ( N M ) O\left(\sqrt{\frac NM}\right) O(MN )
总硬件成本、运行时间和纠错资源需要综合衡量,不能只看密钥指数。
3.3 AES-128 是否必须立即停用
截至 2026 年 8 月,NIST 并未因为 PQC 迁移要求全面停用 AES-128。现阶段能够威胁 RSA/ECC 的量子设备尚未出现,而实用 Grover 密钥搜索通常需要更高的综合量子资源。
工程上可以按数据寿命和安全等级选择:
- 普通短期业务:AES-128 仍是主流安全选择;
- 长期高价值机密:优先考虑 AES-256;
- 新建量子安全架构:可直接采用 AES-256,减少未来参数迁移;
- 已有系统:不要仅因宣传性结论仓促替换,应结合协议、性能和合规要求评估。
本节小结:AES 在 Grover 模型下面临平方级搜索加速,但一次查询包含完整量子 AES 电路。AES-256 是长期场景的保守选择,AES-128 也没有因 PQC 标准发布而立即失效。
四、Grover 算法对 SM4 的影响
SM4 是 128 比特分组密码,密钥长度固定为 128 比特。
经典密钥穷举空间为:
2 128 2^{128} 2128
理想 Grover 查询复杂度约为:
2 64 2^{64} 264
它与 AES-128 在"密钥空间平方加速"这一抽象层面相似,但真实攻击成本取决于各自量子电路的门数量、深度、辅助量子比特和纠错开销。
4.1 不能自行发明"SM4-256"
SM4 标准定义的是 128 比特密钥算法,并不存在通过简单拼接密钥就能得到的标准 SM4-256。
下面这些做法都不正确:
- 把两个 128 比特密钥直接连接后修改轮密钥算法;
- 连续执行两次 SM4 就声称获得 256 位安全;
- 删除或增加轮数制造"抗量子 SM4";
- 自行改变 S 盒和常量。
未经分析的魔改会引入新的结构性风险,也不具备标准互操作性。
4.2 如何评估 SM4 的长期使用
对于需要遵循商用密码规范的系统,应根据主管部门、行业标准和密码应用要求进行迁移,不能自行宣布算法停用或自行创造替代版本。
从纯密码分析角度看,可以区分:
- SM2:受 Shor 算法结构性威胁,需要后量子公钥替代路线;
- SM4:受 Grover 通用搜索影响,但不会以与 SM2 相同的方式失效;
- SM3:需要重新评估量子搜索下的原像、碰撞与输出长度安全性。
这也是后量子迁移中必须按算法类型分类,而不能把"国密算法"整体判断为安全或不安全的原因。
本节小结:SM4 面临的是 128 位密钥空间的 Grover 搜索风险,不是 Shor 式结构性击穿。标准没有定义 SM4-256,工程中不能通过随意扩展密钥或轮数制造所谓抗量子版本。
五、Grover 算法对哈希函数的影响
哈希函数没有密钥,但仍存在可被量子搜索加速的问题。
5.1 原像攻击
给定哈希值 y y y,寻找消息 x x x,使得:
H ( x ) = y H(x)=y H(x)=y
称为原像攻击。
对于理想 n n n 比特哈希函数,经典原像搜索复杂度约为:
O ( 2 n ) O(2^n) O(2n)
使用 Grover 算法,理想量子查询复杂度约为:
O ( 2 n / 2 ) O(2^{n/2}) O(2n/2)
例如,SHA-256 的输出长度为 256 比特,其理想量子原像搜索数量级约为:
2 128 2^{128} 2128
这仍然是非常高的安全级别。
5.2 碰撞攻击不能简单套用 Grover
碰撞攻击寻找两个不同消息 x x x、 x ′ x' x′,满足:
H ( x ) = H ( x ′ ) H(x)=H(x') H(x)=H(x′)
经典生日攻击复杂度约为:
O ( 2 n / 2 ) O(2^{n/2}) O(2n/2)
量子碰撞搜索存在比直接 Grover 套用更复杂的算法和存储权衡,常见理论查询界可达到约:
O ( 2 n / 3 ) O(2^{n/3}) O(2n/3)
但真实资源模型、量子存储和并行条件非常重要。不能看到 n / 3 n/3 n/3 就直接宣布 SHA-256 只剩 85 位现实安全性。
5.3 哈希输出长度仍然重要
后量子环境下,较长输出可以提供更大安全余量。
需要区分:
- 原像安全;
- 第二原像安全;
- 碰撞安全;
- HMAC 和 KDF 使用方式;
- 数字签名内部对哈希函数的具体要求。
同一个 256 比特哈希函数,在不同安全目标下的复杂度并不相同。
本节小结 :Grover 能把理想哈希原像搜索从 2 n 2^n 2n 降到约 2 n / 2 2^{n/2} 2n/2,碰撞问题则有不同量子界。SHA-256、SHA-3 等并不会因此立即淘汰,但参数选择必须对应具体安全目标。
六、Grover 算法对口令和 KDF 的影响
用户口令通常远弱于 128 比特随机密钥。
一个由常见单词、生日或短数字组成的口令,其有效熵可能只有几十比特甚至更低。即使没有量子计算机,经典字典攻击、规则变换和凭据填充也足以造成严重风险。
6.1 Grover 不会拯救弱口令
假设口令空间只有 2 40 2^{40} 240 个有效候选,经典搜索约为:
2 40 2^{40} 240
理想 Grover 查询量约为:
2 20 2^{20} 220
这说明低熵秘密在量子模型下更加脆弱。
但口令攻击通常不是简单 Oracle:攻击者还需要执行 Argon2、scrypt、PBKDF2 等 KDF。内存困难 KDF 会增加量子电路和量子存储成本,使攻击资源评估比"熵除以二"复杂得多。
6.2 正确防护方向
- 使用密码管理器生成高熵随机口令;
- 使用 Argon2id、scrypt 等合适的口令哈希方案;
- 为每个口令使用独立随机盐;
- 根据硬件能力提高时间与内存成本;
- 启用多因素认证;
- 防止凭据填充和在线暴力尝试。
PQC 迁移不能替代基本身份安全。一个系统即使使用 ML-KEM,如果用户口令是 123456,仍然可能被经典攻击直接攻破。
本节小结:低熵口令在经典时代就不安全,Grover 只会进一步放大问题。口令系统应依靠高熵秘密、内存困难 KDF、随机盐和多因素认证,而不是等待某个"抗量子口令算法"。
七、Shor 与 Grover 的本质区别
| 对比项 | Shor 算法 | Grover 算法 |
|---|---|---|
| 目标问题 | 整数分解、离散对数 | 无结构搜索 |
| 典型影响 | RSA、DH、ECC、SM2 | AES、SM4 密钥搜索、哈希原像 |
| 加速性质 | 改变问题复杂度类别 | 平方级加速 |
| 防护方式 | 更换算法家族 | 增大参数、评估量子资源 |
| 是否结构性击穿 | 是 | 通常不是 |
| 对 PQC 迁移的意义 | 迫使替换传统公钥密码 | 影响对称与哈希参数选择 |
可以用两条公式概括:
Shor 对传统公钥密码:
困难数学问题 ⟶ 量子多项式时间求解 \text{困难数学问题} \longrightarrow \text{量子多项式时间求解} 困难数学问题⟶量子多项式时间求解
Grover 对密钥搜索:
O ( N ) ⟶ O ( N ) O(N) \longrightarrow O(\sqrt N) O(N)⟶O(N )
这一区分非常重要。把所有量子威胁都描述成"安全位数减半",会掩盖 RSA/ECC 与 AES 所面临风险的根本差别。
本节小结:Shor 改变的是整数分解和离散对数的可解性,Grover 改变的是通用搜索成本。前者要求替换公钥算法,后者通常通过更高参数和工程评估应对。
八、Grover 算法常见误区
误区一:AES-128 已经只剩 64 位现实安全性
2 64 2^{64} 264 是理想 Oracle 查询数量级,不是普通 CPU 运算次数,也没有包含完整量子 AES 电路和容错成本。
误区二:量子计算机可以把 Grover 搜索无限并行
增加量子设备可以划分搜索空间,但平方加速不会以经典穷举相同方式线性扩展。时间、设备数量、量子纠错和串行深度之间需要权衡。
误区三:AES-256 在量子时代等于今天的 AES-128
这是一种粗略指数类比。两者对应不同攻击模型、硬件和电路成本,不能把理论查询指数直接视为相同现实安全性。
误区四:SM4 必须立即停用
SM4 面临 Grover 搜索分析,但没有受到 Shor 式结构性攻击。是否迁移应依据数据寿命、合规要求和实际量子资源评估。
误区五:SHA-256 会被量子计算机瞬间碰撞
量子碰撞搜索仍需要巨量资源。原像、碰撞、第二原像也具有不同复杂度,不能混为一谈。
误区六:只要使用 PQC,低熵密码就安全
PQC 保护的是公钥密钥建立和签名,不会提高用户口令熵,也无法阻止钓鱼、木马和凭据填充。
本节小结:量子安全分析不能只看指数除以二。算法目标、Oracle 成本、串行深度、量子存储、纠错开销和业务数据寿命共同决定真实风险。
九、工程上应该怎么选
9.1 新建长期安全系统
如果系统需要保护长期高价值数据,可以优先采用:
- AES-256 作为对称加密;
- SHA-384、SHA-512 或合适的 SHA-3 参数提供更高余量;
- ML-KEM 建立共享密钥;
- ML-DSA 或 SLH-DSA 提供后量子签名;
- 标准 AEAD 模式提供机密性与完整性。
这不是说 AES-128 已不安全,而是新系统可以用较低迁移成本获得更长期的参数余量。
9.2 已有系统
已有系统应先盘点:
- 数据需要保密多久;
- 当前算法与参数;
- 性能是否允许更高参数;
- 硬件加速与协议支持;
- 是否受到行业合规约束;
- 更换参数会不会破坏旧设备兼容。
不要因为看到"量子安全位数减半"就绕过标准自行修改算法。
9.3 迁移优先级
通常应优先替换受 Shor 算法结构性威胁的公钥算法,再根据长期安全需求调整对称与哈希参数。
text
第一优先级:RSA、DH、ECDH、ECDSA、SM2 等公钥算法
第二优先级:长期数据使用更高对称密钥与哈希参数
第三优先级:持续评估实现、协议和硬件的量子资源模型
本节小结:工程迁移应先解决传统公钥密码的结构性风险,再为长期数据选择更保守的对称与哈希参数。标准化实现和密码敏捷性比自行魔改算法更重要。
十、总结
Grover 算法对称密码分析的核心公式是:
N = 2 k N=2^k N=2k
O ( N ) ⟶ O ( N ) = O ( 2 k / 2 ) O(N)\longrightarrow O(\sqrt N)=O(2^{k/2}) O(N)⟶O(N )=O(2k/2)
但从理论公式到现实攻击,中间还隔着:
- 完整可逆密码电路;
- Oracle 构造;
- 辅助量子比特;
- 串行电路深度;
- 量子纠错;
- 设备并行与成本;
- 明密文验证条件。
因此,本文需要掌握的结论是:
- Grover 为无结构搜索提供平方级加速;
- AES、SM4 面临密钥穷举加速,但不是结构性失效;
- AES-256 为长期量子安全场景提供更保守余量;
- AES-128 没有因为 PQC 标准发布而立即失效;
- SM4 标准只有 128 比特密钥,不能自行制造 SM4-256;
- 哈希原像与碰撞问题的量子复杂度不同;
- 低熵口令仍然是更现实的安全短板;
- Shor 与 Grover 必须分开评估,不能统一概括为"安全位数减半"。
本节小结:Grover 算法降低了对称搜索的理论复杂度,却没有让 AES、SM4 和哈希函数一夜失效。真正合理的应对是提高长期参数余量、评估真实量子资源,并优先迁移受 Shor 威胁的公钥密码。