深度解析塑造未来的技术文章。

量子密码学:开发者真正需要了解的内容

量子计算正在威胁现有加密体系。本文厘清哪些是真实风险、哪些是炒作,以及你现在就该为后量子密码学做什么。

一台金色量子计算机吊灯前悬浮的晶体状光子密钥

查尔斯·贝内特(Charles Bennett)和吉勒·布拉萨德(Gilles Brassard)凭借其在量子信息科学领域的奠基性工作获得了图灵奖,具体来说,是因为他们在1984年发表的BB84量子密钥分发协议。从论文发表到获得图灵奖用了40年,这也说明量子计算的理论成果要过很久,才能被更广泛的计算机科学界认可。

他们此时获奖颇有意味。能够破解RSA加密的量子计算机目前还不存在,可能还要再等十年,但密码学界已经全面进入迁移阶段。NIST已经定稿了首批后量子密码学标准,主流浏览器正在测试后量子密钥交换,Signal更是已经在生产环境中部署了。“量子计算机总有一天会破解加密”与“我们现在就得改造系统”之间的距离,已经被拉近了。

量子计算机真正的威胁是什么

大多数关于量子计算与密码学的大众报道,要么过度渲染(“所有加密都要完蛋了!”),要么一味唱衰(“根本不可能实现”)。实际情况更具体,也更有意思。

量子计算机威胁的是非对称密码学,即基于大数分解难题(RSA)或离散对数计算(Diffie-Hellman、ECC)数学难度的那一类体系。在足够大的量子计算机上运行Shor算法,就可以在多项式时间内解决这些问题。也就是说,经典计算机需要数十亿年才能破解的RSA-2048,理论上量子计算机只需几个小时就能攻破。

量子计算机对对称密码学的威胁要小得多。Grover算法对暴力搜索只能提供平方级加速,相当于把密钥长度有效减半。面对量子攻击者,AES-256等效于AES-128,依然难以暴力破解;AES-128则降至相当于64位的安全强度。这值得关注,但还不至于是灾难性的。

