Shor 算法求解离散对数问题详解¶
Shor 算法不仅能够高效分解整数,还可以在多项式时间内求解离散对数问题(Discrete Logarithm Problem, DLP)——而这正是 Diffie-Hellman 密钥交换、DSA 数字签名和椭圆曲线密码(ECC)安全性的数学基础。本文详细分析 Shor 算法在离散对数上的应用。
问题定义¶
离散对数问题¶
给定素数 \(p\),乘法群 \(\mathbb{Z}_p^*\) 的生成元(generator)\(g\),以及元素 \(h \in \mathbb{Z}_p^*\),求整数 \(x\) 使得:
记作 \(x = \log_g h\)。由于 \(g\) 是生成元,其阶恰为 \(p - 1\),因此 \(x\) 在模 \(p-1\) 意义下存在且唯一。以下记群阶 \(n = p - 1\)。
为什么重要¶
Diffie-Hellman 密钥交换:双方公开 \(g^a\) 与 \(g^b\),共享密钥为 \(g^{ab} \bmod p\);其安全性基于从 \(g^a\) 与 \(g^b\) 计算 \(g^{ab}\) 的困难性
DSA 数字签名:签名验证依赖 DLP 的困难性
椭圆曲线密码(ECC):椭圆曲线离散对数问题(ECDLP),对一般曲线目前没有经典亚指数算法
经典最优算法:
一般 DLP:数域筛法(Number Field Sieve),亚指数时间 \(O\!\left(e^{(c + o(1))(\log p)^{1/3}(\log \log p)^{2/3}}\right)\),其中 \(c = (64/9)^{1/3} \approx 1.92\)
ECDLP:Pollard rho 算法,\(O(\sqrt{n})\),对 256 位曲线约为 \(O(2^{128})\)
Shor 算法求解离散对数¶
核心思想¶
Shor 的 DLP 算法将离散对数 \(x = \log_g h\) 归约为隐藏子群问题(Hidden Subgroup Problem, HSP):考察函数 \(f(a, b) = g^a h^b \bmod p\)。由 \(h = g^x\) 可知 \(f(a, b) = g^{a + xb \bmod n}\),它在一个二维格的每个陪集上取常值、在不同陪集上取不同值;求出这个隐藏的格,等价于求出 \(x\)。量子傅里叶变换(QFT)正是从这类"陪集常值函数"中提取隐藏子群的标准工具。
算法步骤¶
第一步:量子叠加制备
制备两个寄存器的均匀叠加态:
(归一化是对的:\((p-1)^2 = n^2\) 个基态各带振幅 \(1/n = 1/\sqrt{n^2}\)。)每个寄存器有 \(\lceil\log_2 n\rceil = \lceil\log_2(p-1)\rceil\) 个量子比特。
第二步:模幂计算
计算 \(f(a, b) = g^a h^b \bmod p\),将结果写入第三个寄存器:
关键性质:由 \(h = g^x\) 得 \(g^a h^b = g^a \cdot g^{xb} = g^{a + xb}\),且 \(g\) 的阶为 \(n\),故 \(g^u = g^v\) 当且仅当 \(u \equiv v \pmod n\)。于是 \(f(a,b)\) 只依赖于 \((a + xb) \bmod n\):对每个 \(r \in \mathbb{Z}_n\),\(f(a, b) = g^r\) 当且仅当 \(a + xb \equiv r \pmod n\),其解集为
(把每个 \(b\) 代入解出唯一的 \(a\),共 \(n\) 个解。)这些解集是一个固定子群的平移:集合
对加法封闭(两个满足同余式的元素之和仍满足),是 \(\mathbb{Z}_n \times \mathbb{Z}_n\) 的子群,而解集恰为陪集 \(\Lambda + (r, 0)\)。\(f\) 在 \(\Lambda\) 的每个陪集上取常值、在不同陪集上取不同值——\(f\) 隐藏了子群 \(\Lambda\),而 \(\Lambda\) 由 \(x\) 完全决定。
第三步:量子傅里叶变换(QFT)
对前两个寄存器施加二维 QFT:
随后测量前两个寄存器。测量结果 \((c, d)\) 以均匀概率满足线性关系(完整推导见下文"理论推导"一节)
于是当 \(c\) 与 \(n\) 互素时,一次解出 \(x \equiv c^{-1} d \pmod{n}\)。
第四步:经典后处理
从测量结果 \((c, d)\) 计算 \(x \equiv c^{-1} d \pmod{n}\)(用扩展欧几里得算法求 \(c^{-1}\))
若 \(\gcd(c, n) > 1\),将同余式两边除以 \(\gcd(c,n)\) 得到 \(x\) 模 \(n/\gcd(c,n)\) 的信息,多次测量收集多个方程后用中国剩余定理(Chinese Remainder Theorem, CRT)合并
理论推导¶
测量分布的完整推导¶
我们对第三步做完整计算。由关键性质,把 \(|\psi_1\rangle\) 按第三个寄存器的取值分组:
内层括号正是陪集 \(\Lambda + (r, 0)\) 上 \(n\) 个基态的均匀叠加。对前两个寄存器施加 \(\text{QFT}_n \otimes \text{QFT}_n\),由线性性,基态 \(|c\rangle|d\rangle|g^r\rangle\) 的振幅为
其中我们把与 \(b\) 无关的因子 \(e^{2\pi i rc/n}\) 提出求和号。内层是以 \(\omega^{d - xc}\)(\(\omega = e^{2\pi i /n}\))为公比的几何级数,用等比求和公式:
若 \(d \equiv xc \pmod{n}\),每项都是 1,级数等于 \(n\);
若 \(d \not\equiv xc \pmod{n}\),则 \(e^{2\pi i(d - xc)/n} \neq 1\) 而 \(\left(e^{2\pi i(d - xc)/n}\right)^n = e^{2\pi i(d - xc)} = 1\),级数等于 \(\frac{1 - 1}{e^{2\pi i(d-xc)/n} - 1} = 0\)。
因此振幅非零当且仅当 \(xc \equiv d \pmod n\);非零时其模为 \(n / n^2 = 1/n\)。对 \(r\) 求和(\(r\) 只出现在相位因子中,不影响模长),测得满足 \(xc \equiv d\) 的 \((c, d)\) 的概率为 \(n \cdot (1/n)^2 = 1/n\)。满足条件的 \((c,d)\) 恰有 \(n\) 个(每个 \(c\) 唯一对应 \(d = xc \bmod n\)),概率总和为 1。结论:
特别地,\(c\) 在 \(\mathbb{Z}_n\) 上均匀分布。
格结构分析¶
\(\mathbb{Z}_n \times \mathbb{Z}_n\) 中满足 \(a + xb \equiv 0 \pmod{n}\) 的点集 \(\Lambda\) 也可以看成 \(\mathbb{Z}^2\) 中的二维格(lattice),它的一组基为:
验证:\((n, 0)\):\(n + x \cdot 0 = n \equiv 0 \pmod{n}\) ✓;\((-x, 1)\):\(-x + x \cdot 1 = 0 \equiv 0 \pmod{n}\) ✓。反过来,任一整系数组合 \(m(n, 0) + l(-x, 1) = (mn - lx,\; l)\) 都满足 \((mn - lx) + x \cdot l \equiv 0 \pmod n\),且这样的组合互不相同地覆盖了 \(\Lambda\) 的全部 \(n\) 个元素(\(l = b\) 取遍 \(\mathbb{Z}_n\),每个 \(b\) 给出唯一的 \(a = -lx \bmod n\)),故上述两向量确为 \(\Lambda\) 的基。基中向量 \((-x, 1)\) 直接包含未知量 \(x\)——求出 \(\Lambda\) 就等于求出 \(x\)。
上一节的测量结果集 \(\{(c,\, xc \bmod n)\}\) 恰是 \(\Lambda\) 的(模 \(n\) 意义下的)对偶格(dual lattice)\(\Lambda^* = \{(c, d) : ac + bd \equiv 0 \pmod n,\ \forall (a,b) \in \Lambda\}\):条件对基向量 \((n, 0)\) 自动成立(\(nc \equiv 0\)),对 \((-x, 1)\) 给出 \(-xc + d \equiv 0\),即 \(d \equiv xc\)——与推导结果完全一致。这正是隐藏子群问题中"QFT 采样得到对偶格元素"的一般规律。
成功概率与不可逆情形的处理¶
\(c\) 均匀分布于 \(\mathbb{Z}_n\),故单次测量得到 \(\gcd(c, n) = 1\)(从而 \(c^{-1}\) 存在、一次解出 \(x\))的概率为 \(\phi(n)/n\),其中 \(\phi\) 为欧拉函数(Euler's totient function)。注意 \(n = p - 1\) 是偶数(\(p\) 为奇素数),必然是合数,因此 \(\phi(n)/n = \prod_{\ell \mid n} \left(1 - \frac{1}{\ell}\right)\) 严格小于 1;例如 \(n = 12 = 2^2 \cdot 3\) 时 \(\phi(12)/12 = \frac{1}{2} \cdot \frac{2}{3} = \frac{1}{3}\)。
若测得 \(g_0 = \gcd(c, n) > 1\),也不必丢弃这次结果。同余式 \(xc \equiv d \pmod n\) 意味着 \(n \mid d - xc\);由于 \(g_0 \mid n\) 且 \(g_0 \mid c\)(从而 \(g_0 \mid xc\)),可得 \(g_0 \mid d\)。于是写 \(c = g_0 c'\)、\(n = g_0 n'\)、\(d = g_0 d'\),同余式两边除以 \(g_0\) 得到合法的同余式
此时 \(\gcd(c', n') = 1\),解得 \(x \bmod n'\)。多次测量得到 \(x\) 模 \(n\) 的各个"分量"后,用中国剩余定理合并即可恢复 \(x \bmod n\)。
数值实例:p = 13,g = 2,h = 11¶
取 \(p = 13\),则 \(n = 12\)。\(2\) 是 \(\mathbb{Z}_{13}^*\) 的生成元(逐一计算 \(2^1, 2^2, \ldots, 2^{12} = 2, 4, 8, 3, 6, 12, 11, 9, 5, 10, 7, 1\),阶为 12)。设隐藏的 \(x = 7\),则 \(h = g^7 = 2^7 = 128 \equiv 11 \pmod{13}\)。
量子部分给出的每次测量结果是满足 \(7c \equiv d \pmod{12}\) 的均匀随机对 \((c, d)\)。下表列出几组典型结果与经典后处理:
测得 \(c\) |
对应 \(d = 7c \bmod 12\) |
\(\gcd(c, 12)\) |
后处理 |
|---|---|---|---|
1 |
7 |
1 |
\(x \equiv 1^{-1} \cdot 7 = 7 \pmod{12}\) ✓ |
5 |
11 |
1 |
\(5^{-1} \equiv 5\)(\(5 \times 5 = 25 \equiv 1\)),\(x \equiv 5 \times 11 = 55 \equiv 7\) ✓ |
7 |
1 |
1 |
\(7^{-1} \equiv 7\)(\(7 \times 7 = 49 \equiv 1\)),\(x \equiv 7 \times 1 = 7\) ✓ |
11 |
5 |
1 |
\(11^{-1} \equiv 11\)(\(11 \times 11 = 121 \equiv 1\)),\(x \equiv 11 \times 5 = 55 \equiv 7\) ✓ |
2 |
2 |
2 |
除以 2:\(x \equiv 1 \pmod 6\),即 \(x \in \{1, 7\}\),需再测一次合并 |
单次测量直接成功的概率为 \(\phi(12)/12 = 4/12 = 1/3\)(\(c \in \{1, 5, 7, 11\}\) 时可逆);即便测到不可逆的 \(c\),也能像最后一行那样缩小候选范围,再测一次即可确定。最终验证:\(2^7 = 128 = 9 \times 13 + 11 \equiv 11 \pmod{13}\) ✓。
对椭圆曲线的推广¶
Shor 算法可以直接推广到椭圆曲线离散对数问题(ECDLP):
给定椭圆曲线 \(E\),基点 \(G\),点 \(H = xG\),求 \(x\)。
量子电路修改:
模幂运算替换为椭圆曲线点乘:\(|a\rangle|b\rangle|0\rangle \to |a\rangle|b\rangle|aG + bH\rangle\)
QFT 在椭圆曲线群的阶 \(n\) 上进行
其余步骤完全相同
复杂度:\(O(\text{poly}(\log n))\) 量子门,与经典 \(O(\sqrt{n})\) 相比为指数加速。
与整数分解的关系¶
Shor 的两个算法共享同一个量子内核,但并不是一个归约为另一个。
一方面,整数分解被归约为一维周期查找:给定 \(a\) 与 \(N\),函数 \(x \mapsto a^x \bmod N\) 以阶 \(r\) 为周期,求出 \(r\) 即可按本文因数分解篇的方式分解 \(N\)。另一方面,离散对数是二维周期查找:函数 \(f(a, b) = g^a h^b\) 在二维格 \(\Lambda\) 的每个陪集上取常值,求出 \(\Lambda\) 的基即得 \(x\)。
两者都可以纳入阿贝尔隐藏子群问题的统一框架:给定群 \(G\) 与在子群 \(H\) 的每个陪集上取常值、不同陪集取不同值的函数 \(f\),求 \(H\);解法是对 \(f\) 的定义域做量子傅里叶采样,从对偶对象中读出 \(H\)。本教程系列中的 BV 算法(\(G = \mathbb{Z}_2^n\),线性结构)、Simon 算法(\(G = \mathbb{Z}_2^n\),异或周期)、求阶(\(G = \mathbb{Z}\))、离散对数(\(G = \mathbb{Z} \times \mathbb{Z}\))都是这一框架的实例。
反方向的归约——把离散对数归约为整数分解——目前没有已知的多项式时间算法。两个问题在经典模型下互不归约,却在量子模型下被同一套傅里叶采样技术一并击破。
对密码学的影响¶
密码系统 |
依赖问题 |
Shor 量子威胁 |
|---|---|---|
RSA |
整数分解 |
\(O((\log N)^3)\) 时间破解 |
Diffie-Hellman |
DLP |
\(O((\log p)^3)\) 时间破解 |
DSA |
DLP |
\(O((\log p)^3)\) 时间破解 |
ECC |
ECDLP |
\(O((\log n)^3)\) 时间破解 |
所有主流公钥密码系统都受 Shor 算法威胁。ECC 虽然经典安全性更高(256 位 ECC ≈ 3072 位 RSA),但对量子攻击同样脆弱。
复杂度分析¶
步骤 |
量子门数 |
|---|---|
模幂运算 \(g^a h^b\) |
\(O((\log p)^3)\) |
二维 QFT |
\(O((\log p)^2)\) |
经典后处理 |
\(O((\log p)^3)\) |
总计 |
\(O((\log p)^3)\) |
对比经典:
方法 |
复杂度 |
|---|---|
数域筛法(DLP) |
\(O(e^{c(\log p)^{1/3}(\log\log p)^{2/3}})\) |
Pollard rho(ECDLP) |
\(O(\sqrt{n})\) |
Shor(量子) |
\(O(\text{poly}(\log p))\) |
总结¶
Shor 算法对离散对数的求解,连同整数分解,构成了对所有主流公钥密码系统的统一量子威胁。对椭圆曲线密码的威胁尤其值得关注:ECC 被广泛部署在移动设备、IoT 和区块链中,其经典安全边际远低于 RSA,因此对量子攻击更加脆弱。这也是后量子密码标准化的紧迫动因之一。
参考文献:
Shor, P. W. (1994). Algorithms for quantum computation: discrete logarithms and factoring. FOCS 1994.
Proos, J., & Zalka, C. (2003). Shor's discrete logarithm quantum algorithm for elliptic curves. Quantum Information & Computation, 3(4), 317-344.
NIST (2024). Post-Quantum Cryptography Standardization. https://csrc.nist.gov/projects/post-quantum-cryptography
Roetteler, M., Naehrig, M., Svore, K. M., & Lauter, K. (2017). Quantum resource estimates for computing elliptic curve discrete logarithms. ASIACRYPT 2017.
返回目录:量子计算算法教程系列