1、 计算机学院信息安全课题组计算机学院信息安全课题组信息安全概论信息安全概论 回顾上次课的内容回顾上次课的内容 对称密码的两个基本运算对称密码的两个基本运算 代替和置换代替和置换(Substitution&permutation)对称密码分析的两个基本方法对称密码分析的两个基本方法 系统分析法(统计分析法)系统分析法(统计分析法)穷举法穷举法 对称密码的两个基本设计原则对称密码的两个基本设计原则:混乱和扩散混乱和扩散 密码分析攻击的方式密码分析攻击的方式 讨论议题讨论议题 分组密码的操作模式分组密码的操作模式 实用中数据格式的多样性实用中数据格式的多样性 安全的工作模式安全的工作模式 分组密码的
2、分析方法分组密码的分析方法 现代常规分组加密算法现代常规分组加密算法 Triple DESTriple DES RC5RC5、RC6RC6 AESAES 加密的位置:加密的位置:链路方式和端到端的方式链路方式和端到端的方式分组密码的操作模式分组密码的操作模式 电子密码本电子密码本ECB(electronic codebook mode)密码分组链接密码分组链接CBC(cipher block chaining)密码反馈密码反馈CFB(cipher feedback)输出反馈输出反馈OFB(output feedback)美国美国NSB在在FIPS PUB 74和和81中规定中规定ANSI 在在
3、ANSI X3.106中规定中规定 ISO和和ISO/IEC在在ISO 9732 ISO/IEC 10116中中规定规定电子密码本(电子密码本(ECB)C Ci i=E=EK K(P(Pi i)P Pi i=D=DK K(C(Ci i)ECB特点特点简单和有效简单和有效可以并行实现可以并行实现不能隐藏明文的模式信息不能隐藏明文的模式信息相同明文相同明文相同密文相同密文同样信息多次出现造成泄漏同样信息多次出现造成泄漏对明文的主动攻击是可能的对明文的主动攻击是可能的信息块可被替换、重排、删除、重放信息块可被替换、重排、删除、重放误差传递:密文块损坏误差传递:密文块损坏仅仅对应明文块损坏对应明文块损
4、坏适合于传输短信息适合于传输短信息密码分组链接密码分组链接CBC C Ci i=E=EK K(C(Ci i-1-1 P Pi i)P Pi i=E=EK K(C(Ci i )C Ci i-1-1CBC特点特点没有已知的并行实现算法没有已知的并行实现算法能隐藏明文的模式信息能隐藏明文的模式信息 需要共同的初始化向量需要共同的初始化向量IV 相同明文相同明文不同密文不同密文 初始化向量初始化向量IV可以用来改变第一块可以用来改变第一块对明文的主动攻击是不容易的对明文的主动攻击是不容易的信息块不容易被替换、重排、删除、重放信息块不容易被替换、重排、删除、重放误差传递:误差传递:密文块损坏密文块损坏两
5、两明文明文块块损坏损坏 安全性好于安全性好于ECB 适合于传输长度大于适合于传输长度大于64位的报文,还可以进行位的报文,还可以进行用户鉴别用户鉴别,是大多系统的标准如是大多系统的标准如 SSL、IPSec 密码反馈密码反馈CFB CFB:CFB:分组密码分组密码流密码流密码 S Si i 为移位寄存器为移位寄存器,j,j为流单元宽度为流单元宽度 加密加密:C Ci i=P=Pi i(E EK K(S(Si i)的高的高j j位位)S Si i+1+1=(S=(Si ij)|Cj)|Ci i 解密解密:P Pi i=C=Ci i(E EK K(S(Si i)的高的高j j位位)S Si i+1
6、+1=(S=(Si ij)|Cj)|Ci i CFB加密示意图加密示意图Ci=Pi(EK(Si)的高的高j位位);Si+1=(Sij)|Ci CFB解密示意图解密示意图Pi=Ci(EK(Si)的高的高j位位);Si+1=(Sij)|Ci CFB特点特点 分组密码分组密码流密码流密码没有已知的并行实现算法没有已知的并行实现算法隐藏了明文模式隐藏了明文模式 需要共同的移位寄存器初始值需要共同的移位寄存器初始值IV 对于不同的消息,对于不同的消息,IV必须唯一必须唯一 误差传递:一个单元损坏影响多个单元误差传递:一个单元损坏影响多个单元 输出反馈输出反馈OFBOFB:OFB:分组密码分组密码流密码流
7、密码 S Si i 为移位寄存器为移位寄存器,j,j为流单元宽度为流单元宽度 加密加密:C Ci i=P=Pi i(E EK K(S(Si i)的高的高j j位位)S Si i+1+1=(S=(Si ij)|j)|(E EK K(S(Si i)的高的高j j位位)解密解密:P Pi i=C=Ci i(E EK K(S(Si i)的高的高j j位位)S Si i+1+1=(S=(Si ij)|j)|(E EK K(S(Si i)的高的高j j位位)OFB加密示意图加密示意图Ci=Pi(EK(Si)的高的高j位位);Si+1=(Sij)|(EK(Si)的高的高j位位)OFB解密示意图解密示意图Pi
8、=Ci(EK(Si)的高的高j位位);Si+1=(SiC影影响响C=P影影响响结构结构相关相关性性主动主动攻击攻击有无有无IV安全安全性性ECBCBCCFBOFB分组密码的分析方法分组密码的分析方法 根据攻击者所掌握的信息根据攻击者所掌握的信息,可将分组密码的攻击分为以可将分组密码的攻击分为以下几类下几类:唯密文攻击唯密文攻击 已知明文攻击已知明文攻击 选择明文攻击选择明文攻击 攻击的复杂度攻击的复杂度 数据复杂度数据复杂度:实施该攻击所需输入的数据量实施该攻击所需输入的数据量 处理复杂度处理复杂度:处理这些数据所需要的计算量处理这些数据所需要的计算量分组密码的典型攻击方法分组密码的典型攻击方
9、法 最可靠的攻击办法最可靠的攻击办法:强力攻击强力攻击 最有效的攻击最有效的攻击:差分密码分析差分密码分析,通过分析明文对的通过分析明文对的差值对密文对的差值的影响来恢复某些密钥比特差值对密文对的差值的影响来恢复某些密钥比特.线性密码分析线性密码分析:本质上是一种已知明文攻击方法本质上是一种已知明文攻击方法,通过寻找一个给定密码算法的有效的线性近似表通过寻找一个给定密码算法的有效的线性近似表达式来破译密码系统达式来破译密码系统 插值攻击方法插值攻击方法 密钥相关攻击密钥相关攻击现代常规分组加密算法现代常规分组加密算法 一种是对一种是对DES进行复合,强化它的抗攻击进行复合,强化它的抗攻击能力;
10、另一种是开辟新的方法,即象能力;另一种是开辟新的方法,即象DES那样那样加解密速度快,又具有抗差分攻击和其他方式加解密速度快,又具有抗差分攻击和其他方式攻击的能力。攻击的能力。现代常规分组加密算法现代常规分组加密算法 1.Triple DES 2.IDEA 3.RC5 4.RC6 5.AES 其他一些较实用的算法,如其他一些较实用的算法,如Blowfish,CAST,以及,以及RC2。1.TRIPLE DES 由于已经证明由于已经证明,见见 K.W.Campbell and M.J.Wiener Proof that DES is not a group In Advances in Cryp
11、tologyCrpto92.Springer-Verlag,New York,1993.于是多重于是多重DES,尤其是三重,尤其是三重DES还在普遍使用。还在普遍使用。双重双重DES(Double DES)C=EK2(EK1(P)P=DK1(DK2(C)双重双重DES的讨论的讨论 假设对于假设对于 DES和所有和所有56比特密钥,给定任意两个密钥比特密钥,给定任意两个密钥K K1 1和和K K2 2,都能找到一个密钥,都能找到一个密钥K K3 3使得使得EK2(EK1(P)=EK3(P)。如果这个假设是事实,则如果这个假设是事实,则DES的两重加密或者多重加的两重加密或者多重加密都将等价于用一
12、个密都将等价于用一个56比特密钥的一次加密。比特密钥的一次加密。从直观上看,上面的假设不可能为真。因为从直观上看,上面的假设不可能为真。因为DES的加的加密事实上就是做一个从密事实上就是做一个从64比特分组到一个比特分组到一个64分组的置分组的置换,换,而而64比特分组共有比特分组共有264可能的状态,因而可能的置可能的状态,因而可能的置换个数为换个数为 另一方面,另一方面,DES的每个密钥确定了一个置换,因而总的每个密钥确定了一个置换,因而总的置换个数为的置换个数为 。直到直到1992年才有人证明了这个结果。年才有人证明了这个结果。175610220100000000000034738000
13、00641010!2中间相遇中间相遇(meet-in-the-middle)攻击攻击C=EC=EK2K2(E EK1K1(P)(P)X=E X=EK1K1(P)=D(P)=DK2K2(C)C)给定明文密文对给定明文密文对(P,C)P,C)对所有对所有2 25656个密钥个密钥,加密加密P,P,对结果排序对结果排序 对所有对所有2 25656个密钥个密钥,解密解密C,C,对结果排序对结果排序 逐个比较逐个比较,找出找出K K1 1,K,K2 2使得使得E EK1K1(P)=D(P)=DK2K2(C)C)对双重对双重DES的中间相遇攻击的中间相遇攻击的分析的分析 已知,给定一个明文已知,给定一个明
14、文P,经二重,经二重DES加密有加密有264个可个可能的密文。而二重能的密文。而二重DES所用密钥的长度应是所用密钥的长度应是112 bits,所以选择密钥有,所以选择密钥有2112个可能性。于是对给定一个可能性。于是对给定一个明文个明文P加密成一定的密文方式有加密成一定的密文方式有2112/264=248种可种可能。给定两个明密文对能。给定两个明密文对,虚警率降为虚警率降为248-64=2-16。换。换句话说,对已知句话说,对已知2个明文个明文-密文对的中间相遇攻击成密文对的中间相遇攻击成功的概率为功的概率为1-2-16。攻击用的代价攻击用的代价加密或解密所用运算次数加密或解密所用运算次数
15、2 256 需要大量的存储器需要大量的存储器:256 64=1017字节字节=230*232Triple-DES的四种模型的四种模型 DES-EEE3:三个不同密钥,顺序使用三次加:三个不同密钥,顺序使用三次加密算法密算法 DES-EDE3:三个不同密钥,依次使用加密:三个不同密钥,依次使用加密-解解密密-加密算法加密算法 DES-EEE2:K1=K3,同上,同上 DES-EDE2:K1=K3,同上,同上双密钥的三重双密钥的三重DES(Triple DES with Two Keys)C=EK1(DK2(EK1(P)P=DK1(EK2(DK1(C)对双密钥的三重对双密钥的三重DES的分析的分析
16、-i 该模式由该模式由IBM设计设计,可与常规加密算法兼容可与常规加密算法兼容 这种替代这种替代DES的加密较为流行并且已被采纳用于密钥的加密较为流行并且已被采纳用于密钥管理标准(管理标准(The Key Manager Standards ANSX9.17和和ISO8732).交替使用交替使用K1和和K2可以抵抗中间相遇攻击可以抵抗中间相遇攻击.如果如果C=EK2(EK1(EK1(P),只需要只需要256+2次加密次加密 到目前为止,还没有人给出攻击三重到目前为止,还没有人给出攻击三重DES的有效方法。的有效方法。对其密钥空间中密钥进行蛮干搜索,那么由于空间太对其密钥空间中密钥进行蛮干搜索,
17、那么由于空间太大为大为2112=51033,这实际上是不可行的。若用差分攻,这实际上是不可行的。若用差分攻击的方法,相对于单一击的方法,相对于单一DES来说复杂性以指数形式增来说复杂性以指数形式增长,要超过长,要超过1052。对双密钥的三重对双密钥的三重DES的分析的分析-ii 目前还没有针对两个密钥三重目前还没有针对两个密钥三重DES的实用攻击方法。的实用攻击方法。但对两个密钥三重但对两个密钥三重DES的攻击有一些设想,以这些设的攻击有一些设想,以这些设想为基础将来可能设计出更成功的攻击技术。想为基础将来可能设计出更成功的攻击技术。Merkle R.and Hellman,M.“On the
18、 security of multiple encryption”.Communication of the ACM,July 1981 Oorschot,P and Wiener,M.“A Known-plaintext attack on two-key triple encryption”Proceedings,EUROCrypt90,1990:published by Springer-Verlag三密钥的三重三密钥的三重DES(Triple DES with Three Keys)C=EK3(DK2(EK1(P)P=DK3(EK2(DK1(C)三密钥的三重三密钥的三重DES分析分析
19、密钥的有效长度为密钥的有效长度为168位位 与与DES的兼容性可以通过令的兼容性可以通过令K3=K2或或K1=K2得到得到 许多基于许多基于Internet的应用里用到的应用里用到:PGP和和S/MIME现代常规分组加密算法现代常规分组加密算法 1.Triple DES 2.IDEA 3.RC5 4.RC6 5.AES国际数据加密国际数据加密IDEA(International Data Encryption Algorithm)算法算法 1990年瑞士联邦技术学院的来学嘉和年瑞士联邦技术学院的来学嘉和Massey提出,提出,PES,91年修订,年修订,92公布公布细节细节 设计目标从两个方面
20、考虑设计目标从两个方面考虑 加密强度加密强度 易实现性易实现性 强化了抗差分分析的能力,强化了抗差分分析的能力,PGPIDEA算法特点算法特点 6464位分组位分组,128,128位密钥位密钥 运算运算:XOR XOR ,模模2 21616(6553665536)加)加 ,模模 (2(21616+1)+1)(6553765537)乘乘 三种运算均不满足分配律与结合律三种运算均不满足分配律与结合律 有大量弱密钥有大量弱密钥 难以直接扩展到难以直接扩展到128128位块位块IDEA设计思想设计思想 得到得到confusion的途径的途径 按位异或按位异或 以以216(65536)为模的加法为模的加
21、法 以以216+1(65537)为模的乘法为模的乘法 互不满足分配律、结合律互不满足分配律、结合律 得到得到diffusion的途径的途径 乘加乘加(MA)结构结构 实现上的考虑实现上的考虑 软件和硬件实现上的考虑软件和硬件实现上的考虑IDEA加加密算法密算法IDEA每一轮每一轮 IDEA输出变换阶段输出变换阶段IDEA的子密钥的子密钥 现代常规分组加密算法现代常规分组加密算法 1.Triple DES 2.IDEA 3.RC5 4.RC6 5.AESRC5作者为作者为Ron Rivest 1994设计、设计、1995公开公开1.适用于软件或者硬件实现适用于软件或者硬件实现2.运算速度快运算速
22、度快3.能适应于不同字长的程序能适应于不同字长的程序(一个字的(一个字的bit数是数是RC5的一的一个参数;)个参数;)4.加密的轮数可变加密的轮数可变(轮数是(轮数是RC5的第二个参数)的第二个参数)5.密钥长度是可变的密钥长度是可变的(密钥长度是(密钥长度是RC5的第三个参数)的第三个参数)6.对内存要求低对内存要求低7.依赖于数据的循环移位依赖于数据的循环移位(增强抗攻击能力)(增强抗攻击能力)RC5参数参数 三个参数三个参数 参数参数w:表示字长,:表示字长,RC5加密两字长分组,可用加密两字长分组,可用值为值为16、32、64 参数参数r:表示轮数,可用值:表示轮数,可用值0,1,2
23、55 参数参数b:表示密钥:表示密钥K的字节数,可用值的字节数,可用值0,1,255 RC5版本:版本:RC5-w/r/b 算法作者建议标定版本为算法作者建议标定版本为RC5-32/12/16RC5基本运算基本运算整个加密使用了下述整个加密使用了下述3个基本运算和它们的逆运算:个基本运算和它们的逆运算:模模2w加法运算,表示为加法运算,表示为“+”;逐比特异或运算,表示为逐比特异或运算,表示为“”;字的循环左移运算:字字的循环左移运算:字x循环左移循环左移y比特,表示为比特,表示为xy如如(a0,a1,a2,an-1)3=(a3,a4,an-1,a0,a1,a2)密钥扩展密钥扩展 总计产生总计
24、产生 t=2r+2 个子密钥,每个密钥的长度为一个字个子密钥,每个密钥的长度为一个字长(长(w bits)。密钥的初始化密钥的初始化对于给定的参数对于给定的参数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
25、 For i=1 to t-1 do Si=Si-1+Qw其中的加法是模其中的加法是模2w的加法运算。的加法运算。密钥扩展密钥扩展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 声称,声称,这个扩张函数具有单向性。加解密运算图加解密运算图加密算法加密算法 加密:将明文分组为左右加密:将明文分组为左右A,B;用变量;用变量Lei,Rei参与参与 运
26、算程序为:运算程序为:LE0=A+S0 RE0=B+S1 for i=1 to r do LEi=(LEi-1 REi-1)REi-1)+S2i;REi=(REi-1 LEi)LDi)LDi);LDi-1=(LDi-S2*iRDi-1)RDi-1);B=RD0-S1;A=LD0-S0.RC5操作模式操作模式RFC2040 Baldwin,R.,and Rivest,R.The RC5,RC5-CBC,RC5-CBC-Pad,and RC5-CTS algorithms.Oct.1996P9696 现代常规分组加密算法现代常规分组加密算法 1.Triple DES 2.IDEA 3.RC5 4.
27、RC6 5.AESRC6 被选为被选为21世纪加密标准算法。世纪加密标准算法。RC6是是RC5的进的进一步改进。像一步改进。像RC5那样,那样,RC6实际上是利用数实际上是利用数据的循环移位。据的循环移位。RC5自自1995年公布以来,尽管至今为止还没有年公布以来,尽管至今为止还没有发现实际攻击的有效手段,然而一些理论攻击发现实际攻击的有效手段,然而一些理论攻击的文章先后也分析出的文章先后也分析出RC5的一些弱点。的一些弱点。RC6的加密程序:的加密程序:RC6-w/r/bDesign Philosophy Leverage our experience with RC5:use data-d
28、ependent rotations to achieve a high level of security.Adapt RC5 to meet AES requirements Take advantage of a new primitive for increased security and efficiency:32x32 multiplication,which executes quickly on modern processors,to compute rotation amounts.Description of RC6 RC6-w/r/b parameters:Word
29、size in bits:w (32)(lg(w)=5)Number of rounds:r (20)Number of key bytes:b (16,24,or 32)Key Expansion:Produces array S 0 2r+3 of w-bit round keys.Encryption and Decryption:Input/Output in 32-bit registers A,B,C,DRC6的基本运算的基本运算 A+BAddition modulo 2wA-BSubtraction modulo 2wA BExclusive-OrA B Rotate A rig
30、ht,similarly(A,B,C,D)=(B,C,D,A)Parallel assignmentA x BMultiplication modulo 2w RC5 RC6-w/r/b加密图加密图,其中,其中f(x)=x(2x+1):AB+fC+D+f+S2r+2S2r+3ABCDRepeatFor rroundsS2iS2i+1S0S1log2wlog2wlog2w RC6 Encryption(Generic)B=B+S 0 D=D+S 1 for i =1 to r do t =(B x (2B +1)lg(w)u =(D x (2D+1)lg(w)A =(A t)u)+S 2i C
31、=(C u)t)+S 2i+1 (A,B,C,D)=(B,C,D,A)A=A+S 2r+2 C=C+S 2r+3 RC6 Encryption(for AES)B=B+S 0 D=D+S 1 for i =1 to 20 do t =(B x (2B +1)5 u =(D x (2D+1)5 A =(A t)u)+S 2i C =(C u)t)+S 2i+1 (A,B,C,D)=(B,C,D,A)A=A+S 42 C=C+S 43 RC6 Decryption(for AES)C=C-S 43 A=A-S 42 for i =20 downto 1 do (A,B,C,D)=(D,A,B,C)
32、u =(D x (2D+1)5 t =(B x (2B +1)t)u A =(A-S 2i )u)t D=D-S 1 B=B-S 0 Key Expansion(Same as RC5s)Input:array L 0 c-1 of input key words Output:array S 0 43 of round key words Procedure:S 0 =0 xB7E15163for i=1 to 43 do Si=Si-1+0 x9E3779B9A=B=i=j=0for s=1 to 132 do A=S i =(S i +A+B)3 B=L j =(L j +A+B)(A+
33、B)i=(i+1)mod 44 j=(j+1)mod c Security of Key Expansion Key expansion is identical to that of RC5;no known weaknesses.No known weak keys.No known related-key attacks.Round keys appear to be a“random”function of the supplied key.key expansion is quite“one-way”-difficult to infer supplied key from roun
34、d keys.RC6小结小结 RC6 more than meets the requirements for the AES;it is simple,fast,and secure.现代常规分组加密算法现代常规分组加密算法 1.Triple DES 2.IDEA 3.RC5 4.RC6 5.AESAES背景背景-i 1997年年4月月15日,(美国)国家标准技术研究所日,(美国)国家标准技术研究所(NIST)发起征集高级加密标准()发起征集高级加密标准(Advanced Encryption Standard)AES的活动,活动目的是的活动,活动目的是确定一个非保密的、可以公开技术细节的、
35、全球确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,作为新的数据加密标免费使用的分组密码算法,作为新的数据加密标准。准。1997年年9月月12日,美国联邦登记处公布了正式征集日,美国联邦登记处公布了正式征集AES候选算法的通告。作为进入候选算法的通告。作为进入AES候选过程的候选过程的一个条件,开发者承诺放弃被选中算法的知识产一个条件,开发者承诺放弃被选中算法的知识产权。权。对对AES的基本要求是:比三重的基本要求是:比三重DES快、至少与三快、至少与三重重DES一样安全、数据分组长度为一样安全、数据分组长度为128比特、密钥比特、密钥长度为长度为128/192/256比特。
36、比特。AES背景背景-ii 1998年年8月月12日,在首届日,在首届AES会议上指定了会议上指定了15个个候选算法。候选算法。1999年年3月月22日第二次日第二次AES会议上,将候选名单会议上,将候选名单减少为减少为5个,这个,这5个算法是个算法是RC6,Rijndael,SERPENT,Twofish和和MARS。2000年年4月月13日,第三次日,第三次AES会议上,对这会议上,对这5个候个候选算法的各种分析结果进行了讨论。选算法的各种分析结果进行了讨论。2000年年10月月2日,日,NIST宣布了获胜者宣布了获胜者Rijndael算法,算法,2001年年11月出版了最终标准月出版了最
37、终标准FIPS PUB197。Rijndael简介简介 不属于不属于Feistel结构结构 加密、解密相似但不对称加密、解密相似但不对称 支持支持128/32=Nb数据块大小数据块大小 支持支持128/192/256(/32=Nk)密钥长度密钥长度 有较好的数学理论作为基础有较好的数学理论作为基础 结构简单、速度快结构简单、速度快AES参数参数SP网络结构网络结构在这种密码的每一轮中,轮输入首先被一个由子密钥控在这种密码的每一轮中,轮输入首先被一个由子密钥控制的可逆函数制的可逆函数S作用,然后再对所得结果用置换(或可逆作用,然后再对所得结果用置换(或可逆线性变换)线性变换)P作用。作用。S和和
38、P分别被称为混乱层和扩散层,主分别被称为混乱层和扩散层,主要起混乱和扩散作用。要起混乱和扩散作用。AES算法结构算法结构-i AES算法的轮变换中没有算法的轮变换中没有Feistel结构,轮结构,轮变换是由三个不同的可逆一致变换组成,变换是由三个不同的可逆一致变换组成,称之为层,称之为层,线性混合层:确保多轮之上的高度扩散。线性混合层:确保多轮之上的高度扩散。非线性层:具有最优最差非线性层:具有最优最差-情形非线性性情形非线性性的的S-盒的并行应用。盒的并行应用。密钥加层:轮密钥简单地异或到中间状密钥加层:轮密钥简单地异或到中间状态上。态上。AES算法结构算法结构-iiAES-128加加解解密
39、密过过程程AES算法描述算法描述 假设:假设:State表示数据,以及每一轮的中间结果表示数据,以及每一轮的中间结果RoundKey表示每一轮对应的子密钥表示每一轮对应的子密钥 算法如下:算法如下:第一轮之前执行第一轮之前执行AddRoundKey(State,RoundKey)Round(State,RoundKey)ByteSub(State);ShiftRow(State);MixColumn(State);AddRoundKey(State,RoundKey);FinalRound(State,RoundKey)ByteSub(State);ShiftRow(State);AddRou
40、ndKey(State,RoundKey);状态、密钥状态、密钥 状态状态/密钥的矩阵表示密钥的矩阵表示S00S01S02S03S04S05S06S07S08S09S10S11S12S13S14S15k00k01k02k03k10k11k12k13k20k21k22k23k30k31k32k33字节代替字节代替(Substitute Bytes)变换变换 字节代替是一个非线性的字节代替,独立地在每个状字节代替是一个非线性的字节代替,独立地在每个状态字节上进行运算。代替表(态字节上进行运算。代替表(S-盒)是可逆的,是一盒)是可逆的,是一个个16 16的矩阵。的矩阵。example行移位行移位(
41、Shift Row)变换变换简单的置换简单的置换example列混合列混合Mix Column变换变换 代替操作,将状态的列看作有限域代替操作,将状态的列看作有限域GF(28)上的)上的4维维向量并被有限域向量并被有限域GF(28)上的一个固定可逆方阵)上的一个固定可逆方阵A乘乘 example轮密钥加轮密钥加(Add Round Key)一个简单地按位异或的操作一个简单地按位异或的操作AES的密钥调度的密钥调度 轮密钥是通过密钥调度算法从密钥中产生,包轮密钥是通过密钥调度算法从密钥中产生,包括两个组成部分:密钥扩展和轮密钥选取。基括两个组成部分:密钥扩展和轮密钥选取。基本原理如下:本原理如下
42、:所有轮密钥比特的总数等于分组长度乘轮数加所有轮密钥比特的总数等于分组长度乘轮数加1。(如(如128比特的分组长度和比特的分组长度和10轮迭代,共需要轮迭代,共需要1408比特的密钥)。比特的密钥)。将密码密钥扩展成一个扩展密钥。将密码密钥扩展成一个扩展密钥。轮密钥按下述方式从扩展密钥中选取:第一个轮密钥按下述方式从扩展密钥中选取:第一个轮密钥由开始轮密钥由开始Nb个字组成,第二个轮密钥由接个字组成,第二个轮密钥由接下来的下来的Nb个字组成,如此继续下去。个字组成,如此继续下去。AES的密钥扩展的密钥扩展密钥扩展的伪代码密钥扩展的伪代码伪代码之二伪代码之二 G变换变换 Rotword执行一字节
43、循环左移执行一字节循环左移 b0,b1,b2,b3 b1,b2,b3,b0 Subword执行使用执行使用S-盒实行字节替换盒实行字节替换 前两步的结果前两步的结果XOR与轮常数与轮常数RconjexampleRijndael安全性安全性 没有发现弱密钥或补密钥没有发现弱密钥或补密钥 能有效抵抗目前已知的攻击算法能有效抵抗目前已知的攻击算法 线性攻击线性攻击 差分攻击差分攻击先进对称分组加密算法的特点先进对称分组加密算法的特点 可变的密钥长度可变的密钥长度:RC5 混合的运算混合的运算 IDEA 数据相关的圈数数据相关的圈数 RC5 密钥相关的圈数密钥相关的圈数 CAST-128 密钥相关的密
44、钥相关的S盒盒:Blowfish 冗长密钥调度算法:冗长密钥调度算法:Blowfish 可变的可变的F:CAST-128 可变长明文可变长明文/密文块长度密文块长度 可变圈数可变圈数 每圈操作作用于全部数据每圈操作作用于全部数据分组密码的一般设计原理分组密码的一般设计原理 针对安全性的一般原则针对安全性的一般原则:混乱混乱 扩散扩散 重要的设计原理重要的设计原理:必须能抵抗现有的攻击必须能抵抗现有的攻击方法方法 针对实现的原则针对实现的原则 软件软件 硬件硬件分组密码的整体结构分组密码的整体结构 Feistel 网络网络 SP网络网络S盒的设计准则盒的设计准则 S-盒首次出现在盒首次出现在Lu
45、cifer算法中算法中,因因DES的使用而流行的使用而流行.S-盒是许多密码算法的唯一非线性部件盒是许多密码算法的唯一非线性部件,因此因此,它的密码它的密码强度决定了整个算法的安全强度强度决定了整个算法的安全强度.提供了密码算法所必须的混乱作用提供了密码算法所必须的混乱作用.如何全面准确地度量如何全面准确地度量S-盒的密码强度和设计有效的盒的密码强度和设计有效的S-盒是分组密码设计和分析中的难题盒是分组密码设计和分析中的难题.非线性度、差分均匀性、严格雪崩准则、可逆性、没非线性度、差分均匀性、严格雪崩准则、可逆性、没有陷门有陷门P置换的设计准则置换的设计准则 P置换的目的是提供雪崩效应(明文或
46、密置换的目的是提供雪崩效应(明文或密钥的一点小的变动都引起密文的较大变钥的一点小的变动都引起密文的较大变化)化)轮函数的设计准则轮函数的设计准则 安全性安全性 速度速度 灵活性:能在多种平台实现灵活性:能在多种平台实现轮函数的构造轮函数的构造 加法、减法和异或加法、减法和异或 固定循环固定循环/移位移位 数据依赖循环数据依赖循环 乘法乘法密钥扩展算法的设计密钥扩展算法的设计 设计目标:子密钥的统计独立性和灵活性设计目标:子密钥的统计独立性和灵活性 实现简单实现简单 速度速度 不存在简单关系:不存在简单关系:(给定两个有某种关系的种子密钥给定两个有某种关系的种子密钥,能预能预测它们轮子密钥之间的
47、关系测它们轮子密钥之间的关系)种子密钥的所有比特对每个子密钥比特的影响大致相同种子密钥的所有比特对每个子密钥比特的影响大致相同 从一些子密钥比特获得其他的子密钥比特在计算上是难的从一些子密钥比特获得其他的子密钥比特在计算上是难的 没有弱密钥没有弱密钥思考和练习思考和练习(推荐推荐)四种模式四种模式(ECB,CBC,CFB(ECB,CBC,CFB和和OFB)OFB)的的加解密特点加解密特点Reference http:/csrc.nist.gov/encryption/aes/http:/ William Stallings,Cryptography and network security:principles and practice,Second Edition.