量子计算机距离攻破 RSA-2048 还有多远(Part 1)

系列导航 | 量子计算机距离攻破 RSA-2048 还有多远

在当今数字世界中,RSA‑2048 与 ECC 等经典公钥密码是最广泛应用的加密标准,支撑着网络安全、金融交易和隐私保护的底层信任。然而,这一基石正面临量子计算的潜在威胁。理论上,量子计算机能够以远快于经典计算机的速度分解大整数和离散对数求解,从而在短时间内破解 RSA 和 ECC 加密。这一前景既令人兴奋,也令人担忧。

问题在于:量子计算机的发展究竟到了什么阶段?有人乐观地认为经典公钥密码的“倒计时”已经开始;也有人怀疑,受限于制造难度,真正可用的量子计算机还遥遥无期。市面上相关论调不一,往往乐观或悲观,但核心疑问始终萦绕:量子计算机距离破解经典公钥密码还有多远?

我们将尝试以拆解和分析量子计算机的制造瓶颈与突破希望方式回答这一问题。 本系列分为三篇文章:

  1. 🌟 量子计算机为什么能加速计算?
  2. 量子计算机是怎样构建出来的?
  3. 构建能破解 RSA 2048 的量子计算机,还有哪些挑战?

首先,为帮助读者理解量子计算的原理,我们会介绍必要的量子力学概念,如量子态与纠缠,并解释为什么量子计算机能够在特定问题上实现加速;其次,为了让大家对量子计算机的形态与实现路径有直观认识,我们将解析其基本构造,并重点拆解目前发展最快、工程上最具可行性的超导量子计算机的内部结构;最后,我们会以超导量子计算机为例,深入分析其在迈向破解经典公钥密(RSA‑2048) 的过程中仍面临的瓶颈,以及这些问题背后潜在的解决希望。

我们的结论是:科学层面已不存在“死胡同”,真正的挑战集中在工程实现。冷却、控制、布线、能耗与量子纠错的实时实现仍是巨大难关,但随着规模扩展与模块化设计的推进,这些问题有望逐步缓解。综合当前趋势,我们认同业界普遍预测:百万量子比特级量子计算机极可能在 203X 年出现,届时经典公钥密码的防线将大概率被攻破。这也意味着,后量子迁移工作必须尽早启动。一方面,“先存后解”(Store Now, Decrypt Later)攻击模式已经现实存在,敏感数据即使今天被窃取,也可能在未来被量子计算解密;另一方面,密码体系迁移本身是一个涉及算法替换、系统改造、标准合规和生态适配的庞大工程,通常需要多年才能完成。若等到量子计算机真正快要问世时才行动,往往已为时过晚。

量子计算机为什么能加速计算?

量子计算机的核心优势在于其利用了量子叠加性量子纠缠性。为了理解其对计算的加速,首先需要了解量子物理的基础特性——叠加态 、 坍缩和量子纠缠。

注:为了让不熟悉数学或物理的读者也能理解,本部分会尽量不使用数学公式,这样做可能会带来一些细节上的不准确,但不会影响整体理解。对于具备一定的数学基础的读者,可以对照附录1一起阅读,附录以数学形式对叠加态,坍缩以及纠缠等现象作了更直观的说明。

叠加态与坍缩

在经典物理中,系统的状态(例如位置、速度)在任意时刻都是确定的;而在量子力学中,粒子的情况则不同。一个粒子的某一物理量(如位置、动量、自旋、能级等)在未被测量之前,并不处在某一个具体的值,而是一个同时包含所有可能的结果的叠加态。只有在测量时,这个叠加态才会按照某种概率瞬间变成某个固定的值。

举一个简单的例子:设想有两个小盒子,粒子只能出现在其中一个盒子里。按照经典的直觉,它要么在左边的盒子里,要么在右边的盒子里,永远不会同时在两个地方。但在量子实验中发现,在没有测量之前,粒子并不是已经待在左边或者右边,而是处在一种同时“包含左和右可能性”的状态。只有当我们真正去测量时,粒子才会呈现为在其中一个盒子里。这个过程叫做坍缩。坍缩时,每一个可能的状态都会对应一个概率(概率需满足所有可能性的总和为 1,具体的概率分布是叠加态的性质之一)。例如,一个粒子可能处在如下的叠加态:

  • 出现在左边的概率为 70%
  • 出现在右边的概率为 30%

