【量子计算】量子密钥分发:BB84协议

admin 2026-05-11 07:58:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: BB84协议是量子密钥分发的经典方案,其核心目标是通过量子信道安全分发随机密钥而非直接加密消息。该协议利用量子测量原理:使用互无偏基编码信息,同基测量可准确传递比特,异基测量会引入随机错误。窃听者Eve无法克隆量子态,任何窃听行为都会在误码率中暴露。协议流程包括随机基选择、筛选、误码率估计及后处理。安全基础是物理规律而非计算假设,最终密钥需经信息调和与隐私放大处理。 综合评分: 85 文章分类: 技术标准,解决方案,数据安全,网络安全


cover_image

【量子计算】量子密钥分发:BB84 协议

原创

Litt1eQ Litt1eQ

Coder小Q

2026年5月9日 08:31 山东

在小说阅读器读本章

去阅读

【量子计算】量子密钥分发:BB84 协议

上一节 4.7 讲到,Shor 算法之所以让经典公钥密码紧张,不是因为它“也许更快一点”,而是因为它直接打穿了 RSA 这类方案赖以成立的计算困难性。那就会立刻逼出一个更根本的问题:如果公钥密码不再可靠,Alice 和 Bob 还怎么安全地共享密钥?

这篇文章要回答的,正是这个问题。

BB84 协议是量子密码学最经典的起点。它做的事不是“把加密算法变成量子版”,而是把最困难的那一步单独拎出来解决:先分发一个只有 Alice 和 Bob 知道、而 Eve 不知道的随机密钥。它依靠的不是“大数分解很难”这种计算假设,而是量子测量本身的物理规律:用错基测量会打乱子态,未知量子态又不能被偷偷复制。[3][4][5]

读完这篇文章,希望你能带着四句话离开:

  1. BB84 解决的不是“怎么加密消息”,而是“怎么先拿到一个安全密钥”。
  2. 它的安全直觉只有一句话:同基测量传递信息,异基测量打乱信息。
  3. Eve 想窃听,就必须测量;一旦测量,就有概率在 Alice 和 Bob 的比对中留下误码。
  4. 真正可用的最终密钥,不是筛选后的原始比特串,而是再经过参数估计、信息调和和隐私放大之后得到的结果。[6][7][8]

0. 引子:密码学最难的地方,其实不是加密

设 Alice 想给 Bob 发送消息。最朴素的做法当然是先把消息加密,再把密文发出去。但只要你继续追问一句“加密用的密钥从哪里来”,问题就会突然变得棘手。

在信息论意义下,最干净的加密方案是一次一密。若明文记为 ,密钥记为 ,密文就是

只要  真正随机、与明文等长、并且只使用一次,那么从密文  本身出发,Eve 得不到关于  的任何额外信息。这就是 Shannon 所说的完美保密。[1]

但一次一密有一个不肯消失的前提:Alice 和 Bob 必须先共享那串同样长度、同样随机、且外人不知道的密钥。也就是说,一次一密没有消灭密钥分发问题,只是把它提前了。

经典信道上的困难恰好出在这里。经典比特可以被复制,而复制不会留下物理痕迹。Eve 完全可以在中途拷贝一份密钥,再把原数据继续转发给 Bob。Alice 和 Bob 事后看到的,是一条“表面上什么都没发生”的链路。

这件事和上一节的 Shor 算法威胁正好形成对照。RSA、Diffie-Hellman 这类经典方案的思路,是把“密钥怎么安全送达”转写成“某个数学问题在可预见时间内算不出来”。BB84 则走了完全不同的路:它不靠 Eve 算不过来,而是让 Eve 没法无声无息地看一眼。[5][6]

所以这一章真正要翻译成量子计算语言的,是下面这句话:

经典密钥分发最大的问题,不是 Eve 一定能破译,而是 Alice 和 Bob 无法知道她有没有复制过密钥;BB84 的贡献,是把“是否被偷看”这件事变成可检测的物理问题。

1. BB84 依赖的物理事实:测量会改变态,而且未知量子态不能复制

1.1 从前文接过来的那条主线

在 1.4 “测量与波函数坍缩”和 2.1 “自旋:量子世界的指南针”里,我们已经反复见过同一个现象:如果一个量子比特先在某个方向上被制备成确定态,再换到另一组不相容的基去测量,结果会变成随机,而且测量后态真的被改写了。

