Shor 算法深入:数论基础、QFT 与 RSA 威胁量化

深入 Shor 算法的工程原理:因数分解与阶(order)的转化、模幂运算的量子电路、量子傅里叶变换(QFT)与相位估计在 Shor 中的角色、经典后处理(连分数)、复杂度分析、对 RSA 的威胁量化(密钥长度 vs 量子资源)、以及实现路线与局限性。

引言

Shor 算法是「量子优势」的旗帜——1994 年它证明了量子计算机能以多项式时间分解 RSA 的大整数因数,直接动摇现代公钥加密。本文把 Shor 算法从「听说过」讲到「拆得开」:先讲核心转化——因数分解如何变成「求阶(order)」问题,再讲求阶的量子电路(模幂运算),然后深入量子傅里叶变换(QFT)与相位估计在求阶里的作用(这是 Shor 的引擎),接着讲经典后处理(连分数提取阶、由阶得到因数),然后是复杂度分析(为什么是多项式)、对 RSA 的威胁量化(N 位 RSA 需要多少量子比特/门),最后是实现路线(当前记录、资源需求)与局限。

前置:/quantum-algorithms-shor-grover/(Shor 入门)、/quantum-algorithms-advanced/(QFT 与相位估计)、/quantum-qubit-gates-basics/(量子门基础)。


目录


1. Shor 的核心洞察:因数分解变求阶

分解一个整数 N = p×q,Shor 用了一个巧妙转化:

如果知道某个 a 关于 N 的「阶」r(最小正整数使 a^r ≡ 1 mod N):
  a^r - 1 = (a^(r/2) - 1)(a^(r/2) + 1) ≡ 0 (mod N)
  → 若 r 偶数且 a^(r/2) ≢ ±1 (mod N):
    gcd(a^(r/2) - 1, N) 与 gcd(a^(r/2) + 1, N) 是 N 的非平凡因数!

例:N=21,取 a=2,阶 r=12(2^12 ≡ 1 mod 21)
  2^6 = 64 ≡ 1 mod 21,64 ≢ ±1
  gcd(64-1, 21) = gcd(63, 21) = 21?不行
  → 换 a 再试(随机选 a,成功概率 ≥ 1/2)

算法骨架:

1. 随机选 a(1 < a < N)
2. 求 gcd(a, N):若 > 1 → 已找到因数,结束
3. 用量子电路求 a 的阶 r
4. r 奇数或 a^(r/2) ≡ ±1 → 换 a 重试
5. 否则 gcd(a^(r/2) ± 1, N) → 得因数

关键:第 3 步「求阶」是经典困难的(没有快速经典算法),Shor 用量子电路在多项式时间内完成——这就是全部的「魔法」。

心智:Shor = 「因数分解 → 求阶」的转化 + 量子求阶电路——分解大数只是副产品,真正的量子优势在「求阶」。


2. 求阶问题:为什么它是关键

求阶问题的正式定义:

输入:整数 N(合数)、a(与 N 互素)
输出:最小正整数 r,使得 a^r ≡ 1 (mod N)

经典求阶有多难:

- 暴力:试 r=1,2,3,... → 指数时间
- 最优经典(数域筛):次指数时间(e^((log N)^(1/3)))
- 求阶属于「无已知多项式经典算法」的问题族
- 量子:多项式时间(Shor)→ 求阶是「量子优势」的经典候选

为什么量子能快:

经典:一次试一个 r(串行搜索)
量子:把「所有可能的 r 对应的函数值」编码进叠加态
   → 一次操作同时「探测」所有 r
   → QFT 把叠加「干涉」出周期 r

求阶的周期性视角:

函数 f(x) = a^x mod N 是周期的,周期 = r:
  a^0, a^1, ..., a^(r-1) 循环
→ 求阶 = 找 f 的周期
→ 量子算法:叠加态里放大量 x → QFT 提取周期

心智:求阶 = 找 a^x mod N 的周期——经典串行搜指数慢,量子叠加一次探测所有 x、QFT 干涉出周期,这就是多项式时间的来源。


3. 量子求阶电路:模幂与叠加

