专利名称:一种实现aes加解密的方法及装置的制作方法
技术领域:
本发明涉及数据通信安全技术领域,尤其涉及一种实现AES加解密的方法及装置。
背景技术:
AES (Advanced Encryption Standard,高级加密标准)是当前存储领域的主要加密算法。AES加密和解密由多个相同的轮运算组成,每个轮运算包含S盒运算、移位运算、列混合运算和加密钥的运算。加密和解密的S盒运算、移位运算、列混合运算都不相同。现有的AES方案使用独立的结构实现加密和解密运算,或者使用独立的结构实现S盒和逆的S盒的运算。 图I是现有加密运算的结构图,SBX(Sbox)表示加密运算的S盒运算,MC(MixColumns)表示加密运算的列混合运算,ARK (add round key)表示轮密钥加运算,Register (寄存器)缓存每轮运算的中间数据,选择器用于选择装载输入数据或轮运算的输出数据,round-key表示加密轮密钥,initial-data表示输入数据,data-out表示加密结果,initial-round表示轮运算的轮数。每组数据的加密有Nr轮运算,第一轮运算开始时装载输入数据,第一轮运算的输出作为第二轮运算的输入,依次类推,直到完成Nr轮运算,输出解密结果。图2是加密S盒运算的结构图,INV表示有限域中计算逆元的逻辑运算,MT表示SBX运算中逆元运算后把逆元和一个固定的矩阵相乘的运算。图3是现有解密运算的结构图,ISBX(Inv Sbox)表示解密运算的S盒运算,也是加密S盒运算的逆,IMC(Inv Mix Columns)表示解密运算的列混合运算,ARK (add roundkey)表示轮密钥加运算,Register (寄存器)缓存每轮运算的中间数据,选择器用于选择装载输入数据或轮运算的输出数据,round-key表示加密轮密钥,initial-data表示输入数据,data-out表示加密结果,initial-round表示当前轮运算的轮数。每组数据的解密有Nr轮运算,第一轮运算开始时装载输入数据,第一轮运算的输出作为第二轮运算的输入,依次类推,直到完成Nr轮运算,输出及诶结果。图4是解密运算S盒的运算过程,MTI表示ISBX运算中计算逆元之前输入数据和一个固定矩阵相乘的运算,INV表示有限域中计算逆元的逻辑运算。现有的AES算法采用独立结构分别实现加密和解密运算,而S盒运算逻辑的面积很大,独立结构分别实现加密和解密运算会增加芯片的面积和功耗。综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种通过合并S盒和列混合的AES加解密装置,其能够减少硬件资源的开销,同时缩短了关键路径,减少了芯片面积,提高了 AES加解密装置的运行速度。为了实现上述目的,本发明提供一种通过合并S盒和列混合的AES加解密装置,包括求逆及列混合复用单元、第一轮密钥加模块、第二轮密钥加模块、解密仿射变换模块、第一选择器、第二选择器以及寄存器,所述求逆及列混合复用单元包括求逆元模块、加密仿射变换模块、加密列混合模块以及解密列混合模块,所述求逆元模块的输出端与所述加密仿射变换模块以及所述解密列混合模块分别连接,所述加密列混合模块与所述加密仿射变换模块连接,且所述求逆元模块的输入端与所述寄存器连接;所述第一轮密钥加模块与所述加密列混合模块以及所述第一选择器的第一输入端连接;所述第二轮密钥加模块与所述解密列混合模块连接;
所述解密仿射变换模块与所述第二轮密钥加模块以及所述第一选择器的第二输入端连接;所述第二选择器与所述第一选择器的输出端以及所述寄存器连接。根据本发明的AES加解密装置,待加/解密数据在所述AES加解密装置中进行Nr轮运算,每轮运算结果缓存至所述寄存器,Nr由密钥长度确定。根据本发明的AES加解密装置,所述待加密数据由所述第一选择器的第一输入端输入,所述待解密数据由所述解密仿射变换模块输入,第一选择器通过加解密控制信号控制选择将所述待加密数据或经过所述解密仿射变换模块处理的待解密数据输入至所述第二选择器;在轮运算中,第一选择器通过加解密控制信号控制选择将加密轮运算结果或解密轮运算结果输入至所述第二选择器。根据本发明的AES加解密装置,所述第二选择器根据轮运算的轮次控制选择将所述加/解密输入数据或轮运算结果输入所述寄存器;若为第一轮,则将所述加/解密输入数据加载至所述寄存器,否则将所述轮运算结果缓存至所述寄存器。根据本发明的AES加解密装置,所述装置还包括与所述加密仿射变换模块输出端连接的第三轮密钥加模块。根据本发明的AES加解密装置,在第Nr轮运算时,所述第三轮密钥加模块对所述加密仿射变换模块的输出进行轮密钥加操作,并将操作结果作为加密结果输出。根据本发明的AES加解密装置,所述装置还包括与所述求逆元模块输出端连接的第四轮密钥加模块。根据本发明的AES加解密装置,在第Nr轮运算时,所述第四轮密钥加模块对所述求逆元模块的输出进行轮密钥加操作,并将操作结果作为解密结果输出。根据本发明的AES加解密装置,所述装置还包括与所述第二轮密钥加模块的输出端连接的轮密钥列混合模块,所述轮密钥列混合模块将所述轮密钥进行列混合操作后输入至所述第二轮密钥加模块。根据本发明的AES加解密装置,所述装置还包括密钥扩展单元,用于将初始密钥进行变换获取所述轮密钥加运算操作在每一轮运算使用的密钥。本发明通过把加密和解密运算放到一个模块内,并把加密和解密轮运算的结果使用相同的寄存器缓存,降低了芯片面积降低了功耗。此外,求逆元模块、加密仿射变换模块、加密列混合模块以及解密列混合模块共同组成求逆及列混合复用单元,从而通过合并轮运算中的S盒逆元计算和列混合运算,有效的优化了轮运算的组合逻辑,并使得加密和解密的列混合运算能够复用,减少硬件资源的开销,同时缩短了关键路径,减少了芯片面积,提高了 AES加解密装置的运行速度。
图I是现有加密运算的结构示意图;图2是现有加密S盒运算的结构示意图;图3是现有解密运算的结构示意图;图4是现有解密S盒运算的结构示意图;
图5是本发明一种通过合并S盒和列混合的AES加解密装置的结构示意图;图6是本发明中求逆及列混合复用单元的结构示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。图5和示出了本发明一种通过合并S盒和列混合的AES加解密装置100,装置100包括求逆及列混合复用单元10、第一轮密钥加模块105、第二轮密钥加模块106、解密仿射变换模块107、第一选择器108、第二选择器109、寄存器110、第三轮密钥加模块111、第四轮密钥加模块112以及轮密钥列混合模块113。求逆及列混合复用单元10包括一个输入端口以及四个输出端口 CO、Cl、C2、C3,求逆及列混合复用单元10的输入端口与寄存器110连接,输出端口 CO与第三轮密钥加模块111连接,输出端口 Cl与第一轮密钥加模块105连接,输出端口 C2与第二轮密钥加模块106连接,输出端口 C3与第四轮密钥加模块112连接。求逆及列混合复用单元10的具体结构如图6所示,其包括求逆元模块101、加密仿射变换模块102、加密列混合模块103以及解密列混合模块104,求逆元模块101的输出端与加密仿射变换模块102以及解密列混合模块104分别连接,加密列混合模块103与加密仿射变换模块102连接,且求逆元模块101的输入端与寄存器110连接。求逆及列混合复用单元10包括四个输出端口 CO、Cl、C2以及C3,其中,加密仿射变换模块102的输出端为端口⑶;加密列混合模块103的输出端为端口 Cl ;解密列混合模块104的输出端为端口C2 ;求逆元模块101的输出端为端口 C3。列混合运算是把输入矩阵和一个固定的矩阵相乘,求逆元模块以及加密仿射变换也具有相应的乘法运算,同时输入输出均为4X4矩阵。从而由于求逆及列混合复用单元10中的各个模块具有共同的有限域乘法器和其他的逻辑单元,因此可以将这些模块放在一起进行复用,以降低硬件资源消耗。第一轮密钥加模块105与求逆及列混合复用单元10的加密列混合模块103连接以及第一选择器108的第一输入端连接,即第一轮密钥加模块105与求逆及列混合复用单元10的输出端口 Cl连接,与第一轮密钥加模块105用于执行加密的轮密钥加运算操作。第二轮密钥加模块106与求逆及列混合复用单元10的解密列混合模块104连接,即第二轮密钥加模块106求逆及列混合复用单元10的输出端口 C2连接,第二轮密钥加模块106用于执行解密的轮密钥加操作。解密仿射变换模块107与第二轮密钥加模块106以及第一选择器108的第二输入
端连接。第二选择器109与第一选择器108的输出端以及寄存器110连接。在本发明中,求逆元模块101以及加密仿射变换模块102组成加密的S盒运算,解密仿射变换模块107与求逆元模块101组成解密的S盒运算,本发明将S盒运算的逆元运算以及列混合运算进行优化,减少轮运算硬件资源开销,同时缩短了加密解密模块的关键路径,使得AES模块能够工作在更高的频率,提高了 AES的速度,降低芯片面积和功耗。
待加密数据或待解密数据在AES加解密装置100中进行Nr轮运算,每轮运算结果缓存至寄存器110,Nr由密钥长度确定。表I是Nr和密钥长度关系的一种实施例。表I
密钥长度(比特) I28192256
Nr101214其中,待加密数据由第一选择器108的第一输入端输入,待解密数据由解密仿射变换模块107输入,第一选择器108通过加解密控制信号(Encrypt)控制选择将待加密数据或经过解密仿射变换模块107处理的待解密数据输入至第二选择器109,当加解密控制信号(Encrypt)为加密控制信号时,第一选择器108将待加密数据输入至第二选择器109,当加解密控制信号(Encrypt)为解密控制信号时,第一选择器108将经过解密仿射变换模块107处理后的待解密数据输入至第二选择器109。同时,在后续的轮运算中,第一选择器108通过加解密控制信号(Encrypt)控制选择将加密轮运算结果或解密轮运算结果输入至第二选择器109。在图5中,为方便表述,图中画出了两个第一选择器108以及两个解密仿射变换模块107,实际上是通过一个选择门以及一个解密仿射变换模块107实现。第二选择器109根据轮运算的轮次(Initial-round)控制选择将待加/解密输入数据(Initial-data)或轮运算结果输入寄存器110 ;若为第一轮,则将加/解密输入数据加载至寄存器110,否则将轮运算结果缓存至寄存器110。加密的轮运算依次包括求逆元模块101进行的求逆元运算、加密仿射变换模块102的加密仿射变换运算、加密列混合模块103的加密列混合运算以及第一轮密钥加模块105的加密轮密钥加运算。解密的轮运算依次包括求逆元模块101进行的求逆元运算、解密列混合模块104进行的解密列混合运算、第二轮密钥加模块106进行的解密轮密钥加运算以及解密仿射变换模块的解密仿射变换运算。第三轮密钥加模块111与加密仿射变换模块12输出端连接,即为求逆及列混合复用单元10的输出端口 CO。在第Nr轮运算时,所述第三轮密钥加模块111对加密仿射变换模块102的输出进行轮密钥加操作,并将操作结果作为加密结果(Data-out-enc)输出。第四轮密钥加模块112与求逆元模块11输出端连接,即为求逆及列混合复用单元10的输出端口 C3。在第Nr轮运算时,第四轮密钥加模块112对求逆元模块101的输出进行轮密钥加操作,并将操作结果作为解密结果(Data-out-dec)输出。
AES加解密装置100还包括与第二轮密钥加模块106的输出端连接的轮密钥列混合模块113,轮密钥列混合模块113将轮密钥进行列混合操作后输入至第二轮密钥加模块106,第二轮密钥加模块106将进过列混合的轮密钥与经过列混合的待解密数据进行密钥加运算。优选的是,AES加解密装置100还包括密钥扩展单元,用于将初始密钥进行变换获取轮密钥加运算操作在每一轮运算使用的密钥。轮密钥(Round-key)其由最初始的密钥变换而来,最初的密钥来自用户输入的初始密钥,轮密钥用于轮密钥加运算操作。不管初始的密钥是128比特、192比特还是256比特,轮密钥的长度都是128比特在本发明中,寄存器110选择性的保存加密和解密轮运算的变量,并合并加解密S盒运算的逆元运算和混轮运算。每轮运算的寄存器110输出作为下一轮运算的输入,如果是第一轮运算,写入到寄存器110的不是轮运算的结果,而是输入的数据经过一定运算的结果,所述的一定运算如图5所示的解密仿射变换,如果是加密的轮运算,则输入的数据不 需要进行解密仿射变换,而是直接输入;如果是解密的轮运算,输入到寄存器的是输入数据进行解密仿射变换的结果。从寄存器输出的数据,即上一轮运算的结果,进入到新的一轮运算。在新的一轮运算中,寄存器的输出直接输入到求逆及列混合复用单元10,求逆及列混合复用单元10实现S盒计算的逆元运算和列混合运算,逆元的计算和列混合运算存在可优化的逻辑,合并后能够在很大程度上实现减少逻辑的使用,并且把加密和解密的列混合运算合并后,解密的列混合运算逻辑单元可以使用加密列混合运算的逻辑单元。本发明通过把加密和解密运算放到一个模块内,并把加密和解密轮运算的结果使用相同的寄存器缓存,降低了芯片面积降低了功耗。此外,求逆元模块101、加密仿射变换模块102、加密列混合模块103以及解密列混合模块104共同组成求逆及列混合复用单元10,从而通过合并轮运算中的S盒逆元计算和列混合运算,有效的优化了轮运算的组合逻辑,并使得加密和解密的列混合运算能够复用,减少硬件资源的开销同时缩短了关键路径,减少了芯片面积,提高了 AES加解密装置100的运行速度。根据本发明的一个实施例,在加密过程中,待加密数据从第一选择器108输入,力口/解密控制信号(Encrypt)为加密控制信号,第一选择器108根据加密控制信号将待加密数据发送到第二选择器109 ;轮运算的轮数(Initial-round)为1,第二选择器109根据轮运算的轮数(Initial-round)选择将待加密数据加载到寄存器110 ;求逆元模块101对寄存器110发来的数据进行求逆元运算操作,并将求逆元后的数据发送至加密仿射变换模块
102;加密仿射变换模块102将逆元和一个固定矩阵进行相乘运算,该固定矩阵与解密仿射变换中的固定矩阵不同,加密仿射变换模块102运算完成后将数据发送给加密列混合模块
103;加密列混合模块103对数据进行列加密混列变换后输出到第一轮密钥加模块105与轮密钥矩阵(Round-key)相加作为当前一轮的加密轮运算的结果;第一选择器108根据加/解密控制信号(Encrypt)选择将加密轮运算的结果发送到第二选择器109 ;此时轮运算的轮数(Initial-round)为2,第二选择器109选择将第一选择器108发来的加密轮运算结果缓存至寄存器110开始下一轮的轮运算,依次类推,直到完成Nr轮运算。在Nr轮运算时,所述第三轮密钥加模块111对加密仿射变换模块102的输出进行轮密钥加操作,并将操作结果作为加密结果(Data-out-enc)输出。在上述实施例中,每组加密数据的长度是128比特,每组数据的加密有Nr轮运算,Nr由密钥的长度决定。每一轮运算的输入和输出都是128比特数据,每一轮运算的输入的128比特数据从高位到低位分为16个8比特的数据放入一个4X4的矩阵中M,然后进行求逆元运算和加密仿射变换,并得到一个新的4X 4矩阵M,。如果此时是最后一轮运算,把M,和轮密钥矩阵相加后,作为加密后的4X4数据矩阵输出,不管初始的密钥是128比特、192比特还是256比特,轮密钥的长度都是128比特,轮密钥和数据一样构成相同的4X4矩阵和轮运算数据相加;如果不是最后一轮运算,加密仿射变换的输出M,进行列混合的运算,所谓的列混合运算是把M’再和一个固定的矩阵相乘,该固定矩阵对于AES加密算法是唯一的。列混合运算完成后的输出和轮密钥矩阵相加作为当前一轮运算的输出,也是下一轮运算的输入。根据本发明的另一实施例,在解密过程中,待解密数据输入至解密仿射变换模块107进行解密仿射变换;加/解密控制信号(Encrypt)为解密控制信号,第一选择器108根据解密控制信号将经过解密仿射变换模块107处理后的待解密数据发送到第二选择器109;轮运算的轮数(Initial-round)为1,第二选择器109根据轮运算的轮数 (Initial-round)选择将待加密数据加载到寄存器110 ;求逆元模块101对寄存器110发来的数据进行求逆元运算操作,并将求逆元后的数据发送至解密列混合模块104 ;解密列混合模块103对数据进行解密混列变换后输出到第二轮密钥加模块106,第二轮密钥加模块106将解密混列变换后的数据与经过混列变换后的轮密钥矩阵(Round-key)相加,并发送解密仿射变换模块107进行解密仿射变换,并将解密仿射变换后的数据作为当前一轮的解密轮运算的结果;第一选择器108根据加/解密控制信号(Encrypt)选择将解密轮运算的结果发送到第二选择器109 ;此时轮运算的轮数(Initial-round)为2,第二选择器109选择将第一选择器108发来的解密轮运算结果缓存至寄存器110开始下一轮的轮运算,依次类推,直到完成Nr轮运算。在第Nr轮运算时,第四轮密钥加模块112对求逆元模块101的输出进行轮密钥加操作,并将操作结果作为解密结果(Data-out-dec)输出。综上所述,本发明通过把加密和解密运算放到一个模块内,并把加密和解密轮运算的结果使用相同的寄存器缓存,降低了芯片面积降低了功耗。此外,求逆元模块101、加密仿射变换模块102、加密列混合模块103以及解密列混合模块104共同组成求逆及列混合复用单元10,从而通过合并轮运算中的S盒逆元计算和列混合运算,有效的优化了轮运算的组合逻辑,并使得加密和解密的列混合运算能够复用,减少硬件资源的开销同时缩短了关键路径,减少了芯片面积,提高了 AES加解密装置100的运行速度。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种通过合并S盒和列混合的AES加解密装置,其特征在于,包括求逆及列混合复用单元、第一轮密钥加模块、第二轮密钥加模块、解密仿射变换模块、第一选择器、第二选择器以及寄存器, 所述求逆及列混合复用单元包括求逆元模块、加密仿射变换模块、加密列混合模块以及解密列混合模块,所述求逆元模块的输出端与所述加密仿射变换模块以及所述解密列混合模块分别连接,所述加密列混合模块与所述加密仿射变换模块连接,且所述求逆元模块的输入端与所述寄存器连接; 所述第一轮密钥加模块与所述加密列混合模块以及所述第一选择器的第一输入端连接; 所述第二轮密钥加模块与所述解密列混合模块连接; 所述解密仿射变换模块与所述第二轮密钥加模块以及所述第一选择器的第二输入端连接; 所述第二选择器与所述第一选择器的输出端以及所述寄存器连接。
2.根据权利要求I所述的AES加解密装置,其特征在于,待加/解密数据在所述AES加解密装置中进行Nr轮运算,每轮运算结果缓存至所述寄存器,Nr由密钥长度确定。
3.根据权利要求2所述的AES加解密装置,其特征在于,所述待加密数据由所述第一选择器的第一输入端输入,所述待解密数据由所述解密仿射变换模块输入,第一选择器通过加解密控制信号控制选择将所述待加密数据或经过所述解密仿射变换模块处理的待解密数据输入至所述第二选择器; 在轮运算中,第一选择器通过加解密控制信号控制选择将加密轮运算结果或解密轮运算结果输入至所述第二选择器。
4.根据权利要求3所述的AES加解密装置,其特征在于,所述第二选择器根据轮运算的轮次控制选择将所述加/解密输入数据或轮运算结果输入所述寄存器;若为第一轮,则将 所述加/解密输入数据加载至所述寄存器,否则将所述轮运算结果缓存至所述寄存器。
5.根据权利要求2所述的AES加解密装置,其特征在于,所述装置还包括与所述加密仿射变换模块输出端连接的第三轮密钥加模块。
6.根据权利要求5所述的AES加解密装置,其特征在于,在第Nr轮运算时,所述第三轮密钥加模块对所述加密仿射变换模块的输出进行轮密钥加操作,并将操作结果作为加密结果输出。
7.根据权利要求2所述的AES加解密装置,其特征在于,所述装置还包括与所述求逆元模块输出端连接的第四轮密钥加模块。
8.根据权利要求7所述的AES加解密装置,其特征在于,在第Nr轮运算时,所述第四轮密钥加模块对所述求逆元模块的输出进行轮密钥加操作,并将操作结果作为解密结果输出。
9.根据权利要求I所述的AES加解密装置,其特征在于,所述装置还包括与所述第二轮密钥加模块的输出端连接的轮密钥列混合模块,所述轮密钥列混合模块将所述轮密钥进行列混合操作后输入至所述第二轮密钥加模块。
10.根据权利要求I所述的AES加解密装置,其特征在于,所述装置还包括密钥扩展单元,用于将初始密钥进行变换获取所述轮密钥加运算操作在每一轮运算使用的密钥。
全文摘要
本发明提供了一种通过合并S盒和列混合的AES加解密装置,包括求逆及列混合复用单元、第一轮密钥加模块、第二轮密钥加模块、解密仿射变换模块、第一选择器、第二选择器以及寄存器,求逆及列混合复用单元包括求逆元模块、加密仿射变换模块、加密列混合模块以及解密列混合模块,第一轮密钥加模块与加密列混合模块以及第一选择器连接;第二轮密钥加模块与解密列混合模块连接;解密仿射变换模块与第二轮密钥加模块以及第一选择器连接;第二选择器与第一选择器以及寄存器连接。借此,本发明能够减少硬件资源的开销,同时缩短了关键路径,减少了芯片面积,提高了AES加解密装置的运行速度。
文档编号H04L9/06GK102857334SQ201210236959
公开日2013年1月2日 申请日期2012年7月10日 优先权日2012年7月10日
发明者莫海锋, 朱丽娟 申请人:记忆科技(深圳)有限公司