量子加密号称「绝对安全」绝不是哗众取宠,为什么这样说呢?因为与传统加密算法不同,量子加密的原理基于物理定律,而不是特定数学问题的计算复杂性。因此,无论计算机的运算能力怎么增强,也丝毫不影响量子加密的安全性。本文以 BB84 协议来介绍量子加密,下文为了方便不对量子加密和 BB84 协议进行区分。

加密过程

我们先看一个不涉及任何物理定律,但是原理和量子加密相同的加密过程。

前提与假设

假设存在两个函数:+×,和一些值:0、1、→、↑、↖ 和 ↗。它们的运算满足:

1 0
+
×
+ ? ?
× ? ?

+ 函数为例,不难理解:

+(0) +(1) +(→) +(↑)

唯一特殊的地方在于 +(↖)+(↗) 是从 ↖ 或 ↗ 中随机挑一个作为运算结果,即产生 +(↖)=↖+(↖)=↗ 的可能性一样大,都为 \frac{1}{2}。注意,这里的随机 不是传统计算机中的伪随机,而是真随机

生成密钥

假设 Alice 和 Bob 要进行通信,整个加密过程如下图所示。

Quantum Cryptography

Alice 随机产生一个数(0 或 1),再随机选择一个函数 +× 进行运算。比如:Alice 随机产生的第一个数为 1,随机选择的函数为 +,那么运算结果为 +(1)=→。此过程会重复多次,产生一系列 →、↑、↖ 或 ↗,随后 Alice 将这些运算结果传送给 Bob。

Alice 产生的随机数 1 1 1 0 1 0 1 0 0
Alice 随机选择的函数 + × × × × + × + ×
Alice 发送的运算结果

Bob 在接收到 Alice 发送的一系列 →、↑、↖ 或 ↗ 值后,对每个值随机选择 +× 函数进行运算。此时,Bob 得到了一系列运算结果,然后 Bob 根据 +(1)=→, ×(1)=↖ 等运算规则反推 Alice 发送的随机数。注意,因为进行了随机选择,所以 Bob 与 Alice 的运算结果并不一定相等,但是 Bob 并不在乎这一点。

Bob 接收到的运算结果
Bob 随机选择的函数 + × + + × + + + +
Bob 得到的运算结果
Bob 认为 Alice 发送的随机数 1 1 0 0 1 0 1 0 1

接下来,Bob 告诉 Alice 自己随机选择了哪些函数。Alice 将其与自己的选择做对比,然后告诉 Bob 是不是选得和她一样。Bob 收到 Alice 的回答后,找到那些和 Alice 相同的函数,将通过它们推断出的随机数作为加密用的密钥,也就是 11100

compare results

量子加密

量子力学假设光子(光子是一种量子)有四种偏振方向:↑、→、↗ 和 ↖,它们都可以通过某种装置产生。而在经过直线基 + 或对角基 × 时,它们既有可能保持不变,也有可能随机变成一种偏振方向。比如:偏振光子 → 的在经过直线基 + 时保持不变,还是 →,而在经过对角基 × 后则随机的变成了 ↗ 或 ↖。同时,基 +× 也可以用来制备量子状态,比如:基 + 将比特 0 制备成 ↑,把比特 1 制备成 →。

光的偏振

稍加思考就会发现,上述理论不就是我们的前提与假设吗?我们将之前提到的函数、运算等等全部替换成相应的物理过程,就得到了所谓的量子加密。

为啥安全

相信看懂上述加密过程并不困难,那么为什么说量子加密绝对安全呢?我们首先得了解两个定律:

  • 不确定性原理:任何粒子都不能被精确地测到状态,任何测量都会影响到粒子的原先状态
  • 不可克隆定理:没有任何办法能够复制一个未知的量子态,而不改变量子态

中间人攻击

如果 Eve 想要窃听 Alice 发给 Bob 的光子,因为不可克隆定理,所以 Eve 只能查看 Alice 发给 Bob 的光子,而无法复制一个进行查看。同时,因为不确定性原理,并且由于 Eve 不知道 Alice 选择的测量基(只有 Alice 自己知道),所以 Eve 只能像 Bob 那样随机选择基进行测量。那么就有 \frac{1}{2} 的概率改变光子的状态。例如:Eve 用基 × 测量偏振光子 ↑ 后,偏振方向变成了 ↖。

Eve eavesdrop photon

因为单个光子几乎没有包含任何有用信息,所以如果 Eve 想要窃听 Alice 与 Bob 的通信,势必会测量多个光子。假设 Eve 窃听过程中光子的变化如下表所示:

Alice 发送的光子
Eve 随机选择的测量基 + + + + + + + + +
Eve 窃听后的光子

Bob 接收到 Eve 窃听后发生改变的光子,假设他选择的测量基和之前一样,那么可能得到:

Bob 收到的光子
Bob 随机选择的基 + × + + × + + + +
Bob 测量得到的偏振态
Bob 认为 Alice 发送的随机比特 1 0 1 0 0 0 1 0 1

Bob 在对收到光子进行测量后告诉 Alice 自己选择的测量基,而 Alice 在与自己选的测量基进行对比后,回复 Bob 第 1、2、5、6、8 个基和她一样。此时,Bob 认为密钥应该是 10000,而 Alice 认为密钥应该是 11100。为了确保没人窃听,Bob 把密钥的第 1、3 位传给 Alice,即 10,Alice 收到后与自己的 11 进行对比,发现不一样,于是马上意识到有人进行窃听。

此处因为传送的光子很少,所以 Eve 有较大的几率窃听而不被发现。不过,只要 Alice 发送的光子足够多,Alice 和 Bob 最后得到的密钥就足够长,这时候窃听后密钥依然相同的概率就非常小,只要 Alice 与 Bob 对比一部分密钥,就能察觉是否有人监听。

一次一密

但是如果 Eve 不窃听光子,而是等 Alice 与 Bob 形成密钥后进行破解,Alice 与 Bob 应该如何应对呢?

有一个办法是一次一密,也就是每次传输都使用新的密钥,且保证密钥与明文等长或者更长。采用这种方法获得的密文具有完善保密性,密文不会透露任何与明文有关的信息,从而保证了「绝对安全」。

参考