一种低复杂度的AES一体化加解密器实现方法与流程

文档序号:12131441阅读:425来源:国知局
一种低复杂度的AES一体化加解密器实现方法与流程

本发明属于通信领域,具体涉及一种低复杂度AES一体化加解密器实现方法。



背景技术:

随着科技的进步,信息的交换在人们生活中越加频繁,保证信息的安全传输成为通信中至关重要的一环。美国国家标准与技术研究院(NIST)在2001年制定和公布了AES(Advanced Encryption Standard)加密算法,它已取代DES加密算法成为现今最流行的加密方式之一。AES加密算法具有安全性高,流程简单,编码紧凑等特点,能满足大多数情况下信息加密的需要。

AES是一种对称密钥分组的加密算法。为满足不同的情景需要,AES加密算法可以分别使用128、192或256位密钥,其中128位密钥最为常用,以下对AES算法的描述均是以128位密钥模式为例。同时,作为一种迭代加密算法,AES根据密钥长度的不同分别包括10,12或14轮循环,每轮循环又称作轮变换,包括以下四种运算:

密钥异或:数据与密钥或子密钥进行异或。

盒变换:通过查表的方式,对输入的数据按照字节进行替换,加密时进行S盒变换,解密时进行逆S盒变换。S盒与逆S盒的大小均为256字节。

行变换:包括行位移与逆行位移,行位移和逆行位移分别用于加密和解密过程中,将输入的16字节的数据按照先后顺序进行排列,为便于描述,将这16个字节的数据命名为S0至S15,这些数据每4个字节分成一组,排列成如图1左侧行位移前所示的4行乘4列的矩阵形式。进行行位移时,矩阵中第一行数据的顺序保持不变,第二行的数据循环左移一个字节,第三行的数据循环左移两个字节,第四行的数据循环左移三个字节。逆行位移过程中,则改为循环右移。行位移与逆行位移的过程分别如图1与图2所示。

列变换:包括列混淆与逆列混淆,在伽罗华域上对数据左乘一个矩阵,列混淆和逆列混淆分别用于加密和解密过程中,区别在于左乘的矩阵不同。列混淆与逆列混淆的过程分别如图3与图4所示,图中所有数据均采用16进制表示。

使用AES算法对数据进行加密的流程如下:

待加密数据先与密钥进行异或运算,接着依次完成S盒变换、行位移、列混淆以及密钥异或运算,至此完成第一轮轮变换。之后按照S盒变换、行位移、列混淆、密钥异或的顺序完成第二轮到第九轮轮变换后,数据进入第十轮轮变换过程,此时数据先后进行S盒变换,行变换与密钥异或操作即得到加密结果,第十轮中没有列混淆操作,使用AES算法对数据进行加密的流程如图5所示。

使用AES算法对数据进行解密的流程如下:

待解密数据先与密钥进行异或运算,接着依次完成逆行位移、逆S盒变换、密钥异或以及逆列混淆,至此完成第一轮解密轮变换。之后按照逆行位移、逆S盒变换、密钥异或以及逆列混淆的顺序完成第二至第九轮轮变换后,数据进入第十轮轮变换过程,此时数据先后进行逆行位移、逆S盒变换与密钥异或运算,解密第十轮轮变换中没有逆列混淆操作,使用AES算法对数据进行解密的流程如图6所示。

AES加密算法在软件和硬件上都可以进行快速的加解密。尤其是在硬件上,AES加密的速度能够大幅度提升,但是,过高的速度是以巨大的资源消耗为代价,在实际应用中,还要着重考虑成本问题,如何在速度和资源这两方面达到平衡值得很好地研究。

现有资料中,基于FPGA的AES加解密器大多面向高速应用,耗费很多的硬件资源,实现复杂度高。然而,在实际中,只有在很少的情形下才需要非常高的速率,更多情况下则是期望能够尽可能地降低复杂度,从而降低实现成本。