这听起来似乎难以置信,但叠加态的存在早已通过实验得到验证,一个经典的例子就是电子的双缝干涉实验,感兴趣的读者可以进一步查阅相关实验。

图:经典物理状态与量子叠加态的对比,量子叠加态的颜色代表其在测量时出现的概率。

基于这一原理,量子计算机从物理系统中选择两个可以明确区分的结果来作为信息的基本单位。例如,可以规定“粒子在左盒子里”为 0,“粒子在右盒子里”为 1。这样,一个量子比特在未被测量时,并不是单纯的 0 或 1,而是同时包含两种可能性。当测量发生时,它才会确定为其中之一。这意味着,量子比特能够在未测量时以叠加的形式同时携带 0 和 1 的信息,这是它区别于经典比特的根本特征。

量子纠缠

在理解了单个物理量可以同时处于多种可能性的叠加之后,我们就可以进一步讨论量子纠缠。量子纠缠是一种超越经典直觉的量子关联现象。当两个或多个粒子的某些属性(例如它们所在的位置)发生纠缠时,这些属性不再是彼此独立的,而是形成一个不可分割的整体。

举个例子:设想有两只相同的小盒子,一个在左边,一个在右边。我们现在放入两个粒子,分别编号为 1 号和 2 号。按照经典的直觉,可能的情况有四种,每种都有一定的发生概率:

  • 两个粒子都在左边(记作 LL)
  • 两个都在右边(记作 RR)
  • 1 号在左、2 号在右(记作 LR)
  • 1 号在右、2 号在左(记作 RL)

经典物理会认为,粒子一定处于其中一种确定的组合,只是我们暂时不知道是哪一种。

但在量子物理中,如果两个粒子的位置发生了“两个粒子所在的盒子必须不同”的纠缠,那么情况就完全不同。在测量之前,它们并不是已经固定在某一种组合,而是处在一种整体性的叠加状态。在这种状态下,只允许两种可能性同时存在:

  • 1 号在左、2 号在右(LR)
  • 1 号在右、2 号在左(RL)

当我们真正去测量时,系统会瞬间“坍缩”为其中之一:要么是 LR,要么是 RL。每一种情况都有一个对应的概率(概率不必相等,概率分布是纠缠态的固有性质之一)。与此同时,LL 与 RR 的结果概率为零。可以看出,纠缠后的量子态其实是一个更为全局的叠加态。量子纠缠也是通过物理实验得到验证的,感兴趣的读者可以进一步查阅相关资料(关键词:EPR佯谬,贝尔不等式)。

图:经典粒子组合与粒子纠缠之间的对比

将这一原理应用到量子比特上(比如我们认为 L 是 0,R 是 1),我们就可以制备出一种“两个比特的取值必须不同”的纠缠状态。在这种状态下,两个比特在测量之前,并不是确定地处在“01”或者“10”,而是这两种可能性的叠加。等到测量发生时,系统会瞬间坍缩为某一个确定的结果:要么得到“01”,要么得到“10”。与此同时,“00”与“11”这两种组合完全不会出现,它们的概率为零。

利用叠加性和纠缠性加速计算

叠加性赋予量子比特在未测量时同时处于多种状态的能力,纠缠性使得量子比特之间能够形成非经典的强关联,这种关联在许多量子算法和量子误差校正中是不可或缺的核心资源。

在这里,我们给出一个直观的例子来帮助理解。假设我们有一个由 nn 个量子比特组成的系统,用它来表示一个输入变量 xx。由于叠加原理,xx 的状态可以同时覆盖从 002n12^n-1 的所有可能取值,而不仅仅是某一个具体数。当我们将这样的量子态输入到函数 f(x)f(x) 中时,输出也会成为所有可能输入对应结果的叠加态。

如果我们想寻找满足 f(x)=cf(x)=cxx 的值,就可以通过精心设计的量子算法(涉及对量子纠缠量子干涉等机制的利用),增强正确结果对应的概率振幅,同时削弱错误结果的概率振幅。这样,在最终测量时,就能够以更高概率得到正确答案。需要强调的是,这种“放大正确解概率”的过程,正是量子算法的核心思想之一。

