密码学:从理论到现实

“一切都会出错”是任何规划都应该遵循的主要原则之一。


不稳定是事实


在解决密码问题时,会出现不可抗力的情况。多年来,许多科学家都在考虑每一个细节,但现实往往会让你感到惊讶。在很多方面,正是这种无休止的循环,由一系列开发新的密码解决方案、识别漏洞,然后才发现漏洞是怎样形成的,也才吸引人们去研究密码学。

例如,著名的TLS协议在他的历史发展进程中有一个很有趣的插曲:

在2001年,Hugo Krawczyk首次对TLS 1.1中使用的数据保护方案的安全性进行了数学证明,但不到一年后,出现了一种攻击,表明该协议在数据保护方面存在不稳定性。

不幸的事,这样的事件在密码学中并不罕见,上面提到的漏洞问题,在TLS协议中肯定也不是最后一次出现。

每年,在密码学会议和研讨会上,都会出现一些令人惊奇的攻击案例,这些攻击乍一看,与理论研究相矛盾,此刻,有个问题就被提出:密码学理论家的“失误”原因是什么?

在回答这个问题之前,让我们试着弄清楚密码学的支柱是什么,对手的模型是什么,以及关于“信息安全”这样一个复杂而多方面的概念的知识是如何在世界上形成和扩展的。


模型作为基础


解决信息安全问题的系统的开发是一个极其复杂和耗时的过程。事实证明,理论研究知识此类系统生命中众多阶段中的一个。同样重要的是系统的建模、实施和运行阶段,从普通用户的角度来说,运行阶段才是最重要的,理论永远是理论。

每一个阶段都是基于前一个阶段,并且是前一个阶段的逻辑延续:例如,理论研究阶段没有建模是不可能的,因为推理的严谨性需要对研究的属性和对象进行形式化。

密码学中的建模涉及到对正在开发的系统的所有属性、用户与之互动的所有可能方式的深入分析,有时甚至涉及到系统运行的物理条件。

建模的结果是系统的数学模型,其中特别包括所谓的对手模型,事实上,它决定了一个安全的稳定的系统意味着什么。

对手模型由三个部分组成:攻击类型、威胁模型和关于对手可用资源的假设。这三个部分加在一起,使我们有可能清楚地定义我们的系统所处的世界:敌人如何与之沟通,他可以从对手那里学到什么,他究竟想要实现什么以及他拥有哪些资源。

攻击类型决定了敌人在与分析系统交互方面的定性能力。因此,攻击的类型决定了对手可以接收什么样的系统信息,以及他可以如何干扰其运行过程。

一个例子是敌人可以拦截和修改通信渠道上的数据的攻击类型。在这里,敌人的能力应该考虑到所有已知的违反所研究系统安全的实践和理论方法,并尽可能接近在实践中使用该系统时出现的方法。

威胁模型定义了违反安全属性的任务,这是对手想要解决的。例子包括伪造信息签名或泄露机密信息。如果敌人解决了指定的任务,他们就说他“意识受到了威胁”。威胁模型反映了哪些情况违反了特定系统的安全性的想法。

关于敌人资源的假设也是模型中极其重要的部分,现在其决定了敌人的定量能力。通常它们是由一整套因素决定的:敌人的时间和计算资源、程序的大小以及他可以通过与系统交互而接收的信息量。

如果没有这些限制,谈论实践中使用的大多数系统的安全性是完全没有意义的,因为,对他们来说,总有一个对手,拥有无限的资源,可以通过简单的暴力手段找到所需的密钥,而不使用任何复杂的方法。


客观现实


一旦研究对象的数学模型出现,就有可能应用合适的数学方法,其结果是先验绝对准确的(如果作者没有在计算中出错并且最初的假设是正确的)。

使用这种方法可以揭示被研究对象的深层属性,并且在对时间延长的过程的研究中,实际上可以预测它们的未来。