技术实现要素:

本发明的目的在于,提供一种低复杂度的基于FPGA的AES一体化加解密器(以下简称加解密器)的实现方式,用以解决现有技术中AES加解密器实现复杂度过高的问题。

首先重新定义AES加密过程的轮变换过程,从图5可以看出,待加密数据首先需要进行一次密钥异或操作,才开始进行第一轮加密,最后第十轮加密只包含三个运算过程。本发明中,将图5中待加密数据后的第一次密钥异或运算计入第一轮加密过程中,而将图5中每一轮加密中的密钥异或运算计入下一轮加密过程中,由此,本发明对数据进行加密的流程如图7所示,对比图5与图7可以看出,两者在对数据进行加密的流程上相同,只是在轮变换的定义上有所区别,因此,按照图7对数据进行加密的结果和按照图5对数据进行加密的结果相同。

从前述可知,盒变换是对数据的内容进行替换,不影响数据各字节的先后,而行变换是对数据进行顺序调整,不影响数据的内容。因此,对数据进行加密或解密时,相邻的盒变换和行变换可以进行顺序调整,顺序调整后,运算结果不变。

本发明对数据的解密流程如图8所示,对比图6和图8,可以看出,两者只在执行逆S盒变换和逆行位移的先后顺序上不同,而上述两种运算的执行顺序不影响运算结果。因此,按照图8对数据进行解密的结果和按照图6对数据进行解密的结果相同。

本发明提供的加解密器包括密钥生成模块11,用于生成加密与解密时的密钥;密钥异或模块12,用于完成输入信息与密钥的异或;行变换模块14,对输入数据进行行位移与逆行位移运算;列变换模块16,对数据进行列混淆与逆列混淆运算;盒变换模块13,对数据进行S盒变换与逆S盒变换;数据缓存单元15,用于缓存行变换模块输出的数据;第一数据选择单元17-1,用于选择输入到密钥异或模块的数据来源;第二数据选择单元17-2,用于选择输入到盒变换模块的数据来源;第三数据选择单元17-3,用于选择输入到列变换模块的数据来源;第四数据选择单元17-4,用于选择输入到数据选择器17-1的数据来源;控制单元10,根据加解密器的工作模式与轮数,控制密钥生成模块、盒变换模块、行变换模块、数据缓存单元、列变换模块以及4个数据选择器,对加密或解密的流程进行控制。加解密器整体架构如图9所示。

本发明所提供的加解密器中的盒变换模块13使用只读存储器(ROM)实现,此ROM包含两部分地址空间,前256个地址用于存储加密的S盒变换数据,后256个地址用于存储解密的逆S盒变换数据。

根据AES加解密算法,在密钥生成时也需要进行S盒变换或逆S盒变换,本发明所提供的加解密器中的盒变换模块使用双口ROM实现,该双口ROM的1个端口用于完成数据的S盒与逆S盒变换,另一个端口用于完成密钥的S盒与逆S盒变换。在FPGA中,单口ROM与双口ROM耗用的存储器资源相同。

本发明所提供的加解密器中的数据缓存单元15使用双口RAM实现,其一个口用于接收行变换模块的输出,另一个口用于将数据输出到数据选择器17-3。数据缓存单元的大小为32个字节,分成两个区域A与B,每个区域为16个字节,在进行加解密操作时,数据缓存单元的两个区域采用乒乓操作方式,从而避免前后两轮加密或者解密操作的数据冲突,进而提高对数据进行加密或者解密的速度。

