2018年4月12~13日,美国国家标准与技术研究院(NIST)将主持召开一个重要的国际密码学会议,为后量子时代的非对称密码制定新的标准。国际互联网工程任务组(IETF)也将在4月公布TLS1.3的正式运行版本,为互联网安全筑起新的长城。2018年很有可能因这两大事件在互联网科技发展史册上留下深深的烙印。
TLS1.3
TLS是互联网传输层安全协议,TLS1.3是IETF制定的TLS最新标准。TLS为互联网上密钥的产生和分发、数据传输时的加密和解密、用户的身份认证及电子签名等制定了统一的算法和标准,以确保数据在传输时的安全。网络服务商和软件开发商将在TLS1.3标准指导下开发出相应的软件包和程序库,网页浏览、微信、电子邮件在处理数据传输时都会自动调用这些软件包和程序库,保证数据在互联网上传输的安全。这样各种应用程序就不必为数据传输安全费心费力,也杜绝了由数据相互传输不协调造成的安全隐患。
当你使用任何一款浏览器(火狐、UC或者是IE等等)访问网站时,这些浏览器和网站服务器都会首先调用TLS软件包。TLS制定的算法为通信双方分别产生非对称密码的公钥和私钥,然后通过握手程序交换公钥和身份认证信息,接着根据TLS提供的算法验证对方身份并产生出共享的对称密钥,最后对传输的数据(包括用户的口令、信用卡号码和账户余额等)进行加密和解密,保证这些数据在公共网络传输过程中不被破解和篡改。
微信、电子邮件和互联网上各种应用程序也都是在TLS规约下按照上述相似流程来保证数据在公共网络上安全地传输。微信通信双方协商取得共享对称密钥的握手进程如图1所示。TLS是互联网安全的基石,它是每个网民的护身符。
图1 微信通信双方协商取得共享对称密钥的握手进程的示意图1
长久以来,人们总是把密码与军事、外交联系在一起,印象中使用密码的人物不是躲在阴暗角落的间谍特务,就是捍卫国家安全的孤胆英雄。事实上,随着互联网的普及,今天每个普通人都离不开密码,密码技术已经“飞入寻常百姓家”。当你在网上购物时,当你用手机通话或收发微信时,所有信息都在开放共享的网络上传输。现代通讯技术使得信息的传输变得越来越方便、迅速和高效,但是也使得信息非常容易被黑客截获。如果没有密码保护技术,发送短信、在线付款、网上通话等等都是难以实现的。
电脑、手机中都有执行TLS协议的整套软件,它们在后台默默无声、忠实无悔地守护着互联网用户的隐私,它们是新时代为人民服务的好战士。当我们享受互联网带来的种种福利时,又有多少人会感谢那些设计、运行和维护TLS的工程技术人员呢?“谁知网上游,步步皆辛苦!”如果没有TLS,网上的日子一分钟也过不了。
TLS的前身是安全套接层协议(Secure Sockets Layer, SSL)。SSL诞生于20世纪90年代初期,SSL 2.0版本在1995年2月发布,但由于存在数个严重的安全漏洞一年后便被3.0版本替代。进入21世纪后,更为先进有效的TLS代替SSL扛起了互联网安全卫士的重任。互联网上数据传输的安全问题一直困扰着人们,SSL/TLS一次次的变迁和升级就是一部互联网抗击黑客的血泪史。
目前网上广泛使用的安全协议TLS1.2始于2008年。这些年来它为网民们遮风挡雨立下汗马功劳,但是在满世界黑客的明枪暗箭攻击下也是满目沧桑。为了修补漏洞,执行TLS1.2协议的软件打满了补丁,俗话说:“新三年旧三年,缝缝补补又三年。”九年多了,TLS1.2也到了功成身退的时候了。
在众人瞩目中即将登台上任的TLS1.3究竟有什么亮点呢?TLS1.3是一次全面升级,与之前版本相比,它有两大优势:
●增强安全性
TLS1.2为了向下兼容,接收了太多20世纪90年代遗留下来的落后的加密方式。TLS1.2具有很强的兼容性,但也因此成为了过去几年来受到攻击的主因。
TLS1.3实施“少而精”的原则,取消了对一些陈旧落后的加密方式的支持,诸如SHA-1、RC4、MD5、DES、3DES等算法均被删除。这意味着一系列潜在的漏洞将被永久关闭。
●提升处理速度
为了保护数据传输,用户访问网站时,双方必须依靠TLS先行取得共享的对称密钥,我们称之为握手过程。为完成握手过程,TLS1.2需要在用户和网站之间传递6次信息,而TLS1.3仅需4次,如图2所示。简短的握手过程可更早地传递有用数据,加快了网页传输的速度。
图2 TLS1.2与TLS1.3握手进程效率比较
不仅如此,对于近期访问过的站点,TLS1.3可以在第一次给服务器发消息时就发送有用的数据,这叫做“零消息往来”模式(0-RTT),这会使网页传输变得更快。
虽然TLS1.3为每次网页加载节省的时间有限(大约0.1秒),但是积少成多,对于每天接受千万次以上访问的大型网站,这个提速影响不容小觑。不信可以等“双十一”时看看效果。
TLS安全协议的核心是如何通过非对称公钥让通信双方协商取得共享的对称密钥,这个过程也被称为对称密钥分发。通信双方一旦拥有了共享的对称密钥,他们之间的通信安全是有绝对保证的。但是互联网上的通信双方远隔千山万水又从未见过面,他们如何取得彼此的信任并协商出共享的密钥,而又不被第三方偷窃,这才是对密码学的真正考验。
图3 受量子计算机攻击,经对称密钥加密后的数据传输仍是安全的,问题主要出在使用公钥密码作对称密钥分发过程中
图4 十种常用浏览器支持TLS1.3的进展情况。绿色表示支持、红色表示不支持、 灰色表示情况不明
解决这个难题靠的就是非对称密码。非对称密码算法产生出一对密钥:公钥和私钥,通信双方通过交换公钥进行身份验证,并协商出共享的对称密钥。非对称密码巧妙地解决了网上通信双方“第一次”的尴尬,网上安全一日不可无此君。
非对称密码的安全性又如何呢?到目前为止,非对称公钥密码还是安全的,至少与网络上许多其他隐患相比,它的相对安全性是不容质疑的。但是面对未来的量子计算机和传统计算机的发展,现在使用的非对称密码存在安全隐患,如图3所示。
解决非对称密码安全隐患的正确之路是研究开发更安全有效的非对称密码算法。非对称密码算法已经有多种,TLS1.3就取消了用RSA这种非对称密码算法传输密钥,而改用ECDH算法。更为先进安全的不对称密码新算法正在研究评估中,本文的第二部分将着重讨论这方面问题。
估计TLS1.3将于今年下半年正式推出使用,并将在未来十年中为捍卫互联网信息安全肩负重任。谷歌的Chrome 和火狐浏览器已经支持使用TLS1.3协议草案,如图4所示。再下一代TLS的预案也已经启动,为未来20多年设计的网络安全协议都没有为量子密码通信预留任何接口。世界一流的通信安全专家把技术发展的稳妥可靠、兼容可行放在首位,他们将着力研发后量子时代的非对称密码学,为亿万网民筑起互联网上的新长城。
后量子时代密码学
后量子时代密码系统的历史回顾
2012年:NIST启动后量子时代密码(PQC)项目,成立了包c项目成员组;
2015年4月:NIST举行第一次PQC专题研讨会;
2015年8月:美国国家安全局(NSA)就PQC发表声明;
2016年2月:NIST发布PQC工作报告(NISTIR 8105);
2016年2月:NIST就PQC的标准化提出初步设想;
2016年8月:NIST制定出对PQC新算法的要求和评估标准的初稿,并公开征求意见;
2016年9月:初稿征求意见期结束;
2016年12月:NIST正式确定对新算法的要求和评估标准,面向全世界征求PQC新算法;
2017年11月30日:是提交PQC新算法的截止日期。
后量子时代密码系统的现状
截止到2017年11月30日前,NIST共收到各种后量子时代公钥密码方案82项,其中59项有关秘钥分发/加密解密,另23项有关身份认证/电子签名。这些方案来自六大洲的25个国家。表面上看方案来自五湖四海,但实际上仍为欧美等国家所把持。中国也提交了一个方案,但与量子密码通信技术完全无关。
在提交的82项方案中,有些方案受到较多的关注,它们都是达到抗量子攻击所必需的安全级别为128位的公钥密码。
NTRUEncrypt:NTRU(发音“en-true”)基于阻格数学原理,在后量子密码算法中最受关注。它的优点主要是内存占用低和运行速度快。缺点是涉及专利。很可惜,历史上开源项目一般都不会倾情于有专利授权的算法。
McEliece与Goppa:McEliece加密系统是目前密码界的一颗新星,它是第一个在加密过程中使用随机化的算法。它的优点是比RSA更快捷,主要缺点是密钥位数过长。典型的RSA密钥的键长是2048位,而McEliece键长达512千位,是RSA的256倍。
Ring Learning with Errors(RLWE,带错的环学习):另一个很有希望的后量子密钥分发方法。它与场/集合理论中的问题有关,可以用于同态加密,这是密码界的另一个热点。RLWE使用7000位的密钥,比McEliece密钥短得多,与现在常用的RSA密钥长度在同一数量级。
CECPQ1:这是密码界新杀出的一匹黑马。它是谷歌在RLWE基础上研发出的一种创新的密码算法,并且做了实际测试。它是经典的椭圆曲线算法(Curve 25519)和被称为“New Hope”的RLWE变体的一种组合算法。谷歌使用一小部分Chrome浏览器和谷歌自己的服务器(可以有效地控制TLS通信双方,谷歌做起来得心应手)测试了CECPQ1密钥分发功能。测试除了发现增加了1毫秒的延迟外,并没有发现任何其他障碍,这可能与密钥的大小有关。谷歌的实验已经结束,正在等待IETF的最后评判。
为后量子时代挑选合格的公钥密码有点像《红楼梦》剧组寻找林黛玉的表演者,在众多女演员中找来找去,初看个个千娇百媚,走近一看发现每个人都有这样那样的瑕疵,不知天上什么时候才会掉下一个十全十美的林妹妹。
后量子时代密码系统的展望
2017年12月:NIST公布所有提交的新算法;
2018年4月:召开第一届PQC算法标准化全会,由算法提交方作陈述,并听取专家意见;
对第一轮候选PQC算法进行16~18个月的评估和分析;
2019年9月:召开第二届PQC算法标准化全会;
对第二轮候选算法做出进一步评估和分析;
估计在2022年或稍后,PQC算法的标准草案会正式公布并开始征求意见。
图5 后量子时代密码系统未来进程
对后量子时代密码系统的要求和评估标准
1. 安全性。保证数据传输的安全隐秘是考核评估密码系统的先决条件和首要标准。对公钥密码新算法的安全性评估不仅要考虑量子计算机的攻击,还必须考虑到传统电子计算机的攻击。在今后相当长时间内,后者的威胁可能更严重、更实际。
2. 运行性能。这也是量子通信工程的一大问题,往往被外行们所忽视。评价密码系统只谈安全而不讲效率和速度实质上毫无意义。从工程角度来看,世界上本无绝对的信息传输安全,也不需要绝对安全,所有信息的重要性也都有时间性。密码系统要做的就是以最低的代价保证信息在其有效期内不被敌方破解,或者至少让敌方为了破解必须付出难以忍受的代价。高效率低成本是选择后量子时代新公钥密码系统的重要考量。
3. 兼容性。新的密码系统必须与今日互联网的物理设备和各种通信协议兼容,必须与TLS无缝衔接。如果仅仅是为了应对仍然只存在纸上的量子攻击,而丢弃所有现成的通信安全技术,建设所谓的“量子互联网”,这是幼稚和不负责任的行为。
4. 还要解决互联网安全的一些老问题和新矛盾,诸如解密出错、PFS和侧道攻击等等。
在确定后量子时代密码新标准时,NIST对密码系统的成本和效能做了明确的要求:
(1)密码新标准必须能运行在传统计算机平台上;
(2)密码新标准能在尽可能多的操作系统上运行,并满足不同应用程序的需求;
(3)新标准可能会选择多种算法,以最优性能满足不同的需求,在这场标准化竞争中,胜出者很有可能不止一种算法;
(4)为提高效能,易于平行化运行的密码算法会得到优先考虑。
建立后量子时代密码学的新标准注定不会一帆风顺,严峻的挑战来自两个方面:正在逼近的量子计算机和飞速发展的传统电子计算机,标准化的决策者和设计师面临两线作战的困境。而这两方面问题的性质又完全不同,量子计算机的威胁飘忽不定让人难以捉摸,而传统计算机的压力却实实在在。“一年三百六十日,刀霜风剑严相逼。”这注定将是一场不寻常的战斗,需要密码和通信专家的通力协作,专家们既要脚踏实地解决实际问题,又要有创新意识去面对不确定的未来。
量子通信技术无法替代公钥密码系统
如何应对公钥密码未来的安全隐患,存在两条截然不同的路线:主流路线是美国国家标准与技术研究院的规划,用10年时间制定出后量子时代密码系统的新标准;另一方案是中国于2017年建成的京沪量子密码通信干线。这两种方案形成鲜明的对比,美国走的是保守改革的路线,中国采取了激进革命的路线。哪种方案能更有效地应对公钥密码的安全隐患呢?
要回答上述问题,我们必须对传统密码的安全性做出恰如其分、合情合理的科学判断。事实上,目前使用的公钥密码是安全的,并且在未来相当长时间内,增加密钥的长度就足以应付量子计算机或传统计算机的攻击。
2017年5月出现了一篇论文《后量子时代的RSA》2,见图6。该文发表后被多家相关杂志转载和引用,比较一致的结论是现今使用的公钥密码RSA不会因为量子计算机的出现而消亡。
图6 论文《后量子时代的RSA》
该论文的核心观点是:假设量子计算机已经建成,再假设量子计算机的量子位(Qbit)可以无限扩展,进一步假设该量子计算机的运行成本与现在通用电子计算机的成本相当,用这样一台想象出来的超级量子计算机来破解长度为Terabyte3的RSA公钥密码需要量子计算机进行2100次的量子位操作。2100是一个什么概念?这个数大于地球上所有细胞的总数。这基本就是不可能完成的任务4。
这篇论文并不是为对抗量子计算机提供确切的方案,而是通过实验和大量数据分析指出:即使围绕量子计算机的技术难题和运营成本全都解决,只要现行的RSA公钥增加字长和改善算法,就能迫使量子计算机的恶意攻击付出难以承受的代价,公钥密码在后量子时代具有足够长的生命力。急于丢弃RSA等公钥密码系统而另辟蹊径可能真的是杞人忧天5。
我们必须承认,目前量子通信相关技术远未成熟,而公钥密码的安全隐患还在遥远的未来,匆忙建设京沪量子通信干线既不成熟也无必要。目前建成的量子通信干线只能提供密钥分发功能,这仅是公钥密码功能的一部分。公钥密码的功能可归纳为三个方面:(1)为通信双方建立共享的对称密钥;(2)为通信双方提供身份验证,保证传输文件的完整性;(3)提供数据的加密解密功能。基于BB84协议的京沪量子通信干线只有公钥密码的第一项功能,它没有能力代替公钥密码,而公钥密码也没有到非舍弃不可的地步。建设量子通信干线的意义究竟在哪里?
而且量子通信在工程上还面临成本和可行性的严峻挑战。京沪量子通信干线使用的BB84协议是一种端到端的密钥分发协议,它与分组交换协议构建起来的复杂拓扑结构的互联网格格不入。目前的量子通信连最基本的路由器和交换器的协议草案都没有,组网的可能性几乎为零。即使将来有关量子通信的组网设备和协议都研制开发出来了,它还面临如何与现存互联网融合的问题,还有额外的成本问题和运行效率问题。
按照量子通信的要求,必须在每个手机和平板电脑中增添单光子偏振态的发送和接收装置,在服务器端必须能做千万次量子密钥分发,从成本和可行性上就可判定量子密码通信没有工程前途。
发展量子密码通信原本是为了取代存在隐患的非对称密码。但非对称密码主要是用于互联网的生态环境中,目前的量子密码通信技术却完全无法进入互联网,而互联网之外的一些特定环境又基本上不需要非对称密码系统。由此可见,量子密码通信的工程前景真的十分暗淡。
退一万步讲,即使量子通信的所有工程问题明天一早都能得到解决,工程的成本问题也不去考虑,量子通信技术与互联网安全依旧毫无关系。这里有一个核心问题——兼容,量子通信技术如果不能与现存的密码系统兼容,不能成为TLS协议的组成部分,那么对亿万网民而言就是零存在。数据传输的安全是靠应用程序自动调用TLS,TLS调用相应密码来保证的。没有人有兴趣也没有能力弄懂量子通信的原理和使用方法,要让量子通信真正造福人类,就必须融入互联网安全系统中,成为TLS的一部分,而不是推翻现存的互联网构架去另建所谓的量子互联网。
公钥密码是密码系统的一部分,而密码系统又只是整个信息系统安全的一部分。当今信息系统安全确实面临一系列严峻的挑战,但如果把这些挑战按危急严重程度罗列出来的话,密码安全问题根本进不了前三甲。随着信息的电子化和网络化,密钥的产生、管理和分发全部是由电子计算机完成的,公钥密码相比计算机的硬件、软件和操作系统的安全问题,简直是小巫见大巫了。
信息安全问题是个很长的链条,密码技术只是其中的一个环节,密钥分发又是这一环节中的一个细节。保证这一个细节的安全当然是应该的,但某些媒体无限拔高它的重要性是不对的,声称要不惜一切代价提高它的安全性更是错误的。这可能会扭曲正常的资源配置,而且会误导公众,以为只要有了量子密码技术从此天下无贼。
木桶盛水的总量是被木桶的短板决定的,同理仅仅提高局部环节的安全性并不能改善整个信息系统的总体安全性。对于住在危屋中的朋友,你不劝他补窗、修门、筑围墙,而是极力推销一把高挡“量子锁”,并宣称只要门上挂了此锁从此天下太平,这样的“推销员”是否有失职业道德?
有些人对微处理器和操作系统的许多安全隐患熟视无睹,却对远为成熟安全的公钥密码横挑眉毛竖挑眼,把公钥密码描绘成明天就会引爆的地雷。
很明显,量子密码通信干线的应用推广面临困境6,目前的量子通信技术在互联网上寸步难行。如今最积极和乐观的人士也承认量子密码通信不能包打天下,这至少也算是一种进步吧。但有些人天真地认为量子密码通信能保证绝对安全,至少在某些高端领域应该有用武之地。很不幸,这样的想法未必正确,至少已经建成的京沪量子密码通信干线能否在高端领域发挥积极作用仍要打上一个大问号。
首先必须明白,量子密码通信的绝对安全仅仅停留在理论上7,而在工程实施过程中,由于存在噪声和检测设备缺陷等各种不可克服的因素,要做到绝对安全根本不可能。量子密码安全性的估算已经成为一项学术课题。严格来说,量子密码通信的安全性是一个概率统计值,它与噪声大小和检测误码率密切相关8。宣传量子密码通信绝对安全是完全没有科学依据的。
更为严重的问题是,基于BB84协议构建的量子密码通信干线必须依赖传统信道做偏振态比对,同时使用“可信任中继站”扩大通信范围。目前对量子密码安全性的分析模型都没有把这两项引起的安全隐患考虑进去,实际上这些问题恰恰会给整个系统带来巨大的安全隐患。
严重的问题就在于“可信任中继站”。主密钥通过n个中继站接力传递时,在每个中继站都必须转成经典电信号存放(都是裸奔的),窃密者只要攻占一站,主密钥唾手可得。对于如此严重的安全隐患,量子密码工程人员的应对措施只能是“物理隔离”,这意味着所有量子密码通信中继站必须24小时守卫,不让任何人接触。这必然引起另外一系列安全隐患:(1)如何保证守卫团队中每个成员的绝对可靠和忠诚?(2)如果使用远程监控系统,这些远程监控系统的通信安全又用什么方法来保证?难道再用量子通信来保护远程监控系统?(3)如何保证这些中继站的设计、制造和维护人员的忠诚可靠?什么样的公司才能提供绝对安全可靠的设备和产品呢?
第三个问题实际上是无解的。因为量子密码中继站的制造过程牵涉众多的零部件供应商和集成商,谁也不能保证在最后的产品中不存在有意或无意生成的各种安全漏洞和黑客后门通道。建设者们可以自己认为这些中继站是“可信任的”,但怎样让别人也认同你,特别是那些追求绝对机密的特殊用户凭什么信任你。
传统的密码系统却正好相反,它在设计布局时立足于一点:不能信任任何人。通信系统的任何部门、任何设备、任何协议规约、任何软件全部是公开透明的,包括加密解密的算法,绝对不会要求任何形式的“物理隔离”。通信双方只要且仅持有共同的密钥,就能保证双方通信的高度安全。发送的文本经密钥加密后生成的密文可以在任何通信设备和线路上传输,密文允许被任何人收集、复制和分析,但是只有掌握密钥的接收者才能把密文解密得到明文文本。很明显,保护密钥要比保护整个通信系统(包括许多中继站、交换机)要可靠和可行得多。
经典密码系统与目前建设的量子密码工程的本质差别不在技术层面上,而在总体的布局和思维上。经典密码系统的出发点是不信任任何人,而在建的量子密码工程必须要依赖和信任许多人。
从更长远的角度来看,任何技术都需要更新和完善,公钥密码技术当然也不例外。但是更新后的系统必须与互联网的总体框架协调,升级换代的过程也要稳步有序地推进。密码系统牵动整个互联网的生态环境,对于这种牵一发而动全身的技术更新,我们千万不能异想天开、草率行事。量子通信工程化之前还有一系列基础难题需要解决,量子通信产业化的前途不明朗,它要从实验室走向工程建设现场的路途仍十分遥远。
脚注:
1 微信通信的安全保障是基于TLS1.3草案标准的微信安全通信协议mmtls,详见 https://www.qcloud.com/community/article/134506。
2 https://eprint.iacr.org/2017/351.pdf
3 1TB =1012字节。
4 破解1T字节长度的RSA的肖尔量子算法究竟需要多少量子位的量子计算机和总的运算时间,目前还没有严格的论证。目前普遍认为:实现Shor算法的量子比特数大约为3logN,(N是需要做因数分解的大数),需要的量子门操作次数大约为(logN)3。因此,使用肖尔量子算法破解4096位密码的RSA,量子计算机需要的量子位约为 3×4096,即12288量子位。不久前IBM实现了50个量子位,但要想破解4096位的RSA,IBM设备的量子位还需扩大至少200多倍。
5 当然使用一个Terabyte长度的RSA公钥有点过分,但至少还是可以实现的,即使在现在的电子计算机上运行,从密钥的产生到加密、解密一共需要5天。这样的方案虽然今天看来不太实用,但等到量子计算机成熟的那天,在更为强大的电子计算机上这可能就是一个不错的选择。
6 密码使用最为广泛的领域是互联网和移动通信,量子密码工程在这些领域的应用近期不会有什么进展,而在金融行业和国防方面的主要业务的应用也没有详细肯定的报导,除了个别城市的政务网。
7 参见https://physics.aps.org/articles/v8/123和http://www.guancha.cn/zhaoyifu/2017_11_03_433335.shtml。
8 参见https://arxiv.org/pdf/quant-ph/0402131.pdf。