《密码学03-分组密码体制》由会员分享,可在线阅读,更多相关《密码学03-分组密码体制(156页珍藏版)》请在金锄头文库上搜索。
1、本科生学位课:现代密码学本科生学位课:现代密码学第三章第三章 分组密码体分组密码体制制主讲教师:董庆宽研究方向:密码学与信息安全Email :个人主页:http:/ 分组密码概述分组密码概述3.2 数据加密标准数据加密标准DES3.3 差分密码分析和线性密码分析差分密码分析和线性密码分析3.4 分组密码的运行模式分组密码的运行模式3.5 IDEA 3.6 AESRijndael本章提要本章提要23.1 分组密码概述分组密码概述分组密码分组密码(Block Cipher) :l将明文消息分组,逐组加密;对称密码算法,属于代换密码将明文消息分组,逐组加密;对称密码算法,属于代换密码l将明文消息编码
2、表示后的数字序列将明文消息编码表示后的数字序列x0,x1,xi,划分成长为划分成长为n的组的组x=(x0,x1,xn-1)l各组(长为各组(长为n的矢量)分别在密钥的矢量)分别在密钥k=(k0,k1,kt-1)控制下变换成输控制下变换成输出序列出序列y=(y0,y1,ym-1)(长为(长为m的矢量)的矢量)l其加密函数其加密函数E:VnKVm,Vn和和Vm分别是分别是n维和维和m维矢量空间,维矢量空间,K为为密钥空间,如图所示。密钥空间,如图所示。3与流密码不同之处:与流密码不同之处:l(1)分组加密。在于输出的每一位数字不是只与相应时刻输入的明分组加密。在于输出的每一位数字不是只与相应时刻输
3、入的明文数字有关,而是与一组长为文数字有关,而是与一组长为n的明文数字有关。的明文数字有关。l(2)无记忆性。在相同密钥下,分组密码对长为无记忆性。在相同密钥下,分组密码对长为n的输入明文组所的输入明文组所实施的变换是等同的,所以实施的变换是等同的,所以只需研究对任一组明文数字的变换规只需研究对任一组明文数字的变换规则则。这种密码实质上是字长为这种密码实质上是字长为m的数字序列的代换密码的数字序列的代换密码。算法的输入长度和输出长度算法的输入长度和输出长度l通常取通常取m=n (用于加密用于加密)l若若mn,则为有数据扩展的分组密码,则为有数据扩展的分组密码(用于认证用于认证)l若若m 。l另
4、一方面,对每个不同的密钥,另一方面,对每个不同的密钥,DES都定义了一个映射,总映射数为都定义了一个映射,总映射数为2561017N/2,则令,则令lKk1,k2,kc如果如果T|TminN/2 |,将将Tmax对应的候选者对应的候选者Kn(i)作为作为Kn,并猜定,并猜定Kk1,k2,kc0(p1/2)或或1 (p6有所不同。有所不同。当当Nk 6时,扩展算法如下时,扩展算法如下lKeyExpansion (byte Key4*Nk , word WNb*(Nr+1)ll for (i =0; i Nk; i +)lWi=(Key4* i,Key4* i +1,Key4* i +2,Key4
5、* i +3 );l for (i =Nk; i 6时,扩展算法如下时,扩展算法如下lKeyExpansion (byte Key4*Nk , word WNb*(Nr+1)ll for (i=0; i Nk; i +)lWi=(Key4* i, Key4* i +1, Key4* i +2, Key4* i +3 );lfor (i =Nk; i 6与与Nk6的密钥扩展算法的区别在于:当的密钥扩展算法的区别在于:当i为为Nk的的4的的倍数时,须先将前一个字倍数时,须先将前一个字Wi-1经过经过SubByte变换。变换。以上两个算法中,以上两个算法中,Rconi/Nk 为轮常数,其值与为轮常数
6、,其值与Nk无关,定义为(字节用十六进制表示,同时理无关,定义为(字节用十六进制表示,同时理解为解为GF(28)上的元素):上的元素):l Rcon i=(RCi, 00, 00, 00)l 其中其中RCi 是是GF(28) 中值为中值为xi-1的元素,因此的元素,因此lRC1 =1(即即01)lRCi = x(即即02)RCi-1= xi-1146(2) 轮密钥选取轮密钥选取l轮密钥轮密钥i(即第(即第i 个轮密钥)由轮密钥缓冲字个轮密钥)由轮密钥缓冲字WNb* i到到WNb*(i+1)给出,如图给出,如图3.23所示。所示。lNb=6且且Nk=4时的密钥扩展与轮密钥选取时的密钥扩展与轮密钥
7、选取W0W1W2W3W4W5W6W7W8W9W10W11W12W13W14轮密钥轮密钥0轮密钥轮密钥11474加密算法加密算法加密算法为顺序完成以下操作:初始的密钥加;加密算法为顺序完成以下操作:初始的密钥加;(Nr-1)轮迭代;一个结尾轮。即轮迭代;一个结尾轮。即lRijndael (State, CipherKey)llKeyExpansion (CipherKey, ExpandedKey);lAddRoundKey (State, ExpandedKey);lfor (i=1; i Nr; i +) lRound (State, ExpandedKey+Nb* i);lFinalRou
8、nd (State, ExpandedKey+Nb*Nr)l148其中其中CipherKey是种子密钥,是种子密钥,ExpandedKey是扩展是扩展密钥。密钥。密钥扩展可以事先进行(预计算),且密钥扩展可以事先进行(预计算),且Rijndael密密码的加密算法可以用这一扩展密钥来描述,即码的加密算法可以用这一扩展密钥来描述,即lRijndael (State, ExpandedKey)llAddRoundKey (State, ExpandedKey);lfor (i=1; i Nr; i +)lRound (State, ExpandedKey+Nb* i);lFinalRound (St
9、ate, ExpandedKey+Nb*Nr)l1495.加解密的相近程度及解密算法加解密的相近程度及解密算法首先给出几个引理。首先给出几个引理。引理引理3.1 设字节代换(设字节代换(ByteSub)、行移位)、行移位(ShiftRow)的逆变换分别为)的逆变换分别为InvByteSub、InvShiftRow。l则组合部件则组合部件“ByteSubShiftRow”的逆变换为的逆变换为“InvByteSubInvShiftRow”l证明:组合部件证明:组合部件“ByteSubShiftRow”的逆变换原本的逆变换原本为为“InvShiftRowInvByteSub”。由于字节代换。由于字节
10、代换(ByteSub)是对每个字节进行相同的变换,故)是对每个字节进行相同的变换,故“InvShiftRow”与与“InvByteSub”两个计算部件可以两个计算部件可以交换顺序。(证毕)交换顺序。(证毕)150引理引理3.2 设列混合(设列混合(MixColumn)的逆变换为)的逆变换为InvMixColumn 则列混合部件与密钥加部件则列混合部件与密钥加部件(AddRoundKey)的组合部件)的组合部件“MixColumnAddRoundKey (, Key)”的逆变换的逆变换为为“InvMixColumnAddRoundKey (, InvKey)”l其中密钥其中密钥InvKey与与K
11、ey的关系为:的关系为:InvKey=InvMixColumn (Key)151证明:证明:l组合部件组合部件“MixColumnAddRoundKey (, Key)” 的逆变的逆变换原本为换原本为“AddRoundKey (, Key)InvMixColumn”,l由于列混合(由于列混合(MixColumn)实际上是线性空间)实际上是线性空间GF(28)4上的上的可逆线性变换,因此可逆线性变换,因此“AddRoundKey (,Key)InvMixColumn”l=“InvMixColumnAddRoundKey (, InvMixColumn (Key)”(证毕)(证毕)l由由t(x)=
12、a(x)*c(x)+key(x),知逆向列混淆后知逆向列混淆后 t(x)*c-1(x)= a(x)+key(x)*c-1(x),从而从而a(x) = t(x)*c-1(x) + key(x)*c-1(x),所以逆的列混淆后应该加上轮密钥列混淆后的结果所以逆的列混淆后应该加上轮密钥列混淆后的结果152引理3.3 将某一轮的后两个计算部件和下一轮的前两个计算部件组成将某一轮的后两个计算部件和下一轮的前两个计算部件组成组合部件,该组合部件的程序为组合部件,该组合部件的程序为lMixColumn (State);l AddRoundKey (State, Key(i);l ByteSub (State
13、);l ShiftRow (State)则该组合部件的逆变换程序为则该组合部件的逆变换程序为lInvByteSub (State);l InvShiftRow (State);l InvMixColumn (State);l AddRoundKey (State, InvMixColumn (Key(i)证明:这是引理证明:这是引理3.1和引理和引理3.2的直接推论。的直接推论。l注意到在引理注意到在引理3.3所描述的逆变换中,第所描述的逆变换中,第2步到第步到第4步在形状上很像加密算步在形状上很像加密算法的轮函数,这将是解密算法的轮函数。注意到结尾轮只有法的轮函数,这将是解密算法的轮函数。注
14、意到结尾轮只有3个计算部件,个计算部件,因此可以得到如下定理。因此可以得到如下定理。153定理定理3-2 Rijndael密码的解密算法为顺序完成以下操作:初始的密钥加;密码的解密算法为顺序完成以下操作:初始的密钥加;(Nr-1)轮迭代;一个结尾轮。其中解密算法的轮函数为轮迭代;一个结尾轮。其中解密算法的轮函数为lInvRound (State, RoundKey)ll InvByteSub (State);l InvShiftRow (State);l InvMixColumn (State);l AddRoundKey (State, RoundKey)l解密算法的结尾轮为解密算法的结尾轮
15、为lInvFinalRound (State, RoundKey)ll InvByteSub (State);l InvShiftRow (State);l AddRoundKey (State, RoundKey)l154设加密算法的初始密钥加、第设加密算法的初始密钥加、第1轮、第轮、第2轮、轮、第、第Nr轮的子密钥依次为轮的子密钥依次为lk(0), k(1), k(2), , k(Nr-1), k(Nr)则解密算法的初始密钥加、第则解密算法的初始密钥加、第1轮、第轮、第2轮、轮、第、第Nr轮的子密钥依次为轮的子密钥依次为lk(Nr), InvMixColumn (k(Nr-1), InvM
16、ixColumn (k(Nr-2), ,InvMixColumn (k(1), k(0)。证明:这是上述证明:这是上述3个引理的直接推论。个引理的直接推论。l综上所述,综上所述,Rijndael密码的解密算法与加密算法的计算网密码的解密算法与加密算法的计算网络相同络相同,只是将各计算部件换为对应的逆部件。,只是将各计算部件换为对应的逆部件。155作业:作业:p76,1,2,3,4,5,6已知明文为已知明文为01234567的的ASCII码表示的码表示的128比特比特密钥:密钥:k1是是01011011的的7次重复,次重复,k2是是00001110的的7次重复构成的一共次重复构成的一共112比特密钥比特密钥编写编写EDE的加解密程序,对明文进行加密,并进的加解密程序,对明文进行加密,并进行解密验证行解密验证(1个月以后交个月以后交),11月中旬月中旬l1.编写的代码;编写的代码;2.运行结果截屏;运行结果截屏;3。只交电子版。只交电子版156