← 返回博客

量子计算科普系列 · 第 31 篇

抗量子密码:Shor 来了,我们怎么防

前情提要:Shor 算法把"分解大数"变成了"找一个周期",靠着量子叠加把原本指数级难的题压成多项式级——而真正完成加速的心脏,是一个只需 O(n²) 个门就能把对的周期放大成干涉尖峰的变换。两件事合起来很刺激也很吓人:一旦足够大的容错量子机造出来,今天保护互联网的 RSA 锁就会被一把钥匙捅开。但别急着恐慌,这篇讲另一半故事:我们早就知道锁会被捅开,所以新锁已经在装了。

还记得第 9 篇那个场景吗?互联网的安全,很大一部分建立在一句话上:"把两个大质数乘起来很容易,反过来把一个大数拆成它是哪两个质数乘的,就很难。"RSA 这种公钥加密,就赌这个"难"。经典计算机要拆一个几千位的数,得算到太阳熄灭。

Shor 算法把这个"难"变成了"快"。它不靠蛮力试除,而是把因式分解变成一个"找周期"的问题(还记得第 15 篇的量子傅里叶变换吗?它干的就是这个),在足够大的量子机上,原本几千年才能拆完的锁,几分钟就开。

问题来了:这把锁被开,不是明天才发生的事。真正的危险在于——今天截获一段加密流量,存起来,等十年后量子机够强了再慢慢解。敌手不需要现在就有机器,只要现在把你的密文收好就行。军事机密、医疗记录、长期合同的密文,保质期都比 RSA 长。这就是为什么各国安全机构从十几年前就开始喊:换锁,要趁早。

换锁的思路:别再赌"乘法好算、除法难"

第一步得想清楚一件事:我们要换的,不是"锁的型号",而是"锁好在哪一题难"。RSA 赌的是大数分解难,那我们就换一道量子也算不动的题。

好消息是,这种题确实存在,而且早就有了。密码学家在 1970 年代就开始研究一类叫格(lattice)的数学对象,顺带还有基于哈希、基于纠错编码、基于多变量方程的问题。它们的共同点是:经典难,量子也难(至少目前没有像 Shor 那样一扫平的算法)。这类为"后量子时代"准备的密码,统称后量子密码(PQC)。

其中最有戏的是格密码。它的直觉可以这么理解:

想象一个很多维的空间里,铺着一张规则的"格子点阵"——像三维仓库货架无限放大到几百维。现在我在空间里随便丢一个点,问你:"离这个点最近的格点,是哪个?"在二维、三维里你瞪一眼就知道。可一旦维度飙到几百,这个问题(叫"最近向量问题")就变得极难——没有捷径,只能近似地、指数级地慢慢搜。更妙的是,即使给一台量子计算机,目前也没有已知的快算法能系统性地赢过经典方法。格密码的安全性,就立在这座"高维迷宫"上。

RSA 大数分解脆弱 vs 格问题难解对比

标准定了:NIST 选了哪几把新锁

光有思路不够,得有经过全球密码学家十几年"公开踢馆"后还能站住的标准。美国国家标准与技术研究院(NIST)从 2016 年发起征集,到 2024 年正式发布了首批标准,等于给全行业发了"采购清单":

  • ML-KEM(原名 Kyber):负责"加密"——把一段会话密钥安全地交给对方。基于模格上的容错学习问题,速度快、密文短,是加密场景的主力。
  • ML-DSA(原名 Dilithium):负责"签名"——证明"这条消息确实是我发的、没被改"。同样立足格问题,是签名场景的主力。
  • SLH-DSA(原名 SPHINCS+):也是签名,但完全基于哈希函数,不依赖格假设。它更"保守"(哈希的安全性我们信了几十年),代价是签名体积大、速度慢,常作为格签名万一被攻破时的备胎。

还有一个思路叫"状态化哈希签名"(用过的随机数绝不能再用的纯哈希方案),工程上麻烦,但理论极透明。总之,NIST 的姿态很清楚:不押单一技术,主力用格,备用用哈希,鸡蛋分两篮。

迁移实务:换锁比造锁难

标准有了,真正的苦活才开始。把全世界的密码系统从 RSA 换成 PQC,不是点一下升级那么简单。可以想成:给一座住满人的城市,在大家不知情的情况下,把所有门锁悄悄换成新锁,还不能让任何人被关在门外。

实务上分几步,这张图是一条典型路径:

flowchart LR A["盘点受威胁系统"] --> B["评估数据保密期"] B --> C["混合部署 经典+PQC"] C --> D["协议层改造 TLS/国密"] D --> E["长周期系统替换 固件/证书"] E --> F["全面切换并弃用 RSA"]
  • 混合部署是第一步:很多系统现在就把"经典加密"和"PQC 加密"两层叠加——攻击者得同时攻破两道,才拿不到密钥。这样哪怕 PQC 哪天被发现漏洞,经典那层还在兜底。这是当下最务实的过渡姿势。
  • 协议层改造:浏览器、VPN、银行的 TLS 握手得支持新算法。好消息是 TLS 1.3 已经能塞进 PQC 套件,谷歌、Cloudflare 早就在真网上跑了实验。
  • 长周期系统最难换:一枚卫星、一台工控设备的固件、一张数字证书,寿命动辄十几年,出厂时烧进去的算法改不了。这些"沉睡的老锁"才是真正的风险点,得在它们部署时就预埋可升级能力。
  • 时间表压力:NIST 给的路线图是 2030 年前后逐步弃用 RSA-2048 这类传统算法。对银行、政府、基础设施来说,这十年其实很紧——光是把几千个系统盘一遍、排优先级,就要好几年。

理性降温:新锁也不是万能的

写到这得泼盆冷水。抗量子密码不是"换完就高枕无忧",它自己带着新麻烦:

第一,算法年轻。格密码的安全性论证才经受公开审查十几年,RSA 可是被踢了半个世纪。谁也不敢拍胸脯说格问题永远难。所以才要"格 + 哈希"双轨备胎。

第二,实现会漏。再完美的数学,写到代码里也可能出侧信道漏洞——程序算题时耗电的微小差异、响应时间的长短,都可能泄露密钥。这类"实现攻击"对 PQC 同样有效,和量子无关。

第三,性能和体积。格签名的密文和密钥比 RSA 大不少,对带宽紧、存储小的物联网设备是负担,部署时要权衡。

第四,迁移本身是工程地狱。这上面说过了,比算法本身难。

所以现实态度是:抗量子密码是一场"十年起步的防御工程",不是一键切换的软件更新。它的意义不在于某天挡住一台量子机,而在于现在就开始,让今天传出去的密文,到十年后那台机器醒来时,已经换了它捅不开的锁。

---

讲到这,你可能会想:这些算法、这些锁,我一个普通人到底能不能亲手摸一摸?答案是能,而且不用买机器。下一篇《上手量子云:写你的第一个量子程序》:你会亲手用 Qiskit 写一段量子线路,在模拟器或真机上跑出叠加与纠缠的真实统计结果,把"叠加""测量"从比喻变成敲过的命令。

*(系列前文:第 9 篇《Shor:动摇互联网根基的因式分解》讲威胁从哪来,第 14 篇《现在能用吗?量子云与未来 5 年》聊了硬件离实用还有多远,本篇的补丁方向正好和它呼应。)*