图:量子计算的核心思想,通过叠加实现并行计算,通过纠缠和干涉放大正确解的概率

注:在提到量子干涉时,我们实际上默认了量子态可以用波的形式来表示。为了照顾不熟悉数学或物理的读者,我没有展开说明这一点。如果读者对“为什么微观物理量能够以波的形式来描述”感兴趣,可以参考附录1

图:干涉是波的叠加效应。当两个正弦波的波峰重合时,会产生相长干涉,叠加后的振幅增大;反之,则会发生相消干涉,振幅减小。我们所熟悉的降噪耳机就是利用相消干涉来抵消噪音,量子计算也可以通过相长干涉放大正确答案的概率振幅,通过相消干涉缩小错误答案的振幅。

当然,现实中的量子算法远比这个直观描述复杂得多,这里我们仅作简化说明,暂不涉及具体算法细节。若读者希望进一步了解量子算法为何会对经典密码体系构成潜在威胁,可以参见附录2

量子计算对不同问题的加速效果

量子计算机所带来的加速的主要来源是

  • 叠加态,即 nn 个量子比特可以同时表示 2n2^n 个状态,相当于一次性并行处理所有可能性。
  • 纠缠,通过量子比特间的强关联,使不同状态间发生干涉,从而有效提取有用信息、放大正确答案。

而这种加速在不同类型的问题上体现得不同,在有合适量子算法的情况下:

  • 有结构的问题(如质因数分解):量子算法可以利用其结构(如周期结构),通过某种算法(如量子傅里叶变换)快速提取答案,从而实现指数级加速
  • 无结构的问题(如寻找满足 f(x)=cf(x)=cxx):由于没有规律可利用,只能依靠连续 N\sqrt{N} 次干涉放大正确答案的概率幅,因此计算次数只能从经典的 NN 次降到 N\sqrt{N} 次,对应平方根级加速

附录1:叠加态和纠缠的数学表述

叠加态和坍缩的向量表达

在量子力学中,对于单个量子态,我们可以以向量的形式

ψ=αS0+βS1\begin{equation*} |\psi\rangle = \alpha |S_0\rangle + \beta |S_1\rangle \end{equation*}

其中:

  • S0|S_0\rangleS1|S_1\rangle 是该量子系统的两个可能状态;
  • α\alphaβ\beta 称为复数概率振幅,其模平方给出测量时得到对应状态的概率,且满足 α2+β2=1|\alpha|^2+|\beta|^2=1

量子计算机选取物理系统中的两个可区分的物理量子态来作为信息载体,分别记作 0|0\rangle1|1\rangle。因此,一个量子比特(qubit)的状态可写为:

ψ=α0+β1\begin{equation*} |\psi\rangle = \alpha |0\rangle + \beta |1\rangle \end{equation*}

量子纠缠的向量表达

如果两个比特发生了 “互补取值纠缠”,也就是我们前面举过的“两个比特的值必须不同”的情况,那么系统的状态就是

ψ=α01+β10\begin{equation*} |\psi\rangle = \alpha |01\rangle + \beta |10\rangle \end{equation*}

其中 α\alphaβ\beta 是复数概率幅,满足归一化条件 α2+β2=1|\alpha|^2+|\beta|^2=1

这意味着:测量结果为“01”的概率是 α2|\alpha|^2, 测量结果为“10”的概率是 β2|\beta|^2, 而“00”与“11”的概率严格为 0。可以看出,量子纠缠其实是叠加态在多维基底的扩展。

量子态的波函数表达

量子态也可以用波的形式进行描述,波函数的模方给出了坍缩到某个具体状态的概率。我们以被关在一维盒子里的粒子(两端是不可逾越的墙壁)为例,粒子的波在两端反射并相互叠加(类似于声音在两个墙壁之间回荡),波函数表现为驻波。

ψn(x,t)=2Lsin(nπxL)eiωnt\begin{equation*} \psi_n(x,t) = \sqrt{\frac{2}{L}} \sin\left(\frac{n\pi x}{L}\right) e^{-i\omega_n t} \end{equation*}

