网站大量收购独家精品文档,联系QQ:2885784924

第7讲--AES算法原理.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* AES 的实现 2 、基于查表的软件实现 用查表实现算法是一种高效的软件设计方法 时空折换是信息科学的基本策略 用查表实现算法,就是用空间换取时间。 目前计算机系统的存储空间大、而且便宜,为查表实现算法提供了基础 * AES 的安全性 能够抵抗目前所有的已知攻击: 穷举攻击。 差分攻击。 线性攻击。 一致攻击。 * AES 的评说 1、AES 的体现 AES 体现Shannon的密码设计理论。 体现了公开设计原则:公开算法 AES 代表当今商业密码的最高水平。 2、AES 需要经过实际应用的检验 实践是检验商用密码的唯一标准。 ‘95’= (149)10 m(x)=100011011=(283)10 Poly_reverse.exe 输入283 149 * Poly_reverse.exe 输入283 131 * 两个矩阵顺序需颠倒 * 比较5.3和5.10 * * 列混淆运算 * 列混淆运算 ?验证47 * ①列混合变换把状态的列视为系数在 GF(28) 上的四次多项式,乘以一个固定的多项式 c(x) ,并模 x 4+1: b(x)=c(x)a(x) mod x 4+1 其中, c(x)=03 x 3+01 x 2+01 x+02 ②列混合变换属于代替变换。 ③ c(x) 与 x 4+ 1 互素,从而保证 c(x) 存在逆多项式 d(x),而 c(x) d(x)=1mod(x 4+1) 。 只有逆多项式 d(x) 存在,才能正确进行解密。 轮函数:列混淆( MixColumn ) * 密钥加是将轮密钥简单地与状态进行逐比特异或。 轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度 Nb 。 状态说与轮密钥 RoundKey 的密钥加运算表示为 AddRoundKey(State, RoundKey) 轮函数:密钥加( AddRoundKey ) * 轮函数:密钥加( AddRoundKey ) * 密钥编排指从种子密钥得到轮密钥的过程 它由密钥扩展和轮密钥选取两部分组成 其基本原则如下: (1)轮密钥的比特数等于分组长度乘以轮数加1; 例如要将 128 比特的明文经过 10 轮的加密,则总共需要( 10+1 )*128=1408 比特的密钥。 ( 2 )种子密钥被扩展成为扩展密钥; ( 3 )轮密钥从扩展密钥中取,其中第轮轮密钥取扩展密钥的前 Nb 个字,第 2 轮轮密钥取接下来的 Nb 个字,如此下去。 密钥编排 * (1) 密钥扩展 ①密钥扩展产生扩展密钥。 ②用一个 4 字节字元素的一维数组 W[Nb*(Nr+1)]表示扩展密钥。 ③数组中最开始的 Nk 个字为种子密钥。 ④其它的字由它前面的字经过递归处理后得到。 ⑤有 Nk ≤ 6 和 Nk6 两种密钥扩展算法。 密钥编排 * (1) 密钥扩展 ⑴ Nk ≤ 6 的密钥扩展 ①最前面的 Nk 个字是由种子密钥填充的。 ②之后的每一个字 W[j] 等于前面的字 W[j-1] 的与 Nk 个位置之前的字 W[j-Nk]的异或。 ③而且对于 Nk 的整数倍的位置处的字,在异或之前,对 W[j-1] 的进行如下变换: ;字节的循环移位 RotByte- 即当输入字为 (a,b,c,d) 时,输出字为 (b , c, d, a ) ;用 S 盒进行变换次位元组- ;异或轮常数 Rcon[i/Nk] 密钥编排 * 密钥编排 * ①当 Nk ≤ 6 时,扩展算法 KeyExpansion (byteKey[4*Nk] , W[Nb*(Nr+1)]) { for (i =0; i Nk; i ++) W[i]=(Key[4* i],Key[4* i +1],Key[4* i +2],Key[4* i +3] ); //扩展密钥的前面4个字由种子密钥组成 for (i =Nk; i Nb*(Nr+1); i ++) { temp=W[i-1]; if (i % Nk= =0)    temp=SubByte (RotByte (temp))^Rcon[i /Nk]; //i是NK的整数倍是要特殊处理 W[i]=W[i-Nk]^ temp; } } 举例: Nk=4,Nb=4,Nr=10 * 密钥编排 异或轮常数 Rcon[i/Nk] :Rcon[i/Nk]=(RC[i],’00’,’00’,’00’) RC[0]=‘01’ RC[i]=2⊙RC[i-1] i 1 2 3

文档评论(0)

js1180 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档