基于aes算法的加解密方法及加解密器的制造方法

文档序号:7774064阅读:150来源:国知局
基于aes算法的加解密方法及加解密器的制造方法
【专利摘要】本发明公开了一种基于AES算法的加解密方法及加解密器,其在解密迭代的步骤如下:b1、对输入的数据进行S盒逆置换;b2、对经S盒逆置换后的数据进行逆行移位操作;b3、对经行移位操作后的数据进行逆列混合操作;b4、根据上一轮的子密钥反向扩展生成本轮次的子密钥,并将生成的子密钥进行逆列混合操作;b5、将步骤b3和b4得到的数据进行轮密钥加。通过实施这种顺序的解密迭代操作,进一步推进了加解密算法的硬件共享,更高效的将加密和解密运算的运算电路结构整合到一个硬件结构上,减小开销面积和电路规模,并降低功耗;同时,还省去了RAM的使用,进一步节省了硬件资源。
【专利说明】 基于AES算法的加解密方法及加解密器
[【技术领域】]
[0001]本发明涉及AES算法加解密领域,尤其涉及到一种基于AES算法的加解密方法及加解密器。
[【背景技术】]
[0002]AES加密算法(AdvancedEncryptStandard)是密码学中的高级密码标准,由美国国家标准与技术研究院(NIST)制定和公布。由于其具备安全性、稳定性等优点,现已成为对称密钥加密中最流行的算法之一,被广泛的运用于各个安全领域,其演进方案也成为了人们在安全领域分析和研究的重点课题。
[0003]加密算法的实现,宏观的可分为软件方向和硬件方向,但考虑到软件实现加密算法的安全性和速率的缺陷,人们更加倾向于采用硬件实现加密算法。AES加密算法由于其具有简单、计算量小和占用内存小等特点,尤其适合采用硬件实现,但是,在现有技术中,部分硬件资源不能实现共享,导致较大的面积开销,同时电路规模大,功耗高。
[
【发明内容】
]
[0004]本发明提供了一种基于AES算法的加解密方法及基于AES算法的加解密器,旨在解决现有技术中,部分硬件资源不能实现共享,开销面积大,电路规模大,及功耗高的问题。
[0005]基于AES算法的加解密方法,包括:
[0006]1、根据密钥长度确定加解密迭代次数Nr ;
[0007]I1、对输入的待加密数据与初始密钥进行轮密钥加,或者对待解密数据与最后一次密钥正向扩展生成的子密钥进行轮密钥加;
[0008]II1、在加密信号的控制下,对步骤II所得的数据进行Nr次加密迭代操作;在解密信号的控制下,对步骤II所得的数据进行Nr次解密迭代操作;
[0009]单次加密迭代操作的步骤包括:
[0010]al、对输入的数据进行S盒置换;
[0011]a2、对经S盒置换后的数据进行行移位操作;
[0012]a3、对经行移位操作后的数据进行列混合操作;
[0013]a4、根据上一轮的子密钥正向扩展生成本轮次的子密钥;
[0014]a5、对经列混合操作后的数据和本轮次的子密钥进行轮密钥加;
[0015]其中,第一轮加密迭代操作中的子密钥通过初始密钥正向扩展生成,在第Nr轮加密迭代操作中省略步骤a3 ;
[0016]单次解密迭代操作的步骤包括:
[0017]bl、对输入的数据进行S盒逆置换;
[0018]b2、对经S盒逆置换后的数据进行逆行移位操作;
[0019]b3、对经行移位操作后的数据进行逆列混合操作;
[0020]b4、根据上一轮的子密钥反向扩展生成本轮次的子密钥,并将生成的子密钥进行逆列混合操作;
[0021]b5、将步骤b3和b4得到的数据进行轮密钥加;
[0022]其中,第一轮解密迭代操作中的子密钥通过最后一次密钥正向扩展生成的子密钥反向扩展生成,在第Nr轮解密迭代操作中省略步骤b3和b4中的逆列混合操作。
[0023]另外,本发明还提供了对应于上述方法的基于AES算法的加解密器,包括:
[0024]预处理模块:将输入接口模块接收到的待加密数据或待解密数据进行运算操作;
[0025]密钥扩展模块:用于正向扩展生成加密迭代中所需的子密钥和反向扩展生成解密迭代中所需的子密钥;
[0026]控制模块:产生加密信号或解密信号,分别用于控制对数据进行相应的加密或解密迭代操作;并记录加密迭代或解密迭代的轮数;
[0027]加解密迭代模块:在所述控制模块加密信号或解密信号的控制下,对经过预处理的数据进行相应的Nr次加密迭代操作或Nr次解密迭代操作;
[0028]所述加解密迭代模块包括字节替换模块和加解密模块,所述加解密模块包括行移位模块、逆行移位模块、列混合模块、逆列混合模块及密钥运算模块:
[0029]加密迭代时,先将输入的数据通过所述字节替换模块进行S盒置换后,再依次通过所述行移位模块、列混合模块及密钥运算模块进行数据行移位、列混合及和相应轮次的子密钥进行轮密钥加;
[0030]解密迭代时,先将输入的数据通过字节替换模块进行S盒逆置换后,再依次通过逆行移位模块、逆列混合模块及密钥运算模块进行数据逆行移位、逆列混合及和相应轮次的经逆列混合后的子密钥进行轮密钥加;
[0031 ] 在第Nr次的加密或解密迭代中,所述加解密模块相应的省去列混合或逆列混合。
[0032]相比于现有技术,本发明在解密迭代中,单次解密迭代的步骤为:S盒逆置换一逆行移位一逆列混合一轮密钥加,可知:1、交换了逆行移位和S盒逆置换的顺序,由于逆行移位改变的是状态矩阵中字节的顺序,并未对其内容做变化,而S盒逆置换改变的是状态矩阵中字节的内容,不对其顺序做变化,故这两个操作的顺序是可以调换的,即有:逆行移位[S盒逆置换(state) ]=S盒逆置换[逆行移位(state)],其中state表示状态矩阵;2、交换了轮密钥加与逆列混合的顺序,由于轮密钥加和逆列混合都是线性变换,即输出值可以通过构造线性函数以变换输入值来得到,对于任何线性变化,f:x->y=f (X),存在如下性质:f(a ? b)=f(a) ? f(b),故对于状态矩阵某列Si和与其相应的密钥W[j]有以下变换关系:逆列混合(Si ? W[j]) =逆列混合(Si) ?逆列混合(W[j])。通过上述变化将很好的实现加密和解密算法的硬件共享,将加密和解密运算的运算电路结构实现到一个硬件结构上,从而显著的减少了硬件结构的资源。
[0033]而且,在传统等价解密体系结构中,解密时需要倒序使用正向扩展的子密钥,传统的设计密钥方法是将完全扩展的十轮子密钥存放在RAM中,解密时通过控制信号取出相应的轮密钥。在本发明中,解密迭代中所需的子密钥是通过上一轮次的子密钥反向扩展生成,省去了 RAM的使用,进一步节省了硬件资源。
[0034]显而易见,本发明进一步推进了加解密算法的硬件共享,更高效的将加密和解密运算的运算电路结构整合到一个硬件结构上,减小开销面积和电路规模,并降低功耗。[【专利附图】

【附图说明】]
[0035]图1是本发明基于AES算法的加解密器的工作流程图;
[0036]图2是本发明基于AES算法的加解密器的结构示意图;
[0037]图3是本发明提供的S盒的硬件实现方法的设计图;
[0038]图4是GF((24)2)上的求逆运算的结构图;
[0039]图5是本发明提供的密钥扩展模块的一具体实施例的结构示意图。
[【具体实施方式】]
[0040]为使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明做进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0041]需要说明的是,密钥长度分为128、192、256比特位,为方便描述,以长度为128比特位的密钥的加密方法及加解密器为例。因此,相应的加密或解密迭代次数Nr=10。
[0042]实施例1
[0043]请参阅图1,本发明基于AES算法的加解密方法的一较优实施例流程图,该方法具体实现过程如下:
[0044]加密流程:
[0045]步骤S100,对输入的待加`密数据进行预处理,将其与密钥扩展模块产生的初始密钥k【O】进行轮密钥加,即按位异或操作;
[0046]步骤S110,在加密信号的控制下对经步骤SlOO所得的数据进行10轮次的加密迭代操作;
[0047]单次加密迭代操作的步骤包括:
[0048]步骤S111,对输入的数据进行S盒置换;
[0049]步骤S112,对经步骤Slll的数据进行行移位操作;
[0050]步骤S113,对经步骤S112的数据进行列混合操作;
[0051]步骤SI 14,根据上一轮的子密钥正向扩展生成本轮次的子密钥;
[0052]步骤SI 15,对经步骤SI 13的数据和步骤SI 14得到的子密钥k【m】进行轮密钥加。
[0053]最后一次加密迭代(即第10轮加密迭代)输出的数据为最终的加密密文。
[0054]解密流程:
[0055]步骤S200,对输入的待加密数据进行预处理,将其与最后一次密钥正向扩展产生的子密钥k【10】进行轮密钥加,即按位异或操作;
[0056]步骤S210,在加密信号的控制下对经步骤SlOO所得的数据进行10轮次的解密迭代操作;
[0057]单次加密迭代操作的步骤包括:
[0058]步骤S211,对输入的数据进行S盒逆置换;
[0059]步骤S212,对经步骤S211的数据进行逆行移位操作;
[0060]步骤S213,对经步骤S212的数据进行逆列混合操作;
[0061]步骤S214、根据上一轮的子密钥反向扩展生成本轮次的子密钥,并将生成的子密钥进行逆列混合操作;
[0062]步骤S215,对经步骤S213的数据和步骤S214得到的子密钥k【10_m】进行轮密钥加。假设,m=3,即第三次解密迭代,经k【8】反向扩展生成的k【7】即本次解密迭代所需的子密钥。
[0063]最后一次解密迭代(即第10轮加密迭代)输出的数据为最终的加密密文。
[0064]需要说明的是:
[0065]1、步骤Slll中,所述输入的数据在第1次加密迭代时,为经过步骤SlOO预处理后的数据,在第2次加密迭代到第10次加密迭代时,输入的数据为相对应的上一次加密迭代的输出数据,例如步骤Slll在第2次迭代加密时输入的数据为第1次加密迭代的输出数据(即该第1次加密迭代中的步骤S114的输出数据),步骤Slll在第3次迭代加密时输入的数据为第2次加密迭代的输出数据,...,步骤Slll在第10次迭代加密时输入的数据为第9次加密迭代的输出数据;
[0066]步骤S211中,所述输入的数据的获得方式可以参考步骤S111,在此不赘述;
[0067]2、第10次加密迭代时,省略步骤SI 13 ;第10次解密迭代时,省略步骤S215,及省略步骤S214中的逆列混合的步骤;
[0068]3、加密流程中,步骤S100,用于轮密钥加的为初始密钥为K【0】,在步骤SllO的加密迭代操作中,第m次加密迭代对应的子密钥为k【m】;子密钥k【I】~k【10】由密钥扩展模块在控制模块加载加密信号的控制下正向扩展生成,其中,子密钥k【I】根据初始密钥k【O】正向扩展生成,子密钥k【m】根据子密钥k【m-Ι】正向扩展生成,2≤m≤10;
[0069]解密流程中,步骤S200,用于轮密钥加的为最后一次密钥正向扩展生成的子密钥k【10】,在步骤S210的解密迭代操作中,第m次解密迭代对应的子密钥为k【10_m】;其中,子密钥k【10】根据初始密钥k【O】经过10轮正向扩展后生成,解密迭代所用的子密钥k【9】~k【O】是在加载解密信号的控制下反向扩展生成;为使上述描述更加清晰明白,下面以第3次解密迭代对应的子密钥生成为例,以初始密钥K【O】为基础,通过密钥扩展模块依顺序正向扩展生成k【I】一k【2】一k【3】一k【4】一k【5】一k【6】一k【7】一k【8】—k【9】一k【10】后,再以1^【10】为基础,依顺序反向扩展生成一k【9】一k【8】一k【7】,k【7】即为第3次解密迭代所对应的子密钥。
[0070]上述采用反向扩展的方法动态生成解密迭代所需的子密钥,而传统方法为:将扩展的子密钥存储于RAM中,解密迭代时再通过控制信号取出以供相应轮次的轮密钥加操作。显而易见,相对于传统方法,本发明不需要将正向扩展生成的子密钥存储于RAM中,省去了 RAM的使用,有效的节省了资源。
[0071]优选的,请参阅图3,为了进一步降低资源消耗,步骤Slll和S211具体步骤可以优化如下:采用选通的方法将解密迭代和解密迭代合进行合成,
[0072]并且,在步骤Slll中,输入的数据经过同构映射δχ变换后,进行GF(24)的乘法、平方X2、常量乘χλ与求逆X—1,所得数据经过第一矩阵进行线性变换后输出,其中,所述第一矩阵由仿射Affine矩阵和反相同构映射δ -1X矩阵合并形成;
[0073]在步骤S211中,输入的数据经过第二矩阵进行线性变换后,进行GF(24)的乘法、平方X2、常量χλ乘与求逆^1,所得数据经过同构映射δχ变换后输出,其中,所述第二矩阵由逆仿射Affine—1矩阵和正向同构映射δ X矩阵合并形成。[0074]将仿射Affine矩阵和反相同构映射δ.1X矩阵合并形成第一矩阵,将逆仿射AfTimT1矩阵和正向同构映射δχ矩阵合并形成第二矩阵,在很大程度上减少由中间比特级运算带来的逻辑资源。
[0075]需要说明的是,图3中crypen代表控制模块的控制信号,用于控制字节替换模块的S盒置换和S盒逆置换。
[0076]进一步的,为进一步减少逻辑资源,在上述基础上,将平方X2操作和常量乘X λ操作合并为Χ2+Χ λ,具体运算对应于
【权利要求】
1.基于AES算法的加解密方法,其特征在于,包括: 1.根据密钥长度确定加解密迭代次数Nr; I1、对输入的待加密数据与初始密钥进行轮密钥加,或者对待解密数据与最后一次密钥正向扩展生成的子密钥进行轮密钥加; II1、在加密信号的控制下,对步骤II所得的数据进行Nr次加密迭代操作;在解密信号的控制下,对步骤II所得的数据进行Nr次解密迭代操作; 单次加密迭代操作的步骤包括: al、对输入的数据进行S盒置换; a2、对经S盒置换后的数据进行行移位操作; a3、对经行移位操作后的数据进行列混合操作; a4、根据上一轮的子密钥正向扩展生成本轮次的子密钥; a5、对经列混合操作后的数据和本轮次的子密钥进行轮密钥加; 其中,第一轮加密迭代操作中的子密钥通过初始密钥正向扩展生成,在第Nr轮加密迭代操作中省略步骤a3 ; 单次解密迭代操作的步骤包括: bl、对输入的数据进行S盒逆置换;` b2、对经S盒逆置换后的数据进行逆行移位操作; b3、对经行移位操作后的数据进行逆列混合操作; b4、根据上一轮的子密钥反向扩展生成本轮次的子密钥,并将生成的子密钥进行逆列混合操作; b5、将步骤b3和b4得到的数据进行轮密钥加; 其中,第一轮解密迭代操作中的子密钥通过最后一次密钥正向扩展生成的子密钥反向扩展生成,在第Nr轮解密迭代操作中省略步骤b3和b4中的逆列混合操作。
2.根据权利要求1所述的基于AES算法的加解密方法,其特征在于,所述步骤II及步骤III中,用于加密的第m轮次的子密钥和用于解密的第η轮次的子密钥相同; 加密迭代时,第m轮次的子密钥由所述密钥扩展模块正向扩展生成; 解密迭代时,第η轮次的子密钥由所述密钥扩展模块反向扩展生成; 其中,n=Nr-m,O ^ n ^ Nr,O < m < Nr。
3.根据权利要求1所述的基于AES算法的加解密方法,其特征在于,在所述步骤III中的所述步骤al和bl具体步骤如下: 所述步骤al,输入的数据经过同构映射δχ变换后,进行GF(24)的乘法、平方X2、常量乘X λ与求逆X-1,所得数据经过第一矩阵进行线性变换后输出,其中,所述第一矩阵由仿射矩阵和反相同构映射S-1X矩阵合并形成; 所述步骤bl,输入的数据经过第二矩阵进行线性变换后,进行GF(24)的乘法、平方X2、常量乘Χλ与求逆X—1,所得数据经过同构映射δχ变换后输出,其中,所述第二矩阵由逆仿射矩阵和正向同构映射Sx矩阵合并形成。
4.根据权利要求3所述的基于AES算法的加解密方法,其特征在于,所述平方X2和常量乘X λ合并为χ2+χ λ,具体运算对应于
5.基于AES算法的加解密器,其特征在于,包括: 预处理模块:将输入接口模块接收到的待加密数据或待解密数据进行运算操作;密钥扩展模块:用于正向扩展生成加密迭代中所需的子密钥和反向扩展生成解密迭代中所需的子密钥; 控制模块:产生加密信号或解密信号,分别用于控制对数据进行相应的加密或解密迭代操作;并记录加密迭代或解密迭代的轮数; 加解密迭代模块:在所述控制模块加密信号或解密信号的控制下,对经过预处理的数据进行相应的Nr次加密迭代操作或Nr次解密迭代操作; 所述加解密迭代模块包括字节替换模块和加解密模块,所述加解密模块包括行移位模块、逆行移位模块、列混合模块、逆列混合模块及密钥运算模块: 加密迭代时,先将输入的数据通过所述字节替换模块进行S盒置换后,再依次通过所述行移位模块、列混合模块及密钥运算模块进行数据行移位、列混合及和相应轮次的子密钥进行轮密钥加; 解密迭代时,先将输入的数据通过字节替换模块进行S盒逆置换后,再依次通过逆行移位模块、逆列混合模块及密钥运算模块进行数据逆行移位、逆列混合及和相应轮次的经逆列混合后的子密钥进行轮密钥加; 在第Nr次的加密或解密迭代中,所述加解密模块相应的省去列混合或逆列混合。
6.根据权利要求5所述的基于AES算法的加解密器,其特征在于,所述密钥扩展模块具体包括第一至第四选择单元,及与其一一对应的第一至第四寄存单元、第一至第四逻辑单元和第一至第四选通单元,还包括第五选通单元、MMF模块和T模块; 初始密钥或上一轮子密钥从高位到低位分成4个32比特位的数据分别通过所述第一至第四选择单元依顺序暂存在第一至第四寄存单元中,其中,暂存在第N寄存单元中的数据通过相应的第N逻辑单元运算,且运算后的所得结果反馈给第N选择单元,并暂存于第N寄存单元中,在加密迭代时作为本轮的子密钥通过所述第五选通单元输出,在解密迭代时经MMF模块变换后作为本轮的子密钥通过所述第五选通单输出,其中,I < NS 4 ; 其中,第一选通单元输出端连接第二逻辑单元,第二选通单元输出端连接第三逻辑单元,第三选通单元输出端连接第四逻辑单元,第四选通单元输出端通过T模块连接第一逻辑单元; 在加密迭代时,第一至第三逻辑单元运算的所得结果一一对应传递给第一至第三选通单元,第四寄存单元的数据传递给第四选通单元; 在解密迭代时,第一至第三寄存单元中的数据一一对应的传递给第一至第三选通单元,第四逻辑单元的所得结果传递给第四选通单元。
7.根据权利要求1所述的基于AES算法的加解密器,其特征在于,所述字节替换模块包括多个用于置换及逆置换的S盒; S盒包括仿射模块、逆仿射模块,及GF((24)2)求逆模块;所述GF((24)2)求逆模块包括正向同构映射S X模块、反相同构映射δ -1X模块,及GF (24)的乘法模块、平方X2模块、常量乘Χλ模块与求逆X—1模块,其中,仿射模块和反相同构映射δ-Sc模块合并,逆仿射模块和正向同构映射Sx模块合并。
8.根据权利要求7所述的基于AES算法的加解密器,其特征在于,所述平方X2模块和常量乘X λ模块合并为χ2+χλ模块,具体运算对应于
【文档编号】H04L9/28GK103516512SQ201310495732
【公开日】2014年1月15日 申请日期:2013年10月21日 优先权日:2013年10月21日
【发明者】金爽, 张献英, 陈飞 申请人:深圳市芯通信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1