其中 tt 是时间,xx 是粒子的位置,LL 是盒子的长度(粒子运动的范围),nn 是量子数(1,2,3…,决定波函数有几个波峰波谷),k=nπLk = \frac{n\pi}{L} 是波数(即空间频率),λ=2πk=2Ln\lambda = \frac{2\pi}{k} = \frac{2L}{n} 是波长(即空间周期),ω\omega 是角频率,波的时间频率 f=ω2πf = \frac{\omega}{2\pi} 。粒子在 tt 时刻出现在位置 xx 的概率为 ψ(x,t)2|\psi(x,t)|^2。时间推移只为整个波函数添上一串旋转的相位因子,不影响概率分布。

图:t=0 时波函数的实部,展示波函数随位置的空间分布。

量子态的波函数表达与向量表达的关系

有些读者可能会疑惑:态矢量的形式 ψ=αS0+βS1|\psi\rangle = \alpha |S_0\rangle + \beta |S_1\rangle 与波函数形式 ψn(x,t)\psi_n(x,t) 看起来好像没有直接联系。其实它们是同一个量子态在不同“坐标系”下的两种表现方式。

要描述某个时刻(假设 t=0t=0)的量子态 ψ|\psi\rangle,必须先选一组基底。

  • 第一种方式,使用连续的位置基 {x}0<x<L\{|x\rangle\}_{0<x<L},这时抽象的量子态可被描述为 ψ(x)=xψ\psi(x)=\langle x | \psi \rangle,称为波函数,它对每一点 xx 分配一个复数振幅。
  • 第二种方式,使用离散的能量基 {n}\{|n\rangle\},这时抽象的量子态可被描述为 ψ=ncnn|\psi\rangle = \sum_n c_n|n\rangle,其中 cn=nψc_n=\langle n|\psi\rangle,它为每个能量本征态分配一个复数振幅。

两种坐标可以互相转化:

ψ(x)=ncn2Lsin(nπxL)\begin{equation*} \psi(x)=\sum_n c_n\sqrt{\frac{2}{L}}\sin(\frac{n\pi x}{L}) \end{equation*}

这两种写法只是视角不同,本质上描述的是同一个物理量。

附录2:量子算法如何威胁经典密码

为了让不熟悉数学或物理的读者也能理解,本部分会尽量减少使用复杂的数学公式。这样做可能会带来一些细节上的不精确,但不会影响整体理解。

Grover算法:加速搜索问题

经典搜索的瓶颈

假设你有一个黑盒函数 f(x)f(x),它能判断某个输入 xx 是否是正确答案:

  • f(x)=1f(x) = 1:表示 xx 是目标
  • f(x)=0f(x) = 0:表示 xx 不是目标

如果 xx 是一个 32 位整数,可能的取值有 2322^{32} 种。在经典计算机中,只能一个一个尝试 f(x)f(x),最坏情况下需要 2322^{32} 次。

量子计算如何加速搜索?

量子计算机通过叠加态和干涉,把搜索复杂度从 O(N)O(N) 降低到 O(N)O(\sqrt{N})。Grover算法的核心逻辑如下:

1.  构造叠加态。量子计算机可以让变量 x同时表示所有可能值的叠加态,也就是 (x=0,1,2,,2321x = 0, 1, 2, \cdots, 2^{32} - 1)。如果把这些值代入 f(x)f(x),那么 f(x)f(x) 的结果也会是所有可能输出的叠加态。对于某些 xxf(x)f(x) 的值是 0;对于另一些 xxf(x)f(x) 的值是 1。

2.  标记正确答案(Oracle 操作)。Grover算法的关键是“标记正确答案”。在量子计算中,这个标记并不是直接告诉你答案,而是通过操作让正确答案在量子力学层面变得特殊。比如,我们对 f(x)=1f(x) = 1 的那些 xx(即正确答案)做一个特殊处理:改变它的“相位”。相位是量子态的一个属性,虽然它本身不可见,但可以通过后续操作影响量子态坍缩时的概率分布。这一步相当于给正确答案做了一个“隐形标记”。干涉放大正确答案的概率。

