AES算法的实与分析课设计毕业设计论文word格式(1)_第1页
AES算法的实与分析课设计毕业设计论文word格式(1)_第2页
AES算法的实与分析课设计毕业设计论文word格式(1)_第3页
AES算法的实与分析课设计毕业设计论文word格式(1)_第4页
AES算法的实与分析课设计毕业设计论文word格式(1)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计(论文)AES算法的实现与分析2008 年 11随着现代密码分析水平、芯片处理能力和计算技术的不断进步,高级加密标准 AES的Rijndael算法将在各行业各部门获得广泛的应用,成为虚拟专用网、SONET、 远程访问服务器、高速ATM/以太路由器、移动通信、卫星通信、电子金融业务等的加 密算法,并逐渐取代DES在IPSec、SSL和ATM中的加密功能。目前,IEEE 802.1 li 草案已经定义了 AES加密的两种不同运行模式,成功解决了无限局域网标准中的诸多 安全问题。在这种情形下,AES算法的安全性及其快速实现问题显得格外突出,本文 对此进行了全面的论述,希望能为有意进行这一方面

2、研究和应用的同行提供有益的参 考。文章阐述了 Rijndael算法的设计特色,介绍了 AES在密码分析方而国内外已有的 一些理论分析成果,描述了 AES算法采用软件和硬件实现方案。此外,本文章从数学 基础的知识上阐明了 AES算法的四个步骤。从AES算法抵抗强力攻击能力,抵抗差分 分析和线性密码分析的能力,抵抗渗透攻击能力,抵抗代数计算攻击能力,抵抗XSL 攻击能力,弱密钥的分析这几个方面进行了分析从而说明AES的安全性能。我们根据 算法的安全性、代价以及算法与实现特性的原则实现了 AES的算法,从密钥编排方案 分析了密钥的设计准则和选取。关健词:AES算法加密解密 安全性能分析Abstrac

3、tWith the modem code of the level of analysis, processing power and chip technology advances ,AES Rijndael algorithm in various industries and departments to obtain a wide range of applications, virtual private networks become, SONET, remote access servers, highspeed ATM / Ethernet routers, mobile c

4、ommunications, satellite communications, electronic financial services such as encryption algorithm. And gradually replaced by DES in IPSec, SSL and encryption in the ATM. At present, IEEE 802.11 i draft definition of the AES encryption has two diflerent modes of operation, the successful resolution

5、 of an unlimited number of local area network standard of safety. In this case, AES algorithm for the safety of its rapid realization of the problem is particularly prominent in this article have conducted a thorough discussion in the hope of intention to conduct the study and application of peer-to

6、 provide a useful reference.The article describes the design characteristics of the Rijndael algorithm, introduced at the AES code analysis at home and abroad have been some of the theoretical analysis of the results of the AES algorithm used to describe software and hardware to achieve fast program

7、. In addition, the article from the mathematical knowledge-based AES algorithm on a set of four steps. AES algorithm resistance from powerful attack capability against difierential cryptanalysis and linear analysis of the ability to resist infiltration attack capability, the ability to resist attack

8、s on calculate algebra, the ability to resist attacks XSL, weak analysis of these key aspects of the analysis that in order to AES Safety performance. According to the security of our algorithm, as well as the cost of algorithm and implementation of the principle characteristics of the realization o

9、f the AES algorithm. From the analysis of the key programs scheduled for the key criteria for the design and selection.Key words: AES algorithm; Encryption; Decrypt; Safety Performance Analysis目录第一章绪论41. 题目背景42. AES算法密码分析的进展4第二章基础设星61. AES 简介62 AES算法的分析63. AES 和 Ri jndael 的区别84. AES的结构85. AES算法的设计原理

10、96. AES算法的框架描述107. AES加、解密的输入/输出118. AES加密算法实现的理论分析138.1轮的数目的设定138.2轮变换158. 3密钥扩展(Key Expansion)168.4字节替换(SubBytes)188.5行位移变换(Sh汗tRows)198. 6歹lj混合变换(M i xCo I umns)198.7密钥加变换(Add RoundKey)209. 解密209.1两轮AES的解密219.2代数性质22笫三章AES的实现241. 软件系统概述242. AES 的 C+实现26笫四章AES算法的抗攻击能力分析361 AES算法抵抗强力攻击能力分析362AES算法抵

