标题 | AES算法中轮变换改进研究 |
范文 | 摘要:高级加密标准AES算法中没有大量复杂的数学运算,可以通过查表操作和组合逻辑电路实现各种变换[1]。已经有很多文献研究了AES算法在不同硬件上的高效实现[2]。在对大数据量的文件进行加密时,软件的执行是否高效也是一个重要的问题。从算法的执行效率考虑,首先替换了列混合运算用到的矩阵,然后将AES算法轮变换中字节代替、行移位、列混合、轮密钥加四个运算过程合并,得到D盒。通过C语言编程验证了原算法中加密过程和使用D盒加密的效率,证明了D盒的运算效率相比原算法提升了240%。 关键词:AES算法;矩阵;效率;D盒 中图分类号:TP309 文献标识码:A 文章编号:1009-3044(2020)08-0233-03 1 概述 AES算法是美国国家标准技术研究所(NIST)在2001年发布的一种以Rijndael分组密码算法为基础的加密标准;原型采用的是Square算法,设计策略是宽轨迹策略[3],使用的是替代/交换(SP)网络。AES算法是一种数据分组长度为128bit的迭代分组加密算法,使用三个密钥长度:128bit、192bit.256bit,每种密钥对应的轮数分别为10轮、12轮或14轮。本文研究的密钥长度为128bit的加密,记为AES-128。算法共进行了10轮加密,除了最后一轮没有列混合外,前9轮都是相同的轮变换,由字节代替、行移位、列混合和轮密钥加按序进行运算。所以轮变换函数是AES算法中最为核心的步骤,它的效率决定了整个算法的加解密速度。本文通过分析轮变换四步运算,针对加解密时间不对等的问题,改进了列混合中用到的矩阵。然后简化轮函数通过查表的方式快速实现轮变换,提高了AES算法的实现速度。 2 轮变换过程 (1)字节代替 字节代替是一个关于字节的非线性变换[4]。它是一个简单的查表操作,在状态矩阵中的每一字节是通过一个16x16个字节的S盒替换成相应的其他字节。解密时用逆S盒代替S盒。 (2)行移位 行移位是将状态矩阵中的4个字节进行循环左移操作。移动的偏移量取决于密钥的长度,当密钥长度为128比特时,状态矩阵的第0行循环左移0字节,第1行循环左移1字节,第2行循环左移2字节,第3行循环左移3字节[5]。解密时逆向行移位就是将状态矩阵中的字节循环右移相应位数。 (3)列混合 列混合变换是把状态矩阵中的每一列看作GF(28)域上一个多项式b(x)。将行移位后的状态矩阵与固定多项式c(x)=03'X3+'01,X2+'01,x+02'相乘后再模(x4+1),即:b'(x)= (4)轮密钥加 轮密钥加变换是利用轮密钥对状态进行模2相加的变换,然后将每一轮的轮变化结果同特定的轮密钥进行异或操作,即轮密钥被简单的逐位异或到状态中去。解密时的轮密钥加操作与加密过程操作相同,因为异或运算的逆向操作就是其本身[6]。 3 算法改进 根据前面介绍可知,在AES-128加密过程中共进行了10轮加密,除了最后一轮没有列混合外,前9轮都是相同的轮变换。那么改进思路就是将每一轮中的4步运算合并成一个查表操作,这种合并操作省略了复杂的求乘法逆运算、矩阵乘法运算,大大减少了算法执行的时间复杂度,在不影响加密结果的情况下使效率得到了提升。 3.1 列混合的优化 相比列混合变换需要执行2次x乘运算和4次XOR加法,逆向列混合变换需要执行12次x乘运算和9次XOR加法[7],解密速度相应增长,远远慢于加密速度。针对加解密过程耗时不对等的问题,文献[8]提出了一种变换矩阵,对列混合和逆向列混合用到的系数矩阵做了正交化处理,使得逆矩阵等于它本身。用A矩阵代替原AES算法中列混合和逆向列混合运算中的矩阵,减少了逆向列混合运算所消耗时间,使正向列混淆运算和逆向列混淆运算消耗相同的运算资源,均为执行2次x乘运算和4次XOR加法。由此在加解密过程中可具有同样的运算量[9]。正交化后的系数矩阵如(3)所示:位就能快速实现一次加密轮变换中的四个步骤,只占用IKB的存储空间,提升算法实现效率的同时也节省了存储空间。这种优化结构在32位处理器上处理效率最高。在加密的最后一轮,没有列混合的运算,故将D盒用S盒替换回来即可。 改进后的轮变换用伪C语言描述如下: Round(unsigned long int*a,unsigned long int*k, unsigned longint*e) ( for(int j_0;j<4;j++) ( unsigned long int DO=O,DI=O,D2=O,D3=0; DO=D[a[4*ill; D1=(D【a【1+4*((j+1)%4)】]>>8)I(D【a[1+4*(j+1)%4)]】<<24; D2=(D【a[2+4*(j+2)%4)]】>>16)I(D[a【2+4+(j+2)%4)]]<<16; D3=(D【a[3+4*(J+3)%4)]]>>24)I(D【a【1+4*(j+1)%4)]]<<8; ej]=DO^D1“D2“D3“k ) ) *a为aState矩阵的首地址,*k指向每一轮的轮密钥的首地址,*e返回经过一轮变换后的State矩阵的首地址,D[]是构造出来的DO盒 4 总结 本文采用了一种D盒查表操作,合并了AES算法中轮变换的4步运算。经过C语言编写代码验证,改进后的D盒在性能上大约提升了240%。因此,在不改变S盒内部结构的情况下,加密效率得到了极大的增强。与原AES算法加密过程相比,新改进的D盒查表法具有处理速度快、计算效率高、软硬件实用性好的特点。改进后只需要构造一张D。表,虽然节省了空间,但是轮变换函数每次查表都必须进行移位操作,可能会造成性能降低。后期的研究主要集中在验证D盒的有关密码学性能以及对AES算法中轮变换函数进一步改进。 参考文献: [1]王春蕾.AES密码硬件实现方法研究[D].青岛:青岛科技大学,2010. [2]于赛.基于分组密码算法的侧信道分析与实现[D].成都:电子科技大学,2019. [3]樊变霞.面向大数据的加密方法研究[Dl.黄石:湖北师范大学。2016. [4]鲁艳蓉.分组密码算法的设计与分析研究[D].西安:西安电子科技大学,2011. [5]李万兴,密码算法的能量分析研究[D].济南:山东大学,2011. [6]王小伟.AES加密算法的研究与IP核设计实现[D].哈尔滨:哈尔滨工业大学,2013. [7]王敏.基于组件技术的智慧住区信息门户的应用研究[D].济南:山东建筑大学,2017. [8]肖振久,胡馳,姜正涛,等.AES与RSA算法优化及其混合加密体制[J].计算机应用研究,2014,31(4):1189-1194,1198. [9]李京,李永珍.AES改进算法在CCMP协议中的应用[J].延边大学学报:自然科学版,2015,41(3):244-248. 【通联编辑:代影】 收稿日期:2020-02-27 作者简介:陈晓宇(1994-),男,湖北潜江人,硕士研究生,主要研究方向为信息安全。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。