3.  通过干涉放大正确答案的概率。接下来,通过相长干涉,让正确答案的振幅逐步放大,通过相消干涉,让错误答案的振幅逐步减小。可以把它想象成一个“放大器”,每次操作都让正确答案的存在感变得更强。每次干涉操作都会进一步提高正确答案的概率。经过大约 N\sqrt{N} 次 Oracle 操作后,正确答案的概率会接近1。

4.  测量正确答案。最后,通过测量量子态,量子计算机几乎总能返回正确答案。

图:Grover 算法示意图

密码学上的应用举例:破解哈希函数

假设你有一个哈希函数 f(x)f(x),已知一个哈希值 HH,想找到某个输入 xx 满足 f(x)=Hf(x) = H。如果 xx 是一个 4 字节整数(取值范围为 2322^{32}),经典计算需要最多尝试 2322^{32} 次,而 Grover 算法只需要大约 2162^{16} 次。这种加速对密码破解和无序搜索非常有用。

类似地,我们也可以用 Grover 算法加速破解 AES 等对称密码。

Shor算法:加速质因数分解

经典质因数分解的难点

质因数分解是一个经典问题:给定一个大合数 NN,找到两个整数大于 1 的整数 ppqq,使得 N=p×qN = p \times q。当 NN 是两个足够大的质数的乘积时,经典计算机需要尝试大量可能值,时间复杂度呈指数级增长。这就是 RSA 加密的安全基础:分解一个 2048 位的整数几乎是不可能完成的任务。

量子计算如何加速质因数分解?

首先,我们可以通过数论知识将质因数分解问题转化为一个“周期问题”,Shor算法会利用量子傅里叶变换高效提取周期,从而计算出因数。核心逻辑如下:

1.  转化为周期问题

选择一个随机数 aa,计算 f(x)ax(modN)f(x) \equiv a^x \pmod N。这个计算会生成一个周期性序列,比如:

f(0)=1,f(1)=3,f(2)=9,f(3)=27,f(4)=9,f(5)=27,\begin{equation*} f(0) = 1, f(1) = 3, f(2) = 9, f(3) = 27, f(4) = 9, f(5) = 27, \cdots \end{equation*}

序列每隔一段时间就会重复,这段重复的长度就是周期 rr。找到这个周期后,就可以快速得到 NN 的一个因子,然后再递归拆解 NN 的其他因子。

2.  量子傅里叶变换提取周期

在经典计算中找到周期需要一个一个尝试,非常耗时。而量子计算通过叠加态“同时计算”所有可能的 xx,通过让量子比特在一串受控的模乘运算中积累与周期成比例的相位,并用量子傅里叶变换把这个相位转换成可测量的结果,就能在多项式时间里把函数的周期 rr 提取出来。

3.  计算因数

一旦知道了周期 rr,通过简单的数学公式,就可以快速分解出 NN 的因数。具体地,通过计算 gcd(ar/2±1,N)\text{gcd}(a^{r/2}\pm 1, N),即可得到 NN 的因子。

图:Shor 算法破解 RSA 的示意图

密码学上的应用:RSA 破解

RSA 加密的安全性依赖于大整数质因数分解的困难性。如果用经典计算机分解一个 2048 位的整数,可能需要数十亿年。而 Shor 算法可以在几小时内完成分解,对现代加密体系构成了直接威胁。

参考文献

  1. Beckman, David, et al. "Efficient networks for quantum factoring." Physical Review A 54.2 (1996): 1034.
  2. Grover, Lov K. "A fast quantum mechanical algorithm for database search." Proceedings of the twenty-eighth annual ACM symposium on Theory of computing. 1996.
  3. Shor, Peter W. "Algorithms for quantum computation: discrete logarithms and factoring." Proceedings 35th annual symposium on foundations of computer science. Ieee, 1994.
  4. Nielsen, Michael A., and Isaac L. Chuang. Quantum computation and quantum information. Cambridge university press, 2010.
  5. Gidney, Craig. "How to factor 2048 bit RSA integers with less than a million noisy qubits." arXiv preprint arXiv:2505.15917 (2025).
  6. Gidney, Craig, and Martin Ekerå. "How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits." Quantum 5 (2021): 433.