本发明所提供的加解密器中的行变换模块14包括计数器20、加法器21、第一寄存器22、第二寄存器23、数据选择器24、异或器25、移位器26。计数器20为16进制计数器,共包含4个比特,从高位到低位分别记为C[3],C[2],C[1]与C[0];寄存器22,共两比特,高位为B[1],低位为B[0],B[1]的值与C[1]相同,B[0]的值与C[0]相同;寄存器23,共两比特,高位为F[1],低位为F[0],F[1]的值为B[0]与B[1]异或的结果,F[0]的值与B[0]的值相同;数据选择器24为二选一数据选择器,其一个输入端为寄存器22,另一个输入端为寄存器23,数据选择器24的选通信号由控制模块10提供,当选通信号MODE为0时,选择寄存器23输出,当选通信号MODE为1时,选择寄存器22输出;移位器26,用于对数据选择器24的输出向左移动两比特,完成对数据选择器24的输出乘以4的功能;加法器21,用于完成计数器20与移位器26的输出相加的功能;异或器25用于完成对B[1]与B[0]进行异或运算的功能。当选通信号MODE设置为0时,行变换模块工作在加密模式下,当选通信号MODE设置为1时,行变换模块工作在解密模式下。本发明提供的行变换模块的设计架构如图10所示。

本发明所提供的加解密器中的列变换模块16包括伽罗华域乘法器单元31、加法单元32、数据选择器单元33、异或器单元34、寄存器单元35、数据缓存器单元36、数据选择器37与计数器38;伽罗华域乘法器单元31包含三个伽罗华域乘法器31-1、31-2与31-3,分别完成对输入数据Din3进行乘2、乘4与乘8的运算;加法单元32包含六个加法器32-1、32-2、32-3、32-4、32-5与32-6,32-4对Din3与31-3的输出求和,求和结果为Din3乘以9,32-3对31-2与32-4的输出求和,求和结果为Din3乘以13,32-2对31-2的输出与31-3的输出求和,求和结果为Din3乘以12,32-1对32-2的输出与31-1的输出求和,求和结果为Din3乘以14,32-5对31-1的输出与Din3求和,求和结果为Din3乘以3,32-6对31-1与32-4的输出求和,求和结果为Din3乘以11;数据选择器单元33包括4个二选一数据选择器,当选通信号MODE为0时,4个数据选择器分别将Din3乘以2的结果、Din3、Din3、Din3乘以3的结果输出,当选通信号MODE为1时,4个数据选择器分别将Din3乘以14的结果、Din3乘以9的结果、Din3乘以13的结果、Din3乘以11的结果输出;异或器单元34包括4个异或器,分别用于完成4个数据选择器的输出与寄存器组35中的A0、A1、A2与A3的异或运算;寄存器组35包括4个8比特数据存储单元A0、A1、A2与A3,分别用于存储异或器单元34的输出结果;数据缓存器单元36包括4个8比特缓存器D0、D1、D2与D3,分别用于缓存寄存器组35中A0、A1、A2与A3的数据;数据选择器37,为一个四选一数据选择器,在计数器38的控制下,将数据缓存器单元36中D0、D1、D2与D3的数据依次输出;计数器38,为一个4进制计数器,共两个比特,控制数据选择器37进行数据选择以及控制数据缓存器单元36对寄存器组35的数据进行缓存。当选通信号MODE设置为0时,列变换模块工作在加密模式下,当选通信号MODE设置为1时,列变换模块工作在解密模式下。本发明提供的列变换模块的设计架构如图11所示。

附图说明

图1行位移运算原理示意图;

图2逆行位移运算原理示意图;

图3对某一列数据进行列混淆运算的原理示意图;

图4对某一列数据进行逆列混淆运算的原理示意图;

图5使用AES算法对数据进行加密的流程图;

图6使用AES算法对数据进行解密的流程图;

图7本发明对数据进行加密的流程图;

图8本发明对数据进行解密的流程图;

图9为本发明所提供的加解密器整体结构框图;

图10为本发明所提供的行变换模块的结构框图;

图11为本发明所提供的列位移模块的结构框图;

图12为本发明所提供的加解密器在加密模式下的简化结构框图;

图13为本发明所涉及的加密流程时间顺序示意图;

图14为本发明所提供的加解密器在解密模式下第一层数据传输过程中的简化结构框图;

