一种基于aes算法的加解密方法及加解密器的制作方法

文档序号:7955283阅读:137来源:国知局
专利名称:一种基于aes算法的加解密方法及加解密器的制作方法
技术领域
本发明涉及数据通信安全技术领域,尤其涉及一种加解密技术。
背景技术
AES算法是Advanced Encrypt Standard的简称,它是美国国家标准委员会NIST公布的一种新型对称密钥加密算法标准。AES算法由于具有应用范围广,等待时间短,容易隐藏,吞吐量高的优点,因而,AES算法被应用在越来越多的安全领域。
AES算法作为一种替代数据加密标准(Data Encryption Standard,DES)的新型对称密钥加密算法标准,是一个迭代分组密码算法,分组长度为128bit,密钥长度可以指定为128bit、192bit或256bit。AES算法的密钥迭代由三个称之为层的可逆变换组成,这三个层分别是线性混合层、非线性层和密钥加层。
图1是现有的AES算法流程图,如图1所示,以128位的密钥为例,现有的AES算法流程如下加密操作流程待加密的数据按128位分组输入,在进行第一次加密迭代之前,首先进行密钥运算操作,之后启动Nr次加密迭代操作流程;在Nr次加密迭代过程中,加密数据首先经过S盒置换和字节的移位操作,之后进行混列变换,最后进行密钥运算操作;在最后一次加密迭代的时候省略混列变换操作,输出加密以后的数据;解密操作流程待解密的数据按128位分组输入,在进行第一次解密迭代之前,首先进行密钥运算操作,之后启动Nr次解密迭代操作流程;在Nr次解密迭代过程中,与加密流程不同的是,解密首先进行的是字节的移位操作,再进行S盒的逆置换,之后进行密钥运算操作,最后进行混列逆变换;在最后一次解密迭代的时候省略混列逆变换步骤,输出解密以后的数据。
AES的加密操作和解密操作使用的是相同的子密钥值,只是使用的子密钥的顺序不相同。例如,在加密操作的时候,依次使用K0,K1,...,KNr-1,KNr。而在解密操作的时候,依次使用KNr,KNr-1,...,K1,K0。
AES算法在一定程度上大大提高了安全性,但是除了关注算法的安全性以外,算法模块执行的效率和面积是需要解决的重要问题。而现有的AES算法,其加密和解密流程基本上是一致的,但是,每一轮的操作,以及使用的子密钥是不同的,在硬件设计的时候,两种操作的基本单元都不能共享,这必然会造成较大的面积开销,电路的整体规模较大,浪费功耗和成本。
首先,在实现一个S盒置换模块的过程中,就需要用比较多的逻辑电路。具体来说,一个查找表需要800个等效的逻辑门,为了保证设计的预期速度,一般采用16×16的查找表来实现S盒置换(SubByte),对于S盒的逆置换(InvSubByte)也同样使用16×16的查找表来实现。而S盒不光用在加密流程中,在密钥扩展操作中,同样要使用S盒。以输入为128位的密钥为例,如果执行并行算法,需要20个S盒置换,16个S盒的逆置换,即总共需要36个16×16的查找表,这在设计上,需要耗费很大的面积开销。
第二,现有的AES算法混列变换(MixColumn)和混列逆变换(InvMixColumn)分别使用一个独立的单元进行操作,使得加密和解密需要使用不同的模块,不仅不利于AES模块化的实现,更直接的增加了面积上的开销。
第三,现有的AES密钥扩展算法在实现解密操作的时候,为了保证AES算法实现的效率,通常是在运算开始的时候,将所有的子密钥计算出来,并将结果寄存在密钥存储单元里面,以供每轮密钥迭代使用。这种方法在电路设计实现的时候,也会造成较大的面积开销,例如对于256位的密钥,就需要14×128位的密钥存储单元。
因此有必要简化AES算法设计的电路,降低功耗和成本。

