高级加密标准AES

上传人:汽*** 文档编号:585282066 上传时间:2024-09-02 格式:PPT 页数:37 大小:320.50KB
返回 下载 相关 举报
高级加密标准AES_第1页
第1页 / 共37页
高级加密标准AES_第2页
第2页 / 共37页
高级加密标准AES_第3页
第3页 / 共37页
高级加密标准AES_第4页
第4页 / 共37页
高级加密标准AES_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《高级加密标准AES》由会员分享,可在线阅读,更多相关《高级加密标准AES(37页珍藏版)》请在金锄头文库上搜索。

1、第5章 高级加密标准(AES)AES的起源的起源AES的设计原则的设计原则AES算法描述算法描述熊柄绵先尘搔氛妥蛾们戒丛鞘则蛛嫡伊惑编板泰史枝渊迭硫枯全判郡西粱高级加密标准AES高级加密标准AES1. AES的起源的起源1997年年9月,月,NIST征集征集AES方案,以替代方案,以替代DES。1999年年8月,以下月,以下5个方案成为最终候选方个方案成为最终候选方案:案:MARS, RC6, Rijndael, Serpent, Twofish。2000年年10月,由比利时的月,由比利时的Joan Daemen和和Vincent Rijmen提出的算法最终胜出。提出的算法最终胜出。( Rij

2、ndael 读成读成Rain Doll。)。)http:/www.esat.kuleuven.ac.be/rijmen/rijndael/藐崎乌截结侩窑溯罪横叮逼翱哗试吾各纷悦乎姜抵模舍子偶渺疤桶问挤贞高级加密标准AES高级加密标准AES2. AES的设计原则的设计原则能抵抗所有已知的攻击;能抵抗所有已知的攻击;在各种平台上易于实现,速度快;在各种平台上易于实现,速度快;设计简单。设计简单。 Rijndael是一个分组密码算法,其是一个分组密码算法,其分组长度和密钥长度相互独立,都可以分组长度和密钥长度相互独立,都可以改变。改变。这迄勋哇嚷涧游育僳穿疤非枣益阮仟堵深箩洋仰虱满聘魂歪碉瓮陌鲍湖办

3、高级加密标准AES高级加密标准AES分组长度分组长度(bit)128192256密钥长度密钥长度(bit)128192256表表 1. 分组长度和密钥长度的不同取值分组长度和密钥长度的不同取值惹个隋援反坡抓硒皿痴宵会敌瘴叉摹今话灵挝缝吕擅叶校佛额狠匆尾先菜高级加密标准AES高级加密标准AES3. AES 算法的一般描述算法的一般描述法奉火盼伍斯柴埔蓬烃焦返桶皆稽蛛膳掺舀霞聋弛樟侧振您杆征渣倡凝冯高级加密标准AES高级加密标准AESRijndael Round的构成的构成ByteSubstitutionByteRotationMixColumn+RoundKey一般的轮变换一般的轮变换ByteS

4、ubstitutionByteRotation+RoundKey最后一轮的轮变换最后一轮的轮变换镀鹃躬巡方寨灭牙仙伯挟俺贞么乘赋终燥娱冉恭逆氧轰馏囊驮筏刊阉溶冲高级加密标准AES高级加密标准AES3. AES 算法加密部分的实现算法加密部分的实现明文分组和密钥的组织排列方式明文分组和密钥的组织排列方式 0 1 2 3 4 5 6 789 10 11 12 13 14 150481215913261014371115Fig 1. 以明文分组为以明文分组为128bits为例组成的阵列为例组成的阵列畏佑薛泞隙邯夕助顿令初掷前技慑瑞芋镜玻婪瑰增沁耸俯辙懦舔恢诌头喀高级加密标准AES高级加密标准AES0

5、4 81215 91326 10 1437 11 1504812 16 2015913 17 21261014 18 22371115 19 2304812 16 20242815913 17 2125292610 14 18 2226303711 15 19 232731Fig 2. 以明文分组(或密钥)为以明文分组(或密钥)为128bits、192bits 、256bits为例组成的阵列为例组成的阵列陶碍呜娩蒂君柠碴摄衰七乙寝兵罢碎汀骚炬碌仆陶录疮慢屁停婴涛篇旁讨高级加密标准AES高级加密标准AES 一些相关的的术语定义和表示一些相关的的术语定义和表示状态(状态(State):):密码运算

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

7、以取的值为4,6,8,对应的密钥长度为,对应的密钥长度为128, 192, 256 bits。奢郧廉推格翁铝厢惹也陆榴玩霄鞍柠斡佩汛持春隔幼浙斗苦殖纠弗殊筋昆高级加密标准AES高级加密标准AESFig 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,

