Aes加密算法中列混淆过程指令优化方法及其指令集处理器的制作方法

文档序号:6650700阅读:926来源:国知局
专利名称:Aes加密算法中列混淆过程指令优化方法及其指令集处理器的制作方法
技术领域
本发明涉及AES的加解密技术,尤其涉及AES加密算法中列混淆过程指令优化方 法及其指令集处理器。
背景技术
AES是The Advanced Encryption Mandard (高级加密标准)的简称,是美国国家 标准与技术研究所(NIST)公布的一种用于加密电子数据的规范,其被广泛地讨论和认可, 成为全球信息安全领域中应用最为广泛的一种分组密码算法。AES算法采用对称分组密码 体制,密钥长度可以分别为1 位、192位、256位,而分组长度固定为1 位。AES加密过程以轮为单位对原文进行加密,而在每一轮中主要包括了以下四个过 程(1)字节替换(SubBytes),该过程根据生成的Sbox进行查表,将原文替换成表中对应的 字符;( 行位移(ShiftRows),它将数据矩阵的行按照不同的偏移量进行循环移位,而偏 移量可以有不同的选择;C3)列混淆(MixColumns),通过左乘矩阵运算对数据矩阵进行列 变化,而且采用GFQ8)域内乘法;(4)密钥加层运算(AddRoimdKey),对数据矩阵进行密钥 相加操作。AES加密算法整体上使用了相当简单明了的代替和置换技术来进行加密,但是除 了第三步列混淆过程以外。列混淆过程采用了 GFQ8)域内乘法和加法,域内的加法比较简 单,就是异或操作O(OR),但域内的乘法运算过程比较繁琐而大部分域内乘法都采用多项式 乘法来实现。在GFQ8)上的任意一个元素bAb+Ab^b。对应的多项式f(x) = b7x7+b6x6 +b5X5+b4X4+b3X3+b2X2+blX+b0,与 X 相乘,有如下结论
广,、Ibf-X1 + Lx6 + b,x5 + Lx4 + Lx3 + hx2 + Lx^b7= O
XX J(X)= <即对应的域内乘法为A= 00000010B = b7b6b5b4b3b2b1b0,则有
A><B = 1^! 0若 b7 = O
χ ~ [ (b6b5b4b3b2bJy0O)十(00011011) 若1^7 = 1其中b7等于1表明相乘后的结果将超过域的范围,因此相乘后的结果需要与Oxlb 进行异或。如果乘以一个高于一次的多项式,可以重复使用上式,最终的结果采用多个中间 结果相加(域内的加法用异或实现)来获得。由于列混淆的复杂性,它影响了 AES加密算法的整体速度,因此目前存在多种对 列混淆变化的优化技术,主要集中于3方面第一种方法是根据域内乘法的性质将乘法进行拆分,使用之前计算的结果进行简 单相加组合,有效的避免了一些域内乘法的计算,以此来提高了算法的执行效率。第二种方法是直接采用硬件实现列混淆过程的方法进行加速;
第三种方法是对列混淆过程进行指令集的扩展优化,设计加速其运行的指令集。第一种方法实际上是对算法本身进行优化,但是存在优化瓶颈,加速效果有限;第 二种采用硬件加速的方法,虽然在加速效果上比较明显,但是这种优化方法可扩展性较弱, 占的硬件资源相对较多,而且与程序中的其它模块结合相对较难;第三种方法通过对指令 集扩展优化的设计方法,不仅减少了执行代码空间,提高了算法执行速度,而且在设计上 易于实现,灵活性也比较强,对硬件资源的要求也比第一种方法要小很多,适合于小规模电 路。由于这种优化技术的良好性能,它已经被应用到了多种加密算法的加速优化中。

发明内容
本发明的目的在于提供一种针对AES加密算法中列混淆过程指令优化方法及其 指令集处理器。本发明采用了 3条专门用于加速优化AES加密算法中的列混淆过程的扩展 指令,并且设计了一款与新指令集相对应的专用指令处理器模型-MASIP。通过与广泛使用 的ARM处理器对比发现,经过指令扩展优化后,AES加密算法中的列混淆过程在本发明设计 的MASIP处理器中仅占用M8bytes的代码存储空间,比在ARM处理器中减少了 48. 6% ;执 行运算周期也由原来的3775个时钟周期缩减到2019个时钟周期,执行效率比ARM处理器 提升了 46. 6% ο为实现上述目的,本发明采用如下技术方案一种AES加密算法中列混淆指令优化方法,在满足不改变指令操作码长度、指令 位数以及不影响处理器运行速度的前提下,它的步骤为1)在执行AES加密/解密算法列混淆运算时,矩阵相乘操作过程中需要多次定位 矩阵中数据的位置,即取出matrix[i][j]位置的数据。在实际内存中矩阵的数据是线性 存储的,因此在传统的ARM处理器中,需要通过根据i和j计算出实际内存中数据的偏移 位置,在基地址matrix的基础上根据偏移位置查找数据,因此完成该功能需要6条汇编语 句,因此需要6个时钟周期。为了加速该过程,我们设计并采用了指令matrixp0s<dest> = <srcl>, <src2>, <src3>, <src4>0该指令的功能是对基地址存放在通用寄存器srcl的矩阵 进行取位操作,src2和src3指示目标数据所在的行和列,而src4指示矩阵的总行数(列 数)。取出的数据将存放在dest表示的通用寄存器中。以上过程将在一个时钟周期内完成, 因此比传统处理器的处理速度提高了 6倍,从而对列混淆过程中的域内乘法运算进行了加 速。2)在进行矩阵相乘时,新矩阵第i行第j列的元素等于左矩阵的第i行的所有元 素与右矩阵第j列的所有元素相乘后相加所得。在AES加密算法中,分组的长度固定为1 位,而在列混淆过程中所有的矩阵都是4*4的。因此列混淆过程中的矩阵相乘,需要经常用 到四元异或操作来获得变化后矩阵的元素。在传统的ARM处理器中,没有专门针对该过程 的指令,而完成该四元操作需要3条汇编语言,因此需要3个时钟周期。为了加速以上过程, 设计并采用了新指令xor4<dest> = <srcl>, <src2>, <src3>, <src4>。该指令的功能是将 srcl到src4所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用 寄存器中。以上将在一个时钟周期内完成,因此比传统处理器的处理速度提高了 3倍,从而 对列混淆过程中的域内乘法运算进行了加速。3)矩阵相乘采用域内相乘法,即采用多项式乘法,在具体实现多项式乘法时,一般
5都采用异或后移位的基本操作。因此在列混淆过程中,将大量重复以上过程。为了加速以 上过程,设计并采用了新指令xor_move<srcl>,<src2>, <src3>, <src4>, <src0>。该指令的 功能是判断srcl与src2相与的结果,如果为1,则对src3和src4进行异或,并将结果保存 在src3中;如果为0,则不执行异或操作;在执行以上操作的同时,指令并行完成对srcO的 移位操作。因此以上过程将在一个时钟周期内完成,而在传统的ARM处理器中,完成以上功 能需要5条汇编语言,因此处理速度提高了 5倍,从对列混淆过程中的域内乘法运算进行了 加速。通过上述三条扩展指令的运行,加速AES加密算法中的的列混淆过程。一种根据扩展指令集设计的指令集处理器模型,它在硬件逻辑上实现了上述 扩展指令,因此能够用于AES加密算法中列混淆过程的加速。处理器模型主要由数据 存储器、代码存储器、寄存器堆和流水线四部分组成;其中,数据存储器地址空间定义在 0x0000-0x7FFF范围内,大小32K ;代码存储器地址空间定义在0x8000_0xFFFF范围内,大 小为32Kbytes ;寄存器堆主要由32个通用寄存器、1个取指寄存器、1个堆栈指针寄存器和 1个链接寄存器组成;流水线采用三级流水线取指流水线、译码流水线和执行流水线;流 水线控制器对跳转指令译码部件进行控制,跳转指令只需要将跳转地址存储在取指寄存器 中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指 令进行执行;在处理器中除了通用指令译码部件和逻辑算术指令执行部件外,还添加了针 对列混淆过程专用指令的列混淆扩展指令译码部件和列混淆扩展指令执行部件,来对扩展 的指令进行专门的译码和执行。在列混淆扩展指令执行部件中,主要包括了 3条新扩展指 令的执行部件。所述扩展指令matrixpos执行部件包括1个乘法器、1个加法器、1个多路选择器 和1个数据存储器,部件的执行末端是整个处理器共用的通用寄存器堆。乘法器输入端接 受立即数i和n,而输出结果则是i与η的乘积;该乘积结果将作为加法器的输入,加法器 的另外两个输入为通用寄存器rl和立即数j,而它的输出则是三个输入的和,即目标元素 在内存中的地址;该地址将被作为数据存储器的输入,而数据存储器的输出则是目标元素 的值;控制信号matrixpotexe通过多路选择器I来控制地址选择;如果控制信号是1,则 多路选择器I将目的通用寄存器r2的32位地址传递给通用寄存器堆,从而将数据存储器 的输出结果赋给r2 ;如果控制信号是0,则多路选择器I将5位0传递给寄存器堆,即传递 空地址,而处理器判断是空地址后将不进行赋值操作。所述扩展指令Xor4执行部件包括1个异或电路组和1个多路选择器,而部件的执 行末端是通用寄存器堆。异或电路组由一系列异或逻辑门组成,它输入端接收通用寄存器 r2、r3、r4、r5的数据,输出结果为4元异或后的值;控制信号XOr4_eXe控制多路选择器II, 同时多路选择器II接受5位的0和通用寄存器rl的地址,来控制地址选择;当控制信号为 1时,多路选择器II将rl的地址传送给寄存器堆,从而将异或电路组的输出结果赋给rl ; 如果控制信号为0时,多路选择器II将5位0传递给寄存器堆,即传递空地址,而处理器判 断是空地址后将不进行赋值操作。所述扩展指令xorjiiove执行部件包括2个与门、1个或门、1个异或逻辑门、2个多 路选择器以及1个移位器,而部件的执行末端是通用寄存器堆。与门I输入端接受通用寄 存器rl与r2的,而它的输出是rl和r2相与后的一个32位数值;或门完成的功能是对与
6门I的输出,即32位数值进行逐位相或,而产生的输出是一个1位的数值;该输出将与控制 信号XOr_mOVe_eXe —起作为与门II的输入,而与门II的输出将作为多路选择器III的输 入,来控制地址选择;如果与门II的输出是1,则多路选择器III将通用寄存器r3的地址 传递给寄存器堆,从而将通用寄存器r3和r4通过异或逻辑门的输出结果赋给r3 ;如果与 门II的输出是0,则多路选择器III将5位0传递给寄存器堆,即传递空地址,而处理器判 断是空地址后将不进行赋值操作。与此同时,控制信号XOr_mOVe_eXe通过多路选择器IV 来控制移位操作的执行,即如果控制信号为1,则将移位的结果赋给r0,否则不进行赋值操 作。以上的异或和移位操作将并发执行。本发明通过对AES算法中列混淆过程进行分析,在满足不改变指令操作码长度、 指令位数以及不影响处理器运行速度的前提下,对AES加密算法中的列混淆过程进行了指 令扩展优化,共设计了 3条扩展指令用于加速AES加密算法中的列混淆过程,具体设计过程 如下1.在执行AES加密/解密算法列混淆运算时,矩阵相乘操作过程中需要多次定位 矩阵中数据的位置,即取出matrix[i] [j]位置的数据。在实际内存中矩阵的数据是线性存 储的,因此在传统的ARM处理器中,需要通过根据i和j计算出实际内存中数据的偏移位 置,在基地址matrix的基础上根据偏移位置查找数据。该步骤对应的执行语句为χ = matrix [i] [j];而对应的ARM编译器汇编语言为6条语句move rl, matrixmove r2, imul r2 = r2,ηadd r2 = r2, jadd r2 = r2, rlload rl = r2上述汇编语言的含义是先将矩阵matrix的基址存入寄存器rl中,然后根据公式 i*n+j确定元素matrix[i] [j]]在内存中的位置,最后将该地址对应的数据存入目标通用 寄存器rl中。根据上述汇编语言的功能,设计了一条新的指令matrixpos,能够在一个时钟周期 内完成6条语句所完成的功能。新指令matrixpos<dest> = <srcl>,<src2>,<src3>,<src4> 一共有5个操作码,其中dest和srcl是通用寄存器类型,分别对应着存放目标元素的目的 通用寄存器和存放矩阵基址的通用寄存器,而src2、src3以及src4是立即数类型,分别对 应着目标元素所在行、目标元素所在列以及矩阵的阶数。指令的具体格式如表1所示表 Imatrixpos 指令格式
权利要求
1.一种AES加密算法中列混淆过程指令优化方法,其特征是,在满足不改变指令操作 码长度、指令位数以及不影响处理器运行速度的前提下,它的步骤为1)在执行AES加密/解密算法列混淆运算时,矩阵相乘操作过程中采用多次定位矩 阵中数据的位置,即取出matrix[i] [j]位置的数据;运算时采用指令matrixpoKdest〉= <srcl>, <src2>, <src3>, <src4>,该指令对基地址存放在通用寄存器srcl的矩阵进行取位 操作,src2和src3指示目标数据所在的行和列,而src4指示矩阵的总行数或列数,取出的 数据将存放在dest表示的通用寄存器中,以上过程在一个时钟周期内完成,从而对列混淆 过程中的矩阵取位操作进行了加速;2)在进行矩阵相乘时,新矩阵第i行第j列的元素等于左矩阵的第i行的所有元素 与右矩阵第j列的所有元素相乘后相加所得,在AES加密算法中,分组的长度固定为1 位,而在列混淆过程中所有的矩阵都是4*4的,因此列混淆过程中的矩阵相乘,需要经常用 到四元异或操作来获得变化后矩阵的元素,为此采用指令xor4<dest> = <srcl>, <src2>, <src3>, <src4>,该指令将srcl到src4所表示的通用寄存器中的内容进行异或操作,结果 保存在dest所表示的通用寄存器中,以上在一个时钟周期内完成,从而对列混淆过程中的 域内乘法运算进行了加速;3)矩阵相乘采用域内相乘法,即采用多项式乘法,在具体实现多项式乘法时,一般都采 用异或后移位的基本操作;为了加速该过程,采用指令xor_mOVe<Srcl>,<src2>, <src3>, <src4>,<src0>,该指令判断srcl与src2相与的结果,如果为1,则对src3和src4进行异 或,并将结果保存在src3中;如果为0,则不执行异或操作;在执行以上操作的同时,指令并 行完成对srcO的移位操作;以上过程在一个时钟周期内完成,从对列混淆过程中的域内乘 法运算进行了加速;通过上述三条扩展指令的运行,加速列混淆过程。
2.一种用于权利要求1所述的AES加密算法中列混淆过程指令优化方法的指令集处 理器,其特征是,它主要由数据存储器(1)、代码存储器(3)、寄存器堆(2)和流水线四 部分组成;数据存储器(1)地址空间定义在0x0000-0x7FFF范围内,大小32K ;代码存储器 (3)地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes ;寄存器堆O)由32个通用 寄存器GPR
、1个取指寄存器FPR、1个堆栈指针寄存器SI3R和1个链接寄存器LR 组成;流水线(4)采用三级流水线取指流水线(5)、译码流水线(6)和执行流水线(7);流 水线控制器(14)对跳转指令进行控制,跳转指令只需要将跳转地址存储在取指寄存器FPR 中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指 令进行执行;处理器除通用指令译码部件(9)和读写指令执行部件(11)、逻辑算术指令执 行部件(1 外,还设有列混淆过程专用指令的列混淆扩展指令译码部件(10)和列混淆扩 展指令执行部件(13),来对扩展的指令进行专门的译码和执行;在列混淆扩展指令执行部 件(1 中,设有扩展指令的执行部件。
3.如权利要求2所述的用于AES加密算法中列混淆过程指令优化方法的指令集处理 器,其特征是,所述扩展指令matrixpos执行部件包括1个乘法器(17)、1个加法器(18)、1 个多路选择器1(19)和1个数据存储器(20),部件的执行末端是整个处理器共用的通用寄 存器堆;乘法器(17)输入端接受立即数i和n,而输出结果则是i与η的乘积;该乘积 结果将作为加法器(18)的输入,加法器(18)的另外两个输入为通用寄存器rl和立即数j,而它的输出则是三个输入的和,即目标元素在内存中的地址;该地址将被作为数据存储器 (20)的输入,而数据存储器00)的输出则是目标元素的值;控制信号matrixposjxe通过 多路选择器I (19)来控制地址选择;如果控制信号是1,则多路选择器I (19)将rl的32位 地址传递给通用寄存器堆,从而将数据存储器的输出结果赋给rl ;如果控制信号是0,则多 路选择器I (19)将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进 行赋值操作。
4.如权利要求2所述的用于AES加密算法中列混淆过程指令优化方法的指令集处理 器,其特征是,所述扩展指令xor4执行部件包括1个异或电路组0 和1个多路选择器 11 ,而部件的执行末端是通用寄存器堆;异或电路组0 由一系列异或逻辑门组 成,它输入端接收通用寄存器r2、r3、r4、r5的数据,输出结果为4元异或后的值;控制信 号x0r4_exe控制多路选择器II (23),同时多路选择器II (23)接受5位的O和通用寄存器 rl的地址,来控制地址选择;当控制信号为1时,多路选择器11 将rl的地址传送给 寄存器堆,从而将异或电路组0 的输出结果赋给rl ;如果控制信号为O时,多路选择器 II (23)将5位O传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操 作。
5.如权利要求2所述的用于AES加密算法中列混淆过程指令优化方法的指令集处理 器,其特征是,所述扩展指令xorjiiove执行部件包括2个与门、1个或门0 、1个异或逻辑 门07)、2个多路选择器以及1个移位器(30),而部件的执行末端是通用寄存器堆;与 门I 04)输入端接受通用寄存器rl与r2的,而它的输出是rl和r2相与后的一个32位数 值;或门0 完成的功能是对与门K24)的输出,即32位数值进行逐位相或,而产生的输 出是一个1位的数值;该输出将与控制信号xor_mOVe_exe—起作为与门IK26)的输入,而 与门IK26)的输出将作为多路选择器111( )的输入,来控制地址选择;如果与门II 06) 的输出是1,则多路选择器111 (28)将通用寄存器r3的地址传递给寄存器堆,从而将通用寄 存器r3和r4通过异或逻辑门Q7)的输出结果赋给r3 ;如果与门II Q6)的输出是0,则多 路选择器III (28)将5位O传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不 进行赋值操作;与此同时,控制信号Xor_mOVe_exe通过多路选择器IVQ9)来控制移位操作 的执行,即如果控制信号为1,则将移位器(30)的结果赋给rO,否则不进行赋值操作;以上 的异或和移位操作将并发执行。
全文摘要
本发明涉及一种AES加密算法中列混淆过程指令优化方法及其指令集处理器。本发明为了加速AES算法中列混淆过程,设计了三条新扩展指令(1)matrixpos=,,,,用来加速列混淆过程中的对矩阵取位操作;(2)xor4=,,,,用来加速列混淆过程中的4元异或操作;(3)xor_move,,,,,用来加速列混淆过程中的域内乘法操作。以上3条指令都将在一个时钟周期内完成,而在传统ARM处理器中,则分别需要多个时钟周期,因此新指令起到了加速作用。本发明还根据上述新扩展指令设计了一款与新指令集相对应的专用指令处理器模型——MASIP。该处理器模型在硬件逻辑上实现了上述扩展指令,因此是一款专门针对于AES加密算法中列混淆过程加速的处理器模型。
文档编号G06F9/30GK102081513SQ201110024639
公开日2011年6月1日 申请日期2011年1月24日 优先权日2011年1月24日
发明者李新, 李沂滨, 贾智平, 陈仁海, 陈健 申请人:山东大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1