11、抗差分分析和线性密码分析的能力分析363 AES算法抵抗渗透攻击能力分析374 AES算法抵抗代数计算攻击能力分析375 AES算法抵抗XSL攻击能力分析38结论40工作分工和安排42小组成员个人心得43参考文献48附录50第一章绪论1. 题目背景科技的发展特别是网络的发展使计算机深入到了各行各业的方方面面,计算机在 带来方便和提高了工作效率的同时却也带来了各种各样的新问题,其中信息安全问题 最为突出,随着计算机信息安全要求的不断提高,计算机保密系统已变得越来越重要, 密码学应用不再是局限于军事、国防等有限领域,而是迅速的走进了千家万户。2. AES算法密码分析的进展2002年亚洲密码分析研讨

12、会上,Courtois16提出一种称为XSL攻击的分组密码分 析新方法,主要思想是用一系列次数低、方程数大于变元数的超定方程组来描述密码 系统,通过解方程组来破解分组密码。同年美洲密码分析研讨会上,Murphy17设计 了一种新的算法BES(Big Encryption System),将AES中GF(28)和GF(2)上的两种域运 算归结为域GF(28)上的运算,使AES成为某种消息空间和密钥空间下的BES,通过 研究形式更为简洁的BES,可以更淸晰地了解AES算法内部的数学结构。2002年第 297期科学杂志18高度评价了这两个最新分析成果。中国的研究人员也对AES算法进行了大屋研究分析。

13、吴文玲19用能量攻击对 Rijndael算法进行了分析,攻击复杂度在267到2131之间,大大降低了攻击的规模: 曾祥勇20等用布尔函数的迹表示给出置换函数的表达式,对由幕函数合成可逆仿射变 换产生的S盒间的关系进行了研究:李娜21通过研究q-多项式的性质给出了一种求 解S盒代数表达式的简易算法,具有可预先计算、操作简单的特点和一定的通用性, 并对曾祥勇提出的一类S盒进行了仿射等价划分,明确了这些S盒间的相互关系:冯 国柱22对Rijndael算法作了变动和改进,使新算法在不降低抗差分攻击性能、牺牲少 许密钥装填速度的情况下提高统计效果,并可部分抵抗Square攻击:胡辛征23研究 发现Rij

14、ndael算法S盒在有限域GF(28)上的迭代循环周期过短,设计了一种新的仿射 变换对之加以改进:曾游24调整Rijndael算法轮变换的顺序,采用密钥的变形形式, 通过合理安排求取密钥的顺序,利用密钥相关性将5轮简化算法的密钥穷尽量减少到240+232+216+9x28o韦宝典25利用Walsh谱理论分析Rijndael算法S盒的严格雪崩特性、扩散特性和 相关免疫性等密码性质,提出了广义自相关函数的概念,解决了严格雪崩准则和扩散 准则阶数的确定问题:基于等价类的划分、线性方程组的求解和标准基之对偶基的计 算,给出了域元素分量代数表达式的3种求法,提出了一种基于生日悖论、利用活动 性进行攻击的

15、新方法:指出了 Square-6攻击是不成功的,并给出了修正攻击方案。第二章基础设置AES算法是一些相当复杂的运算,虽然本文要实现的只是8位处理器上实现128 位的运算,但还是很有必要采用模块化思想按照层次结构来设计及实现一些其它的辅 助函数,而不是把它们内嵌在算法函数内,这样既能够避免算法函数的程序代码的过 分冗长、使代码淸晰易懂、突出算法过程又能够使程序易于测试、排错、更新和复用。 由于本文重点在乘法类算法,下而只介绍一些关键的辅助函数,其它辅助函数要到相 关算法使用到时再简略介绍。1. AES简介随着对称密码的发展,3DES用软件实现速度相对较慢,它使用的64位分组长度 显得不够高效和安

16、全的缺点使得需要一种新的高级加密标准来替代它。AES的全称是 Advanced Encryption Standard,即高级加密标准。该项目由美国国家标准技术研究所 (NIST)于1997年开始启动并征集算法,在2000年确定采用Rijndael作为其最终算法, 并于2001年被美国商务部部长批准为新的联邦信息加密标准(FIPS PUB 197),该标 准的正式生效日期是2002年5月26日。2000年10月2日,NIST对Rijndael做出了 最终评估。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥, 并且用128位(16字节)分组加密和解密数据。与公共密

