3. BB84协议流程拆解

BB84协议常被概括为“Alice发量子态、Bob测量、比对基矢、协商密钥”,但真正实现一个可运行的仿真时,必须把这条链路拆成五个职责清晰的阶段:制备、测量、筛选、纠错、保密放大。同时要明确一个关键前提——整个协议横跨两条性质完全不同的信道:量子信道只承载单光子量子态,经典信道承载基矢比对、校验信息与最终密钥确认。二者在安全性上的角色不可互换:量子信道负责产生关联,经典信道负责把关联“提炼”成密钥,但经典信道必须假设可被窃听(只保证可认证,不保证保密)。

下面按五阶段逐一拆解,并给出一个可复现的仿真参数示例。示例中取密钥长度 N=16 比特、量子比特误码率设定为 QBER≈3%(合理假设值,用于演示流程,非实测数据)。

阶段一:制备(Alice,量子信道发送端)

Alice 对每个比特独立做两件事:随机选一个基矢(Z 基记作 0,对应 |0⟩/|1⟩;X 基记作 1,对应 |+⟩/|−⟩),再随机选一个比特值,按基矢编码成四种量子态之一。仿真中通常用两个随机数组 basisA[i] 与 bitA[i] 表示,编码规则为:Z 基下比特 0→|0⟩、1→|1⟩;X 基下比特 0→|+⟩、1→|−⟩。这一步的输出是长度为 N 的量子态序列,经量子信道逐个发送给 Bob。

阶段二:测量(Bob,量子信道接收端)

Bob 对每个到达的量子态独立随机选择测量基 basisB[i],他无法知道 Alice 用了哪个基。若基矢一致,测量结果确定等于 Alice 的比特;若基矢不一致,结果在 Z/X 两组共轭基下完全随机,只有 50% 概率与 Alice 相同。仿真中可对“基一致”位置直接复制比特,对“基不一致”位置用随机数生成测量值,从而模拟理想信道;若要模拟噪声,则再以概率 QBER 翻转结果。

阶段三:筛选(经典信道,公开比对基矢)

Bob 通过经典信道公开自己的基矢序列 basisB,Alice 比对后公开哪些位置基矢一致(只公开“一致/不一致”,绝不公开比特值)。双方保留基矢一致的位置,得到筛选密钥(sifted key)。在 N=16、双方基矢独立均匀随机的期望下,约有一半位置被保留,示例中可得到约 8 位筛选密钥。筛选后双方还需抽样一部分比特公开比对,估算 QBER,用于判断是否遭窃听——这是筛选阶段附带的“安全体检”。

阶段四:纠错(经典信道,双向协商)

筛选密钥在理想情况下应完全一致,但信道噪声或窃听会导致少量分歧。纠错阶段双方通过经典信道交换校验信息(如奇偶校验位、级联纠错的分块校验),定位并修正分歧比特。仿真中常用简化做法:Alice 把筛选密钥按块分组,公开每块的奇偶校验值,Bob 比对自身分块奇偶值,不一致则定位并翻转。纠错会泄露部分信息,因此必须记录泄露比特数,供保密放大阶段扣除。

阶段五:保密放大(经典信道,压缩提纯)

纠错后双方密钥一致,但窃听者可能已掌握部分信息。保密放大用公开的压缩函数(如 Toeplitz 矩阵哈希)把 n 位密钥压缩为 m 位更短的最终密钥,使窃听者信息量降到可忽略。压缩量由 QBER 与纠错泄露量决定,示例中若筛选密钥 8 位、纠错泄露 2 位、安全余量取 2 位,则最终密钥约 4 位。最终双方各自计算哈希并比对摘要,确认密钥一致后即可用于一次性密码本等场景。

BB84 五阶段流程与双信道角色 量子信道(仅传量子态,可被窃听/截获) ① 制备 Alice 随机基矢 + 随机比特 → 四种量子态 |0⟩ |1⟩ |+⟩ |−⟩ 单光子序列 ② 测量 Bob 独立随机选基 → 记录测量结果 经典信道(公开可认证,但假设可被窃听,不传密钥明文) ③ 筛选 Bob 公开基矢,Alice 公开一致位置 保留一致位 → 筛选密钥 + 抽样估 QBER ④ 纠错 交换奇偶校验/分块校验 定位并翻转分歧位,记录泄露量 ⑤ 保密放大 Toeplitz 哈希压缩 扣除泄露与安全余量 → 最终密钥 仿真示例(N=16,QBER≈3%,合理假设值) 制备:basisA = 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 ;bitA 随机 测量:basisB 独立随机 → 基一致位置约 8 个 → 筛选密钥约 8 位 纠错:分块奇偶校验,泄露约 2 位;保密放大:8 − 2 − 2 = 4 位最终密钥 安全判据:抽样 QBER 明显高于阈值(如 >11%)→ 判定存在窃听,丢弃本轮密钥

双信道角色划分:为什么不能混用

把两条信道放在一起看,职责边界非常清楚。量子信道的任务是建立关联:Alice 的量子态与 Bob 的测量结果之间形成统计相关性,这种相关性是密钥的“原材料”。它的安全性来自量子力学——未知量子态不可克隆、测量会扰动状态,窃听者 Eve 若截获并重发,必然引入额外误码。经典信道的任务是提炼与验证:基矢比对、纠错校验、哈希压缩、最终一致性确认都在这里完成。经典信道不要求保密,但要求可认证(确认对方真是 Bob/Alice),否则中间人可冒充。仿真实现时,两条信道应作为两个独立模块:量子信道模块输出测量结果,经典信道模块只传递公开信息,且所有公开信息都要计入“泄露账本”。

常见误区:把基矢比对放在量子信道里“悄悄传”,或把比特值直接放进经典信道比对。前者违背协议假设,后者直接泄露密钥。正确做法是:基矢可公开,比特值在筛选后绝不公开,纠错只公开校验信息而非原始比特。

仿真实现要点与结果判读

实现五阶段时,建议用统一的数据结构贯穿全程:每个位置维护 basisA、bitA、basisB、bitB 四个字段,筛选阶段生成保留索引列表,纠错阶段在保留索引上操作,保密放大阶段对最终比特串做哈希。判读结果时看三个量:筛选密钥长度(应约为 N/2)、抽样 QBER(应低于安全阈值)、最终密钥长度(应大于 0 且明显短于筛选密钥)。若 QBER 超阈值或最终密钥长度为 0,说明本轮不安全,应中止并重新运行。示例中的 16→8→4 位只是教学演示,实际系统 N 通常取 10⁴ 以上量级,才能保证最终密钥有实用长度。

复现建议:先用理想信道(QBER=0)跑通五阶段,确认筛选后双方密钥完全一致;再逐步注入 1%、3%、5% 误码,观察纠错能否修正、保密放大后密钥是否仍一致;最后把 QBER 调到 12% 以上,验证协议能正确判定“存在窃听”并拒绝出钥。