《第四部分现代常规的分组加密算法.ppt》由会员分享,可在线阅读,更多相关《第四部分现代常规的分组加密算法.ppt(29页珍藏版)》请在三一办公上搜索。
1、第四章 现代常规的分组加密算法,主要考察较为流行的最重要的几个对称密钥的分组密码算法。这些算法都是自DES公布之后,人们了解DES的弱点越来越深入的情况下给出的。给出的方式有两种,一种是对DES进行复合,强化它的抗攻击能力;另一种是开辟新的方法,即象DES那样加解密速度快,又具有抗差分攻击和其他方式攻击的能力。,我们主要考察如下三种加密算法,1.Triple DES2.IDEA3.RC5其他一些较实用的算法,自己看书了解,如Blowfish,CAST,以及RC2。,1 TRIPLE DES,DES算法设计的优点是很多的。如何加强DES的安全性是一个世纪感兴趣的问题。Quisquater等曾建议
2、采用长达768 bits密钥的方案。由于已经证明DES不能成为群,见 K.W.Campbell and M.J.Wiener Proof that DES is not a group In Advances in CryptologyCrpto92.SpringerVerlag,New York,1993.于是多重DES,尤其是三重DES还在普遍使用。,(1)二重DES(Double DES),给定明文P和两个加秘密钥k1和k2,采用DES对P进行加密E,有 密文 C=EK2(EK1(P)对C进行解密D,有 明文 P=DK1(DK2(C),E,E,P,X,C,K2,K1,加密图,D,D,K2
3、,K1,C,X,P,解密图,对于二重DES的加密,所用密钥的长度为 562=112 bits 这样是否真正能增强DES的强度呢?问题在于下式能否成立:EK2(EK1(P)=EK3(P)(4.1)DES是一个从集合A到集合A的一个映射。其中:映射DES事实上可视为对A的一个作用,作用方式为置换。所有可能的置换数为(264)!。然而,DES对每一个不同的密钥只决定唯一的映射。而密钥数256107,(4.1)式不能成立。,关于DES不是群的详细证明见上面给的文献。注:二重DES很难抵挡住中间相遇攻击法(Meet-in-the-Middle Attack),E,E,P,C,X,由 C=EK2(EK1(
4、P)从图中可见 X=EK1(P)=DK2(C),K1,K2,D,D,C,P,X,K1,K2,加密,解密,若给出一个已知的明密文对(P,C)做:对256个所有密钥K1做对明文P的加密,得到一张密钥对应于密文X的一张表;类似地对256个所有可能的密钥K2做对密文C的解密,得到相应的“明文”X。做成一张X与K2的对应表。比较两个表就会得到真正使用的密钥对K1,K2。,对二重DES的中间相遇攻击的分析,已知,给定一个明文P,经二重DES加密有264个可能的密文。而二重DES所用密钥的长度应是112 bits,所以选择密钥有2112个可能性。于是对给定明文P加密成密文有2112/264=248种可能。于
5、是,密文是假的比例约为248-64=2-16。这样,对已知明文-密文对的中间相遇攻击成功的概率为1-2-16。攻击用的代价加密或解密所用运算次数 256+256=2112,(2)带有双密钥的三重DES(Triple DES with Two Keys),Tuchman给出双密钥的EDE模式(加密-解密-加密):C=EK1(DK2(EK1(P)对P加密 P=DK1(EK2(DK1(C)对C解密 这种替代DES的加密较为流行并且已被采纳用于密钥管理标准(The Key Manager Standards ANSX9.17和ISO8732).,E,D,E,D,E,D,C,B,A,P,P,A,B,C,
6、K1,K2,K1,K1,K2,K1,加密图,解密图,到目前为止,还没有人给出攻击三重DES的有效方法。对其密钥空间中密钥进行蛮干搜索,那么由于空间太大为2112=51033,这实际上是不可行的。若用差分攻击的方法,相对于单一DES来说复杂性以指数形式增长,要超过1052。注意:1*.Merkle和Hellman设法创造一个条件,想把中间相遇攻击(meet-in-the-middle attack)的方法用于三重DES,但目前也不太成功。2*.虽然对上述带双密钥的三重DES到目前为止还没有好的实际攻击办法,但人们还是放心不下,又建议使用三密钥的三重DES,此时密钥总长为168bits.C=EK3
7、(DK2(EK1(P),2 RC5,RC5是对称加密算法,由RSA公司的首席科学家R.Rivest于1994年设计,1995年正式公开的一个很实用的加密算法。,RC5具有如下的特性:,1.适用于软件或者硬件实现2.运算速度快3.能适应于不同字长的程序(一个字的bit数是RC5的一个参数;不同字长派生出相异的算法)4.加密的轮数可变(轮数是RC5的第二个参数,这个参数用来调整加密速度和安全性的程度)5.密钥长度是可变的(密钥长度是RC5的第三个参数)6.RC5形式简单,易于实现,加密强度可调节7.对记忆度要求不高(使RC5可用于类似Smart Card这类的对记忆度有限定的器件)8.高保密性(适
8、当选择好参数)9.对数据实行bit循环移位(增强抗攻击能力),对RC5的系统描述:,(1)RC5的参数 RC5实际上是由三个参数决定的一组加密算法。参数 定义 允许值 w 字的bit数大小。RC5加密 16,32,64 的基本单位为2个字块 r 轮数 0,1,255 b 密钥字节的长度(8-bit bytes)0,1,255,RC5加密明文块的长度为32,64,128 bits。并且对应同样长度的密文。密钥长度为从0到2040 bits。一个特定的RC5表示为 RC5-w/r/b Rivest建议使用的标注RC5为 RC5-32/12/16(明文分组长度64,加密轮数12,密钥长度128 bi
9、ts),(2)RC5的密钥扩展 对给定的密钥K来说,经过一些复合运算可产生总数为t的字密钥,使得每一轮都分配一对密钥。除此之外的非轮运算部分也要分配一对密钥。总计产生 t=2r+2 个子密钥,每个密钥的长度为一个字长(w bits)。子密钥可标记在t-字阵列中:s0,s1,st-1 它为wt矩阵 这种阵列的产生图示为:,初始化,混合,转换,s0,S1,St-1,L0,L1,Lc-1,K0,K1,Kb-1,S0,S1,St-1,r,w,Bytes,words,words,将参数r,w输入,左面标出的t-字阵列是一些伪随机bit,按r,w的规格选入的。然后把b-bits长的密钥K0,b-1转换成c
10、-字阵列L0,c-1(字的bit数为w,这里c=b8/w;注意:密钥长度为b个字节)。如果b不是w的整数倍,那么L右端的空位用0填入。下面描述密钥生成的细节:,对于给定的参数r和w,开始初始化运算 Pw=Odd(e-2)2w)Qw=Odd(-1)2w)这里 e=2.718281828459(自然对数的底)=1.618033988749(黄金分割比率)并且Oddx表示最接近x且可左可右的奇整数。例:Odde=3,Odd=1用上述两个常数,按下述方式得到初始化的阵列S:S0=Pw For i=1 to t-1 do Si=Si-1+Qw其中的加法是模2w的加法运算。,得到初始化阵列S,然后与最后产
11、生的密钥阵列L做混合,最终得到子密钥阵列。注1*.为了增强复杂性,可对阵列S,L做多次处理:i=j=x=y=0 do 3max(t,c)times:Si=(Si+X+Y)3;X=Si;i=(i+1)(mod t);Lj=(Lj+X+Y)(X+Y);Y=Lj;j=(j+1)(mod c);2*.Rivest 声称,这个扩张函数具有单向性。,(3)RC5的加密,整个加密使用了下述3个基本运算和它们的逆运算:模2w加法运算,表示为“+”;逐比特异或运算,表示为“”;字的循环左移运算:字x循环左移y比特,表示为xy如(a0,a1,a2,an-1)3=(a3,a4,an-1,a0,a1,a2),加密运算
12、图:,明文(2w bits),+,+,+,+,+,+,密文(2w bits),S0Round1,S2,Round r,S2r,S1,S3,S2r+1,REr,RE1,LEr,LE1,LE0,RE0,A,B,将明文分组为左右A,B;用变量Lei,Rei参与运算程序为:LE0=A+S0 RE0=B+S1 for i=1 to r do LEi=(LEi-1REi-1)REi-1)+S2i;REi=(REi-1 LEi)LEi)+S2i+1;,(4)RC5的解密,对两个1-字变量LDr和RDr。用变量LDi和RDi从r到1做:for i=r down to 1 do RDi-1=(RDi-S2*i+
13、1LDi)LDi);LDi-1=(LDi-S2*iRDi-1)RDi-1);B=RD0-S1;A=LD0-S0.(5)RC5操作模式 见书119页-120页,明文(2w 比特),-,-,-,-,-,-,密文(2w 比特),A,B,S2r,S2,S0,S1,S3,S2r+1,LDr,RDr,Round r,Round 1,LD0,RD0,RDr-1,LDr-1,3 RC6分组密码简介,被选为21世纪加密标准算法。RC6是RC5的进一步改进。像RC5那样,RC6实际上是利用数据的循环移位。RC5自1995年公布以来,尽管至今为止还没有发现实际攻击的有效手段,然而一些理论攻击的文章先后也分析出RC5
14、的一些弱点。RC6的加密程序:RC6-w/r/bInput:明文存入四个w-bit寄存器A,B,C,D轮数rw-bit轮密钥S0,1,2r+3Output:密文存入寄存器A,B,C,D,Procedure:B=B+S0 D=D+S1 for i=1 to r do t=(B(2B+1)2w u=(D(2D+1)2w A=(At)u)+S2i C=(C u)t)+S2i+1(A,B,C,D)=(B,C,D,A)右边寄存器到左边 寄存器的并行分配 A=A+S2r+2 C=C+S2r+3,RC6-w/r/b加密图,其中f(x)=x(2x+1):,A,B,+,f,C,+,+,D,+,f,+,+,S2r+2,S2r+3,A,B,C,D,RepeatFor rrounds,S2i,S2i+1,S0,S1,log2w,log2w,log2w,