全球联:对量子密码术的讲解
量子密码术是密码术与量子力学结合的产物,它利用了系统所具有的量子性质。首先想到将量子物理用于密码术的是美国科学家威斯纳。威斯纳于1970年提出,可利用单量子态制造不可伪造的“电子钞票”。但这个设想的实现需要长时间保存单量子态,不太现实。贝内特和布拉萨德在研究中发现,单量子态虽然不好保存但可用于传输信息。1984年,贝内特和布拉萨德提出了第一个量子密码术方案,称为BB84方案,由此迎来了量子密码术的新时期。
量子密码术是怎么实现保密的呢?跟传统密码术一样,也是通过算法和密钥。实际上,量子密码术用的算法还是个特别简单的算法,简单到三言两语就能说清楚。
任何一串信息,都可以表示成一串二进制字符,即一串 0 和 1。对这个 01 字符串的每一位数字a,我们都给它一个对应的密钥 k,这个k 也是一个 0 或 1 的数字。根据 a 和k,就可以算出对应的密文 b,它也是一个 0 或 1的数字。
对应的规则是:如果 k= 0,那么 b就等于 a;如果k= 1,那么b 就等于 0 和 1 中不等于 a 的那一个。也就是说,k = 0 就把 0 变成 0,1 变成 1,而 k =1就把 0 变成1,1 变成 0。再简单一点说, k= 0 就不变, k= 1 就将 0 和1 互换。这个算法叫作“异或”。
你也许会感到奇怪,那么多复杂的算法都保不了密,这个最简单的算法凭什么可以?
诀窍不在于算法,而在于密钥。请注意,这里的密钥不是只有一位数字。如果只有一位数字,那当然完全没有保密效果。实际情况是,对于原文的每一位,都相应地有一位密钥。也就是说,如果原文的长度是n 位,那么密钥的长度也是n位。如果原文像《红楼梦》那么长,那么密钥也需要这么长。
另外,这串密钥的字符串还必须是个随机的字符串。也就是说,每一位都是随机的 0 或者 1,任意两位数之间,没有任何联系。
此外,这么长的密钥,还只能用一次。也就是说,你这次用n 位的密钥传输 n位的原文,下次你传同样的内容,还必须从头再来,重新构造 n位的密钥,千万不能把原来的密钥再用一次。这叫作“一次一密”。
量子密码术中的密钥就是满足这样 3 个条件的字符串:长度跟明文相等,随机,一次一密。
为什么要这样做呢?因为这样就绝对不会被数学方法破译。为什么不可能被破译?因为这样的一段密文,可能对应任何的一段跟它等长的明文,而且概率相等。比如说,既可能对应“明天上午向东进攻”,也可能以同样的概率对应“后天下午向西撤退”或“飞出地球移民宇宙”……
对这样没有任何偏向性的密文,数学分析完全无从下手,因为这里根本就没有一个让你解决的数学问题。
长度跟明文相等、随机、一次一密,满足这 3 个条件的密钥叫作“一次性便笺”。因此,密码学中一个重要的定理就是:用一次性便笺加密的密文,是绝对不可破译的。这条定理是信息论的创始人克劳德·香农证明的。
值得注意的是,一次性便笺中的 3 个条件缺一不可。无论是密钥长度小于明文,还是密钥的各位之间有联系,还是同一串密钥用了两次,都会导致密文呈现某种结构,这样对手就有了着力之处,就可能通过频率分析之类的手段破解密码。
一次性便笺方法早在第一次世界大战的末期就发明了,但很少实际应用。原因是,传送这样大量的密钥非常困难。如果像《红灯记》《潜伏》等谍战片一样,派信使去传密钥,那么一旦信使被抓或叛变,损失将十分巨大。因此,一次性便笺方法只用在不惜任何代价要保证信息安全的地方,例如国家元首之间的通话。
量子密码术改变了这种状况,它的办法是:用量子力学的物理方法,在通信双方之间产生一次性便笺密钥。这里的关键是:双方同时获得了密钥!没有第三者信使在中间传输!
这是非常巧妙的思想,是量子力学创造的奇迹。量子密码术的技术含量,就是表现在这里。量子密钥的产生过程,同时就是分发过程,因此量子密码术又有个专业名称,叫作“量子密钥分发”。
那么,量子密码术是怎么实现无信使的密钥分发的呢?一个简略的解释是:量子密码术利用了量子力学中的两个原理,一个是叠加原理,另一个是测量可能导致状态突变。基于这两个原理,通过发射和接收一系列处于随机状态的单光子,来使通信双方获得一串相同的随机字符串。这串随机字符串就是一次性便笺密钥。
通过一系列操作以后,双方都获得了一串随机的 0 和 1,比如说0010111001001010101……最重要的是,双方的这个字符串完全一样。这就是最终的效果。
有了密钥之后,就用“异或”加密算法,用密钥把明文加密成密文,把密文发送出去。既然密文已经是不可破译的了,这一步就不需要任何特别的设备,直接在传统信道上大摇大摆地走就是了,敌方截获也无妨。
一个常见的误解,是以为最后的信息传送要通过某种量子信道。当他们知道传统信道就行的时候,就感到大惑不解,甚至以为搞量子通信的都是骗子。
另一个常见的误解,是以为密钥也要通过传统信道传输。这是绝对不可能的,如果要将密钥通过不安全的信道发出去,那就完全失去了保密的意义。任何密码系统都不会愚蠢到这种程度。
总结一下,量子密码术真实的做法是:用量子信道产生密钥,用传统信道传送密文。你也许想问:既然量子信道可以保证不泄密,那为什么不直接用量子信道传输信息,而只是传输密钥呢?因为这种量子力学的操作只能产生随机字符串,随机字符串的信息量是零,所以这种操作本身不能传输信息。因此,这种方法的提出者在很长时间内想不出它有什么用,直到发现这段随机字符串可以作密钥,才让这种方法有了用武之地。