AES算法中轮变换改进研究

2020-05-13 14:15陈晓宇
电脑知识与技术 2020年8期
关键词:矩阵效率

摘要:高级加密标准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-),男,湖北潜江人,硕士研究生,主要研究方向为信息安全。

猜你喜欢
矩阵效率
注意实验拓展,提高复习效率
关于矩阵奇异值分解的注记
初等行变换与初等列变换并用求逆矩阵
矩阵
矩阵
矩阵
跟踪导练(一)2
“钱”、“事”脱节效率低
非首一矩阵多项式的解
提高讲解示范效率的几点感受