作者:徐令予
所有已建或在建的量子通信工程都不是新的通信技术,它们也不是保证通信安全的独立完整的密码系统。量子通信工程也与量子纠缠毫无关系,它们其实只是利用量子偏振态为通信双方协商获得共享密钥的一种硬件技术,简称“量子密钥分发”技术(QKD)。
QKD的工作原理源于IBM的Bennett等人在1984年制定的BB84协议。Bennett本人并非一个密码专家,他们的初衷仅想采用量子力学原理在信息安全领域做些科学探索,BB84协议本不是用来解决什么信息安全现实问题的。BB84是前互联网时代留下的技术活化石,这是一种落后的端到端的通信协议,它与现代互联网结构格格不入、水火不容。所以这个协议提出后,IBM并没有申请专利就不足为奇了。
世界上有许多千奇百怪的物理学探索性课题,许多科研项目诞生于实验室又悄悄寿终于实验室。在一般情况下,QKD的命运应该和大多数探索性项目一样“藏在深闺人未识”,它们鲜有走出实验室的大门的机会。
近年来炒得沸沸扬扬的量子信息技术终于让QKD这个屌丝有了逆袭的机会。QKD头顶“量子”光环,又扯上尚未出世的难兄难弟量子计算机,导演了一场“没有金刚钻偏要揽瓷器活”的闹剧。
闹剧的神逻辑是这样的:公钥密码的安全性无法得到证明,更危险的是,当量子计算机进入实用阶段后,公钥密码会被轻易破解,这将导致信息系统的灾难。敌对势力甚至现在可能就在收集那些依靠公钥密码保护的文件,等待量子计算机出来后将逐一破解。为了保护国家和人民的通信安全,必须加速投入无条件安全的量子通信建设,时不可失,机不再来。
这段论述表面看来振振有辞、理直气壮,说得比唱的还好听,其实逻辑上是完全错误的。因为公钥密码与QKD根本就是处在不同层次而且内涵绝然不同的两个概念。如果把公钥密码看作智能手机,那么QKD更像是固定电话座机,虽然它们都有通话的功能,但它们通话的使用方式、适用范围是完全不同的,而且智能手机还具有上网、摄影和移动支付等等功能,固定电话座机哪里有机会代替智能手机呢?
同样道理,QKD只能为确定的“熟人”之间分发一个共享密钥,而公钥密码使用公钥、私钥两个密钥,所以能为互联网千千万万“非熟人”之间分发密钥,而且它还可以完成用户认证、数字签名等多种QKD完全无法完成的功能。公钥密码与QKD是两条轨道上跑的车,即使明天量子计算机与太阳同时升起,公钥密码的天塌下来,“量子通信”这个银样蜡枪头是根本不顶用的,唯有丢人现眼的份。
QKD的这场闹剧与伪科普有着密切的关系,“解铃还须系铃人”,结束这场闹剧还得从严肃的科普教育着手。下面将对通信密码学作些科普,介绍对称密码和公钥密码的发展历史,分析它们在功能和用途上的区别。通过更多的科学事实和逻辑推理彻底清除有关“量子通信”的谬误。
密码系统是用来保护通信安全的。在信息时代通信成为人们日常生活最重要工具,现代信息的传输都依赖于共享的通信网络,所以保护通信安全的密码系统已经飞入了寻常百姓家。人们上网购物,手机支付、微信聊天都在不知不觉中得到了密码系统的保护。
我们可以把密码系统想像为一个帶锁的匣子和两把完全相同的钥匙,见图1。有了这样一个系统,双方就可以安全地传递信息。发送方把文件放入帶锁的匣子里,然后用钥匙把匣子锁上,再把锁上的匣子通过邮政或者快递公司送达接收方,接收方拿到匣子后用钥匙把匣子打开,这样接收方就获得了文件。
假设匣子使用绝对坚固的特殊材料组成,用钥匙把它锁上后,除非使用同样的一把钥匙把匣子打开,没有任何办法可以取得和观察匣中的文件。有了这样的设备,双方的文件传输就是安全的,至少在传输过程中(信道)是安全的。换言之,在匣子传送的整个过程中只要钥匙控制在通信双方的手中,他们就不担心匣子传送中使用什么方法、走什么路线,也不在乎匣子经过多少黑客间谍之手,而这就是保护通信安全的核心的要求。至于偷窃或复制钥匙,那属于信源安全问题,以后另行讨论。
明白了上述的道理,就容易理解现代通信中的密码系统的工作原理。现代通信使用电报、电话、电邮等等方式,通信过程中传输的是各种电信号(又称明文)。我们当然也可以把需要传递的电讯号录在磁带上,然后放在上述的匣子上传递,但是这样的传递效率太低。我们反其道而行之,不是用匣子把电信号隐蔽起来,而是让电信号在公开的线路上传输。但是在传输前,先把明文按某种复杂的规则和特定的参数把内容完全打乱,生成无人能解读的密文,任何人取得这些密文后使用任何手段都无法从中得到任何有用的信息,只有知道这个特定参数的接收方才可以把密文还原成明文。
例如明文‘fly at once’转换成密文‘gmz bu podf’,这里转换规则是字母按字母序列替代,特定参数是以下一个字母替代。使用同样的转换规则只要改变特定参数,例如以下两个字母取代,密文就变成‘hna cv qpeg’。收到密文后只有知道特定参数的接收方才可以按照转换规则的逆操作得到明文‘fly at once’。当然字母替代的转换规则太简单幼稚,没有任何实用价值,只是通过这个实例解释“转换规则”和“特定参数”的真实含义。
明文与密文相互之间的转换就是加密与解密,加密与解密需要两个元素:转换规则和特定参数,前者是加密解密算法(简称加密算法),后者就是密钥。它们分别等价于“带锁的匣子”和“钥匙”。为了保证文件传递的安全,需要把文件锁进一只没有了钥匙就永远也打不开的匣子;同样道理,密码系统需要有一种特殊的加密算法,加密算法在密钥的控制下把明文转变成一堆乱码——谁也读不懂的密文(相当于用钥匙把文件锁进匣子),只有密钥的拥有者方可把密文转换成明文(相当于用钥匙打开匣子把文件取出)。
一个安全的密码系统的关键是具有优秀的密码算法,一个高级优秀的密码算法是公开透明的,但它可以保证除了密钥拥有者,任何其他人无法破解密文,即使是掌握了加密算法也毫无用处。一个优秀的密码算法把通信的所有机密集中浓缩在密钥中,这样的做法无疑是非常科学合理的。因为密钥仅是隨机字符串,通信双方保护好共享的密钥远比保护通信的线路、没备、加密算法等等要素要方便容易得多。因为在涉及通信安全问题上,除了通信的双方,你不能相信任何第三者。作为一个普通的通信用户,他不可能自己设计或改动密码算法,也没有本事确保通信线路及设备的安全可靠,但保护好一个密钥还是完全有可能的。一个优秀的密码系统必须让任何两个普通人都能实现安全可靠的通信,只要他们保护好各自的密钥就可以了。
在上面介绍的密码系统中,用以加密和解密的密钥是完全相同的,这种密码系统称作“对称密码”。使用对称密码时,通信的收发双方拥有完全相同的密钥,加密和解密的密钥是完全相同的。对称密码中比较著名的编码算法包括DES、3DES、IDEA、AES等,它们都是基于数学的复杂算法原理用软件方法实现的。
对称密码在理论上也可以自称为无条件安全的。早在1949年,信息论鼻祖香农(Claude E. Shannon)就在他发表的“保密系统的通信理论”一文中证明了异或方式的对称加密算法在满足:密钥长度不小于明文、密钥生成充分随机、一次一密这三个条件下,攻击方完全无法破解密文。
但是在工程实践中,“密钥长度不小于明文”、“一次一密”这些条件不仅在技术上很难完全满足,而且实际上也没有这个必要。目前使用的256位的AES算法是足够安全的,面对未来的密码破解能力的提升,只需遵循香农保密准则,增加密钥长度、改善密钥质量、减少密钥重复使用次数,对称密码的安全性是无须担心的,相比计算机软硬件的各种安全隐患真是小巫见大巫了。这个观点不仅是密码学界的共识,包括量子通信人士也是无法否认的,尽管他们不太愿意公开承认这一点,其中的原因后面会加以详述。
对称密码的要害是通信双方共享同一密钥,这必然要求通信双方在通信过程的开始前至少有过一次“零距离接触”[1],在首次接触时双方商定出一个共享密钥,其实也就是一个随机字符串。一旦拥有了共享密钥后,通信双方即使分隔在天涯海角,他们依靠共享的密钥把需要传递的明文加密成密文,然后可以通过任何方式把密文传递给对方,完全不用担心中途的拦截和窃听,因为没有任何人可以把密文还原成明文,除非拥有那个共享的密钥。
使用对称密码的必要条件是通信双方至少有过一次“零距离接触”,没有这个先决条件通信双方就无法建立起共享的密钥。因为依靠电话、信件或其它任何方法商定出来的共享密钥都存在被第三者窃取的隐患,这样得到的密钥原则上都是不安全的,而对称密码的安全性完全建立在密钥的安全上。
由此可知,对称密码就是相互认识的“熟人”之间使用的密码系统,只要是在“熟人”之间,只要有过“零距离接触”,就可以商定共享密钥。只要有了这个初始密钥,不仅可以用它对明文加密解密以保护明文传送中的安全,而且也可以把新设定密钥当作明文来加密解密,用以传送分发更多的新的密钥,因为密钥本是一串随机字符串。对称密码在“熟人”社会(例如企业和军队)内部可以保证通信和密钥分发的充分安全。
但是互联网的出现让“对称密码”这位老革命家遇到了新问题。互联网亿万用户很难依靠对称密码来保证他们相互通信的安全。难题一,使用对称密码的必要条件是通信双方至少要有过一次“零距离接触”,这个条件在互联网世界很难满足。难题二,两个用户使用对称密钥前必须通过“零距离接触”建立起初始密钥,如果互联网的一个通信群体的用户数到达一千万,这个群中需要生成近100亿个初始密钥,每个用户就要存放管理好9999999个初始密钥!这两个难题使得对称密码无法在互联网环境中发挥作用。但是没有密码系统保护的互联网通信又是难以想像的。
“需求乃发明之母”,保证互联网通信安全的强大需求催生出了天才的发明——非对称密码(又称公钥密码),可以毫不夸张的说,公钥密码就是保护互联网通信安全的利器,没有公钥密码就不会有互联网今天的风光。
非对称密码的工作原理其实不难理解,也可以把它看成一把锁。对称密码这把锁有两把完全相同的钥匙,它们都可以用来加锁和开锁,所以称之为对称密码;非对称密码的锁配有公钥和私钥两把完全不同的钥匙,单有公钥无法复制私钥,而用其中的一把钥匙加锁后,只能用另一把钥匙方能开锁,反之亦然。当然前面已经介绍过,在真实的密码系统中,这里的锁其实就是加密算法,而加锁、开锁则对应于加密、解密。
现在请看图2。图中的左边是信息的发送者,右边是接收者。通信过程可分解为三个动作,过程起始于右边的接收者。1)接收者有公钥(带红色标记)和私钥两把钥匙,接收者通过公共通信设施把公钥传给发送者;2)发送者把文件放入匣中,用公钥把匣子加锁后通过公共通信设施传给接送者;3)接收者用相应的私钥把锁打开取出文件,收接双方利用公共交通设施安全地传递了文件,又不需要事先有过零距离的接触。
在以上的通信过程中,公钥虽然公开出现在网络上,但是任何人复制、窃取没有任何用处,因为发送者的明文就是用这个公钥加锁的,而这把锁的特点就是用公钥加锁后再也无法打开,除非使用与之对应的私钥。而私钥又仅掌握在接收者手中,任何人根据公钥又无法复制对应的私钥,所以发送者用接收者送出的公钥加锁的匣子只能被掌握在接收者手中的私钥打开,公钥和私钥的共同配合保证了收发者之间文件传递的安全。
在上述通信过程中,收发双方不需要事先商定一个共享的秘密——密钥,他们之间不需要有“零距离接触”,一次也不需要!通信的接收者只要保护好自己的私钥,而公钥是可以公开地、大大方方地传递给发送者。公钥密码系统通过使用公钥和私钥这样两个不同的(非对称的)密钥,使得通信双方可以跨越“零距离接触”这个巨大的障碍,让分隔天南地北的非“熟人”之间都可以方便快捷地进行安全的通信,公钥密码技术对于互联网的生存发展功莫大焉!
对称密码和非对称密码(即公钥密码)构成完整的传统密码系统,对称密码主要用在“熟人”之间,为各类企业、政府机构和军队内部提供通信的安全保障。公钥密码主要用来为亿万互联网用户提供通信安全服务。在实际使用中,这两种密码又常常是相互配合、各尽所能、取长补短。
公钥密码可以为互不认识的互联网用户之间安全地传递信息,因为对称密码的密钥本身就是一个隨机字符串,所以公钥密码就常常被用来在互联网上为非熟人之间传递分发对称密码的密钥,一旦两个从未有过“零距离接触”的非熟人之间通过公钥密码获得了共享的密钥后,他们之间就可以用对称密码作加密解密以保护通信的安全。因为对称密码更安全,而且加密解密也更有效率[2]。
对称密码把加密解密的所有核心机密都倾注在一个密钥中,因此对称密钥需要时时处处小心苛护、见不得人,使用很不方便。而公钥密码把加密解密的核心机密分解在公钥与私钥这样两个密钥中,一个可以公开,把另一个隐藏起来,公钥密码使用方便灵活,在互联网环境中游刃有余。
公钥密码不仅可以转递分发密钥,它还能为通信用户提供身份认证和数字签名。通信安全不只是保密性,通信的确定性和完整性也是通信安全的重要组成部分,在有些场合甚至比保密性更重要。公钥密码可以为非熟人之间提供密钥分发、身份认证、数字签名等多种功能,全方位地为通信安全保驾护航。而在企业、政府机构等熟人社团中,密钥分发、身份认证、数字签名这些功能都可由对称密码完成,但是在某些场合下也会部分釆用公钥密码,以提高效率和降低成本。
至此作一个小结:
传统密码分成对称密码和公钥密码(又称非对称密码)两个系统。它们都有各自的加密算法和密钥组成,具体地来说加密算法就是实施某种数学运算的软件,而密钥就是控制该算法运行的一个数字参数。
对称密码使用共享的相同密钥作加密和解密。对称密码主要为有过“零距离接触”的熟人之间提供加密解密、密钥分发、身份认证等功能,它可以为企业、政府机构和军队内部的企业网之间通信提供充分的安全保障。
公钥密码使用公钥和私钥两个不同的密钥,单从公钥无法复制私钥,而用公钥加密后只能用私钥方能解密,反之亦然。公钥密码主要为互联网亿万非熟人之间提供密钥分发、身份认证、数字签名等功能,是保护互联网通信安全的经济有效不可缺少的利器。
对称密码和公钥密码的本质区别在密钥上:是使用同一个密钥还是两个不同的密钥?需不需要初始密钥?这两个特征决定了对称密码和公钥密码各自适用的范围和服务的对象。这个自然段请读者重读三遍,它是全文的关键。
所谓的“量子通信”究竟与对称密码和公钥密码又有什么关系呢?目前的“量子通信”都是基于量子力学测量原理的BB84协议的各种工程翻版,该方案利用光子的偏振态作为信息载体来传递密钥,基本的工作原理介绍如下。
发送方把不同的滤色片遮于光子源前,就可分别得到四种不同偏振态的光子,分别用来代表“0”和“1”。请注意,每个代码对应于两种不同的光子偏振状态,它们出自两组正交的偏振滤色片。接收方就只有两种偏振滤色片,上下左右开缝的“十”字式和斜交开缝的“X”字式。由于接收方无法预知到达的每个光子的偏振状态,他只能隨机挑选两种偏振滤色片的一种。接收方如果使用了“十”字滤色片,上下或左右偏振的光子可以保持原量子状态顺利通过(见图中上面的第二次选择,接收方用了正确的滤色片),而上左下右、上右下左偏振的光子在通过时量子状态改变,变成上下或左右偏振且状态不确定(见图中第一次选择,用了错误的滤色片)。接送方如果使用X字滤色片情况正好相反,见图中第三次选择(错误)和第四次选择(正确)。
接收方通过公开信道(电子邮件或电话)把自己使用的偏振滤色片的序列告知发送方,发送方把接收方滤色片的序列与自己使用的序列逐一对照,然后告知接收方哪几次用了正确的滤色片(打勾?的2,4,5,6,9,11,12)。对应于这些用了正确滤色片后接收到的光子状态的代码是:10011010,接发双方对此都心知肚明、毫无疑义,这组二进制代码就是它们两人协商出的一个共享密钥。QKD过程中如何防止第三者窃取密钥等技术细节就不在本文展开了[3]。
通过上面的介绍可知,量子通信就是基于物理原理依靠硬件分发密钥的技术。表面上看,这种技术似乎能为通信双方获得共享的密钥,而又不需要收发方在通信以前有过“零距离接触”。其实这是对密码学基本原理的一个严重的误解,或许是故意的曲解。量子密钥分发技术根本解决不了“零距离接触”这个难题,它无法为亿万互联网上“非熟人”之间提供密码服务。量子现象再怎么神奇,它总不能违背最基本的逻辑吧?用上述的密码学基本原理分析一下,就可彻底看清量子通信的真实面目。
在QKD开始时如果甲乙双方的真实身份无法确认,攻击者在量子传递线路中间对甲方冒充乙方,同时对乙方冒充甲方。甲方与攻击者之间、攻击者与乙方之间照样可以顺利协商得到两个密钥,然后甲方把通信内容加密后传送给了攻击者,攻击者用第一个密钥解密获得了全部通信内容,然后再把通信内容用第二个密钥加密后传送给乙方,乙方用密钥解密得到通信内容。甲乙双方还以为依靠量子通信完成了无条件安全的通信,谁知攻击者在暗处偷笑:量子通信传递的秘密“尽入吾彀中矣。”
量子通信不适合用作通信双方的身份认证,但也不是完全不能做。已经存在一种称为“Wegman-Carter scheme”的方案可以用作通信用户的身份认证[4]。这个方案的原理其实也简单,就是让通信双方在QKD通信之前预先取得一个较短的密钥(又称为tag,一般为256位的二进制数),接着双方通过QKD取得新的共享密钥,然后用它来加密解密tag,最后经过比对确认对方的真实身份。从这个角度看,QKD实质上是一种受条件限制的密钥分发技术,这个限制条件就是通信双方在密钥分发前已经拥有初始共享密钥。换言之,所谓的“量子通信”只能为有过“零距离接触”的熟人之间协商分发出对称密码中的一个共享密钥,它与公钥密码是驴唇不对马嘴。“量子通信”完全没有可能替代公钥密码。
量子通信推动者和科普教育者都有意或无意中,掩盖和混淆了这样一个铁的事实:量子通信其实只是以硬件方式为“熟人”之间提供一个共享的密钥,除此之外它啥也干不了。量子通信不仅无力替代公钥密码为互联网亿万“非熟人”之间分发密钥,而且因为它提供的仅仅是一个共享密钥而不是像公钥密码那样的一对密钥(包括公钥、私钥)。没有公钥、私钥的协同配合就难以实施互联网上的身份认证、数字签名等等服务,而这些服务恰恰是保证互联网通信安全的关键。
要为亿万互联网用户服务,量子通信还有一个更难的障碍无法跨越。量子通信与对称密码一样需要在收发方之间建立和保存初始密钥(或者称tag),当用户数成千上万的增长后,管理这些海量的初始密钥就会成为不可能完成的任务。
公钥密码的算法安全性确实值得重视,改善和提升公钥密码的安全也是应该的。但是过度夸大公钥密码的安全隐患不仅有违科学事实,而且对量子通信一点好处也没有。公钥密码是死是活与“量子通信”没有半毛钱的关系,没有金刚钻你就别想揽那瓷器活。
量子通信实质上就是用硬件方式协商出一个共享的密钥,这注定了它与公钥密码毫无关系。那么量子通信在对称密码中是否会有点用处呢,非常不幸,答案也是完全否定的。使用对称密码的用户之间一旦建立了初始密钥后,任何一方可以任意制定新的密钥,用初始密钥加密成密文后安全地传递给另一方,另一方用共享的初始密钥对密文解密得到新的密钥。对称密码用户之间用这种方法分发和更新密钥,多快好省从来也没有什么问题[5]。量子通信工程的推动者认为公钥密码一旦崩溃,没有“量子通信”密钥只能依靠“信使”来分发。这是对密码学基本原理的又一个严重的误解(也许是有意的谎言)。
对称密码加密解密的安全性是不容怀疑的,包括量子通信人士也是无法否认的,尽管他们不太乐意公开承认这一事实。其实原因很简单,量子通信一刻也离不开对称密码的加密算法。前面已经介绍了量子通信的工作原理,量子通信实质上只是用硬件方式分发了共享密钥,仅此而已,它本身没有一丁点加密解密的功能,加密解密使用的就是对称密码中常用的AES这些算法。
密码系统要安全必须要求加密解密算法和密钥分发都是安全的。如果对称密码的加密解密算法是不安全的,用无条件安全的量子密钥分发为对称密码传递密钥纯属浪费;如果对称密码的加密解密算法是安全的,用这种加密解密算法分发密钥一定也是安全的,那么量子密钥分发技术就纯属多余。逻辑的硬道理告诉我们量子密钥协商——即所谓的“量子通信”,它在对称密码系统中也没有立足之地。
综上所述可得如下结论:今日所谓的“量子通信”既不是一种新的通信方式,它也不是一种新的密码系统,把它称为量子密码技术也是完全不合格的,它其实仅是对称密码系统中提供密钥分发的一种新的选项。量子通信比较正确合理的定位应是:对称密码系统中密钥的硬件协商技术。由此可知“量子通信”与公钥密码毫无关系,认为所谓的“量子通信”可以拯救公钥密码危机是一个弥天大谎。“量子通信”的密钥协商功能只适合用在对称密码系统中,但是对称密码系统中的密钥分发早已存在完整有效的的技术手段和行业规范,它们远比“量子通信”技术更安全、更成熟、更经济有效。
基于BB84协议的“量子通信”没有工程实用意义,把“量子通信”工程当作国之重器就是一个讽剌。说到底,一个密码系统的关键技术都在加密算法中,密钥只是一个随机字符串而已。量子通信只是密钥的分发协商,它本身不带加密算法,这决定了它真的没有什么技术含量,当然也就不可能有很大的发展空间。
最后还要强调指出,本文的结论纯粹是基于通信密码学基本原理通过逻辑分析得到的。本文在分析讨论中故意忽略了量子通信的物理过程和工程实施等细节,并且还假定量子密钥分发本身是无条件安全的,这是为了让本文的结论让常人容易理解,确保本文的结论经得起时间的考验。即使放宽对“量子通信”的审视标准,处处优待“量子通信”,但是得到的结论却是坚实明确、毫不含糊:基于BB84协议的“量子通信”没有实用价值。
尽管本文对“量子通信”的批评质疑一直秉承“疑罪从宽”的原则,但并不表示量子通信除了上述概念性错误外就没有更多的问题,事实上有些问题更严重更致命。其实量子密钥分发在理论上也不是无条件安全的,而使用了可信中继技术的量子密钥分发具有极严重的安全性隐患,量子通信在组网技术上有难以克服的障碍。量子通信的这些严重问题在本系列中分别有专文分析讨论。
参考资料
[1]使用对称密码的通信双方在通信过程的开始前至少有过一次“零距离接触”,或者通过与双方信任的第三方“零距离接触”,从而达成间接的接触。后者就是普遍使用的“密钥分发中心”KDC方案。
[2]互联网环境中公钥密码与对称密码的配合使用图解
[3] QKD过程中如何防止第三者窃取密钥呢?假设窃密者在公开信道上得知了接送方使用的偏振滤色片序列,也知道了发送方的确认信息,但是窃密者依旧无法确认密钥序列。窃密者真要确认的话,必须在中途插入偏振滤色片来观察,但它又无法事先知道应该使用“十”还是“X”滤色片,一旦使用错误滤色片,光子量子状态发生改变,窃密的行为立即暴露。收发双方可删除出错的代码段落以保证共享密钥的安全。
要了解QKD更多的技术细节和安全性分析可阅读下列文章:
Security of Quantum Key Distribution
https://ieeexplore.ieee.org/document/7403842
[4]必须指出“Wegman-Carter scheme”身份认证方案实际上只是一种传统认证方式用在了QKD的过程中,该方案与量子物理无关。
[5]徐令予:企业网环境中的密钥分发管理