图15为本发明所提供的加解密器在解密模式下第二层数据传输过程中的简化结构框图;

图16为本发明所涉及的解密流程时间顺序示意图。

具体实施方式

下面结合图10、图1与图2叙述本发明所提供的行变换模块执行行变换运算的过程,首先叙述行位移运算的过程,此时行变换模块的选通信号MODE被设置为0,数据选择器选择寄存器23输出。

使用本发明提供的行变换模块执行行位移运算时,数据按照字节顺序依次输入行变换模块,第一个数据S0输入时,计数器20从0开始计数,此时寄存器22为0,寄存器23为0,因此,移位器26的输出为0,加法器21的输出为0,即S0被写到了0地址,图1中S0的顺序没有改变;第二个数据S1输入时,计数器20变成了1,此时寄存器22为1,寄存器23为3,因此,移位器26的输出为12,加法器21的输出为13,即S1被写到了13地址,图1中左侧矩阵中的S1便移到了右侧矩阵中的S1的位置;第三个数据S2输入时,计数器20变成了2,此时寄存器22为2,寄存器23为2,因此,移位器26的输出为8,加法器21的输出为10,即S2被写到了10地址,图1中左侧矩阵中的S2便移到了右侧矩阵中S2的位置;以此类推,随着计数器20依次增加,图1中左侧矩阵中的S2至S15便移到了右侧矩阵中的S2至S15对应的位置,从而完成了行位移运算。

下面叙述逆行位移运算的过程,此时行变换模块的选通信号MODE被设置为1,数据选择器选择寄存器22输出。

使用本发明提供的行变换模块执行逆行位移运算时,数据按照字节顺序依次输入行变换模块,第一个数据S0输入时,计数器20从0开始计数,此时寄存器22为0,寄存器23为0,因此,移位器26的输出为0,加法器21的输出为0,即S0被写到了0地址,图2中S0的顺序没有改变;第二个数据S1输入时,计数器20变成了1,此时寄存器22为1,寄存器23为3,因此,移位器26的输出为4,加法器21的输出为5,即S1被写到了5地址,图2中左侧矩阵中的S1便移到了右侧矩阵中的S1的位置;第三个数据S2输入时,计数器20变成了2,此时寄存器22为2,寄存器23为2,因此,移位器26的输出为8,加法器21的输出为10,即S2被写到了10地址,图2中左侧矩阵中的S2便移到了右侧矩阵中S2的位置;以此类推,随着计数器20依次增加,图2中左侧矩阵中的S2至S15便移到了右侧矩阵中的S2至S15对应的位置,从而完成了逆行位移运算。

下面结合图11、图3与图4叙述本发明所提供的列变换模块执行列变换运算的过程,首先叙述列混淆运算的过程,此时列变换模块的选通信号MODE被设置为0,数据选择器单元33选择“0”支路输出。

使用本发明提供的列变换模块执行列混淆运算时,数据按照字节顺序依次输入列变换模块,每4个数据分成一组,每一组的处理方式相同。下面以第一组数据为例加以说明。如图3所示,第一组的四个数据分别为0xC9,0x6E,0x46与0xA6。

第一个时钟周期,第一个数据0xC9输入,伽罗华域乘法器单元31、加法单元32与数据选择器单元33配合,分别将0xC9×2,0xC9×1,0xC9×1与0xC9×3的结果输出;在第一个时钟周期,控制寄存器组35输入到异或单元34的数据为0,使得异或单元34的输出和数据选择器的输出相同,因此,0xC9×2,0xC9×1,0xC9×1与0xC9×3的结果分别被存到了寄存器组35中的A0,A1,A2与A3中;

