4. 隐私放大算法设计基础

隐私放大(Privacy Amplification)是量子密钥分发后处理链路的最后一环,其任务是把通信双方共享的、但窃听者掌握部分信息的原始密钥,压缩成一段更短、窃听者信息可忽略的最终密钥。设计一个可用的隐私放大算法,核心不是"选一个哈希函数",而是围绕四个相互牵制的量做工程决策:输入从哪来、压缩比取多少、哈希函数用什么参数、输出留多少安全裕量。本节按这条设计主线展开,并给出可直接套用的计算与配置方法。

一、输入提取:先确定"能用的比特"是什么

隐私放大的输入并非任意比特串,而是经过误码协商(纠错)后双方一致、且已知窃听者信息上界的密钥串。工程上第一步是明确三个输入量:

  • 原始密钥长度 n:纠错后双方一致的比特数,注意纠错过程本身会泄露信息(通常以泄露比特数 leak_EC 计),这部分必须从安全预算中扣除。
  • 窃听者信息上界:常用量子比特误码率 QBER 估计,单光子相位编码 BB84 在渐近情形下,窃听者关于每个比特的信息可用二元熵 h₂(QBER) 近似刻画。
  • 输入串的可用性:需确认输入已去除公开协商信息、帧头、填充位,且长度与纠错输出严格对齐;若输入中混入了公开比对过的比特,必须剔除或计入泄露。

一个常见错误是把纠错前的筛后密钥直接送入隐私放大。正确做法是:输入 = 纠错后一致密钥,且安全预算中显式扣除纠错泄露。示例假设:筛后密钥长度 100000 bit,QBER = 3%,纠错泄露 leak_EC = 12000 bit(约为 n·h₂(QBER) 的 1.15 倍,含协商开销)。

二、压缩比计算:从安全界到可执行比例

压缩比决定了"输入多少比特换 1 比特最终密钥"。渐近安全界下,可提取的最终密钥长度满足:

l ≤ n·[1 − h₂(QBER)] − leak_EC − Δ_safety
h₂(x) = −x·log₂x − (1−x)·log₂(1−x)

代入示例:h₂(0.03) ≈ 0.1944,则 n·[1−h₂] ≈ 100000×0.8056 = 80560 bit;扣除 leak_EC = 12000 后余 68560 bit;再预留安全裕量 Δ_safety(下文讨论)。若取 Δ_safety = 256 bit,则 l ≤ 68304 bit,压缩比约为 100000/68304 ≈ 1.46,即约 1.46 个输入比特产出 1 个最终密钥比特。工程上通常把压缩比表述为"输出/输入"的比例 r = l/n ≈ 0.683,配置时向下取整到哈希函数可实现的输出长度。

压缩比不是固定常数:QBER 升高时 h₂(QBER) 增大,可提取比例下降。设计时应把 QBER 的工作范围(如 1%~5%)代入公式,取最坏情形确定最小压缩比,避免运行中因误码波动导致安全界被突破。

三、哈希函数参数确定:把安全界落到可实现结构

理论上可用通用哈希族(如 Toeplitz 矩阵哈希)实现,工程上需确定三个参数:

  • 哈希族与实现方式:Toeplitz 哈希只需 n+l−1 个随机种子比特,运算可用移位异或或快速傅里叶实现,适合高速场景;也可用 AES 类伪随机函数做压缩,但需保证种子真随机且不重复使用。
  • 输出长度 l:由压缩比计算得到,并向下取整到实现支持的粒度(如 8 bit 或 128 bit 对齐)。
  • 种子长度与新鲜性:Toeplitz 种子长度 = n + l − 1,必须由真随机源产生、每次会话更新,且不得与纠错阶段复用。

示例中 n = 100000、l = 68304,则 Toeplitz 种子需 168303 bit。若硬件随机源速率有限,可改用分块 Toeplitz(把输入分块、各块独立哈希后拼接),代价是安全界略降,需要在裕量中补偿。

四、输出长度与安全裕量的工程权衡

安全裕量 Δ_safety 用于吸收三类不确定性:有限长效应(输入长度有限导致统计估计偏差)、QBER 估计误差、哈希族非完美带来的剩余信息。经验上可按以下思路取值:

  • 有限长修正项约与 √n·log(1/ε) 同阶,ε 为安全参数(如 2⁻³²);
  • QBER 估计误差按置信区间上限代入,而非点估计;
  • 预留固定下限(如 128~256 bit)作为兜底。

权衡的本质是"安全 vs 成码率":裕量取大,最终密钥更短、成码率下降;取小则安全界变紧。工程上建议把 Δ_safety 设为可配置参数,并在测试中验证:给定 QBER 与 n,实际输出 l 是否始终满足安全界,且成码率满足系统指标。

隐私放大设计主线:从输入到最终密钥的预算分配 输入提取 纠错后一致密钥 n 剔除公开信息 压缩比计算 l ≤ n[1−h₂(Q)]−leak−Δ r = l/n ≈ 0.683 哈希参数确定 Toeplitz 种子 n+l−1 输出对齐 128 bit 最终密钥 长度 l 安全参数 ε 安全预算分配(示例:n = 100000 bit,QBER = 3%) 可提取部分 65600 bit(≈ n[1−h₂]−leak 的 96%) 安全裕量 纠错泄露 裕量取大(保守) • Δ_safety 增大,l 减小 • 安全界更稳,抗 QBER 估计误差 • 成码率下降,密钥更新变慢 • 适合长距离、高误码链路 建议:Δ ≥ 128 bit 且覆盖有限长修正 裕量取小(激进) • l 接近理论上界,成码率高 • 对 QBER 估计精度要求高 • 有限长效应可能侵蚀安全界 • 适合短距离、低误码、大 n 场景 建议:先按最坏 QBER 校验,再放开

五、把设计落到可执行的配置

综合以上,一个可复现的隐私放大配置可写成如下参数表(示例值,需按实际系统标定):

参数示例值确定依据
输入长度 n100000 bit纠错后一致密钥长度
QBER 工作范围1%~5%系统实测统计,取上限代入
纠错泄露 leak_EC12000 bit协商日志统计,含开销系数
安全裕量 Δ_safety256 bit有限长修正 + 估计误差 + 兜底
输出长度 l68304 bit按公式计算后向下对齐
压缩比 r≈0.683l/n
哈希族Toeplitz种子 n+l−1 = 168303 bit

实现时还需注意两点:其一,压缩比与输出长度应在运行时按当次 QBER 与 n 动态计算,而非写死;其二,每次会话必须重新生成哈希种子,并对种子做完整性保护。验证阶段可构造已知 QBER 的测试向量,检查输出长度是否满足安全界、相同输入不同种子是否产生不同输出、以及边界情形(如 QBER 接近阈值时 l 是否仍为正)是否被正确拒绝。只有把输入、压缩比、哈希参数与裕量四者作为一个整体标定,隐私放大环节才既安全又具备可用的成码率。