BB84 只是把这件事从“物理实验现象”变成了“通信协议规则”。

它使用两组单量子比特基:

| 基 | 对应态 | 比特 0 | 比特 1 | | — | — | — | — | | Z 基(计算基) | | | | | X 基(Hadamard 基) | | | |

这里的  和  不是新冒出来的对象,而是 2.2 里已经见过的 X 基态。Hadamard 门满足

更准确地说,在二维情形里,Z 基和 X 基是一对 互无偏基(mutually unbiased bases):任意一个 Z 基态,在 X 基下测量都会给出 50/50 的结果;反过来也一样。[2][3]

1.2 为什么“用错基”一定会引入随机性

先只看一个最小例子。Alice 若发送的是

而 Eve 偏偏用 X 基去测,那么她面对的其实是

这表示:在 X 基里, 不是确定态,而是两个 X 基态的等权叠加。因此 Eve 会以  的概率得到 ,以  的概率得到 。[2][3]

如果 Eve 测到的是  并把它转发给 Bob,而 Bob 后面又在正确的 Z 基里测量,那么 Bob 看到的是

于是 Bob 得到 0 和 1 的概率各是 。也就是说,Eve 一旦猜错基,就把原本“在 Z 基里完全确定”的信息,变成了“在 Z 基里只有一半概率正确”的结果。

把四个发送态都列出来,结构就更清楚了:

| Alice 发送态 | Alice 所用基 | Bob 测量基 | Bob 结果 | | — | — | — | — | | | Z | Z | 必得 0 | | | Z | Z | 必得 1 | | | X | X | 必得 0 | | | X | X | 必得 1 | | | Z | X | 0 或 1,各 | | | Z | X | 0 或 1,各 | | | X | Z | 0 或 1,各 | | | X | Z | 0 或 1,各 |

这张表其实就是 BB84 的全部物理直觉。协议里所有复杂步骤,最后都在服务这一句核心总结:

同基测量时,比特可以被稳定传递;异基测量时,结果不但随机,而且会把原来的态改坏。

1.3 Eve 为什么不能“先复制一份,等会儿再测”

如果 BB84 只依赖上一节那条表,那么 Eve 仍然会想到一个经典世界里的标准招式:先把量子比特复制一份,一份继续发给 Bob,另一份等 Alice 和 Bob 公布基选择后再慢慢测。

问题是,这一步在量子里根本做不到。

不可克隆定理告诉我们:不存在一个统一的幺正操作,能把任意未知量子态  变成两份完全一样的副本 。[4] 这一点在 3.4 里已经从线性性角度证明过;在 BB84 里,它的通信含义非常直接:

  1. Eve 不能把未知态“备份”下来以后再决定怎么看。
  2. 她若想获得信息,就只能立刻选一个基去测。
  3. 一旦她选错基,就会以可统计检测的方式把误差带进 Bob 的结果里。

这和量子计算有什么关系?因为 BB84 利用的恰恰是量子信息和经典信息之间最深的一条边界:量子态不是可以任意复制、任意缓存、任意读取的普通数据。这个限制在算法里会带来麻烦,在密码学里却正好变成优势。

2. 把 BB84 协议完整跑一遍

现在先不谈安全证明,只把协议本身从头到尾走一遍。

角色还是那三个:

  • Alice:发送方
  • Bob:接收方
  • Eve:潜在窃听者

这里还要补一句很多入门介绍容易略过的话:BB84 除了量子信道,还需要一条公开但经过认证的经典信道。公开,表示 Eve 可以听见 Alice 和 Bob 说了什么;认证,表示 Eve 不能冒充 Alice 或 Bob 改写这些消息。若没有“认证”这一步,Eve 完全可以发起中间人攻击,协议本身就站不住了。[6][7]

2.1 第一步:Alice 随机选比特,也随机选编码基

Alice 先准备两串随机序列。一串是她希望传出去的原始比特 ,另一串是每一位所用的基 。

我们用一个 10 个量子比特的例子来跑:

| 位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | — | — | — | — | — | — | — | — | — | — | — | | Alice 的比特 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | | Alice 的基 | Z | Z | X | X | Z | X | Z | X | Z | X | | 发出的态 | | | | | | | | | | |