第二个时钟周期,第二个数据0x6E输入时,伽罗华域乘法器单元31、加法单元32与数据选择器单元33配合,分别将0x6E×2,0x6E×1,0x6E×1与0x6E×3的结果输出,另一方面,根据图11所示,异或单元34需要将寄存器组35中的A1,A2,A3,A0分别与数据选择器单元33的输出进行异或,于是异或单元34分别完成0x6E×2+0xC9×1,0x6E×1+0xC9×1,0x6E×1+0xC9×3,0x6E×3+0xC9×2的运算,注意,此处的加法为异或和运算,异或运算的结果存入寄存器组35的A0,A1,A2与A3中;

以此类推,第三个时钟周期,异或单元34分别完成0x46×2+0x6E×1+0xC9×1,0x46×1+0x6E×1+0xC9×3,0x46×1+0x6E×3+0xC9×2,0x46×3+0x6E×2+0xC9×1的运算;第四个时钟周期,异或单元34分别完成0xA6×2+0x46×1+0x6E×1+0xC9×3,0xA6×1+0x46×1+0x6E×3+0xC9×2,0xA6×1+0x46×3+0x6E×2+0xC9×1,0xA6×3+0x46×2+0x6E×1+0xC9×1的运算,异或运算的结果存入寄存器组35的A0,A1,A2与A3中;和图3对照可以看出,此时,写入到A1,A2,A3,A0分别为第一组的4个数进行列混淆运算后的结果;

第五个时钟周期,数据缓存器单元36将寄存器组35中的数据取出并储存,接下来的第六到第九个时钟,在计数器38的控制下,数据选择器37依次将数据缓存器单元36中的D1,D2,D3与D0输出,至此,第一组的4个数的列混淆操作完成。

第二组的4个数据在第五到第八个时钟周期输入到列变换模块,第三组的4个数据在第九到第十二个时钟周期输入到列变换模块,第四组的4个数据在第十三到第十六个时钟周期输入到列变换模块,对应的列混淆运算后的结果依次在第十到第二十一个时钟周期输出,第二组到第四组的数据在列变换模块中的处理方式和第一组数据的处理方式相同,此处不再赘述。

从上述分析可知,从第一个数据输入到列变换模块到完成列混淆运算的第一个数据输出需要经过五个时钟周期,为了减少路径延迟,可以在列变换模块的31到35之间的组合逻辑电路中插入一级流水线,此时,从第一个数据输入到列变换模块到完成列混淆运算的第一个数据输出需要增加一个时钟周期,即六个时钟周期。

至此,列混淆运算完成。

使用本发明所提供的列变换模块执行逆列混淆运算的过程与执行列混淆运算的过程类似,不同之处在于,此时列变换模块的选通信号MODE被设置为1,数据选择器单元33选择“1”支路输出,其余运算步骤相同,此处不再赘述。

本发明所提供的加解密器根据用户的输入,可以工作在加密模式下,也可以工作在解密模式下。

下面叙述使用本发明提供的加解密器的对数据进行加密操作的具体方式。

加密模式下,外部输入到控制模块的模式输入信号为“0”,此时,控制模块将盒变换模块、行变换模块、列变换模块与密钥生成模块的控制信号均设置成“0”,使上述模块工作在加密模式下,同时,控制模块设置数据选择器17-2与17-3为支路“1”选通,此时,加解密器的架构可简化为图12。

下面结合图7与图12叙述本发明提供的加解密器对数据进行加密操作时的流程。

第一轮加密时,控制器10控制17-1的“0”支路导通,控制17-4的“1”支路导通,外部的待加密数据通过17-1,进入密钥异或模块12,完成图7所示的第一轮的密钥异或操作,随后数据先后通过盒变换模块13与行变换模块14进行图7所示的第一轮的S盒变换与行位移运算,之后数据在控制模块10的控制下进入到数据缓存模块15的A区进行缓存,随后,列变换模块16将数据从数据缓存模块15的A区读出,进行图7所示的第一轮的列混淆运算,运算后的结果通过17-4的“1”支路输入到17-1的输入端。至此,图7所示的第一轮加密过程结束;