17、钥密码使用密钥对不同,对称 密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输 入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换 (substitutions)输入数据。2 AES算法的分析一个密码算法的有效性首先体现在可靠的安全性上。Rijndael算法设计采用针对差 分和线性密码分析提出的宽轨迹策略(WTS),其最大优势是可以给出算法最佳差分特征 的概率以及最佳线性逼近偏差的界:使用简单的部件组织成淸晰的结构,便于算法安 全性的分析。当然,在密码学界永远没有绝对的安全,Rijndael算法也不例外,如其明 显的代数结构对安全

18、性的潜在威胁已经受到一些学者的质疑。本文从简化算法攻击、 算法结构性质分析以及密码分析的进展等方面对AES算法的密码分析状况进行讨论。简化算法攻击目前尚未出现对完整Rijndael算法的成功攻击,只提出了几种针对简化算法的攻 击方法。最有名的当数密码设计者自己提出的Square攻击,其主要思想是利用第4轮 字节替换前后平衡性的改变来猜测密钥字节,对128比特密钥下4到6轮简化算法有 效。Biham2等对Square攻击进行改进,时间复杂度降为原来的一半,并认为颠倒轮 密钥的顺序可将攻击复杂度降低28。Lucks卩利用密钥生成算法的弱点,将Square攻 击的密钥长度扩展到192和256比特,攻

19、击7轮简化算法比穷尽搜索快。FerguSon4 利用“部分和”技术将6轮Square攻击的复杂度从272降到244,并推广到7轮和8轮 简化算法,指出密钥生成算法中几个违背设计准则的特性,利用慢扩散性设计了一个 针对256比特密钥下9轮简化算法的密钥相关攻击方案。Gilbert5利用局部函数间的冲突特性对4到7轮简化算法进行了攻击。Cheon等 将5轮不可能差分攻击推广到6轮,复杂度高于相应的Square攻击,但仍快于密钥穷 尽搜索。Koeune6描述了一种计时攻击,通过对每个密钥数千次的测量,展现攻破一 个不良的现实设计的过程。Golic7则指出AES算法虽然能够通过乘法掩盖来抵抗简单 能量

20、攻击(SPA),对差分能量攻击(DPA)却无能为力。算法结构性质分析密码代数结构的任何弱点都将有利于密码的分析和破译。因此,在对Rijndael简 化算法进行攻击尝试的同时,人们也把相当多的精力集中到算法内部结构各种性质的 研究上。Ferguson8给出了 Rijndael算法一个直观而紧凑的代数表示形式:Filiol9则 将算法的每一输岀比特看作以明文比特和密钥比特为变量的布尔函数,Pn,k,kJ ,用Mobius变换将之计算出来,研究其低次项的分布情况, 比较与完全随机的布尔函数代数正规式的差异,结果发现Rijndael算法布尔函数的 随机特性并不十分理想。Barkan10替换算法中的不变

21、常量(如既约多项式、列混合运算中的系数和S盒中 的仿射变换),产生新的等价对偶密码(平方对偶、对数对偶和自对偶等数百种之多)。 在此基础上,可以选择比原算法快的对偶算法,在加解密中使用不同的对偶密码或每 次随机选择不同的对偶密码以抵抗错误攻击和能量攻击。但是,由于对偶密码的结构 容易分析,并易于转换成原算法,可能会有助于实施差分或线性攻击,所以对偶密码 的存在也可能是对Rijndael算法的一种潜在威胁。Songl 1为SPN分组密码引入了替换差分的概念,研究S盒替换距离的分布特性, 并认为,如果知道给定分组密码S盒的替换距离,便可在密码分析中选择有一定输入 差分的明文来确定可能的密钥,这种分