在物理学中,我们预测扔出的石头会在多少秒内掉在地上,而在密码学中,我们预测未来几年密码系统是否会被黑客入侵。

因此,如果研究的数学部分是准确进行的,其结果不包含错误,那么理论和实践之间出现看似奇怪的矛盾的主要原因在于对手的模型和系统在实践中运行的真实条件之间的差异。在这种情况下,模型被认为还是不相关的。

同时,也不应该把责任归咎于负责建模的员工,在系统开发过程的任何阶段,从想法到运行,模型都可能变得不相关。然而,现实和模型之间的差异可能出现在构成模型的三个部门中的任何一个。


攻击类型不匹配


让我们看一下TLS1.1中使用的数据保护方案的安全性的数学证明示例,看看现实与Hugo Krawczyk在他的工作中使用的模型之间的差异发生在哪里,以及导致这种差异的错误发生在哪里。

2001年的相同工作证明了MAC-then-Encrypt认证加密方案的强度,其中首先将模拟插入附加到消息,然后在消息和插入的串联之后以CBC模式加密。CBC加密模式的特殊性在于它只能处理可以分成一定固定大小的块的字符串。

因此,为了能够处理任何长度的信息,通常采用填充法:在向信息中添加插入物后,根据一定的规则,将产生的字符串填充到所需的大小。在接收方处理信息时,首先进行解密和验证加法的正确性,然后才检查模拟的插入。

在Hugo Krawczyk的作品发表不到一年,就出现了针对CBC模式的填充预言机攻击,它利用对手在检查解密消息的补码时获取有关接收方是否遇到错误的信息。

攻击的结果是违反了传输数据的保密性。起初,人们认为TLS协议免受填充预言机攻击,因为其中的错误仅以加密形式返回,因此添加中的错误与模拟插入中的错误无法区分。

然而,密码分析者能够确定,对于大多数实现,在错误添加的情况下发布错误的时间与发布其他错误的时间不同,因为在错误添加的情况下,错误会立即发布,并且没有采取进一步行动。

这个时间差使得可以区分接收端返回的错误并将填充预言机攻击应用于TLS协议。

然而,在Krawczyk的模型中,没有考虑到对手可以在解密期间接收有关错误发生位置的信息。

这种遗漏导致攻击类型与敌人的实际能力不匹配,事实证明这比模型假设的要多。这种机会的出现是由于系统功能的特殊性(错误处理的顺序)出现在其实施阶段。

因此,起初给这位受人尊敬的科学家的工作蒙上阴影的整个情况远没有那么可怕:Krawczy的证明是绝对正确的,只是进行证明的模型变得无关紧要。


威胁模型不匹配


同样有趣的是威胁模型不匹配引起的漏洞。如果一些可能的情况没有被认为是负面的,它们就会出现。这种漏洞的一个例子是能够恢复加密的VoIP对话的近似转录,只知道加密数据包的长度。

最初,人们认为对手存在这种信息并不构成违反保密性的巨大威胁,最多只能揭示对话的语言或某些短语的存在。

但是北卡罗来纳大学的科学家们发现,通过结合某些编码语音信息的方法和保留消息长度的流密码,使用计算语言学和统计方法,可以准确地重新创建整个对话的转录。

因此,识别威胁的错误在建模阶段就悄悄出现了。由于该系统是专门为加密语音电话而创建的,这样的威胁本可以在加密协议开发的初始阶段就被注意到。


对敌方资源的假设不一致


反过来,Sweet32攻击基于对敌人资源的假设不匹配而产生的漏洞。Sweet32攻击破坏了机密性,并使用块长度较小的块密码(例如3DES或块长度为64位的Blowfish密码)来针对CBC加密模式。

这种攻击基于生日悖论,为了成功,需要保持与服务器的连接时间大约38小时,以发送大约785GB的流量。

