第7讲分组加密算法-课件

上传人:仙*** 文档编号:241647652 上传时间:2024-07-12 格式:PPT 页数:73 大小:971KB
返回 下载 相关 举报
第7讲分组加密算法-课件_第1页
第1页 / 共73页
第7讲分组加密算法-课件_第2页
第2页 / 共73页
第7讲分组加密算法-课件_第3页
第3页 / 共73页
点击查看更多>>
资源描述
第7讲 分组密码o它将明文划分成固定的 n 比特的数据组,然后以组为单位,在密钥的控制下进行一系列的线性或非线性的变化而得到密文。这就是分组密码。o分组密码一次变换一组数据。o分组密码算法的一个重要特点就是:当给定一个密钥后,若明文分组相同,那么所变换出密文分组也相同。o分组密码的一个重要优点是不需要同步 分组密码体制 输入输出加密算法密钥明文输入输出解密算法密钥明文n bitn bitn bitn bit密文密文分组密码的一般设计原理o分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。加密算法加密算法解密算法解密算法 明文明文密文密文原来的明文原来的明文(x0,,xn-1)(k0,,kn-1)密钥密钥k=(k0,,kn-1)密钥密钥k=(x0,,xn-1)(y0,,yn-1)分组密码的一般设计原理o设计目标n在密钥控制下,从一个足够大、足够好的置换子集中简单迅速地选出一个置换,对当前输入的明文数字组进行加密变换;o要求:n1 分组长度足够大,防止穷举攻击;n2 密钥空间足够大,但不能太长,以便于密钥的管理;n3 算法要足够复杂,充分实现明文和密钥的扩散;没有简单的关系可寻DES对称加密技术oDES(Data Encryption Standard)算法n是一种用56位密钥来加密64位数据的方法。o发明人:nIBM公司 W.Tuchman和C.Meyer.o基础:n1967年美国Horst Feistel提出的理论;o产生:n美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告,最终选定DES。DESo采用分组密码体制;o用56bit密钥来加密64bit数据的方法;oDES要达到的目标有:n提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;n具有复杂性,使得破译的开销超过可能获得的利益;nDES的安全性不依赖于算法的保密,安全性仅以加密密钥的保密为基础;n在实现上可行、经济;DES算法的原理 oDES算法的入口参数有三个:Key、Data、Mode。o其中:nKey为8个字节共64位,是DES算法的工作密钥;nData也为8个字节64位,是要被加密或被解密的数据;nMode为DES的工作方式有两种:加密或解密。DES算法原理oDES算法的工作原理:n如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;n如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。DES算法的实现步骤o第一步:变换明文。n对给定的64位比特的明文x,首先通过一个置换IP表来重新排列x,从而构造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的后32位。o第二步:n按照规则迭代。规则为nLi=Ri-1nRi=Li-1f(Ri-1,Ki)(i=1,2,316)n经过第一步变换已经得到L0和R0的值,其中符号表示的数学运算是异或,f表示一种置换,由S盒置换构成,Ki是一些由密钥编排函数产生的比特块。f和Ki将在后面介绍。o第三步:n对L16R16进行交换得到R16L16n对R16L16利用IP-1作逆置换,就得到了密文y。DES加密过程输入输入6464位比特明文位比特明文在密钥控制下在密钥控制下1616轮迭代轮迭代初始置换初始置换IPIP置换表置换表交换左右交换左右32bit32bitIPIP逆置换表逆置换表输出输出6464位比特密文位比特密文DES算法的实现步骤o可以看出,DES加密需要四个关键点:o(1)IP置换表和IP-1逆置换表;o(2)函数f;o(3)子密钥Ki。o(4)S盒的工作原理。(1)IP置换表和IP-1逆置换表58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 740 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25输入的第58位作为第1位输入的第50位作为第1位输入的第42位作为第1位输入的第40位作为第1位输入的第8位作为第1位输入的第42位作为第1位IP与IP-1互逆M=(m1,m2,.)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2425 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4849 50 51 52 53 54 55 561 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2425 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4849 50 51 52 53 54 55 56IP(M)=(m58,m50 )=(m1 1,m1 2,.)58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 161 58 45 37 29 21 13 563 55 47 39 31 23 15 740 8 48 16 56 24 64 32 39 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 29 36 4 44 12 52 20 60 2834 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25IPIP-1DES的一轮迭代Li-1(32 bit)Ri-1(32 bit)选择扩展运算选择扩展运算 E盒盒48bit寄存器寄存器48bit寄存器寄存器选择压缩运算选择压缩运算 S盒盒32bit寄存器寄存器置换运算置换运算 PRi=Li-1f(Ri-1,ki)(32 bit)(32 bit)Li=Ri-1轮开始:轮开始:64bit分成分成左右两半左右两半子密钥子密钥Ki(48 bit)扩展置换 E盒(Expand Box)o将输入的32bit块扩展到48bit的输出块;o48bit的输出块再分成8个6bit块;01 02 03 0405 06 07 0809 10 11 1213 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3201 02 03 0405 06 07 0809 10 11 1213 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3232040812162024280509131721252901扩展置换函数扩展置换函数E扩展位扩展位扩展位扩展位固定位固定位压缩替代 S盒(Substitution Box)o48bit块通过S盒压缩成32bit块48bit寄存器寄存器32bit寄存器寄存器 S1S2S3S4S5S6S7S86bit4bit共共8个个S盒盒S盒S1盒14 4 13 1 2 15 11 8 3 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 13S2盒15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 103 13 4 7 15 2 8 14 12 0 1 10 6 9 11 50 14 7 11 10 4 13 1 5 8 12 6 9 3 2 1513 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9o作用:将6个输入位映射为4个输出位;o方法:若定义a1a2a3a4a5a6,将a1a6组成2位二进制数,对应S盒表中的行号;将a2a3a4a5组成一个4位的2进制数,对应S盒表中的列号;映射到交叉点的数据就是该S盒的输出。o输入为101011的输出是?S盒S3盒10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 813 7 0 9 3 4 6 10 2 8 5 14 12 11 15 113 6 4 9 8 15 3 0 11 1 2 12 5 10 14 71 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12S4盒7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 1513 8 11 5 6 15 0 3 4 7 2 12 1 10 14 910 6 9 0 12 11 7 13 15 1 3 14 5 2 8 43 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14S5盒2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 914 11 2 12 4 7 13 1 5 0 15 10 3 9 8 64 2 1 11 10 13 7 8 15 9 12 5 6 3 0 1411 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3S盒S6盒12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 1110 15 4 2 7 12 9 5 6 1 13 14 0 11 3 89 14 15 5 2 8 12 3 7 0 4 10 1 13 11 64 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13S7盒4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 113 0 11 7 4 9 1 10 14 3 5 12 2 15 8 61 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12S8盒13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 15 13 8 10 3 7 4 12 5 6 11 0 14 9 27 11 4 1 9 12 14 2 0 6 10 13 15 3 5 82 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11S盒oDES中其它算法都是线性的,而S盒运算则是非线性的,S盒不易于分析,它提供了更好的安全性;所以S盒是算法的关键所在;o提供了密码算法所必需的混乱作用;o改变S盒的一个输入位至少要引起两位的输出改变;置换函数P(Permutaion)oP置换的目的是:提供雪崩效应;o明文或密钥的一点小的变动都引起密文的较大变化;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 25DES中子密钥的生成64bit64bit密钥密钥置换选择置换选择1 1C C0 0(28bit28bit)D D0 0(28bit28bit)循环左移循环左移循环左移循环左移C C(28bit28bit)C C(28bit28bit)循环左移循环左移循环左移循环左移置换选择置换选择2 2置换选择置换选择2 2循环左移循环左移1234567811222222091011121314151612222221密钥表的计算逻辑:密钥表的计算逻辑:C Ci i(28bit28bit)D Di i(28bit28bit)(56bit(56bit)(56bit(56bit)K Ki i K K1 1 (48bit)(48bit)(48bit)(48bit)(56bit(56bit)置换选择-1 置换选择-2 57 49 41 33 25 17 9 1 58 50 42 34 26 1810 2 59 51 43 25 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 14 17 11 24 1 5 3 28 15 6 21 1023 19 12 4 26 8 16 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 48 44 49 39 56 34 5346 42 50 36 29 32置换选择置换选择1 置换选择置换选择2多重DES双重DES加密加密加密加密K1K2PC加密加密加密加密K2K1CP双重双重DES加密逻辑加密逻辑双重双重DES解密逻辑解密逻辑多重DES三重DES加密加密解解密密K1PC三重三重DES加密逻辑加密逻辑三重三重DES解密逻辑解密逻辑K2解密解密K1BA解密解密加加密密K1CPK2解密解密K1BADES算法的安全性 oDES算法具有比较高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。o而56位长的密钥的穷举空间为256,如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近228.5年的时间。of函数(S盒)的设计原理未知;DES算法的程序实现o根据DES算法的原理,可以方便的利用C语言实现其加密和解密算法。o在VC+6.0中新建基于控制台的Win32应用程序,算法如程序DES1.cpp所示。数据加密标准 DESo数据加密标准 DES 属于常规密钥密码体制,是一种分组密码。o在加密前,先对整个明文进行分组。每一个组长为 64 bit。o然后对每一个 64 bit 二进制数据进行加密处理,产生一组 64 bit 密文数据。o最后将各组密文串接起来,即得出整个的密文。o使用的密钥为 64 bit(实际密钥长度为 56 bit,有 8 bit 用于奇偶校验)。DES 加密标准 L0R0L1=R0IPL2=R1L15=R14R1=L0 f(R0,K1)R2=L1 f(R1,K2)R15=L14 f(R14,K15)L16=R15R16=L15 f(R15,K16)IP1fff输出密文 Y(64 bit)明文 X(64 bit)输入K16(48 bit)K2(48 bit)K1(48 bit)X0 的左半边 (32 bit)X0(64 bit)X0 的右半边 (32 bit)R16L16(64 bit)DES 的明显缺点 oDES 实际上就是一种单字符替代,而这种字符的长度是 64 bit。o也就是说,对于 DES 算法,相同的明文就产生相同的密文。这对 DES 的安全性来说是不利的。o为了提高 DES 的安全性,可采用加密分组链接的方法。加密分组的链接 X0Y0X1Y1X2Y2X3Y3X0Y0X1Y1X2Y2X3Y3初始向量初始向量密钥密钥明文明文密文密文加密解密EEEEDDDDDES 的保密性oDES 的保密性仅取决于对密钥的保密,而算法是公开的。尽管人们在破译 DES 方面取得了许多进展,但至今仍未能找到比穷举搜索密钥更有效的方法。oDES 是世界上第一个公认的实用密码算法标准,它曾对密码学的发展做出了重大贡献。o目前较为严重的问题是 DES 的密钥的长度。o现在已经设计出来搜索 DES 密钥的专用芯片。三重 DES(Triple DES)o三重 DES 使用两个密钥,执行三次 DES 算法。下图中的方框 E 和 D 分别表示执行加密和解密算法。因此加密时是 E-D-E,解密时是 D-E-D。EDEK1K2K1明文密文DEDK1K2K1密文明文加密解密高级加密标准(AES)o高级加密标准AES高级加密标准(AES)oAES的起源的起源oAES的设计原则的设计原则oAES算法描述算法描述1.AES的起源的起源o2019年年9月,月,NIST征集征集AES方案,以替代方案,以替代DES。o2019年年8月,以下月,以下5个方案成为最终候选方个方案成为最终候选方案:案:MARS,RC6,Rijndael,Serpent,Twofish。o2000年年10月,由比利时的月,由比利时的Joan Daemen和和Vincent Rijmen提出的算法提出的算法最终胜出。(最终胜出。(Rijndael 读成读成Rain Doll。)。)oesat.kuleuven.ac.be/rijmen/rijndael/2.AES的设计原则的设计原则o能抵抗所有已知的攻击;能抵抗所有已知的攻击;o在各种平台上易于实现,速度快;在各种平台上易于实现,速度快;o设计简单。设计简单。Rijndael是一个分组密码算法,其是一个分组密码算法,其分组长度和密钥长度相互独立,都可以分组长度和密钥长度相互独立,都可以改变。改变。分组长度分组长度(bit)128192256密钥长度密钥长度(bit)128192256表表 1.分组长度和密钥长度的不同取值分组长度和密钥长度的不同取值3.AES 算法的一般描述算法的一般描述Rijndael Round的构成的构成ByteSubstitutionByteRotationMixColumn+RoundKey一般的轮变换一般的轮变换ByteSubstitutionByteRotation+RoundKey最后一轮的轮变换最后一轮的轮变换3.AES 算法加密部分的实现算法加密部分的实现明文分组和密钥的组织排列方式明文分组和密钥的组织排列方式 0 1 2 3 4 5 6 7 891011121314150481215913261014371115Fig 1.以明文分组为以明文分组为128bits为例组成的阵列为例组成的阵列04 81215 91326 101437 11150481216201591317212610141822371115192304812162024 2815913172125 29261014182226 30371115192327 31Fig 2.以明文分组(或密钥)为以明文分组(或密钥)为128bits、192bits、256bits为例组成的阵列为例组成的阵列 一些相关的的术语定义和表示一些相关的的术语定义和表示o状态(状态(State):):密码运算的中间结果称为状态。密码运算的中间结果称为状态。oState的表示:状态用以字节为基本构成元素的矩阵的表示:状态用以字节为基本构成元素的矩阵阵列来表示,该阵列有阵列来表示,该阵列有4行,列数记为行,列数记为Nb。Nb=分组长度(分组长度(bits)32 Nb可以取的值为可以取的值为4,6,8,对应的分组长度为,对应的分组长度为128,192,256 bits。o密码密钥(密码密钥(Cipher Key)的表示:)的表示:Cipher Key类似地用一个类似地用一个4行的矩阵阵列来表示,列数记为行的矩阵阵列来表示,列数记为Nk。Nk=密钥长度(密钥长度(bits)32 Nk可以取的值为可以取的值为4,6,8,对应的密钥长度为,对应的密钥长度为128,192,256 bits。Fig 3.当当Nb=6时的状态和时的状态和Nk=4时的密钥布局时的密钥布局a0,0a0,1a0,2a0,3a0,4a0,5a1,0a1,1a1,2a1,3a1,4a1,5a2,0a2,1a2,2a2,3a2,4a2,5a3,0a3,1a3,2a3,3a3,4a3,5Nb=6Block Length=192 bitsK0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3Nk=4Key Length=128 bitsFig 4.分组长度和密钥长度均为分组长度和密钥长度均为128 bits时的时的Rijndael加密算法框图加密算法框图Data/Key AdditionRnd0Rnd1Rnd8FinalRndKeyScheduleCipherTextKeyPlainText表表 2.轮数(轮数(Round)的不同取值)的不同取值轮数轮数(Round)Block Length=128Block Length=192Block Length=256Key Length=128101214Key Length=192121214Key Length=256141414用伪代码表示的用伪代码表示的Rijndael轮变换轮变换一般的轮变换一般的轮变换Round(State,RoundKey)ByteSubstitution;ByteRotation;MixColumn;AddRounKey;结尾轮变换结尾轮变换FinalRound(State,RoundKey)ByteSubstituion;ByteRotation;AddRoundKey;ByteSubstitution(字节替代字节替代)ByteSubstitution是一个非线性的字节替代,独立地在是一个非线性的字节替代,独立地在每个状态字节上进行运算。它包括两个变换。每个状态字节上进行运算。它包括两个变换。1.在有限域在有限域GF(28)上求乘法逆,上求乘法逆,00映射到它自身。映射到它自身。2.在在GF(2)上进行下面的仿射变换:上进行下面的仿射变换:y0 1 1 1 1 1 0 0 0 x0 0y1 0 1 1 1 1 1 0 0 x1 1y2 0 0 1 1 1 1 1 0 x2 1y3 0 0 0 1 1 1 1 1 x3 0y4 1 0 0 0 1 1 1 1 x4 0y5 1 1 0 0 0 1 1 1 x5 0y6 1 1 1 0 0 0 1 1 x6 1y7 1 1 1 1 0 0 0 1 x7 1Fig 6.ByteSubstitution该变换可以用一个该变换可以用一个256字节的表来实现字节的表来实现B0,0B0,1B0,2B0,3B1,0B1,1B1,2B1,3B2,0B2,1B2,2B2,3B3,0B3,1B3,2B3,3A0,0A0,1A0,2A0,3A1,0A1,1A1,2A1,3A2,0A2,1A2,2A2,3A3,0A3,1A3,2A3,3取逆取逆仿射变换仿射变换ByteRotation(字节移位字节移位)在在ByteRotation变换中,状态阵列的后变换中,状态阵列的后3行循环移位不行循环移位不同的偏移量。第同的偏移量。第1行循环移位行循环移位C1字节,第字节,第2行循环移位行循环移位C2字字节,第节,第3行循环移位行循环移位C3字节。字节。偏移量偏移量C1、C2、C3与分组长度与分组长度Nb有关,如下表所示:有关,如下表所示:NbC1C2C3412361238134Fig 7.ByteRotation04812159132610143711150481259131101426153711循环左移循环左移1字节字节循环左移循环左移2字节字节循环左移循环左移3字节字节MixColumn(列混合列混合)将状态的列看作是有限域将状态的列看作是有限域GF(28)上的多项式上的多项式a(x),与多,与多项式项式c(x)=03 x3+01 x2+01 x+02相乘相乘(模模x41)。令令b(x)=c(x)a(x),写成矩阵形式为:,写成矩阵形式为:b0 02 03 01 01 a0 b1 =01 02 03 01 a1 b2 01 01 02 03 a2 b3 03 01 01 02 a3Fig 8.MixColumn这一运算作用在每一列上这一运算作用在每一列上A0,0A0,1A0,2A0,3A1,0A1,1A1,2A1,3A2,0A2,1A2,2A2,3A3,0A3,1A3,2A3,3B0,0B0,1B0,2B0,3B1,0B1,1B1,2B1,3B2,0B2,1B2,2B2,3B3,0B3,1B3,2B3,3 C(X)2.4 AddRoundKey(轮密钥加轮密钥加)将轮密钥与状态按比特异或。轮密钥是通过将轮密钥与状态按比特异或。轮密钥是通过Key Schedule过程从密码密钥中得到的,轮密钥长度等于分组长度。过程从密码密钥中得到的,轮密钥长度等于分组长度。A0,0A0,1A0,2A0,3A1,0A1,1A1,2A1,3A2,0A2,1A2,2A2,3A3,0A3,1A3,2A3,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,3A3,3 K3,3 B3,3 (mod 2)Fig 7.Rijndael加密及解密的标准结构加密及解密的标准结构Block,Key Length=128 bitsPlaintext(128 bits)ByteSubstitutionMixColumnCiphertext(128 bits)K0Kii=10ByteRotationfor i=1 to 10Ciphertext(128 bits)K10InvMixColumnInvByteRotationInvByteSubstitution KiPlaintext(128 bits)i=9for i=9 to 0加密加密解密解密用伪代码表示的用伪代码表示的Rijndael加密算法加密算法Rijndael(State,CipherKey)KeyExpansion(CipherKey,ExpandedKey);AddRoundKey(State,ExpandedKey);For(i=1;iRnd;i+)Round(State,ExpandedKey+Nb*i);FinalRound(State,ExpandedKey+Nb*Rnd);提前进行密钥扩展后的提前进行密钥扩展后的Rijndael加密算法描述加密算法描述Rijndael(State,ExpandedKey)AddRoundKey(State,ExpandedKey);For(i=1;iRnd;i+)Round(State,ExpandedKey+Nb*i);FinalRound(State,ExpandedKey+Nb*Rnd);AES 的密钥调度的密钥调度 密钥调度包括两个部分:密钥扩展和轮密钥选取。密钥调度包括两个部分:密钥扩展和轮密钥选取。o密钥密钥bit的总数分组长度的总数分组长度(轮数(轮数Round1)例)例如当分组长度为如当分组长度为128bits和轮数和轮数Round为为10时,时,轮密钥长度为轮密钥长度为128(101)1408bits。o将密码密钥扩展成一个扩展密钥。将密码密钥扩展成一个扩展密钥。o从扩展密钥中取出轮密钥:第一个轮密钥由扩展密从扩展密钥中取出轮密钥:第一个轮密钥由扩展密钥的第一个钥的第一个Nb个个4字节字,第二个圈密钥由接下来字节字,第二个圈密钥由接下来的的Nb个个4字节字组成,以此类推。字节字组成,以此类推。密钥扩展密钥扩展K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3K0K1K2K3K0K1K2K3K4K5K6K7+K0K1K2K3K4K5K6K7ByteSubstitutionByteRotate+RconWi-4Wi-3Wi-2Wi-1WiByteSubstituionByteRotate+Rcons+Key expansion4 =i 4(Rnd+1)i mod 4=0i mod 4!=0 轮密钥选取轮密钥选取K0K1K2K3K4K5K6K7K8K9K10K11K12轮密钥轮密钥0轮密钥轮密钥1轮密钥轮密钥2AES的解密算法o解密算法与加密算法不同o每个阶段均可逆,因此易证解密函授的确可以恢复明文o见图5.7,P.121AES 算法的设计原理算法的设计原理oGF(28)中乘法使用的多项式是中乘法使用的多项式是8次不可约多项式列次不可约多项式列表中的第一个多项式。表中的第一个多项式。oByteSubstitution(称为(称为S盒)在设计时考虑到盒)在设计时考虑到抵抗差分密码分析、线性密码分析的要求,应满足抵抗差分密码分析、线性密码分析的要求,应满足以下条件:以下条件:1.可逆性;可逆性;2.输入比特的线性组合与输入比特的线性组合与输出比特的组合之间的最大非平凡相关性的极小化;输出比特的组合之间的最大非平凡相关性的极小化;3.异或差分表中最大非平凡值的极小化;异或差分表中最大非平凡值的极小化;4.GF(28)中代数表示的复杂性;中代数表示的复杂性;5.描述的简单性。描述的简单性。满足前满足前3条准则的条准则的S盒的构造方法已被给出,盒的构造方法已被给出,AES的作者从众多候选构造中选择将的作者从众多候选构造中选择将x映射到它的映射到它的逆的逆的S盒。该映射过于简单,为了抵抗插入攻击,盒。该映射过于简单,为了抵抗插入攻击,加入仿射变换:加入仿射变换:b(x)=(x7+x6+x2+x)+a(x)(x7+x6+x5+x4+1)mod x8+1模数多项式模数多项式x8+1选择为可能是最简单的模数多项式。选择为可能是最简单的模数多项式。可以找到其它的可以找到其它的S盒满足以上准则。盒满足以上准则。oMixColumn变换符合以下准则:变换符合以下准则:1.可逆性;可逆性;2.GF(2)中的线性性;中的线性性;3.适当的扩散性能;适当的扩散性能;4.8位位处理器上实现速度快;处理器上实现速度快;5.对称性;对称性;6.描述的简单描述的简单性。选择模数多项式性。选择模数多项式x41可满足准则可满足准则2、5、6。准。准则则1、3、4要求系数的值要小,故选要求系数的值要小,故选00、01、02、03。oByteRotation符合以下准则:符合以下准则:1.4个位移量互个位移量互不相同且不相同且C00;2.能抵抗差分截断攻击;能抵抗差分截断攻击;3.能抗能抗Square攻击;攻击;4.简单。简单。从满足准则从满足准则2和准和准则则3出发,出发,AES的作者选取了最简单的组合。的作者选取了最简单的组合。与一些其它算法的比较:与一些其它算法的比较:o与与DES相比:相比:1.无无DES中的弱密钥和半弱密钥;中的弱密钥和半弱密钥;2.紧凑的设计使得没有足够的空间来隐藏陷门。紧凑的设计使得没有足够的空间来隐藏陷门。o与与IDEA相比:相比:无无IDEA中的弱密钥。中的弱密钥。o具有扩展性:密钥长度可以扩展到为具有扩展性:密钥长度可以扩展到为32bits倍数倍数的任意密钥长度,分组长度可以扩展到为的任意密钥长度,分组长度可以扩展到为64bits倍数的任意分组长度。圈数和循环移位偏移量作为倍数的任意分组长度。圈数和循环移位偏移量作为参数,要重新定义。参数,要重新定义。关于有限域G(28)的一些解释oG(28)可看为8位二进制比特串的集合o直观上有限域的运算可为密码算法的实现带来方便o只有满足一些规则后,G(28)才是有限域(参加第4章,p.95)G(28)上的运算o加法n按位异或o乘法n可通过对多个中间结果的移位运算和异或一个特定的比特串(比如00011011)实现。CryptanalysisoSome common symmetric-key cryptographic algorithms.xiexie!xiexie!谢谢!谢谢!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!