3. 基于弱相干脉冲的诱骗态 BB84 参数计算
弱相干脉冲诱骗态 BB84 的增益与误码率模型
弱相干光源(WCS)的光子数服从泊松分布,脉冲平均光子数为 μ 时,含 n 个光子的概率为 P(n)=e−μμn/n!。多光子脉冲会带来光子数分离(PNS)攻击风险,诱骗态方法通过发送不同强度(信号态 μ、诱骗态 ν、真空态 ω≈0)并分别统计增益与误码率,来估计单光子成分的贡献。本节以 GYS 三强度诱骗态 BB84 为对象,完成增益、误码率与安全密钥率的数值计算。
核心公式与参数约定
设 Alice 发送强度 k∈{μ, ν, ω},Bob 端探测效率 ηB,暗计数率 pd(每脉冲每探测器),系统总效率 η=ηB·10−αL/10,其中 α 为光纤损耗系数(dB/km),L 为传输距离(km)。
- 增益(Yield):Yn = 1 − (1−η)n + pd(近似,忽略暗计数与信号重合的高阶项)。
- 总增益:Qk = Σn Pk(n)·Yn = 1 − e−kη + pd。
- 单光子误码率:e1 = (e0·Y0 + ed·η) / Y1,其中 e0=0.5 为暗计数误码,ed 为光学对准误码。
- 总误码率:EkQk = e0·Y0 + ed·(1−e−kη)。
- 安全密钥率(GLLP 下界):R ≥ q·[−Qμ·f(Eμ)·H2(Eμ) + Q1L·(1−H2(e1U))],q=1/2 为基矢筛选因子,f 为纠错效率,H2 为二元熵。
数值计算示例
取 α=0.2 dB/km、ηB=0.1、pd=1×10−6、ed=0.01、μ=0.5、ν=0.1、ω=0,纠错效率 f=1.16。以 L=50 km 为例,η=0.1×10−1=0.01。
- Y0=pd=1×10−6;Y1=1−(1−0.01)+1×10−6≈0.010001。
- Qμ=1−e−0.5×0.01+1×10−6≈1−0.995012+0.000001≈0.004989。
- Qν=1−e−0.1×0.01+1×10−6≈0.0010005。
- EμQμ=0.5×1×10−6+0.01×(1−e−0.005)≈5×10−7+0.01×0.0049875≈5.04×10−5,故 Eμ≈0.0101。
- e1=(0.5×1×10−6+0.01×0.01)/0.010001≈(5×10−7+1×10−4)/0.010001≈0.01005。
- Q1L 用三强度估计:Q1L≈(μ²e−μ/(μν−ν²))·(Qνeν−Qωeω−(ν²/μ²)(Qμeμ−Qωeω)),代入得 Q1L≈0.0039。
- H2(0.0101)≈0.0808,H2(0.01005)≈0.0805。
- R≥0.5×[−0.004989×1.16×0.0808+0.0039×(1−0.0805)]≈0.5×[−0.000468+0.003586]≈0.00156,即约 1.56×10−3 每脉冲。
随 L 增大,η 指数下降,Qμ 与 Q1L 同步衰减,而暗计数项相对占比上升,e1U 增大,最终 R 降至 0。上图中曲线与 R=0 的交点即该参数组下的最大安全距离(示意约 130 km,实际值需按上述公式逐点计算)。
计算时注意:Qω 用真空态实测增益(约 2pd),不要直接置零;e1U 需用诱骗态误码率上界估计,而非直接取 e1 公式值,否则会高估密钥率。
可执行计算脚本(Python)
import numpy as np
def h2(x):
x = np.clip(x, 1e-12, 1-1e-12)
return -x*np.log2(x) - (1-x)*np.log2(1-x)
def key_rate(L, mu=0.5, nu=0.1, omega=0.0,
eta_B=0.1, pd=1e-6, ed=0.01, alpha=0.2, f=1.16):
eta = eta_B * 10**(-alpha*L/10)
Y0 = pd
Y1 = 1 - (1-eta) + pd
Q_mu = 1 - np.exp(-mu*eta) + pd
Q_nu = 1 - np.exp(-nu*eta) + pd
Q_om = 2*pd
E_mu = (0.5*Y0 + ed*(1-np.exp(-mu*eta))) / Q_mu
# 三强度估计 Q1 下界
num = Q_nu*np.exp(nu) - Q_om - (nu**2/mu**2)*(Q_mu*np.exp(mu) - Q_om)
Q1L = mu**2*np.exp(-mu)/(mu*nu - nu**2) * num
Q1L = max(Q1L, 0.0)
e1U = (E_mu*Q_mu - 0.5*Y0) / max(Q1L, 1e-12) # 简化上界
e1U = min(max(e1U, 0.0), 0.5)
R = 0.5 * (-Q_mu*f*h2(E_mu) + Q1L*(1 - h2(e1U)))
return R, Q_mu, E_mu, Q1L, e1U
for L in [0, 25, 50, 75, 100, 125, 150]:
R, Qm, Em, Q1, e1 = key_rate(L)
print(f"L={L:3d} km R={R:.3e} Q_mu={Qm:.3e} E_mu={Em:.4f} Q1L={Q1:.3e} e1U={e1:.4f}")
运行后观察 R 随 L 单调下降并在某距离处穿越 0,该距离即当前参数下的最大安全传输距离。改变 μ、ν 或 ηB 可观察曲线平移,为后续强度与概率优化提供基线。
上述 e1U 采用简化上界,仅用于教学演示趋势;严格安全性证明需使用诱骗态误码率上界公式 e1U=(EνQνeν−EωQω)/(Y1L·ν) 等标准表达式,并保证 Q1L、Y1L 的统计涨落容差。