22、析方法不依赖于密钥,可用于分析Rijndael算 法的第1轮。Fuller12等指出Rijndael算法S盒的分量函数之间存在等价关系5,.(.V)= (Dx + a) + c o这种等价关系有助于降低S盒硬件实现成本,但从安全角度看,可能会引发对Rijndael算法的攻击。他们利用布尔函数局部结构中的相邻特性, 通过寻找等价参数Qi a、b和c的方法间接证明了分量函数之间的等价关系。 YoussefI13则将S盒分量函数间的等价关系推广到整个轮函数。Murphy14发现任何明文或明文差分经过Rijndael算法线性扩散层16轮迭代后会 重现,Wemsdorf15则指出Rijndael算法的轮

23、函数构成交换群。3. AES和Rijndael 的区别Rijndael和AES之间的唯一差别在于各自所支持的分组长度和密码密钥长度的范 围不同。Rijndael是具有可变分组长度和可变密钥长度的分组密码。其分组长度和密钥长度 均可独立地设定为32比特的任意倍数,最小值为128比特,最大值是256比特。我们 可以定义具有更大分组长度和密钥长度的各种版本的Rijndael,但目前似乎没有必要。AES将分组长度固定为128比特,而且仅支持128、192或256比特的密钥长度。 在AES的选择过程中,Rijndael所具有的额外的分组长度和密钥长度没有评估。因此, 这定在当前的FIPS标准中也为被采用

24、。4. AES的结构Rijndael是一个密钥迭代分组密码,包含了轮变换对状态的重复作用。用N表示 轮数,它依赖于分组长度和密钥长度。值得注意的是,本章中的轮变换包含了密钥加法,这一点与(2.47)(2.50)式 的定义相反。这样做的目的是使本章的描述与FIPS标准相一致。根据B.GIadman的建议,我们对最初所提交的AES提案中描述的一些步骤的名称 进行了修改。这些新的名称更加统一,已被FIPS标准采用。同时也做了更进一步的改 进,均为了使描述更加淸楚、全面,但对分组密码本身没有做任何改变。Rijndael的加密过程包括一个初始密钥加法,记作AddRoundKey,接着进行N, -1次轮变

25、换Round,最后再使用一个轮变换FinalRoundo初始的密钥加法和每个轮 变换均以状态State和一个轮密钥作为输入。第i轮的轮密钥记为ExpandedKeyi,初 始密钥加法的输入记为ExpandedKey0o从CipherKey导出ExpandedKey的过程记为 Key Expansion o Rijndael的高级语肓伪C符号描述见列表3.1。列表3.1 使用Rijndael进行加密的高级算法Rijndael (State, Cipherkey )KcyExpansion (CipherKey, ExpandedKey);AddRoundKey ( Statc,ExpandedK

26、ey0);For (i=I;iNr ;i+) Round ( State,ExpandcdKcyi);FinalRound ( State, ExpandedKey N);5. AES算法的设计原理GF(28)中乘法使用的多项式是8次不可约多项式列表中的第一个多项式。 ByteSubstitution (称为S盒)在设计时考虑到抵抗差分密码分析、线性密码分析 的要求,应满足以下条件:(1) 可逆性:(2) 输入比特的线性组合与输出比特的组合之间的最大非平凡相关性的极小化:(3) 异或差分表中最大非平凡值的极小化:(4) GF(28)中代数表示的复杂性:(5) 描述的简单性。满足前3条准则的S盒

27、的构适方法已被给出,AES的作者从众多候选构适中选择 将X映射到它的逆的S盒。该映射过于简单,为了抵抗插入攻击,加入仿射变换:h(x) = (x7 + x6 +x2 +x) + a(x)(x7 + x6 + x5 + x* + l)mod.v8 +1模数多项式工+1选择为可能是最简单的模数多项式。可以找到其它的S盒满足以 上准则。 MixColumn变换符合以下准则:(1) 可逆性:(2) GF(28)中的线性性:(3) 适当的扩散性能:(4) 8位处理器上实现速度快:(5) 对称性:(6) 描述的简单性。选择模数多项式* + 1可满足准则2、5、6。准则1、3、4要求系数的值要小,故 选 0