量子求阶电路的两个寄存器:

寄存器 1:控制寄存器(2n 个量子比特,n = N 的位数)
  初始化均匀叠加:|0⟩ → Σ|x⟩

寄存器 2:工作寄存器(n 个量子比特)
  初始化 |1⟩,存储 a^x mod N 的结果

电路核心操作:
  U_a: |x⟩|y⟩ → |x⟩|y · a^x mod N⟩
  → 对叠加中的每个 x 同时计算 a^x mod N

模幂运算的量子实现:

a^x mod N 拆成「受控模乘法」的级联:
  a^x = a^(x0·2^0 + x1·2^1 + ... + xm·2^m)
  → 每步 = 受控乘 a^(2^k) mod N

电路深度:
  模乘法用「模加法 + 移位」实现(量子加法器)
  总门数约 O(n³),n = 比特数
  → 这是 Shor 电路里「最贵」的部分

核心困难:模乘法的量子电路(可逆计算)

- 需要可逆:量子计算不可「丢弃」信息
- 模乘法电路:加法器 + 比较器 + 减法器的可逆组合
- 使用 ancilla(辅助比特)做临时存储
- 电路深度与 n³ 成正比 → 大 n 的门数可观

心智:求阶电路 = 控制寄存器叠加 + 工作寄存器存 a^x mod N——模幂拆成受控模乘法级联,可逆模加法器是电路主体,门数 O(n³)。


4. 量子傅里叶变换:相位到频率

QFT 是 Shor 的「读出引擎」——把叠加态里的周期变成可测量的频率:

QFT 的作用:
  输入:叠加态 Σ|x⟩(含周期性分布)
  输出:傅里叶基下的分布(峰值在「周期对应的频率」)
  → 测量得到与周期 r 相关的值

数学本质:
  QFT 把 |x⟩ → (1/√N) Σ_y ω^(xy)|y⟩
  (ω = e^(2πi/N),相当于 DFT 的量子版本)

QFT 电路:

QFT 由 H + 受控相位门组成:
  H on 第 k 位 + C-R_z(π/2^k) 级联
  深度 O(n²),n = 比特数
  → 相比模幂的 O(n³),QFT 便宜得多

为什么 QFT 有用:

- 相位估计的核心:把「酉算符的本征相位」映射到可测量位
- Shor 里:a^x mod N 的「循环」在 QFT 后出现尖峰
- 尖峰位置 ≈ m/r(m 与 r 相关)→ 下一步用连分数提取 r

QFT 与经典 FFT 的区别:

经典 FFT:输入 N 个数字,输出 N 个频率分量(O(N log N))
量子 QFT:输入叠加态,一次操作完成变换(O((log N)²) 门)
  → 指数「加速」来自把数据放进叠加态 + 一次变换

心智:QFT 把周期信号变成频率尖峰——模幂把「阶」藏在叠加里,QFT 一次干涉把它显形,尖峰位置 m/r 是下一步的钥匙。


5. 相位估计:读出阶的分数近似

相位估计(QPE)是 QFT 的「应用场景」——Shor 用它读出阶:

QPE 的问题:
  给定酉算符 U 和本征态 |u⟩(U|u⟩ = e^(2πiφ)|u⟩)
  估计相位 φ(0 ≤ φ < 1)

Shor 里的用法:
  U = 乘 a 的算符(U|x⟩ = |a·x mod N⟩)
  本征态含「a^x mod N 的循环」
  → 相位 φ ≈ m/r → 由 φ 恢复 r

QPE 电路:

控制寄存器(t 个比特):|0⟩ ⊗^t → 叠加
工作寄存器:|u⟩(本征态)
受控-U^(2^k) 级联:把相位信息「写进」控制寄存器的相对相位
最后 QFT⁻¹:把相位还原成可读二进制数
→ 测量得到 2^t · φ 的近似

精确度:

- t 个控制比特 → 相位精度约 1/2^t
- t = 2n + 1 位控制比特 → 以高概率得到精确的 m/r
- 测量结果 m ≈ 2^(2n+1) · φ → 求 m/(2^(2n+1)) 的连分数收敛

