解读量子通信京沪干线,包你懂(上)

出品:科普中国

制作:中国科学技术大学 袁岚峰

监制:中国科学院计算机网络信息中心

2017年9月29日,中国科学院举行新闻发布会,宣布世界首条量子保密通信干线——“京沪干线”正式开通。许多人都知道这是继2016年8月16日的世界首颗量子科学实验卫星“墨子号”升空以来,量子科技领域的又一个重大的进步。但是这“京沪干线”,究竟是什么呢?(能吃吗?)在喝彩的同时,大多数吃瓜群众想必还处于这种状态。

在这里,我来为大家解读一下,给出一个基本图景。

首先需要明白的是,京沪干线和墨子号都属于“量子信息”这个学科的研究成果。而量子信息,是量子力学(描述微观世界的基本物理规律)与信息科学结合产生的交叉学科。通信和计算是信息科学的两大研究主题(想想你的手机和计算机),相应地,量子信息的研究内容也分为量子通信和量子计算。

量子通信和量子计算各自又包括若干具体应用,例如科幻电影中的“传送术”(量子隐形传态)和破解常用密码体系的计算方法(量子因数分解)。而京沪干线和墨子号,都属于量子通信中的“量子密码术”。一听这名字,你就知道它是一种保密的方法,而不是(像很多胡诌八扯的所谓“科普”文章说的那样)天马行空、不可思议的超时空传输。

下面这张图,表示出了量子信息这整个学科的逻辑结构。

量子信息学科内容

