引言
对称加密本身是安全的——只要密钥足够长、只用一次、且只有收发双方知道。问题从来不在算法,而在密钥怎么送到对方手里。经典方案依赖计算困难性(RSA、Diffie-Hellman),一旦攻击者拥有足够的算力,或者今天先截获密文、等未来量子计算机成熟再解密(Harvest-Now-Decrypt-Later),安全性就被时间击穿。想先了解这套经典体系的边界,可以先看 经典密码学基础 。
量子密钥分发(Quantum Key Distribution, QKD)换了一条路:安全性不再依赖数学难题,而是依赖物理定律。窃听者任何测量都会扰动量子态,从而暴露自己。本文从 BB84 的动机讲起,逐步覆盖协议族、实际系统的侧信道攻防、后处理流程,以及组网工程现状与定位争议。
阅读前提:了解量子比特的叠加与测量即可,纠缠与贝尔态的物理基础会在第 3 节一并交代。
1. 为什么经典密钥分发不够用
1.1 计算安全 vs 信息论安全
香农证明了**一次性密码本(One-Time Pad, OTP)**在密钥真随机、密钥长度等于明文、且只使用一次的条件下具有信息论安全——无论攻击者算力多大都无法破解。但 OTP 要求双方预先共享等长的随机密钥,把问题从「加密」平移到了「分发」。
经典分发方案的软肋在于:
| 方案 | 依赖假设 | 失效条件 |
|---|---|---|
| RSA 密钥传输 | 大整数分解困难 | Shor 算法 + 足够大的量子计算机 |
| ECDH 密钥协商 | 椭圆曲线离散对数困难 | 同上 |
| 预共享密钥人工分发 | 物理渠道可信 | 不可扩展、不可审计 |
| 量子密钥分发 | 量子力学定律 | 实现层的侧信道、认证缺失 |
1.2 量子力学给出的三条保障
- 不可克隆定理(No-Cloning Theorem):未知量子态无法被完美复制,窃听者不能先抄一份再放行。
- 测量扰动:对非正交基下的量子态进行测量,必然以一定概率改变其状态。
- 海森堡不确定性原理:共轭基(如偏振的水平/垂直与对角)无法同时精确获知。
这三条合起来,把「窃听是否被发现」变成可量化的问题:任何获取信息的尝试都会引入可统计的误码率上升。
1.4 威胁时间线:为什么现在就要动
「量子计算机还没造出来」不是拖延的理由。攻击者的时间线是这样的:
2020s 攻击者批量抓取并存储加密流量(Harvest-Now)
2030s+ 足够强的量子计算机出现,Shor 算法破解当时的密钥协商记录
也就是说,今天被录下的密文,会在未来被解开。凡是需要长期保密的场景(医疗、政务、军工、知识产权),迁移窗口就是现在。这正是 QKD 与后量子密码共同的时间压力来源。
1.3 与「量子加密」的区分
需要澄清一个常见混淆:QKD 只负责分发密钥,不负责加密数据本身。分发完成后,双方仍用 AES、OTP 等经典算法加密通信内容。因此 QKD 的威胁模型是「密钥分发链路被窃听」,而不是「算法被破解」。把 QKD 当成加密算法是工程上最常见的误解。
2. BB84 协议:偏振编码与基矢比对
BB84(Bennett-Brassard 1984)是最早也是部署最广的 QKD 协议,理解它就理解了整个家族的核心思想。
2.1 编码
Alice 随机选择基矢与比特值,把每个比特编码到单个光子的偏振上:
- 直角基(Z 基,
+):0 → 0°(水平),1 → 90°(垂直) - 对角基(X 基,
×):0 → 45°,1 → 135°
同一基内的两个态正交,可被完美区分;不同基之间的态夹角 45°,投影后无法确定原值。
2.2 流程
1. Alice 发送 N 个随机偏振的光子
2. Bob 对每个光子随机选 Z 或 X 基测量,记录结果
3. 双方通过经典信道公布各自使用的基(不公布比特值)
4. 保留基一致的位置 → 筛后密钥(sifted key),约为 N/2
5. 抽样公布部分比特,估算量子比特误码率 QBER
6. 若 QBER 超过阈值(BB84 约 11%),判定存在窃听,丢弃
7. 对剩余比特做纠错 + 隐私放大 → 最终安全密钥
2.3 为什么窃听必然暴露
若 Eve 采用截获-重发(Intercept-Resend):她随机选基测量再按结果重发。当她的基与 Alice 不一致时(概率 1/2),Bob 收到的态已被投影到错误基上,Bob 的测量结果有 50% 概率翻转。综合下来,Eve 引入的 QBER 约 25%,远高于 11% 阈值,必然被发现。
用代码描述这个统计过程:
import numpy as np
def intercept_resend(bits, bases, n):
# Alice 编码(省略物理实现,仅统计)
eve_bases = np.random.randint(0, 2, n)
bob_bases = np.random.randint(0, 2, n)
bob_bits = np.zeros(n, dtype=int)
for i in range(n):
# Eve 只在基一致时能读到正确比特,否则结果随机
eve_bit = bits[i] if eve_bases[i] == bases[i] else np.random.randint(0, 2)
# Bob 相对 Eve 的重发态再次测量
bob_bits[i] = eve_bit if bob_bases[i] == eve_bases[i] else np.random.randint(0, 2)
sift = bases == bob_bases
qber = np.mean(bits[sift] != bob_bits[sift])
return qber
q = intercept_resend(np.random.randint(0, 2, 100000),
np.random.randint(0, 2, 100000), 100000)
print(f"QBER = {q:.3f}") # 期望约 0.25
2.4 阈值的来历
11% 的阈值来自信息论分析:当 QBER 低于该值时,Eve 掌握的信息量可以被隐私放大压缩掉;超过则无法证明安全性。协议的安全性证明(如 Mayers、Shor-Preskill)把 QKD 归约到量子纠缠提纯,是密码学史上最漂亮的结果之一。纠缠资源本身的物理基础可参考 /quantum-entanglement-bell-state/。
2.5 BB84 的常见变体
| 协议 | 核心改动 | 动机 |
|---|---|---|
| B92 | 只用两组非正交态 | 简化编码,成码率减半 |
| SARG04 | 改变公开宣告内容 | 提升对 PNS 攻击的容忍度 |
| 六态协议 | 三个基、六个态 | 提高对基相关攻击的鲁棒性 |
| 差分相移(DPS) | 相位差编码 | 无需单光子源,适合高速系统 |
这些变体并不改变安全性证明的骨架,只是在光源、编码维度与工程复杂度之间做取舍。
3. E91 与纠缠型 QKD
E91(Ekert 1991)用纠缠源替代单光子源:源同时向 Alice 和 Bob 发送纠缠对,双方各自测量后检查**贝尔不等式(Bell Inequality)**是否被违反。
- 若测得 CHSH 参数
S > 2,说明存在真实的量子关联,且未被经典窃听者完全接管。 - 安全性直接绑定到「设备行为本身违反贝尔不等式」,理论上更接近设备无关(Device-Independent, DI)。
CHSH 参数定义为:
S = E(a0,b0) - E(a0,b1) + E(a1,b0) + E(a1,b1)
经典上限:|S| <= 2
量子上限(Tsirelson 界):|S| <= 2√2 ≈ 2.828
CHSH 测量的简化实现:
import numpy as np
def chsh_from_counts(counts_ab):
# counts_ab[(a,b)] = (n_same, n_diff)
def E(a, b):
same, diff = counts_ab[(a, b)]
return (same - diff) / (same + diff)
return E(0, 0) - E(0, 1) + E(1, 0) + E(1, 1)
# 理想最大纠缠态在最优角度下 |S| -> 2*sqrt(2)
print(chsh_from_counts({(0, 0): (8540, 1460),
(0, 1): (5000, 5000),
(1, 0): (5000, 5000),
(1, 1): (8540, 1460)}))
实际难点:纠缠分发损耗大、探测效率低,需要关闭探测效率漏洞与定域性漏洞,目前只能在短距离演示。工程上更常见的折中是 MDI-QKD(见第 4 节)。三者的对比:
| 协议 | 资源 | 对设备的信任 | 现状 |
|---|---|---|---|
| BB84 | 单光子/弱相干光 | 信任探测器 | 商用成熟 |
| E91 | 纠缠对 | 较低(可做 DI) | 实验室演示 |
| MDI-QKD | 弱相干光 + 贝尔测量 | 不信任测量设备 | 城际演示 |
4. 实际系统的侧信道与对策
真实设备不是理想模型,攻击者会绕过物理定律去攻击实现。这一节是 QKD 从论文走向产品的关键战场。
4.1 光子数分离攻击与诱骗态
弱相干光源(WCS)偶尔会发出多光子脉冲。攻击者用光子数分离(Photon Number Splitting, PNS):保留一个光子自己测量,把其余光子无损透传给 Bob,从而在不扰动的情况下获取信息。
对策是诱骗态(Decoy State):Alice 随机以不同强度(如信号态 μ=0.5、诱骗态 ν=0.1、真空态 0)发送脉冲,通过统计不同强度下的响应率估算单光子贡献:
Y1 ≈ (μ / (μν - ν²)) * (Y_ν * e^ν - Y_μ * e^μ * (ν²/μ²) - ...)
Q1 ≈ Q_μ * (ν/μ) * (Y1 / Y_μ) * e^(-ν)
其中 Y1 是单光子响应率、Q1 是单光子增益。当检测到实际单光子产额远低于理论值时,说明存在 PNS。这是商用 QKD 的标配。
4.2 探测器侧信道
探测器是攻击者的重点目标:
| 攻击 | 原理 | 防御 |
|---|---|---|
| 致盲攻击(Blinding) | 强光使 APD 进入线性模式 | 探测器加光限幅、监控光强 |
| 时间偏移攻击 | 利用探测器效率的时间依赖 | 随机化探测时隙 |
| 死时间攻击 | 触发死时间以改变响应 | 监控计数率异常 |
| 特洛伊木马攻击 | 向 Alice 回射光探测其光源 | 光隔离器、监控反向光 |
4.3 MDI-QKD:把探测器交给敌人
**测量设备无关 QKD(Measurement-Device-Independent QKD)**把测量环节交给一个不可信的第三方(Eve 也行)。Alice 和 Bob 各自发送编码后的态到中间节点做贝尔态测量,安全性不再依赖探测器的可信度,从而免疫所有探测器侧信道攻击。
Alice ──编码态──> [中间节点:贝尔态测量] <──编码态── Bob
│
公布测量结果
│
双方用结果做后选择 → 建立关联密钥
代价是成码率下降、需要双方脉冲的相位锁定,且对光源的相位漂移极其敏感。
5. 后处理:纠错与隐私放大
筛后密钥还不是最终密钥,还需两步经典后处理,这两步的泄露量直接决定最终成码率。
5.1 信息协调(纠错)
双方密钥存在少量不一致比特,需要在泄露尽量少信息的前提下纠正。常用算法:
- Cascade:多轮二分查找定位错误,实现简单,交互轮数多,泄露约 1.2×H(e)。
- LDPC 码:高吞吐、低泄露,现代高速 QKD 系统首选,可用 GPU/FPGA 加速。
- Polar 码:接近香农极限,适合超长码块。
# 简化版 LDPC 信息协调的吞吐估算
def throughput(qber, gbps=1.0, fec_efficiency=1.15):
import math
h = lambda x: -x*math.log2(x) - (1-x)*math.log2(1-x) if 0 < x < 1 else 0
# 泄露 = 效率 * 二元熵
leak = fec_efficiency * h(qber)
return gbps * max(0.0, 1 - leak)
for e in (0.01, 0.03, 0.05, 0.08):
print(f"QBER={e:.2f} 有效成码率≈{throughput(e):.3f} Gbps")
5.2 隐私放大
Eve 可能掌握部分信息(来自 QBER 估算),用**通用哈希函数(Universal Hashing)**把长密钥压缩成更短但 Eve 信息量可忽略的密钥:
L_final = L_sifted * (1 - H(e) - leak_EC - Δ)
其中 H(e) 是二元熵、leak_EC 是纠错泄露、Δ 是安全参数裕量。常用实现是 Toeplitz 矩阵乘法或乘法哈希,可硬件加速到 Gbps 级。这一步使用的随机数必须是密码学安全的真随机或高质量伪随机,否则压缩比再合理也会被预测。
5.3 认证信道不可省
经典信道必须认证(防中间人),而认证需要密钥——这看起来是循环依赖。实际做法是用一次性的预共享密钥(后续由 QKD 补货)或后量子签名做初始认证。忽略这一点是 QKD 部署中最危险的设计缺陷。
6. 组网工程:从点对点到量子网络
6.1 距离瓶颈
光纤损耗约 0.2 dB/km,单光子信号在百公里量级就衰减到不可用,且**量子中继器(Quantum Repeater)**尚未实用。当前工程折中:
- 可信中继(Trusted Node):在中间节点解密再加密转发。京沪干线(2000+ km)即采用此方案,安全性依赖节点的物理安全。
- 卫星 QKD:自由空间损耗小,墨子号实现千公里级星地密钥分发与洲际密钥。
- 量子中继与纠缠交换:研究前沿,需要量子存储与纠缠提纯,是真正的长期方向。
成码率随距离的粗略衰减(无中继):
R(d) ≈ R0 * 10^(-α·d/10) α ≈ 0.2 dB/km
d=50km → 10^(-1) = 0.1
d=100km → 10^(-2) = 0.01
d=200km → 10^(-4) = 0.0001
6.2 网络分层
现代量子网络通常分为三层:
应用层 密钥管理、密钥消费 API(KMS)
链路层 QKD 设备、密钥池、路由与中继
物理层 光纤/自由空间信道、光源、探测器
密钥池(Key Pool)是关键设计:QKD 成码率远低于数据加密的密钥消耗速率,必须按需预生成并缓存,密钥按「一次一密或一次一密钥」策略消耗,并保证密钥不被复用。网络架构与密钥管理的更多工程细节见 /quantum-communication-networks/。
6.3 部署形态对比
| 形态 | 距离 | 密钥率量级 | 典型场景 |
|---|---|---|---|
| 点对点光纤 QKD | < 100 km | kbps ~ Mbps | 数据中心互联 |
| 可信中继骨干网 | 1000+ km | kbps | 城际政务/金融 |
| 卫星 QKD | 1000+ km | kbps(过境窗口) | 跨洲密钥、移动平台 |
| 量子中继 | 理论无上限 | 待突破 | 未来全球量子互联网 |
6.4 与经典基础设施的集成
QKD 设备不能是孤岛,必须接入现有的密钥管理体系。业界常见的接口与标准:
- ETSI GS QKD 014:定义 QKD 设备向上层提供密钥的 REST 接口(
/enc_keys、/dec_keys)。 - KMIP / PKCS#11 桥接:把 QKD 密钥池暴露为密钥管理服务器的一类密钥源,供 TLS 库或数据库透明加密调用。
- 混合密钥:把 QKD 密钥与 PQC 派生密钥做异或或 KDF 混合,任一路被攻破都不影响整体安全。
# 典型 ETSI 014 取密钥调用
curl -s -X POST https://kms.local/api/v1/keys/enc_keys \
-H 'Content-Type: application/json' \
-d '{"number": 1, "size": 256}'
集成层做得好不好,往往比 QKD 设备本身的性能更能决定项目能否落地。
6.5 成本与运维现实
- 设备成本:点对点 QKD 设备单价仍在数十万人民币量级,且需要成对部署。
- 光纤专线:QKD 不能复用普通波分信道(噪声会淹没单光子),通常需要暗光纤或专用波长。
- 运维:光源与探测器需要定期标定,QBER 会随温度、振动漂移,需自动化监控与告警。
- 人员:密钥策略、合规审计、故障排查都需要专职人员,人力成本常被低估。
因此 QKD 的现实落点集中在「高价值、固定链路、合规驱动」的场景,而非通用互联网加密。
7. QKD 与后量子密码:不是二选一
两者常被拿来对立,实际上解决的层次不同:
| 维度 | QKD | 后量子密码(PQC) |
|---|---|---|
| 安全基础 | 物理定律 | 数学难题(格、编码、哈希) |
| 需要专用硬件 | 是 | 否,纯软件升级 |
| 可认证性 | 需要预共享认证密钥 | 基于公钥,天然可认证 |
| 成熟度 | 点对点可用,组网受限 | NIST 已标准化并开始部署 |
| 主要风险 | 侧信道、可信节点 | 算法被未来数学突破 |
实践建议是分层防御:长期数据用 PQC 算法做密钥封装(如 ML-KEM),高价值链路叠加 QKD 提供物理层保障,两者互补而非替代。量子计算对现有密码体系的完整威胁分析与 PQC 迁移路线见 /quantum-post-quantum-cryptography/。
8. 落地检查清单
- 明确威胁模型:是防未来量子计算机,还是防当下物理窃听?后者才是 QKD 的强项。
- 认证信道必须先建立:QKD 本身不提供认证,需要预共享密钥或 PQC 签名做身份绑定。
- 监控 QBER 与计数率:异常抖动往往是攻击或设备漂移的信号。
- 诱骗态 + MDI 是商用系统的最低门槛,纯 BB84 直连方案不要用于生产。
- 密钥池容量要覆盖峰值加密速率,且严格禁止密钥复用。
- 密钥生命周期管理要与合规要求对齐:销毁、审计、轮换策略都要写入运维流程。
9. 常见误区
- 「QKD 就是量子加密」:QKD 只分发密钥,数据仍由经典算法加密。
- 「QKD 能防一切」:它防的是密钥分发被窃听,不防端点被入侵、不防实现缺陷。
- 「有 QKD 就不需要 PQC」:认证环节仍需公钥体系,PQC 是必需拼图。
- 「QBER 为 0 说明安全」:QBER 过低也可能是设备异常或攻击者刻意压低扰动,需结合计数率与统计检验判断。
- 「量子中继马上能用」:量子存储的相干时间与纠缠分发速率距离实用仍有数量级差距。
小结
QKD 把密钥分发的安全性从「算力假设」搬到了「物理定律」,BB84 用基矢比对把窃听转化为可测量的误码率,诱骗态与 MDI 把攻击面从协议推到实现层,纠错与隐私放大把原始比特炼成安全密钥。它不解决认证问题,也尚未突破量子中继的距离瓶颈,因此现实定位是「高价值链路 + PQC 兜底」的分层防御,而不是取代经典密码学。理解了这层定位,才能在工程中做出正确的取舍。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。