28、0、 01、 02 、 03。 ByteRotat ion符合以下准则:(1) 4个位移量互不相同且C。=0:(2) 能抵抗差分截断攻击: 能抗Square攻击:(4)简单。从满足准则2和准则3出发,AES的作者选取了最简单的组合。6AES算法的框架描述Rijndael算法是一个可变数据块长和可变密钥长的分组迭代加密算法,数据块长和 密钥长可分别为128, 192或256比特,但为了满足AES的要求,分组长度为128比特, 密钥长度为128, 192或256比特。AES密码算法采用的是代替一置换网络(SPN)结构, 每一轮操作由4层组成:第1层(字节替换)为非线性层,用S盒对每一轮中的单个字节

29、分 别进行替换:第2层(行移位)和第3层(列混合)是线性混合层,对当前的状态阵按行移位, 按列混合:第4层(密钥加层)用子密钥与当前状态阵进行字节上的异或。具体算法结构如图1所示。(a)AES算法框图(b)轮AES结构图1 AES算法结构图1中,(a)图给出了算法的整体结构,输入明文X与子密钥1(0异或,然后经过!轮迭 代最终生成密文Y,其中第1到一1轮迭代结构为图(b),第r轮与前面各轮稍微有点不同, 缺少混合层。7. AES加、解密的输入出Rijndael的输入/输出可看作8位字节的一维数组。对加密来说,其输入是一个明 文分组和一个密钥,输岀是一个密文分组。对解密而言,输入是一个密文分组和

30、一个 密钥,而输出是一个明文分组。Rijndael的轮变换及其每一步均作用在中间结果上,我 们将该中间结果称为状态。状态可以形象地表示为一个矩形的字节数组,该数组共有 4行。状态中的列数记为它等于分组长度除以32.将明文分组记为卩4 g -1其中,耳表示第一个字节, Nb-表示明文分组的最后一个字节。类似地,将密文分组记为C0ClC2C3 C4Nh-l将状态记为air 0/4, 0 jNh这里,表示位于第i行第i列的字节。输入字节依次映射到状态字节aO,Oa.Qa2.(ia3.QaO.a.aiSa3i,上。当加密是,输入是一个明文分组,映射是0“4, 0;当解密是,输入是一个密文分组,映射是=

31、c/+4r 0/4, 0jNb在加密结束时,密文分组以相同的顺序从状态字节中取出C,- = , nxxl4,.74 0 4Nb在解密结朿时,明文分组按以下顺序从状态中得到P: = a;inod4J/4 4Nb类似地,密钥被映射到两维密码密钥上。密码密钥可以形象地表示为一个与状态 类似的矩形数组,该数组也有4行。密码密钥的列数记为必,它等于密钥长度除以如果将密钥记为32密钥的各字节被依次映射到密码密钥的各字节上:*0.0絡0*2.0*3,0*0*1*2.1 斤3.1 心 2,。ZOZlZ2Z3那么严I,0/4, 0jNk状态与密码密钥的表示以及明文-状态与密钥-密码密钥的映射,如图所示P。片片2

32、Pp2人。k4kg*12*20&k.*21k2忍*18k ”k3kn%化9k23当Nb=4、N* =6时状态和密码密钥的大致分布8. AES加密算法实现的理论分析AES中的操作均是以字节作为基础的,用到的变量也都是以字节为基础。State可 以用4x4的矩阵表示。AES算法结构对加密和解密的操作,算法由轮密钥开始,并用 Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2所示)。AES算 法的主循环State矩阵执行轮迭代运算,每轮都包括所有4个阶段的代换,分别 是在规范中被称为SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合 变换)和A