发明内容
本发明所要解决的技术问题在于,提供一种基于AES算法的加解密方法及基于AES算法的加解密器,可简化AES算法设计的电路,减小面积开销,降低功耗和成本。
为了解决上述技术问题,本发明提出了一种基于AES算法的加解密方法,包括以下步骤
a、根据密钥长度确定迭代次数Nr;b、初始化数据,输入的待加密数据或待解密数据进行第一次迭代前,将其与子密钥进行异或操作;c、加载加密控制信号或解密控制信号;d、在加密控制信号的控制下在加解密迭代复用模块上进行加密的Nr次迭代操作,在解密控制信号的控制下在加解密迭代复用模块上进行解密的Nr次迭代操作。
其中,步骤d还包括以下步骤在加密控制信号的控制之下,加解密迭代复用模块处于加密导通状态,输入的待加密的数据在该模块上进行Nr次加密迭代;在解密控制信号的控制之下,加解密迭代复用模块处于解密导通状态,输入的待解密的数据在该模块上进行Nr次解密迭代。
其中,所述Nr次加密迭代中的单次加密迭代的步骤为f1、对输入的数据进行S盒置换操作;f2、对经S盒置换输出的数据的每一行进行移字节操作;f3、将经数据行移位变换输出的数据进行混列变换操作;f4、在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;f5、将经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;在最后一次加密迭代的时候省略步骤f3;需要指出的是,在S盒置换中,所述的数据在进行第一次加密迭代时,为经过步骤b初始化的数据;在以后的单次加密迭代过程中,为经过上一次解密迭代操作的数据;所述Nr次解密迭代中的单次解密迭代的步骤为g1、对输入的数据进行S盒逆置换操作;g2、对经S盒逆置换输出的数据的每一行进行移字节的逆操作;g3、在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;g4、将经数据行逆移位变换输出的数据与该次输入的子密钥进行密钥运算操作;
g5、将经密钥运算变换输出的数据进行混列逆变换操作;在最后一次解密迭代的时候省略步骤g5。
需要指出的是,在S盒逆置换中,所述的数据在进行第一次解密迭代时,为经过步骤b初始化的数据;在以后的单次解密迭代过程中,为经过上一次解密迭代操作的数据;可选择地,Nr次解密迭代中的单次解密迭代的步骤为h1、对输入的数据进行S盒逆置换操作;h2、对经S盒逆置换输出的数据的每一行进行移字节的逆操作;h3、将经数据行逆移位变换输出的数据进行混列逆变换操作;h4、在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;h5、将经子密钥生成步骤产生的用于本次解密迭代的解密子密钥进行混列逆变换;h6、将经混列逆变换输出的数据与该次输入的经过混列逆变换的子密钥进行密钥运算操作;在最后一次密钥迭代的时候省略步骤h3和步骤h5,直接将步骤h2变换输出的数据与步骤h4生成的子密钥进行密钥运算操作。
需要指出的是,在S盒逆置换中,所述的数据在进行第一次解密迭代时,为经过步骤b初始化的数据;在以后的单次解密迭代过程中,为经过上一次解密迭代操作的数据;其中,所述的步骤f1和步骤g1是通过S盒置换复用子模块来实现的,所述步骤f1具体包括以下步骤在加密控制信号的控制下,经过初始化的数据通过查找域元的逆元查找表,矩阵乘,向量加操作,完成S盒的置换;所述步骤g1具体包括以下步骤在解密控制信号的控制下,经过初始化的数据通过向量加,矩阵乘,查找域元的逆元查找表,完成S盒的逆置换。
其中,所述步骤f1和步骤h1也是是通过S置换复用子模块来实现的,其实现步骤与步骤f1和步骤g1在S盒置换复用子模块上实现步骤一样。
其中,所述步骤f3和步骤g5是在混列变换复用子模块上实现的,所述步骤f3具体包括以下步骤在加密控制信号的控制之下,混列变换复用电路处于混列变换导通状态,进行混列变换操作;在解密控制信号的控制之下,混列变换复用电路处于混列逆变换状态,进行混列逆变换操作。
其中,混列变换复用电路是由域元的加法和域元的乘2逻辑电路实现的。
需要说明的是,首先,混列变换复用电路可以供输入数据的4列,共16个字节实现混列变换复用该电路,进行混列变换时,是以一列的四个字节为单位输入,经过变换以后得到对应列的四个字节,其他列的处理参照上述操作执行;第二,该复用电路还可以实现混列变换和混列逆变换的复用,混列逆变换参照混列变换的步骤进行。
其中,所述步骤f3和步骤h3也是在混列变换复用子模块上实现的,其实现步骤与步骤f3和步骤g5在混列变换复用子模块上实现的步骤一样。
可选择地,所述步骤f3和步骤g5在混列变换复用子模块上还有另外一种实现方式,所述步骤f3具体包括以下步骤bb1、在加密信号的控制下,混列变换复用单元将输入的四个字节做混列变换,得到一个字节的结果;所述的四个字节为做混列变换的数据中的一列的四个字节;所得到一个字节的结果为该列经过混列变换以后的对应列的一个字节;bb2、在加密控制信号的控制之下,将当前的四个字节做移字节处理,并重用步骤bb1中得到一个字节结果的混列变换结构,得到该列经混列变换以后对应列的其他字节的结果,完成该列的混列变换;bb3、其他列的数据做混列变换参照上述步骤进行;所述步骤g5具体包括以下步骤bb4、在解密信号的控制下,混列变换复用单元将输入的四个字节做混列逆变换,得到一个字节的结果;所述的四个字节为做混列逆变换的数据中的一列的四个字节;所得到一个字节的结果为该列经过混列逆变换以后的对应列的一个字节;bb5、在解密控制信号的控制之下,将当前的四个字节做移字节处理,并重用步骤bb4中得到一个字节结果的混列逆变换结构,得到该列经混列逆变换以后对应列的其他字节的结果,完成该列的混列逆变换;
bb6、其他列的数据做混列逆变换参照上述步骤进行。
其中,所述混列变换复用单元是域元的加法和域元的乘2逻辑电路。
需要指出的是,该混列变换复用单元是上述混列变换复用电路中产生第一行字节的电路。
其中,所述步骤f3和步骤h3在混列变换复用子模块上也有另一种实现方式的,其实现步骤与步骤f3和步骤g5在混列变换复用子模块上的另一种实现方式的步骤一样。
相应地,本发明还提供了基于AES算法的加解密器,包括子密钥产生模块用于在单次加密迭代或单次解密迭代之前,生成对待加密数据或待解密数据进行初始化时进行密钥运算所需的子密钥,在单次加密迭代或单次解密迭代进行时,动态生成加密迭代或解密迭代过程中进行密钥运算的所需子密钥;初始化数据模块将待加密或者待解密的数据进行第一次迭代前,与所述子密钥产生模块产生的子密钥进行密钥运算操作;信号控制模块用于生成并加载加密控制信号或解密控制信号,分别用于控制对数据进行加密或是解密操作;加解密迭代复用模块在信号控制模块加载的加密控制信号的控制下,在加解密迭代复用模块上进行加密的Nr次迭代操作,在信号控制模块加载的解密控制信号的控制下,在加解密迭代复用模块上进行解密的Nr次迭代操作。
其中,子密钥产生模块用于根据供加密过程中或解密过程中进行密钥运算所用的子密钥动态扩展产生相继轮次进行密钥运算的子密钥,包括密钥存储单元,用于存储加密过程中或解密过程中进行密钥运算所用的子密钥以及由其动态扩展产生的相继轮次的子密钥;密钥扩展单元,用于在加密控制信号的控制下,根据密钥存储单元存储的加密过程中进行密钥运算的的子密钥扩展产生相继轮次进行密钥运算的子密钥;或用于在解密控制信号的控制下,根据密钥存储单元存储的解密过程中进行密钥运算的子密钥扩展产生相继轮次进行密钥运算的子密钥。
需要说明的是,所述的加密过程中或解密过程中进行密钥运算所用的子密钥包括对待加密数据或待解密数据进行初始化时进行密钥运算所需的子密钥和加密迭代或解密迭代过程中进行密钥运算的所需子密钥;
并且,密钥扩展单元是由逻辑电路实现的,有两种处理方式第一种方式在本轮次进行密钥运算时,密钥扩展单元根据密钥存储单元存储的前一轮次进行密钥运算的子密钥扩展生成当前轮次密钥运算所需的子密钥;第二种方式在本轮次密钥运算结束时,密钥扩展单元根据密钥存储单元存储的当前轮次进行密钥运算的子密钥扩展生成下一轮次进行密钥运算所需的子密钥。
其中,加解密迭代复用模块,包括以下子模块数据行移位子模块用于在加密控制信号的控制下,对输入其中的数据的每一行进行移字节操作;或在解密控制信号的控制下,对输入其中的数据的每一行进行移字节的逆操作;混列变换复用子模块在加密控制信号控制的控制下,对输入其中的数据进行混列变换操作;或在解密控制信号的控制下,对输入其中的数据进行混列逆变换操作;密钥运算子模块在加密控制信号或者解密控制信号的控制下,将输入其中的数据与该次输入子密钥进行按位异或操作;其中,在最后一次加密或解密迭代时,所述混列变换复用子模块不工作。
其中,S盒置换复用子模块还包括以下单元S盒置换单元用于在加密控制信号的控制下,通过查找域元的逆元查找表,矩阵乘,向量加操作,完成对数据的S盒的置换;S盒逆置换单元用于在解密控制信号的控制下,通过向量加,矩阵乘,查找域元的逆元查找表,完成对数据的S盒的逆置换。
其中,S盒置换单元所查找的域元的逆元查找表与S盒逆置换单元所查找的域元的逆元查找表是同一个域元的逆元查找表。
其中,域元的逆元查找表可以是8位有限域上的逆元查找表,也可以是4位有限域上的逆元查找表。
其中,混列变换复用子模块包括混列变换复用电路在加密控制信号的控制之下,选通混列变换电路,完成对数据的混列变换操作;在解密控制信号的控制之下,选通混列逆变换电路,完成对数据的混列逆变换操作。
其中,混列变换复用电路由域元的加法和域元的乘2逻辑电路组成。
可选择地,混列变换复用子模块还可以包括移字节处理单元用于将当前进行混列变换或混列逆变换的四个字节做移字节处理;混列变换复用单元用于将输入的四个字节进行混列变换或混列逆变换,产生一个字节结果。
较佳地,混列变换复用单元中可以是所述的域元的加法和域元的乘2逻辑电路。
实施本发明,具有如下有益效果本发明提出的AES算法的改进实现方案可以应用于智能卡中的加解密器的电路设计中,也可以应用在其它对面积敏感的应用领域,本发明通过利用AES算法电路设计中可以复用的部分,设计出加解密复用迭代模块和子密钥产生模块,达到减小电路设计的面积开销和规模,从而降低了功耗,使得智能卡以及其它应用AES算法的产品竞争力大大提高。