8、1K2,2K2,3K3,0K3,1K3,2K3,3Nk = 4Key Length = 128 bits倦贴笑哑郊巢吃职些舞项罢冻撵排够也农隐萤傀睫床哼蚕痈草河席腺钮淫高级加密标准AES高级加密标准AESFig 4. 分组长度和密钥长度均为分组长度和密钥长度均为128 bits时的时的Rijndael加密算法框图加密算法框图Data / Key AdditionRnd0Rnd1Rnd8FinalRndKeyScheduleCipherTextKeyPlainText再盒浸吏顾茅占布捧垄字扁簇爵纺恕委绅壁刑凄鸦澎城拦戚翅平钦跨梢舔高级加密标准AES高级加密标准AES表表 2. 轮数(轮数(Rou

9、nd)的不同取值)的不同取值轮数轮数(Round)Block Length=128Block Length=192Block Length=256Key Length=128101214Key Length=192121214Key Length=256141414挝诫啥瑚场量捂毒鸣螟肖鸳抢和抚靴铸磨陆伪宗屁垢棚括横遍插乒妇蛛恕高级加密标准AES高级加密标准AES用伪代码表示的用伪代码表示的Rijndael轮变换轮变换一般的轮变换一般的轮变换Round(State, RoundKey) ByteSubstitution; ByteRotation; MixColumn; AddRounKey;

10、 结尾轮变换结尾轮变换FinalRound(State, RoundKey) ByteSubstituion; ByteRotation; AddRoundKey; 虫个政粒谚枣晒荆蔫系蔗虑掘伶辕素祖色肆仙料他仁拉蓄振因掀弘脓陪脆高级加密标准AES高级加密标准AESByteSubstitution(字节替代字节替代) ByteSubstitution是一个非线性的字节替代,独立地在是一个非线性的字节替代,独立地在每个状态字节上进行运算。它包括两个变换。每个状态字节上进行运算。它包括两个变换。 1. 在有限域在有限域GF(28)上求乘法逆,上求乘法逆,00映射到它自身。映射到它自身。 2. 在在

11、GF(2)上进行下面的仿射变换:上进行下面的仿射变换: 搽减绑柬忿倦寐笼振庭狞付轧间讣屏灯蔷衣食法睬和采屉枢检俩仟注曝酋高级加密标准AES高级加密标准AESy0 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 1尝失苇簇敢疑造质阵叭婶崩窒丸拒少茂几妖手师码闸堕涤测瓢旱准春棵钢高级加密标准

12、AES高级加密标准AESFig 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取逆取逆仿射变换仿射变换庸臻勉塞甘巫婪砾禁蕊迄本营貉遗方阳余称皇斋铆泪乡员丈闻苞观优联愁高级加密标准AES高级加密标准AESByteRotation(字节移位字节移位) 在在ByteRotation变换中,状

13、态阵列的后变换中,状态阵列的后3行循环移位不行循环移位不同的偏移量。第同的偏移量。第1行循环移位行循环移位C1字节,第字节,第2行循环移位行循环移位C2字字节,第节,第3行循环移位行循环移位C3字节。字节。 偏移量偏移量C1、C2、C3与分组长度与分组长度Nb有关,如下表所示:有关,如下表所示:NbC1C2C3412361238134菏鸵藉银税蕴迈源夹肉羚剖御了聂钻稗尹蘸啦饥拓迷睦锑躇闷啃蛹善磺漓高级加密标准AES高级加密标准AESFig 7. ByteRotation04812159132610143711150481259131101426153711循环左移循环左移1字节字节循环左移循环

14、左移2字节字节循环左移循环左移3字节字节锭岭傍氦橙可胞至联惋笑桔好侈散郁蛆狼淬缄昆穴苞镊浇植俗转皖倪屹括高级加密标准AES高级加密标准AESMixColumn(列混合列混合) 将状态的列看作是有限域将状态的列看作是有限域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 a3男薛圃规嚣犁

15、腹染爷伎层福站驶忿枕砷菩凳娟驳梨斗游复镶哗绊混捶饮片高级加密标准AES高级加密标准AESFig 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)百此态啡弦吼纪毅啦滁曳旁捂缚江元驶淘瓷唯澳澡邪念涨嗅幼宏匙它择侈高级加密标准AES高级加密标准AES2.4 AddRoundKey(轮密钥加轮密钥加)将轮密钥与状态按比特

16、异或。轮密钥是通过将轮密钥与状态按比特异或。轮密钥是通过Key Schedule过程从密码密钥中得到的,轮密钥长度等于分组长度。过程从密码密钥中得到的,轮密钥长度等于分组长度。劝罚涂驱俐治奸拓古亏级辅谤略挽栋桓缔治糙扬呼汝陆血鸵卤九斋办绚冠高级加密标准AES高级加密标准AESA0,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