这里的逻辑很简单:Z 基下用  编码 0 和 1,X 基下用  编码 0 和 1。

2.2 第二步:Bob 不知道 Alice 的基,只能随机测

Bob 收到每个量子比特时,并不知道 Alice 用的是 Z 基还是 X 基,所以他也必须随机选一组基去测:

| 位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | — | — | — | — | — | — | — | — | — | — | — | | Bob 的基 | Z | X | X | Z | Z | X | X | Z | Z | X | | Bob 的测量结果 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | | 是否与 Alice 同基 | 是 | 否 | 是 | 否 | 是 | 是 | 否 | 否 | 是 | 是 |

这里要特别注意第 2、4、7、8 位。比如第 2 位,Alice 发的是 ,而 Bob 用 X 基去测;这个结果是随机的。我们这里假设 Bob 恰好测到了 0,但这位之后会被丢掉,所以它对最终密钥没有帮助。

2.3 第三步:公开比较基,不公开比特值

接下来 Alice 和 Bob 通过公开经典信道交换的,不是自己的 0/1 结果,而是“这一位我用的是 Z 还是 X”。这样做的目的是把真正有意义的位置筛出来。

从上表可见,两人基相同的位置是

于是他们保留这些位置的结果,得到筛选后的比特串:

| 保留位置 | 1 | 3 | 5 | 6 | 9 | 10 | | — | — | — | — | — | — | — | | Alice | 0 | 0 | 0 | 1 | 1 | 0 | | Bob | 0 | 0 | 0 | 1 | 1 | 0 |

这串结果叫做筛选密钥,或更口语一点,叫“同基留下来的原始候选密钥”。在没有噪声、也没有 Eve 的理想例子里,它们应当完全一致。

2.4 第四步:抽样估计误码率

Alice 和 Bob 现在还不能直接把这 6 位当作最终密钥来用。原因很简单:他们不知道量子信道里究竟有没有噪声,也不知道 Eve 有没有动过手。

所以他们会随机抽出其中一部分位公开比较。比如在这个玩具例子里,假设他们公开第 3 位和第 9 位:

| 抽样位置 | 3 | 9 | | — | — | — | | Alice | 0 | 1 | | Bob | 0 | 1 |

这两位一致,所以在这次抽样里误码率是 0。由于这些位已经公开,它们不能再用作密钥,剩下的候选串变成

现实协议中当然不会只发 10 个量子比特,也不会只抽两位。这里故意用小数字,只是为了让你能手动跟着跑完。

2.5 第五步:把“候选密钥”变成“最终密钥”

即便抽样误码率看起来足够低,Alice 和 Bob 手里的串也还只是“可能一致、可能部分泄露”的原始密钥。真正可用的最终密钥,还要再经过两道后处理:

  1. 信息调和:解决 Alice 和 Bob 之间可能还剩下的少量不一致;
  2. 隐私放大:把 Eve 也许掌握的那点残余信息压缩掉。[6][7][8]

到这里,BB84 的完整流程就已经出现了:发送量子态,随机测量,公开比基,抽样估计误码率,再做后处理。下一节我们回过头来看,为什么 Eve 一插手,这条链上的误码率就会升上来。

3. Eve 为什么会暴露:25% 从哪里来

3.1 先看一个单比特例子

设 Alice 发送的是 ,这表示她在 X 基里编码了比特 0。

若 Eve 也用 X 基去测,她会准确得到 0,再把  发给 Bob;这一位不会出错。

但若 Eve 猜错,改用 Z 基去测,那么她得到的是 0 或 1,各有  概率。假设她测得 0,于是她发给 Bob 的就是 。可对 Bob 来说,这一位本来应该在 X 基下读取。于是 Bob 面对的是

所以 Bob 在 X 基下又只有一半概率得到正确结果 0,另一半概率会得到错误结果 1。

这个例子已经暴露了整件事的逻辑:Eve 并不是“有时偷到完整信息,有时什么也偷不到”这么简单;她一旦测错基,就会把 Alice 原本写进相对基结构里的信息打乱。

3.2 25% 误码率的来源

现在只考虑那些最后会被 Alice 和 Bob 保留下来的位,也就是 Alice 和 Bob 恰好用了同一组基的位。对这些位来说:

  1. Eve 猜对基的概率是 ,这时她不会引入错误;
  2. Eve 猜错基的概率也是 ;
  3. 在猜错基的条件下,Bob 有  的概率得到错误结果。