为什么需要「足够多」控制比特:

- 相位估计精度不够 → 连分数提取不到准确 r
- 控制比特多 = 电路宽 = 资源成本
- 权衡:2n+1 是经典理论推荐(成功率高、资源可控)

心智:QPE 把「本征相位」变成二进制读数——Shor 用控制寄存器存相位、QFT⁻¹ 读出 m/r 近似,t=2n+1 个控制比特保证精度。


6. 经典后处理:连分数与提取因数

测量出 m ≈ 2^(2n+1)·φ 后,剩下的都是经典计算:

1. 求连分数展开:m / 2^(2n+1)
   的收敛分数 p/q 中,找 q = 阶 r(成功的那个)
2. 检查:a^r ≡ 1 mod N?是 → r 正确
3. 由 r 得因数:
   r 偶且 a^(r/2) ≢ ±1 → gcd(a^(r/2) ± 1, N)
4. 失败 → 换 a 重试(成功概率 ≥ 1/2)
# 连分数提取阶(示意)
def order_from_measurement(m, M, a, N):
    for p, q in continued_fraction(m, M):   # 连分数收敛序列
        if pow(a, q, N) == 1:               # 验证是阶
            return q
    return None

# 由阶得因数
def factor_from_order(a, r, N):
    if r % 2 == 0:
        g1 = math.gcd(pow(a, r//2, N) - 1, N)
        g2 = math.gcd(pow(a, r//2, N) + 1, N)
        for g in (g1, g2):
            if 1 < g < N: return g
    return None

成功率分析:

随机选 a:
  - gcd(a, N) > 1 → 直接找到因数(~小概率)
  - 阶提取成功 → 需要 r 偶且 a^(r/2) ≢ ±1
  - 随机 a 的成功概率 ≥ 1/2 → 几次重试就够
→ 期望 O(1) 次重复,整体多项式

经典部分的计算量:

- 连分数:O(log N) 步,几乎免费
- 验证 a^q ≡ 1 mod N:快速幂 O(log q),也便宜
- 经典部分不是瓶颈——量子电路才是

心智:后处理 = 连分数提取阶 → 验证 a^r≡1 → gcd 得因数——随机 a 成功概率 ≥½、几次重试即得,经典部分近乎免费。


7. 复杂度分析:为什么是多项式

Shor 的整体复杂度(n = N 的比特数):

电路规模(门数):O(n³)  (模幂 O(n³) + QFT O(n²) + 其他)
量子比特数:     O(n)    (控制 2n + 工作 n + 辅助)
经典后处理:    O(n²)     (连分数 + 幂运算)
→ 总时间多项式:O(n³ log n log log n)

对照经典因数分解:

经典数域筛(GNFS):次指数 L(n) = exp(O(n^(1/3) log²/³ n))
  n 增大 → 经典时间超多项式增长
量子 Shor:多项式 O(n³)
  n 增大 → 时间多项式增长

关键差距:n=2048 位 RSA:
  经典:百万年级(推测)
  量子:千万级门(当前估计,仍难但原则可行)

为什么「多项式 vs 次指数」是本质:

- 多项式:输入翻倍 → 时间翻常数倍
- 次指数/指数:输入翻倍 → 时间暴涨
→ 大 n 下两者拉开数量级差距
→ 这就是「量子威胁」的技术根源

心智:Shor 整体 O(n³) 多项式、经典 GNFS 次指数——输入越大差距越悬殊,这就是 RSA 受量子威胁的技术根源。


8. RSA 威胁量化:比特数对量子资源

要分解一个 N 位 RSA 模数,Shor 需要多少资源:

RSA 模数(位)逻辑量子比特门数(T 门,估计)电路深度(推测)
2048约 3000~5000约 10^10~10^12天~周级(乐观估计)
3072约 5000+更高更长
4096约 7000+更高更长

几个「现实约束」:

- 上述是「逻辑量子比特」:还需大量物理比特做纠错
  (表面码每个逻辑比特 × 数十~数百物理比特)
- T 门在容错架构里极贵(需要魔术态蒸馏)
- 当前记录:分解的最大数远小于 RSA(如 N=21 已完整演示)
- 实验路线:2030 年代容错原型 → 2040 年代威胁现实化(推测)

量化判断:

- 2048 位 RSA:目前「工程不可行」但「原则可行」
- 短期威胁:低(容错机器还没到)
- 长期威胁:确定性(多项式算法 + 硬件进展)
- 结论:现在就该规划「后量子迁移」——等威胁落地再动就晚了

量子资源优化的研究方向:

- 优化模幂电路(减少 T 门/比特)
- 用「近似 QFT / 并行化」降深度
- 专用硬件架构(针对 Shor 电路)

心智:威胁量化 = 逻辑比特数千级 + 门数 10^10 起 + 纠错放大数十倍——当前不可行但原则可行,长期确定威胁,「现在就迁移」是安全界的共识。


9. 实现路线与局限

Shor 的实验路线(从小数到大数):

阶段 1:演示性实现(N=15, 21, 35...)——已大量完成
  用「已知周期」的简化电路(非通用求阶)
阶段 2:通用求阶电路的小规模验证——进行中
阶段 3:容错机器上运行大 RSA——远期(2030s+)

当前记录的现实:

- 已分解的最大 N 很小(两位/三位数)
- 多数实验「利用已知答案简化电路」(作弊式)
- 真正的「通用 Shor」需要容错(噪声下模幂电路太长)
- 这是「逻辑门精度 + 纠错」工程问题,不是算法问题

Shor 的局限:

- 只针对「特定问题族」(求阶/因数分解)
- 需要大规模容错机器(NISQ 跑不了大 Shor)
- 多项式但常数不小:电路工程复杂
- 量子资源估算仍有不确定性(降噪/架构进展在变)

对密码学的影响(已发生):

- 只要 Shor「原则可行」→ RSA/ECC 长期不安全(无论硬件多快)
- 后量子密码(格/编码/MQ)——见 [[quantum-post-quantum-cryptography]]
- 迁移窗口:数据有保密期(先记录的密文,等量子解密)
  → 「现在记录、以后解密」是现实威胁

心智:Shor 实验从小数到容错大数,路线清楚但硬件未到——真正的影响是「原则可行已改变密码规划」,迁移是现在的事。


10. 速查表

全篇速查:

主题结论
洞察因数分解 → 求阶问题
求阶找 a^x mod N 的周期
电路控制叠加 + 模幂级联
模幂受控模乘法,门 O(n³)
QFT周期 → 频率尖峰
QPE相位 → 二进制读数
后处理连分数提取阶 + gcd 得因数
复杂度整体 O(n³) 多项式
威胁2048 位需数千逻辑比特 + 10^10 门
结论原则可行 → 现在就迁移

一句话记忆:Shor 的核心洞察是「因数分解变求阶」——模幂电路把 a^x mod N 的周期编码进叠加(O(n³) 门),QFT/QPE 一次干涉读出相位 m/r,经典连分数提取阶、gcd 得因数;整体多项式 O(n³) 对经典次指数,2048 位 RSA 需数千逻辑比特加 10^10 量级门——当前不可行但原则可行,所以「现在记录以后解密」的现实威胁已经改变密码规划,迁移后量子密码是现在的事。


延伸阅读

  • /quantum-algorithms-shor-grover/ — Shor 与 Grover 的入门直觉
  • /quantum-algorithms-advanced/ — QFT 与量子相位估计(Shor 引擎)
  • /quantum-qubit-gates-basics/ — 量子门与电路基础
  • /quantum-error-correction/ — 容错:跑大 Shor 的前提
  • /quantum-post-quantum-cryptography/ — 量子威胁的密码学对策
  • 安全专题 — 密码学迁移与合规实践

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「quantum」更多文章

  1. 量子优势的实用评估:NISQ 应用、成本权衡与路线图
  2. 哈密顿量模拟:量子模拟引擎、Trotter 分解与化学应用
  3. 量子随机数生成:真随机源、QRNG 物理实现与应用