资源共享的并行AES加密/解密算法及实现研究
2016-08-13江碧嫦
江碧嫦
(广州历康信息科技股份有限公司,广东 广州 510663)
资源共享的并行AES加密/解密算法及实现研究
江碧嫦
(广州历康信息科技股份有限公司,广东 广州 510663)
随着密码分析技术的进一步发展,高级加密标准(AES)逐渐取代了以往的数据加密标准(DES),成为新一代数据加密标准。现阶段,在应用AES算法的过程中,还存在一些问题,主要表现为吞吐率低、资源消耗大、无法分别实现加密和解密等。文章主要针对在消耗较少资源的条件下获取较高吞吐率的AES加密/解密算法进行研究。
AES算法;加密;解密;复合域
1 AES算法简介
1.1 算法内基本变换
AES是利用明文进行多次循环操作进行加密与解密,属于分组对称加密算法。分组长为128位,密钥长为128位、192位及256位。为方便研究,本文只针对128位密钥的AES算法进行讨论,循环操作轮数为10次。该算法中,加密与解密的轮变化由4个基本变换构成:字节置换变换、行字节移位变换、列字节混合变换、循环密钥添加变换。轮变化中间结果状态字节为16字节,表示方法采用4×4状态矩阵。
1.2 字节置换变换
此类变换为非线性变换,针对的是状态字节,不管是正向还是逆向,都包含两个变换。在正向字节置换中,在有限域GF(28)内先对字节求乘法逆,{00}字节的逆是其自身,最后在有限域GF(2)中进行仿射变换:
上式中,Outi,Ini,ci表示输出字节Out,输入字节In和常数字节c的第i个比特位;表示异或运算;c二进制取值为{01100011}。
在逆向字节置换中,在有限域GF(2)内进行仿射变换:
然后在有限域GF(28)内对字节求乘法逆,其中c值为{00000101}。
1.3 行字节移位变换
针对的是状态矩阵中的字节数和不同方面的循环移位,状态矩阵第0,1,2,3行在正向行字节移位中循环左移0,1,2,3个字节,在逆向行字节移位中循环右移0,1,2,3个字节。
1.4 列字节混合变换
针对的是状态矩阵的列。在有限域GF(28)内每一列都可用4项多项式进行表示,对于正向与逆向列字节混合变换中,通常会用到c(x)与d(x)两个固定的4项多项式:
c(x)={03}x3+{01}x+{01}x+{02}d(x)={0b}x3+{0d}x+{09}x+{0e}
如果正向列字节混合变换的输入状态列为Sc(x),输出状态列为,则有:
如果逆向列字节混合变换的输入状态列为Sc(x),输出状态列为,则有:
1.5 循环密钥添加
种子密钥通过扩展后得到轮密钥,将轮密钥和状态矩阵内对应的字节进行异或运算即为循环密钥。
2 加密与解密算法
在加密过程中,从第0轮变换开始,明文与种子密钥通过循环密钥添加后所得到的结果即为第1轮变化的输入,以此类推,第i-1轮的输出即为第i轮的输入。本文中循环次数设置为10次,则第10轮即可输出密文。进行第10轮输出的时候,不需要列字节混合变换,加密流程如图1(a)所示。而解密的结构与加密基本类似,不同之处在于,除取逆向外,采用的轮密钥也不同,解密的第0轮与第10轮的轮密钥,对应的是加密的第10轮和第0轮密钥,解密的流程如图1(b)所示。图1中,种子密钥就是第0轮密钥,“*”表示对该轮密钥进行逆向混合变换。
图1 加密与解密流程
3 资源共享的并行AES加密与解密算法
3.1 基于复合域的字节置换变换
字节置换与列字节混合变换是AES算法中对资源消耗和时延影响最大的。对公式(1)(2)进行利用,能够构造S盒查找表,实现对字节的置换,虽然其置换的速度比较快,但是存在资源消耗大的问题,并且需要逆向S盒才能解密。所以在有限域GF(28)内,硬件实现难度稍大,但在复合域内可在节省硬件资源的基础上,实现字节置换。在正向字节置换中,先在有限域GF(28)内将输入字节映射到有限域GF(42)内,然后对字节进行求乘法逆,将结果反映射到有限域GF(28)内,最后在有限域GF(2)内仿射变换。对于逆向字节置换时,先要在有限域GF(2)内逆仿射变换。假设a∈GF(28),则有:
GF(42)的多项式加法与乘法运算与GF(28)类似,模多项式为x4+x+1。GF(42)的乘法逆可作如下表示:
3.2 基于硬件的行字节移位变换
可根据移位的字节数与放线连线,几乎不会产生时延,也不会占用大量固定的硬件资源,然后利用选择器对正向与逆向行字节移位变换进行选通即可。
3.3 基于Xtimei()的列字节混合变换
Xtimei()操作是将字节多项式a(x)与x相乘,表示为Xtimei(x(x))=xa(x)。假设ai是字节a的第i比特位,在有限域GF(28)内利用字节多项式加法和乘法运算,可将Xtime()写为:
为了降低时延和硬件消耗,对上式进一步进行推算与定义:
3.4 基于128位加密/解密密钥扩展方案
假设输入128位种子月在加密密钥扩展中为w0,w1,w2,w3,分别表示1个字节,则第i轮的密钥可从第i-1轮密钥中进行推导:
式中,1≤i≤10,SubWord()为正向字节置换变换,RoiWord()为循环左移一个字节,Rcon(i)为循环常数,最左边1个字节有值,其它字节均为{00},可利用有限域GF(28)多项式Xi-1进行表示。对解密密钥进行扩展的时候,解密密钥的第0轮密钥是加密的最后一轮密钥,以此类推,可得到下一轮密钥,然后取逆,可作为该轮解密的密钥。假设上一轮混合变换前的密钥依次为W(4i),W(4i+1),W(4i+2),W(4i+3),对异或运算的性质进行利用,可根据公式(6)对下一轮列混合变换前的密钥进行推导。
3.5 AES加密/解密算法的并行实现
通过分析可知,在每一轮中,输入din,而输出的dout则是作为下一轮的din进行输入,在经过11次循环(包含第0轮)后,输出结果即为明文或密文。
4 结语
本文主要是针对AES算法提高吞吐率与降低资源消耗的方法进行研究,在128位加密与解密密钥扩展与各个变换的基础上,实现字节置换变换在复合域内的优化,通过对Xtimei()结构进行推导及简化,实现了列字节混合变换,都降低了变换时延与资源消耗,同时提出了128位加密/解密密钥扩展方案的共享,利用FPGA验证结果证明了该方案在获取较高吞吐率的同时,有效地降低了资源消耗,能够使吞吐率与资源消耗达到平衡,具有较好的使用价值。
[1]舒骏,王忆文,李辉.一种资源共享的快速加解密AES算法的实现[J].微处理机,2011(2):48-51.
[2]费雄伟,李肯立,阳王东.基于CTR模式的GPU并行AES算法的研究与实现[J].小型微型计算机系统,2015(3):529-533.
Research on the Implementation of Parallel AES Encryption/Decryption Algorithm for Resource Sharing
Jiang Bichang
(Guangzhou Leadcom Information Technology Co., Ltd., Guangzhou 510663, China)
With the further development of the code analysis technology, the advanced encryption standard (AES)has gradually replaced previous data encryption standard (DES) as a new generation of data encryption standard. Of AES algorithm at present, there exist some problems in the process of application, which mainly shows low throughput, resource consumption, unable to realize encryption and decryption respectively. This article mainly aims at consuming less resources conditions to obtain high throughput and AES encryption/decryption algorithm is studied.
AES algorithm; encryption; decryption; composite domain
江碧嫦(1970— ),女,广东广州;研究方向:计算机应用技术。