所以 Eve 采用最朴素的截获-重发(intercept-resend)攻击时,筛选密钥上的期望误码率是

这就是 BB84 最著名的数字来源。[3][5]

要立刻补一句严格表述:25% 是大量重复后的期望值,不是说任何一个 10 位玩具例子都会刚好出现 25% 的错误。小样本里,16.7%、33.3% 都可能出现;真正起作用的是统计规律,而不是某一次必须命中一个漂亮整数。

3.3 误码率到底在量化什么

这时就可以给出一个在后文会反复出现的量:量子比特误码率,通常记作 QBER(quantum bit error rate)。在最基本的抽样估计里,它就是

抽样中和不同的位数抽样公开比较的总位数

QBER 越高,说明信道里“某种会扰动态的东西”越强。这个东西可能来自自然噪声,也可能来自 Eve 的攻击,也可能两者同时存在。BB84 的精髓不在于“只要有 1 位错就一定有窃听者”,而在于:Eve 若想获得信息,就必须把自己的存在转换成一个可以统计估计的扰动水平。[6][7]

这和量子计算有什么关系?因为 BB84 用到的不是某种额外的“密码学魔法”,而是你在前几章已经见过的同一条量子规则:测量既给出结果,也改写后续可观测的统计分布。

4. 从原始密钥到最终密钥:信息调和与隐私放大各做什么

到这里,一个常见误解会冒出来:既然 Alice 和 Bob 已经筛出了同基结果,又抽样确认误码率不高,那剩下的比特串不就是密钥了吗?

还不够。

原因有两个。第一,真实信道有噪声,Alice 和 Bob 手里的串可能仍有零星不一致;第二,就算 Eve 没有强到足以把协议直接破坏,她也可能通过窃听和公开讨论拿到一部分相关信息。[6][7]

4.1 信息调和:先让 Alice 和 Bob 的串重新对齐

信息调和的目标很朴素:让 Alice 和 Bob 在不直接公开整串密钥的前提下,把双方的比特串修正到一致。

为了说明它在做什么,先看一个故意简化的例子。假设经过筛选和抽样之后,Alice 手里的 8 位原始密钥是

而 Bob 因为信道噪声拿到的是

两串只差一位。若 Alice 和 Bob 直接公开整串比对,当然能修好,但密钥也就同时泄露光了。所以他们会在认证过的公开信道上只交换“部分校验信息”,例如奇偶校验。

把这 8 位分成前后两块:

  • Alice 的前四位 1011 有 3 个 1,奇偶为奇;
  • Bob 的前四位 1010 有 2 个 1,奇偶为偶。

这说明错误出在前四位里。再把前四位一分为二:

  • 前两位 10 与 10 奇偶相同;
  • 后两位 11 与 10 奇偶不同。

于是错误被进一步锁定在第 4 位。Bob 把这一位从 0 改成 1 后,双方串重新一致。

真实协议里不会只用这一种最简单的分块法,但本质始终一样:Alice 和 Bob 公开的不是密钥本身,而是足以帮助纠错的一些校验关系。[7]

4.2 隐私放大:再把 Eve 可能知道的那一点信息压掉

信息调和之后,Alice 和 Bob 拿到的是一致的串,但这时还不能忘记一个事实:刚才公开交换的校验信息,本身也让 Eve 多知道了一点东西。再加上她可能在量子信道上已经听到的内容,Eve 对原始密钥往往不是“完全不知道”,而是“知道一点点”。[7][8]

这时要做的不是继续争论 Eve 到底知道哪几位,而是直接把长串压缩成更短的一串,让 Eve 对新串的知识急剧下降。这一步叫隐私放大。

为了建立直觉,可以看一个玩具例子。设 Alice 和 Bob 已经一致的 8 位串是

他们公开约定一个压缩规则,例如取三个新的比特:

代入这个例子可得

于是最终得到的 3 位串是

这当然不是实际协议里会直接使用的具体哈希函数;真实安全证明里使用的是经过严格分析的哈希族。但这个小例子已经能说明隐私放大的结构:不是“修补原串”,而是“把长串压成更短但更安全的新串”。[7][8]

