4、量子密钥分发(QKD)原理:BB84协议详解、相位编码与偏振编码、密钥生成流程

量子密钥分发,圈内人常叫QKD。说白了,它就是利用量子力学的基本原理,让通信双方能安全地共享一串密钥。你想想看,经典通信里,密钥分发一直是老大难问题——你永远不知道中间有没有人在偷听。但QKD不一样,如果有人窃听,量子态就会坍缩,双方立马就能发现。

我个人最早接触QKD是在2016年,当时给一个科研机构搭实验平台。说实话,第一次看到单光子探测器响起来的时候,还挺激动的。嗯,咱们今天就从最经典的BB84协议讲起。

4.1 BB84协议:量子密钥分发的基石

BB84协议是1984年由Bennett和Brassard提出的。别看它年头久,现在绝大多数QKD系统都还是基于这个框架。它的核心思想很简单:用单光子的量子态来编码比特信息。

协议里用了两组共轭基:

  • Z基(计算基):|0⟩ 和 |1⟩,对应水平/垂直偏振,或者相位0/π
  • X基(Hadamard基):|+⟩ 和 |−⟩,对应对角/反对角偏振,或者相位π/2/3π/2

为什么需要两组基?因为根据量子不可克隆定理,窃听者不知道发送方用了哪组基,就无法完美复制量子态。我在项目中遇到过有人问:「那如果窃听者刚好猜对了基呢?」没错,他确实有50%的概率猜对。但协议后续有纠错和隐私放大步骤,能把这些泄露的信息压缩掉。

核心要点:BB84的安全性建立在「测量会扰动量子态」这个物理事实上。任何窃听行为都会留下痕迹。

4.2 偏振编码 vs 相位编码

BB84协议的具体实现,主要有两种编码方式。我两种都搭过,各有各的坑。

4.2.1 偏振编码

偏振编码最直观。用光子的偏振方向来表示比特:

比特0 比特1
Z基(直线偏振) 水平偏振 (H) 垂直偏振 (V)
X基(对角偏振) 对角偏振 (D, +45°) 反对角偏振 (A, -45°)

偏振编码的好处是物理实现简单,用波片和偏振分束器就能搞定。但有个大问题——光纤会随机改变光的偏振态。我曾经在一条20公里的光纤链路上测试,偏振漂移快得离谱,每几分钟就得重新校准一次。所以偏振编码更适合自由空间QKD,比如卫星通信。

4.2.2 相位编码

相位编码是目前光纤QKD的主流方案。它利用马赫-曾德尔干涉仪,通过控制光脉冲的相对相位来编码信息。

具体做法是:发送端(Alice)和接收端(Bob)各有一个不等臂干涉仪。Alice随机选择相位0或π(对应Z基),或者π/2或3π/2(对应X基)。Bob随机选择相位0或π/2来测量。

我记得第一次调相位编码系统时,干涉仪的稳定性让我头疼了好几天。温度变化、振动都会导致相位漂移。后来我学乖了,加了个反馈控制环路,实时补偿相位漂移。嗯,这里要注意:相位编码对光源的相干长度要求很高,普通LED不行,得用窄线宽激光器。

我的建议:如果是实验室验证,用偏振编码上手快。如果是实际光纤部署,老老实实用相位编码。别问我怎么知道的——我当年在偏振编码上浪费了两个月。

4.3 密钥生成流程:从原始密钥到最终密钥

很多人以为QKD就是发光子、收光子,然后密钥就出来了。其实没那么简单。完整的密钥生成流程分好几步,每一步都有讲究。

下面这张图是我自己画的流程,你一看就明白:

BB84密钥生成完整流程 步骤1:量子态制备 Alice随机选择基和比特 步骤2:量子态传输 通过光纤或自由空间 步骤3:量子态测量 Bob随机选择测量基 步骤4 基比对 步骤5:原始密钥 丢弃基不匹配的比特 步骤6:误码估计 公开比对部分比特 步骤7:纠错 Cascade或LDPC 步骤8:隐私放大 压缩泄露信息 ✅ 最终安全密钥 可用于一次一密加密 窃听检测 QBER > 阈值则中止 注:步骤4-8在经典信道(互联网)上完成,步骤1-3在量子信道上完成 经典信道(公开讨论) 量子信道(单光子传输)

下面我把每个步骤拆开讲:

4.3.1 量子态制备与传输

Alice随机生成一串比特,再随机选择用Z基还是X基来编码。然后通过光纤或自由空间把光子发出去。这里有个细节:实际系统中单光子源很难做,通常用弱相干态激光脉冲代替,平均每脉冲0.1个光子左右。为什么这么低?因为如果每脉冲光子数多了,窃听者就可以分走一个光子而不被发现——这就是著名的PNS攻击。

4.3.2 基比对与原始密钥提取

Bob收到光子后,也随机选基测量。测量完成后,两人通过经典信道公开各自的测量基(注意!不是测量结果)。只保留基一致的那些比特,丢弃不一致的。这个过程会丢掉大约一半的数据。

我曾经在调试时发现,基比对后剩下的比特数比理论值少很多。查了半天,原来是Bob的随机数生成器有偏差,导致他选Z基的概率远高于X基。所以随机数质量真的很重要。

4.3.3 误码估计

Alice和Bob随机挑出一部分比特公开比对,计算量子误码率(QBER)。如果QBER超过某个阈值(通常11%左右),说明信道不安全或者有窃听,直接中止协议。正常光纤系统中,QBER一般在1%~3%之间。

注意:误码估计时公开的比特必须丢弃,不能再用于最终密钥。这是很多人容易忽略的。

4.3.4 纠错与隐私放大

纠错这一步,说白了就是把Alice和Bob手上不一致的比特纠正过来。常用的是Cascade协议,虽然效率不高但实现简单。我更喜欢用LDPC码,吞吐量高很多。

隐私放大则是用哈希函数把密钥压缩一下。假设窃听者知道了k个比特的信息,我们就压缩掉k个比特,确保最终密钥的安全性。嗯,这里有个经验值:隐私放大后的密钥长度大约是原始密钥长度的60%~70%。

4.4 实际部署中的几个坑

最后分享几个我在项目中踩过的坑:

  • 同步问题:Alice和Bob的时间同步必须精确到纳秒级。我一开始用GPS同步,后来发现室内收不到信号,改用了光脉冲同步。
  • 暗计数:单光子探测器即使没有光子也会偶尔产生计数。温度越低暗计数越少,但制冷成本也高。我一般用-50°C的硅APD,暗计数率能控制在100Hz以下。
  • 后脉冲效应:探测器检测到一个光子后,短时间内容易产生假计数。解决办法是加一个死时间,比如10微秒。

小技巧:调试QKD系统时,先别急着跑完整流程。先用连续激光把光路对准,再用脉冲光调时序,最后才上单光子。一步到位的话,出了问题你都不知道是光路问题还是电子学问题。

好了,BB84协议的核心内容就这些。相位编码和偏振编码各有适用场景,密钥生成流程的每一步都有它的物理意义。下次你搭QKD系统时,希望这些经验能帮你少走些弯路。


专注资料整理