BB84协议是一种“密钥分发协议”,所以从功能上来讲,它要实现的目标与之前的一篇密码学专栏里介绍的RSA加密算法一样,都是安全地传递密钥。相信大家也听说过,RSA算法从原理上来讲并不是不可破解的而是“很难破解”的,即通过公钥破解加密的密文并不是不可能做到,而是通过公钥破解密文很难,可能需要成百上千年。这就相当于让破解者做一道很难算的数学题,等破解者算出来,这次通讯已经结束,对称密钥已经弃用,破解已经没有意义了。
但是可以想见的是,随着计算机性能的不断提升,原来需要成百上千年才能做出来的数学难题现在说不定只用几秒就能算出来,而且新兴的量子计算也对RSA加密算法构成威胁,理论上讲,密钥为1024位长的RSA算法,用一台512量子比特位的量子计算机在 1秒内即可破解。
而本篇博文介绍的BB84协议就是一种比RSA更可靠的密钥分发机制(更准确地说,BB84是一种密钥协商机制,但我们暂时不区分“密钥分发”与“密钥协商”的区别)。
首先,BB84协议要求通信双方拥有一条量子信道的同时,还拥有一条传统信道。
然后在量子信道上,信息发送方需要4种状态的量子作为信使,信息接收方需要2种量子接收器。为了避开深奥的量子知识,我们想象4种量子信使是4种姿态不同的飞镖,我们把飞镖分成两组:“横竖”组和“撇捺”组。
两组量子信使需要分别使用两种不同的接收器来接收。“横竖”组对应“+”形接收器,“撇捺”组对应“x”形接收器。
我们规定每组量子中有一种姿态代表0,另一种代表 1。例如,我们规定,接收到“横”代表0,那么,接收到“竖”代表 1。同理,规定接收到“撇”代表0,接收到“捺”代表 1。
现在如果我们挑选正确的接收器,那么我们能正确地接收到信息发送者想发给我们的信息。例如,我们如果用“+”形接收器来接收姿态为“横”的量子,那么我们得到的信号就是“横”,那么发送者想传递的“0”这个信号就会被我们正确地接收到。
**如果我们没有用正确的接收器会发生什么呢?**如果我们用“x”形接收器接收姿态为“横”的量子会发生什么呢?量子信使会撞在接收器的入口上,导致接收器接收不到信使吗?不一定。
下面是这篇博文里唯一与量子力学相关的知识:姿态为“横”的量子经过“x”形接收器时,有可能会改变自己的姿态,变成能通过接收器的姿态,也就是姿态为“横”的量子经过“x”形接收器时,姿态可能变为“撇”,也可能变为“捺”,那么传达的信息有可能还是发送者想传达的0,但也可能变成了相反的 1。
错误地使用“+”形接收器接收“撇捺”组量子信使同理,信息接收者无法分辨原本信息的发送者想传递的究竟是0还是 1。
有了上面的铺垫,我们可以开始了解BB84协议的具体内容。容我重复一次,BB84协议要求通信双方有两条信道:一条量子信道,一条传统信道。
按密码学传统,我们把信息发送者叫做Alice,信息接收者叫做Bob。现在他们要用BB84协议,为他们的通信确定一个密钥。
在量子信道上的通讯其实就结束了,接下来的步骤4-7都是在传统通信信道上进行的。我们认为传统信道意味着攻击者可能窃听并修改信道中会话内容。
第四步,Bob通过传统信道中告诉Alice自己的测量方法,即自己用哪种接收器来接收S的每一位信息。例如,Bob会告诉Alice:我第一位用的“+”形接收器、第二位用的“x”形、第三位用的“x”形…
第五步,Alice收到Bob的测量方法后,对比自己的发送量子信使的情况,告诉Bob他在哪些位上碰巧用了正确的接收器。我们把正确测量的位的集合称为C,Alice把C发送给Bob。
第六步,Bob收到Alice的信息,知道了自己哪些位的测量方式是正确的,即知道了集合C。他在自己测量正确的那些位中,随机挑选出一部分位,把测量到的结果发送给Alice。我们把Bob从C中挑出的那一部分叫集合D。
第七步,Alice收到信息后核对自己在6、17、45位上发送的信息是不是如Bob所说的 1、1、0。如果是,那么Alice发送信息给Bob示意没问题,那么双方会在Bob一开始测量正确的位(集合C)中,剔除第六步Bob发回给Alice的那些位(集合D),剩下的位(集合C\D)作为双方通信的密钥。
按上述例子,Bob在第6、8、17、45、46、56位的测量方式是正确的,他又把第6、17、45位发回给Alice,那么用作通信密钥的就是剩下的8、46、56位的值。例如Alice最开始发送的二进制字符串S中第8、46、56位值分别为 1、0、1,由于这几位Bob用了正确的接收器,所以Bob接收到的也是 1、0、1,双方都会以“101”作为通讯密钥,密钥协商的目的达成。
按照密码学传统,我们称窃听者为Eve。如果Eve在传统信道上窃听,她会在上述第四步听到Bob的测量方式,但是Bob没有发送测量结果。Eve还会听到Bob一部分正确测量位以及测出的结果(上述第六步中,Eve会听到集合D以及对应的测量值),但是最后Alice与Bob选择通信密钥时会完全丢弃集合D,即完全丢弃在传统信道交流过的那些位。到最后,Eve只知道Alice与Bob使用了S的哪些位用作通讯密钥,但是Eve不知道这些位上的具体数值是多少。
Eve遇到上面的困难,心一横,决定去窃听量子信道上Alice一开始传给Bob的二进制串S。但是首先Eve就遇到一个问题:她不知道该选用什么接收器序列来接收量子信使(连Bob都不知道)。
Eve又心一横,用了一组随机的量子接收器序列接收量子信使。这样一来Eve必然使用了很多不合适的接收器,这样也就导致了一些量子信使的状态被改变,这些改变会在Alice-Bob后续的交流中被察觉。
例如,S在某一位上的值是 1,Alice用竖姿态量子信使发送了这一位信息,但是Eve错用“x”形接收器接收这一位信息,这样此量子可能变成了撇量子(或捺量子),但Bob在这一位上恰好猜对了,他用“+”形接收器接收经过Eve窃听过的量子信使(撇或捺量子信使),结果量子信使变成了横姿态量子信使(当然也有接收成竖姿态量子,信息碰巧正确地被传递了,这时这一位不会引起Alice-Bob的注意),原本是 1的值Bob用合适的接收器接收却得到了0。
然后在上述协议的第六步,选集合C的时候,如果Bob正好把这一位选中发给了Alice,那么Alice就会发现Bob在这一位上明明使用了正确的接收器却没有得到正确的值。
这种情况出现频率超过某个阈值,Alice就会察觉有人在窃听量子信道。
所以其实BB84协议只能保证通讯被窃听的时候,通讯双方能及时发现,之后要么切换信道,要么终止通信。
[1]https://zhuanlan.zhihu.com/p/22474140
[2]https://mp.weixin.qq.com/s/gZ0faqCzRV1ouAGlFwdHhQ
[3]https://zhuanlan.zhihu.com/p/29860637
本文首发于http://handsomejintian.com/ 作者:唐秦-TQ https://www.bilibili.com/read/cv6245912/ 出处:bilibili