33、ddRoundKey,(由于外部输入的加密密钥K长度有限,所以在算法中要用 一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的 加密和解密密钥。)最后执行只包括3个阶段(省略MixColumns变换)的最后一轮运算。表2 AES参数密钥长度(bits)128192256明文分组长度(bi128128128轮数101214每轮密钥长度(bits)128128128扩展#钥长度(“械)1762062408.1轮的数目的设定当前的密码分析研究表明,迭代型分组密码抗击密码分析攻击的能力随轮数的增 加而增加。我们通过考虑抗击捷径攻击来确定轮的数目,因为捷径攻击明显比

34、穷尽密钥搜索 攻击更有效。在此基础上,又增加了一个适当的安全余量。对分组长度和密钥长度均 是128比特的Rijndael,我们尚未发现能够对具有六轮以上的简化版本实施的捷径攻击, 又增加4轮作为安全余星。这是一个保守的做法,因为:(1) Rijndael中两轮即可提供以下意义上的“全扩散”。每个状态比特均依赖与两轮 之前的所有状态比特,或者一个状态比特的改变均可能对两轮之后的半数状态 比特产生影响。在增加4轮可以看作是在密码的开始和结束时增加了一个“全 扩散步骤Rijndael轮变换的高扩散性归功于它在所有状态比特上的均匀结构。 对于所谓的Feistel密码,没轮仅对半数的状态比特进行作用,三

35、轮后才可以获 得全扩散。在实际中,这种密码一般采用四轮或更多。(2) 为了攻击密码的第n+1或n+2轮,相信密码分析,差分密码分析和截短差分析 攻击通常采用一个直到n轮的传播轨迹。渗透攻击也是如此,它利用一个四轮 的传播结构来攻击六轮。在这方面,我们增加四轮实际上使得找到一个传播轨 迹所逼历的轮数增加一倍。对于具有较长密钥的Rijndael版本,密码密钥每增加32比特,伦徳数目就增加一 轮。原因如下:(1) 主要目的之一是是比穷举密钥搜索攻击更有效的捷径攻击失效。因为穷举密钥 搜索的工作量随密钥长度的增加而增加,而捷径攻击对具有更长密钥的密码的 攻击效率不高。(2) (部分的)已知密钥和相关密

36、钥攻击利用了密码密钥中的比特信息,或者具有 利用不用密码密钥的能力。如果增加密码密钥的长度,密码分析者的搜索范围 也将随之增加。关于具有更长密钥的Rijndael的安全性研究文献已经表明,这一策略带来了足够 的安全余量31, 36, 62o而对具有较长分组的Rijndael版本,分组长度每增加32比 特,轮的数目就增加一轮。理由如下:(1) 如果密码的分组长度大于128比特,就采用三轮来实现全扩散,这是因为轮变 换的扩散能力将随分组长度的增加而降低。(2) 更大的分组长度将增加可能出现的模式的选取范围,这些模式可用在某几轮的输入输出上。这一附加的灵活性可使攻击所必须处理的范围扩大一轮或者几轮。

37、对于具有更大分组长度256比特的Rijndael版本,我们已经发现,即使将攻击的 处理范围扩大一轮也难以实现。因此,这是一个保守的余量。表3.2列岀了作为必和皿函数的“值。对于AESN、取固定值为4:对于128比 特的密钥(皿=4), M=l:对于192比特的密钥(必=6), M=12:对于256比特的 密钥皿=8, =14.表3.2对不用的必(心分组长度/32)和心(心=分组长度/32)轮的个数值N,45678410111213145111112131461212121314713131313!4814141414148.2轮变换轮变换Round由4个变换组成,其中的每个变换称为步骤,如列表

38、3.2所示。该 密码的最后一轮FinalRound稍有不同,也如列表3.2所示。在这个列表中,变换(Round, SubBytes. Shi Rows,.)作用在指针(State. ExpndedKeyi)所指向的数 组上。容易验证:若将Round变换中的MixColumns步骤去掉,则它等价于 FinalRound变换。这些步骤以及每一步所采用的设计准则将在下面的各节中详细讨论。 除了具体到可不的准则以外,还采用了以下两个通用的设计准则:1. 可逆性。Rijuael轮变换的结构要求所有步骤都是可逆的。2. 简单性。我们更倾向于使用简单的组件,而避免负责组件。11列表3.2 Rijufael的

39、轮变换Round ( State, ExpandedKeyi)SubBytes ( State);ShiftRows (State);MixColumns ( State);AddRoundKey ( State , ExpandedKeyfi);FinalRound ( State , ExpandedKey Nr);SubBytes (States );ShiftRows( States);AddRoundKEY( States, ExpandedKey Nr );8. 3 密钥扩展(Key Expansion)为了防止已有的密码分析攻击,AES使用了与轮相关的轮常量(Rconjj,是一个

40、 字,这个字的右边三个字节总为0)防止不同轮中产生的轮密钥的对称性或相似性。 AES在加密和解密算法使用了一个由种子密钥字节数组生成的密钥调度表,AES规范 中称之为密钥扩展例(KeyExpansion)o密钥扩展例程从一个原始密钥中生成多重密钥以 代替使用单个密钥大大增加了比特位的扩散,在AES密钥扩展算法的输入值是4字 密钥,输岀是一个44字的一一维线性数组。这足以为初始轮密钥扩展例程阶段和算 法中的其他10轮中的每一轮提供16字节的轮密钥。通过生成器产生M + 1轮轮密钥,每个轮密钥由M个字组成,共有Nb(Nr + )个字 Wi, i=0, 1, . Nb(Nr + )-o在加密过程中,

41、需要M + 1个子密钥,需要构适4(N + 1)个32位字。Rijndael的密钥扩展方案的伪码描述如下:KeyExpansion(byte key4*Nk,word wNb*(Nr+1 ),Nk)/Nk代表以32位字为单位的密钥的长度,及爪=密钥长度/32begini=0while(INk)wi=vordkey4*i, key4*i+l, key4*i+2, key4*i+3i=i+lend whilei=Nkwhile(i4).对w数组中下标不为4的倍数的元素,只是简单地异或,其逻辑关系为:mZ = hZ-1 h(z-4 (i 不为 4 的倍数)对w数组中下标为4的倍数的元素,采用如下的计

42、算方法:(1)将一个字的四个字节循环左移一个字节,即将字方0,%,的03,变为每上3,;(2)基于S盒对输入字中的每个字节进行S代替:(3)将步骤1和步骤2的结果再与轮常量Rconi相异或。8.4 字节替换(SubBytes)AES定义了一个S盒,State中每个字节按照如下方式映射为一个新的字节:把该 字节的高4位作为行值,低4位作为列值,然后取出S盒中对应行和列的元素作为输 出。例如,十六进制数84。对应S盒的行是8列是4, S盒中该位置对应的值是5F。S盒是一个由16x16字节组成的矩阵,包含了 8位值所能表达的256种可能的变换。S 盒按照以下方式构适:(1)逐行按照升序排列的字节值初

43、始化S盒。第一行是00, 01, 02,. OF;第二行是10, 11,,1F等。在行X和列Y的字节值是xy。(2)把S盒中的每个字节映射为它在有限域GF(2)中的逆。GF代表伽罗瓦域,GF(28)由一组从0x00到OxfT的256个值组成,加上加法和乘法。GF(28) = 召卑o 00被映射为它自身00o(X + X + X + X + 1)(3) 把S盒中的每个字节记成(九,爲,饥上5血厶,方2,勺,)。对S盒中每个字节的每 位做如下变换:bi =S (,+4)mod8 (i+5)mod8 Qi+6)mod8 (i+7mod8 Ci上式中 Cf 是指值为63字节 C 第 i 位,即(C8,

44、C7,C6,Cs,C4,C3,C2,C|,C)=(01 10001 1)。 符号C)表示更新后的变量的值。AES用以下的矩阵方式描述了这个变换:1 0 0 0 1 111f110 0 0 1111b2111 0 0 0 11b20S11110 0 0 1丄06111110 0 060bs0 111110 0bs150 0 11111051A.0 0 0 11111A.08.5行位移变换(ShiftRows)State的第一行字节保持不变,State的第二行字节循环左移一个字节,State的第三行字节循环左移两个字节,State的第四行循环左移三个字节。变化如图2所示。ShiftRows 之前1

45、405dab7810clfd319113f280b2a45ShiftRows 变换ShiftRows 之后1405dab10clfd78113(31945280b2a21图 2 ShiftRows 变换8. 6列混合变换(MixColumns)列混合变换是一个替代操作,是AES最具技巧性的部分。它只在AES的第0, 1,,Nr1轮中使用,在第N r轮中不使用该变换。乘积矩阵中的每个元素都 是一行和一列对应元素的乘积之和。在MixColumns变换中,乘法和加法都是定义在 GF(28)的。State的每一列(如)1=0, .,3; J=0,,乙被理解为GF(28)上的多项 式,该多项式与常数多项

46、式a(x) = a3x3 +a2x2 + axx + aQ相乘并模M(x) = x4 +1约化。这个运算需要做GF(28)上的乘法。但由于所乘的因子是三个固定的元素02、03、01,所以这些乘法运算仍然是比较简单的(注意到乘法运算所使用的模多项式为w(x) = x8+x4+x3+x + l)o 设一个字节为 b=(b7b6b5b4b3b2blb0),则bx*or=b:bx3.03 01 01 028.7 密钥加变换(Add RoundKey)Add RoundKey称为轮密钥加变换,128位的State按位与128位的密钥XOR: (bQj,bXj,h2j,b3j ) - (b0J,bJ,b2

47、.,b3j) (kOj,kXj,k2j,k3J)对 j=0 ,L-l 轮密钥加变换 很简单,却影响了 State中的每一位。密钥扩展的复杂性和AES的其他阶段运算的复 杂性,却确保了该算法的安全性。9.解密解密算法可通过直接利用步骤InvSubBytes、InvShiftRows、InvMixCloumns和 AddRoundKey的逆并倒置其次序而得到,此算法称为直接解密算法。在这个算法中, 不仅步骤本身与加密不同,而且步骤出现的顺序也不相同。为了便于实现,通常将惟 一的非线性步骤(SubBytes)放在轮变换的第一步(见第四章),我们在设计时已经考 虑到这一点。Rijndael的结构使得有

48、可能定义一个等价的解密算法,其中所使用的步骤 次序与加密相同,只是将每一步改成它的逆,并改变密钥编排方案。注意这种结构上 的一致性不同于采用Feistel结构的许多密码中的组件和结构的一致性,IDEA也是一 样。9.1两轮AES的解密两轮Rijndael的直接解密算法依次由FinalRound的逆、Round的逆和密钥加法组 成。Round的逆变换记作InvRound. FinalRound的逆记作InvFinalRound,这两个变换 均在列表3.5中描述。列表3.6给出了两轮Rijndael的直接解密算法。列表3.5直接解密算法的轮变换InvRound(State,Expandedekyi

49、)AddRounddeky(State,Expandedkeyi);InvMixCloumns(State);InvShiftRows (State);InvSubBytes(State);InvFinalRound(State,Expandedeky )AddRounddeky(State,Expandedkey N” );InvShiftRows (State);InvSubBytes(State);列表3.6两轮AES的直接解密算法AddRounddeky(State,Expandedkey2);InvShiftRows (State);InvSubBytes(State);AddRou

50、nddeky(State,Expandedkey 1 );InvMixCloumns(State);InvShiftRows (State);InvSubBytes(State);AddRounddeky(State,ExpandedkeyOJ);9.2代数性质为了得到等价的解密算法,我们利用了一些步骤的以下两个性质:(1) InvShiftRows 和 InvSubBytes 的次序无关紧要。(2) 如果调整相应的轮密钥,AddRoundKey和InvMixColumns的次序可以颠倒。 对第一个性质可做如下解释:InvShftRovvs只对字节进行换位,而不影响字节的值。InvSubByt

51、ea作用在单字节上,而与这些字节的位置无关。因此,这两步可以交换。对第二个性质的解释有些巧妙。对于任意的线性变换A: xy=A(x),有定义:A(xk)=A(x)A(k)由于步骤AddRoundKey仅将常量ExpandedKeyi与其输入相加,而且 InvMixColumns是一个线性运算,因此步骤AddRounddeky(State,Expandedkeyi);InvMixCloumns(State);可用以下等价的步骤来代替:InvMixCloumns(State);AddRounddeky(State,Expandedkeyi);其中,Expandedkeyi通过将 InvMixClo

52、umns 作用于,Expandedkeyi上而得到。第三章AES的实现1.软件系统概述AES不但具有良好的安全性,但而且适合在多种处理器办软件编程上方便快捷的实 现。本文是基于32位操作系统下,用Visual C+软件开放了一个界面友好的MFC平 台。下面介绍AES的典型软件实现的主要方法和遇到的问题。程序界而:esCode程序功能介绍:本程序分为两部分,一部分是字符串加密解密,另一部份是文本加密解密。字符串加密部分,可以选择密钥长度:分别为128、192、256比特,并且可以自 己设置密码。然后只要在待加密的字符串窗口中输入要加密的字符串,就可以相应的 进行加密解密。以密码长度选128bits,设置为1234.文本加密部分能够入Ltxt格式的文本,然后按128比特每组分组进行加密,再保存为.txt.en文本,

温馨提示

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

评论

0/150

提交评论