对于量子信息,我写过不少科普文章,其中最详尽的是应新浪科技“科学大家”栏目之邀写的《你完全可以理解量子信息》(https://tech.sina.com.cn/d/2017-08-31/doc-ifykpysa2199081.shtml)。这是一篇4万字的文章,如果你真心想理解量子信息的科学原理,超越吃瓜,成为内行,那么建议你去读这篇文章。在这里,我将以答客问的形式,简要地告诉你京沪干线的内容和价值。

一、问:京沪干线是干什么的?

答:一言以蔽之,保密传输。其实细心的人就会注意到,新闻里说了这条干线是“量子保密通信干线”。也就是说,在从北京到上海的这段范围内,可以以一种前所未有的安全性,传输秘密信息。

二、问:以前的保密方法有什么问题?

答:为此,我们需要先讲一点密码学。

把明文变换成密文,需要两个元素:变换的规则和变换的参数。前者是编码的算法,例如“在英文字母表上前进x步”。后者是密钥,例如上述算法中的x这个数。如果取x = 1,明文的“fly at once”(立即起飞)就会变成密文的“gmz bu podf”。

最容易想到的保密框架,是通信双方都知道同一组密钥,A用它将明文转换成密文,B用它将密文变换回原文。《红灯记》、《潜伏》等谍战片中情报人员舍死忘生、殚精竭虑保护和争夺的密码本,就是密钥。由于通信双方都知道同一组密钥,所以这种方法叫做“对称密码体制”。

《红灯记》

对称密码体制究竟安全不安全呢?回答是:密码本身可以是安全的,但密钥的分发不安全。

我们先来解释前一句话:密码本身可以是安全的。信息论的创始人香农(Claude E. Shannon)证明了一个数学定理:密钥如果满足三个条件,那么通信就是“绝对安全”的。这里“绝对安全”是一个数学用语,它的意思是:敌人即使截获了密文,也无法破译出明文,他能做的最多也只是瞎猜而已。

哪三个条件呢?一,密钥是一串随机的字符串;二,密钥的长度跟明文一样,甚至更长;三,每传送一次密文就更换密钥,即“一次一密”。满足这三个条件的密钥叫做“一次性便笺”。

稍微思考一下,就能理解香农的定理。比如说,你拿到的密文是一个8位的字符串DHDSBFKF,这其中每一位的原文都是另外一个字符,对应规则都是“在英文字母表上前进x步”,但x对每一位都单独取值(这就需要密钥的长度至少跟原文一样,即第二个条件),而且是随机的(第一个条件)。例如第一位的x = 1,把原文的C变成密文的D,第二位的x = 3,把原文的E变成密文的H。你能猜出原文吗?

任何猜测都需要有个线索。一个常用的线索,是基于英文中各个字母使用频率的不同(最常见的前五位是E、T、A、O、I),统计密文中每个字母出现的频率。但这只适用于每一位的变换规则都相同的情况(即只有一个统一的x),而在这里每一位都有自己随机的x,这一招就用不上了。如果不是一次一密(第三个条件),你还可以连续截获好几份密文,然后在多份密文的同一个位置做这种频率分析。但加上一次一密之后,连这个仅存的希望也破灭了。因此,你除了瞎蒙之外,还能干什么呢?

我们再来解释后一句话:密钥的分发不安全。香农的定理听起来好像已经解决了保密通信的问题,但其实没有。真正的难题在于,怎么把密钥从一方传给另一方?

在现实生活中,需要第三方的信使来传递。而信使可能被抓(如《红灯记》中的李玉和)或者叛变(如《红岩》中的甫志高),这麻烦就大了。最好是不通过信使,通信双方直接见面分享密钥。但是如果双方可以轻易见面,还要通信干什么?

《红灯记》中的李玉和

三、问:对呀!那密码学家岂不是没戏唱了?

答:密码学家:

我不会轻易“狗带”

为了解决密钥配送的问题,密码学家们想出了另外一套办法,称为“非对称密码体制”或者“公钥密码体制”,能够让李铁梅和余则成这些信使光荣下岗。为什么可以做到这样呢?请注意,解密只是接收方B的事,发送方A并不需要解密,他们只要能加密就行。

那好,B打造一把“锁”和相应的“钥匙”,把打开的锁公开寄给A。A把文件放到箱子里,用这把锁锁上,再公开把箱子寄给B。B用钥匙打开箱子,信息传输就完成了。

如果有敌对者截获了箱子,他没有钥匙打不开锁,仍然无法得到文件。这里的“锁”是公开的,任何人都能得到,所以叫做“公钥”,而“钥匙”只在B手里有,所以叫做“私钥”。

这种巧妙的思想,实现的关键在于:有了私钥可以很容易地得到公钥,而有了公钥却很难得到私钥。就是说,有些事情沿着一个方向操作很容易,逆向操作却非常困难,“易守难攻”。

在易守难攻的数学问题中,“因数分解”就是一个典型例子。目前世界最常用的密码系统之一,就是基于因数分解的RSA(这是三位发明者的首字母缩写)公钥密码体制。

RSA密码体系的三位发明者

解释一下,因数分解指的是把一个合数分解成两个质因数的乘积,例如21 = 3 × 7。分解21当然轻而易举,你不管三七二十一就能分解它。不过,来分解267– 1 = 147,573,952,589,676,412,927看看?这是个18位数。1644年(李自成进北京那一年),人们以为它是一个质数。直到1903年(清朝都快亡了),人们才发现它是一个合数,等于193,707,721 × 761,838,257,287。分解这个数,几乎花了一个朝代的时间!

为什么会这么困难呢?用计算机科学的语言说,随着位数的增加,因数分解的计算量是“指数增长”的,而指数增长是一种非常快的增长,比“多项式增长”要快得多。

指数增长的威力。如图所示,指数函数虽然在最初落后,但很快势不可挡地超越了线性函数和三次方函数,而且越到后面把它们甩得越远

具体一点说,如果计算机一秒做1012次运算,那么分解一个300位的数字需要15万年,分解一个5000位的数字需要50亿年,——地球的年龄也不过是46亿年而已!

四、问:这样听起来,公钥密码体制已经确保安全了?

答:我还没说完呢!

公钥密码体制的安全性,依赖于数学问题的困难性。但是,计算量是与算法有关的。比如说你要计算17乘以28,愚笨的做法是把17个28一个个加起来,聪明的做法是按照多位数的乘法列出算式,后者显然比前者快得多。

对于像因数分解这样的难题,人们在不断寻找更好的算法。我们肯定的只是,在目前公开的最好的算法下,因数分解的计算量是指数增长的。将来有没有可能找到更好的算法,把计算量减到可破解的程度?当然有可能。

这还只是就公开资料而言。更令人夜不安寝的是,能解密的算法也许已经被某些国家、某些组织掌握了,只是没有公布!

五、问:了解,不过这听起来只是个“莫须有”的隐患啊?

答:前面说的,都是就经典的计算机而言的。自从量子信息这门学科兴起以来,出现了一个新概念:量子计算机。

经典计算机架构的基础是“比特”,即一个体系可以处于而且只能处于两个状态,往往记为0和1。而在量子计算机中,“比特”被扩展成了“量子比特”,即一个体系可以处于两个状态|0>和|1>(|>叫做狄拉克符号,你可以在中间写上任意的数字或字符,表示某个量子状态),以及这两个状态的任意“线性叠加”a|0> + b|1>(a和b是两个数,对线性叠加的详细解释请见《你完全可以理解量子信息》,https://tech.sina.com.cn/d/2017-08-31/doc-ifykpysa2199081.shtml)。

用硬币来打比方,经典比特就是硬币只能显示出正面或反面,量子比特就是硬币还能显示出一半正面一半反面,或者1/4正面3/4反面等等。这听起来很不可思议吗?换一个例子就好懂多了,用光的“偏振”。

大家知道,光是一种电磁波,也就是不断振动的电场和磁场。如果电场只在一个固定的方向振动,就叫做偏振光。现在3D电影已经很常见了,为什么你戴个3D眼镜就能看到立体的图像呢?因为两个镜片其实是两个偏振片,各允许一个偏振方向的光通过,而这两束偏振光的图像略有不同,这样就使左右眼看到不同的图像,使人产生了立体感。

对于偏振光而言,偏振方向可以是水平的(0度),也可以是竖直的(90度),也可以是其他的任何角度(例如45度、135度、120度),它们都相当于水平和竖直两种偏振状态的线性叠加。因此,偏振光就是一种常用的实现量子比特的物理体系,一个偏振的光子就是一个量子比特。

总而言之,从经典比特到量子比特,就是从只有两个选择变成了连续可调,好比把电灯的“开关”变成了收音机的“旋钮”。这样一说,就容易理解了吧?

基于量子比特,量子计算机可以实现一些经典计算机做不到的事情,这其中最重要的例子之一就是因数分解。1994年,肖尔(Peter Shor)发明了一种量子算法,把因数分解的计算量减少到了多项式级别。这意味着什么呢?同样还是分解300位和5000位的数字,量子算法能够把所需时间从15万年减到不足1秒钟,从50亿年减到2分钟!因此,这不是“隐”患,而是“明”患!

六、问:那么RSA密码体系已经被破解了?

答:只是在理论上。因为量子计算机还处于实验阶段,没有达到实用的程度。目前真正用量子计算机分解的最大的数是291,311 = 523 ×557,是由中国科学技术大学的杜江峰和彭新华等人在2017年实现的。

七、问:这样看来,量子计算机并不值得担心?

答:不能这样短视。火车刚出现时,许多方面不如马车,但有远见的人都能看出来,火车可以达到的上限远远超过马车,火车代表未来,藐视新事物是要吃亏的。拿破仑拒绝富尔顿的蒸汽铁甲船,也是一个经典的例子。

斯诺登披露了美国国家安全局有一个绝密的项目“穿透硬目标”(Penetrating Hard Targets),计划建造一台专门用于解密的量子计算机。据传该局已经存放了大量外国政府的密电,一旦项目成功立刻对它们动手。这足以让其他国家不寒而栗了!

八、问:对称加密有信使不可靠的问题,非对称加密有被数学方法破解的问题,那该怎么办?

答:当当当当当,英雄闪亮登场的时候到了!不错,我就是美貌与智慧并重,英雄与侠义的化身,……量子密码术!

我就是美貌与智慧并重,英雄与侠义的化身:唐伯虎

咳咳,量子密码术做的是什么呢?其实是回到对称密码体制,但取消信使。也就是说,不通过信使,就能让双方直接共享密钥。

怪哉,不通过信使怎么拿到密钥?关键在于,这里的密钥并不是预先就有的,一方拿着想交给另一方。(地下党组织:李玉和同志,这是密电码,这个光荣而艰巨的任务就交给你了。)在初始状态中,密钥并不存在!(地下党组织:李玉和同志,我们没有任何东西要交给你,解散!)

量子密钥是在双方建立通信之后,通过双方的一系列操作产生出来的。利用量子力学的特性,可以使双方同时在各自手里产生一串随机数,而且不用看对方的数据,就能确定对方的随机数序列和自己的随机数序列是完全相同的。这串随机数序列就被用作密钥。量子密钥的产生过程,同时就是分发过程,——这就是量子密码术不需要信使的原因。

关于量子密钥的特点,还可以再解释得详细一点。量子密钥是一串随机的字符串,长度可以任意长,而且每次需要传输信息时都重新产生一段密钥,这样就完全满足了香农定理的三个要求(密钥随机,长度不低于明文,一次一密),因此用量子密钥加密后的密文是不可破译的。

双方都有了密钥之后,剩下的事情就跟经典的通信完全相同了:A把明文用密钥编码成密文,然后用任意的通信方式发给B。“任意的”通信方式的意思就是“怎么都行”:可以用电话,可以用电报,可以用电子邮件,甚至用平信都行。香农的定理保证了这一步不怕任何敌人,因为截获了也破译不了。

因此,量子保密通信的全过程包括两步。第一步是密钥的产生,这一步用到量子力学的特性,需要特别的方案和设备。第二步是密文的传输,这一步就是普通的通信,可以利用任何现成的通信方式和设施。量子保密通信所有的奇妙之处都在第一步上,所以它又被叫做“量子密钥分发”,这是业内人士常用的一个技术性的名称。

九、问:那么,量子密码术是怎么做到分享密钥又不通过信使的呢?

答:你真的想知道吗?你不是真的想知道吧?虽然你很有诚意地看着我,可是你还是要跟我说你想知道的,不可能你说你想知道我不告诉你,你说你不想知道我偏要告诉你,大家讲道理嘛!……

咳咳,这个问题要讲清楚就必须涉及到量子力学的理论体系,不是三言两语能说完的。如前所述,请参见我的文章《你完全可以理解量子信息》(https://tech.sina.com.cn/d/2017-08-31/doc-ifykpysa2199081.shtml)。在这里,我给出一个尽可能简单的描述。

(送上一个微笑)

如果你看不明白细节,没关系,尽可以跳过,不影响对大图景的理解。

量子密码术有若干种具体的实现方案,都叫做某某协议,包括BB84协议、B92协议、EPR协议、诱骗态协议等等。我们来具体介绍一下BB84协议,这是最早的一个方案,是1984年由Charles H. Bennett和Gilles Brassard提出的,了解了它就了解了量子密码术的精髓。

在BB84协议中,用到光子的四个偏振状态,记为|0>、|1>、|+>和|->,它们分别对应光子的偏振处于0度、90度、45度和135度。我们不妨把它们记作 “江南四大才子”!

江南四大才子

|0>和|1>这两个态构成一个“基组”,也就是说,其他任何的态都可以通过它们的线性叠加产生。根据这个定义,|+>和|->这两个态也构成一个“基组”。实际上,一个基组就好比一个平面直角坐标系,你可以选择任何两个互相垂直的方向作为两个坐标轴,0度和90度可以,45度和135度也可以。

在量子力学中,“测量”是个很特别的操作。首先,你需要确定在哪个基组下做测量。然后,情况就分为两类。一类是,你要测量的态就是这个基组中的一个状态,比如说在|0>和|1>的基组中测量|0>,那么结果不变,测完以后还是|0>这个态。另一类是,你要测量的态不是这个基组中的一个状态(而是它们的线性叠加),比如说在|0>和|1>的基组中测量|+>,那么结果必然改变,随机地变成基组中的某个状态(好比“削足适履”)。在这个例子中,就是以一半的概率变成|0>,一半的概率变成|1>。在|+>和|->的基组中测量|0>,也是同理,以一半的概率变成|+>,一半的概率变成|->。

好,现在我们来叙述BB84协议的操作过程。A拿一个随机数发生器(通俗地说就是掷硬币),产生一个随机数0或者1(让我们把它记作a),根据这个随机数决定选择哪个基组:得到0就用|0>和|1>的基组,得到1就用|+>和|->的基组。选定基组之后,再产生一个随机数(记作a′),根据这第二个随机数决定在基组中选择哪个状态:得到0就在|0>和|1>中选择|0>或者在|+>和|->中选择|+>,得到1就在|0>和|1>中选择|1>或者在|+>和|->中选择|->。经过这样双重的随机选择之后,A把选定状态的光子发送出去。

B收到光子的时候,并不知道它属于哪个基组。他怎么办呢?他可以猜测。B也拿一个随机数发生器,产生一个随机数(记作b),得到0的时候就在|0>和|1>的基组中测量,得到1的时候就在|+>和|->的基组中测量。B测得|0>或者|+>就记下一个0,测得|1>或者|->就记下一个1,我们把这个数记为b′。

看出来了吧?如果B猜对了基组,a = b,那么光子的状态就是B的基组中的一个,所以测量以后不会变,a′必然等于b′。而如果B猜错了基组,a ≠ b,那么光子的状态就不是B的基组中的一个,所以测量后会突变,a′和b′就不一定相等了(有一半的概率不同)。

把这样的操作重复若干次,双方发送和测量若干个光子。结束后,双方公布自己的a和b随机数序列(“公布”的意思就是对全世界公开,就是这么任性~),比如说a的序列是0110,b的序列是1100。然后找出其中相同的部分,在这个例子里就是第二位(1)和第四位(0)。

现在我们知道了,在第二位和第四位,a′和b′必然是相同的!A和B把各自手里第二位和第四位的a′和b′记下来,这个随机数序列就可以用作密钥。如果发送和接收n个光子,由于B猜对基组的概率是一半,就会产生一个长度约为n/2位的密钥。至于a、b两个序列中不同的部分,在这个例子中就是第一位(0对1)和第三位(1对0),它们对应的a′和b′有可能不同,所以我们就不去看它们了,这部分数据直接抛弃。

就这样,双方同时获得了密钥。很简单,不是吗?

(再一次送上微笑)

如果你记不住这么多,没关系,只要记住一点就行了。量子密码术的安全性只依赖于量子力学的物理原理,而不依赖于数学复杂性。因此,计算技术的进步可以破解像RSA这样的公钥密码体系,却不能破解量子密码。

文章未完!更多精彩请继续阅读《解读量子通信京沪干线,包你懂(下)》。


作者简介:袁岚峰,中国科学技术大学化学博士,中国科学技术大学合肥微尺度物质科学国家实验室副研究员,科技与战略风云学会会长,微博@中科大胡不归,知乎@袁岚峰(https://www.zhihu.com/people/yuan-lan-feng-8)。

致谢:感谢中国科学技术大学合肥微尺度物质科学国家实验室陈宇翱教授、陈腾云博士、陆朝阳教授、张强教授在科学内容方面的指教。

请关注风云学会的微信公众平台“风云之声”,微信号fyvoice

“科普中国”是中国科协携同社会各方利用信息化手段开展科学传播的科学权威品牌。

本文由科普中国融合创作出品,转载请注明出处。