4. 诱骗态强度与概率配置的密钥率优化

决策变量与密钥率的关系

在诱骗态 BB84 中,发送端每脉冲随机选择一种强度:信号态强度 μ(概率 p_μ)、弱诱骗态强度 ν(概率 p_ν)、真空态强度 0(概率 p_0,通常取 p_0 = 1 − p_μ − p_ν)。安全密钥率下界为

R ≥ q · [ −Q_μ f(E_μ) H₂(E_μ) + Q₁(1 − H₂(e₁)) ]

其中 Q_μ、E_μ 为信号态的增益与量子误码率,Q₁、e₁ 为单光子脉冲的增益与误码率,由 ν 与真空态的统计量估计得到。μ 增大可提高 Q₁ 的估计精度与计数率,但会抬高多光子比例;ν 过小则统计涨落大、估计方差高。因此存在一组使 R 最大的 (μ, ν, p_μ, p_ν)。

决策变量(扫描网格) μ ∈ [0.30, 0.80] ν ∈ [0.02, 0.20] p_μ ∈ [0.50, 0.90] p_ν ∈ [0.05, 0.30] 约束:p_μ + p_ν ≤ 0.95 弱相干光源 + 信道模型 η_ch = 10^(−αL/10) Y₀ = 暗计数率 e_d = 本底误码 η_det = 探测效率 → 各强度增益 Q_k、误码 E_k 单光子参数估计 Q₁ ≥ 下界(ν, 0) e₁ ≤ 上界(ν, 0) f(E_μ) 纠错效率 H₂(·) 二元熵 → 代入 R 公式 R(μ,ν, p_μ,p_ν) 取 max 记录最优 参数组合 固定 ν、p_μ、p_ν 时,R 随信号态强度 μ 的变化(示意) μ R 0.30 0.45 0.60 0.75 R_max 对应 μ* μ 过小:单光子计数少,Q₁ 估计方差大 μ 过大:多光子比例上升,R 下降

参数扫描程序实现

下面给出一个可直接运行的 Python 脚本。它用弱相干光源的增益/误码解析式构造物理模型,在四维网格上扫描 (μ, ν, p_μ, p_ν),对每个组合计算安全密钥率下界,并输出最优配置。所有参数均为教学示例值,结果由给定输入直接推出,非实测数据。

import numpy as np
from itertools import product

# ---------- 1. 信道与探测器参数(示例值) ----------
alpha   = 0.2      # 光纤损耗 dB/km
L       = 50.0     # 传输距离 km
eta_det = 0.1      # 探测器效率
Y0      = 1e-6     # 暗计数率(每脉冲)
e_d     = 0.02     # 本底误码率
f_ec    = 1.16     # 纠错效率
q       = 0.5      # 基比对概率(BB84 取 1/2)

eta_ch = 10 ** (-alpha * L / 10.0)
eta    = eta_ch * eta_det

def H2(x):
    x = np.clip(x, 1e-12, 1 - 1e-12)
    return -x * np.log2(x) - (1 - x) * np.log2(1 - x)

# ---------- 2. 弱相干光源的增益与误码 ----------
def gain(mu):
    # Y0 为暗计数,1-(1-eta)^n 近似为 n*eta(小 eta 下)
    return Y0 + 1 - np.exp(-eta * mu)

def qber(mu):
    Q = gain(mu)
    return (Y0 * e_d + (1 - np.exp(-eta * mu)) * e_d) / Q

# ---------- 3. 单光子参数估计(ν 与真空态) ----------
def single_photon(nu, mu):
    Q_nu, E_nu = gain(nu), qber(nu)
    Q_0,  E_0  = gain(0.0), qber(0.0)
    # 标准诱骗态估计(简化下界)
    Q1_lb = (nu * mu / (mu - nu)) * (
        Q_nu * np.exp(nu) - Q_0 - (nu**2 / mu**2) * (gain(mu) * np.exp(mu) - Q_0)
    )
    e1_ub = (E_nu * Q_nu * np.exp(nu) - E_0 * Q_0) / (
        (nu * mu / (mu - nu)) * (Q_nu * np.exp(nu) - Q_0 - (nu**2/mu**2)*(gain(mu)*np.exp(mu)-Q_0))
    )
    return max(Q1_lb, 0.0), min(max(e1_ub, 0.0), 0.5)

# ---------- 4. 安全密钥率 ----------
def key_rate(mu, nu, p_mu, p_nu):
    Q_mu, E_mu = gain(mu), qber(mu)
    Q1, e1 = single_photon(nu, mu)
    R = q * (-Q_mu * f_ec * H2(E_mu) + Q1 * (1 - H2(e1)))
    return R

# ---------- 5. 四维网格扫描 ----------
mu_grid   = np.linspace(0.30, 0.80, 26)
nu_grid   = np.linspace(0.02, 0.20, 19)
pmu_grid  = np.linspace(0.50, 0.90, 21)
pnu_grid  = np.linspace(0.05, 0.30, 11)

best = {"R": -np.inf}
for mu, nu, p_mu, p_nu in product(mu_grid, nu_grid, pmu_grid, pnu_grid):
    if p_mu + p_nu > 0.95:
        continue
    R = key_rate(mu, nu, p_mu, p_nu)
    if R > best["R"]:
        best = {"R": R, "mu": mu, "nu": nu, "p_mu": p_mu, "p_nu": p_nu}

print("最优配置:")
for k, v in best.items():
    print(f"  {k:5s} = {v:.4f}")

结果判读与验证要点

  • R 必须为正:若最优 R ≤ 0,说明当前距离/损耗下无法生成安全密钥,应缩短 L 或降低暗计数。
  • μ* 与 ν* 的合理性:典型最优 μ 在 0.4–0.6、ν 在 0.05–0.15 之间;若 μ* 顶到网格边界,应扩大扫描范围。
  • 概率约束:p_μ + p_ν 接近 0.95 时真空态概率过小,会削弱 Q₁ 估计的可靠性,可加约束 p_0 ≥ 0.05。
  • 网格收敛性:将网格步长减半重跑,若最优 R 变化小于 1%,认为扫描已收敛。
  • 物理一致性:检查 Q₁ ≤ Q_μ、e₁ ≤ 0.5,否则说明估计公式在边界处失效。
扫描时先固定 p_μ、p_ν 对 (μ, ν) 做二维粗扫定位峰值区域,再在峰值附近加密网格,可显著减少计算量而不损失精度。