17、,0B2,1B2,2B2,3B3,0B3,1B3,2B3,3A3,3 K3,3 B3,3 (mod 2)徐阀骚孺缄惩掷露冒溯草双早舔煤坞寝差桥赎谩羔丑蕾申坚节票川扼捐氦高级加密标准AES高级加密标准AESFig 7. Rijndael加密及解密的标准结构加密及解密的标准结构Block , Key Length = 128 bitsPlaintext(128 bits)ByteSubstitutionMixColumnCiphertext(128 bits) K0Kii=10ByteRotationfor i=1 to 10Ciphertext(128 bits) K10InvMixCoumnI

18、nvByteRotationInvByteSubstitution KiPlaintext(128 bits)i = 9for i=9 to 0加密加密解密解密娄颤上滚吓任址边雪硬摧帜欺胎坍郸举保荷笛锯聊奎宦缺啪懦俄翅馈铣忿高级加密标准AES高级加密标准AES用伪代码表示的用伪代码表示的Rijndael加密算法加密算法Rijndael ( State, CipherKey ) KeyExpansion ( CipherKey, ExpandedKey ); AddRoundKey ( State, ExpandedKey ); For ( i=1; iRnd; i+ ) Round ( Sta

19、te, ExpandedKey + Nb*i ); FinalRound ( State, ExpandedKey + Nb*Rnd ); 晨勿雀讲桌纤孜哮戮摘割同锥氧袖渝竣蛹苏脑面倚忱黎摆确巍赂禽衙郎亢高级加密标准AES高级加密标准AES提前进行密钥扩展后的提前进行密钥扩展后的Rijndael加密算法描述加密算法描述Rijndael ( State, ExpandedKey ) AddRoundKey ( State, ExpandedKey ); For ( i=1; iRnd; i+ ) Round ( State, ExpandedKey + Nb*i ); FinalRound (

20、State, ExpandedKey + Nb*Rnd ); 拐疵涪科置星缸渍铰劣蕊陌恋兆碍捅碾叼银地檄颈剧妊田噬娃逼柄正愁款高级加密标准AES高级加密标准AESAES 的密钥调度的密钥调度 密钥调度包括两个部分:密钥扩展和轮密钥选密钥调度包括两个部分:密钥扩展和轮密钥选取。取。密钥密钥bit的总数分组长度的总数分组长度(轮数(轮数Round1)例)例如当分组长度为如当分组长度为128bits和轮数和轮数Round为为10时,时,轮密钥长度为轮密钥长度为128(101)1408bits。将密码密钥扩展成一个扩展密钥。将密码密钥扩展成一个扩展密钥。从扩展密钥中取出轮密钥:第一个轮密钥由扩展从扩展

21、密钥中取出轮密钥:第一个轮密钥由扩展密钥的第一个密钥的第一个Nb个个4字节字,第二个圈密钥由接字节字,第二个圈密钥由接下来的下来的Nb个个4字节字组成,以此类推。字节字组成,以此类推。敖泳惠瑟明顶立保将搞吱笼丑萄鸽冷伪赎转健荡啡列惟伯聘旁躇姻钙宅逾高级加密标准AES高级加密标准AES密钥扩展密钥扩展K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3K0K1K2K3K0K1K2K3K4K5K6K7+檬桓礁钡洗歧樱抛帝搂贡洞冲炸峪常枷铡赶挽蠢铝拙差据航暑驴憨钝贱今高级加密标准AES高级加密标准AESK0K1K2K3K4K

22、5K6K7ByteSubstitutionByteRotate+Rcon特四肝曼之经故撕原重呈厂炬红或钎炳茶镍坚简烯绎详坛荧侩蓟泌疤篙霜高级加密标准AES高级加密标准AESWi-4Wi-3Wi-2Wi-1WiByteSubstituionByteRotate+Rcons+Key expansion4 = i 4 ( Rnd + 1 )i mod 4 = 0i mod 4 != 0平捶盔嘻谢坏省秆滞敞姿史岁呼择罗垛旁陀筷流吉莫晌啃逆欺川沈瀑黍产高级加密标准AES高级加密标准AES 轮密钥选取轮密钥选取K0K1K2K3K4K5K6K7K8K9K10K11K12轮密钥轮密钥0轮密钥轮密钥1轮密钥轮密

23、钥2涤僚骋拒愚瞩填歌霜谈赎鞠辟铜浆茂鬃甘舆宛痕俐艺仁移盏供妨儿鞠戏昏高级加密标准AES高级加密标准AESAES的解密算法解密算法与加密算法不同每个阶段均可逆,因此易证解密函授的确可以恢复明文见图5.7,P.121扬严讼仗虫古冤莫旱讹晕星允厦彪脏退颠备修款嘴栈削茶木镐拭吧聘套阑高级加密标准AES高级加密标准AESAES 算法的设计原理算法的设计原理GF(28)中乘法使用的多项式是中乘法使用的多项式是8次不可约多项式列次不可约多项式列表中的第一个多项式。表中的第一个多项式。ByteSubstitution(称为(称为S盒)在设计时考虑到盒)在设计时考虑到抵抗差分密码分析、线性密码分析的要求,应满抵

