第一章:BB84协议中的光子偏振编码:3个实验让你看透量子密钥生成过程
在量子通信领域,BB84协议是首个实现量子密钥分发(QKD)的方案,由Charles Bennett和Gilles Brassard于1984年提出。其核心思想是利用单光子的偏振态来编码比特信息,并通过量子力学的不可克隆定理保障密钥的安全性。以下三个实验将逐步揭示光子偏振如何参与密钥生成。
准备阶段:构建光子偏振基组
实验中需定义两组正交偏振基:
- 水平/垂直基(H/V):0°(表示0)、90°(表示1)
- 对角基(D/A):45°(表示0)、135°(表示1)
发送方(Alice)随机选择一个基组并制备对应偏振的光子,接收方(Bob)也随机选择基组进行测量。
传输与测量:模拟量子信道行为
当Bob使用的测量基与Alice一致时,结果准确;若基组不匹配,测量结果有50%概率出错。例如:
| Alice比特 | Alice基组 | 发送偏振 | Bob基组 | 测量结果 |
|---|
| 0 | H/V | 0° | H/V | 0(正确) |
| 1 | D/A | 135° | H/V | 随机(错误) |
密钥协商:公开比对与纠错
Alice和Bob通过经典信道公布各自使用的基组(不透露比特值),仅保留基组匹配的部分作为原始密钥。随后执行误码率检测,若超出阈值则怀疑存在窃听(Eve)。
# 模拟基组比对过程
alice_bases = ['H/V', 'D/A', 'H/V', 'D/A']
bob_bases = ['H/V', 'H/V', 'D/A', 'D/A']
raw_key = [0, 1, 0, 1]
final_key = [raw_key[i] for i in range(len(raw_key)) if alice_bases[i] == bob_bases[i]]
print("最终密钥:", final_key) # 输出: [0, 1]
该代码展示了如何筛选匹配基组下的有效比特。整个流程体现了量子态测量的随机性与安全性基础。
第二章:BB84协议的理论基础与偏振编码原理
2.1 量子态叠加与测量塌缩的基本概念
量子态的叠加原理
在量子计算中,量子比特(qubit)可以同时处于 |0⟩ 和 |1⟩ 的线性组合状态,表示为 $|\psi\rangle = \alpha|0\rangle + \beta|1\rangle$,其中 $\alpha$ 和 $\beta$ 为复数且满足 $|\alpha|^2 + |\beta|^2 = 1$。这种状态共存的现象称为叠加。
测量导致的态塌缩
一旦对量子态进行测量,系统将概率性地坍缩至某一本征态。例如,测量 $|\psi\rangle$ 得到 |0⟩ 的概率为 $|\alpha|^2$,得到 |1⟩ 的概率为 $|\beta|^2$。
# 量子叠加态示例(使用Qiskit)
from qiskit import QuantumCircuit
qc = QuantumCircuit(1)
qc.h(0) # 应用Hadamard门,创建叠加态
qc.measure_all()
上述代码通过Hadamard门将量子比特置于等概率叠加态。测量后,系统以50%概率返回0或1,体现测量引发的随机塌缩行为。
2.2 光子偏振态的布洛赫球表示方法
偏振态与量子态的对应关系
光子的偏振态可视为两能级量子系统,其水平偏振 |H⟩ 与垂直偏振 |V⟩ 构成希尔伯特空间的一组正交基。任意偏振态可表示为:
|ψ⟩ = α|H⟩ + β|V⟩,其中 α、β 为复数且满足 |α|² + |β|² = 1。
布洛赫球上的几何映射
通过参数化 α = cos(θ/2),β = e^(iφ)sin(θ/2),偏振态可唯一对应布洛赫球面上的点 (θ, φ)。球北极代表 |H⟩,南极代表 |V⟩,赤道面则对应线偏振与圆偏振态。
| 偏振类型 | 布洛赫球坐标 (θ, φ) |
|---|
| 水平偏振 |H⟩ | (0, 0) |
| 垂直偏振 |V⟩ | (π, 0) |
| 右旋圆偏振 | (π/2, π/2) |
# 布洛赫球坐标计算示例
import numpy as np
def polarization_to_bloch(alpha, beta):
theta = 2 * np.arccos(abs(alpha))
phi = np.angle(beta) - np.angle(alpha)
return theta, phi
该函数将量子态系数转换为球面坐标,适用于任意纯偏振态的可视化分析。
2.3 BB84协议中四态偏振编码的设计逻辑
在BB84协议中,四态偏振编码是实现量子密钥分发安全性的核心机制。该设计利用光子的偏振态作为信息载体,选取两组非正交基:水平-垂直基(H/V)与对角基(+45°/−45°),构成四个独立偏振态:|H⟩、|V⟩、|+45°⟩、|−45°⟩。
编码状态映射规则
每个量子比特(qubit)由以下方式编码:
- H 基: |H⟩ 表示 0,|V⟩ 表示 1
- D 基: |+45°⟩ 表示 0,|−45°⟩ 表示 1
发送方(Alice)随机选择基并发送对应偏振态光子,接收方(Bob)亦随机选择测量基进行检测。
安全性原理
| Alice 发送态 | Bob 测量基正确 | 测量结果 | 窃听者(Eve)干扰概率 |
|---|
| |H⟩ 或 |V⟩ | H/V 基 | 准确 | 无扰动 |
| |+45°⟩ 或 |−45°⟩ | D 基 | 准确 | 无扰动 |
| 任意态 | 错误基 | 随机结果 | 引入 ≥25% 错误率 |
由于量子不可克隆定理,任何窃听行为都会破坏原有量子态,从而被通信双方通过误码率检测发现。
# 模拟四态偏振态生成
import random
bases = ['H/V', 'D'] # 两种测量基
states = {'H/V': ['H', 'V'], 'D': ['+45', '-45']}
alice_basis = random.choice(bases) # Alice 随机选基
alice_bit = random.randint(0, 1) # 随机选比特值
sent_state = states[alice_basis][alice_bit]
print(f"Alice 使用 {alice_basis} 基,发送状态: {sent_state}")
上述代码模拟了Alice在BB84中随机选择编码基与比特的过程。其核心在于确保每个比特的编码方式不可预测,从而增强抗窃听能力。运行时每次输出不同组合,体现协议的随机性本质。
2.4 基矢选择与窃听检测的量子力学依据
在量子密钥分发中,基矢选择是保障安全性的核心机制。通信双方随机选择相互非正交的测量基进行编码与测量,这一过程源于量子不可克隆定理:任何试图窃听的第三方无法复制未知量子态而不引入扰动。
典型基矢配置
常见的BB84协议采用两组共轭基矢:
- 计算基:|0\rangle, |1\rangle
- Hadamard基:|+\rangle = \frac{|0\rangle + |1\rangle}{\sqrt{2}}, |-\rangle = \frac{|0\rangle - |1\rangle}{\sqrt{2}}
窃听检测机制
当存在窃听者(Eve)时,其测量会坍缩量子态。合法通信方通过公开比对部分基矢一致性,估算误码率。若误码率超过阈值(通常为11%),则判定信道不安全。
// 模拟基矢匹配过程
func matchBases(aliceBasis, bobBasis []int) []int {
var matchedIndices []int
for i := range aliceBasis {
if aliceBasis[i] == bobBasis[i] {
matchedIndices = append(matchedIndices, i)
}
}
return matchedIndices // 返回基矢一致的索引位
}
该函数模拟了Alice与Bob在基矢协商阶段的匹配逻辑,仅当双方选择相同基时,对应比特才可用于生成密钥。
2.5 密钥生成过程中的信息协调与隐私放大
在量子密钥分发(QKD)系统中,通信双方需通过经典信道完成密钥的后处理。该过程包括两个核心阶段:信息协调与隐私放大。
信息协调:纠正密钥差异
由于信道噪声或窃听行为,Alice 与 Bob 的原始密钥可能存在误差。信息协调通过纠错协议(如 Cascade 或 Winnow 算法)同步密钥。以 Cascade 协议为例:
# Cascade 协议片段:分块纠错
def cascade_correct(alice_key, bob_key, block_size):
for i in range(0, len(alice_key), block_size):
block_a = alice_key[i:i+block_size]
block_b = bob_key[i:i+block_size]
if sum(block_a) % 2 != sum(block_b) % 2: # 奇偶校验不匹配
binary_search_fix(block_a, block_b, i) # 定位并修正错误位
该算法通过多轮奇偶校验定位错误比特,逐步减少密钥差异,确保双方密钥一致性。
隐私放大:消除窃听信息
即使完成纠错,敌手可能掌握部分密钥信息。隐私放大利用哈希函数将已泄露信息的影响降至可忽略水平:
- 选择安全哈希算法(如 SHA-3)
- 输入协商后的密钥与随机种子
- 输出短于原始密钥的最终密钥
此过程有效压缩敌手的知识,实现信息论安全。
第三章:搭建量子密钥分发实验环境
3.1 实验所需光学器件选型与功能解析
核心光学器件选型原则
在构建高精度干涉实验系统时,器件的波长匹配性、透光率及表面平整度是关键参数。需根据激光源波长(如532nm)选择对应增透膜光学元件,以降低反射损耗。
主要器件功能说明
- 分束器(Beam Splitter):将入射光按指定比例分为参考光与测量光路;
- 平面镜(Mirror):用于光路转向,要求λ/10面形精度以减少波前畸变;
- 光电探测器(Photodetector):将光信号转换为电信号,带宽需匹配调制频率。
典型参数对比表
| 器件 | 材料 | 中心波长(nm) | 透过率(%) |
|---|
| 分束器 | 熔融石英 | 532 | ≥95 |
| 反射镜 | BK7+镀银 | 532 | 反射率≥98 |
3.2 偏振编码光源的构建与校准方法
系统架构设计
偏振编码光源由激光器、电光调制器(EOM)和偏振控制器组成。通过调节电压相位差实现线偏振态到椭圆偏振态的转换,确保量子信号在传输过程中的稳定性。
校准流程实现
校准过程依赖于斯托克斯参量测量,使用四步法获取偏振态信息:
- 施加0°参考偏振角,采集光强I₀
- 依次旋转至45°、90°、135°,记录对应光强
- 计算斯托克斯参数S₁、S₂、S₃
- 反馈调节偏振控制器直至目标偏振态收敛
# 示例:斯托克斯参数计算
I0, I45, I90, I135 = 0.98, 0.76, 0.02, 0.24
S1 = 2 * I45 - I0 - I90
S2 = 2 * I135 - I0 - I90
print(f"S1: {S1:.3f}, S2: {S2:.3f}")
上述代码基于四位置法测得的光强值,计算关键斯托克斯参数S₁与S₂,用于表征线偏振分量的幅度与方向,指导后续闭环校准。
3.3 接收端基矢切换与单光子探测技术
在量子密钥分发系统中,接收端需根据发送端的编码基矢动态调整测量基矢。这一过程依赖高速、低损耗的基矢切换机制,通常通过电光调制器(EOM)实现偏振基的选择。
基矢切换控制逻辑
// 基矢选择信号控制模块
module basis_selector (
input clk,
input [1:0] basis_ctrl, // 控制信号:00-HV, 11-DP
output reg [1:0] v_bias // 输出对应电压配置
);
always @(posedge clk) begin
case (basis_ctrl)
2'b00: v_bias <= 2'd0; // 水平/垂直基
2'b11: v_bias <= 2'd3; // 对角/反向对角基
default: v_bias <= 2'd1;
endcase
end
endmodule
上述Verilog代码实现了一个简单的基矢选择器,根据控制信号输出对应的偏置电压配置,驱动EOM完成基矢切换。时钟同步确保测量时机精确匹配光子到达时间。
单光子探测关键技术
采用超导纳米线单光子探测器(SNSPD),具备高探测效率(>90%)、低暗计数率(<10 cps)和短恢复时间。探测事件通过时间标记单元(TTU)记录,实现纳秒级时间分辨。
第四章:三个关键实验揭示密钥生成机制
4.1 实验一:偏振态制备与测量匹配验证
在量子光学实验中,精确制备与测量光子的偏振态是实现量子通信和量子密钥分发的基础。本实验旨在验证偏振态制备系统与测量装置之间的匹配性。
实验配置
采用可调偏振片与波片组合生成水平(H)、垂直(V)、对角(D)和圆偏振(R)态,使用偏振分束器(PBS)与单光子探测器进行投影测量。
数据采集示例
# 偏振态测量计数示例
states = ['H', 'V', 'D', 'R']
expected = [1000, 0, 500, 500] # 理论投影值
measured = [987, 12, 493, 488] # 实际探测计数
for s, exp, act in zip(states, expected, measured):
print(f"{s}: 理论={exp}, 实测={act}, 误差={abs(exp-act)}")
上述代码用于比对理论与实测计数,评估系统保真度。计数偏差反映光学对准与器件消光比限制。
结果对比
| 偏振态 | 理论计数 | 实测计数 | 保真度 |
|---|
| H | 1000 | 987 | 98.7% |
| V | 0 | 12 | 98.8% |
| D | 500 | 493 | 98.6% |
4.2 实验二:基矢不匹配导致的误码率分析
在量子密钥分发系统中,发送方与接收方基矢选择的一致性直接影响通信质量。当Alice发送的光子偏振基与Bob测量基不匹配时,测量结果将随机化,从而引入误码。
误码率计算模型
理论误码率可通过以下公式建模:
BER = 0.5 × (1 - cos²(Δθ))
其中 Δθ 为基矢角度偏差。当 Δθ = 45° 时,cos²(Δθ) = 0.5,BER 达到 25%,构成系统性能瓶颈。
实验数据对比
| 基矢偏差角 (°) | 实测误码率 (%) | 理论值 (%) |
|---|
| 0 | 0.8 | 0.0 |
| 22.5 | 7.2 | 7.6 |
| 45 | 24.9 | 25.0 |
观测数据与理论高度吻合,验证了基矢对齐在QKD中的关键作用。系统需引入动态校准机制以抑制此类误码。
4.3 实验三:模拟窃听下的量子不可克隆检验
在量子通信中,窃听行为会破坏量子态的完整性,本实验通过模拟中间人攻击验证量子不可克隆定理的防护能力。
实验设计流程
光源 → 量子信道(含窃听模块)→ 接收方测量 → 比对密钥误码率
攻击者尝试复制传输中的量子比特,但由于量子不可克隆定理,任何复制操作都会引入扰动。
关键代码实现
# 模拟窃听者对量子比特的非法测量
def eavesdrop(qubit):
# 窃听者随机选择基进行测量
basis = random.choice(['Z', 'X'])
measurement = measure(qubit, basis) # 测量导致原始态坍缩
return measurement, basis # 返回窃听结果和所用基
该函数模拟窃听者对量子态的非法介入。由于测量会改变量子态,合法通信双方在后续基比对中将发现异常误码。
误码率对比表
| 场景 | 平均误码率 |
|---|
| 无窃听 | ≈1.2% |
| 存在窃听 | ≈25.6% |
4.4 实验数据处理与最终安全密钥提取
原始数据预处理
在完成量子信号传输后,收发双方需对采集到的原始比特序列进行预处理。该过程包括时间戳对齐、基矢比对和无效事件剔除。仅当发送方与接收方使用相同测量基时,对应比特才被保留用于后续分析。
误码率计算与参数估计
# 计算量子比特误码率(QBER)
def calculate_qber(alice_bits, bob_bits):
mismatch = sum(a != b for a, b in zip(alice_bits, bob_bits))
return mismatch / len(alice_bits)
qber = calculate_qber(alice_key, bob_key)
print(f"Quantum Bit Error Rate: {qber:.4f}")
上述代码通过比对合法基下的比特序列计算QBER,是评估信道安全性的重要指标。若QBER超过协议阈值(通常为11%),则判定存在窃听行为,终止密钥生成。
密钥提取流程
- 执行基匹配,筛选有效测量结果
- 计算QBER并进行参数估计
- 实施信息协调(纠错)以同步比特串
- 进行隐私放大,利用哈希函数压缩潜在泄露信息
第五章:从实验室到现实应用:BB84协议的发展与挑战
实际部署中的信道损耗问题
在城市量子通信网络中,光纤信道的衰减严重限制了BB84协议的有效传输距离。例如,在北京—天津量子骨干网中,平均每50公里需部署一个可信中继节点以补偿光子损耗。为应对这一挑战,研究人员采用弱相干脉冲(WCP)和诱骗态技术,显著提升密钥生成率。
- 使用诱骗态可有效防御光子数分离攻击(PNS)
- 单光子探测器需冷却至-80°C以降低暗计数率
- 时间同步精度要求达到皮秒级
商用系统的实现案例
瑞士ID Quantique公司推出的Clavis2平台已支持完整的BB84协议栈。其核心模块通过FPGA实现基矢选择与后处理逻辑,密钥协商流程如下:
// 模拟基矢比对过程
func siftBases(aliceBasis, bobBasis []int) []int {
var siftedIdx []int
for i := range aliceBasis {
if aliceBasis[i] == bobBasis[i] {
siftedIdx = append(siftedIdx, i)
}
}
return siftedIdx // 返回匹配基矢的索引
}
自由空间量子密钥分发
中国“墨子号”卫星实现了全球首个星地BB84实验。上行链路受大气湍流影响严重,采用自适应光学系统进行波前校正。关键参数如下表所示:
| 参数 | 数值 | 单位 |
|---|
| 平均光子数μ | 0.1 | photons/pulse |
| 误码率QBER | 3.7 | % |
| 密钥生成速率 | 0.3 | bps |
星地QKD流程图:
卫星星载激光器 → 大气信道 → 地面望远镜接收 → 单光子探测 → 基矢公布 → 误码评估 → 隐私放大