2. BB84协议核心原理回顾
BB84协议是量子密钥分发(QKD)领域最经典的协议,由Bennett和Brassard于1984年提出。它的安全性根植于量子力学的基本原理——未知量子态不可克隆定理和测量塌缩特性。在系统工程视角下,BB84并非一个单一算法,而是一条从物理层到应用层的完整数据流水线:Alice在发送端制备量子态,Bob在接收端进行测量,双方随后通过经典信道完成基矢比对、误码率估计、纠错和隐私放大,最终得到一致的共享密钥。本节将沿着这条流水线,逐一回顾每个环节的核心机制与工程要点。
一、量子态制备:四种偏振态与两组基矢
BB84协议使用两组共轭基矢,每组包含两个正交量子态。在偏振编码实现中,通常采用以下约定:
- 直角基(Z基,+基):水平偏振 |H⟩ 表示比特0,垂直偏振 |V⟩ 表示比特1。
- 对角基(X基,×基):45°偏振 |+⟩ 表示比特0,135°偏振 |−⟩ 表示比特1。
Alice对每一个待发送的比特,独立随机地选择一组基矢,再根据比特值制备对应的偏振态。例如,若Alice选择Z基且比特为0,则发送 |H⟩;若选择X基且比特为1,则发送 |−⟩。这一过程的关键在于:基矢选择必须真随机,且每个光子只携带一个比特的信息。在工程实现中,常用弱相干光源(WCS)替代理想单光子源,此时存在多光子脉冲被光子数分离(PNS)攻击的风险,因此实际系统需要引入诱骗态(Decoy State)协议来弥补这一安全漏洞。
二、量子测量:Bob的随机基矢选择与探测
Bob收到光子后,独立随机地选择Z基或X基进行测量。测量结果与Alice制备态之间的关系决定了该次通信是否可用:
- 若Bob选择的基矢与Alice一致(同基),则测量结果确定性地等于Alice发送的比特值(理想信道下)。
- 若Bob选择的基矢与Alice不一致(异基),则测量结果完全随机,与Alice发送的比特值无关。
由于Alice和Bob各自独立随机选基,理论上只有约50%的轮次会“同基”。这些同基轮次构成原始密钥(Raw Key)的候选集合。在探测端,Bob通常使用单光子探测器(如InGaAs雪崩光电二极管或超导纳米线探测器)记录光子到达事件。探测效率、暗计数和死时间等参数会直接影响密钥生成率和误码率,是系统调试中需要重点关注的指标。
三、基矢比对:从量子到经典的第一次筛选
Bob完成测量后,双方通过认证的经典信道公布各自选择的基矢序列(只公布基矢类型,不公布比特值)。Alice和Bob逐位比较,保留双方选择相同基矢的轮次,丢弃不同基矢的轮次。经过这一步骤,双方获得一组长度约为原始轮次一半的筛选密钥(Sifted Key)。
基矢比对本身不泄露比特值,但会泄露基矢选择信息。在标准BB84安全性证明中,Eve可以获知基矢比对的结果,这不影响最终安全性,因为安全性由量子态的不可区分性保证。工程上,基矢比对通常通过公开信道传输一个基矢选择比特串来实现,双方用相同算法进行比对,确保结果一致。
四、误码率估计:判断信道是否安全
筛选密钥中可能存在不一致的比特,这些不一致来源于信道噪声或Eve的窃听。为了估计误码率,Alice和Bob从筛选密钥中随机抽取一部分比特(例如10%~20%),公开比对它们的值,计算量子比特误码率(QBER):
QBER = (不一致比特数) / (抽样比特总数)
如果QBER超过安全阈值(BB84在理想单光子源下约为11%),则说明窃听者可能获取了过多信息,双方应放弃本次密钥生成。如果QBER低于阈值,则用剩余未抽样的比特作为候选密钥,进入后续的纠错和隐私放大阶段。需要注意的是,抽样比对消耗的比特必须从最终密钥中剔除,不能用于生成密钥。
五、密钥提取:纠错与隐私放大
经过误码率估计后,双方进入密钥提取阶段,包含两个核心步骤:
1. 纠错(Error Correction):Alice和Bob通过经典信道交互校验信息,找出并纠正筛选密钥中的不一致比特。常用算法包括Cascade协议和LDPC码。Cascade通过多轮二分查找定位错误比特,实现简单但交互轮数较多;LDPC码则通过稀疏校验矩阵进行迭代译码,效率更高,适合高速QKD系统。纠错过程会泄露一部分信息给Eve,泄露量用纠错效率f来衡量,f越接近1越好。
2. 隐私放大(Privacy Amplification):纠错后,Alice和Bob拥有完全一致的比特串,但Eve可能已经获取了部分信息。隐私放大通过一个哈希函数(如Toeplitz矩阵哈希或SHA-256)将较长的比特串压缩为较短的最终密钥,使得Eve掌握的信息量趋近于零。压缩后的密钥长度由剩余信息量决定,通常可表示为:
最终密钥长度 ≈ 筛选密钥长度 × [1 − h(QBER) − 安全余量]
其中h(QBER)是二元熵函数,安全余量用于覆盖纠错泄露和统计波动。最终输出的密钥可用于一次一密加密或作为对称密钥体系的种子密钥。