对AES128算法实现加速问题研究.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对AES128算法实现加速问题研究

对AES128算法实现加速问题研究      摘要:对AES算法的设计进行分析,为充分利用32位处理器的运算能力,根据轮函数的特点,对轮函数的三个线性变换进行合并,得到三种不同的优化方案,并通过理论分析和编程测试对这三种优化和原方法进行了详细的比较。   关键词:AES-128;轮变换代数优化;实现加速   中图分类号:TP309.7文献标识码:A文章编号:1007-9599 (2012) 06-0000-02   一、引言   Rijndael密码算法于2000年10月被NIST选为AES(高级加密算法),目前AES在全球各个领域中得到广泛应用。它是一个可变数据块长和可变密钥长的迭代分组加密算法,数据块长和密钥长可分别为128、192或256比特。本文以128位AES为例,对其实现加速问题进行研究。   二、AES的算法描述   AES是一个轮迭代的分组密码,非Feistel结构,每轮都使用代换和混淆并行处理分组,主要包含密钥扩展、加密和解密这三大模块,其中,轮函数是AES的核心模块,对整个算法实现的速度影响极大。AES的轮(除最后一轮外)变换由四个不同的变换组成,这些变换我们称之为内部轮函数,分别为:SubBytes字节代换,ShiftRows行移位,MixColumns列混淆,AddRoundKey轮密钥加,其中在最后一轮中没有列混合层。   三、AES轮变换的代数方程与优化   (一)AES轮变换的代数方程   AES的每一轮中包含一个混淆和三个代换,其中非线性部分中有SubBytes(S盒的字节代换),根据前面的分析,每一轮的输出依赖且仅依赖4个输入字节,因此可写出轮变换相应的代数方程式。   现假设第r轮变换的输入为Xr,Xr=xr0xr1…xr15,输出为Yr,Yr=yr0yr1…yr15,密钥为Kr,Kr=kr0kr1…kr15,15,其中,xri,Kri,Yri∈GF(256),分别是第r圈的输入、密钥和输出的第i个字节。SubBytes用函数S(X)表示,SubBytes输出为S(Xr),S(Xr)=S(xr0)S(xr1)…S(xr15)。   根据崔国华等人的《AES算法的实现研究》[1],AES的轮变换可以表示为一下形式:    ,i=0,1,2,3   其中,   其他三列同理可得。   (二)AES轮变换的优化   将上面的矩阵乘法用线性的向量组合来表示,得到:      根据式(1),我们可以定义如下四张表:    , , ,   依据这四张表,轮变换可改写为:    ,   由于 长度为8bit,因而以上四个表都包含了256个(28个)4字节的条目,存储需占4KB的空间,有了这四张表,对每一列的轮变换只需要进行4次查表和4次异或操作,这样极大的提高了算法的效率。此外,四张表可以通过其中一张表的循环移位来生成。因此可以只构造其中一张表,只是这样对于每一轮的每一列都增加3次循环移位操作。   根据式(2),考虑到加密过程中MixColumns变换前乘矩阵 的特殊性( ),我们可以将其中列中的四个字节 化为32比特的s,这样剩下的是在字一级上的字节循环移位和字的倍乘运算(3s是倍乘和一个加的组合2s+s),其中倍乘运算可以通过移位实现。   因此,在进行AES加解密时,我们可以采用不对称的方法进行操作,加密时,根据MixColumns变换前乘矩阵特殊性,将列化为四个字节整体,进行字一级上的字节循环移位和字的倍乘运算得到加密结果,每一轮仅需5次异或,4次移位(3次循环移位加1次移位实现的倍乘);而在解密时,采用存表查询的方法,构造四张包含了256个(28个)4字节条目的表,占4KB的空间,这样对每一列的轮变换只需要进行4次查表和4次异或操作。   四、优化后性能分析与测试   以加密过程为例,根据上述代数推演,得到3种优化方法,分别是:优化一:存储四张包含256个4字节条目的表,轮变换通过查表实现;优化二:存储一张表(同上),其他三张通过这张循环移位得到,轮变换通过查表实现;优化三:不存表,利用MixColumns变换前乘矩阵特点简化运算,但加密时需查S盒。   将这三种与原始为优化的方法每一列的轮变换部分包含的操作、运算以及所占用空间进行比较,比较结果如下:表1中,优化一和优化二的查表均为查一个256长度的一维表,优化三及原始方法则是查16*16的二维表(即字节变换的查S盒操作)。可以明显看出,优化一实现最快,但所占空间最多,优化二与优化三操作数相近,但优化二占用空间比优化三多,优化三虽为三种优化中较慢的一个,但比原始方法还是要好非常多的,而且不占用额外空间。   在PC机上进行测试比较。以20M随机数据为例进行加密测试,每种算法各测试三

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档