图1是现有的AES算法流程图;图2是本发明基于AES算法的加解密器的结构示意图;图3是本发明中子密钥生成模块的结构示意图;图4是本发明中子密钥扩展的结构示意图;图5是本发明中S盒置换复用子模块的结构示意图;图6是本发明中混列变换复用子模块的第一实施例的结构示意图;图7是本发明中混列变换复用子模块的第一实施例的逻辑电路示意图;图8是本发明中混列变换复用子模块的第二实施例的结构示意图;图9是本发明中混列变换复用子模块的第二实施例的逻辑电路示意图;图10是本发明基于AES算法的加解密方法的第一实施例流程示意图;图11是本发明基于AES算法的加解密方法的第二实施例流程示意图。
具体实施例方式
AES作为一种安全性很高的加解密算法,在智能卡以及对面积敏感的领域,如手持设备应用方面发挥了很大的作用,但是AES算法在硬件实现时,存在面积开销很大的问题,本发明在关注其安全性的前提下,提出了能够解决这一问题的一种基于AES算法的加解密电路实现方案以及基于AES算法的加解密器,从而有效地减小了电路规模,降低了功耗和成本。
参考图2,是本发明基于AES算法的加解密器的结构示意图,具体包括初始化数据模块1用于将待加密或者待解密的数据进行第一次迭代前,与子密钥进行异或操作;信号控制模块2生成加密控制信号或解密控制信号,分别用于控制对数据进行加密或是解密操作;子密钥产生模块3用于在单次加密迭代或单次解密迭代之前,生成对待加密数据或待解密数据进行初始化时进行密钥运算所需的子密钥,在单次加密迭代或单次解密迭代进行时,动态生成加密迭代或解密迭代过程中进行密钥运算的所需子密钥;用于在单次加密迭代或解密迭代进行时,动态生成密钥迭代需要的子密钥;在本例中为,在加密操作的时候,依次产生并使用K0,K1,...,KNr-1,KNr。而在解密操作的时候,依次产生并使用KNr,KNr-1,...,K1,K0。
加解密迭代复用模块4在加密控制信号的控制之下,加解密迭代复用模块处于加密导通状态,经过初始化数据模块输出的数据在该模块上进行Nr次加密迭代;或在解密控制信号的控制之下,加解密迭代复用模块处于解密导通状态,经过初始化数据模块输出的数据在该模块上进行Nr次解密迭代。
其中,加解密迭代复用模块4,包括以下子模块S盒置换复用子模块41在加密控制信号的控制下,对输入其中的数据进行S盒置换操作;或在解密控制信号的控制下,对输入其中的数据进行S盒逆置换操作;数据行移位子模块42用于在加密信号的控制下,对输入其中的数据的每一行进行移字节操作;或在解密控制信号的控制下,对输入其中的数据的每一行进行移字节的操作;混列变换复用子模块43混列变换复用子模块在加密信号控制的控制下,对输入其中的数据进行混列变换操作;或在解密控制信号的控制下,对输入其中的数据进行混列逆变换操作;
密钥运算子模块44,在加密或者解密信号的控制下,将输入其中的数据与该次输入子密钥进行按位异或操作;其中,在最后一次密钥迭代时,混列变换复用子模块43不工作。
参考图3,为本发明中子密钥生成模块的结构示意图。
改进的密钥扩展算法主要是为了高效的产生加密和解密操作中的每轮的子密钥输入,使用通用的模块来实现该操作,避免了解密操作中为了保证操作速度,而增加的存储各轮子密钥的存储单元的开销。
因此本发明提供了改进的子密钥产生模块3,用于根据供加密过程中或解密过程中进行密钥运算所用的子密钥动态扩展产生相继轮次进行密钥运算的子密钥,包括密钥存储单元31,用于存储加密过程中或解密过程中进行密钥运算所用的子密钥以及由其动态扩展产生的相继轮次的子密钥;密钥扩展单元32,用于在信号控制模块2所产生的加密控制信号的控制下,根据密钥存储单元31存储的加密过程中进行密钥运算的的子密钥扩展产生相继轮次进行密钥运算的子密钥;或用于在信号控制模块2所产生的解密控制信号的控制下,根据密钥存储单元31存储的解密过程中进行密钥运算的子密钥扩展产生相继轮次进行密钥运算的子密钥。
需要说明的是,所述的加密过程中或解密过程中进行密钥运算所用的子密钥包括对待加密数据或待解密数据进行初始化时进行密钥运算所需的子密钥和加密迭代或解密迭代过程中进行密钥运算的所需子密钥;并且,密钥扩展单元32是由逻辑电路实现的,有两种处理方式第一种方式在本轮次进行密钥运算时,密钥扩展单元32根据密钥存储单元31存储的前一轮次进行密钥运算子密钥扩展生成当前轮次进行密钥运算所需的子密钥;第二种方式在本轮次密钥运算结束时,密钥扩展单元32根据密钥存储单元31存储的当前轮次的进行密钥运算的子密钥扩展生成下一轮次进行密钥运算所需的子密钥。
参考图4,该图举例描述了128位密钥输入时,改进的子密钥扩展方法示意图。
图中使用两种线条区分了加密和解密操作下进行产生每轮需要的子密钥的输出,其中实线表示加密操作中由密钥存储单元存储的由四个字节W0、W1、W2、W3组成的本轮子密钥Ki,推导出由四个字节W0、W1、W2、W3组成的下轮子密钥的结果(Ki+1),虚线表示解密操作过程中,由密钥存储单元存储的由四个字节W0、W1、W2、W3组成的本轮子密钥Ki,最终推导出由四个字节W0、W1、W2、W3组成的下轮子密钥的结果(Ki-1)。扩展产生的子密钥(Ki+1)和子密钥(Ki-1)存储到密钥存储单元中,密钥存储单元只保存相继轮次的子密钥,加解密控制信号来控制进行产生加密操作还是解密操作需要的下轮子密钥的结果。
其中RCON(i)是一个只与轮数相关的常数值,i=1-10分别对应的RCON(i)为8’h01,8’h02,8’h04,8’h08,8’h10,8’h20,8’h40,8’h80,8’h16,8’h36。
参考图5,为本发明中S盒置换复用子模块的结构示意图。
S盒置换复用子模块41具体包括以下单元域元的逆元查找表410、矩阵乘(M*bT)单元411、向量加(c+z)单元412、向量加(x+z)单元413以及矩阵乘(M-1*dT)单元414。
其中,域元的逆元查找表410、矩阵乘(M*bT)单元411、向量加(c+z)单元412组成了S盒置换单元;向量加(x+z)单元413以及矩阵乘(M-1*dT)单元414和域元的逆元查找表410组成了S盒逆置换单元。
S盒置换涉及到矩阵的乘和域元的逆操作,而S盒的逆置换也存在着矩阵的乘和域元的逆操作,对于S盒置换,以输入为x={x7,x6,x5,x4,x3,x2,x1,x0}的例子来进行说明,经过S盒置换或S盒逆置换以后的结果就是y={y7,y6,y5,y4,y3,y2,y1,y0}。
具体来讲,在信号控制单元2所产生的加密控制信号的控制下,数据x={x7,x6,x5,x4,x3,x2,x1,x0}首先通过域元的逆元查找表410的操作变换,再经过矩阵乘单元411的M*bT操作,最后经过向量加单元412的c+z操作,即可得到经S盒置换后的数据y={y7,y6,y5,y4,y3,y2,y1,y0};在信号控制单元2所产生的解密控制信号的控制下,数据x={x7,x6,x5,x4,x3,x2,x1,x0}首先经过向量加单元413的x+z操作,再经过矩阵乘单元414的矩阵乘M-1*dT操作处理,最后经过域元的逆元查找表410的操作处理,即得到经过S盒逆置换以后的数据y={y7,y6,y5,y4,y3,y2,y1,y0}。
图5中,实线用来表示加密操作使用的S盒置换,虚线用来表示解密操作使用的S盒的逆置换。
其中,矩阵M=1111100001111100001111100001111110001111110001111110001111110001,]]>而M-1=0101001000101001100101000100101000100101100100100100100110100100,]]>M-1是矩阵M的逆矩阵。Z是一个常量值z={1,1,0,0,0,1,1,0}。上标“T”表示向量的转置,向量x={x7,x6,x5,x4,x3,x2,x1,x0}经过转置处理之后,结果为xT=x7x6x5x4x3x2x1x0.]]>这里域元的逆元查找表410以8位域元的逆元查找表作为公共模块,来构建S盒置换和S盒的逆置换,以达到复用模块的目的;同样地,可以使用4位有限域上的逆元查找表来作为公共模块,来构建S盒的逆置换,以实现一种电路规模更小,面积更优的复用模块。
S盒的置换和逆置换是由信号控制模块2所产生的加密控制信号或者解密控制信号来选择的,需要说明的是,如果是在子密钥扩展中,需要选择加密控制信号,来选择S盒置换。
参见图6,为本发明中混列变换复用子模块的第一实施例的结构示意图;在这种实施例中,混列变换复用子模块包括混列变换复用电路430以一列数据的四个字节{s0c、s1c、s2c、s3c}做混列变换为例,在信号控制单元2产生的加密控制信号的控制之下,混列变换复用电路430处于混列变换选通状态,完成对{s0c、s1c、s2c、s3c}的混列变换操作;其他列的字节参照上述操作进行混列变换,从而完成不同列的字节在同一混列变换复用电路上完成混列变换;
同样地,该混列变换复用电路还可以完成混列逆变换,以一列数据的四个字节{s0c、s1c、s2c、s3c}做混列逆变换为例,在信号控制单元2产生的解密控制信号的控制之下,混列变换复用电路430处于混列逆变换选通状态,完成对{s0c、s1c、s2c、s3c}的混列逆变换操作;其他列的字节参照上述操作进行混列逆变换,从而完成不同列的字节在同一混列变换复用电路上完成混列逆变换;混列变换和混列逆变换操作都是域元的加法和乘法操作,为了便于电路实现,可以进一步将乘法操作分解成域元的加法和域元的乘2操作,利用混列变换和混列逆变换中可以复用的部分,构建混列变换复用模块,这种处理方式一方面可以模块化两种变换操作,另一方面也可以减小两种变换的面积开销。
在本实施例中,混列变换复用电路430是由域元的加法和域元的乘2逻辑电路组成。
参见图7,为本发明中混列变换复用子模块的第一实施例的逻辑电路示意图。
混列变换和混列变换的电路可以使用由域元的加法和域元的乘2逻辑电路组成,其中{02}·表示使用模数为x8+x4+x3+x+1的域元乘2操作的电路,表示域元的加法操作的电路。第一行字节的混列变换和混列的逆变换的结构如图5中的虚线框表示,其操作表示如下MixColumn0={02}·(S0cS1c)S1c(S2cS3c)InvMixColumn0=({02}·({02}·(({02}·(S0cS1c))({02}·(S2cS3c))(S0cS2c))))MixColumn0其他三列的混列变换操作如下MixColumn1={02}·(S1cS2c)S2c(S0cS3c)MixColumn2={02}·(S2cS3c)S3c(S0cS1c)MixColumn3={02}·(S0cS3c)S0c(S1cS2c)其它三列的混列逆变换操作如下InvMixColumn1=({02}·({02}·(({02}·(S1cS2c))({02}·(S0cS3c))(S1cS3c))))MixColumn1InvMixColumn2=({02}·({02}·(({02}·(S2cS3c))({02}·(S0cS1c))(S0cS2c))))MixColumn2InvMixColumn3=({02}·({02}·(({02}·(S0cS3c))({02}·(S1cS2c))(S1cS3c))))MixColumn3经过处理之后,一列的混列变换和混列的逆变换可以使用同一个模块来实现,提高了相同操作的共用性,减小了面积的开销。
图7中使用两种线条区分了加密和解密操作下进行混列变换和混列的逆变换的最后结果输出。其中实线表示加密操作中选择混列变换结果的输出,虚线表示解密操作中选择混列的逆变换结果的输出。加密、解密控制信号用来控制进行混列变换还是进行混列的逆变换。虚线框是产生混列变换或混列的逆变换的第一行数据,执行的操作及结构。
参见图8,为本发明中混列变换复用子模块的第二实施例的结构示意图。
基于混列变换和混列的逆变换的特点,同一列操作中,各行字节的相关联性,在实现的时候,可以基于第一行的结果,重用产生第一行的结构,将输入数据做移字节处理之后,产生其它行的字节结果。
因此在这种实施例中,混列变换子模块43还可以通过移字节处理的方式来实现,具体包括以下单元移字节处理单元4310用于将当前进行混列变换或混列逆变换的四个字节做移字节处理;混列变换复用单元4311用于将输入的四个字节进行混列变换或混列逆变换,产生一个字节结果。
首先,在信号控制单元2产生的加密控制信号的控制之下,混列变换复用单元4311将输入做混列变换的数据中的一列的四个字节做混列变换,得到该列经过混列变换以后的对应列的一个字节;移字节处理单元4310对当前做混列变换的四个字节做移字节处理,混列变换复用单元4311再对其进行混列变换,得到该列经混列变换以后对应列的其他字节的结果,完成该列的混列变换;其他列的数据做混列变换参照上述操作进行,从而完成整个混列变换操作。
与此相应地,在信号控制单元2产生的解密控制信号的控制之下,混列变换复用单元4311将输入做混列变换的数据中的一列的四个字节做混列逆变换,得到该列经过混列逆变换以后的对应列的一个字节;移字节处理单元4310对当前做混列逆变换的四个字节做移字节处理,混列变换复用单元4311再对其进行混列逆变换,得到该列经混列逆变换以后对应列的其他字节的结果,完成该列的混列逆变换;其他列的数据做混列逆变换参照上述操作进行,从而完成整个混列逆变换操作。
参考图9,为本发明中混列变换复用子模块的第二实施例的逻辑电路示意图。
图9中的虚线结构框图为混列变换复用单元,即采用图7中的虚线框部分内容,产生第一行的字节结果,结合图8,说明此种实施例的实现方式以一列的四个字节{s0c、s1c、s2c、s3c}做混列变换为例,在该混列变换复用子模块上具体实现混列变换的步骤如下首先,在加密控制信号的控制下,混列变化复用单元4311首先将输入其中的一列数据的四个字节{s0c、s1c、s2c、s3c}做混列变换,得到第一行的一个字节s’0c;在加密控制信号的控制下,移字节处理单元4310将{s0c、s1c、s2c、s3c}做移字节处理,得到移位后的字节{s3c、s0c、s1c、s2c},经混列变换复用单元4311对其做混列变换,得到第二行的一个字节s’1c;在加密控制信号的控制下,移字节处理单元4310将{s0c、s1c、s2c、s3c}做移字节处理,得到移位后的字节{s2c、s3c、s0c、s1c},经混列变换复用单元4311对其做混列变换,得到第三行的一个字节s’2c;在加密控制信号的控制下,字节处理单元4310将{s0c、s1c、s2c、s3c}做移字节处理,得到移位后的字节{s1c、s2c、s3c、s0c},经混列变换复用单元4311对其做混列变换,得到第四行的一个字节s’3c;其中s’0c、s’1c、s’2c、s’3c组成了经混列变换以后的对应列;至此,完成该列的混列变换操作,其他列的混列变换操作参照上述操作进行,从而完成整个的混列变换。
与此相应的,以一列的四个字节{s0c、s1c、s2c、s3c}做混列逆变换为例,在该混列变换复用子模块上具体实现混列逆变换的步骤如下首先,在解密控制信号的控制下,混列变化复用单元4311首先将输入其中的一列数据的四个字节{s0c、s1c、s2c、s3c}做混列逆变换,得到第一行的一个字节s’0c;在解密控制信号的控制下,移字节处理单元4310将{s0c、s1c、s2c、s3c}做移字节处理,得到移位后的字节{s3c、s0c、s1c、s2c},经混列变换复用单元4311对其做混列逆变换,得到第二行的一个字节s’1c;在解密控制信号的控制下,移字节处理单元4310将{s0c、s1c、s2c、s3c}做移字节处理,得到移位后的字节{s2c、s3c、s0c、s1c},经混列变换复用单元4311对其做混列逆变换,得到第三行的一个字节s’2c;在解密控制信号的控制下,字节处理单元4310将{s0c、s1c、s2c、s3c}做移字节处理,得到移位后的字节{s1c、s2c、s3c、s0c},经混列变换复用单元4311对其做混列逆变换,得到第四行的一个字节s’3c;其中s’0c、s’1c、s’2c、s’3c组成了经混列逆变换以后的对应列;至此,完成该列的混列逆变换操作,其他列的混列逆变换操作参照上述操作进行,从而完成整个的混列逆变换。
使用这种方法同样可以模块化的实现混列变换和混列的逆变换的混合处理。
另外,在图9中的实现中,作为一种可替换的方案,图8中的混列变换复用单元4311也可以不是用图7中的虚线框部分来产生第一行的字节结果,也就是说{03}·、{0e}·、{0b}·、{0d}·和{09}·也可以不进一步拆分成异或和{02}·的操作。
参考图10,为本发明基于AES算法的加解密方法的第一实施例流程示意,该方法具体实现过程如下;首先在步骤S100,进行迭代次数Nr的确定,根据密钥长度设定迭代次数Nr,密钥长度可以是128位、192位和256位,相应的迭代次数Nr可以是10、12或14;在步骤S101,动态生成Nr次加密迭代或者解密迭代过程中进行密钥运算所需要的子密钥,需要指出的是,该步骤贯穿于Nr次加密迭代过程或解密迭代过程;在步骤S102,对待加密或者待解密的数据进行初始化操作,即在待加密或者待解密的数据输入以后,在其进行第一轮迭代之前,首先将其与步骤S101中产生的子密钥进行密钥运算操作,即与之进行按位异或操作;在步骤S103,加载加密、或者解密控制信号,控制相应的加密或者解密操作。
在步骤S104,启动加密迭代或解密迭代过程,在加密控制信号的控制下,启动加密迭代操作流程,在解密控制信号的控制下,启动解密的迭代操作流程;在步骤S105,在加解密迭代复用模块上进行加密或者解密的Nr次迭代操作。
在加密控制信号的控制之下,加解密迭代复用模块处于加密导通状态,所输入的待加密的数据在该模块上进行Nr次加密迭代;在解密控制信号的控制之下,加解密迭代复用模块处于解密导通状态,所输入的待解密的数据在该模块上进行Nr次解密迭代。
其中,Nr次加密迭代中的单次加密迭代的步骤为在步骤S106,对数据进行S盒置换操作;在步骤S107,将经过步骤S106变换输出的数据的每一行进行字节移位,即对经步骤S106变换输出的数据的每一行进行移字节操作;在步骤S108,将经过步骤S107变换输出的数据进行混列变换,即将经步骤S107变换输出的数据的每列与矩阵进行相乘操作;在步骤S109,将经过步骤S108变换输出的数据进行密钥运算,即将经S108变换输出的数据与该次输入的子密钥进行按位异或操作;在最后一次加密迭代的时候省略步骤S108;需要指出的是,在步骤S106中,所述的数据在进行第一次加密迭代时,为经过步骤S102初始化的数据;在以后的单次加密迭代过程中,为经过上一次加密迭代操作的数据。
Nr次解密迭代中的单次解密迭代的步骤为在步骤S106,对数据进行S盒逆置换操作;在步骤S107,将经过步骤S106变换输出的数据的每一行进行字节移位的逆操作,即对经步骤S106变换输出的数据的每一行进行移字节的逆操作;在步骤S110,将经过步骤S107变换输出的数据进行密钥运算,即将经步骤S107变换输出的数据与该次输入的子密钥进行按位异或操作;在步骤S111,将经过步骤S110变换输出的数据进行数据混列逆变换,即将经步骤S110变换输出的数据的每列与矩阵进行相乘操作;在最后一次解密迭代的时候省略步骤S111;需要指出的是,在步骤S106中,所述的数据在进行第一次解密迭代时,为经过步骤S102初始化的数据;在以后的单次解密迭代过程中,为经过上一次解密迭代操作的数据。
图10中的S115表示的是加密子密钥的输入顺序,S116表示的是解密子密钥的输入顺利,这两种子密钥的输入顺序正好相反。在本例中为,在加密迭代操作的时候,依次使用K0,K1,...,KNr-1,KNr。而在解密迭代操作的时候,依次使用KNr,KNr-1,...,K1,K0。
可选择地,本发明还给出了基于AES算法的加解密方法的第二种实施方式,参见图11,该方法具体实现方法步骤如下首先在步骤S200,根据密钥长度设定迭代次数Nr,密钥长度可以是128位、192位和256位,相应地,迭代次数Nr可以是10、12或14;在步骤S201,动态生成Nr次加密迭代或者解密迭代过程进行密钥运算所需要的子密钥,需要指出的是,该步骤贯穿于Nr次加密迭代过程或解密迭代过程;在步骤S202,对待加密或者待解密的数据进行初始化操作,即在待加密或者待解密的数据输入以后,在其进行第一轮密钥迭代之前,首先将其与在步骤S201所产生的子密钥进行密钥运算操作,即与之进行按位异或操作;在步骤S203,加载加密或者解密控制信号,控制相应的加密或者解密操作。
在步骤S204,启动加密迭代或解密迭代过程,在加密控制信号的控制下,启动加密迭代操作流程,在解密控制信号的控制下,启动解密的迭代操作流程;在步骤S205,在加解密迭代复用模块上进行加密或者解密的Nr次迭代操作。
在加密控制信号的控制之下,加解密迭代复用模块处于加密导通状态,所输入的待加密的数据在该模块上进行Nr次加密迭代;在解密控制信号的控制之下,加解密迭代复用模块处于解密导通状态,所输入的待解密的数据在该模块上进行Nr次解密迭代。
其中,Nr次加密迭代中的单次加密迭代的步骤为在步骤S206,对数据进行S盒置换操作;在步骤S207,将经过步骤S206变换输出的数据的每一行进行移位,即对经步骤S206变换输出的数据的每一行进行移字节操作;在步骤S208,将经过步骤S207变换输出的数据进行混列变换,即将经步骤S207变换输出的数据的每列与矩阵进行相乘操作;
在步骤S210,将经过步骤S208变换输出的数据进行密钥运算,将经S208变换输出的数据与该次输入的子密钥进行按位异或操作;在最后一次加密迭代的时候省略步骤S208;需要指出的是,在步骤S206中,所述的数据在进行第一次加密迭代时,为经过步骤S202初始化的数据;在以后的单次加密迭代过程中,为经过上一次加密迭代操作的数据;在电路实现的时候,经步骤S201产生的用于本次加密迭代的加密子密钥经过混列变换复用单元,但是被混列变换复用单元旁路,不做混列变换或混列逆变换。
Nr次解密迭代中的单次解密迭代的步骤为在步骤S206,对数据进行S盒逆置换操作;在步骤S207,将经过步骤S206变换输出的数据的每一行进行移位逆操作,即对经步骤S206变换输出的数据的每一行进行移字节的逆操作;在步骤S208,将经过步骤S207变换输出的数据进行数据混列逆变换,将经步骤S207变换输出的数据的每列与矩阵进行相乘操作;在步骤S209,将经步骤S201产生的用于本次解密迭代的解密子密钥进行混列逆变换;在步骤S210,将经步骤S208处理的数据进行密钥运算,即将经步骤S208变换输出的数据与经步骤S209变换的子密钥进行按位异或操作;在最后一次解密迭代的时候省略步骤S208及步骤S209,直接将经过步骤S207处理后输出的数据与该次输入的子密钥进行按位异或操作。
需要指出的是,在步骤S206中,所述的数据在进行第一次解密迭代时,为经过步骤S202初始化的数据;在以后的单次解密迭代过程中,为经过上一次解密迭代操作的数据。
图11中的S214表示的是加密子密钥的输入顺序,S215表示的是解密子密钥的输入顺利,这两种子密钥的输入顺序正好相反。在本例中为,在加密操作的时候,依次使用K0,K1,...,KNr-1,KNr。而在解密操作的时候,依次使用KNr,KNr-1,...,K1,K0。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
权利要求
1.一种基于AES算法的加解密方法,其特征在于,包括以下步骤a、根据密钥长度确定迭代次数Nr;b、初始化数据,输入的待加密数据或待解密数据进行第一次迭代前,将其与子密钥进行密钥运算操作;c、加载加密控制信号或解密控制信号;d、在加密控制信号的控制下,在加解密迭代复用模块上进行加密的Nr次迭代操作,在解密控制信号的控制下,在加解密迭代复用模块上进行解密的Nr次迭代操作。
2.如权利要求1所述的基于AES算法的加解密方法,其特征在于,步骤d具体包括以下步骤在加密控制信号的控制之下,加解密迭代复用模块处于加密导通状态,输入的待加密的数据在该模块上进行Nr次加密迭代;在解密控制信号的控制之下,加解密迭代复用模块处于解密导通状态,输入的待解密的数据在该模块上进行Nr次解密迭代。
3.如权利要求2所述的基于AES算法的加解密方法,其特征在于,所述Nr次加密迭代中的单次加密迭代的步骤为f1、对输入的数据进行S盒置换操作;f2、对经S盒置换输出的数据的每一行进行移字节操作;f3、将经数据行移位变换输出的数据进行混列变换操作;f4、在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;f5、将经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;在最后一次加密迭代的时候省略步骤f3;所述Nr次解密迭代中的单次解密迭代的步骤为g1、对输入的数据进行S盒逆置换操作;g2、对经S盒逆置换输出的数据的每一行进行移字节的逆操作;g3、在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;g4、将经数据行逆移位变换输出的数据与该次输入的子密钥进行密钥运算操作;g5、将经密钥运算变换输出的数据进行混列逆变换操作;在最后一次解密迭代的时候省略步骤g5。
4.如权利要求2所述的基于AES算法的加解密方法,其特征在于,所述Nr次解密迭代中的单次加密迭代的步骤为f1、对输入的数据进行S盒置换操作;f2、对经S盒置换输出的数据的每一行进行移字节操作;f3、将经数据行移位变换输出的数据进行混列变换操作;f4、在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;f5、将经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;在最后一次加密迭代的时候省略步骤f3;所述Nr次解密迭代中的单次解密迭代的步骤为h1、对输入的数据进行S盒逆置换操作;h2、对经S盒逆置换输出的数据的每一行进行移字节的逆操作;h3、将经数据行逆移位变换输出的数据进行混列逆变换操作;h4、在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;h5、将经子密钥生成步骤产生的用于本次解密迭代的解密子密钥进行混列逆变换;h6、将经混列逆变换输出的数据与该次输入的经过混列逆变换的子密钥进行密钥运算操作;在最后一次解密迭代的时候省略步骤h3和步骤h5,直接将步骤h2变换输出的数据与步骤h4生成的子密钥进行按位异或操作。
5.如权利要求3所述的基于AES算法的加解密方法,其特征在于,所述的步骤f1和步骤g1是在S盒置换复用子模块上实现的,所述步骤f1具体包括以下步骤在加密控制信号的控制下,经过初始化的数据通过查找域元的逆元查找表,矩阵乘,向量加操作,完成S盒的置换;所述步骤g1具体包括以下步骤在解密控制信号的控制下,经过初始化的数据通过向量加,矩阵乘,查找域元的逆元查找表,完成S盒的逆置换。
6.如权利要求4所述的基于AES算法的加解密方法,其特征在于,所述的步骤f1和步骤g1是在S盒置换复用子模块上实现的,所述步骤f1具体包括以下步骤在加密控制信号的控制下,经过初始化的数据通过查找域元的逆元查找表,矩阵乘,向量加操作,完成S盒的置换;所述步骤g1具体包括以下步骤在解密控制信号的控制下,经过初始化的数据通过向量加,矩阵乘,查找域元的逆元查找表,完成S盒的逆置换。
7.如权利要求3所述的基于AES算法的加解密方法,其特征在于,所述的步骤f3和g5是在混列变换复用子模块上实现的,步骤f3具体包括以下步骤在加密控制信号的控制之下,混列变换复用电路处于混列变换导通状态,进行混列变换操作;所述步骤g5具体包括以下步骤在解密控制信号的控制之下,混列变换复用电路处于混列逆变换状态,进行混列逆变换操作。
8.如权利要求4所述的基于AES算法的加解密方法,其特征在于,所述的步骤f3和步骤h3是在混列变换复用子模块上实现的,所述步骤f3具体包括以下步骤在加密控制信号的控制之下,混列变换复用电路处于混列变换导通状态,进行混列变换操作;所述步骤h3具体包括以下步骤在解密控制信号的控制之下,混列变换复用电路处于混列逆变换状态,进行混列逆变换操作。
9.如权利要求7或8所述的基于AES算法的加解密方法,其特征在于,所述混列变换复用电路是由域元的加法和域元的乘2逻辑电路实现的。
10.如权利要求3所述的基于AES算法的加解密方法,其特征在于,所述步骤f3和步骤g5是在混列变换复用子模块上实现的,所述步骤f3具体包括以下步骤bb1、在加密信号的控制下,混列变换复用单元将输入的四个字节做混列变换,得到一个字节的结果;所述的四个字节为做混列变换的数据中的一列的四个字节;所得到一个字节的结果为该列经过混列变换以后的对应列的一个字节;bb2、在加密控制信号的控制之下,将当前的四个字节做移字节处理,并重用步骤bb1中得到一个字节结果的混列变换结构,得到该列经混列变换以后对应列的其他字节的结果,完成该列的混列变换;bb3、其他列的数据做混列变换参照上述步骤进行;所述步骤g5具体包括以下步骤bb4、在解密信号的控制下,混列变换复用单元将输入的四个字节做混列逆变换,得到一个字节的结果;所述的四个字节为做混列逆变换的数据中的一列的四个字节;所得到一个字节的结果为该列经过混列逆变换以后的对应列的一个字节;bb5、在解密控制信号的控制之下,将当前的四个字节做移字节处理,并重用步骤bb4中得到一个字节结果的混列逆变换结构,得到该列经混列逆变换以后对应列的其他字节的结果,完成该列的混列逆变换;bb6、其他列的数据做混列逆变换参照上述步骤进行。
11.如权利要求4所述的基于AES算法的加解密方法,其特征在于,所述步骤f3和步骤h3是在混列变换复用子模块上实现的,所述步骤f3具体包括以下步骤bb1、在加密信号的控制下,混列变换复用单元将输入的四个字节做混列变换,得到一个字节的结果;所述的四个字节为做混列变换的数据中的一列的四个字节;所得到一个字节的结果为该列经过混列变换以后的对应列的一个字节;bb2、在加密控制信号的控制之下,将当前的四个字节做移字节处理,并重用步骤bb1中得到一个字节结果的混列变换结构,得到该列经混列变换以后对应列的其他字节的结果,完成该列的混列变换;bb3、其他列的数据做混列变换参照上述步骤进行;所述步骤h3具体包括以下步骤bb4、在解密信号的控制下,混列变换复用单元将输入的四个字节做混列逆变换,得到一个字节的结果;所述的四个字节为做混列逆变换的数据中的一列的四个字节;所得到一个字节的结果为该列经过混列逆变换以后的对应列的一个字节;bb5、在解密控制信号的控制之下,将当前的四个字节做移字节处理,并重用步骤bb4中得到一个字节结果的混列逆变换结构,得到该列经混列逆变换以后对应列的其他字节的结果,完成该列的混列逆变换;bb6、其他列的数据做混列逆变换参照上述步骤进行。
12.如权利要求10或11所述的基于AES算法的加解密方法,其特征在于,所述混列变换复用单元是域元的加法和域元的乘2逻辑电路。
13.一种基于AES算法的加解密器,其特征在于,包括子密钥产生模块用于在单次加密迭代或单次解密迭代之前,生成对待加密数据或待解密数据进行初始化时进行密钥运算所需的子密钥,在单次加密迭代或单次解密迭代进行时,动态生成加密迭代或解密迭代过程中进行密钥运算的所需子密钥;初始化数据模块将待加密或者待解密的数据进行第一次迭代前,与所述子密钥产生模块产生的子密钥进行密钥运算操作;信号控制模块用于生成并加载加密控制信号或解密控制信号,分别用于控制对数据进行加密或是解密操作;加解密迭代复用模块在信号控制模块加载的加密控制信号的控制下,在加解密迭代复用模块上进行加密的Nr次迭代操作,在信号控制模块加载的解密控制信号的控制下,在加解密迭代复用模块上进行解密的Nr次迭代操作。
14.如权利要求13所述的基于AES算法的加解密器,其特征在于,所述子密钥产生模块用于根据供加密过程中或解密过程中进行密钥运算所用的子密钥动态扩展产生相继轮次进行密钥运算的子密钥,包括密钥存储单元,用于存储加密过程中或解密过程中进行密钥运算所用的子密钥以及由其动态扩展产生的相继轮次的子密钥;密钥扩展单元,用于在加密控制信号的控制下,根据密钥存储单元存储的加密过程中进行密钥运算的的子密钥扩展产生相继轮次进行密钥运算的子密钥;或用于在解密控制信号的控制下,根据密钥存储单元存储的解密过程中进行密钥运算的子密钥扩展产生相继轮次进行密钥运算的子密钥。
15.如权利要求13所述的基于AES算法的加解密器,其特征在于,所述的加解密迭代复用模块,包括以下子模块S盒置换复用子模块用于在加密控制信号的控制下,对输入其中的数据进行S盒置换操作;或在解密控制信号的控制下,对输入其中的数据进行S盒逆置换操作;数据行移位子模块用于在加密控制信号的控制下,对输入其中的数据的每一行进行移字节操作;或在解密控制信号的控制下,对输入其中的数据的每一行进行移字节的逆操作;混列变换复用子模块在加密控制信号控制的控制下,对输入其中的数据进行混列变换操作;或在解密控制信号的控制下,对输入其中的数据进行混列逆变换操作;密钥运算子模块在加密控制信号或者解密控制信号的控制下,将输入其中的数据与该次输入子密钥进行按位异或操作;其中,在最后一次加密或解密迭代时,所述混列变换复用子模块不工作。
16.如权利要求15所述的基于AES算法的加解密器,其特征在于,所述的S盒置换复用子模块具体包括以下单元S盒置换单元用于在加密控制信号的控制下,通过查找域元的逆元查找表,矩阵乘,向量加操作,完成对数据的S盒的置换;S盒逆置换单元用于在解密控制信号的控制下,通过向量加,矩阵乘,查找域元的逆元查找表,完成对数据的S盒的逆置换。
17.如权利要求15所述的基于AES算法的加解密器,其特征在于,所述混列变换复用子模块包括混列变换复用电路在加密控制信号的控制之下,选通混列变换电路,完成对数据的混列变换操作;在解密控制信号的控制之下,选通混列逆变换电路,完成对数据的混列逆变换操作。
18.如权利要求17所述的基于AES算法的加解密器,其特征在于,所述混列变换复用电路是域元的加法和域元的乘2逻辑电路。
19.如权利要求15所述的基于AES算法的加解密器,其特征在于,所述混列变换复用子模块包括移字节处理单元用于将当前进行混列变换或混列逆变换的四个字节做移字节处理;混列变换复用单元用于将输入的四个字节进行混列变换或混列逆变换,产生一个字节结果。
20.如权利要求19所述的基于AES算法的加解密器,其特征在于,所述混列变换复用单元是所述的域元的加法和域元的乘2逻辑电路。
全文摘要
本发明公开了一种基于AES算法的加解密方法,包括a、根据密钥长度确定迭代次数Nr;b、初始化数据,输入的待加密数据或待解密数据进行第一次迭代前,将其与子密钥进行密钥运算操作;c、加载加密控制信号或解密控制信号;d、在加密控制信号的控制下在加解密迭代复用模块上进行加密的Nr次迭代操作,在解密控制信号的控制下在加解密迭代复用模块上进行解密的Nr次迭代操作。本发明还公开了一种基于AES算法的加解密器,其采用一个加解密迭代复用模块来完成加密迭代或解密迭代操作。采用本发明,具有简化AES算法设计的电路规模,减小电路设计的面积开销,降低功耗和成本等优点。
文档编号H04L9/28GK1921382SQ200610037539
公开日2007年2月28日 申请日期2006年9月6日 优先权日2006年9月6日
发明者谭丽娟 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1