云计算与安全_密码学基础_高级加密标准(AES)_第1页
云计算与安全_密码学基础_高级加密标准(AES)_第2页
云计算与安全_密码学基础_高级加密标准(AES)_第3页
云计算与安全_密码学基础_高级加密标准(AES)_第4页
云计算与安全_密码学基础_高级加密标准(AES)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高级加密标准高级加密标准(AES)qAES的起源qAES的设计原则qAES算法描述1. AES的起源q1997年9月,NIST征集AES方案,以替代DES。q1999年8月,以下5个方案成为最终候选方案:MARS, RC6, Rijndael, Serpent, Twofish。q2000年10月,由比利时的Joan Daemen和Vincent Rijmen提出的算法最终胜出。( Rijndael 读成Rain Doll。)qhttp:/www.esat.kuleuven.ac.be/rijmen/rijndael/2. AES的设计原则q能抵抗所有已知的攻击;q在各种平台上易于实现,速度快

2、;q设计简单。 Rijndael是一个分组密码算法,其是一个分组密码算法,其分组长度和密钥长度相互独立,都可以分组长度和密钥长度相互独立,都可以改变。改变。分组长度(bit)128192256密钥长度(bit)128192256表表 1. 分组长度和密钥长度的不同取值分组长度和密钥长度的不同取值AES Encryption Process3. AES 算法的一般描述Rijndael Round的构成的构成ByteSubstitutionByteRotationMixColumn+RoundKey一般的轮变换一般的轮变换ByteSubstitutionByteRotation+RoundKey最

3、后一轮的轮变换最后一轮的轮变换3. AES 算法加密部分的实现明文分组和密钥的组织排列方式明文分组和密钥的组织排列方式 0 1 2 345 6 78910 11 12 1314150481215913261014371115Fig 1. 以明文分组为以明文分组为128bits为例组成的阵列为例组成的阵列04 81215 91326 10 1437 11 1504812 162015913 1721261014 1822371115 1923048121620242815913172125292610141822263037111519232731Fig 2. 以明文分组(或密钥)为以明文分组(

4、或密钥)为128bits、192bits 、256bits为例组成的阵列为例组成的阵列 一些相关的的术语定义和表示q状态(State):密码运算的中间结果称为状态。qState的表示:状态用以字节为基本构成元素的矩阵阵列来表示,该阵列有4行,列数记为Nb。 Nb=分组长度(bits) 32 Nb可以取的值为4,6,8,对应的分组长度为128, 192, 256 bits。q密码密钥(Cipher Key)的表示: Cipher Key类似地用一个4行的矩阵阵列来表示,列数记为Nk。 Nk=密钥长度(bits)32 Nk可以取的值为4,6,8,对应的密钥长度为128, 192, 256 bits

5、。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加密算法框图加

6、密算法框图Data / Key AdditionRnd0Rnd1Rnd8FinalRndKeyScheduleCipherTextKeyPlainText表表 2. 轮数(轮数(Round)的不同取值的不同取值轮数(Round)Block Length=128Block Length=192Block Length=256Key Length=128101214Key Length=192121214Key Length=256141414用伪代码表示的Rijndael轮变换一般的轮变换一般的轮变换Round(State, RoundKey) ByteSubstitution; ByteRot

7、ation; MixColumn; AddRounKey; 结尾轮变换结尾轮变换FinalRound(State, RoundKey) ByteSubstituion; ByteRotation; AddRoundKey; ByteSubstitution(字节替代) ByteSubstitution是一个非线性的字节替代,独立地在是一个非线性的字节替代,独立地在每个状态字节上进行运算。它包括两个变换。每个状态字节上进行运算。它包括两个变换。 1. 在有限域在有限域GF(28)上求乘法逆,上求乘法逆,00映射到它自身。映射到它自身。 2. 在在GF(2)上进行下面的仿射变换:上进行下面的仿射变

8、换: 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,1

9、A0,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. ByteRotation0481215

10、9132610143711150481259131101426153711循环左移循环左移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

11、. 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

12、,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)ByteSubstitutionMixColumnCiph

13、ertext(128 bits) K0Kii=10ByteRotationfor i=1 to 10Ciphertext(128 bits) K10InvMixCoumnInvByteRotationInvByteSubstitution KiPlaintext(128 bits)i = 9for i=9 to 0加密加密解密解密用伪代码表示的Rijndael加密算法Rijndael ( State, CipherKey ) KeyExpansion ( CipherKey, ExpandedKey ); AddRoundKey ( State, ExpandedKey ); For ( i=

14、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 的密钥调度

15、密钥调度包括两个部分:密钥扩展和轮密钥选取。q密钥bit的总数分组长度(轮数Round1)例如当分组长度为128bits和轮数Round为10时,轮密钥长度为128(101)1408bits。q将密码密钥扩展成一个扩展密钥。q从扩展密钥中取出轮密钥:第一个轮密钥由扩展密钥的第一个Nb个4字节字,第二个圈密钥由接下来的Nb个4字节字组成,以此类推。密钥扩展K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3K0K1K2K3K0K1K2K3K4K5K6K7+K0K1K2K3K4K5K6K7ByteSubstitutionB

16、yteRotate+RconWi-4Wi-3Wi-2Wi-1WiByteSubstituionByteRotate+Rcons+Key expansion4 = i 4 ( Rnd + 1 )i mod 4 = 0i mod 4 != 0 轮密钥选取K0K1K2K3K4K5K6K7K8K9K10K11K12轮密钥轮密钥0轮密钥轮密钥1轮密钥轮密钥2AES的解密算法的解密算法q解密算法与加密算法不同解密算法与加密算法不同q每个阶段均可逆,因此易证解密函授的每个阶段均可逆,因此易证解密函授的确可以恢复明文确可以恢复明文q见图见图5.7,P.121AES 算法的设计原理qGF(28)中乘法使用的多项

17、式是8次不可约多项式列表中的第一个多项式。qByteSubstitution(称为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盒满足以上准则。盒满足以上准则。qMixColumn变换符合以下准则: 1. 可逆性; 2. GF(2)中的线性性; 3. 适当的扩散性能; 4. 8位处理器上实现速度快;5. 对称性; 6. 描述的简单性。选择模数多项式x41可满足准则2、5、6。准则1、3、4要求系数的值要小,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论