从 BB84 到量子通信网络:一个互联网研发的入门笔记
笔者入职了一个新的单位,岗位职责跟以前差不多,还是做架构设计和写代码,但是行业和以前的互联网有点不太一样,笔者所属的部门是搞量子应用相关的产品,所以笔者开始零碎但系统地学习这个领域的知识。
这个月初笔者参加了新员工培训,被猛猛打了一波鸡血,对这个行业充满了信心。同时笔者意识到,这个行业本身还是比较小众的,大部分人(包括笔者,也包括笔者最近面试的很多候选人)对什么是量子、量子能干什么、这个产业的现状和未来等都不是很了解。笔者决定认真地开一个坑,系统性地整理和总结一下学到的知识,也希望能帮助广大的跟笔者一样在互联网行业卷不动的中年程序员,对这个行业能多一点更具体的认知。如果有朋友看完以后想加入这个行业,请联系笔者。
量子力学本身不是什么新鲜玩意儿,早在 1900 年量子论就已经诞生了。我们现在常见的半导体、激光等技术和应用,都是量子力学带来的。2002 年学界提出了第二次量子革命的概念,更强调主动操纵量子叠加、量子纠缠等特性。到目前为止,第二次量子革命带来了量子通信、量子计算和量子精密测量三个主要的应用方向。
对于这个行业来说,国家的政策布局很明确。2025 年政府工作报告已将量子科技列入要培育的未来产业。除了老中,老美也很重视这个行业,并且在基础理论和应用落地上跟老中你追我赶,现在在部分领域还要稍稍领先我们一点。除了中美,其他的主要国家比如欧洲日韩,也都有一定投入和产出。
目前来说,老中在这个行业主要是国家队在发力,老美更多的是 IBM 和 Google 这种企业投入。川皇通过行政命令设定了跟量子产业相关的目标,看起来老美也要加大国家投入了。所以虽然笔者买股票什么的眼光非常 poor,但是笔者相信老中和老美的眼光,这个世界还有谁会同时质疑老中和老美的决定呢:P
量子纠缠起个头
笔者参与开发的产品,主要是对量子通信的应用落地探索,所以这第一篇,笔者想聊聊量子通信相关的内容。
说到量子通信,入职以前的笔者第一个想到的是,这怕不是用量子纠缠实现的吧(甚至笔者近期面试的很多候选人也都是这个想法)?如果是这样那就很怪了,量子纠缠不是号称纠缠的两个粒子,即使分别在银河系的两头,一个被测量导致坍缩,另一个也一秒不带犹豫的立马坍缩吗?这不就超光速了吗?狭义相对论不存在了?在这个主题上,笔者和大多数朋友,跟爱因斯坦在伯仲之间:P
新员工培训的第一课,集团董事长分享了一个特别形象的例子,让笔者有一种恍然大悟的感觉,这里迫不及待地想分享给大家:妈妈和女儿,无论两人距离多远,哪怕在地球的另一头,女儿生下孩子的那一刻,妈妈会同时获得外婆的身份。但是,女儿告诉妈妈她成为外婆的这个信息,还是得打电话或者视频,依赖经典的信道传递,所以信息传递不会超过光速。划重点了朋友们,“当上外婆”和“知道自己当上外婆”之间,隔着一通报喜电话。当然了,量子纠缠理论本身要比这个例子复杂得多,但是不重要,我们不需要了解那么细(并不是因为笔者还没搞懂:P)。
BB84 协议
目前来说,量子通信的一条很重要的工程路线是基于量子密钥分发(Quantum Key Distribution,QKD),对于 QKD 来说,一个很重要的工程路线集基于 BB84 协议及其衍生方案,所以笔者想好好介绍一下这个协议。
在介绍 BB84 之前,让我们记住一些设定,记住就好,不需要问为什么(因为笔者也不一定知道):
- 信息学上一般会把通信的双方称作 Alice 和 Bob,窃听者一般被称作 Eve。
- 一个量子比特(这里用光子的偏振态来编码)可以用不同的方式测量,BB84 通常使用两组测量基底,分别被称为 Z Basis (用
+指代)和 X Basis (用×指代)。
| 基底 | 表示 0 | 表示 1 |
|---|---|---|
+ | → | ↑ |
× | ↗ | ↘ |
这里的箭头表示光子的偏振方向
- 对于一个光子来说,使用相同的基底测量,一定能拿到相同的结果,使用不同的基底测量,那就随机了,可能对也可能不对。
- 对于一个光子来说,测量会导致坍缩,所以想确保拿到正确的值,有且仅有一次机会:用正确的基底测量。
现在 Alice 和 Bob 想通信,出于安全考虑他们有加密的诉求,这要求他们先有一份相同的密钥:Alice 用它加密,Bob 用它解密。在不安全的公共网络上直接把密钥明文发给对方,那这个加密就变得很可笑了,所以 Alice 和 Bob 需要一个机制,能够安全地交换这个密钥。笔者之前复习了 HTTPS 协议的工作机制,梳理了经典密码学中的密钥交换机制。现在我们脑子里突然多出了上面那 4 条设定,让我们来尝试换一种方式。
- Alice 生成随机 bit 串,比如
1 0 1 1 0 0 1 0,然后为每个 bit 随机选一个基底,比如+ × + × × + + ×,基于此 Alice 给 Bob 发送了一个序列的量子态(未测量的光子)↑ ↗ ↑ ↘ ↗ → ↑ ↗。 - Bob 收到 Alice 发来的序列,随机选择基底,比如
+ + × × × + × ×,然后挨个进行测量,得到1 ? ? 1 0 0 ? 0,这里的 ? 因为选了不同的基底,可能跟 Alice 的相同也可能不同,这不是关键。 - 两人公开比对自己的基底,发现第 1、2、6 位没对上,那这三位的 bit 就扔掉不要,剩下的理论上应该一样,可以拿来做密钥。这里为什么是
1、2、6呢,因为笔者是最好的语言Java 程序员,序列从 0 开始:P - 两人公开约定拿留下来的信息的一部分做比对,比如第 0、7 位,公开比对各自的信息,都是
1 0,说明本次交换成功,把剩下的第 3、4、5 位的信息,也就是1 0 0做密钥。
发现了吗,整个过程进行到现在,最终用作密钥的 1 0 0 bit 串从未在公开的信道上出现过。那么现在我要恭喜你,你发明了大概理解了 BB84 协议。
为什么 BB84 在理论上安全
请再读一遍设定 4,以及过程 4,好好理解一下。
现在 Eve 在过程 1 和 2 之间截住光子,但是她不知道 Alice 用的是哪套基底,只能先猜一个,测完再补发一个给 Bob。
比如 Alice 发的是 →,Bob 也准备用「→ / ↑」来测,本来应该稳稳读到 0。Eve 却选了「↗ / ↘」,她测完后按自己的结果补发的就是 ↗ 或 ↘。Bob 再用「→ / ↑」去测,结果变得不确定,就可能读出 1。
原本该一致的地方,因为中间多了一次偷看,出现了不一致。 这就是过程 4 有用且必要的原因,Eve 的出现,会使得误码率从理想状态下的 0 骤升至 25%。
那 Eve 能不能先复制一份,等双方公布方式后再读副本?对不起,不行,未知量子态是无法被复制的。这叫量子不可克隆定理。
从 BB84 到中国的量子通信网络
BB84 是 Charles Bennett 和 Gilles Brassard 在 1984 年提出的,1989 年才有了首次实验演示,到 2004 年美国的 DARPA 量子密钥分发网络投入运行,已经过去了 20 年。纸上几步就能讲完的流程,变成能持续运行的设备和网络,需要走很长一段路。
真实设备会遇到多光子脉冲、探测器漏洞、噪声和光纤损耗等问题,对应发展出了诱骗态、MDI-QKD,以及同步、补偿和后处理技术。距离再拉长,还需要可信中继、星地链路等组网手段。这些问题和解决的原理,笔者现在没有一个能搞明白,笔者唯一能确定的是,在量子通信这个领域,或者至少是以 BB84 及其变体为主要实现手段的 QKD 领域,要形成跨地域、广覆盖的量子密钥服务,需要大规模建设相应的网络基础设施。诶?大基建?这不正是老中擅长的吗?
从一条干线,到天地一体
2016 年,“墨子号”量子科学实验卫星发射,把星地量子密钥分发、纠缠分发等实验带到了空间尺度。2017 年,“京沪干线”正式开通,连接北京、济南、合肥、上海,全长 2000 余公里。2021 年,中国科大公布了跨越 4600 公里的天地一体化量子通信网络成果,将地面光纤网络和星地链路结合起来。
地面建设也逐渐从单条线路扩展到多条干线、多地城域网。除了京沪干线,老中还建成了武合干线、沪杭干线、粤港澳干线;某通信行业巨头在 2025 年披露,已在合肥、上海、北京、广州等 16 个重点城市建设量子城域网。
城域网、骨干网、天地一体,主打一个从上到下,从大到小,一个都不落下。
城域网连接本地政企用户和机房,骨干网连接不同地区,卫星补充更大跨度的密钥连接。地面长距离连接采用可信中继:每段各自产钥,再逐站保护和转发密钥材料。虽然单个的 QKD 设备(发射器和接收器)的工作距离有限,通过骨干网、可信中继、量子卫星等设备的介入,不同链路和节点协同,最终形成了庞大的的量子通信网络。一个量子走得快,一群量子走得远:P
量子通信的应用
建成了这么庞大复杂的量子通信网络,最终怎么飞入寻常百姓家呢?笔者找了一些某通信行业巨头公开的资料。
以合肥为例,量子城域网包含 8 个核心站点、159 个接入节点,量子密钥分发网络光纤总长 1147 公里。2026 年 5 月,合肥至芜湖的通量密一体加密 OTN 专线示范应用打通合肥量子城域网、国家量子骨干网和芜湖量子城域网,实现跨城域密钥协商与数据加密传输。所谓的通量密一体,大概可以理解为将经典光通信、量子密钥分发和加密能力集成起来。
所以完整的量子通信网络,底层是设备、是链路,中间是密钥服务,上层是在这些基础上构建的各类应用。在经典网络之上叠加量子安全能力,是现在最普遍的应用场景。
这时候有朋友要问了,折腾了这么半天就为了做密钥分发?图什么呢?看你之前整理的 HTTPS 的内容,感觉也很安全啊!新员工培训期间去参观了某通信行业巨头的量子专业公司展厅,一个 Q-Day 的倒计时令人印象深刻。第二次量子革命带来的另一个应用方向:量子计算,将对传统的非对称密码学带来巨大的冲击,而基于量子通信的 QKD 是对抗这种威胁的最重要的手段之一。
有意思吧,最利的矛和最强的盾,师出同门。这里挖个坑,等笔者把量子计算的基础知识和应用场景也摸摸清楚再回来填。
作为普通的程序员,我们能做什么呢?
设备研发需要处理光源、探测器和协议实现;密钥平台要处理密钥的存储、分配与生命周期;网络管理要盯住链路状态、产钥速率和故障恢复,这些方向都有软件工程工作。
QKD 产生的密钥交到使用方手里,仍然是普通的比特串。应用或加密设备使用经典密码算法处理数据,业务密文经过普通网络传输。普通手机也不会因为安装了应用,就多出一套单光子收发设备;安全能力需要通过终端模块、SDK 和服务接口接入产品。
笔者现在参与开发的,是某通信行业巨头旗下的基于量子安全的协同办公产品。抛开量子安全,作为服务端研发,笔者每天面对的仍然是用户、组织、消息和其他业务流程,需要解决的仍然是领域建模、高并发、稳定性。对做过互联网后端的人来说,这些问题并不陌生,甚至可以说相当熟悉了。
笔者还是做架构设计和写代码,只是需要理解的上下游变了。过去在互联网里积累的研发经验依然有用,这些经验跟新的领域有机结合,就能创造出可使用、可维护、更安全的产品。有机会见证和参与一个未来产业的发展,仔细想想还是挺让人激动的吧!
以上的内容未必全都准确,如有指正,请联系笔者,不吝赐教。
对这个行业和公司有兴趣的朋友,也请联系笔者,期待加入。