1、1第第3 3章章 分组密码分组密码3.1 3.1 概述概述 分组密码加解密速度快、易于标准化和便于软硬件实现,分组密码加解密速度快、易于标准化和便于软硬件实现,得到许多芯片的支持。通常是信息与网络安全中实现数得到许多芯片的支持。通常是信息与网络安全中实现数据加密和认证的核心体制,它在计算机通信和信息系统据加密和认证的核心体制,它在计算机通信和信息系统安全领域有着最广泛的应用。安全领域有着最广泛的应用。分组密码(分组密码(Block cipher):是现代密码学的重要体制,):是现代密码学的重要体制,是应用最为广泛、影响最大的一种密码体制,其主要任是应用最为广泛、影响最大的一种密码体制,其主要任
2、务是提供数据保密性。分组密码一般是指分组对称密码。务是提供数据保密性。分组密码一般是指分组对称密码。2第第3 3章章 分组密码分组密码3.1 3.1 概述概述也称块密码,它是将明文消息经编码表示后的二进制序也称块密码,它是将明文消息经编码表示后的二进制序列列M=xM=x0 0,x,x1 1,x,xi i,划分成若干长度为划分成若干长度为m m的组块。的组块。M Mi i=(x=(x0 0,x,x1 1,x,xm-1m-1),各组分别在密钥,各组分别在密钥k=(kk=(k0 0,k,k1 1,k,kt-1t-1)的的控制下转换成长度为控制下转换成长度为n n的密文分组的密文分组C Ci i=(c
3、=(c0 0,c,c1 1,c,cn-1n-1)。其。其本质是一个从明文空间(本质是一个从明文空间(m m长的比特串的集合)长的比特串的集合)M M到密文到密文空间空间(n(n长的比特串的集合长的比特串的集合)C)C的一一映射。的一一映射。1 1)一般而言,)一般而言,m=nm=n,即为无数据扩展和压缩的分组密码,即为无数据扩展和压缩的分组密码2 2)mnmnmn,有数据压缩的分组密码,有数据压缩的分组密码3第第3 3章章 分组密码分组密码3.2 3.2 分组密码的设计原则与评估分组密码的设计原则与评估3.2.1 3.2.1 分组密码的设计原则分组密码的设计原则针对安全性的一般设计原则针对安全
4、性的一般设计原则1.1.明文分组长度和密钥长度望尽可能大明文分组长度和密钥长度望尽可能大 :当分组长度较小时,攻击者通过穷举明文空间,得到密码变换规律,难当分组长度较小时,攻击者通过穷举明文空间,得到密码变换规律,难于于抵御选择明文攻击抵御选择明文攻击如果密钥量小,攻击者可以有效地通过穷举密钥,对密文进行解密,以如果密钥量小,攻击者可以有效地通过穷举密钥,对密文进行解密,以得到有意义的明文,难于得到有意义的明文,难于抵御唯密文攻击抵御唯密文攻击2.2.混乱原则:指在加解密变换过程中明文、密钥以及密文之间的关混乱原则:指在加解密变换过程中明文、密钥以及密文之间的关系尽可能地复杂化,以防密码破译者
5、采用解析法系尽可能地复杂化,以防密码破译者采用解析法(建立并求解一些方建立并求解一些方程程)进行破译攻击。混乱原则:进行破译攻击。混乱原则:具有复杂的非线性因素具有复杂的非线性因素3.3.扩扩散散原原则则:密密钥钥的的每每一一比比特特影影响响密密文文的的许许多多位位,防防止止对对密密钥钥逐逐段段破译;明文的每一位也影响密文的许多位,以隐蔽明文的统计特性。破译;明文的每一位也影响密文的许多位,以隐蔽明文的统计特性。4第第3 3章章 分组密码分组密码3.2 3.2 分组密码的设计原则与评估分组密码的设计原则与评估3.2.1 3.2.1 分组密码的设计原则分组密码的设计原则针对实现的设计原则针对实现
6、的设计原则 软件实现的设计原则软件实现的设计原则子块:子块长度适合软件编程,如子块:子块长度适合软件编程,如6464位,位,128128位等。位等。简单运算:避免难于实现的按位置换。简单运算:避免难于实现的按位置换。硬件实现的设计原则硬件实现的设计原则 规则结构,以适用于用超大规模集成电规则结构,以适用于用超大规模集成电路实现。路实现。5第第3 3章章 分组密码分组密码3.2.2 3.2.2 分组密码的评估分组密码的评估 (1)(1)安全性安全性评估中的最重要因素,包括下述要点:算法抗密评估中的最重要因素,包括下述要点:算法抗密码分析的强度,可靠的数学基础,算法输出的随机性,码分析的强度,可靠
7、的数学基础,算法输出的随机性,与其他候选算法比较的相对安全性与其他候选算法比较的相对安全性 (2)(2)性能性能在各种平台上的计算效率和对存储空间的需求在各种平台上的计算效率和对存储空间的需求 (3)(3)算法和实现特性算法和实现特性 灵活性、硬件和软件适应性、算法的简单性等灵活性、硬件和软件适应性、算法的简单性等 6第第3 3章章 分组密码分组密码3.3 3.3 分组密码常见的设计方法分组密码常见的设计方法乘积密码乘积密码:以以某某种种方方式式连连续续执执行行两两个个或或多多个个密密码码,所所得得结结果果的的密密码强度将强于所有单个密码的强度。码强度将强于所有单个密码的强度。乘乘积积密密码码
8、常常伴伴随随一一系系列列置置换换与与替替代代操操作作,常常见见的的乘乘积积密密码是码是迭代密码迭代密码FeistelFeistel和和SPNSPN是两种常用的分组密码设计结是两种常用的分组密码设计结构:构:DESDES等分组密码采用等分组密码采用Feistel Feistel 结构;结构;AESAES采用采用SPNSPN结构。结构。7第第3 3章章 分组密码分组密码3.3 3.3 分组密码常见的设计方法分组密码常见的设计方法3.3.1 Feistel3.3.1 Feistel结构结构FeistelFeistel结构是典型的迭代密码结构是典型的迭代密码.Feistel.Feistel结构的解结构
9、的解密与加密是完全一样的,除了所使用的子密钥的顺序密与加密是完全一样的,除了所使用的子密钥的顺序正好相反。正好相反。Li-1Ri-1FKiLi=Ri-1Ri=Li-1 F(Ri-1,Ki)8第第3 3章章 分组密码分组密码3.3.2 SPN3.3.2 SPN结构结构 SPN SPN结构也是一种特殊的迭代密码结构也是一种特殊的迭代密码 。SPNSPN结构和结构和FeistelFeistel结构相比,可以得到更快速的扩结构相比,可以得到更快速的扩散,但是散,但是SPNSPN密码的加解密通常不相似。密码的加解密通常不相似。93.4 3.4 数据加密标准数据加密标准(DES)(DES)DESDES是从
10、是从19751975年被美国联邦政府确定为非敏感信息的加密标年被美国联邦政府确定为非敏感信息的加密标准准.第第3 3章章 分组密码分组密码DESDES是一个是一个1616轮的轮的FeistelFeistel型结构密码。型结构密码。明文分组长度为明文分组长度为6464比特比特密钥长度为密钥长度为6464比特。其中,实用比特。其中,实用5656比特,另比特,另8 8位用作奇偶校验位用作奇偶校验密文分组长度也为密文分组长度也为6464比特。比特。10第第3 3章章 分组密码分组密码111.1.给定明文,通过一个固定的初始置换给定明文,通过一个固定的初始置换IPIP来重排输来重排输入明文块入明文块P
11、P中的比特,得到比特串中的比特,得到比特串P P0 0=IP(P)=L=IP(P)=L0 0R R0 0,这里这里L L0 0和和R R0 0分别是分别是P P0 0的前的前3232比特和后比特和后3232比特比特IP58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157初始置换初始置换IPIP第第3 3章章 分组密码分组密码DESDES算法算法12DESDES算法算法-Feistel-Feistel结构结构2.
12、2.按下述规则进行按下述规则进行1616次次迭代,即迭代,即1 1i i1616 这里这里 是异或,是异或,f f 是一是一个函数(称为轮函数)个函数(称为轮函数);1616个长度为个长度为4848比特的子比特的子密钥密钥K Ki i(1(1i i16)16)是是由密钥由密钥k k经密钥编排经密钥编排函数计算出来的函数计算出来的.L Li-1i-1R Ri-1i-1f f+L Li iR Ri ik ki i第第1616轮迭代左右两块不轮迭代左右两块不交换交换第第3 3章章 分组密码分组密码131313IP-1408481656246432397471555236331386461454226
13、23037545135321612936444125220602835343115119592734242105018582633141949175725初始置换初始置换的逆置换的逆置换IPIP-1-13.3.对比特串对比特串R R1616L L1616使用逆置换使用逆置换IPIP-1-1得到密文得到密文C C,即,即C=IPC=IP-1-1(R(R1616L L1616)。(注意(注意L L1616和和R R1616的相反顺序)的相反顺序)第第3 3章章 分组密码分组密码DESDES算法算法14第第3 3章章 分组密码分组密码密码函数密码函数f f:R Ri-1i-1(32(32位位)K K
14、i-1i-1(32(32位位)E(Ri-1)E(Ri-1)(4848位)位)B B1 1B B2 2B B3 3B B4 4B B5 5B B6 6B B7 7B B8 8S S1 1S S2 2S S3 3S S4 4S S5 5S S6 6S S7 7S S8 8C C1 1C C2 2C C3 3C C4 4C C5 5C C6 6C C7 7C C8 8f(Ri-1,Kf(Ri-1,Ki i)(3232)位)位+P PE EE E扩展扩展密钥加密钥加S S盒代换盒代换P P置换置换有两个参数,分别为有两个参数,分别为长度为长度为3232比特串比特串R Ri-1i-1和和长度为长度为48
15、48比特串比特串K Ki i。产生长度为产生长度为3232比特的比特的输出。输出。15第第3 3章章 分组密码分组密码密码函数密码函数f f:E E扩展扩展:3232比特的比特的R Ri-1i-1根据扩展规则扩展为根据扩展规则扩展为4848比特长比特长度的串;度的串;E比特选择表321234545678989101112131213141516171617181920212021222324252425262728292829303132116第第3 3章章 分组密码分组密码密码函数密码函数f f:密钥加:密钥加:计算计算 并将结果写成并将结果写成8 8个比特串个比特串B=BB=B1 1B B
16、2 2B B3 3B B4 4B B5 5B B6 6B B7 7B B8 8,作为,作为8 8个个S S盒(盒(S S1 1S S8 8)的输入。)的输入。每个每个B Bi i 是长度为是长度为6 6的比特串,记为的比特串,记为B Bi i=(b b1 1b b2 2b b3 3b b4 4b b5 5b b6 6)S S盒代换盒代换:每个每个S S盒盒S Si i是一个固定的是一个固定的4*164*16阶矩阵,每行是阶矩阵,每行是015015之间整数的一个置换之间整数的一个置换.给给B Bi i计算如下计算如下:1)b 1)b1 1b b6 6两个比特确定了两个比特确定了S Si i的行的
17、行r r的二进制表示的二进制表示(0 0r r3 3),),2)b 2)b2 2b b3 3b b4 4b b5 5四个比特确定了四个比特确定了S Si i的列的列c c的二进制表示的二进制表示(0 0c15c15),),3)S 3)Si i(B(Bi i)定义成长度为定义成长度为4 4的比特串的值的比特串的值S Si i(r,c)(r,c)。由此。由此可以算出可以算出C Ci i=S=Si i(B(Bi i),1),1i i8.8.S S盒的输出为:盒的输出为:C=C C=C1 1C C2 2C C3 3C C4 4C C5 5C C6 6C C7 7C C8 8,共共3232比特比特17第
18、第3 3章章 分组密码分组密码S S盒盒 (Substitution Box)(Substitution Box)3.5 3.5 数据加密标准数据加密标准DESDES48bit48bit块通过块通过S S盒压缩成盒压缩成32bit32bit块块48bit48bit寄存器寄存器32bit32bit寄存器寄存器 S1S2S3S4S5S6S7S86bit6bit4bit4bit共共8 8个个S S盒盒18第第3 3章章 分组密码分组密码(3)(3)压缩替代压缩替代 S S盒盒 (Substitution Box)(Substitution Box)S1盒盒14 4 13 1 2 15 11 8 3
19、10 6 12 5 9 0 70 15 7 4 14 2 13 1 10 6 12 11 9 5 3 84 1 14 8 13 6 2 11 15 12 9 7 3 10 5 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13作用作用:将:将6 6个输入位映射为个输入位映射为4 4个输出位;个输出位;方法方法:若定义:若定义6 6个输入位为个输入位为a1a2a3a4a5a6a1a2a3a4a5a6,a1a1代表第代表第1 1位,位,a6a6代表代表第第6 6位,将位,将a1a6a1a6组成组成2 2位二进制数,对应位二进制数,对应S S盒表中的行号;将盒表中的行号;将
20、a2a3a4a5a2a3a4a5组成一个组成一个4 4位的位的2 2进制数,对应进制数,对应S S盒表中的列号;映射到盒表中的列号;映射到交叉点的数据就是该交叉点的数据就是该S S盒的输出。盒的输出。输入为输入为101011101011的输出是的输出是?交叉点数据为交叉点数据为9 9转化为二进制为:转化为二进制为:10011001a1a6=11-3-a1a6=11-3-第第3 3行行a2a3a4a5=0101-5-a2a3a4a5=0101-5-第第5 5列列3.5 3.5 数据加密标准数据加密标准DESDES191919P P置换置换:长度为:长度为3232比特串比特串C=CC=C1 1C
21、C2 2C C3 3C C4 4C C5 5C C6 6C C7 7C C8 8,根据根据固定置换固定置换P(*)P(*)进行置换,得到比特串进行置换,得到比特串P(C).P(C).达到雪达到雪崩效应。崩效应。第第3 3章章 分组密码分组密码密码函数密码函数f f:16 07 20 21 29 12 28 1701 15 23 26 05 18 31 1002 08 24 14 32 27 03 0919 13 30 06 22 11 04 2520可以看出,可以看出,DESDES加密需要四个关键点:加密需要四个关键点:(1)IP(1)IP置换表和置换表和IPIP-1-1逆置换表逆置换表;(2
22、)(2)函数函数f;f;(3)(3)子密钥子密钥K Ki i。(4)S(4)S盒的工作原理。盒的工作原理。DES DES算法的实现步骤算法的实现步骤第第3 3章章 分组密码分组密码3.5 3.5 数据加密标准数据加密标准DESDES21密钥编排算法密钥编排算法根据密钥根据密钥K K来获得每轮中所使用的子密钥来获得每轮中所使用的子密钥K Ki i:第第3 3章章 分组密码分组密码密钥(56bit)PC-1K1C0置换选择1D0LS1LS1C1D1LS2LS2C2D2PC-2置换选择228bit28bit56bitK2PC-256bitLS16LS16C16D16K16PC-256bit48bit
23、48bit48bit循环左移循环左移1234567811222222091011121314151612222221密钥表的计算逻辑:密钥表的计算逻辑:轮数轮数2257 49 41 33 25 17 9 57 49 41 33 25 17 9 1 58 50 42 34 26 181 58 50 42 34 26 1810 2 59 51 43 25 27 10 2 59 51 43 25 27 19 11 3 60 52 44 36 19 11 3 60 52 44 36 63 55 47 39 31 23 15 63 55 47 39 31 23 15 7 62 54 46 38 30 2
24、2 7 62 54 46 38 30 22 14 6 61 53 45 37 14 6 61 53 45 37 29 29 21 13 5 28 20 12 4 21 13 5 28 20 12 4 14 17 11 24 1 5 14 17 11 24 1 5 3 28 15 6 21 3 28 15 6 21 101023 19 12 4 26 8 23 19 12 4 26 8 16 7 27 20 13 216 7 27 20 13 241 52 31 37 47 5541 52 31 37 47 5530 40 51 45 33 48 30 40 51 45 33 48 44 49
25、39 56 34 44 49 39 56 34 535346 42 50 36 29 46 42 50 36 29 3232置换选择置换选择PC-1 PC-1 置换选择置换选择PC-2PC-2子密钥生成器子密钥生成器-置换选择置换选择第第3 3章章 分组密码分组密码3.5 3.5 数据加密标准数据加密标准DESDES23第第3 3章章 分组密码分组密码 DES DES结构结构 3.5 3.5 数据加密标准数据加密标准DESDES24第第3 3章章 分组密码分组密码3.4.2 DES3.4.2 DES的安全性分析的安全性分析 DESDES算法正式公开发表以后,引起了一场激烈的争论。算法正式公开发
26、表以后,引起了一场激烈的争论。19771977年年DiffieDiffie和和HellmanHellman提出了制造一个每秒能测试提出了制造一个每秒能测试106106个密钥的大规模芯片,造价昂贵个密钥的大规模芯片,造价昂贵19971997年年1 1月月2828日,美国的日,美国的RSARSA公司在互联网上开展了一公司在互联网上开展了一项名为项名为“密钥挑战密钥挑战”的竞赛,悬赏一万美元,破解一的竞赛,悬赏一万美元,破解一段用段用5656比特密钥加密的比特密钥加密的DESDES密文。密文。19971997年年6 6月月1717日日RockeRocke和志愿者们成功地找到了密钥,在计算机上公和志愿
27、者们成功地找到了密钥,在计算机上公布了明文:布了明文:“Strong cryptography makes the Strong cryptography makes the world a safer placeworld a safer place”。25第第3 3章章 分组密码分组密码3.5.3 3.5.3 三重三重DESDES为为了了增增强强DESDES算算法法的的安安全全性性,人人们们提提出出了了许许多多DESDES的的改改进进方方案案。其其中中,称称为为三三重重DESDES的的多多重重加加密密算算法法是是DESDES的一个重要的改进算法。的一个重要的改进算法。DES解密DES加密D
28、ES加密DES加密DES解密DES解密明文M密文CK1K2K3加密26第第3 3章章 分组密码分组密码3.5 3.5 高级加密标准高级加密标准AESAESAESAES是是DESDES的替代者。的替代者。19971997年年9 9月月1212日,日,NISTNIST发布了发布了征集算法的正式公告,要求征集算法的正式公告,要求AESAES具有具有128128比特的分组长比特的分组长度,并支持度,并支持128128、192192和和256256比特的密钥长度,而且要求比特的密钥长度,而且要求AESAES要能在全世界范围内免费使用。要能在全世界范围内免费使用。20002000年年1010月月2 2日,
29、日,RijndaelRijndael算法被选择为高级加密算法被选择为高级加密标准。标准。AESAES的候选算法根据以下三条主要原则进行评判的候选算法根据以下三条主要原则进行评判 安全性安全性 代价代价 算法与实现特性算法与实现特性273.5.1 AES3.5.1 AES算法的数学基础算法的数学基础 AES中的运算是按字节的,并把一个字节看成是系数在有限域GF(2)上的次数小于8的多项式(即把一个字节看成是有限域GF(28)中的一个元素)。一、有限域GF(28)可以把出b7b6b5b4b3b2b1b0构成的一个字节看成是系数在(0,1)中取值的多项式:b7 x7+b6 x6+b5 x5+b4 x
30、4+b3 x3+b2 x2+b1 x+b0 如57(01010111)可写成:x6+x4+x2+x+1第第3 3章章 分组密码分组密码281.1.多项式加法多项式加法 在多项式表示中,两个元素的和是一个多项式,其系数是两个元素的对应系数的模2加(即异或)。例如:“57”和“83”的和为:5783D4,或者采用其多项式记法:5701010111 x6+x4+x2+x+1 83 10000011 x7+x+1 (x6+x4+x2+x+1)+(x7+x+1)x7+x6+x4+x2 11010100 D4显然,该加法与简单的以字节为单位的比特异或是一致的。0101011110000011 110101
31、002.2.多项式乘法多项式乘法 有限域GF(28)中两个元素的乘法为模2元域GF(2)上的一个8次不可约多项式的多项式乘法。对于AES这一8次不可约多项式为例:m(x)=x8+x4+x3+x+1 用十六进制表示为11B。第第3 3章章 分组密码分组密码29 【例】计算:57 83=?(x6+x4+x2+x+1)(x7+x+1)=x13+x11+x9+x8+x7+x7+x5+x3+x2+x+x6+x4+x2+x+1 =x13+x11+x9+x8+x6+x5+x4+x3+1而:(x13+x11+x9+x8+x6+x5+x4+x3+1)mod m(x)=(x13+x11+x9+x8+x6+x5+x
32、4+x3+1)mod(x8+x4+x3+x+1);计算时按降幂排 =x7+x6+1所以:(x6+x4+x2+x+1)(x7+x+1)=x7+x6+1 (多项式表示)01010111 10000011=11000001 (2进制表示)57 83=C1 (16进制表示)第第3 3章章 分组密码分组密码303.x3.x乘法乘法考虑用 x 乘以多项式B(x):(b7b6b5b4b3b2b1b0)B(x)b7 x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0 x B(x)b7 x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0 x将上面的结果模m(x)求余就得到x
33、 B(x)。如果 b7 0,则:x B(x)b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0 x mod(x8+x4+x3+x+1)即所得结果字节为:即所得结果字节为:(b(b6 6b b5 5b b4 4b b3 3b b2 2b b1 1b b0 00)0)如果 b7 1,则:x B(x)x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0 x mod(x8+x4+x3+x+1)=x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0 x+(x8+x4+x3+x+1)1 =b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0 x
34、+(x4+x3+x+1)即所得结果字节为:即所得结果字节为:(b(b6 6b b5 5b b4 4b b3 3b b2 2b b1 1b b0 00)(00011011)0)(00011011)所以,x B(x)=(b6b5b4b3b2b1b00);b7 0 (b6b5b4b3b2b1b00)(00011011);b7 1第第3 3章章 分组密码分组密码31THANK YOUSUCCESS2024/3/16 周六31可编辑32第第3 3章章 分组密码分组密码例例1 1:f(x)=xf(x)=x6 6+x+x4 4+x+x2 2+x+1,g(x)=x+x+1,g(x)=x7 7+x+1,m(x)
35、=x+x+1,m(x)=x8 8+x+x4 4+x+x3 3+x+1+x+1,求,求f(x)*g(x)modf(x)*g(x)modm(x)m(x)求求5757*8383现在我们用二进制运算的方法来计算,即(现在我们用二进制运算的方法来计算,即(0101011101010111)*(10000011).*(10000011).首先要求出首先要求出x x幂乘幂乘0101011101010111的中间结果:的中间结果:(01010111)*(00000010)=(10101110)01010111)*(00000010)=(10101110)(01010111)*(00000100)(010101
36、11)*(00000100)=(10101110)*(00000010)=(01011100)(00011011)=(01000111)=(10101110)*(00000010)=(01011100)(00011011)=(01000111)(01010111)*(00001000)=(10001110)(01010111)*(00001000)=(10001110)(01010111)*(00010000)=(00011100)(00011011)=(00000111)(01010111)*(00010000)=(00011100)(00011011)=(00000111)(0101011
37、1)*(00100000)=(00001110)(01010111)*(00100000)=(00001110)(01010111)*(01000000)=(00011100)(01010111)*(01000000)=(00011100)(01010111)*(10000000)=(00111000)(01010111)*(10000000)=(00111000)所以:所以:(01010111)*(10000011)=(01010111)*(00000001)+(01010111)*(10000011)=(01010111)*(00000001)+(0000001000000010)+(10
38、000000)10000000)=(01010111)=(01010111)(10101110)(10101110)(00111000)=(11000001)(00111000)=(11000001)1100000111000001等价于等价于x x7 7+x+x6 6+1+133第第3 3章章 分组密码分组密码二、二、GFGF(2 28 8)域上的多项式)域上的多项式一个(4字节)字可以看作是GF(28)域上的多项式,每个字对应于一个次数小于4的多项式。1.1.多项式加法多项式加法多项式加法通过对应的系数简单相加可以实现。2.2.多项式乘法多项式乘法 GF(2 28 8)域上的多项式乘法为模
39、 M(x)=x4+1的乘法。343.5.2 AES3.5.2 AES算法总体描述算法总体描述轮数、密钥长度的关系轮数、密钥长度的关系35 AES 算法加密的实现1.1.明文分组和密钥的组织排列方式明文分组和密钥的组织排列方式 01234567891011121314150481215913261014371115Fig 2.1.Fig 2.1.以明文分组为以明文分组为128128bitsbits为例组成的阵为例组成的阵列列3.5.2 AES3.5.2 AES算法总体描述算法总体描述36AESAES加解密流程图加解密流程图1 1给定一个明文给定一个明文M M,将,将轮密钥与轮密钥与M M异或(称
40、为异或(称为轮密钥加轮密钥加););2 2对前对前9 9轮中的每轮中的每轮,轮,用用s s盒进行一次盒进行一次字节代字节代换换操作;对替换的结果操作;对替换的结果做做行移位行移位操作;再对结操作;再对结果做果做列混淆列混淆变换;然后变换;然后进行进行(轮密钥加轮密钥加操作操作3 3在最后一轮中依次在最后一轮中依次进行进行字节代换字节代换,行移位行移位,列混淆列混淆操作。操作。4 4得到密文得到密文C C。3.5.2 AES3.5.2 AES算法总体描述算法总体描述37AESAES特点特点3.5.2 AES3.5.2 AES算法总体描述算法总体描述38每一轮加密的过程每一轮加密的过程中间态数据有
41、的地方也被记为中间态数据有的地方也被记为StateState3.5.2 AES3.5.2 AES算法总体描述算法总体描述39 AES 算法加密的实现1.1.明文分组和密钥的组织排列方式明文分组和密钥的组织排列方式 01234567891011121314150481215913261014371115Fig 2.1.Fig 2.1.以明文分组为以明文分组为128128bitsbits为例组成的阵为例组成的阵列列3.5.2 AES3.5.2 AES算法总体描述算法总体描述401 1 字节代换(字节代换(SubBytesSubBytes)S S盒的替换操作盒的替换操作3.5.3 3.5.3 算法的
42、基本变换算法的基本变换411 1 字节代换(字节代换(SubBytesSubBytes)S S盒的替换表盒的替换表3.5.3 3.5.3 算法的基本变换算法的基本变换421 1 字节代换(字节代换(SubBytesSubBytes)设输入字节为 A=(a0 a1a2 a3 a4 a5 a6 a7),(1)先将该字节A变换为有限域GF(2)中的乘法逆元素T。T=A-1 mod m(x);m(x)=x8+x4+x3+x+1 即 AT TA 1mod m(x)(2)对X作GF(2)上的仿射变换:Y=M T BMTB3.5.3 3.5.3 算法的基本变换算法的基本变换43S S盒字节代换举例盒字节代换
43、举例3.5.3 3.5.3 算法的基本变换算法的基本变换442 2、行移位变换、行移位变换 ShiftRows()ShiftRows():在行移位(ShiftRows)变换中,状态矩阵中的每一行将以字节为单位,循环右移不同的位移量。循环左移1字节循环左移2字节循环左移3字节第0行不变453 3、列混合变换、列混合变换 MixColumns()MixColumns():列混合变换MixColumns()对一个状态逐列进行变换,它将一个状态的每一列视为有限域GF(28)上的一个多项式。在列混合变换中,每一列所表示的多项式将乘以一个固定的多项式C(x),C(x)=03 x3+01 x2+01x+02
44、 对应4字节向量为(03 01 01 02),模多项式为(x4+1)。46列混淆的数学基础列混淆的数学基础 b b0 0 c c0 0 c c3 3 c c2 2 c c1 1 a a0 0 b b1 1 =c c1 1 c c0 0 c c3 3 c c2 2 a a1 1 b b2 2 c c2 2 c c1 1 c c0 0 c c3 3 a a2 2 b b3 3 c c3 3 c c2 2 c c1 1 c c0 0 a a3 347列混淆的数学基础列混淆的数学基础 b b0 0 02 03 01 02 03 01 01 01 a a0 0 b b1 1 =0101 02 02 03
45、 01 03 01 a a1 1 b b2 2 01 0101 01 02 02 03 03 a a2 2 b b3 3 03 01 01 03 01 01 02 02 a a3 3AESAES中,中,48AddRoundKey(AddRoundKey(轮密钥加轮密钥加)将轮密钥与中间态数据(将轮密钥与中间态数据(StateState)按比特异或。)按比特异或。轮密钥是通过轮密钥是通过Key ScheduleKey Schedule过程从密码密钥中得到的,过程从密码密钥中得到的,轮密钥长度等于分组长度。轮密钥长度等于分组长度。K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2
46、,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3B0,0B0,1B0,2B0,3B1,0B1,1B1,2B1,3B2,0B2,1B2,2B2,3B3,0B3,1B3,2B3,3K K3,3 3,3 K K3,3 3,3 B B3,3 3,3 (mod 2)(mod 2)AESAES每轮密钥加操作,需要每轮密钥加操作,需要128bit128bit(1616字字节,节,4 4个字)的轮密钥。算法中有个字)的轮密钥。算法中有1111次轮次轮密钥操作。故密钥操作。
47、故AESAES算法共需要算法共需要4444个字长度个字长度的密钥。的密钥。49密钥扩展密钥扩展K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3K0K1K2K3K0K1K2K3K4K5K6K7+K4K4的生成:下页的生成:下页K5K5、K6K6、K7K7的生成:如右的生成:如右50K0K1K2K3K4K5K6K7ByteByteSubstitutionSubstitutionByteRotKteByteRotKte+RconRconK4K4的生成的生成51W Wi-4i-4W Wi-3i-3W Wi-2i-2W Wi
48、-1i-1W Wi iByteByteSubstituionSubstituionByteByteRotKteRotKte+RconsRcons+Key expKnsion Key expKnsion 4 =4 =i 4(Rnd+i 4(Rnd+1)1)i mod 4=0i mod 4=0i mod 4!=0i mod 4!=052轮密钥选取轮密钥选取K0K1K2K3K4K5K6K7K8K9K10K11K12轮密钥轮密钥0 0轮密钥轮密钥1 1轮密钥轮密钥2 253第第3 3章章 分组密码分组密码3.6 3.6 分组密码的工作模式分组密码的工作模式 DESAESDESAES算法只解决了如何对一
49、个算法只解决了如何对一个6464128128比特的明比特的明文分组进行加密保护的问题文分组进行加密保护的问题,对于比特数不等于对于比特数不等于6464 128128的明文如何加密的明文如何加密,并不关心。这个问题并不关心。这个问题,就由分就由分组密码的工作模式解决。组密码的工作模式解决。54第第3 3章章 分组密码分组密码3.6 3.6 分组密码的工作模式分组密码的工作模式 分组密码的分组密码的“工作模式工作模式”是指以某个分是指以某个分组密码算法为基础组密码算法为基础,解决对任意长度的明文的解决对任意长度的明文的加密问题的方法。加密问题的方法。1电码本(ECB)模式 2密码分组链接(CBC)
50、模式 3密码反馈(CFB)模式 4输出反馈(OFB)模式 5.计数器模式这五种工作模式适用于不同的应用需求这五种工作模式适用于不同的应用需求.553.6 3.6 分组密码的工作模式分组密码的工作模式3.6.13.6.1电子密码本模式(电子密码本模式(ECBECB)56第第3 3章章 分组密码分组密码3.6 3.6 分组密码的工作模式分组密码的工作模式3.6.13.6.1电子密码本模式(电子密码本模式(ECBECB)特点特点 :(1)(1)一种最简易的工作方式;一种最简易的工作方式;(2)(2)相同密钥作用下,在相同的明文加密后将产生相同密钥作用下,在相同的明文加密后将产生相同的密文相同的密文