CN102081514B - AES加密算法中Sbox生成指令优化方法及其指令集处理器 - Google Patents
AES加密算法中Sbox生成指令优化方法及其指令集处理器 Download PDFInfo
- Publication number
- CN102081514B CN102081514B CN201110024766.XA CN201110024766A CN102081514B CN 102081514 B CN102081514 B CN 102081514B CN 201110024766 A CN201110024766 A CN 201110024766A CN 102081514 B CN102081514 B CN 102081514B
- Authority
- CN
- China
- Prior art keywords
- instruction
- sbox
- register
- xor
- 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.)
- Expired - Fee Related
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种AES加密算法中Sbox生成过程的指令优化方法及其指令集处理器模型的设计。本发明为了加速AES算法中Sbox的生成过程,设计了三条新扩展指令:(1)ifand<src1>,<src2>,<xor_src1>,<xor_src2>,用来加速Sbox生成过程中的域内乘法运算;(2)getbit<dest>=<src>,<bitpos>,用来加速仿射变换过程中的取位操作;(3)xor5<dest>=<src1>,<src2>,<src3>,<src4>,<src5>,用来加速仿射变换过程中的五元异或操作。以上3条指令都将在一个时钟周期内完成,而在传统ARM处理器中,则分别需要多个时钟周期,因此新指令起到了加速作用。本发明还根据上述新扩展指令设计了,设计了一款与新指令集相对应的专用指令处理器模型-SASIP。该处理器模型在硬件逻辑上实现了上述扩展指令,因此是一款专门针对于AES-Sbox加速的处理器模型。
Description
技术领域
本发明涉及AES的加解密技术,尤其涉及AES加密算法中Sbox生成过程的指令优化方法及其指令集处理器设计。
背景技术
AES是The Advanced Encryption Standard(高级加密标准)的简称,是美国国家标准与技术研究所(NIST)公布的一种用于加密电子数据的规范,其被广泛地讨论和认可,成为全球信息安全领域中应用最为广泛的一种分组密码算法。AES算法采用对称分组密码体制,密钥长度可以分别为128位、192位、256位,而分组长度固定为128位。
AES的加密技术使用加密密钥执行一系列的转换,以将被称为“明文”的可理解数据转换为被称为“密文”的无法理解的数据。在AES加密解密算法中使用非线性字节替换表(S-Box)对原文进行替换,即根据查表的方式将原文替换成Sbox中相对应的值。AES-Sbox需要自己生成,它的生成过程包含了求解逆元和仿射变化两个过程:第一步求解逆元是在伽罗瓦域GF(28)内进行的,即对域内的任意一个八位的二进制数A,转换成一个多项式A(x),如果存在某个二进制数对应的多项式B(x)满足[A(x)×B(x)]mod m(x)=1那么B就是A的逆元,其中模多项式m(x)=x8+x4+x3+x+1,是为了保证相乘以后的元素仍然在域内。在这个过程中,需要大量用到域内的乘法。第二步仿射过程,即对某一8位二进制数b7b6b5b4b3b2b1b0按如下公式进行变化:
该过程涉及到大量的取位操作与异或操作。
Sbox的生成运算是AES加密算法中最复杂、最费时的过程,并且在AES加密算法中Sbox生成运算占用的算法运行指令数高达60%。因此要想提高AES算法运算速度和执行效率,需要优化Sbox的生成运算速度。
目前对Sbox生成算法的优化主要集中于3方面:
第一种方法是直接将Sbox生成用硬件实现,采用专门的硬件电路实现这块功能;
第二种方法是对Sbox生成算法本身进行优化,用逻辑方法加速其运行;
第三种方法是对Sbox生成算法进行指令集的扩展优化,设计加速其运行的指令。
采用硬件加速的方法,虽然在加速效果上比较明显,但是这种优化方法可扩展性较弱,占的硬件资源相对较多,而且与程序中的其它模块结合相对较难;对算法本身进行优化的空间十分有限,通常优化的改进效果不是十分明显;而第三种方法通过对指令集扩展优化的设计方法,不仅减少了执行代码空间,提高了算法执行速度,而且在设计上易于实现,灵活性也比较强,对硬件资源的要求也比第一种方法要小很多,适合于小规模电路。由于这种优化技术的良好性能,它被应用到Blowfish加密等算法的优化中。
发明内容
本发明的目的在于提供一种针对AES加密算法中Sbox生成过程的指令优化方法及其专用指令集处理器模型。本发明设计了3条专门用于加速优化AES加密算法中的Sbox生成过程的扩展指令,并且设计了一款与新指令集相对应的专用指令处理器模型-SASIP。通过与广泛使用的ARM处理器对比发现,经过指令扩展优化后,Sbox生成运算在本发明设计的SASIP处理器中仅占用188bytes的代码存储空间,比在ARM处理器中减少了38.6%;执行运算周期也由原来的2875个时钟周期缩减到1123个时钟周期,执行效率比ARM处理器提升了60.9%。
为实现上述目的,本发明采用如下技术方案:
一种AES加密算法中Sbox生成指令优化方法,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的前提下,它的步骤为:
1)在Sbox生成过程中需要求解逆元,并且采用伽罗瓦域GF(28)内的乘法运算。分析Sbox生成过程,发现在每一次域内乘法循环过程中都需要进行一次判断后异或的过程,该过程对应Sbox生成算法流程图1中的步骤1。在传统的ARM处理器中,完成该功能需要四条汇编语句,因此需要四个时钟周期。为了加速该过程,我们设计并采用了指令ifand<src1>,<src2>,<xor_src1>,<xor_src2>。该指令的功能是将操作数src1和src2相与,如果结果不为0,则xor_src1和xor_src2就执行异或,并将结果保存在xor_src1表示的通用寄存器内;如果结果为0,则不执行异或操作。以上过程将在一个时钟周期内完成,因此比传统处理器的处理速度提高了四倍,从而对Sbox生成过程中的域内乘法运算进行了加速。
2)在Sbox生成算法中仿射变换过程需要对位进行操作,每次仿射变换都需要把八位二进制数的每一位取出来,该过程对应Sbox生成算法图1中的步骤5。在ARM处理器以及其它常用的嵌入式处理器中,没有直接的取位操作,完成取位操作需要执行三个时钟周期,因此执行过程十分费时。为了加速该过程,设计并采用了指令getbit<dest>=<src>,<bitpos>。该指令的功能完成的功能是从通用寄存器src中取出第bitpos位,然后存入通用寄存器dest的最后一位,从而完成取位操作。以上过程将在一个时钟周期内完成,因此比传统处理器的处理速度提高了三倍,从而对Sbox生成过程中的仿射过程进行了加速。
3)仿射变换过程中取出二进制数的所有位后,需要进行五元异或操作,并用操作后的结果对原数进行替换,该过程对应Sbox生成算法图1中的步骤6。在传统的ARM处理器中,完成该功能需要四条汇编语言,因此需要四个时钟周期。为了加速五元异或操作,设计并采用了新指令xor5<dest>=<src1>,<src2>,<src3>,<src4>,<src5>。该指令的功能是将src1到src5所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用寄存器中。以上过程将在一个时钟周期内完成,因此比传统处理器的处理速度提高了四倍,从而进一步对Sbox生成过程中的仿射运算进行了加速。
通过上述三条扩展指令的运行,加速AES加密算法中的Sbox生成过程。
一种根据扩展指令集设计的指令集处理器模型,它在硬件逻辑上实现了上述扩展指令,因此能够用于AES加密算法中Sbox生成过程的加速。处理器模型主要由数据存储器、代码存储器、寄存器堆和流水线四部分组成;其中,数据存储器地址空间定义在0x0000-0x7FFF范围内,大小32K;代码存储器地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes;寄存器堆主要由32个通用寄存器、1个取指寄存器、1个堆栈指针寄存器和1个链接寄存器组成;流水线采用三级流水线:取指流水线、译码流水线和执行流水线;流水线控制器对跳转指令译码部件进行控制,跳转指令只需要将跳转地址存储在取指寄存器中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指令进行执行;在处理器中除了通用指令译码部件和逻辑算术指令执行部件外,还添加了针对Sbox生成算法专用指令的Sbox扩展指令译码部件和Sbox扩展指令执行部件,来对扩展的指令进行专门的译码和执行。在Sbox扩展指令执行部件中,主要包括了3条新扩展指令的执行部件。
所述扩展指令ifand执行部件包括2个与门、1个异或逻辑门、一个或门和1个多路选择器,部件的执行末端是整个处理器共用的通用寄存器堆。与门I接受寄存器r0与r1的输入,而该与门I的输出是r0和r1相与后的一个32位数值;或门完成的功能是对与门I的输出,即32位数值进行逐位相或,而产生的输出是一个1位的数值;该输出将与控制信号ifand_exe一起作为与门II的输入,而与门II的输出将作为多路选择器I的输入,来控制地址选择;如果与门II的输出是1,则多路选择器I将通用寄存器r2的地址传递给寄存器堆,从而将通用寄存器r2和r3通过异或逻辑门的输出结果赋给r2;如果与门II的输出是0,则多路选择器I将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
所述扩展指令getbit执行部件包括1个移位器,1个与门以及1个多路选择器,而部件的执行末端是通用寄存器堆。移位器输入端接收通用寄存器r0和4位的i;i的最大值为31,指示寄存器移动的位数;移位器移位后的结果与0x00000001作为与门III的输入,而与门III的输出为一个32位的数值,而该数值的最后一位保存着r0的第i位,而其它各位为0;控制信号getbit_exe控制多路选择器II,同时多路选择器II接受5位的0和通用寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器II将r1的地址传送给寄存器堆,从而将与门III的输出赋给r1;如果控制信号为0时,多路选择器II将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
所述扩展指令xor5执行部件包括1个异或电路组和1个多路选择器,而部件的执行末端是通用寄存器堆。异或电路组由一系列异或逻辑门组成,它输入端接收通用寄存器r2、r3、r4、r5、r6的数据,输出结果为5元异或后的值;控制信号xor5_exe控制多路选择器III,同时多路选择器III接受5位的0和通用寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器III将r1的地址传送给寄存器堆,从而将异或电路组的输出结果赋给r1;如果控制信号为0时,多路选择器III将5位0传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
本发明通过对AES-Sbox算法进行分析,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的前提下,对AES加密算法中的Sbox生成过程进行了指令扩展优化,共设计了3条扩展指令用于加速AES-Sbox生成过程,具体设计过程如下:
1.在Sbox生成过程中需要求解逆元,并且采用伽罗瓦域GF(28)内的乘法运算。在最坏情况下需要循环256次,即经过256次域内乘法运算才能找到逆元,因为最坏情况下一个元素将与256个元素依次相乘才能判定是否已找到逆元,因此需要对域内乘法运算进行加速。分析Sbox生成过程,发现在每一次域内乘法循环过程中都需要进行一次判断后异或过程,该过程对应Sbox生成算法流程图1中的步骤1,而该步骤对应的执行语句为:
if(a and b is 1)then
c=c xor d;
对应的ARM编译器汇编语言为四条语句:
and r1,r1,r0
cmp r1,0
equal jumpxor
xor r2,r2,r3
上述汇编语言的含义是对通用寄存器r1和r0进行与操作,并将结果保存在r1中;判断r1和0是否相等,如果相等则跳过下面一步的异或操作,如果不相等则执行下面一步的异或操作,并将异或结果保存在寄存器r2中。
根据上述四条汇编语言的功能,设计了一条新的指令ifand,能够在一个时钟周期内完成上面四条语句的所完成的功能。新指令ifand<src1>,<src2>,<xor_src1>,<xor_src2>一共有四个操作码,分别对应着执行语句中的a、b、c、d。
指令的具体格式如表1所示:
表1ifand指令格式
101000 | src1 | src2 | xor_src1 | xor_src2 | xxxxxx |
31 26 | 25 21 | 20 16 | 15 11 | 10 6 | 5 0 |
该指令的操作码为101000,每个操作数的位数为5位,最低6位的xxxxxx为补齐位,保证指令的长度为32位。这条指令完成的功能是src1和src2相与,如果结果不为0,则xor_src1和xor_src2就执行异或,并将结果保存在xor_src1中,如果结果为0,则不执行异或操作。
2.在Sbox生成算法中仿射变换过程需要对位进行操作,每次仿射变换都需要把八位二进制数的每一位取出来。在ARM处理器以及其它常用的嵌入式处理器中,没有直接的取位操作,因此取位操作执行过程十分费时。该过程对应Sbox生成算法流程图1中的步骤5,而该步骤对应的执行语句为:
y=(x>>i)and 0x00000001;
首先将x右移i个位置,然后和0x00000001相与,结果赋给y。对应的ARM汇编语句为:
move r1,r0
leftshift r1,r1,(31-i)
rightshift r1,r1,31
上述汇编语言的含义是先将要移位的通用寄存器r0的值存储在一个新的通用寄存器r1中,然后将r1左移(31-i)位,再右移31位,而这个操作的目的是对其余位进行清零,从而取出r0的第i位。为了能够在一个时钟周期内完成取位操作,本发明设计了一条新取位指令getbit来替代上面的三条指令,getbit<dest>=<src>,<bitpos>的具体格式如表2所示:
表2getbit指令格式
101001 | dest | src | bitpos | xxxxxxxxxxx |
31 26 | 25 21 | 20 16 | 15 11 | 10 0 |
该指令的操作码为101001,操作数dest和src的长度为5位,而bitpos的长度为5位,因此保证最多只能移31位。指令的末尾填充11位补齐。这条指令完成的功能是从寄存器src中取出第bitpos位,然后存入寄存器dest的最后一位,从而完成取位操作。
3.仿射变换过程中取出二进制数的所有位后,需要对每一位进行异或操作,并用操作后的结果对原数进行替换。由于每个操作数为八位二进制数,因此每次仿射过程需要进行八次五元异或操作。该过程对应Sbox生成算法流程图1中的步骤6,而该步骤对应的执行语句为:
y[i]=x[i]xor x[(i+4)mod8]xor x[(i+5)mod8]xor x[(i+6)mod8]xor x[(i+7)mod8];
对应的ARM汇编语言为:
r1=r2 xor r3
r1=r1 xor r4
r1=r1 xor r5
r1=r1 xor r6
上述汇编语句的含义为对寄存器r1到r5进行异或操作,最终结果赋给寄存器r1,总共五个操作数参与了异或。为了能够在一个时钟周期内完成取位操作,设计了一条新指令xor5来替代上面四条语句,xor5<dest>=<src1>,<src2>,<src3>,<src4>,<src5>,具体格式如表3所示:
表3xor5指令格式
001111 | src1 | src2 | src3 | src4 | src5 | dest | x |
31 26 | 25 22 | 21 18 | 17 14 | 13 10 | 9 6 | 5 1 | 0 |
该指令的操作码为001111,操作数src1、src2、src3、src4、src5的长度各为4位,而dest的位数为5位,指令的末尾填充一位补齐。如此分配的原因是因为如果src1-src5都为5位,则指令的位数将超过32位,因此src1-src5只能从0-15号通用寄存器中选择,而dest可以从0-31号通用寄存器中选取。这条指令的功能是将src1到src5所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用寄存器中。
本发明根据新扩展的指令集,设计了一款专门针对Sbox生成的处理器模型-SASIP。该处理器在硬件逻辑上实现了上述3条扩展指令,因此能够加速Sbox的生产过程。处理器模型的指令集由25条指令构成,包括9条ALU通用指令,如add加法指令,xor移位指令;6条访存指令,如stw写数据存储器指令,ldw读数据存储器指令;7条跳转指令,如jeq两个源操作数相等则跳转指令,jp无条件跳转指令;3条针对Sbox替换扩展的指令,包括ifand指令、getbit指令、xor5指令。SASIP处理器模型的指令列表如下表4所示:
表4SASIP处理器指令集
ALU通用指令 | mov,add,sub,or,and,xor,shl,shr,nop |
跳转指令 | jp,jeq,jne,jl,jle,ja,jae |
访存指令 | stb,sth,stw,ldb,ldh,ldw |
Sbox扩展指令 | ifand,getbit,xor5 |
模型硬件结构主要由数据存储器、代码存储器、寄存器堆和流水线四部分组成。数据存储器地址空间定义在0x0000-0x7FFF范围内,大小32K。代码存储器地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes。寄存器堆由32个通用寄存器(GPR[0...31])、1个取指寄存器(FPR)、1个堆栈指针寄存器(SPR)和1个链接寄存器(LR)组成。流水线部分采用三级流水线:取指、译码和执行。流水线控制器主要负责对跳转指令进行控制,跳转指令只需要将跳转地址存储在取指寄存器(FPR)中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指令进行执行。在SASIP处理器的译码、执行部件中,除了通用的译码器和执行器外,还添加了针对Sbox生成算法专用指令的Sbox扩展指令译码器和Sbox扩展指令执行器,来对扩展的指令进行专门的译码和执行。在Sbox扩展指令执行器中,主要包括了3条新扩展指令的执行部件。
本发明的有益效果是:经过指令扩展优化后,AES-Sbox生成算法在本发明设计的ASIP处理器中仅占用188bytes的代码存储空间,比在ARM处理器中减少了38.6%;执行运算周期由原来的2875个时钟周期缩减到1123个时钟周期,执行效率比ARM处理器的执行效率提升了60.9%。这验证了本发明针对AES加密算法中的Sbox生成过程提出的扩展指令集确实加速了AES-Sbox的生成过程,而且经过指令优化的处理器模型在节省资源消耗上也有较大的提高。
附图说明
图1Sbox生成算法流程图。
图2针对Sbox的SASIP处理器模型框图。
图3扩展指令ifand的指令执行部件电路框图。
图4扩展指令getbit的指令执行部件电路框图。
图5扩展指令xor5的指令执行部件电路框图。
图6Sbox算法指令扩展优化流程图。
其中,1.数据存储器,2.寄存器堆,3.代码存储器,4.流水线,5.取指流水线,6.译码流水线,7.执行流水线,8.跳转指令译码部件,9.通用指令译码部件,10.Sbox扩展指令译码部件,11.读写指令执行部件,12.逻辑算术指令执行部件,13.Sbox扩展命令执行部件,14.流水线控制器,15.流水线寄存器I,16.流水线寄存器II,17.与门I,18.或门,19.与门II,20.异或逻辑门,21.多路选择器I,22.通用寄存器堆,23.移位器,24.与门III,25.多路选择器II,26.异或电路组,27.多路选择器III。
具体实施方式
下面结合附图与实施例对本发明做进一步说明。
图1是AES-Sbox生成算法的流程图,主要包含了6个执行步骤。在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的前提下,对Sbox生成过程的部分步骤进行了加速,具体过程为:
1)在Sbox生成过程中需要求解逆元,并且采用伽罗瓦域GF(28)内的乘法运算。分析Sbox生成过程,发现在每一次域内乘法循环过程中都需要进行一次判断后异或的过程,该过程对应图1的步骤1。在传统的ARM处理器中,完成该功能需要四条汇编语句,因此需要四个时钟周期。为了加速该过程,我们设计并采用了指令ifand<src1>,<src2>,<xor_src1>,<xor_src2>来完成该过程。该指令的功能是将通用寄存器src1和寄存器src2相与,如果结果不为0,则xor_src1和xor_src2就执行异或,并将结果保存在xor_src1寄存器内中,如果结果为0,则不执行异或操作。以上过程将在一个时钟周期内完成,因此比传统处理器的处理速度提高了四倍,从而对Sbox生成过程中的域内乘法运算进行了加速;
2)在Sbox生成算法中仿射变换过程需要对位进行操作,每次仿射变换都需要把八位二进制数的每一位取出来,对应的取位操作如图1中的步骤5。在ARM处理器以及其它常用的嵌入式处理器中,没有直接的取位操作,完成取位操作需要执行三个时钟周期,因此执行过程十分费时。因此设计并采用了指令getbit<dest>=<src>,<bitpos>来完成取位操作。该指令的功能完成的功能是从通用寄存器src中取出第bitpos位,然后存入通用寄存器dest的最后一位,从而完成取位操作。以上过程将在一个时钟周期内完成,因此比传统处理器的处理速度提高了三倍,从而对Sbox生成过程中的仿射运算进行了加速;
3)仿射变换过程中取出二进制数的所有位后,需要进行五元异或操作,并用操作后的结果对原数进行替换,异或操作对应图1中的步骤6。在传统的ARM处理器中,完成该功能需要四条汇编语言,因此需要四个时钟周期。为了加速五元异或操作,设计并采用了新指令xor5<dest>=<src1>,<src2>,<src3>,<src4>,<src5>。该指令的功能是将src1到src5所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用寄存器中。以上过程将在一个时钟周期内完成,因此比传统处理器的处理速度提高了四倍,从而对Sbox生成过程中的仿射运算进行了进一步的加速。
通过上述三条扩展指令的运行,加速AES-Sbox生成过程。
图2中,一种用于AES加密算法中Sbox生成指令优化方法的指令集处理器,它根据新扩展的指令的功能和结构来设计,最终实现的效果是能够以最高的效率支持新扩展的指令,从而能够加速AES算法中的Sbox生成过程。它主要由数据存储器(1)、寄存器堆(2)、代码存储器(3)和流水线(4)四部分组成;其中,数据存储器(1)地址空间定义在0x0000-0x7FFF范围内,大小32K;寄存器堆(2)主要由32个通用寄存器、1个取指寄存器、1个堆栈指针寄存器和1个链接寄存器组成;代码存储器3地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes。流水线4采用三级流水线:取指流水线(5)、译码流水线(6)和执行流水线(7);译码流水线(6)内除了跳转指令译码部件(8)、通用指令译码部件(9)外,还包扩了Sbox扩展指令译码部件(10),对扩展的指令进行专门的译码;执行流水线(7)除了包含读写指令执行部件(11)、逻辑算术指令执行部件(12)外,还包括了Sbox扩展指令执行部件(13),对扩展的指令进行专门的执行;流水线控制器(14)对跳转指令进行控制,跳转指令只需要将跳转地址存储在取指寄存器中,对所有指令统一取指,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指令进行执行;各个流水线阶段之间则通过流水线控制器(14)控制流水线寄存器I(15)和流水线寄存器II(16)来控制各个流水线阶段之间的数据传输和延时。
图3中,通用寄存器r0,r1,r2,r3是指令的输入,分别对应着指令操作数src1、src2、xor_src1、xor_src2。所述扩展指令ifand执行部件包括2个与门、1个或门(18)、1个异或逻辑门(20)和1个多路选择器I(21),部件的执行末端是整个处理器共用的通用寄存器堆(22)。与门I(17)接受r0与r1的输入,而与门I(17)的电路输出是r0和r1相与后的一个32位数值;或门(18)完成的功能是对与门I(17)的输出,即32位数值进行逐位相与,而产生的输出是一个1位的数值;该输出将与控制信号ifand_exe一起作为与门II(19)的输入,而与门II(19)的输出将作为多路选择器I(21)的输入,来控制地址选择;如果与门II(19)的输出是1,则多路选择器I(21)将通用寄存器r2的地址传递给寄存器堆,从而将r2和r3通过异或逻辑门(20)的输出结果赋给r2;如果与门II(19)的输出是0,则多路选择器I(21)将5位0传递给寄存器堆2,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
ifand_exe是一个控制信号,由译码阶段发出控制命令,决定是否执行ifand操作。
图4中,通用寄存器r0和4位的立即数i是指令的输入。所述扩展指令getbit执行部件包括1个移位器(23),1个与门III(24)以及1个多路选择器II(25),而部件的执行末端是通用寄存器堆(22)。移位器(23)输入端接收通用寄存器r0和4位的i;i的最大值为31,指示寄存器移动的位数;移位器23移位后的结果与0x00000001通过与门III(24)相与,而与门III(24)的输出为一个32位的数值,而该数值的最后一位保存着r0的第i位,而其它各位为0;控制信号getbit_exe控制多路选择器II(25),同时多路选择器II(25)接受5位的0和通用寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器II(25)将r1的地址传送给寄存器堆2,从而将与门III(24)的输出赋给r1;如果控制信号为0时,多路选择器II(25)将5位0传递给寄存器堆2,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
getbit_exe是一个控制信号,由译码阶段发出控制命令,决定是否执行getbit操作。
图5中,通用寄存器r2、r3、r4、r5、r6是指令的输入,分别对应着参加异或运算的5个参数。所述扩展指令xor5执行部件包括1个异或电路组(26)和1个多路选择器III(27),而部件的执行末端是通用寄存器堆(22)。异或电路组(26)由一系列异或逻辑门组成,它输入端接收通用寄存器r2、r3、r4、r5、r6的数据,输出结果为5元异或后的值;控制信号xor5_exe控制多路选择器III(27),同时多路选择器III(27)接受5位的0和通用寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器III(27)将r1的地址传送给寄存器堆2,从而将异或电路组26的输出结果赋给r1;如果控制信号为0时,多路选择器III(27)将5位0传递给寄存器堆2,即传递空地址,而处理器判断是空地址后将不进行赋值操作。
xor5_exe是一个控制信号,由译码阶段发出控制命令,决定是否执行xor5操作。
图6描述了AES-Sbox生成算法的指令优化验证的设计流程。设计过程从分析AES-Sbox具体语言如C语言的实现开始,然后将实现过程转换成汇编语言,通过对算法汇编语言进行分析,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的条件下进行指令的扩展优化。在确定新指令的指令格式和功能后,使用LISA语言描述扩展后的新指令集,并在新指令集上模拟AES-Sbox算法的运行,对比指令扩展前算法的运算结果,如果结果不相同,表明设计的新扩展指令没有正确实现预期目标,则重新转回算法的指令扩展优化分析阶段,重新进行指令扩展优化分析和设计步骤;如果结果相同,则转入处理器模型的硬件设计。根据扩展的指令集,使用verilog语言设计指令扩展后的处理器硬件模型,然后对处理器模型进行仿真。对比模拟运行结果,如果结果不相同,表明处理器硬件模型没有正确实现预期目标,重新转到处理器的硬件设计步骤,重新设计处理器模型;如果结果相同,则转入综合布局布线。根据处理器的硬件模型综合布局布线,将设计好的硬件模型烧入FPGA中进行处理器模型验证工作。对比验证结果和仿真结果,如果不相同,则需要退回到硬件模型综合布局布线,重新进行布局分析和综合;如果相同,则生成最终的指令专用处理器模型(ASIP)。
在确定该些新扩展指令的功能和指令格式,并设计出指令集相对应的专用指令处理器(ASIP)模型后,以Xilinx的以Virtex5 LX110T FPGA为平台,对设计的模型进行验证和性能分析。将AES-Sbox生成算法分别运行在本发明设计的处理器模型和在嵌入式领域广泛使用的ARM处理器上。通过对比发现,经过指令扩展优化,AES-Sbox生成算法在本发明设计的ASIP处理器中仅占用188bytes的代码存储空间,比在ARM处理器中减少了38.6%;执行运算周期由原来的2875个时钟周期缩减到1123个时钟周期,执行效率比ARM处理器的执行效率提升了60.9%。这验证了本发明针对AES加密算法中的Sbox生成过程提出的扩展指令集确实加速了AES-Sbox的生成过程,而且经过指令优化的处理器模型在节省资源消耗上也有较大的提高。
Claims (5)
1.一种AES加密算法中Sbox生成指令优化方法,其特征是,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的前提下,它的步骤为:
1)在Sbox生成过程中求解逆元,并且采用伽罗瓦域GF(28)内的乘法运算;在Sbox生成过程,每一次域内乘法循环过程中都需要进行一次判断后异或的过程,采用指令ifand<src1>,<src2>,<xor_src1>,<xor_src2>来完成该过程,该指令将通用寄存器src1和寄存器src2相与,如果结果不为0,则xor_src1和xor_src2就执行异或,并将结果保存在xor_src1寄存器内中,如果结果为0,则不执行异或操作,以上过程将在一个时钟周期内完成,从而对Sbox生成过程中的域内乘法运算进行了加速;
2)在Sbox生成算法中仿射变换过程需要对位进行操作,每次仿射变换都需要把八位二进制数的每一位取出;采用指令getbit<dest>=<src>,<bitpos>来完成取位操作;该指令从通用寄存器src中取出第bitpos位,然后存入通用寄存器dest的最后一位,从而完成取位操作;以上过程将在一个时钟周期内完成,从而对Sbox生成过程中的仿射运算进行了加速;
3)仿射变换过程中取出二进制数的所有位后,需要进行五元异或操作,并用操作后的结果对原数进行替换;采用指令xor5<dest>=<src1>,<src2>,<src3>,<src4>,<src5>,该指令将src1到src5所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表示的通用寄存器中;以上过程将在一个时钟周期内完成,从而对Sbox生成过程中的仿射运算进行了加速;
通过上述三条指令的运行,加速AES-Sbox生成过程。
2.一种用于权利要求1所述的AES加密算法中Sbox生成指令优化方法的指令集处理器,其特征是,它由数据存储器(1)、代码存储器(3)、寄存器堆(2)和流水线(4)四部分组成;数据存储器(1)地址空间定义在0x0000-0x7FFF范围内,大小32K Bytes;代码存储器(3)地址空间定义在0x8000-0xFFFF范围内,大小为32K Bytes;寄存器堆(2)由32个通用寄存器GPR[0…31]、1个取指寄存器FPR、1个堆栈指针寄存器SPR和1个链接寄存器LR组成;流水线(4)采用三级流水线:取指流水线(5)、译码流水线(6)和执行流水线(7);流水线控制器(14)主要负责对跳转指令进行控制,跳转指令只需要将跳转地址存储在取指寄存器FPR中,不需要经过执行流水线,然后接着对流水线的缓存部分进行刷新,防止执行流水线对跳转指令进行执行;在处理器的译码、执行部件中,除了通用指令译码部件(9)和读写指令执行部件(11)、逻辑算术指令执行部件(12)外,还设有Sbox生成算法专用指令的Sbox扩展指令译码部件(10)和Sbox扩展指令执行部件(13),来对扩展的指令进行专门的译码和执行;在Sbox扩展指令执行部件(13)中,设有扩展指令的执行部件,所述扩展指令的执行部件包括:指令ifand执行部件、指令getbit执行部件和指令xor5执行部件。
3.如权利要求2所述的用于AES加密算法中Sbox生成指令优化方法的指令集处理器,其特征是,所述指令ifand执行部件包括2个与门、1个或门(18)、1个异或逻辑门(20)和1个多路选择器I(21),部件的执行末端是整个处理器共用的通用寄存器堆(22);与门I(17)接受寄存器r0与r1的输入,而该与门的电路输出是r0和r1相与后的一个32位数值;或门(18)完成的功能是对与门I(17)的输出,即32位数值进行逐位相或,而产生的输出是一个1位的数值;该输出将与控制信号ifand_exe一起作为与门II(19)的输入,而与门II(19)的输出将作为多路选择器I(21)的输入,来控制地址选择;如果与门II(19)的输出是1,则多路选择器I(21)将寄存器r2的地址传递给寄存器堆(2),从而将寄存器r2和r3通过异或逻辑门(20)的输出结果赋给r2;如果与门II(19)的输出是0,则多路选择器I(21)将5位0传递给寄存器堆(2),即传递空地址,而处理器判断是空地址后将不进行赋值操作,所述通用寄存器堆(22)为寄存器堆中的32个通用寄存器GPR[0…31]。
4.如权利要求2所述的用于AES加密算法中Sbox生成指令优化方法的指令集处理器,其特征是,所述指令getbit执行部件包括1个移位器(23),1个与门III(24)以及1个多路选择器II(25),而部件的执行末端是通用寄存器堆(22);移位器(23)输入端接收通用寄存器GPR0和4位的i;i的最大值为31,指示寄存器移动的位数;移位器(23)移位后的结果与0x00000001通过与门III(24)相与,而与门III(24)的输出为一个32位的数值,而该数值的最后一位保存着寄存器r0的第i位,而其它各位为0;控制信号getbit_exe控制多路选择器II(25),同时多路选择器II(25)接受5位的0和寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器II(25)将寄存器r1的地址传送给寄存器堆(2),从而将与门III(24)的输出赋给r1;如果控制信号为0时,多路选择器II(25)将5位0传递给寄存器堆(2),即传递空地址,而处理器判断是空地址后将不进行赋值操作,所述通用寄存器堆(22)为寄存器堆中的32个通用寄存器GPR[0…31]。
5.如权利要求2所述的用于AES加密算法中Sbox生成指令优化方法的指令集处理器,其特征是,所述指令xor5执行部件包括1个异或电路组(26)和1个多路选择器III(27),而部件的执行末端是通用寄存器堆(22);异或电路组(26)由一系列异或逻辑门组成,它输入端接收通用寄存器GPR2、GPR3、GPR4、GPR5、GPR6的数据,输出结果为5元异或后的值;控制信号xor5_exe控制多路选择器III(27),同时多路选择器III(27)接受5位的0和寄存器r1的地址,来控制地址选择;当控制信号为1时,多路选择器III(27)将r1的地址传送给寄存器堆(2),从而将异或电路组(26)的输出结果赋给r1;如果控制信号为0时,多路选择器III(27)将5位0传递给寄存器堆(2),即传递空地址,而处理器判断是空地址后将不进行赋值操作,所述通用寄存器堆(22)为寄存器堆中的32个通用寄存器GPR[0…31]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110024766.XA CN102081514B (zh) | 2011-01-24 | 2011-01-24 | AES加密算法中Sbox生成指令优化方法及其指令集处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110024766.XA CN102081514B (zh) | 2011-01-24 | 2011-01-24 | AES加密算法中Sbox生成指令优化方法及其指令集处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102081514A CN102081514A (zh) | 2011-06-01 |
CN102081514B true CN102081514B (zh) | 2014-07-23 |
Family
ID=44087498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110024766.XA Expired - Fee Related CN102081514B (zh) | 2011-01-24 | 2011-01-24 | AES加密算法中Sbox生成指令优化方法及其指令集处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102081514B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101753467B1 (ko) * | 2014-06-26 | 2017-07-03 | 인텔 코포레이션 | 범용 gf(256) simd 암호용 산술 기능성을 제공하는 명령어 및 로직 |
CN108463968B (zh) * | 2016-01-11 | 2022-03-29 | 维萨国际服务协会 | 可变长度数据的快速格式保留加密 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702709A (zh) * | 2009-11-05 | 2010-05-05 | 复旦大学 | 一种适用于mips处理器的aes加密单元 |
CN101951314A (zh) * | 2010-10-12 | 2011-01-19 | 北京航空航天大学 | 对称密码加密中s-盒的设计方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8036379B2 (en) * | 2006-03-15 | 2011-10-11 | Microsoft Corporation | Cryptographic processing |
US8280040B2 (en) * | 2009-02-04 | 2012-10-02 | Globalfoundries Inc. | Processor instructions for improved AES encryption and decryption |
-
2011
- 2011-01-24 CN CN201110024766.XA patent/CN102081514B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702709A (zh) * | 2009-11-05 | 2010-05-05 | 复旦大学 | 一种适用于mips处理器的aes加密单元 |
CN101951314A (zh) * | 2010-10-12 | 2011-01-19 | 北京航空航天大学 | 对称密码加密中s-盒的设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102081514A (zh) | 2011-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102221990B (zh) | 针对aes对称加密算法的指令优化方法及其处理器 | |
CN102081513B (zh) | Aes加密算法中列混淆过程指令优化方法及其指令集处理器 | |
CN112543095B (zh) | 处理指令的系统、设备、方法、处理器、介质和电子设备 | |
CN111512292A (zh) | 用于可配置空间加速器中的非结构化数据流的装置、方法和系统 | |
CN102662628B (zh) | Rsa加密算法的指令优化处理器 | |
Ueno et al. | Toward more efficient DPA-resistant AES hardware architecture based on threshold implementation | |
KR101753467B1 (ko) | 범용 gf(256) simd 암호용 산술 기능성을 제공하는 명령어 및 로직 | |
Shahbazi et al. | Design and implementation of an ASIP-based cryptography processor for AES, IDEA, and MD5 | |
CN105204820B (zh) | 用于提供通用gf(256)simd加密算术功能的指令和逻辑 | |
CN110059493B (zh) | 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统 | |
Cheng et al. | Efficient implementation of the SHA-512 hash function for 8-bit AVR microcontrollers | |
CN115525342A (zh) | 一种sm3密码杂凑算法的加速方法及指令集处理器 | |
TW202113589A (zh) | 具有私有管線之處理器 | |
Seo et al. | Parallel implementations of LEA | |
CN102081514B (zh) | AES加密算法中Sbox生成指令优化方法及其指令集处理器 | |
Noor et al. | Resource shared galois field computation for energy efficient AES/CRC in IoT applications | |
CN111914307B (zh) | 基于高层次综合的国密算法sm4加速处理方法及系统 | |
CN104539417A (zh) | 一种基于流密码的加密设备 | |
Sikka et al. | RETRACTED ARTICLE: High-throughput field-programable gate array implementation of the advanced encryption standard algorithm for automotive security applications | |
CN202257543U (zh) | 针对aes对称加密算法的指令优化处理器 | |
Muri et al. | Embedded Processor-In-Memory architecture for accelerating arithmetic operations | |
Cardoso dos Santos et al. | An evaluation of the multi-platform efficiency of lightweight cryptographic permutations | |
KR20210018130A (ko) | 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치 | |
Jenkins et al. | Instructions and hardware designs for accelerating SNOW 3G on a software-defined radio platform | |
Joseph et al. | Exploiting SIMD instructions in modern microprocessors to optimize the performance of stream ciphers |
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: 20160124 |
|
EXPY | Termination of patent right or utility model |