BB84 协议
BB84 是历史上第一个被提出的量子密钥分发(QKD)协议:它让两个人(按惯例称为 Alice 和 Bob)就一串随机的秘密比特达成一致,同时还能察觉是否有人在偷听。它的巧妙之处不在于秘密地传送某条消息,而在于让你能够建立一把共享密钥,并在事后检查信道是否干净。设想 Alice 每次只发送一个光子,对每个光子她都私下抛两次硬币:一次决定这一位是 0 还是 1,另一次决定她用两种“朝向”中的哪一种来编码它。Bob 读不到她的心思,所以他在测量每个光子时也随机挑一个朝向。
所有光子发送完之后,Alice 和 Bob 通过一条普通的公开线路交谈,只比较彼此选了哪些朝向,绝不透露具体的比特值。凡是两人碰巧选了相同朝向的那些光子,Bob 的读数就是可靠的,他们留下这些比特;其余的全部丢弃。这里正是物理学发挥作用的地方:由于不可克隆定理,窃听者无法复制一个未知光子以便日后查看,而任何用错误朝向去测量它的尝试都会扰动它。于是窃听者也只能去猜朝向,而她的猜测会引入错误。Alice 和 Bob 牺牲所留比特中的一小部分作为样本、检查其错误率,就能发现这种篡改。如果信道看上去干净,剩下的比特就成为一把共享的秘密密钥;如果不干净,他们就把一切丢弃,重新再来。
把 BB84 承诺什么、不承诺什么讲清楚会很有帮助。它不是一台更快的计算机,也跟 Shor 算法或破解 RSA 毫无关系。它是一种密钥交换方法,其安全性建立在物理定律之上,而不是建立在某个困难的数学问题之上——这正是它区别于后量子密码学(为抵御量子攻击而设计的经典算法)之处。在实践中,BB84 需要一条真正的量子信道,比如光纤或自由空间光学链路;真实硬件并不完美、传输距离也有限;而且它只保护密钥分发这一步,并不保护你的整个通信系统。
BB84 使用的两种编码朝向是一对不对易的基:直线基 {|0>, |1>} 和对角基 {|+>, |->},其中 |+> = (|0> + |1>)/sqrt(2),|-> = (|0> - |1>)/sqrt(2)。
BB84 能侦测窃听并生成一把共享密钥;它本身并不加密消息,也不是内置于通用量子计算机中的某种防御机制。