本文来自微信公众号“安全内参”。
穿西装是否一定要打领带?手里有一把钥匙的话,是否还需要再配一把备用的?许多CISO、安全团队以及密码学家在对新一代加密协议进行选择时,也面临着相类似的问题。例如,用户是否需要多层加密?他们是否能够接受相应的复杂性和成本?
01
什么是混合加密?
讨论到“混合加密”时,大部分争议都集中在对这一概念实际意义的解读上。一般来说,混合加密指的是公钥(非对称)加密与对称加密的结合使用。如今,混合使用多种算法的系统非常普遍,数学家们在结合不同算法以利用其优势的工作上已经下了一番功夫。举个例子,很多使用公钥的加密系统实际上就是利用公钥算法来对一个对称密钥进行加密,随后再用这个对称密钥来对数据进行加密。对称加密算法,尤其是像AES这样的算法通常要快得多,而混合加密策略也正是利用了这种速度上的优势。
当前,该议题受到广泛的关注主要是因为NIST(美国国家标准技术研究所)举办的PQC(post-quantum cryptography,后量子密码)竞赛促进了后量子算法的开发和推广。许多人对这些新兴方法的可信度持怀疑态度,他们期望通过采用某种混合策略,来在过渡期内增强安全性的确信度。
采用多重层次防护来增强安全性并非新兴的策略。例如,Stuart Haber和Scott Stornetta在创立Surety公司并设计其时间戳服务时,就同时采用了两种不同的哈希函数。此外,他们还预设了一种机制,允许未来引入更高效的哈希函数。在面临密码分析领域出人意料的算法突破时,他们探索了如何在广泛使用的认证系统中顺利更换哈希函数的方法,以避免完全依赖单一算法的风险。
另外,Google也正朝着采用混合算法的方向迈进。去年,Chrome及部分服务器采取了两种算法结合的方式来协商会话密钥:
•X25519——TLS常用的一种椭圆曲线加密方法
•Kyber-768——抗量子加密的密钥封装机制,NIST后量子密码学竞赛的最终获胜者。
在最近的一项声明中,Chrome安全技术项目经理Devon O’Brien表示,额外的Kyber封装密钥材料为每个TLS ClientHello消息增加了大约1000字节的开销,这对于“绝大多数”用户来说并不是问题。
02
后量子密码学解决方案并非万无一失
后量子技术的推广使得人们既兴奋又沮丧。NIST已多次延长截止日期,最终才确定了潜在的解决方案。此外,它还增加了新的轮次,以鼓励开发更多的方法,以应对未来更多的技术被证明是不安全的情况。对于那些寄希望于这场竞赛能够呈现出一个完美解决方案的人来说,最终结果是令人失望的。因为此次比赛所提出的疑问和挑战,与它所提供的解决方案一样多,并没有达到预期的一揽子解决效果。
使用带有缺陷的新算法的风险并非仅存在于理论层面。事实上,已有数个进入决赛阶段、初看有很大潜力的算法最终被证明是易于攻破的。例如,彩虹签名方案和超奇异同源Diffie-Hellman协议(SIDH)均已被破解。
03
混合加密是弥补缺陷的一种保障
考虑到潜在的隐藏漏洞始终存在威胁,采取混合式解决策略显得尤为合理。为何不能同时采用像RSA或AES这样虽然老旧但仍然可靠的算法,以及那些新推出但尚未充分测试的算法呢?或者,为何不考虑使用两种、三种乃至更多的算法组合?又或者,为何不尝试进行多次签名计算或重复加密数据?对于PQC(向后量子密码学)的过渡,这是绝对必要的。
04
混合加密的缺点
混合解决方案可能并非理想选择,主要出于以下原因:
•复杂性增加:至少需要两倍的代码量来编写、调试、审计和维护。
•效率降低:对任何数据或会话密钥进行加密或解密时,至少需要两倍的计算开销。
•结构不一致:这些算法彼此之间无法轻松替换。例如,某些签名算法的密钥是一次性使用的,而其他算法则不是。
单一标准的正确实现已经相当困难。同时采用两个标准必然会导致更多的实现错误或引发新型攻击手段的风险。而且,在许多场合下,性能依然是关键考虑要素,计算开销和数据负载的成倍增加通常是难以接受的。
近几年来,NSA(the National Security Agency,美国国家安全局)对混合算法的推广持保留态度,所提及的理由包括之前讨论的众多问题。并且GCHQ(英国政府通信总部)也表达了相同的观点。
NSA在关于向后量子算法过渡的常见问题解答中写道:不要在NSS(national security system,国家安全系统)的任务系统上使用混合或其他非标准化的QR解决方案。采用非标准化方案可能会导致创建不相兼容解决方案的高风险。
NSA面临着一种双重使命。一方面,他们负责确保国家通信的安全。另一方面,他们还需要通过破译加密信息来进行情报搜集。这就引出了一个问题:NSA究竟更注重哪一方面。
然而,像法国的ANSSI(国家信息系统安全局)和德国的BSI(Federal Office for Information Security,联邦信息安全局)这样的其他国家密码机构却采取了不同的方案。他们鼓励使用多层次的保障措施。尤其是考虑到侧信道安全、实施错误风险、硬件中的安全实施,以及他们的经典密码分析,PQC机制的安全实施研究程度远不如基于RSA和ECC的密码机制。德国BSI总结道:“在生产系统中使用它们时,目前只建议与经典的基于ECC或RSA的密钥交换或密钥传输一起使用。”
NSA在一些内部机密工作中,也会推荐使用多层加密。他们在机密环境中使用商业软件的指导方针中经常鼓励使用多个不同的加密工具来构建多层加密的安全措施。
05
混合加密提供了多大程度的安全性?
关于混合加密能够提供多大的安全性一直是争议最大的问题之一。这很大程度上取决于具体细节,算法设计者可以采用各种不同的方法,来获取不同的优势。目前混合加密有多种不同的实现模型或方法,而且并非所有细节都已最终确定。
首先使用一个算法对数据进行加密,然后再使用另一种算法来对加密后的结果再次加密,就结合了两者的强度,本质上相当于在数字保险柜内放置了另一个数字保险柜。任何攻击者都需要破解两种算法才得以获取原始内容。然而,这种组合并不总是以相同的方式提供安全性。举例来说,哈希函数的设计目的是使识别碰撞变得困难,即找到两个不同输入产生相同输出的情况:(x_1和x_2,满足h(x_1)=h(x_2))。
如果第一个哈希函数的输入被传递到另一个不同的哈希函数中(比如说g(h(x))),那么即使是在这种情况下,要找到碰撞也不会变得更加困难,尤其是在第一个哈希函数存在缺陷的情况下。如果第一个哈希函数的两个输入产生相同的输出,那么相同的输出将被输入到第二个哈希函数中,以生成混合系统的碰撞:如果h(x_1)=h(x_2)),那么(g(h(x_1))=g(h(x_2))。
数字签名的组合方式也不同于加密。其中最简单的方法之一是独立计算多个签名。随后可以对它们进行独立测试。即使是这种基本的方法也同样引发了许多实际问题。例如,如果一个私钥被泄露怎么办?如果一个算法需要更新怎么办?如果一个签名通过但另一个失败了怎么办?
密码学是一个错综复杂的学科,许多知识领域仍然笼罩在深深的神秘之中。许多密码算法都建立在某些数学难题过于困难几乎无法解决的假设之上,但实际上并没有充分的证据表明这些难题是完全无法解决的。
许多倾向于采用混合策略的密码学家相信,即使发现了加密算法中的漏洞,他们也可以通过额外的工作来进行弥补。确保单一加密层安全可靠已经足够耗费时间和精力,因此对另一层再进行一次加固往往也是值得的。对于那些追求高性能的应用来说,他们可以选择不使用这一层额外的安全措施,但对于那些追求更高安全保障的应用来说,这一层额外的保护是必须接受的。
目前密码学领域内存在着两种争论:一种是因为缺乏足够的了解或信息而产生的论点,而另一种则是建立在已有知识和理解之上的讨论。人们花了几十年的时间才得以正确处理加密填充问题,即便说RSA加密已经不再安全,但对于新的加密算法来说,我们还知之甚少。