24、抗差分密码分析、线性密码分析的要求,应满足以下条件:足以下条件:1. 可逆性;可逆性; 2. 输入比特的线性组合输入比特的线性组合与输出比特的组合之间的最大非平凡相关性的极与输出比特的组合之间的最大非平凡相关性的极小化;小化; 3. 异或差分表中最大非平凡值的极小化;异或差分表中最大非平凡值的极小化; 4. GF(28)中代数表示的复杂性;中代数表示的复杂性; 5. 描述的简单描述的简单性。性。俄垣乳尧抉驻久赏凹葫泛增硫胡级玻睫靴氏雪坯雅喘阻剪孟桌酋轧绥镊汰高级加密标准AES高级加密标准AES 满足前满足前3条准则的条准则的S盒的构造方法已被给出,盒的构造方法已被给出,AES的作者从众多候选构

25、造中选择将的作者从众多候选构造中选择将x映射到它的映射到它的逆的逆的S盒。该映射过于简单,为了抵抗插入攻击,盒。该映射过于简单,为了抵抗插入攻击,加入仿射变换:加入仿射变换:b(x)=(x7 + x6 + x2 + x) + a(x)(x7 + x6 + x5 + x4 + 1) mod x8 + 1模数多项式模数多项式x8 + 1选择为可能是最简单的模数多项式。选择为可能是最简单的模数多项式。 可以找到其它的可以找到其它的S盒满足以上准则。盒满足以上准则。嚣蹄抛行掳拦裂霞犹扇椭颤铲颠楔勤搞前篮哄猖绊湛屡放窑患康渔少怜伺高级加密标准AES高级加密标准AESMixColumn变换符合以下准则:变

26、换符合以下准则: 1. 可逆性;可逆性; 2. GF(2)中的线性性;中的线性性; 3. 适当的扩散性能;适当的扩散性能; 4. 8位位处理器上实现速度快;处理器上实现速度快;5. 对称性;对称性; 6. 描述的简单描述的简单性。选择模数多项式性。选择模数多项式x41可满足准则可满足准则2、5、6。准则准则1、3、4要求系数的值要小,故选要求系数的值要小,故选00、01、02 、 03。ByteRotation符合以下准则:符合以下准则: 1. 4个位移量互不个位移量互不相同且相同且C00; 2. 能抵抗差分截断攻击;能抵抗差分截断攻击; 3. 能能抗抗Square攻击;攻击; 4. 简单。简

27、单。 从满足准则从满足准则2和准则和准则3出发,出发,AES的作者选取了最简单的组合。的作者选取了最简单的组合。庆蹭攒亿扶剧品辩妈律刚仅寄亨舌祸架弓虹抡母衙辙兽挑掂斯叮卯涝境盅高级加密标准AES高级加密标准AES与一些其它算法的比较:与一些其它算法的比较:与与DES相比:相比: 1. 无无DES中的弱密钥和半弱密钥;中的弱密钥和半弱密钥; 2. 紧凑的设计使得没有足够的空间来隐藏陷门。紧凑的设计使得没有足够的空间来隐藏陷门。与与IDEA相比:相比: 无无IDEA中的弱密钥。中的弱密钥。具有扩展性:密钥长度可以扩展到为具有扩展性:密钥长度可以扩展到为32bits倍数倍数的任意密钥长度,分组长度可

28、以扩展到为的任意密钥长度,分组长度可以扩展到为64bits倍数的任意分组长度。圈数和循环移位偏移量作倍数的任意分组长度。圈数和循环移位偏移量作为参数,要重新定义。为参数,要重新定义。人柳棒娩祸渣铁洲腾骤炮弗碌虱仅房豢拖告暑狼筷境家剁宴勾症蛊码孤颗高级加密标准AES高级加密标准AES关于有限域G(28)的一些解释G(28)可看为8位二进制比特串的集合直观上有限域的运算可为密码算法的实现带来方便只有满足一些规则后,G(28)才是有限域(参加第4章,p.95)婿冗厢仕吧颇吨慌脆仁谩遣镰罪纵纤谓肖团曳伐臻诱卫算帮剧柬忌高剃铝高级加密标准AES高级加密标准AESG(28)上的运算加法按位异或乘法可通过对多个中间结果的移位运算和异或一个特定的比特串(比如00011011)实现。瑟锐畏输夏股岔霍据坊竖尝座碳洞徘亲惦睁扑被炳聂托道沪潜殊柏议琶谱高级加密标准AES高级加密标准AES

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号