薛定谔将不确定性钉在量子的理论中,从此量子就充满了不确定性。无论量子计算机还是量子信息也都逃不掉这个宿命。
新浪网上发了篇袁岚峰的《4万字干货!你完全可以理解量子信息》(http://tech.sina.com.cn/d/2017-08-31/doc-ifykpysa2199081.shtml),这里面可不是干巴巴的内容,其实就像鲁迅说的,只要你想挤,水总能花花流出来。
常识告诉我们,一件正确的事情,你了解的细节越多,会让你有更多的信心,反之,必然的结果就会表现出来更多无法自圆其说的破绽。说到量子信息,对应于中国,其实里面的内涵并不是在讲什么纯粹的理论,而是实践性很强的量子通讯的内容。
还是从量子计算机来谈起吧。量子计算机究竟有多大神奇的魔力?它的原理是什么?究竟它能否带来计算的革命,或者取代我们现在意义上的诺依曼体制计算机?回答这个问题用一个科普文章是比较吃力不讨好的,基本上,能够看到的相关文章都抓不住本质,所以得出的结论都是科幻性质的。
无论是量子计算机还是诺依曼计算机,具有共同的本质,就是解决数学问题或者说逻辑问题,所以离不开算法,也就是用一系列的操作,将输入的数据进行适当处理,输出有效的结果。算法设计是计算机领域非常重要的一个组成,当然其中一个小小的成份就是吵得沸沸扬扬的加密解密算法,真的是小小的成份,因为整个计算机行业,其实就是靠着各种不同用途的算法来支撑的,还不客气地说,没有算法就没有计算机。
很久之前,当计算机还没有很成型的时候,有关可计算性理论就已经开始发展起来,先驱者就是大名鼎鼎的图灵和他的图灵机模型。可计算理论的价值与哥德尔不完备定理是同等价值的,在很大程度上,它们在用不同的方式阐释同一个问题。
可计算性理论在探索计算机理论上的能力界限,那是在无限空间和无限时间的尺度上进行的思考,但是我们没有无限的空间,也没有无限的时间,因此需要将神仙降落凡间,判断解决具体问题所设计的实际算法是否具备可行性。所谓可行性,就是在有限空间和时间范围内,能够从输入获得最终的处理结果。衡量可行性的理论在20世纪50年代就已经做了探索,其中最值得称道并沿用至今的就是算法复杂度理论。这个理论将算法与解决问题的“规模”挂钩,让问题“规模”与算法形成函数类的映射关系,比如说,排序算法,1万个数排序时间肯定比10个数排序慢得多,但是这个慢得多,到底慢到什么程度?能否有一个相对的比对关系作为衡量?复杂性理论就是给出这个比较关系,还是用这个排序来说,一般来说,简单的排序算法是与排序数目成平方关系,记做O(n2),如果算法经过优化,其实能够做到O(log2(n))。
算法复杂度理论可是个实实在在的计算机科学范畴的东西,非常理论化,我们很多人都听说过有关P&NP问题,就是说的这个。其实量子通讯所说的也是针对这方面的内容。P就是多项式的英文缩写,所谓P问题,就是随着问题规模的扩大,解决问题的算法复杂度与多项式函数想对应,通常我们说我们能够在算法上解决的问题,不能超过多项式复杂度。所谓NP问题,就是问题的结果能够在多项式复杂度下获得验证,但是解决问题是否存在多项式复杂度的算法解,没有人知道,这可是千禧年七大数学难题中排名首位的问题,也就是P=NP? 。很简单的逻辑,我们知道P必然属于NP,因为算法本身就是验证的过程,但是所有NP问题是否都属于P问题,迄今为止没有答案,直觉上这两个集合是不相等的。在NP问题中,有一类特别的问题,就是NP完全问题,已经证明如果能够找到一个NP完全问题的多项式算法,那么同样的算法就能解决所有NP问题,也就是说,这个算法是万能算法,这实在不可思议,太违反常识了,所以人们就是更愿意相信P<> NP。NP完全问题有很多,其中比较著名的就是旅行商问题。
两个大素数的乘积是很容易计算的,但是如果将这个乘积反过来分解成两个大素数就没有一个简单的方式,它的算法复杂度是O(2n),是指数增长的,因此这个分解大素数的算法是NP问题,RSA算法就是基于此开发出来的。
1994年,量子计算机的专家肖尔(Peter Shor)提出一个以他的名字命名的算法,宣称能够用多项式算法复杂度解决大素数因式分解问题,于是RSA就受到了潜在的威胁。那么究竟量子计算机有什么与众不同的东西能够在传统计算机算法之外找到一个法门,破解掉一个NP问题?通常来说,我们提到的复杂度都是指的时间复杂度,其实还有一个复杂度指标就是空间复杂度,因为时间对我们来说具有“刚性”,你可以比较容易地扩展空间,但是时间是完全无法改变的。复杂度理论的一个研究成果,就是有关时间复杂度与空间复杂度的关系,其结论是当我们在时间复杂度上获得利益的同时,我们必须在空间复杂度上做出妥协,时间与空间就像分别坐在跷跷板两边,一方面抬起,另一方面必然下沉,我们无法在两个方面同时获益。但是量子计算机中最关键的量子比特为解开这个死结提出了一个解决之道。传统的计算机,每个存储单元只能保存一个bit信息,或者是0或者是1,但是量子比特可以同时叠加两个值,既可以是0也可以是1,一个量子位能够存储2bit信息,n个量子就可以叠加上2的n次方个bit信息。这个存储空间的扩展可是指数型的增长,也因此对于某些在传统计算机上呈现指数型时间复杂度的问题,理论上可能因为采用量子计算机获得多项式时间复杂度的解决。所有所谓量子计算机算法能够获得收益的,都是运用了量子的叠加态,通过叠加态带来的空间上指数的扩展,在时间上将复杂度降低到多项式甚至更低,shor算法也不例外。
n个量子的叠加态总和为2的n次方,如果比较形象一些理解量子计算机的运作机理,其实就像n个量子同时进行了2的n次方次的搜索尝试的过程,并在如此广大的数据空间中找出可能的解。但是量子的行为可是要怎么随机就怎么随机,完全不遵循任何逻辑运算的规则,如何在找到合适的解时候将其及时提取出来,这仍然需要引入普通计算机中逻辑运算。这就像是采用算法逻辑设计了陷阱,当合适的结果出现的时候,就让这个果实落入陷阱中。设计量子计算机的算法,就是在量子充分随机的过程中,设计这个筛子一样的东西,这个筛子仍然是传统的逻辑,所以你不要指望在理论上量子计算机能够抛弃普通逻辑,也不要指望量子计算机的性能能够指数型提高,其实理论上的量子计算机能够做的事情是很有限的,都是类似穷尽搜索类型的问题,都是针对具体问题进行的设计,就像在普通的逻辑推演过程中,添加一个随机黑箱子,使得黑箱子的输入与输出之间,能够利用量子比特的叠加特性进行穷尽形式的搜索,并将结果在正常的逻辑推演树上继续传递下去。由于随机搜索本身并不是逻辑操作的必要成分,随机搜索操作也不可能独立构造出来所有的逻辑,所以根本不可能存在通用型的量子计算机。如果你争辩说电子也是量子,电子计算机也可以算是量子计算机的一类,算我没说。
那么即便是专用的量子计算机,是否这类机器开始进入可实用的状态?远不是这样,这里面涉及到单量子的叠加态是否真实存在这个理论问题,这也是量子力学最令人困惑的地方。理论上一个量子位能够保存2个bit信息,但是迄今为止,即使这个看起来最简单的操作都没有能够实现。如果有谁宣称这个完全没有问题,那么就让他把2个bit信息保存到一个单量子上,然后再原样取出来。我们的量子实验专家们已经能够在实验室自如地操作10来个光量子的彼此纠缠,但是令人惊异的是,这么简单的单量子存储操作他们竟然做不出来,那么那些所谓的纠缠究竟是什么就难免令人生疑。爱因斯坦的EPR问题的验证,有很多针对贝尔不等式的实验,其实大可不必那么费周折,况且还有那么多的漏洞,只要在实验室中做了那个单量子信息存储实验,就完全能够确定性地证明量子叠加态的存在,并进而彻底否定了爱因斯坦的观点。这是一个无论在理论上还是在应用上都必须完成的实验。我完全不能理解当前奇怪的现实,因为没有了量子存储实验,也就根本不可能有量子计算机,那些量子计算机专家们难道就打算一直在空中楼阁上规划未来的宏图?
我们目前的所谓量子计算机或者是采用多量子模拟,或者舍弃量子存储的环节。前者也是我们很多采用普通型计算机模拟量子计算机运作所用的方式,根本没有量子计算机的理论优势,后者即使发展起来也是完全无用的废物。为什么说没有存储能力的计算机是废物?存储的本质目的就是将处理的操作与可能产生的结果在时间上进行分离,使得先前事件的结果能够在严格的控制下,对后续的特定操作序列发生作用,逻辑要想发挥更大作用,这是最起码的要求。没有了存储能力,所有操作只能严格按照时间顺序来执行,任何只有按照严格时间顺序发生的事件,都是简单的确定性事件,无法构成复杂的结果,只能是极其专用性质的机器。打个形象的比方,有了存储能力,计算机才能像大脑那样灵活地计算推演,而缺少了存储能力,计算机只能像植物神经那样对信息以固定形式进行加工响应,就像波色采样实验那样。
所以,尽管量子计算机都在大上快上,现实确不是那么乐观,我很确信,没有量子存储的突破,量子计算机根本就不可能真正实现。难道我们对量子叠加态是否存在不感兴趣吗?这可是所有涉及单量子定理是否成立的前提条件,当然包括那个著名的单量子不可克隆定理。我们有这么强的量子实验专家团队,去从单量子里把那2个bit取出来吧,这绝对在理论和应用领域都堪称诺奖级别的成果。
说了太多量子计算机的话题,还是转回量子信息这块,我们知道虽然量子计算机的实现遥遥无期,但是假设这就是现实好了。量子信息不说理论,就说说它的一个应用:量子通讯。
量子通讯目前的应用领域只有一个量子密钥分发,应用了BB84协议,这个协议能够做的就是发送者和接受者两方用单量子的方式协商出来一个随机数,利用这个随机数采用按位异或的方式对发送信息进行加密和解密。一般的人们完全不知道,BB84根本不能用来发送信息,连一个字母A也不能发送出去,这也是为什么我一直将量子通讯叫做通讯而不是通信的原因,因为这个协议不能用来发送信息,发送出去的只能是无意义的信号,当然做量子通讯的专家们从来不会告诉你这一点。
按位异或加密解密采用的是对称密钥,也就是说加密解密的密钥都是一个,这个是相当简陋的密钥了,现实中常用的都是DES类算法。密码学中还有一类密钥是非对称密钥,加密解密的密钥不同,最著名的就是RSA算法,当然其基本原理就是利用将一个大数分解成两个大素数是NP问题,也就是说因式分解算法是个指数复杂度算法。但是如果量子计算机成为现实,那么通过量子比特空间的指数扩展,可以将分解大素数的算法时间复杂度降低为多项式级别,从而能够在很短的时间内将两个非对称密钥破解出来。
对于密码学完全没有概念的人当然无法知道对称密钥和非对称密钥都是什么鬼,以为量子计算机是万能的,只要是密钥都能破解。可惜的是,量子计算机对于复杂逻辑算法生成的对称密钥完全没有办法,它擅长的只能是穷尽搜索式的算法,所以最乐观的情况,我们手头即使有了量子计算机,仍然破解不了对称密钥,当然做量子通讯的专家们从来都没有明确地告诉过你这一点。
我一直感到难以理解的一个问题就是,为什么量子通讯专家们一直在宣传RSA这个非对称密钥会被量子计算机破解,所以需要他们提供一个对称密钥来解决这个问题。这就像是说如果你感觉头痛,有人建议你在鞋里加个鞋垫,完全找不到其中的逻辑啊。不过看了“4万字干货”这个文章,似乎明白了其中关系。我来引述原文中的一段话(斜体字):
我们来总结一下传统密码术的困境。对称密码体制本身是安全的,但分发密钥的信使是大漏洞。非对称密码体制不需要信使,但你又会担心它被数学方法破解。两难。
这就清楚了,这是头一次有相关的专家明确指出来对称密钥是安全的,对于量子通讯专家们来说,他们并没有否认这一点,但是分发对称密钥采用的RSA算法却是个大的风险,因为量子计算机可是能够将其破解的啊,所以说到这里逻辑就能讲通了,其实量子通讯专家们是懂得对称密钥与非对称秘钥的区别的。可是就像我在文章开头说的那样,对错的事情了解的细节越多,它暴露出来的破绽也就越多。
量子通讯是个工程类项目,不是理论研究,做工程首先需要做的就是用户的调研,你必须知道你的用户当前的现状,他们存在的问题,千万不要从理论上推导用户的现状,臆造他们的问题。这是最起码的要求,最起码的常识,一点不过分。目前应用到密钥的行业很多,典型的就是银行业,其它行业的信息安全管理其实都是从银行业借鉴过来的。那么银行业信息安全的现状如何?这可是个非常专业的问题了,不在这个行业做过工作的人根本无从知晓。
很显然地,当我们实施了这么一个几十亿元大工程项目的时候,我们的量子通讯专家们对于他们潜在用户的现状是一无所知,他们臆造了一个用RSA非对称密钥进行对称密钥分发的过程,可惜的是密码专家们完全不像他们想象中那么弱智。
中国银行业信息交换安全管理的规范叫PBOC,这其实基本沿袭美国的银行标准制定出来的,全世界其它地区也基本遵照办理。我很希望量子通讯专家们在策划他们的大工程之前,认真坐下来消化一下这个只有几十页的行业标准,然后再来看看量子对称秘钥是否能够在其中起到什么有价值的作用。
完全不像他们想象中的那样,银行间还需要不断发送对称密钥,并用RSA进行加密,其实银行间的密钥更新根本不分发密钥,分发的是完全不需要保密的随机数而已,这些随机数任何人拿去都无所谓,因为其中不包含任何密钥信息,密钥安全管理就是这么神奇。
密钥分发管理采用分级的形式,从总行到各大区的支行,大概不超过3级,每个密钥分发管理中心叫做KDC,每个层级管理的对称密钥就叫该级别主密钥,比如第三级就叫3级主密钥。全国的KDC其实是不多的,这可不是银行的门点。总行的KDC为顶级密钥,用来生成顶级密钥,这个顶级密钥一般有多组,每次拿出一组顶级密钥使用,其它组密钥处于备份状态。主密钥可不是用来分发的,而是用来生成分发密钥。生成分发密钥首先需要系统先生成一系列随机数,并用主密钥对其进行加密操作,生成的密文就作为分发密钥,用于分发到下一级KDC。下一级接收到上一级的分发密钥,将其作为本KDC的主密钥,如此继续使用该主密钥给下一级生成分发密钥。
这个叙述好像确实在说KDC需要不断将分发密钥发送给下一级KDC,那么总得需要将密钥进行加密后才能在公网上传递吧?这个环节难道不就是需要RSA这类对称密钥上场了?难道这不就是量子通讯在解决的问题吗?这不正是4万字一文所描述的过程吗?事实的真相是,这样的过程只需要做一次,就是当两个KDC之间完全没有任何可供通讯加密的密钥时候才会使用。当两个KDC之间已经有了彼此都掌握的对称密钥,密钥更新的过程就变得完全不同。
假如一个KDC要将一个新的分发密钥传送给下一级KDC,我们把这个分发密钥叫做明文K,那么首先,上级KDC从一组对称密钥中选择一个出来,不妨称作密钥A,记下这个对称密钥的序号,同时在系统中生成一个随机数,用密钥A对其进行加密,生成一个密文,这个密文作为过程密钥,不妨称作P,用P对分发密钥K进行加密,然后将密文、生成过程密钥的随机数和对称密钥的序列号发送给下一级KDC。注意的是,这个时候,在公网上发送的K是经过P加密的密文,这个是安全的,P并没有发布到公网上,发布出去的只有随机数和加密密钥序列号,这些信息是不能利用来对密文进行破解的。接收端的KDC有了加密密钥序列号,就能够从自己的主密钥库中提取出来对应的密钥,并将收到的随机数进行加密,这样就能还原过程秘钥P,然后就可以直接用P将收到的K密文解码成明文K,从而完成主密钥的更新。所以我们能够知道的有三点:
第一点, 密钥分发能够用到RSA作为加密手段的只有最开始初始化的第一次,之后采用的都是对称密钥加密。其实RSA未必都会用到,任何能够安全地将初始化密钥设置到KDC的手段都可以采用,毕竟只需要做一次的事情,麻烦一些并不要紧;
第二点, 网上发送的信息不包含任何加密密钥的信息,无论经过多少个路由或者中继,所以根本不可能在网络环节泄密;
第三点, 更新的密钥在KDC进行还原,只有在这个环节会产生泄密的危险,因此保护KDC的安全才是整个环节中至关重要的问题。
对照“4万字干货”那段引文,你就能知道,为什么文中所说的传统密码术的困境是一个臆造出来的货色,依此理由所建设的量子通讯的应用价值如何也就知道了,且不说现在所有银行都早已完成了密钥初始化的过程,即使退一步说,为了这么一次性的过程花上几十个亿,即使用效果很好也是劳民伤财的举动。
有关量子中继器的描述我不得不再引用一段论述:
如果你要问,带中继的量子密码术安全性如何?回答是:这取决于你跟谁比。好比你问,关羽的武力怎么样?那么跟吕布比和跟颜良比,答案完全不同。(颜良:我招谁惹谁了?)
跟两点之间直接连接的量子密码术相比,安全性是下降了。因为现在所有的N个节点都知道密钥k1,你必须守住中间的N-2个中继器,任何一个中继器被敌方攻破都会泄密。
但是跟经典通信比,安全性还是要高得多。因为在经典通信中,漫长的通信线路上每一点都可能泄密,每一点你都要防御,这是个令人望而生畏的任务。现在你只需要防守明确的N-2个节点,防线缩短了很多,安全性自然大大提升。
我觉得这段描述简直是对所有通信领域和密码安全领域专家们的污名化,其实最终让人觉得无知的恰恰是文章的作者本人。传统的通信线路哪里是泄密点?所有信息都是加密传送的,其实即使采用了量子通讯的手段进行密钥分发,最终加密的信息也是需要走在传统的信息通道上的。如果说传统通信加密手段存在弱点,那就是KDC,全国也没有多少KDC,这跟最长200公里就要采用一个完全不安全的中继器的量子通讯信道到底谁更能够保有安全性,一目了然。就比如北京到上海,其实只需要收发两个KDC节点就可以,而量子通讯信道没有几十个中继根本不用想玩得转。好在作者比较诚实地承认中继器是不安全的,这点总算是一点点的进步,这起码撕破了量子通讯物理安全神话的画皮。不得不再次重复我说的,错的东西,你知道的细节越多,它露出的破绽也就越多,盖都盖不住,难道不是吗?
在“4万字干货”这个文章中还有个Q/A环节,比较有趣,其中反驳曹正军老师有关量子密码术怕干扰的立论还是比较让人开眼界的:
传统的密码术不能发现窃听,而量子密码术能发现。发现窃听后该怎么办?最好的当然是把窃听者抓起来,但那是警察的任务,不属于密码术的范围。至于密码术本身,在发现窃听时唯一能做的就是停止通信。否则你打算干什么?继续传输,等着泄密吗?
原来量子通讯的重要目标之一就是抓间谍?假如在战场上,指挥官要用量子密码术发送一个绝密战斗指令,然后发现或者不断受到干扰,或者不断发现有窃听者,导致命令无法下达,指挥官于是咧开嘴笑道:“小样,就觉得你能啊,你试试偷我的信息,我发现你了,老子就是不跟你玩。”这可不是玩笑,文章不就是这么建议的吗?再者说了,听谁说继续传输就是等着泄密?密码术的设计就是不怕窃听,它足够健壮,即使听到的信息也都是加密信息,是无法破解的,将密码设计用来防止窃听,那可是天大的笑话。简单来说,如果一种密码术不怕窃听,足够强壮,如同山东大汉,另一种密码术有窃听和微小的干扰就自动宕机,孱弱如林妹妹,你会选哪个?
我从来认为做一件事情一定要把这件事情本身做好,其它的事情交给其它环节来处理。通信也一样,一定要把信息传递出去,而密码术就是要为这个信息的安全传送保驾护航,在此基础上再谈其它的能力。雷锋如果不能把兵当好,不能把车开好,成天逛街去做好事,你觉得他是合格的兵?文章的观点再次暴露出来量子通讯专家们,对于他们要做的事情孰重孰轻都没有起码的认知,不知道谦虚面对真正专家的质疑,反而大言不惭地用狡辩来赢得对谈的胜利。要知道,在量子通讯领域,其实密码专家和通信专家的话语权基本是没有的,他们根本无法获得与之进行公平而充分的科学论辩的机会。
在文章中,还有:
假如你现在要发一个绝密的信息,有两个选择:量子密码术和公钥密码体制。
谁说只有两个选择项?量子通讯专家们真的就认为信息加密都只能用公钥体制?他们给大众传播的信息就是如此。因为采用公钥体制,所以会被量子计算机破解,所以是不安全的。文章中就是持的这个观点,我非常纳闷的一点,对于量子通讯专家们来说,他们费尽千辛万苦分发的对称密钥是用来干什么的?事实的真相是,由于非对称秘钥算法非常低效,所以只能用来加密解密短的信息,现实世界中绝大多数的信息都是通过对称加密进行传输的。
量子通讯最大的问题就是我们的专家们,根本搞不清楚做科学与做工程的区别,他们拿着技术完全不成熟的东西,造出来一艘木板航空母舰,然后勇敢地趟进工程化应用的大海。做工程基本都是成熟的技术再次重组,偶尔需要尝试采用新科学原理进行工程化尝试,也是小步摸索,就像邓公说的,需要摸着石头过河,绝对不会一下子铺展开来,那不是科学的态度,也必然受到不可抗拒的科学规律的惩罚。所以,当你听到量子通讯专家们的宏观大论时,你会体会到他们更多的是情怀,而非严谨,更多的是飘忽其间,而不是脚踏实地。相反,文章中提到一些国家也在开展量子技术的理论研讨,用来证明我们做量子通讯工程的正确性和先进性,从中你就能够真切地感觉到两者所持科学态度的巨大差距。前者是真正在科学技术领域上做探讨,他们知道这不是可以拿来马上就用的技术,他们需要耐心等待技术成熟后再摘取果实,反观我们的专家们可都是急不可耐地跃跃欲试着。
总之,并不是我们的技术试验是错的,恰恰相反,我们应该在这方面投入更大精力,我们需要更紧迫地去验证量子比特的叠加态是否存在,在理论和应用上取得真正的突破,而不应该把精力和资金投入到这么一个毫无任何应用价值的量子通讯工程上,我们对于国家科技发展的自信不能建立在这样一个沙丘之上。
转载本文请联系原作者获取授权,同时请注明本文来自李红雨科学网博客。
链接地址:https://wap.sciencenet.cn/blog-46717-1074225.html?mobile=1
收藏