4.3 “无条件安全”到底该怎样理解

到了这里,终于可以回到本文开头那句最容易被说得过满的话:BB84 提供无条件安全。

更准确的说法是:

在理想化器件模型下,并在公开但认证的经典信道上完成参数估计、信息调和和隐私放大之后,BB84 的密钥可以达到信息论安全;它不依赖 Eve 计算资源有限,而依赖量子力学和统计推断本身。[6][7]

这句话里有三个边界不能丢:

  1. 安全对象是“最终密钥”,不是未经后处理的筛选串。
  2. 需要认证过的经典信道;公开不等于可以任人篡改。
  3. 理论安全证明和现实设备安全不是同一件事;现实系统还要额外面对探测器漏洞、光源缺陷和有限样本效应。[6][7]

这样一来,BB84 和 RSA 的差别就很清楚了。RSA 的安全性来自“Eve 目前还算不出”;BB84 的目标则是让 Eve “一旦想看,就必须留下可统计检验的痕迹”。前者是计算安全,后者在理想模型里是信息论安全。

小结:把 BB84 翻译回量子计算语言

现在可以把整篇文章压缩成一条完整逻辑链:

  1. 一次一密告诉我们,真正完美的加密需要先有一个真正安全的共享密钥。[1]
  2. 经典信道做不到这一点,因为经典信息可以被无痕复制。
  3. 量子信道之所以不同,是因为量子测量会改变态,而未知量子态不能被复制。[2][3][4]
  4. BB84 用 Z 基和 X 基把这个物理事实变成协议:同基留下,异基丢弃;抽样估计 QBER;再通过信息调和和隐私放大提炼出最终密钥。[5][6][7][8]

如果只记一句可以反复拿来用的总结,那应该是:

BB84 的安全性,不是把破解变难,而是把窃听变成一件会扰动态、会抬高误码率、因此能被统计检测到的物理事件。

这正是量子信息最有意思的地方之一。前几章里我们把“测量会改变态”“不同基下结果会变随机”“未知量子态不能复制”当成量子系统的限制;到了 BB84,它们第一次被直接拿来做一件经典世界里做不到的事。

下一篇 5.2 会把视角再往前推进一步:BB84 仍然是 Alice 主动制备并发送单个量子态,而 Ekert 协议会改用纠缠对和 Bell 不等式来建立密钥。到那时,安全性的根基不再只是“测量会扰动”,还会进一步连到量子非定域性的结构上。

参考资料

  1. Claude E. Shannon, “Communication Theory of Secrecy Systems,” Bell System Technical Journal 28(4), 656-715, 1949. https://doi.org/10.1002/j.1538-7305.1949.tb00928.x
  2. Leonard Susskind and Art Friedman, Quantum Mechanics: The Theoretical Minimum. Basic Books, 2014.
  3. Chris Bernhardt, Quantum Computing for Everyone. The MIT Press, 2019.
  4. W. K. Wootters and W. H. Zurek, “A single quantum cannot be cloned,” Nature 299, 802-803, 1982. https://doi.org/10.1038/299802a0
  5. Charles H. Bennett and Gilles Brassard, “Quantum cryptography: Public key distribution and coin tossing,” in Proceedings of IEEE International Conference on Computers, Systems and Signal Processing, 175-179, 1984.
  6. Peter W. Shor and John Preskill, “Simple Proof of Security of the BB84 Quantum Key Distribution Protocol,” Physical Review Letters 85, 441-444, 2000. https://doi.org/10.1103/PhysRevLett.85.441
  7. Valerio Scarani, Helle Bechmann-Pasquinucci, Nicolas J. Cerf, Miloslav Dušek, Norbert Lütkenhaus, and Momtchil Peev, “The security of practical quantum key distribution,” Reviews of Modern Physics 81, 1301-1350, 2009. https://doi.org/10.1103/RevModPhys.81.1301
  8. Charles H. Bennett, Gilles Brassard, Claude Crépeau, and Ueli M. Maurer, “Generalized Privacy Amplification,” IEEE Transactions on Information Theory 41(6), 1915-1923, 1995. https://doi.org/10.1109/18.476316

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Coder小Q Litt1eQ Litt1eQ《【量子计算】量子密钥分发:BB84 协议》

评论:0   参与:  0