第二轮加密过程与第一轮加密过程类似,其不同点有两处,一是控制器控制17-1的“1”支路导通,进入密钥异或模块12进行运算的是前一轮加密后的数据,二是控制模块10控制行位移运算后的数据进入到数据缓存模块15的B区进行缓存,列变换模块16将数据从数据缓存模块15的B区读出,进行列混淆运算;至此,图7所示的第二轮加密过程结束;

第三轮至第九轮加密过程与第二轮加密过程类似,其中偶数轮加密过程与第二轮加密过程相同,而在奇数轮加密过程中,控制模块10控制行位移运算后的数据进入到数据缓存模块15的A区进行缓存,列变换模块16将数据从数据缓存模块15的A区读出,进行列混淆运算;

第十轮加密过程与第二轮加密过程类似,其不同点为,控制器控制17-4的“0”支路导通,数据不进行列混淆运算,此外,本轮加密过程中17-4输出的数据还需要通过17-1的“1”支路进入密钥异或模块,完成图7所示的第十轮加密过程中的第二次密钥异或运算,其结果作为AES十轮加密的结果输出;

至此,AES加密过程完成。

基于本发明提供的加解密器,按照图7所示流程与图12所示的架构,且假定在列变换模块中插入了一级流水线,对数据进行加密时,具体步骤如下:

步骤1:密钥异或运算:

分别地、顺序地,待加密的128比特数据(16字节)按照字节顺序依次输入到加解密器中的密钥异或模块,完成密钥异或运算,每个时钟输入一个字节的数据,16个时钟后,16字节的数据完成密钥异或运算;

步骤2:S盒变换运算:

分别地、顺序地,完成密钥异或运算的数据按照字节顺序依次输入到盒变换模块,完成S盒变换运算,每个时钟输入一个字节的数据,16个时钟后,16字节的数据完成S盒变换运算;由于采用ROM完成S盒变换运算,S盒变换运算的输出相对于输入会有一个时钟的延迟;

步骤3:行位移运算:

分别地、顺序地,完成S盒变换运算的数据按照字节顺序依次输入到行变换模块,完成行位移运算,行位移运算的结果写入到数据缓存单元,16个时钟后,16字节的数据完成行位移运算;

步骤4:列混淆运算:

等16字节的数据完成行位移运算后,列变换模块按照地址顺序依次、顺序将16字节的数据从数据缓存单元读出,进行列混淆运算,考虑到列变换模块内部寄存器组、缓存器与流水线的影响,延迟6个时钟后,列混淆运算的结果按照字节顺序逐时钟依次输出;

至此,数据的第一轮加密过程结束;

步骤5:重复步骤1至步骤4,完成数据的第二轮到第九轮加密过程,第二轮到第九轮加密过程与第一轮加密过程的区别在于步骤1中的参与密钥异或运算的数据由外部输入数据换成了上一轮列混淆运算的结果;

步骤6:数据完成第十轮加密运算;

输入数据依次完成步骤1,步骤2与步骤3运算,步骤3运算的结果再完成一次步骤1的运算,至此,数据的十轮加密过程完成。

基于本发明提供的加解密器,对数据进行加密时的时间顺序具体如下:

第1到第16个时钟,待加密的16个字节的数据依次完成密钥异或运算;第1到第16个时钟,完成了密钥异或运算的数据依次完成S盒变换运算;第2到第17个时钟,完成了S盒变换运算的数据依次完成行位移运算;第18到第33个时钟,数据进行列混淆运算;第24到第39个时钟,数据完成第二轮的密钥异或运算;以此类推,第(1+23*9)=208到第223个时钟,数据完成第十轮的第一次密钥异或运算,第208到第213个时钟,数据完成第十轮的S盒变换运算,第209到第224个时钟,数据完成第十轮的行位移运算,第210到第225个时钟,数据完成第十轮的第二次密钥异或运算,因此,基于本发明提供的加解密器,对数据进行一次完整加密需要215个时钟周期;基于本发明提供的加解密器的加密流程与各步骤执行顺序如图13所示,图中一个阴影方格表示一个字节的数据,“t”表示一个时钟的周期;

