AES加密算法中Sbox生成指令优化方法及其指令集处理器的制作方法

文档序号:6353575阅读:812来源:国知局
专利名称:AES加密算法中Sbox生成指令优化方法及其指令集处理器的制作方法
技术领域
本发明涉及AES的加解密技术,尤其涉及AES加密算法中Sbox生成过程的指令优 化方法及其指令集处理器设计。
背景技术
AES是The Advanced Encryption Mandard (高级加密标准)的简称,是美国国家 标准与技术研究所(NIST)公布的一种用于加密电子数据的规范,其被广泛地讨论和认可, 成为全球信息安全领域中应用最为广泛的一种分组密码算法。AES算法采用对称分组密码 体制,密钥长度可以分别为1 位、192位、256位,而分组长度固定为1 位。AES的加密技术使用加密密钥执行一系列的转换,以将被称为“明文”的可理解数 据转换为被称为“密文”的无法理解的数据。在AES加密解密算法中使用非线性字节替换表 (S-Box)对原文进行替换,即根据查表的方式将原文替换成Sbox中相对应的值。AES-Sbox 需要自己生成,它的生成过程包含了求解逆元和仿射变化两个过程第一步求解逆元是 在伽罗瓦域GFQ8)内进行的,即对域内的任意一个八位的二进制数A,转换成一个多项式 A(X),如果存在某个二进制数对应的多项式B(X)满足[A(X) XB(X)]mod m(x) = 1那么B 就是A的逆元,其中模多项式m(x) = x8+x4+x3+x+l,是为了保证相乘以后的元素仍然在域 内。在这个过程中,需要大量用到域内的乘法。第二步仿射过程,即对某一 8位二进制数 b7b6b5b4b3b2b1b0按如下公式进行变化b ’i = bi 十 b(i + 4)mod8 十 b (i + 5)mod8 十 b(i + 6)mod8 十 b(i + 7)mod8该过程涉及到大量的取位操作与异或操作。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% ; 执行运算周期也由原来的观75个时钟周期缩减到1123个时钟周期,执行效率比ARM处理 器提升了 60.9%。为实现上述目的,本发明采用如下技术方案一种AES加密算法中Sbox生成指令优化方法,在满足不改变指令操作码长度、指 令位数以及不影响处理器运行速度的前提下,它的步骤为1)在Sbox生成过程中需要求解逆元,并且采用伽罗瓦域GFQ8)内的乘法运算。 分析Sbox生成过程,发现在每一次域内乘法循环过程中都需要进行一次判断后异或的过 程,该过程对应Sbox生成算法流程

