CN102081513A - Aes加密算法中列混淆过程指令优化方法及其指令集处理器 - Google Patents
Aes加密算法中列混淆过程指令优化方法及其指令集处理器 Download PDFInfo
- Publication number
- CN102081513A CN102081513A CN201110024639XA CN201110024639A CN102081513A CN 102081513 A CN102081513 A CN 102081513A CN 201110024639X A CN201110024639X A CN 201110024639XA CN 201110024639 A CN201110024639 A CN 201110024639A CN 102081513 A CN102081513 A CN 102081513A
- Authority
- CN
- China
- Prior art keywords
- instruction
- xor
- address
- row
- general
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种AES加密算法中列混淆过程指令优化方法及其指令集处理器。本发明为了加速AES算法中列混淆过程,设计了三条新扩展指令:(1)matrixpos<dest>=<src1>,<src2>,<src3>,<src4>,用来加速列混淆过程中的对矩阵取位操作;(2)xor4<dest>=<src1>,<src2>,<src3>,<src4>,用来加速列混淆过程中的4元异或操作;(3)xor_move<src1>,<src2>,<src3>,<src4>,<src0>,用来加速列混淆过程中的域内乘法操作。以上3条指令都将在一个时钟周期内完成,而在传统ARM处理器中,则分别需要多个时钟周期,因此新指令起到了加速作用。本发明还根据上述新扩展指令设计了一款与新指令集相对应的专用指令处理器模型——MASIP。该处理器模型在硬件逻辑上实现了上述扩展指令,因此是一款专门针对于AES加密算法中列混淆过程加速的处理器模型。
Description
技术领域
本发明涉及AES的加解密技术,尤其涉及AES加密算法中列混淆过程指令优化方法及其指令集处理器。
背景技术
AES是The Advanced Encryption Standard(高级加密标准)的简称,是美国国家标准与技术研究所(NIST)公布的一种用于加密电子数据的规范,其被广泛地讨论和认可,成为全球信息安全领域中应用最为广泛的一种分组密码算法。AES算法采用对称分组密码体制,密钥长度可以分别为128位、192位、256位,而分组长度固定为128位。
AES加密过程以轮为单位对原文进行加密,而在每一轮中主要包括了以下四个过程:(1)字节替换(SubBytes),该过程根据生成的Sbox进行查表,将原文替换成表中对应的字符;(2)行位移(ShiftRows),它将数据矩阵的行按照不同的偏移量进行循环移位,而偏移量可以有不同的选择;(3)列混淆(MixColumns),通过左乘矩阵运算对数据矩阵进行列变化,而且采用GF(28)域内乘法;(4)密钥加层运算(AddRoundKey),对数据矩阵进行密钥相加操作。
AES加密算法整体上使用了相当简单明了的代替和置换技术来进行加密,但是除了第三步列混淆过程以外。列混淆过程采用了GF(28)域内乘法和加法,域内的加法比较简单,就是异或操作(XOR),但域内的乘法运算过程比较繁琐而大部分域内乘法都采用多项式乘法来实现。在GF(28)上的任意一个元素b7b6b5b4b3b2b1b0对应的多项式f(x)=b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0,与x相乘,有如下结论:
即对应的域内乘法为:A=00000010B=b7b6b5b4b3b2b1b0,则有
其中b7等于1表明相乘后的结果将超过域的范围,因此相乘后的结果需要与0x1b进行异或。如果乘以一个高于一次的多项式,可以重复使用上式,最终的结果采用多个中间结果相加(域内的加法用异或实现)来获得。
由于列混淆的复杂性,它影响了AES加密算法的整体速度,因此目前存在多种对列混淆变化的优化技术,主要集中于3方面:
第一种方法是根据域内乘法的性质将乘法进行拆分,使用之前计算的结果进行简单相加组合,有效的避免了一些域内乘法的计算,以此来提高了算法的执行效率。
第二种方法是直接采用硬件实现列混淆过程的方法进行加速;
第三种方法是对列混淆过程进行指令集的扩展优化,设计加速其运行的指令集。
第一种方法实际上是对算法本身进行优化,但是存在优化瓶颈,加速效果有限;第二种采用硬件加速的方法,虽然在加速效果上比较明显,但是这种优化方法可扩展性较弱,占的硬件资源相对较多,而且与程序中的其它模块结合相对较难;第三种方法通过对指令集扩展优化的设计方法,不仅减少了执行代码空间,提高了算法执行速度,而且在设计上易于实现,灵活性也比较强,对硬件资源的要求也比第一种方法要小很多,适合于小规模电路。由于这种优化技术的良好性能,它已经被应用到了多种加密算法的加速优化中。
发明内容
本发明的目的在于提供一种针对AES加密算法中列混淆过程指令优化方法及其指令集处理器。本发明采用了3条专门用于加速优化AES加密算法中的列混淆过程的扩展指令,并且设计了一款与新指令集相对应的专用指令处理器模型-MASIP。通过与广泛使用的ARM处理器对比发现,经过指令扩展优化后,AES加密算法中的列混淆过程在本发明设计的MASIP处理器中仅占用248bytes的代码存储空间,比在ARM处理器中减少了48.6%;执行运算周期也由原来的3775个时钟周期缩减到2019个时钟周期,执行效率比ARM处理器提升了46.6%。
为实现上述目的,本发明采用如下技术方案:
一种AES加密算法中列混淆指令优化方法,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的前提下,它的步骤为:
1)在执行AES加密/解密算法列混淆运算时,矩阵相乘操作过程中需要多次定位矩阵中数据的位置,即取出matrix[i][j]位置的数据。在实际内存中矩阵的数据是线性存储的,因此在传统的ARM处理器中,需要通过根据i和j计算出实际内存中数据的偏移位置,在基地址matrix的基础上根据偏移位置查找数据,因此完成该功能需要6条汇编语句,因此需要6个时钟周期。为了加速该过程,我们设计并采用了指令matrixpos<dest>=<src1>,<src2>,<src3>,<src4>。该指令的功能是对基地址存放在通用寄存器src1的矩阵进行取位操作,src2和src3指示目标数据所在的行和列,而src4指示矩阵的总行数(列数)。取出的数据将存放在dest表示的通用寄存器中。以上过程将在一个时钟周期内完成,因此比传统处理器的处理速度提高了6倍,从而对列混淆过程中的域内乘法运算进行了加速。
2)在进行矩阵相乘时,新矩阵第i行第j列的元素等于左矩阵的第i行的所有元素与右矩阵第j列的所有元素相乘后相加所得。在AES加密算法中,分组的长度固定为128位,而在列混淆过程中所有的矩阵都是4*4的。因此列混淆过程中的矩阵相乘,需要经常用到四元异或操作来获得变化后矩阵的元素。在传统的ARM处理器中,没有专门针对该过程的指令,而完成该四元操作需要3条汇编语言,因此需要3个时钟周期。为了加速以上过程,设计并采用了新指令xor4<dest>=<src1>,<src2>,<src3>,<src4>。该指令的功能是将src1到src4所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用寄存器中。以上将在一个时钟周期内完成,因此比传统处理器的处理速度提高了3倍,从而对列混淆过程中的域内乘法运算进行了加速。
3)矩阵相乘采用域内相乘法,即采用多项式乘法,在具体实现多项式乘法时,一般都采用异或后移位的基本操作。因此在列混淆过程中,将大量重复以上过程。为了加速以上过程,设计并采用了新指令xor_move<src1>,<src2>,<src3>,<src4>,<src0>。该指令的功能是判断src1与src2相与的结果,如果为1,则对src3和src4进行异或,并将结果保存在src3中;如果为0,则不执行异或操作;在执行以上操作的同时,指令并行完成对src0的移位操作。因此以上过程将在一个时钟周期内完成,而在传统的ARM处理器中,完成以上功能需要5条汇编语言,因此处理速度提高了5倍,从对列混淆过程中的域内乘法运算进行了加速。
通过上述三条扩展指令的运行,加速AES加密算法中的的列混淆过程。
一种根据扩展指令集设计的指令集处理器模型,它在硬件逻辑上实现了上述扩展指令,因此能够用于AES加密算法中列混淆过程的加速。处理器模型主要由数据存储器、代码存储器、寄存器堆和流水线四部分组成;其中,数据存储器地址空间定义在0x0000-0x7FFF范围内,大小32K;代码存储器地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes;寄存器堆主要由32个通用寄存器、1个取指寄存器、1个堆栈指针寄存器和1个链接寄存器组成;流水线采用三级流水线:取指流水线、译码流水线和执行流水线;流水线控制器对跳转指令译码部件进行控制,跳转指令只需要将跳转地址存储在取指寄存器中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指令进行执行;在处理器中除了通用指令译码部件和逻辑算术指令执行部件外,还添加了针对列混淆过程专用指令的列混淆扩展指令译码部件和列混淆扩展指令执行部件,来对扩展的指令进行专门的译码和执行。在列混淆扩展指令执行部件中,主要包括了3条新扩展指令的执行部件。
所述扩展指令matrixpos执行部件包括1个乘法器、1个加法器、1个多路选择器和1个数据存储器,部件的执行末端是整个处理器共用的通用寄存器堆。乘法器输入端接受立即数i和n,而输出结果则是i与n的乘积;该乘积结果将作为加法器的输入,加法器的另外两个输入为通用寄存器r1和立即数j,而它的输出则是三个输入的和,即目标元素在内存中的地址;该地址将被作为数据存储器的输入,而数据存储器的输出则是目标元素的值;控制信号matrixpos_exe通过多路选择器I来控制地址选择;如果控制信号是1,则多路选择器I将目的通用寄存器r2的32位地址传递给通用寄存器堆,从而将数据存储器的输出结果赋给r2;如果控制信号是0,则多路选择器I将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
所述扩展指令xor4执行部件包括1个异或电路组和1个多路选择器,而部件的执行末端是通用寄存器堆。异或电路组由一系列异或逻辑门组成,它输入端接收通用寄存器r2、r3、r4、r5的数据,输出结果为4元异或后的值;控制信号xor4_exe控制多路选择器II,同时多路选择器II接受5位的0和通用寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器II将r1的地址传送给寄存器堆,从而将异或电路组的输出结果赋给r1;如果控制信号为0时,多路选择器II将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
所述扩展指令xor_move执行部件包括2个与门、1个或门、1个异或逻辑门、2个多路选择器以及1个移位器,而部件的执行末端是通用寄存器堆。与门I输入端接受通用寄存器r1与r2的,而它的输出是r1和r2相与后的一个32位数值;或门完成的功能是对与门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的基础上根据偏移位置查找数据。该步骤对应的执行语句为:
x=matrix[i][j];
而对应的ARM编译器汇编语言为6条语句:
move r1,matrix
move r2,i
mul r2=r2,n
add r2=r2,j
add r2=r2,r1
load r1=r2
上述汇编语言的含义是先将矩阵matrix的基址存入寄存器r1中,然后根据公式i*n+j确定元素matrix[i][j]]在内存中的位置,最后将该地址对应的数据存入目标通用寄存器r1中。
根据上述汇编语言的功能,设计了一条新的指令matrixpos,能够在一个时钟周期内完成6条语句所完成的功能。新指令matrixpos<dest>=<src1>,<src2>,<src3>,<src4>一共有5个操作码,其中dest和src1是通用寄存器类型,分别对应着存放目标元素的目的通用寄存器和存放矩阵基址的通用寄存器,而src2、src3以及src4是立即数类型,分别对应着目标元素所在行、目标元素所在列以及矩阵的阶数。
指令的具体格式如表1所示:
表1matrixpos指令格式
该指令的操作码为101100,每个操作数的位数为5位,最低1位的x为补齐位,保证指令的长度为32位。这条指令完成的功能是对基址存放在src1中的矩阵进行取位操作,取出基址+(src2*src4+src3)位置的元素,并将该元素存入dest对应的通用寄存器中。
2.在进行矩阵相乘时,新矩阵第i行第j列的元素等于左矩阵的第i行的所有元素与右矩阵第j列的所有元素相乘后相加所得。在AES加密算法中,分组的长度固定为128位,而在列混淆过程中所有的矩阵都是4*4的。因此列混淆过程中的矩阵相乘,需要经常用到四元异或操作来获得变化后矩阵的元素。而该步骤对应的执行语句为:
y[i]=x[i]xorx[(i+4)mod8]xorx[(i+5)mod8]xor x[(i+6)mod8]xor x[(i+7)mod8];对应的ARM汇编语言为:
r1=r2 xor r3
r1=r1xor r4
r1=r1xor r5
上述汇编语句的含义为对通用寄存器r1到r4进行异或操作,最终结果赋给r1,总共4个操作数参与了异或。为了能够在一个时钟周期内完成取位操作,设计了一条新指令xor4来替代上面四条语句,xor4<dest>=<src1>,<src2>,<src3>,<src4>,具体格式如表3所示:
表3xor4指令格式
该指令的操作码为101101,操作数src1、src2、src3、src4、dest的长度各为5位,指令的末尾填充一位补齐。这条指令的功能是将src1到src4所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用寄存器中。
3.矩阵相乘采用域内相乘法,即采用多项式乘法,在具体实现多项式乘法时,一般都采用异或后移位的基本操作。对应的执行语句为:
if(a and b is 1)then
c=c xor d;
r0>>1;
对应的ARM汇编语句为:
and r1,r1,r2
cmp r1,0
equal jumpxor
xor r3,r3,r4
rightshift r0,r0,1
上述汇编语言的含义是对通用寄存器r1和r2进行与操作,并将结果保存在r1中;判断r1和0是否相等,如果相等则跳过下面一步的异或操作,如果不相等则执行下面一步的异或操作,并将异或结果保存在通用寄存器r3中。然后对通用寄存器r0进行右移一位。为了能够在一个时钟周期内完成以上过程,设计新指令xor_move<src1>,<src2>,<src3>,<src4>,<src0>,具体格式如表4所示:
表4xor_move指令格式
该指令的操作码为101110,操作数src1、src2、src3、src4、src0都是寄存器类型,长度各为5位,指令的末尾填充一位补齐。该指令的功能是判断src1与src2相与的结果,如果为1,则对src3和src4进行异或,并将结果保存在src3中;如果为0,则不执行异或操作;在执行以上操作的同时,指令并行完成对src0的移位操作。
本发明根据新扩展的指令集,设计了一款专门针对列混淆过程的处理器模型-MASIP。该处理器在硬件逻辑上实现了上述3条扩展指令,因此能够加速AES加密算法中列混淆过程。处理器模型的指令集由25条指令构成,包括9条ALU通用指令,如add加法指令,xor移位指令;6条访存指令,如stw写数据存储器指令,ldw读数据存储器指令;7条跳转指令,如jeq两个源操作数相等则跳转指令,jp无条件跳转指令;3条针对列混淆过程扩展的指令,包括matrixpos指令、xor4指令、xor_move指令。MASIP处理器模型的指令列表如下表4所示:
表4MASIP处理器指令集
ALU通用指令 | mov,add,sub,or,and,xor,shl,shr,nop |
跳转指令 | jp,jeq,jne,jl,jle,ja,jae |
访存指令 | stb,sth,stw,ldb,ldh,ldw |
列混淆扩展指令 | matrixpos,xor4,xor move |
模型硬件结构主要由数据存储器、代码存储器、寄存器堆和流水线四部分组成。数据存储器地址空间定义在0x0000-0x7FFF范围内,大小32K。代码存储器地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes。寄存器堆由32个通用寄存器(GPR[0...31])、1个取指寄存器(FPR)、1个堆栈指针寄存器(SPR)和1个链接寄存器(LR)组成。流水线部分采用三级流水线:取指、译码和执行。流水线控制器主要负责对跳转指令进行控制,跳转指令只需要将跳转地址存储在取指寄存器(FPR)中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指令进行执行。在MASIP处理器的译码、执行部件中,除了通用的译码器和执行器外,还添加了针对列混淆过程专用指令的列混淆扩展指令译码器和列混淆扩展指令执行器,来对扩展的指令进行专门的译码和执行。在列混淆扩展指令执行器中,主要包括了3条新扩展指令的执行部件。
本发明的有益效果是:经过指令扩展优化后,AES加密算法中的列混淆过程在本发明设计的MASIP处理器中仅占用248bytes的代码存储空间,比在ARM处理器中减少了48.6%;执行运算周期也由原来的3775个时钟周期缩减到2019个时钟周期,执行效率比ARM处理器提升了46.6%。这验证了本发明针对AES加密算法中的列混淆过程提出的扩展指令集确实加速了列混淆过程,而且经过指令优化的处理器模型在节省资源消耗上也有较大的提高。
附图说明
图1针对列混淆过程的MASIP处理器模型框图。
图2扩展指令matrixpos的指令执行部件电路框图。
图3扩展指令xor4的指令执行部件电路框图。
图4扩展指令xor_move的指令执行部件电路框图。
图5列混淆过程指令扩展优化流程图。
其中,1.数据存储器,2.寄存器堆,3.代码存储器,4.流水线,5.取指流水线,6.译码流水线,7.执行流水线,8.跳转指令译码部件,9.通用指令译码部件,10.列混淆扩展指令译码部件,11.读写指令执行部件,12.逻辑算术指令执行部件,13.列混淆扩展命令执行部件,14.流水线控制器,15.流水线寄存器I,16.流水线寄存器II,17.乘法器,18.加法器,19.多路选择器I,20.数据存储器,21.通用寄存器堆,22.异或电路组,23.多路选择器II,24.与门I,25.或门,26.与门II,27.异或逻辑门,28.多路选择器III,29.多路选择器IV,30.移位器。
具体实施方式
下面结合附图与实施例对本发明做进一步说明。
图5中,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的前提下,对列混淆过程的部分步骤进行了加速,具体过程为:
1)在执行AES加密/解密算法列混淆运算时,矩阵相乘操作过程中需要多次定位矩阵中数据的位置,即取出matrix[i][j]位置的数据。在实际内存中矩阵的数据是线性存储的,因此在传统的ARM处理器中,需要通过根据i和j计算出实际内存中数据的偏移位置,在基地址matrix的基础上根据偏移位置查找数据,因此完成该功能需要6条汇编语句,因此需要6个时钟周期。为了加速该过程,我们设计并采用了指令matrixpos<dest>=<src1>,<src2>,<src3>,<src4>。该指令的功能是对基地址存放在通用寄存器src1的矩阵进行取位操作,src2和src3指示目标数据所在的行和列,而src4指示矩阵的总行数(列数)。取出的数据将存放在dest表示的通用寄存器中。以上过程将在一个时钟周期内完成,因此比传统处理器的处理速度提高了6倍,从而对列混淆过程中的域内乘法运算进行了加速;
2)在进行矩阵相乘时,新矩阵第i行第j列的元素等于左矩阵的第i行的所有元素与右矩阵第j列的所有元素相乘后相加所得。在AES加密算法中,分组的长度固定为128位,而在列混淆过程中所有的矩阵都是4*4的。因此列混淆过程中的矩阵相乘,需要经常用到四元异或操作来获得变化后矩阵的元素。在传统的ARM处理器中,没有专门针对该过程的指令,而完成该四元操作需要3条汇编语言,因此需要3个时钟周期。为了加速以上过程,设计并采用了新指令xor4<dest>=<src1>,<src2>,<src3>,<src4>。该指令的功能是将src1到src4所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用寄存器中。以上将在一个时钟周期内完成,因此比传统处理器的处理速度提高了3倍,从而对列混淆过程中的域内乘法运算进行了加速;
3)矩阵相乘采用域内相乘法,即采用多项式乘法,在具体实现多项式乘法时,一般都采用异或后移位的基本操作。因此在列混淆过程中,将大量重复以上过程。为了加速以上过程,设计并采用了新指令xor_move<src1>,<src2>,<src3>,<src4>,<src0>。该指令的功能是判断src1与src2相与的结果,如果为1,则对src3和src4进行异或,并将结果保存在src3中;如果为0,则不执行异或操作;在执行以上操作的同时,指令并行完成对src0的移位操作。因此以上过程将在一个时钟周期内完成,而在传统的ARM处理器中,完成以上功能需要5条汇编语言,因此处理速度提高了5倍,从对列混淆过程中的域内乘法运算进行了加速。
通过上述三条扩展指令的运行,加速列混淆过程。
图1中,一种用于AES加密算法中列混淆过程指令优化方法的指令集处理器,它根据新扩展的指令的功能和结构来设计,最终实现的效果是能够以最高的效率支持新扩展的指令,从而能够加速AES算法中的列混淆过程。它主要由数据存储器1、寄存器堆2、代码存储器3和流水线4四部分组成;其中,数据存储器1地址空间定义在0x0000-0x7FFF范围内,大小32K;寄存器堆2主要由32个通用寄存器、1个取指寄存器、1个堆栈指针寄存器和1个链接寄存器组成;代码存储器3地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes。流水线4采用三级流水线:取指流水线5、译码流水线6和执行流水线7;译码流水线6内除了跳转指令译码部件8、通用指令译码部件9外,还包扩了列混淆扩展指令译码部件10,对扩展的指令进行专门的译码;执行流水线7除了包含读写指令执行部件11、逻辑算术指令执行部件12外,还包括了列混淆扩展指令执行部件13,对扩展的指令进行专门的执行;流水线控制器14对跳转指令进行控制,跳转指令只需要将跳转地址存储在取指寄存器中,对所有指令统一取指,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指令进行执行;各个流水线阶段之间则通过流水线控制器14控制流水线寄存器I15和流水线寄存器II16来控制各个流水线阶段之间的数据传输和延时。
图2中,通用寄存器r1、r2和立即数i,j,n是指令的输入,分别对应着存放原矩阵基址的寄存器、目的寄存器和目标元素所在行、所在列以及矩阵阶数。所述扩展指令matrixpos执行部件包括1个乘法器17、1个加法器18、1个多路选择器I19和1个数据存储器20,部件的执行末端是整个处理器共用的通用寄存器堆21。乘法器17输入端接受立即数i和n,而输出结果则是i与n的乘积;该乘积结果将作为加法器18的输入,加法器18的另外两个输入为通用寄存器r1和立即数j,而它的输出则是三个输入的和,即目标元素在内存中的地址;该地址将被作为数据存储器20的输入,而数据存储器20的输出则是目标元素的值;控制信号matrixpos_exe通过多路选择器I19来控制地址选择;如果控制信号是1,则多路选择器I19将r1的32位地址传递给通用寄存器堆,从而将数据存储器的输出结果赋给r1;如果控制信号是0,则多路选择器I19将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
matrixpos_exe是一个控制信号,由译码阶段发出控制命令,决定是否执行matrixpos操作。
图3中,通用寄存器r1、r2、r3、r4、r5是指令的输入,分别对应着目的通用寄存器和存放参加异或运算的4个参数的通用寄存器。所述扩展指令xor4执行部件包括1个异或电路组22和1个多路选择器II23,而部件的执行末端是通用寄存器堆21。异或电路组22由一系列异或逻辑门组成,它输入端接收通用寄存器r2、r3、r4、r5的数据,输出结果为4元异或后的值;控制信号xor4_exe控制多路选择器II23,同时多路选择器II23接受5位的0和通用寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器II23将r1的地址传送给寄存器堆,从而将异或电路组22的输出结果赋给r1;如果控制信号为0时,多路选择器II23将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
xor4_exe是一个控制信号,由译码阶段发出控制命令,决定是否执行xor4操作。
图4中,通用寄存器r0-r4是指令的输入。所述扩展指令xor_move执行部件包括2个与门、1个或门25、1个异或逻辑门27、2个多路选择器以及1个移位器30,而部件的执行末端是通用寄存器堆。与门I24输入端接受通用寄存器r1与r2的,而它的输出是r1和r2相与后的一个32位数值;或门25完成的功能是对与门I的输出,即32位数值进行逐位相或,而产生的输出是一个1位的数值;该输出将与控制信号xor_move_exe一起作为与门II26的输入,而与门II26的输出将作为多路选择器III28的输入,来控制地址选择;如果与门II26的输出是1,则多路选择器III28将通用寄存器r3的地址传递给寄存器堆,从而将通用寄存器r3和r4通过异或逻辑门27的输出结果赋给r3;如果与门II26的输出是0,则多路选择器III28将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。与此同时,控制信号xor_move_exe通过多路选择器IV29来控制移位操作的执行,即如果控制信号为1,则将移位器30的结果赋给r0,否则不进行赋值操作。以上的异或和移位操作将并发执行。
xor_move_exe是一个控制信号,由译码阶段发出控制命令,决定是否执行xor_move操作。
图5描述了AES加密算法中列混淆过程的指令优化验证的设计流程。设计过程从分析列混淆具体语言如C语言的实现开始,然后将实现过程转换成汇编语言,通过对算法汇编语言进行分析,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的条件下进行指令的扩展优化。在确定新指令的指令格式和功能后,使用LISA语言描述扩展后的新指令集,并在新指令集上模拟列混淆过程的运行,对比指令扩展前算法的运算结果,如果结果不相同,表明设计的新扩展指令没有正确实现预期目标,则重新转回算法的指令扩展优化分析阶段,重新进行指令扩展优化分析和设计步骤;如果结果相同,则转入处理器模型的硬件设计。根据扩展的指令集,使用verilog语言设计指令扩展后的处理器硬件模型,然后对处理器模型进行仿真。对比模拟运行结果,如果结果不相同,表明处理器硬件模型没有正确实现预期目标,重新转到处理器的硬件设计步骤,重新设计处理器模型;如果结果相同,则转入综合布局布线。根据处理器的硬件模型综合布局布线,将设计好的硬件模型烧入FPGA中进行处理器模型验证工作。对比验证结果和仿真结果,如果不相同,则需要退回到硬件模型综合布局布线,重新进行布局分析和综合;如果相同,则生成最终的指令专用处理器模型(MASIP)。
在确定该些新扩展指令的功能和指令格式,并设计出指令集相对应的专用指令处理器(MASIP)模型后,以Xilinx的以Virtex5LX110T FPGA为平台,对设计的模型进行验证和性能分析。将AES加密算法中的列混淆过程分别运行在本发明设计的处理器模型和在嵌入式领域广泛使用的ARM处理器上。通过对比发现,经过指令扩展优化,列混淆过程在本发明设计的MASIP处理器中仅占用248bytes的代码存储空间,比在ARM处理器中减少了48.6%;执行运算周期也由原来的3775个时钟周期缩减到2019个时钟周期,执行效率比ARM处理器提升了46.6%。这验证了本发明针对AES加密算法中的列混淆过程提出的扩展指令集确实加速了列混淆过程,而且经过指令优化的处理器模型在节省资源消耗上也有较大的提高。
Claims (5)
1.一种AES加密算法中列混淆过程指令优化方法,其特征是,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的前提下,它的步骤为:
1)在执行AES加密/解密算法列混淆运算时,矩阵相乘操作过程中采用多次定位矩阵中数据的位置,即取出matrix[i][j]位置的数据;运算时采用指令matrixpos<dest>=<src1>,<src2>,<src3>,<src4>,该指令对基地址存放在通用寄存器src1的矩阵进行取位操作,src2和src3指示目标数据所在的行和列,而src4指示矩阵的总行数或列数,取出的数据将存放在dest表示的通用寄存器中,以上过程在一个时钟周期内完成,从而对列混淆过程中的矩阵取位操作进行了加速;
2)在进行矩阵相乘时,新矩阵第i行第j列的元素等于左矩阵的第i行的所有元素与右矩阵第j列的所有元素相乘后相加所得,在AES加密算法中,分组的长度固定为128位,而在列混淆过程中所有的矩阵都是4*4的,因此列混淆过程中的矩阵相乘,需要经常用到四元异或操作来获得变化后矩阵的元素,为此采用指令xor4<dest>=<src1>,<src2>,<src3>,<src4>,该指令将src1到src4所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用寄存器中,以上在一个时钟周期内完成,从而对列混淆过程中的域内乘法运算进行了加速;
3)矩阵相乘采用域内相乘法,即采用多项式乘法,在具体实现多项式乘法时,一般都采用异或后移位的基本操作;为了加速该过程,采用指令xor_move<src1>,<src2>,<src3>,<src4>,<src0>,该指令判断src1与src2相与的结果,如果为1,则对src3和src4进行异或,并将结果保存在src3中;如果为0,则不执行异或操作;在执行以上操作的同时,指令并行完成对src0的移位操作;以上过程在一个时钟周期内完成,从对列混淆过程中的域内乘法运算进行了加速;
通过上述三条扩展指令的运行,加速列混淆过程。
2.一种用于权利要求1所述的AES加密算法中列混淆过程指令优化方法的指令集处理器,其特征是,它主要由数据存储器(1)、代码存储器(3)、寄存器堆(2)和流水线(4)四部分组成;数据存储器(1)地址空间定义在0x0000-0x7FFF范围内,大小32K;代码存储器(3)地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes;寄存器堆(2)由32个通用寄存器GPR[0...31]、1个取指寄存器FPR、1个堆栈指针寄存器SPR和1个链接寄存器LR组成;流水线(4)采用三级流水线:取指流水线(5)、译码流水线(6)和执行流水线(7);流水线控制器(14)对跳转指令进行控制,跳转指令只需要将跳转地址存储在取指寄存器FPR中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指令进行执行;处理器除通用指令译码部件(9)和读写指令执行部件(11)、逻辑算术指令执行部件(12)外,还设有列混淆过程专用指令的列混淆扩展指令译码部件(10)和列混淆扩展指令执行部件(13),来对扩展的指令进行专门的译码和执行;在列混淆扩展指令执行部件(13)中,设有扩展指令的执行部件。
3.如权利要求2所述的用于AES加密算法中列混淆过程指令优化方法的指令集处理器,其特征是,所述扩展指令matrixpos执行部件包括1个乘法器(17)、1个加法器(18)、1个多路选择器I(19)和1个数据存储器(20),部件的执行末端是整个处理器共用的通用寄存器堆(21);乘法器(17)输入端接受立即数i和n,而输出结果则是i与n的乘积;该乘积结果将作为加法器(18)的输入,加法器(18)的另外两个输入为通用寄存器r1和立即数j,而它的输出则是三个输入的和,即目标元素在内存中的地址;该地址将被作为数据存储器(20)的输入,而数据存储器(20)的输出则是目标元素的值;控制信号matrixpos_exe通过多路选择器I(19)来控制地址选择;如果控制信号是1,则多路选择器I(19)将r1的32位地址传递给通用寄存器堆,从而将数据存储器的输出结果赋给r1;如果控制信号是0,则多路选择器I(19)将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
4.如权利要求2所述的用于AES加密算法中列混淆过程指令优化方法的指令集处理器,其特征是,所述扩展指令xor4执行部件包括1个异或电路组(22)和1个多路选择器II(23),而部件的执行末端是通用寄存器堆(21);异或电路组(22)由一系列异或逻辑门组成,它输入端接收通用寄存器r2、r3、r4、r5的数据,输出结果为4元异或后的值;控制信号xor4_exe控制多路选择器II(23),同时多路选择器II(23)接受5位的0和通用寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器II(23)将r1的地址传送给寄存器堆,从而将异或电路组(22)的输出结果赋给r1;如果控制信号为0时,多路选择器II(23)将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
5.如权利要求2所述的用于AES加密算法中列混淆过程指令优化方法的指令集处理器,其特征是,所述扩展指令xor_move执行部件包括2个与门、1个或门(25)、1个异或逻辑门(27)、2个多路选择器以及1个移位器(30),而部件的执行末端是通用寄存器堆(21);与门I(24)输入端接受通用寄存器r1与r2的,而它的输出是r1和r2相与后的一个32位数值;或门(25)完成的功能是对与门I(24)的输出,即32位数值进行逐位相或,而产生的输出是一个1位的数值;该输出将与控制信号xor_move_exe一起作为与门II(26)的输入,而与门II(26)的输出将作为多路选择器III(28)的输入,来控制地址选择;如果与门II(26)的输出是1,则多路选择器III(28)将通用寄存器r3的地址传递给寄存器堆,从而将通用寄存器r3和r4通过异或逻辑门(27)的输出结果赋给r3;如果与门II(26)的输出是0,则多路选择器III(28)将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作;与此同时,控制信号xor_move_exe通过多路选择器IV(29)来控制移位操作的执行,即如果控制信号为1,则将移位器(30)的结果赋给r0,否则不进行赋值操作;以上的异或和移位操作将并发执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110024639.XA CN102081513B (zh) | 2011-01-24 | 2011-01-24 | Aes加密算法中列混淆过程指令优化方法及其指令集处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110024639.XA CN102081513B (zh) | 2011-01-24 | 2011-01-24 | Aes加密算法中列混淆过程指令优化方法及其指令集处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102081513A true CN102081513A (zh) | 2011-06-01 |
CN102081513B CN102081513B (zh) | 2014-07-23 |
Family
ID=44087497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110024639.XA Expired - Fee Related CN102081513B (zh) | 2011-01-24 | 2011-01-24 | Aes加密算法中列混淆过程指令优化方法及其指令集处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102081513B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411683A (zh) * | 2011-08-15 | 2012-04-11 | 复旦大学 | 一种适用于嵌入式系统的基于高速缓存的aes加速器 |
CN104573426A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN104573427A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN106875362A (zh) * | 2017-02-20 | 2017-06-20 | 上海海洋大学 | 一种遥感图像的安全外包去噪方法 |
CN107194895A (zh) * | 2017-05-27 | 2017-09-22 | 上海海洋大学 | 一种针对多帧遥感图像的安全外包融合去噪方法 |
CN110494846A (zh) * | 2017-03-20 | 2019-11-22 | 英特尔公司 | 用于矩阵加法、减法和乘法的系统、方法和装置 |
CN116562229A (zh) * | 2023-07-10 | 2023-08-08 | 武汉芯必达微电子有限公司 | 一种基于aes算法的列混淆计算优化硬件实现方法及装置 |
US12124847B2 (en) | 2017-07-01 | 2024-10-22 | Intel Corporation | Systems, methods, and apparatuses for tile transpose |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070237324A1 (en) * | 2006-03-15 | 2007-10-11 | Microsoft Corporation | Cryptographic processing |
CN101702709A (zh) * | 2009-11-05 | 2010-05-05 | 复旦大学 | 一种适用于mips处理器的aes加密单元 |
US20100195820A1 (en) * | 2009-02-04 | 2010-08-05 | Michael Frank | Processor Instructions for Improved AES Encryption and Decryption |
CN101951314A (zh) * | 2010-10-12 | 2011-01-19 | 北京航空航天大学 | 对称密码加密中s-盒的设计方法 |
-
2011
- 2011-01-24 CN CN201110024639.XA patent/CN102081513B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070237324A1 (en) * | 2006-03-15 | 2007-10-11 | Microsoft Corporation | Cryptographic processing |
US20100195820A1 (en) * | 2009-02-04 | 2010-08-05 | Michael Frank | Processor Instructions for Improved AES Encryption and Decryption |
CN101702709A (zh) * | 2009-11-05 | 2010-05-05 | 复旦大学 | 一种适用于mips处理器的aes加密单元 |
CN101951314A (zh) * | 2010-10-12 | 2011-01-19 | 北京航空航天大学 | 对称密码加密中s-盒的设计方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411683A (zh) * | 2011-08-15 | 2012-04-11 | 复旦大学 | 一种适用于嵌入式系统的基于高速缓存的aes加速器 |
CN102411683B (zh) * | 2011-08-15 | 2014-04-02 | 复旦大学 | 一种适用于嵌入式系统的基于高速缓存的aes加速器 |
CN104573427B (zh) * | 2015-01-06 | 2017-09-08 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN104573427A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN104573426B (zh) * | 2015-01-06 | 2017-06-06 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN104573426A (zh) * | 2015-01-06 | 2015-04-29 | 北京邮电大学 | 一种可执行应用的混淆方法和装置 |
CN106875362A (zh) * | 2017-02-20 | 2017-06-20 | 上海海洋大学 | 一种遥感图像的安全外包去噪方法 |
CN106875362B (zh) * | 2017-02-20 | 2020-04-10 | 上海海洋大学 | 一种遥感图像的安全外包去噪方法 |
CN110494846A (zh) * | 2017-03-20 | 2019-11-22 | 英特尔公司 | 用于矩阵加法、减法和乘法的系统、方法和装置 |
US12106100B2 (en) | 2017-03-20 | 2024-10-01 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
CN107194895A (zh) * | 2017-05-27 | 2017-09-22 | 上海海洋大学 | 一种针对多帧遥感图像的安全外包融合去噪方法 |
US12124847B2 (en) | 2017-07-01 | 2024-10-22 | Intel Corporation | Systems, methods, and apparatuses for tile transpose |
CN116562229A (zh) * | 2023-07-10 | 2023-08-08 | 武汉芯必达微电子有限公司 | 一种基于aes算法的列混淆计算优化硬件实现方法及装置 |
CN116562229B (zh) * | 2023-07-10 | 2023-09-22 | 武汉芯必达微电子有限公司 | 一种基于aes算法的列混淆计算优化硬件实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102081513B (zh) | 2014-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102081513B (zh) | Aes加密算法中列混淆过程指令优化方法及其指令集处理器 | |
CN111512292A (zh) | 用于可配置空间加速器中的非结构化数据流的装置、方法和系统 | |
CN102662628B (zh) | Rsa加密算法的指令优化处理器 | |
WO2015114305A1 (en) | A data processing apparatus and method for executing a vector scan instruction | |
Nguyen et al. | High-level synthesis in implementing and benchmarking number theoretic transform in lattice-based post-quantum cryptography using software/hardware codesign | |
EP3719638A2 (en) | Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator | |
Lim et al. | Bitsliced high-performance AES-ECB on GPUs | |
Cheng et al. | Efficient implementation of the SHA-512 hash function for 8-bit AVR microcontrollers | |
Campos et al. | Assembly or optimized C for lightweight cryptography on RISC-V? | |
Seo et al. | Parallel implementations of LEA | |
Alpirez Bock et al. | Increasing the Robustness of the Montgomery kP-Algorithm against SCA by Modifying its Initialization | |
CN102081514B (zh) | AES加密算法中Sbox生成指令优化方法及其指令集处理器 | |
Schmidt et al. | A fast parameterized sha3 accelerator | |
CN104539417A (zh) | 一种基于流密码的加密设备 | |
Kiningham et al. | Cipher Implementation for CESEL | |
Muri et al. | Embedded Processor-In-Memory architecture for accelerating arithmetic operations | |
CN202257543U (zh) | 针对aes对称加密算法的指令优化处理器 | |
WO2019016508A1 (en) | INTERLACING VECTORS IN A DATA PROCESSING APPARATUS | |
Cardoso dos Santos et al. | An evaluation of the multi-platform efficiency of lightweight cryptographic permutations | |
Rawat et al. | SIMD instruction set extensions for keccak with applications to SHA-3, keyak and ketje | |
Chiu et al. | A multi-streaming SIMD multimedia computing engine | |
Gallin et al. | Architecture level optimizations for Kummer based HECC on FPGAs | |
Fakhry et al. | An HBM3 Processing-in-Memory Architecture for Security and Data Integrity: Case study | |
Wang et al. | SMCOS: Fast and parallel modular multiplication on ARM NEON architecture for ECC | |
De Gloria | Microprocessor design for embedded system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140723 Termination date: 20190124 |
|
CF01 | Termination of patent right due to non-payment of annual fee |