从图13可以看出,前一轮加密过程的列混淆运算与后一轮加密过程的行位移运算有部分时间是重叠的,为避免数据访问冲突,减少等待时间,本发明提供的加解密器中的数据缓存单元采用乒乓操作的方式,前一轮的列混淆运算与后一轮的行位移运算对数据缓存单元的两块区域进行交替访问,从而避免了数据访问冲突。

下面叙述使用本发明提供的加解密器的对数据进行解密操作的具体方式。

解密模式下,外部输入到控制模块的模式输入信号为“1”,此时,控制模块将盒变换模块、行变换模块、列变换模块与密钥生成模块的控制信号均设置成“1”,使上述模块工作在解密模式下。

下面结合图8与图9叙述本发明提供的加解密器对数据进行解密操作时的流程。

在解密时,每一轮解密,数据均需要经历两次从输入到选择器17-1的输入端到从选择器17-4输出端输出的过程。为便于描述,下面在叙述时将这两次过程分别称为第一层传输过程与第二层传输过程。

下面描述第一轮解密过程。

第一层传输过程,控制器10控制17-1的“0”支路导通,控制器控制17-2的“1”支路导通,控制器控制17-3的“1”支路导通,控制17-4的“0”支路导通,此时,图9可简化成图14。从图14可以看出,外部的待解密数据通过17-1,进入密钥异或模块12,进行图8所示的第一轮解密前的密钥异或运算,然后通过17-2,先后通过盒变换模块13与行变换模块14分别进行图8所示的第一轮解密的逆S盒变换与逆行位移运算,之后数据在控制模块10的控制下进入到数据缓存模块15的A区进行缓存,之后数据通过17-4的“0”支路输入到17-1的输入端。至此,第一轮解密的第一层传输过程结束;

第二层传输过程,控制器10控制17-1的“1”支路导通,控制器控制17-2的“1”支路导通,控制器控制17-3的“0”支路导通,控制17-4的“1”支路导通,此时,图9可简化成图15。从图15可以看出,经过了第一层传输过程的数据通过17-1,进入密钥异或模块12,进行图8所示的第一轮解密的密钥异或运算,然后通过17-2与17-3,进入列变换模块16,进行图8所示的第一轮解密的逆列混淆运算,之后数据通过17-4的“1”支路输入到17-1的输入端。至此,第一轮解密的第二层传输过程结束;

至此,图8所示的第一轮解密的所有操作完成。

下面描述第二轮到第十轮的解密过程。

第二轮解密过程与第一轮解密过程类似,只在第一层传输过程中有两处不同,一是控制器10控制17-1的“1”支路导通,控制17-2的“0”支路导通,数据不进行密钥异或运算,而在第一轮解密过程中,控制器10控制17-1的“0”支路导通,控制17-2的“1”支路导通,数据需要进行密钥异或运算;二是行变换模块输出的数据在控制模块10的控制下进入到数据缓存模块15的B区进行缓存,而在第一轮解密过程中,数据是在数据缓存模块的A区进行缓存。至此,图8所示的第二轮解密的所有操作完成。

第三轮到第九轮解密过程与第二轮解密过程类似,其中,偶数轮解密过程与第二轮解密过程完全相同,奇数轮解密过程只在行变换模块14输出的数据在数据缓存器15中的位置上与第二轮解密过程不同,奇数轮解密过程中,行变换模块14输出的数据缓存在15的A区中。

第十轮解密过程与第二轮解密过程类似,其区别在于,在第十轮解密过程的第二层传输过程中,将密钥异或模块的输出作为解密结果输出。至此,图8所示的第十轮解密的所有操作完成。

至此,AES解密过程完成。

