信息安全原理与实践-第二版06-高级密码分析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《信息安全原理与实践-第二版06-高级密码分析课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 安全 原理 实践 第二 06 高级 密码 分析 课件
- 资源描述:
-
1、1Information Security:Principles and Practice,2nd Edition美Mark Stamp著张 戈译第6章 高级密码分析26.1 引言 本章内容 一个针对最著名的第二次世界大战密码机Enigma的攻击。针对RC4算法的攻击,该算法用于WEP通信协议中。对于分组密码加密方案的线性和差分密码分析。针对背包加密方案的格归约攻击。针对RSA算法的计时攻击。旁路通道攻击36.2 Enigma密码机分析纳粹德国从第二次世界大战之前就开始使用Enigma密码机,并且在二战中自始至终都在使用这台著名的轮转密码机。我们这里要介绍的Enigma密码机版本是德国军方在二
2、战期间自始至终都在使用的。该设备曾被用于发送战争中的战术战场消息,也用于高层之间战略层面的通信。后来Enigma密码机被盟军破解,由此而提供的情报当之无愧是无价之宝称其为ULTRA也确属实至名归了。46.2.1 Enigma密码机在使用Enigma密码机对消息实施加密之前,操作员必须先初始化设备,包括各种转子的设定以及电缆插头的插接。这些初始化设置就建立了密钥始化设置就建立了密钥。一旦Enigma密码机被初始化之后,明文消息就可以通过键盘敲入,伴随着每一个明文字母的输入,相应的密文字母就在显示板上呈现出来。密文字母一出现在显示板上,就被写下来并随即传送出去。要想解密密文,接收方必须按照与发送方
3、完全一样的方式对Enigma密码机进行初始化。然后通过键盘将密文逐一敲入,相应的明文字母就会出现在显示板上。5我们使用如下标记来表示出现在Enigma密码机中的各种置换:进而得到密码机的加密方式:其中,x是明文字母,而y是相对应的密文字母。6简单替换简单替换密码密码一个单独的Enigma密码机转子的步进过程:这个例子显示了转子步进的方向。从操作者的视角看,字母是以阿拉伯字母表的顺序出现的。Enigma密码机是替换加密,是基于字母表的置换,将每一个字母进行加密。但是,Enigma密码机远不止这么简单,因为随着字母被加密(或者被解密),里程表计数效应将使得置换发生改变。这样的加密方法就是所谓的多元
4、字母替换密码加密法。对于Enigma密码机来说,可能的“字母表”(也就相当于置换)的数量是巨大的。76.2.2 Enigma的密钥空间Enigma密码机中具有密码学意义的组成部分分别是插头、三个转子以及反射器。构成密钥的这些可变化的设置分别是:1)转子的选择。2)对于最右边的两个转子,其每一个对应的可移动环的初始位置。这个环使得转子外面的部分(即用26个字母标示的那部分)随着环里面的部分(也就是与实际置换相连接的部分)而轮转。这个环的轮转就在转子上形成了相应字母的移位,于是就产生了类似于里程表计数的效果。3)每个转子的初始位置。3.这就类似于旋转汽车轮胎相对于轮毂的位置。4)插头中电缆的数量和
5、插入的状态。5)反射器的选取。每一个转子都实现了26个阿拉伯字母的一个置换。可移动环可以被设置于对应字母的26个可能的位置中的任何一个。8转子的初始化:每一个的初始化位置都可以设定为26个位置中的任何一个,因此,共有262626=214.1种方式来初始化转子。插头的初始化:令F(p)是在插头中插入p条电缆的方式种类,则有总共有超过248.9种可能的插头配置方式。但是最大数出现在有11条电缆插入的情况,而F(10)247.1。反射器:Enigma密码机的反射器相当于一个拥有13条电缆的插头,所以总共就有F(13)242.8种不同的反射器。9Enigma密码机密钥空间的大小理论上大约是:2265.
6、29.4.248.9.242.8 2366 理论上,Enigma密码机的密钥空间相当于一个366位二进制的密钥的空间。6.2.3 转子转子的吸引力?有可能通过一个简单的机电设备,以一种鲁棒的方式生成数量巨大的不同的置换。例子:有4个字母的转子ABCDEnigma密码机就是其自身的逆,这就意味着,使用同样的机器,进行完全相同的设置,就可以进行加密和解密10基于这种三个转子的框架,仅仅通过对这三个转子的64种配置状态执行步进操作,就可以生成由字母ABCD所构成的64个置换的一个环。并非所有这些置换都会是唯一的,因为对于4个字母ABCD来说,最多只有24个不同的置换。通过选择这些转子不同的初始化设置
7、,能够生成不同的置换序列。更进一步地,通过选择一个不同的转子集合(或者重新排列给定的转子),我们也能够生成置换的不同序列。对于某个单一转子来说,仅仅需要将信号以相反的传递方向通过转子,就很容易从一系列的转子中得到其逆置换。对于解密运算来说,逆置换是必须的。116.2.4 对Enigma密码机的攻击由Marian Rejewski、Henryk Zygalski和Jerzy Rozycki 三位领衔的波兰密码分析专家们率先成功地攻击了Enigma密码机。本文介绍的针对Enigma密码机的攻击有点类似于Turing所提出的方案,不过从某种程度上看相对简化。这个攻击需要已知明文,它在第二次世界大战中
8、有一个特定的术语,被称作“候选单词”(crib)。该攻击的基本思想是:首先,我们忽略掉插头,并对密钥的其他部分做一个猜测。根据思考题1,将会有不多于230个这样的猜测。对每一个这样的猜测,我们使用源自“候选单词”(已知明文)的信息来剔除不正确的猜测。这样的攻击,其成本开销在230的量级水平,在现代计算机上实施起来轻而易举,但是对于第二次世界大战年代的技术而言却是不可思议的。12假设我们已经获得了明文信息和相对应的密文文本如下:令S(x)是字母x从键盘输入直到通过插头后的结果。那么S-1(x)就是x以不同的方向通过插头的结果。对于一个给定的初始化设置,令Pi为在第i步骤的置换,该置换由三个转子的
9、组合、紧跟着反射器、再紧跟着的三个转子所共同决定。这样,使用在等式(6.1)中定义的标识方式,整个置换可以表示为下式:为简化表示,我们忽略掉Rl、Rm以及Rr对于步骤i的依赖关系。注注意意:既然Pi是一个置换,那么它的逆Pi-1就存在。由于转子的轮转,当每个字母输入时,置换都不会相同。因此,Pi确实要依赖于i。13考虑一下在表6-1中标识为8的列。其中,明文字母A通过插头,然后再通过P8,最后通过S-1生成了密文文本M,即S-1 P8S(A)=M,这里也可以重新表示为P8S(A)=S(M)。根据表6-1中的已知明文,我们得到:三个等式合并得到:假设我们选定了该机器的其中一种可能的初始化设置,并
10、忽略掉插头部分。那么,所有的Pi和Pi-1都与这个已知的设置相关。接下来,假如我们开始猜测,比如说S(E)=G。如果情况确实如此,即在插头中确有线缆连接了E和G,再假如我们对于该机器的初始化设置的猜测是正确的,那么,根据等式6.2,我们必然可得到:如果我们尝试了S(E)的所有26个选择,都始终没有满足等式(6.2),那么我们能够知道对于转子初始化设置的猜测不正确,于是可以剔除这一种选择。对于S(E)来说,存在26种可能的猜测,而且,对于其中每一种猜测等式(6.2)成立的可能性都有1/26。所以,当仅仅使用一种循环重复,即“候选单词”时,我们并不能获得对于可能正确的密钥在数量上的筛减。14如果将
11、4个等式进行合并:如果我们开始猜测S(E)=G,就有了两个等式,如果我们的猜测是正确的,那么两个等式必须都成立。因为有两个循环重复,在随机情况下,两个等式都成立的可能性就只有(1/26)2的可能性。所以,当S(E)中有两个循环重复,就能够以26为因子的速度来降低各种可能的机器初始化(也就是密钥)设置的数目。基于这样的观测,我们就能够轻而易举地开发出一个攻击。15这里所谓的至关重要的观测是指,一旦我们指定了转子的初始化设置,所有的置换P0,P1,P2,以及 P0-1,P1-1,P2-1,就都是已知的了。然后,如果我们为S(E)替换一个假设的值,我们就能够立刻检验所有可能得到的循环迭代等式的有效性
12、。对于一个关于S(E)的错误猜测(或者说错误的转子初始化设置),任何一个给定的循环迭代能够成立的概率会有1/26。但是,由于有n个循环迭代,因此所有的循环迭代等式都成立的概率将只有(1/26)n。所以,对于具有n个循环迭代的S(E)来说,我们能够大幅降低可能正确的初始化转子设置的数目。通过这种方式来恢复出初始化的转子设置,插头部分的值也能够被恢复出来基本上代价为零。还有很重要的一点需要大家了解,就是对于本文此处所描述的攻击,利用20世纪40年代的技术来实施,是不现实的。在第二次世界大战中实际可行的攻击,需要密码分析专家们将可测验的实例的数目降低到一个远远小于230的水平上。166.3 WEP协
13、议中使用的RC4WEP协议一直享有安全协议领域中的“瑞士乳酪”的 盛誉。从某种程度上看,该协议几乎是以不安全的方式实现了其所有的安全功能,包括RC4算法。在WEP协议中,加密数据时采用了流加密算法RC4,并使用了一个极少变更(如果确有变更的话)的长效的密钥。为避免密钥流的重复出现,将一个初始化向量IV以明文方式与每一条消息一起发送,这里每一个数据包都被视为一条新的消息。初始化向量IV与前述长效密钥混合共同生成消息的密钥。致命弱点:重复出现的初始化向量IV就意味着一个重复出现的密钥流,是为攻击者提供了统计信息,从而使得该攻击者随后能够有十足的把握从密文文本中解出密钥流。在WEP协议中,还存在其他
14、几个可能的捷径攻击。176.3.1 RC4算法RC4算法执行过程:初始化使用一个密钥对置换进行混淆,该密钥可以标识为keyi,其中i=0,1,.,N-1(i可以从0到256)执行:查找表S:包含了所有字节值的一个置换,0,1,2,.,255,并以两级索引i和j标识。18RC4算法的密钥流是一次一个字节生成的。基于查找表S的当前内容就可以决定索引,而被索引的字节则被选中作为密钥流字节。与常规的初始化过程类似,在每一个步骤中,置换S都将被修改,并确保S总是包含一个0,1,2,.,255的置换。196.3.2 RC4密码分析攻击 2000年,Fluhrer、Mantin和Shamir三人公布了一个针
15、对WEP协议中使用的RC4加密方案行之有效的攻击。假设对于一个特定的消息,三个字节长的初始化向量的形式如下:其中V可以是任意字节值。那么这三个字节的初始化向量IV将变成K0,K1,K2。该消息的密钥是:其中V对于Trudy来说是已知的,但是K3,K4,K5,是未知的。在RC4算法的初始化计算中,首先将S赋值给等值置换,这样可得到:假定K如式(6.5)所示的形式。然后,在i=0的初始化步骤中,我们计算索引值j=0+S0+K0=3,并且将元素i和j进行互换,结果就得到了下表20下一步,i=1和j=3+S1+K1=3+1+255=3,因为加法是模256的加法。元素i和j再一次互换,如下所示:再下一步
16、,i=2 就有 j=3+S2+K2=3+2+V=5+V,经过互换之后得到:接下来的步骤中,i=3和j=5+V+S3+K3=6+V+K3,其中K3是未知的。经过互换,查找表如下:假定,经过模256的归约之后,我们得到6+V+K3 5+V。如果情况并非如此,那么6+V+K3将会出现在5+V的左侧,这对于该攻击的大功告成并无影响。21现在假设在某一个时刻,RC4算法初始化过程在完成i=3步骤的计算之后停下来。如果我们根据表6-4所示的算法生成了密钥流的第一个字节,得到i=1和j=Si=S1=0,于是t=S1+S0=0+3=3。那么,第一个密钥流字节将会是:keystreamByte=S3=(6+V+
17、K3)(mod 256)式(6.6)假如Trudy知道了(或者是能够猜测出)明文文本的第一个字节,她就可以确定密钥流的第一个字节。如果这种情况确实发生了,那么Trudy能够轻而易举地求解等式(6.6),从而获得这未知的第一个字节,因为K3=(keystreamByte 6 V)(mod 256)式(6.7)遗憾的是,对于Trudy来说算法的初始化阶段有256个步骤,而不是仅仅4个步骤。但是,只要S0,S1和S3在随后的任何初始化步骤中都不改变,那么式(6.7)始终成立。从i=4到i=255的初始化计算中,索引i对这些元素不会产生任何的影响,因为从4到255,其每一步骤都遵循同样的规律。如果我们
18、将索引j看成是随机的,那么,在每一个步骤中,这三个指标全部都不受影响的概率是253/256。于是,对于所有后面的252个初始化计算步骤,这个概率就是:22假定Trudy已经恢复出了K3,我们来证明她能够恢复出密钥字节K4。在这种情况下,Trudy将寻找如下式所示的初始化向量:IV=(4,255,V)式(6.8)在初始化i=0的步骤,j=0+S0+K0=4,并且将元素i和j互换,如下:当i=1时,j=4+S1+K1=4(因为这里是采用模256的加法),并且将元素S1和S4进行互换,如下式所示:在i=2时,j=4+S2+K2=6+V,经过互换之后,得到下式当i=3 以及 j=5+V+S3+K3=9
19、+V+K3,这里K3是已知的。再经过互换之后,得到:23假定取模256,9+V+K3 6+V。进一步执行这个操作就得到i=4,并有j=9+V+K3+S4+K4=10+V+K3+K4只有K4是未知的。再经过互换之后,表S就成为如下所示的形式:假如初始化过程终止于这一点(在执行完i=4的步骤之后),那么对于密钥流的第一个字节,我们将得到i=1 和 j=Si=S1=0,于是,t=S1+S0=4+0=4。最终生成的密钥流字节就可以表示为:keystreamByte=S4=(10+V+K3+K4)(mod 256)唯一未知的就是K4。于是就可以得到K4=(keystreamByte10VK3)(mod
20、256)式(6.9)当然,这个初始化过程不会在i=4这一步骤就戛然而止,但是,式(6.9)成立的概率大约是0.05。所以,只要拥有足够数量的形如式(6.8)所示的初始化向量IV,Trudy就能够确定出K4。如此进行,只要有足够的形式匹配的初始化向量IV可用,并且Trudy能够知晓每个相对应的数据包的首个密钥流字节,那么任何数量的密钥字节都能够被恢复出来。24事实上,如果有足够数量的数据包可用,任何长度的密钥就都能以微小的代价进行破解。这就是为什么WEP协议被称为是“任何长度(密钥)都不安全”的原因之一。用于恢复未知密钥的首个字节K3的攻击方式:假定初始化向量IV是(2,253,0),那么,经过
21、i=3的初始化计算步骤之后,得到的排列S就是:如果S1、S2和S3不会在后续的初始化步骤中改变,那么第一个密钥流字节将会是3+K3,据此Trudy就能够恢复出K3。不难看出,对于一个给定的三字节初始化向量IV,Trudy可以计算初始化过程直至步骤i=3,并且,基于这种方式,她能够很容易地确定一个给定的向量IV对于她的攻击来说是否有用。后续的密钥字节,也可以同理解释。通过利用所有有效的向量IV,Trudy就能够在恢复密钥之前,减少她所必须侦听的数据包的数量。256.3.3 RC4攻击的预防对于RC4算法的攻击,如果其针对的是该算法的初始化过程,有几种可能的预防方法。真正有效的标准的建议是在初始化
22、过程中增加256个步骤。还有许多变通的方式来合成密钥和初始化向量IV,也能够有效地预防在本小节中所描述的攻击类型。266.4 线性和差分密码分析线性和差分密码分析都是为了攻击DES算法应运而生的,即线性和差分“攻击”针对的是分组密码加密方案中的设计缺陷。这些技术已经演变成为基本的分析工具,用于分析当今所有的分组密码加密方案。差分密码分析源于Biham 和 Shamir,是一种选择明文攻击,而这会使得在真实世界中实际运用这种攻击显得有些困难。线性密码分析是由Matsui于1993年发明的。对于真实世界中的攻击来说,线性密码分析要比差分密码分析稍微理想一些,主要原因在于它属于已知明文攻击类型,而并
23、非属于选择明文攻击类型。276.4.1 数据加密标准DES之快速浏览DES算法共有8个S-box,其中每一个S-box都将6位二进制输入,这里表示为x0 x1 x2 x3 x4 x5,映射为4位二进制输出,此处表示为y0 y1 y2 y3。下图显示了十六进制形式表示的DES算法中的一号S-box S-box是DES算法中唯一的非线性组成286.4.2 差分密码分析概览DES算法中除了S-box外其他部分都是线性的,而非线性部分才能代表密码分析的主要障碍。所以,无论是差分密码分析还是线性密码分析,都是聚焦于处理DES算法中的非线性部分,也即其中的S-box。差分密码分析攻击背后的基本思想是比较输
24、入和输出的差异。例子:一个类似DES的加密算法使用了3位二进制输入和2位二进制输出的S-box 对于输入二进制位x0 x1x2,位x0用于索引行,而位x1 x2用于索引列。下面考虑两个输入值,X1=110 和 X2=010,同时假设密钥K=011。那么有X1 K=101 和X2 K=001,这样就可以得到下式:假设等式(6.11)中的K未知,但是其输入已知,比方说X1=110和X2=010,以及相对应的输出也是已知的,即Sbox(X1 K)=10 和 Sbox(X2 K)=01,可以得到:这就意味着K=011。这这里的里的“攻击攻击”本质上是针对如本质上是针对如(6.10)所示的单一所示的单一
25、S-box的一个已知的一个已知明文攻击,以破解密钥明文攻击,以破解密钥K。29假如我们已知输入X1和X2,那么对于输入X1,实际输入给S-box的是X1 K,对于输入X2,实际输入给S-box的是X2 K,这里密钥K是未知的。差分运算是以模2方式定义的,即等价于异或运算XOR。这样,S-box的输入差分就是(X1 K)(X2 K)=X1 X2 式(6.12)输入差分是独立于密钥K的。这是差分密码分析能够奏效的基本前提。令Yl=Sbox(X1 K),Y2=Sbox(X2 K),则输出差分Yl Y2就是下一轮运算的输入差分了。因此,目标是精心地构造输入差分,以便我们能够“串接”差分来贯通多轮运算。
展开阅读全文