What's threatened by quantum computers:
BROKEN (by Shor's algorithm):
├── RSA (all key sizes)
├── Diffie-Hellman key exchange
├── Elliptic Curve Cryptography (ECDSA, ECDH)
└── DSA
WEAKENED (by Grover's algorithm):
├── AES-128 → effectively 64-bit security (upgrade to AES-256)
├── AES-256 → effectively 128-bit security (still secure)
└── SHA-256 → effectively 128-bit preimage resistance (still secure)
NOT AFFECTED:
├── One-time pads
├── Hash-based signatures (SPHINCS+)
└── Symmetric encryption with sufficiently large keys

实际影响是:凡是依赖公钥密码学的东西,包括TLS握手、SSH连接、代码签名、加密货币和数字签名,都需要迁移到抗量子算法。对称加密基本只需要加大密钥长度。

“先截获,后解密”问题

尽管量子计算机目前还无法破解任何东西,迁移却已经十分紧迫,原因正在于此。敌对势力(主要是国家级行为体)几乎肯定正在记录加密流量,打算等量子计算机成熟后再进行解密。

试想一下那些需要保密20年以上的数据:外交通信、情报报告、商业机密、医疗记录。如果这些数据今天用RSA或ECDH加密,而15年后一台足够强大的量子计算机问世,那么加密就会追溯性地失效。这些数据其实一直都是脆弱的,只是我们当时还不知道。

这并不是纯粹的假设性威胁建模。NSA的指导意见已明确建议,涉密系统应过渡到抗量子算法。情报界的共识是,国家行为体已经在囤积加密流量。如果你的数据有长期保密需求,最佳迁移时机其实就是昨天。

后量子密码学:NIST选定了什么

NIST历时数年组织了一场竞赛,以标准化后量子密码算法,这与当年AES的选拔方式类似。在评估了几十个候选方案之后,他们最终标准化了三种主要算法:

  • ML-KEM(Kyber):一种用于密钥交换的密钥封装机制,基于格密码学中的模块带误差学习(MLWE)问题。它可以替代TLS握手等协议中的Diffie-Hellman和ECDH,速度快,生成的密钥也相对较小,是通用密钥交换的首选推荐。
  • ML-DSA(Dilithium):一种同样基于格密码学的数字签名算法,用于替代签名场景中的RSA和ECDSA。其签名比ECDSA大得多(约2.5 KB,对比64字节),这会影响证书链,以及需要传输大量签名的协议。
  • SLH-DSA(SPHINCS+):一种基于哈希的数字签名方案。它的安全性依赖哈希函数,而不是格问题。相比ML-DSA速度更慢、签名也更大,但其安全假设建立在大家已经充分研究的哈希函数之上,而非较新的格密码假设,因此它是更保守的备选方案。

基于格的算法(ML-KEM、ML-DSA)因性能优势而受到青睐,但它们所依赖的数学难题,相比RSA和AES背后数十年的分析积累,还相对年轻。格密码分析若出现突破,有可能削弱它们,这种可能性虽小,却并非为零。SPHINCS+的存在正是一份保险,它的安全性基于我们研究了30多年的哈希函数。

已经部署的应用

后量子密码学已经不再停留在理论层面,它正运行在你今天就在使用的生产系统中。

  • Chrome和Firefox在TLS连接中采用混合密钥交换(X25519 + ML-KEM-768)。“混合”的意思是将经典密钥交换与后量子密钥交换结合使用,即便其中一种被攻破,连接仍然是安全的。这会使TLS握手增加约1 KB的数据。
  • Signal部署了PQXDH,这是一种用于初始密钥交换的后量子密钥协商协议。现在,每一次新建的Signal会话都具备了后量子前向保密能力。
  • Apple iMessage推出了PQ3,采用后量子密钥交换并定期重新密钥。苹果称其达到了“Level 3”安全级别,即其安全框架中的最高等级。
  • Cloudflare在其CDN上支持后量子密钥交换。如果你的网站位于Cloudflare之后,你的连接可能早已在使用ML-KEM,只是你自己并不知道。
  • AWS KMS支持用于密钥管理操作的混合后量子TLS。

开发者面临的迁移挑战

如果你开发的软件用到了密码学(几乎所有软件都是如此),那么实际的迁移工作大致是这样的。

TLS:大部分已由底层处理

如果你的应用通过标准库(OpenSSL、BoringSSL、Go的crypto/tls)使用TLS,后量子支持正在库的层面陆续添加,你会通过依赖更新获得它。主要的行动项是:确保没有锁定在旧版TLS库上,并确认系统能够处理稍大一些的握手数据。

体积增长的影响可能比你想象的更大。ML-KEM-768会为TLS ClientHello消息增加约1,100字节。一些中间设备、防火墙以及实现不规范的TLS协议栈,无法处理超过约512字节的ClientHello消息。Google在推广后量子密钥交换时发现,约0.5%的连接因中间设备不兼容而失败。如果你的用户位于企业防火墙之后,请务必测试这一点。

数字签名:影响更大

后量子签名明显比经典签名大。ECDSA签名为64字节,ML-DSA-65签名约为3,300字节,SLH-DSA签名则可能超过17,000字节。这会带来一连串连锁反应:

  • X.509证书链会大幅变大。一条由3张证书组成、使用ML-DSA签名的典型证书链,比ECDSA版本大约多出10 KB。在带宽受限的连接上,这一点很关键。
  • 依赖紧凑签名的区块链和加密货币系统会面临扩展性挑战。每笔使用后量子签名的交易,占用的空间要多出50倍。
  • 代码签名、软件包签名和软件更新验证,都需要在处理更大签名的同时,不破坏现有工具链中的尺寸假设。
  • 证书透明度日志、OCSP响应和CRL分发的体积都会随之增长。

应用层密码学:需要你自己负责

如果你的应用实现了自己的密码协议,比如端到端加密、自定义密钥交换、签名令牌或加密存储,就需要主动规划迁移。总体策略如下:

  1. 梳理你的密码学依赖。找出代码中所有使用RSA、ECDSA、ECDH或Diffie-Hellman的地方。这包括各类库、密钥管理系统、证书颁发机构以及硬件安全模块。
  2. 优先采用混合方案。将经典算法与后量子算法结合起来。如果后量子算法被发现存在弱点,你仍可退回到经典安全级别;而如果量子计算机真的到来,你已经拥有后量子防护。
  3. 使用成熟的库。不要自己实现后量子算法。可以使用liboqs(Open Quantum Safe),它与OpenSSL集成,并提供了ML-KEM、ML-DSA和SPHINCS+经过测试的实现。
  4. 测试性能影响。后量子运算总体上速度很快(ML-KEM的密钥生成与ECDH相当),但签名验证较慢,而且密钥和签名的体积会影响带宽与存储。
  5. 为加密敏捷性做好规划。设计协议时,要确保在不破坏协议的前提下可以替换密码算法。这很难事后补救,在一开始就内置会容易得多。

量子密钥分发呢?

贝内特和布拉萨德的BB84,也就是他们获得图灵奖的那项工作,属于量子密钥分发(QKD),这是一条完全不同的技术路线。它不依赖量子计算机无法求解的数学难题,而是利用量子力学的物理特性来分发加密密钥。任何窃听密钥交换的尝试都会扰动量子态,从而被检测到。

QKD在理论上非常优美,其安全性基于物理定律而非计算假设,可以被证明是安全的。但在实践中,它有着明显的局限:需要专用光纤链路(无法通过互联网运行);在没有量子中继器(目前还无法大规模部署)的情况下,传输距离只有几百公里;而且成本极其高昂。中国已经在北京与上海之间部署了QKD网络,但它依赖可信中继节点,这在一定程度上削弱了其意义。

在可预见的未来,后量子密码学(即运行在经典计算机上的数学算法)才是切实可行的路径。QKD与高安全等级的政府和军方链路相关,但它不会取代你的Web应用所使用的TLS。

时间线:这件事究竟什么时候才真正要紧?

没有人知道具有密码学破坏力的量子计算机(CRQC)何时会出现,即大到足以破解RSA-2048的那种机器。各方估计从2030年到“永远不会”不等,大多数专家的预测集中在2035到2040年之间。目前最大的量子计算机拥有约1,000个物理量子比特,而要破解RSA-2048,估计需要数百万个经过纠错的逻辑量子比特。

但关键在于:具体什么时候其实并不重要。迁移本身就需要数年时间。大型组织需要盘点自己的密码学使用情况、更新库、测试兼容性、轮换密钥和证书,并升级协议。NIST建议在2035年前完成过渡。考虑到企业级软件迁移通常要花5到10年,现在才开始,可以说已经算晚了。

实用建议虽然平淡,却是正确的:更新你的TLS库,规划签名的迁移,在可能的地方采用混合方案,并在新系统中内置加密敏捷性。你不必恐慌,但确实需要开始行动。最吃亏的,往往是那些把后量子迁移当作遥远的未来问题、直到它变成紧急事件才回过神来的组织。