基于本发明提供的加解密器,按照图8所示流程与图8所示的架构,且假定在列变换模块中插入了一级流水线,对数据进行解密时,具体步骤如下:

步骤1:密钥异或运算:

分别地、顺序地,待解密的128比特数据(16字节)按照字节顺序依次输入到加解密器中的密钥异或模块,完成密钥异或运算,每个时钟输入一个字节的数据,16个时钟后,16字节的数据完成密钥异或运算;

步骤2:逆S盒变换运算:

分别地、顺序地,完成密钥异或运算的数据按照字节顺序依次输入到盒变换模块,完成逆S盒变换运算,每个时钟输入一个字节的数据,16个时钟后,16字节的数据完成逆S盒变换运算;由于采用ROM完成逆S盒变换运算,逆S盒变换运算的输出相对于输入会有一个时钟的延迟;

步骤3:逆行位移运算:

分别地、顺序地,完成逆S盒变换运算的数据按照字节顺序依次输入到行变换模块,完成逆行位移运算,运算的结果写入到数据缓存单元,16个时钟后,16字节的数据完成逆行位移运算;

步骤4:密钥异或运算:

完成逆行位移的数据按照字节顺序依次输入到加解密器中的密钥异或模块,完成密钥异或运算,每个时钟输入一个字节的数据,16个时钟后,16字节的数据完成密钥异或运算;

步骤5:逆列混淆运算:

完成密钥异或运算后的数据顺序进行逆列混淆运算,考虑到逆列混淆运算单元内部寄存器组、缓存器与流水线的影响,延迟6个时钟后,逆列混淆运算的结果按照字节顺序逐时钟依次输出;

至此,数据的第一轮解密过程结束;

步骤6:重复步骤2至步骤5,完成数据的第二轮到第九轮解密过程,第二轮到第九轮解密过程与第一轮解密过程的区别在于步骤2中通往逆S盒运算的数据为上一轮逆列混淆后的数据;

步骤7:数据完成第十轮加密运算;

第九轮逆列混淆运算的结果依次完成步骤2,步骤3与步骤4运算,至此,数据的十轮解密过程完成。

基于本发明提供的加解密器,对数据进行解密时的时间顺序具体如下:

第1到第16个时钟,待解密的16个字节的数据依次完成密钥异或运算;第1到第16个时钟,完成了密钥异或运算的数据依次完成逆S盒变换运算;第2到第17个时钟,完成了S盒变换运算的数据依次完成逆行位移运算;第18到第33个时钟,数据进行密钥异或运算;第18到第33个时钟,数据进行逆列混淆运算;第24到第39个时钟,数据进行第二轮的逆S盒运算;以此类推,第(24+23*8)=208到第223个时钟,数据进行第十轮的逆S盒运算,第209到第224个时钟,数据进行第十轮的逆行位移运算,第225到第240个时钟,数据进行第十轮的密钥异或运算。因此,基于本发明提供的加解密器,对数据进行一次完整解密需要240个时钟周期;基于本发明提供的加解密器的解密流程与各步骤执行顺序如图16所示。

解密过程中,同样对数据缓存单元采用了乒乓操作的方式,避免前后两轮之间的数据访问冲突,提高了数据处理速度。

根据图1所示的行位移运算的原理与本发明提供的行变换模块对数据的处理方式,在S13被行变换模块输出到后级数据缓存单元的同时,后级的列变换模块便可以从数据缓存单元中将数据读出进行列混淆运算,列变换模块并不需要等待行位移运算结束才开始读取数据进行列混淆运算。因此,图13所示的加密流程图中每一轮的列混淆运算可以最多提前3个时钟周期,从而减少了处理时间,提高了处理速度。

与加密过程类似的,在解密过程中,图16所示的每一轮的逆行位移后的密钥异或运算与逆列混淆运算也可以最多提前3个时钟周期,从而减少了处理时间,提高了处理速度。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1