其实,早在2000年,就有一篇发表的作品中已经给出了破解CBC模式的概率对加密数据量的依赖。在那个年代,即使使用64位分组密码,加密如此大量的数据,足以打破CBC模式,实际上是不切实际的。

因此,基于64位分组密码的CBC模式在实践中被认为是强大的。然而,随着时间的推移,实施Sweet32所需要的资源不再显得那么出色。

只是没有注意到,在操作阶段,模型与现实之间存在不匹配。因此,在实践中,敌人可用的资源比模型中假设的要多得多。


进化斗争


应该注意的是,系统通发现任何漏洞的常见做法是:当所考虑的示例中描述的每个漏洞的出版物发布后,立即采取措施解决这些漏洞。

然而,在无误的理论研究的前提下,发现的漏洞会触发另一个同样重要的过程:分析对手模型与实际情况的差异及其后续扩展,将作为新一轮理论研究的一部分,这个过程本质上是对手模型的演变。

因此,在现实中,一个系统的发展是一个封闭的循环,其中,在解决方案的整合之后,一个同样重要的运行过程发生了,它也进行了自身的调整。

在操作过程中,我们对敌人能力和安全属性的链接会显着扩大,有时是根据第三方或内部要求的结果对系统进行黑客攻击的结果,这样的“发现”开始了系统生命周期的新迭代。


不完美是不可避免的


但是不应该将此开发顺序流程视为不合理,应该将其周期性视为流程不完善的标志。密码学与其他科学没有什么不同,类似的情况随处可见。

有一个例子是:人们对地球形状的理解的发展,它是最有形和最广为人知的模型之一。该模型经历从平坦地球模型到球状地球模型、自转椭球模型和大帝水准面模型的演变。

在这种情况下,出现与理论预测不一致的情况类似于在实践中破坏理论上稳定的密码系统。

对手模型(并在开发真实系统时考虑其结果)增加了这样的可能性:在系统被破坏的情况下,发现的漏洞将加深我们对信息安全方面的总体理解。

还值得注意的是,理论研究允许在实际实施之前预测许多攻击。例如,1997年表明使用具有可预测初始化向量的CBC模型是不安全的。

然而,由于所提出的攻击似乎过于理论化,所以没有对使用这种加密方法的协议的实施进行修改。

到2011年,尽管有大量研究警告对TLS进行此类攻击的可能性,但该漏洞仍未得到修复,密码分析人员提出了该攻击的实际实现,称为BEAST。直到那时漏洞才被关闭。

总之,在毛球科技看来,系统开发的每个阶段都很重要,应该与前几个阶段相互作用,如此这样的过程确保了知识的精确进化,而不仅仅是“修补漏洞”。因此,不要忽视任何一个阶段,适当关注新模型的发展和理论研究是非常重要的。


量子威胁


大多数人认为,绝大多数支持分布式账本交易的加密协议都容易受到强大的量子计算机的攻击。

量子计算机主要是一种模拟计算系统,它利用量子力学所描述的物理现象来处理数据和传输信息。更具体点说,量子计算机使用量子叠加和量子纠缠来计算。

在数据不变性的层面上,区块链得到了很好的保护,甚至不受量子力量的影响。有关交易的信息存储在注册表中,该数据的重复记录可供区块链的所有主体使用,所有参与者相互独立。

在这方面,为了改变网络上的数据以修改向交易(窃取支付),必须影响所有区块,这在没有百万用户确认的情况下是不可能发生的。

只要用户的钱包才会出现问题和漏洞。这是由于在可预见的未来,量子计算机的力量可能足以成功攻击64位数的私钥,而这也是量子计算威胁的唯一假设真实机会。

基于理论假设,俄罗斯联邦政府金融大学副教授弗拉基米尔·吉辛表示,在拥有100量子比特量子计算机的世界中,比特币区块链可能被黑客入侵。

现在,上面的都是基于理论假设,还没有实际的量子计算机出现,就算谷歌制造的49位量子位设备的存在也尚未被证实。