图1中的步骤1。在传统的ARM处理器中,完成该功 能需要四条汇编语句,因此需要四个时钟周期。为了加速该过程,我们设计并采用了指令 ifand<srcl>, <src2>, <xor_srcl>, <xor_src2>。该指令的功能是将操作数 srcl 和 src2 相 与,如果结果不为0,则XOr_srcl和XOr_src2就执行异或,并将结果保存在xor_srcl表示 的通用寄存器内;如果结果为0,则不执行异或操作。以上过程将在一个时钟周期内完成, 因此比传统处理器的处理速度提高了四倍,从而对Sbox生成过程中的域内乘法运算进行 了加速。2)在Sbox生成算法中仿射变换过程需要对位进行操作,每次仿射变换都需要把 八位二进制数的每一位取出来,该过程对应Sbox生成算法图1中的步骤5。在ARM处理器以 及其它常用的嵌入式处理器中,没有直接的取位操作,完成取位操作需要执行三个时钟周 期,因此执行过程十分费时。为了加速该过程,设计并采用了指令getbit<deSt> = <src>, 〈bitpos〉。该指令的功能完成的功能是从通用寄存器src中取出第bitpos位,然后存入通 用寄存器dest的最后一位,从而完成取位操作。以上过程将在一个时钟周期内完成,因此 比传统处理器的处理速度提高了三倍,从而对Sbox生成过程中的仿射过程进行了加速。3)仿射变换过程中取出二进制数的所有位后,需要进行五元异或操作,并用操作 后的结果对原数进行替换,该过程对应Sbox生成算法图1中的步骤6。在传统的ARM处理 器中,完成该功能需要四条汇编语言,因此需要四个时钟周期。为了加速五元异或操作,设 计并采用了新指令 xor5<dest> = <srcl>, <src2>, <src3>, <src4>, <src5>0 该指令的功能 是将srcl到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接受寄存器rO与rl 的输入,而该与门I的输出是rO和rl相与后的一个32位数值;或门完成的功能是对与门 I的输出,即32位数值进行逐位相或,而产生的输出是一个1位的数值;该输出将与控制信 号ifand_exe —起作为与门II的输入,而与门II的输出将作为多路选择器I的输入,来控 制地址选择;如果与门II的输出是1,则多路选择器I将通用寄存器r2的地址传递给寄存 器堆,从而将通用寄存器r2和r3通过异或逻辑门的输出结果赋给r2 ;如果与门II的输出 是0,则多路选择器I将5位O传递给寄存器堆,即传递空地址,而处理器判断是空地址后将 不进行赋值操作。所述扩展指令getbit执行部件包括1个移位器,1个与门以及1个多路选择器, 而部件的执行末端是通用寄存器堆。移位器输入端接收通用寄存器rO和4位的i ;i的最 大值为31,指示寄存器移动的位数;移位器移位后的结果与0x00000001作为与门III的输 入,而与门III的输出为一个32位的数值,而该数值的最后一位保存着rO的第i位,而其 它各位为O ;控制信号getbit_exe控制多路选择器II,同时多路选择器II接受5位的O和 通用寄存器rl的地址,来控制地址选择;当控制信号为1时,多路选择器II将rl的地址传 送给寄存器堆,从而将与门III的输出赋给rl ;如果控制信号为O时,多路选择器II将5位 O传递给寄存器堆,即传递空地址,而处理器判断是空地址后将不进行赋值操作。所述扩展指令Xor5执行部件包括1个异或电路组和1个多路选择器,而部件的执 行末端是通用寄存器堆。异或电路组由一系列异或逻辑门组成,它输入端接收通用寄存器 r2、r3、r4、r5、r6的数据,输出结果为5元异或后的值;控制信号Xor5_eXe控制多路选择 器III,同时多路选择器III接受5位的O和通用寄存器rl的地址,来控制地址选择;当控 制信号为1时,多路选择器III将rl的地址传送给寄存器堆,从而将异或电路组的输出结 果赋给rl ;如果控制信号为O时,多路选择器III将5位O传递给寄存器堆,即传递空地址, 而处理器判断是空地址后将不进行赋值操作。本发明通过对AES-Sbox算法进行分析,在满足不改变指令操作码长度、指令位数 以及不影响处理器运行速度的前提下,对AES加密算法中的Sbox生成过程进行了指令扩展 优化,共设计了 3条扩展指令用于加速AES-Sbox生成过程,具体设计过程如下1.在Sbox生成过程中需要求解逆元,并且采用伽罗瓦域GFQ8)内的乘法运算。在 最坏情况下需要循环256次,即经过256次域内乘法运算才能找到逆元,因为最坏情况下一 个元素将与256个元素依次相乘才能判定是否已找到逆元,因此需要对域内乘法运算进行 加速。分析Sbox生成过程,发现在每一次域内乘法循环过程中都需要进行一次判断后异或 过程,该过程对应Sbox生成算法流程图1中的步骤1,而该步骤对应的执行语句为if (a and b is l)then
c = c xor d ;对应的ARM编译器汇编语言为四条语句and rl, rl, r0cmp rl,0equal jumpxorxorr2,r2,r3上述汇编语言的含义是对通用寄存器rl和rO进行与操作,并将结果保存在rl 中;判断rl和0是否相等,如果相等则跳过下面一步的异或操作,如果不相等则执行下面一 步的异或操作,并将异或结果保存在寄存器r2中。根据上述四条汇编语言的功能,设计了一条新的指令ifand,能够在一个时钟周期 内完成上面四条语句的所完成的功能。新指令ifand<srcl>,<src2>, <xor_srcl>, <xor_ src2> 一共有四个操作码,分别对应着执行语句中的a、b、c、d。指令的具体格式如表1所示表Iifand指令格式
101000srclsrc2xor_srclxor_src2XXXXXX31 2625 2120 1615 1110 65 0该指令的操作码为101000,每个操作数的位数为5位,最低6位的xxxxxx为补齐 位,保证指令的长度为32位。这条指令完成的功能是srcl和src2相与,如果结果不为0, 则Xor_Srcl和XOr_src2就执行异或,并将结果保存在xor_srcl中,如果结果为0,则不执 行异或操作。2.在Sbox生成算法中仿射变换过程需要对位进行操作,每次仿射变换都需要把 八位二进制数的每一位取出来。在ARM处理器以及其它常用的嵌入式处理器中,没有直接 的取位操作,因此取位操作执行过程十分费时。该过程对应Sbox生成算法流程图1中的步 骤5,而该步骤对应的执行语句为y = (χ >> i)and 0x00000001 ;首先将χ右移i个位置,然后和0x00000001相与,结果赋给y。对应的ARM汇编语 句为move rl, r0leftshift rl, rl, (31-i)rightshift rl, rl,31上述汇编语言的含义是先将要移位的通用寄存器r0的值存储在一个新的通用寄 存器rl中,然后将rl左移(31-i)位,再右移31位,而这个操作的目的是对其余位进行清 零,从而取出r0的第i位。为了能够在一个时钟周期内完成取位操作,本发明设计了一条 新取位指令getbit来替代上面的三条指令,getbit<deSt> = <src>,<bitpos>的具体格式 如表2所示表2getbit指令格式
权利要求
1.一种AES加密算法中Sbox生成指令优化方法,其特征是,在满足不改变指令操作码 长度、指令位数以及不影响处理器运行速度的前提下,它的步骤为1)在Sbox生成过程中求解逆元,并且采用伽罗瓦域GFQ8)内的乘法运算;采用指令 ifand<srcl>, <src2>, <xor_srcl>, <xor_src2>来完成该过程,该指令将通用寄存器srcl 和寄存器src2相与,如果结果不为0,则XOr_srcl和XOr_src2就执行异或,并将结果保存 在xor_srci寄存器内中,如果结果为0,则不执行异或操作,以上过程将在一个时钟周期内 完成,从而对Sbox生成过程中的域内乘法运算进行了加速;2)在Sbox生成算法中仿射变换过程需要对位进行操作,每次仿射变换都需要把八位 二进制数的每一位取出;采用指令getbit<dest> = <src>, <bitp0S>来完成取位操作;该 指令从通用寄存器src中取出第bitpos位,然后存入通用寄存器dest的最后一位,从而完 成取位操作;以上过程将在一个时钟周期内完成,从而对Sbox生成过程中的仿射运算进行 了加速;3)仿射变换过程中取出二进制数的所有位后,需要进行五元异或操作,并用操作后的 结果对原数进行替换;采用指令 xor5<dest> = <srcl>, <src2>, <src3>, <src4>, <src5>, 该指令将srcl到src5所表示的通用寄存器中的内容进行异或操作,结果保存在dest所表 示的通用寄存器中;以上过程将在一个时钟周期内完成,从而对Sbox生成过程中的仿射运 算进行了加速;通过上述三条扩展指令的运行,加速AES-Sbox生成过程。
2.一种用于权利要求1所述的AES加密算法中Sbox生成指令优化方法的指令集处理 器,其特征是,模型硬件结构主要由数据存储器(1)、代码存储器(3)、寄存器堆(2)和流水 线四部分组成;数据存储器(1)地址空间定义在0x0000-0x7FFF范围内,大小32K;代 码存储器C3)地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes ;寄存器堆由 32个通用寄存器GPR
、1个取指寄存器FPR、1个堆栈指针寄存器SI5R和1个链接寄 存器LR组成;流水线(4)采用三级流水线取指流水线(5)、译码流水线(6)和执行流水线 (7);流水线控制器(14)主要负责对跳转指令进行控制,跳转指令只需要将跳转地址存储 在取指寄存器FPR中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止 执行部件对跳转指令进行执行;在处理器的译码、执行部件中,除了通用指令译码部件(9) 和读写指令执行部件(11)、逻辑算术指令执行部件(1 外,还设有Sbox生成算法专用指令 的Sbox扩展指令译码部件(10)和Sbox扩展指令执行部件(13),来对扩展的指令进行专门 的译码和执行;在Sbox扩展指令执行部件(1 中,设有扩展指令的执行部件。
3.如权利要求2所述的用于AES加密算法中Sbox生成指令优化方法的指令集处理器, 其特征是,所述扩展指令ifand执行部件包括2个与门、1个或门(18)、1个异或逻辑门QO) 和1个多路选择器1(21),部件的执行末端是整个处理器共用的通用寄存器堆0 ;与门 I (17)接受寄存器rO与rl的输入,而该与门的电路输出是rO和rl相与后的一个32位数 值;或门(18)完成的功能是对与门1(17)的输出,S卩32位数值进行逐位相与,而产生的输 出是一个1位的数值;该输出将与控制信号ifand_exe —起作为与门11(19)的输入,而与 门11(19)的输出将作为多路选择器I 的输入,来控制地址选择;如果与门11(19)的输 出是1,则多路选择器I 将通用寄存器r2的地址传递给寄存器堆0),从而将通用寄存 器r2和r3通过异或逻辑门QO)的输出结果赋给r2 ;如果与门II (19)的输出是0,则多路选择器I 将5位O传递给寄存器堆( ,即传递空地址,而处理器判断是空地址后将不 进行赋值操作。
4.如权利要求2所述的用于AES加密算法中Sbox生成指令优化方法的指令集处理器, 其特征是,所述扩展指令getbit执行部件包括1个移位器,1个与门III (24)以及1 个多路选择器11 ,而部件的执行末端是通用寄存器堆0 ;移位器输入端接收通 用寄存器rO和4位的i ;i的最大值为31,指示寄存器移动的位数;移位器移位后的 结果与0x00000001通过与门III(M)相与,而与门III(M)的输出为一个32位的数值,而 该数值的最后一位保存着寄存器rO的第i位,而其它各位为0 ;控制信号getbit_exe控制 多路选择器II (25),同时多路选择器II (25)接受5位的O和通用寄存器rl的地址,来控制 地址选择;当控制信号为1时,多路选择器11 将rl的地址传送给寄存器堆O),从而 将与门III 04)的输出赋给rl ;如果控制信号为O时,多路选择器II 05)将5位O传递给 寄存器堆02),即传递空地址,而处理器判断是空地址后将不进行赋值操作。
5.如权利要求2所述的用于AES加密算法中Sbox生成指令优化方法的指令集处理 器,其特征是,所述扩展指令xor5执行部件包括1个异或电路组06)和1个多路选择器 III (27),而部件的执行末端是通用寄存器堆0 ;异或电路组06)由一系列异或逻辑门 组成,它输入端接收通用寄存器r2、r3、r4、r5、r6的数据,输出结果为5元异或后的值;控 制信号XOr5_eXe控制多路选择器III (27),同时多路选择器III (27)接受5位的O和通用 寄存器rl的地址,来控制地址选择;当控制信号为1时,多路选择器IIK27)将rl的地址 传送给寄存器堆0),从而将异或电路组06)的输出结果赋给rl ;如果控制信号为O时,多 路选择器III (27)将5位O传递给寄存器堆( ,即传递空地址,而处理器判断是空地址后 将不进行赋值操作。
全文摘要
本发明涉及一种AES加密算法中Sbox生成过程的指令优化方法及其指令集处理器模型的设计。本发明为了加速AES算法中Sbox的生成过程,设计了三条新扩展指令(1)ifand,,,,用来加速Sbox生成过程中的域内乘法运算;(2)getbit=,,用来加速仿射变换过程中的取位操作;(3)xor5=,,,,,用来加速仿射变换过程中的五元异或操作。以上3条指令都将在一个时钟周期内完成,而在传统ARM处理器中,则分别需要多个时钟周期,因此新指令起到了加速作用。本发明还根据上述新扩展指令设计了一款与新指令集相对应的专用指令处理器模型——SASIP。该处理器模型在硬件逻辑上实现了上述扩展指令,因此是一款专门针对于AES-Sbox加速的处理器模型。
文档编号G06F9/38GK102081514SQ20111002476
公开日2011年6月1日 申请日期2011年1月24日 优先权日2011年1月24日
发明者李新, 贾智平, 陈仁海, 陈健 申请人:山东大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1