本发明属于加密技术领域,提供了一种aes加密运算单元、aes加密电路及其加密方法。
背景技术
aes(advancedencryptionstandard,高级加密标准)是由美国国家标准与技术研究院2001年制定的新一代分组对称密码算法,用于取代原来的des(dataencryptionstandard,数据加密标准)。目前,aes密码算法已经被多个国际标准组织所采用,是目前使用最广泛的分组密码算法。
aes密码算法的数据分组长度为128比特,密钥长度有128,192和256比特三种,分别称为aes-128,aes-192,aes-256。aes算法是一个迭代算法,每一个迭代可以称为轮变换,密钥长度不同,轮变换数量也不同,aes-128,aes-192,aes-256的轮变换数量nr分别为10,12,14。
现有的aes加密流程如附图1所示,输入的明文数据首先后进行nr–1轮普通轮变换及末轮变换,每轮普通轮变换依次进行密钥加运算、字节替换运算,行移位运算及列混合运算;末轮变换依次完成密钥加运算、字节替换运算、行移位运算及密钥加运算,可以通过各个运算单元单独实现轮变换中的各个运算,但通过各运算单元单独实现的轮变换电路不仅浪费电路资源,且关键路径较长。
或是将相邻的几个运算单元合并成一个运算单元进行实现,t盒实现方式是目前轮变换电路实现中最常用的运算单元合并实现方式,t盒实现通过预计算方式将s盒、行移位和列混合等运算的运算结果预存一个存储运算单元中,以查询表的方式实现s盒、行移位和列混合合并运算功能。t盒实现减少了整个轮变换电路的关键路径,因此t盒实现方式主要应用在高速aes电路设计中。t盒实现方式虽然可以加快数据处理速度,但也大大增加了电路面积,如rach等人将基于复合域s盒/逆s盒中最后一级gf(24)乘法器、映射矩阵/逆映射运算、仿射/逆仿射运算、列混合/逆列混合运算和密钥加运算等五个运算合并成一个运算单元,合并运算单元缩短了电路关键路径,但同时也大大增加了电路面积。
技术实现要素:
本发明实施例提供一种aes加密电路,旨在解决现有的基于合并运算的aes加密电路,都是以增加电路面积为代价对关键路径长度进行优化的问题。
本发明是这样实现的,一种aes加密运算单元,aes加密运算单元包括:
二选一选择器s1、合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2,其中,选择器的两输入端分别与明文数据输入端及反馈数据输入端连接,选择器的输出端及密钥输入端与合成矩阵乘法运算单元1的输入端连接,合成矩阵乘法运算单元1的输出端与复合域乘法逆运算单元的输入端连接,复合域乘法逆运算单元的输出端及密钥输入端均与合成矩阵乘法运算单元2的输入端连接,合成矩阵乘法运算单元2的两输出端分别与常数加运算单元1及常数加运算单元2的输入端连接,常数加运算子1的输出端与反馈数据输出端连接,常数加运算单元2的输出端与密文数据输出端连接;
在进行第一轮普通轮变换运算时,二选一选择器s1将从明文数据输入端口输入明文数据向量df=[df0,df1,df2,df3]t输出到合成矩阵乘法运算单元1,在第二轮至第(nr-1)轮普通轮变换运算及末轮变换运算时,二选一选择器s1将从反馈数据输入端口输入数据向量dn=[dn0,dn1,dn2,dn3]t输出到合成矩阵乘法运算单元1;
合成矩阵乘法运算单元1,将从数据输入端输入的列向量dv=[d0,d1,d2,d3]t和密钥输入端输入的密钥向量kn=[kn0,kn1,kn2,kn3]t组合成一个列向量pv=[d0,d1,d2,d3,kn0,kn1,kn2,kn3]t,将合成矩阵δ与列向量pv进行乘法运算,乘法运算结果lv=[l0,l1,l2,l3]t输出到复合域乘法逆运算单元,所述合成矩阵δ表达如下:
其中,合成矩阵δ由八个常数矩阵δ组合而成,常数矩阵δ为将gf(28)域上的元素映射到复合域的映射矩阵;
复合域乘法逆运算单元,将向量lv=[l0,l1,l2,l3]t中的每个字节进行复合域乘法逆运算,运算结果iv=[i0,i1,i2,i3]t输出到合成矩阵乘法运算单元2;
合成矩阵乘法运算单元2,将数据向量iv=[i0,i1,i2,i3]t和密钥向量ki=[ki0,ki1,ki2,ki3]t组合成一个列向量ov=[i0,i1,i2,i3,ki0,ki1,ki2,ki3]t,将合成矩阵λ与列向量ov进行乘法运算,乘法运算结果第一行至第四行组成的向量qn=[qn0,qn1,qn2,qn3]t及乘法运算结果第五行至第八行组成的向量ql=[ql0,ql1,ql2,ql3]t分别输出到常数加运算单元1及常数加运算单元2,所述合成矩阵λ的具体表达如下:
其中,合成矩阵λ由常数矩阵λ3、λ2、λ1、
常数加运算单元1,将列向量qn=[qn0,qn1,qn2,qn3]t与常数向量ωv=[ω,ω,ω,ω]t相加运算,其中常数ω为aess盒中仿射运算所指定的字节常数,将运算结果rn=[rn0,rn1,rn2,rn3]t通过反馈数据输出端反馈至反馈数据输出入端;
常数加运算单元2,将列向量ql=[ql0,ql1,ql2,ql3]t与常数向量ωv=[ω,ω,ω,ω]t相加运算,运算结果rn=[rn0,rn1,rn2,rn3]t通过密文数据输出端口输出,取第nr次运算结果作为密文。
本发明是这样实现的,一种aes加密电路,aes加密电路包括:
一个aes加密运算单元,以及寄存器1和寄存器2,其中,寄存器1的输入端与所述aes加密运算单元的反馈数据输出端连接,输出端与寄存器2的输入端相连接,寄存器2输出端与所述aes加密运算单元的反馈数据输入端连接;
寄存器1及所述寄存器2的数据位宽为16字节。
本发明是这样实现的,一种aes加密电路,aes加密电路包括:
两个aes加密运算单元,以及寄存器1和寄存器2,其中,寄存器1的输入端与两个aes加密运算单元的反馈数据输出端连接,输出端与寄存器2的输入端相连接,寄存器2输出端与两个aes加密运算单元的反馈数据输入端连接,寄存器1及寄存器2的数据位宽为16字节。
本发明是这样实现的,一种aes加密电路,aes加密电路包括:
四个aes加密运算单元,以及寄存器,其中,寄存器的输入端与四个aes加密运算单元的反馈数据输出端连接,输出端与四个aes加密运算单元的反馈数据输入端连接,寄存器的数据位宽为16字节。
本发明是这样实现的,一种基于aes加密电路的aes加密方法,方法包括如下步骤:
s1、aes加密电路的前4(nr-1)次运算构成(nr-1)轮普通轮变换,在前4次运算中,选择器s1将从明文数据输入端输入的数据输出到合成矩阵乘法运算单元1,在第5~4(nr-1)次运算中,选择器s2将从反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2的运算,常数加运算单元1的运算结果输入寄存器1中,每循环4次,即完成一轮完整的普通轮变换运算后,寄存器1将存储的数据输入到寄存器2中,寄存器2每次将4字节的数据通过反馈数据输入端输入选择器s1,进行下一轮普通轮变换运算,共进行nr-1轮普通轮变换运算;
s2、aes加密电路的第(4nr-3)~4nr次运算构成末轮变换,在末轮变换运算中,寄存器2每次将4字节的数据通过反馈数据输入端输入选择器s1,选择器将从反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2运算,常数加运算单元2的运算结果从密文数据输出端口输出,第(4nr-3)~4nr次从密文数据输出端输出的数据即构成密文。
本发明是这样实现的,一种基于aes加密电路的aes加密方法,方法包括如下步骤:
s1、aes加密电路的前2(nr-1)次运算构成(nr-1)轮普通轮变换,两个aes加密运算单元同时进行普通轮变换运算,在普通轮变换运算中,在前2次运算中,选择器s1将从明文数据输入端输入的数据输出至合成矩阵乘法运算单元1,在第3~2(nr-1)次运算中,选择器s1将从反馈数据输入端输入的数据输出到合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2的运算,常数加运算单元1的运算结果输入寄存器1中,每循环2次,即完成一轮完整(16字节)的普通轮变换运算后,寄存器1将存储的数据输入到寄存器2中,寄存器2每次将两组4字节的数据通过两反馈数据输入端分别输入两aes加密运算单元的选择器,进行下一轮普通轮变换运算,共进行nr-1轮普通轮变换运算;
s2、aes加密电路的第(2nr-1)~2nr次循环构成末轮变换,两个aes加密运算单元同时进行末轮变换运算,在末轮变换运算中,寄存器将两组4字节的数据通过两反馈数据输入端分别输入两aes加密运算单元的选择器,选择器将反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2运算,常数加运算单元2的运算结果从密文数据输出端口输出,第(2nr-1)~2nr次从密文数据输出端输出的数据即构成密文。
本发明是这样实现的,一种基于aes加密电路的aes加密方法,方法包括如下步骤:
s1、aes加密电路的前(nr-1)次运算构成(nr-1)轮普通轮变换,四个aes加密运算单元同时进行普通轮变换运算,在普通轮变换运算中,在第一次运算中,选择器将从明文数据输入端输入的数据输出至合成矩阵乘法运算单元1,在第2~(nr-1)次运算中,选择器将从反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2的运算,常数加运算单元1的运算结果输入寄存器中,每循环一次,即完成一轮完整的普通轮变换运算后,寄存器1将存储的数据输出至寄存器2,寄存器将四组4字节的数据通过四反馈数据输入端分别输入四aes加密运算单元的选择器,进行下一轮普通轮变换,共进行nr-1轮普通轮变换运算;
s2、aes加密电路的第nr次循环构成末轮变换,四个aes加密运算单元同时进行末轮变换运算,在末轮变换运算中,寄存器2将四组4字节的数据通过四反馈数据输入端分别输入四aes加密运算单元的选择器,选择器将从反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2运算,常数加运算单元2的运算结果从密文数据输出端口输出,第nr次从密文数据输出端输出的数据即构成密文。
本发明提出的aes加密运算单元通过常数矩阵的合并与合成运算,将轮变换中的所有线性变换运算组合成两个合成矩阵,合成矩阵δ与合成矩阵λ,从而缩短aes加密电路的关键路径,同时减少aes加密电路的实现面积,此外,通过复用合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元1来构建普通轮变换电路及末轮变换电路,通过复用来实现普通轮变换及末轮变换,从而进一步节省大量电路资源。
附图说明
图1为本发明实施例提供的现有的aes加密流程图;
图2为本发明实施例提供的基于合成矩阵的aes加密运算单元的结构示意图;
图3为本发明实施例一提供的aes加密电路的结构示意图;
图4为本发明实施例二提供的aes加密电路的结构示意图;
图5为本发明实施例三提供的aes加密电路的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现有的运算单元主要包括:行移位运算单元、列混合运算单元、密钥加运算单元、字节替换运算单元均为现有的运算单元,运算单元的运算方法如下所述:
密钥加运算单元
密钥加运算单元进行密钥加运算,密钥加运算是一个很简单的运算,密钥加运算定义为状态矩阵加上子密钥矩阵,这里的加法运算为gf(2)域加法运算,即位异或运算,假设轮变换输入的状态矩阵为:
假设经过密钥加运算后的状态矩阵为:
密钥加运算表达式为:
其中矩阵k为子密钥矩阵,子密钥矩阵由输入的原始密钥通过密钥扩展算法产生,子密钥矩阵也为4×4字节矩阵。
字节替换运算单元
字节替换运算单元进行字节替换运算,字节替换运算通常称为s盒运算,s盒运算是将状态矩阵中的每个字节根据字节替换表进行替换操作。假设经过s盒运算后的状态矩阵为:
则s盒运算可以表达为:
其中s()为s盒运算函数。s盒运算是轮变换复用四个运算中唯一的非线性运算,也是运算复杂度最高的运算,因此s盒电路占据了整个aes电路的绝大部分面积和功耗。
aess盒运算中,输入字节首先进行一个有限域gf(28)域上乘法逆运算,然后进行一个仿射运算,其表达式为:
其中x为输入字节,()a-1为gf(28)域上的乘法逆运算,τ为8×8bit常数矩阵,ω为字节常数,τ和ω用于完成s盒中的仿射运算。
本发明涉及的gf(28)域为aes密码算法中所指定的gf(28)域,其不可约多项式为
f(x)=x8+x4+x3+x+1
常数矩阵τ和字节常数ω分别为:
在众多s盒实现方式中,基于复合域的s盒实现具有最小的电路面积。复合域s盒通过数学变换将s盒中的主要运算单元—gf(28)域乘法逆运算单元映射到复合域中实现。复合域乘法逆运算的计算复杂度要远远小于gf(28)域乘法逆的计算复杂度,因而可以大大减少s盒电路实现的硬件复杂度。
基于复合域的aess盒运算表达式为:
其中()c-1为复合域上的乘法逆运算,复合域为任意与gf(28)域同构的复合域,δ为8×8bit映射矩阵,其作用是将输入字节x从gf(28)域映射到复合域,δ′为δ逆矩阵,其作用是将复合域乘法逆运算结果从复合域映射回到gf(28)域。
在有限域中,加法运算为位异或逻辑运算。根据
行移位运算单元
行移位运算单元进行行移位运算,行移位运算是一个简单的运算,在这个运算中,状态矩阵的第一行不变换,第二,三,四行分别向左移位一个字节,二个字节,和三个字节。假设经过行移位运算后的状态矩阵为:
行移位之后的状态矩阵可以表达为:
在硬件实现中,行移位运算不需要消耗任何逻辑电路资源,只需调整总线位置即可实现行移位运算。
列混合运算单元
列混合运算单元进行列混合运算,在列混合运算中,状态矩阵的每一列可以视为环r上的一个三次多项式,则列混合运算定义为状态矩阵的各个列多项式与一个常数多项式在环r上的乘积。假设经过列混合运算后的状态矩阵为:
列混合运算的表达式为:
其中矩阵φ为列混合常数矩阵,常数矩阵φ中的
普通轮变换公式
轮变换中的四个运算单元可以单独实现,也可以将相邻的几个运算单元合并成一个运算单元进行实现。运算单元单独实现的轮变换电路不仅浪费电路资源,且关键路径较长。本发明根据轮变换公式,通过常数矩阵的合并与合成运算,对轮变换中的线性运算进行合并。根据上述中轮变换中的各个子运算公式,可以得出轮变换中的普通轮变换公式为:
将上述公式中具有相同输入的输出变量rx,y划分一组,则每一列输出变量可以组成一组,上述公式共可以划分成四个分组。这四个分组具有相同运算操作,并在硬件实现时具有相同的电路运算单元。每一分组输出变量都可以表达为线性方程形式:
上式中的输入变量和输出变量在每一分组中对应的变量为:
组i:
组iii:
为了减少电路实现面积,本发明进一步将s盒中的gf(28)乘法逆映射到复合域中,映射后的普通轮变换分组公式为:
末轮变换公式
按照上述子运算公式,同样可以得出末轮变换公式为:
按照普通轮变换分组,将上述末轮变换公式也可以分成四个分组,末轮变换分组公式为:
分组公式中的输入变量和输出变量在每一分组中对应的变量与普通轮变换相同。基于复合域的末轮变换分组公式为:
本发明提出aes加密运算单元,实现4个字节的aes加密,aes加密运算单元通过常数矩阵的合并与合成运算,将轮变换中的线性变换运算组合成两个合成矩阵,合成矩阵δ与合成矩阵λ,从而缩短电路关键路径,减少电路实现面积。
图2为本发明实施例提供的aes加密运算单元的结构示意图,为了便于说明,仅示出与本发明实施例相关的部分。
该aes加密运算单元包括:
二选一选择器s1、合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2,其中,选择器s1的两输入端分别与明文数据输入端及反馈数据输入端连接,输出端及密钥输入端与合成矩阵乘法运算单元1的输入端连接,合成矩阵乘法运算单元1的输出端与复合域乘法逆运算单元的输入端连接,复合域乘法逆运算单元的输出端及密钥输入端均与合成矩阵乘法运算单元2的输入端连接,合成矩阵乘法运算单元2的两输出端分别与常数加运算单元1及常数加运算单元2的输入端连接,常数加运算子1的输出端与反馈数据输出端连接,常数加运算单元2的输出端与密文数据输出端连接;
在进行第一轮普通轮变换运算时,二选一选择器s1选择将从明文数据输入端口输入明文数据向量df=[df0,df1,df2,df3]t输出到合成矩阵乘法运算单元1,在第二轮至第(nr-1)轮普通轮变换运算及末轮变换运算时,二选一选择器s1选择将从反馈数据输入端口输入数据向量dn=[dn0,dn1,dn2,dn3]t输出到合成矩阵乘法运算单元1;
合成矩阵乘法运算单元,其数据位宽为4字节,将从数据输入端输入的列向量dv=[d0,d1,d2,d3]t和密钥输入端输入的密钥向量kn=[kn0,kn1,kn2,kn3]t组合成一个列向量pv=[d0,d1,d2,d3,kn0,kn1,kn2,kn3]t,并将合成矩阵δ与列向量pv=[d0,d1,d2,d3,kn0,kn1,kn2,kn3]t进行乘法运算,合成矩阵δ表达如下:
其中,合成矩阵δ由八个常数矩阵δ组合而成,常数矩阵δ为映射矩阵,其作用是将gf(28)域上的元素映射到复合域上。合成矩阵乘法运算单元1可以用具体公式进行表达为:
运算结果lv=[l0,l1,l2,l3]t进一步输出到复合域乘法逆运算单元。
复合域乘法逆运算单元,其数据位宽为4字节,将lv=[l0,l1,l2,l3]t中的每个字节进行复合域乘法逆运算,这里的复合域为任意与gf(28)域同构的复合域。复合域乘法逆运算字单元的具体表达形式为:
运算结果iv=[i0,i1,i2,i3]t进一步输出到合成矩阵乘法运算单元2。
合成矩阵乘法运算单元2,其数据位宽为4字节,将数据向量iv=[i0,i1,i2,i3]t和密钥向量ki=[ki0,ki1,ki2,ki3]t组合成一个列向量ov=[i0,i1,i2,i3,ki0,ki1,ki2,ki3]t,将合成矩阵λ与列向量ov进行乘法运算,合成矩阵λ的具体表达如下:
其中,合成矩阵λ由常数矩阵λ3、λ2、λ1、
乘法运算结果第一行至第四行组成的向量qn=[qn0,qn1,qn2,qn3]t及乘法运算结果第五行至第八行组成的向量ql=[ql0,ql1,ql2,ql3]t分别输出到常数加运算单元1及常数加运算单元2。
常数加运算单元1,数据位宽为4字节,将列向量qn=[qn0,qn1,qn2,qn3]t与常数向量ωv=[ω,ω,ω,ω]t相加运算,其中常数ω为aess盒中仿射运算所指定的字节常数。常数加运算子1单元的具体表达形式为:
常数加运算子1单元将运算结果rn=[rn0,rn1,rn2,rn3]t通过反馈数据输出端反馈至反馈数据输入端;
常数加运算单元2,其数据位宽为4字节,将列向量ql=[ql0,ql1,ql2,ql3]t与常数向量ωv=[ω,ω,ω,ω]t相加运算,其中常数ω为aess盒中仿射运算所指定的字节常数,常数加运算子2单元的具体表达形式为:
常数加运算子2单元将运算结果rn=[rn0,rn1,rn2,rn3]t通过密文数据输出端口输出,取第nr次运算结果作为密文。
本发明提出的aes加密运算单元通过常数矩阵的合并与合成运算,将轮变换中的所有线性变换运算组合成两个合成矩阵,合成矩阵δ与合成矩阵λ,从而缩短aes加密电路的关键路径,同时减少aes加密电路的实现面积,此外,通过复用合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元1来构建普通轮变换电路及末轮变换电路,通过复用来实现普通轮变换及末轮变换,从而进一步节省大量电路资源。
图3为本发明实施例一提供的aes加密电路的结构示意图,为了便于说明,仅示出与本发明实施例相关的部分。
该aes加密电路包括:
一个aes加密运算单元,以及寄存器1和寄存器2,其中,寄存器1的输入端与aes加密运算单元的反馈数据输出端连接,输出端与寄存器2的输入端相连接,寄存器2输出端与aes加密运算单元的反馈数据输入端连接,寄存器1及寄存器2的数据位宽为16字节。
基于上述aes加密电路的加密方法,该方法包括如下步骤:
s1、aes加密电路的前4(nr-1)次运算构成(nr-1)轮普通轮变换,在前4次运算中,选择器s1将从明文数据输入端输入的数据输出到合成矩阵乘法运算单元1,在第5~4(nr-1)次运算中,选择器s2将从反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2的运算,常数加运算单元1的运算结果输入寄存器1中,每循环4次,即完成一轮完整(16字节)的普通轮变换运算后,寄存器1将存储的数据输入到寄存器2中,寄存器2每次将4字节的数据通过反馈数据输入端输入选择器s1,进行下一轮普通轮变换运算,共进行nr-1轮普通轮变换运算;
s2、aes加密电路的第(4nr-3)~4nr次运算构成末轮变换,在末轮变换运算中,寄存器2每次将4字节的数据通过反馈数据输入端输入选择器s1,选择器将从反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2运算,常数加运算单元2的运算结果从密文数据输出端口输出,第(4nr-3)~4nr次从密文数据输出端输出的数据即构成密文。
图4为本发明实施例二提供的aes加密电路的结构示意图,为了便于说明,仅示出与本发明实施例相关的部分。
该aes加密电路包括:
两个aes加密运算单元,以及寄存器1和寄存器2,其中,寄存器1的输入端与两个aes加密运算单元的反馈数据输出端连接,输出端与寄存器2的输入端相连接,寄存器2输出端与两个aes加密运算单元的反馈数据输入端连接,寄存器1及寄存器2的数据位宽为16字节。
基于上述aes加密电路的加密方法,该方法包括如下步骤:
s1、aes加密电路的前2(nr-1)次运算构成(nr-1)轮普通轮变换,两个aes加密运算单元同时进行普通轮变换运算,在普通轮变换运算中,在前2次运算中,选择器s1将从明文数据输入端输入的数据输出至合成矩阵乘法运算单元1,在第3~2(nr-1)次运算中,选择器s1将从反馈数据输入端输入的数据输出到合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2的运算,常数加运算单元1的运算结果输入寄存器1中,每循环2次,即完成一轮完整(16字节)的普通轮变换运算后,寄存器1将存储的数据输入到寄存器2中,寄存器2每次将两组4字节的数据通过两反馈数据输入端分别输入两aes加密运算单元的选择器,进行下一轮普通轮变换运算,共进行nr-1轮普通轮变换运算;
s2、aes加密电路的第(2nr-1)~2nr次循环构成末轮变换,两个aes加密运算单元同时进行末轮变换运算,在末轮变换运算中,寄存器将两组4字节的数据通过两反馈数据输入端分别输入两aes加密运算单元的选择器,选择器将反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2运算,常数加运算单元2的运算结果从密文数据输出端口输出,第(2nr-1)~2nr次从密文数据输出端输出的数据即构成密文。
图5为本发明实施例三提供的aes加密电路的结构示意图,为了便于说明,仅示出与本发明实施例相关的部分
该加密电路包括:
四个aes加密运算单元,以及寄存器,其中,寄存器的输入端与四个aes加密运算单元的反馈数据输出端连接,输出端与四个aes加密运算单元的反馈数据输入端连接,寄存器的数据位宽为16字节。
基于上述aes加密电路的加密方法,该方法包括如下步骤:
s1、aes加密电路的前(nr-1)次运算构成(nr-1)轮普通轮变换,四个aes加密运算单元同时进行普通轮变换运算,在普通轮变换运算中,在第一次运算中,选择器将从明文数据输入端输入的数据输出至合成矩阵乘法运算单元1,在第2~(nr-1)次运算中,选择器将从反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2的运算,常数加运算单元1的运算结果输入寄存器中,每循环一次,即完成一轮完整的普通轮变换运算后,寄存器1将存储的数据输出至寄存器2,寄存器将四组4字节的数据通过四反馈数据输入端分别输入四aes加密运算单元的选择器,进行下一轮普通轮变换,共进行nr-1轮普通轮变换运算;
s2、aes加密电路的第nr次循环构成末轮变换,四个aes加密运算单元同时进行末轮变换运算,在末轮变换运算中,寄存器2将四组4字节的数据通过四反馈数据输入端分别输入四aes加密运算单元的选择器,选择器将从反馈数据输入端输入的数据输出至合成矩阵乘法运算单元1,依次经合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元2运算,常数加运算单元2的运算结果从密文数据输出端口输出,第nr次从密文数据输出端输出的数据即构成密文。
本发明实施例一提供aes加密电路是通过四个aes加密运算单元的并行处理来完成16字节的aes加密,实施例二及实施例三是通过aes加密运算单元的复用来完成16字节的aes加密,通过aes加密运算单元的复用完成aes加密,可以进一步节省大量电路资源,但复用结构相比于并行处理结构而言,整个aes加密速度要慢。
本发明提出的aes加密电路是基于aes加密运算单元构成的,而aes加密运算单元通过常数矩阵的合并与合成运算,将轮变换中的线性变换运算组合成两个合成矩阵,合成矩阵δ与合成矩阵λ,从而缩短aes加密电路关键路径,减少aes加密电路实现面积,此外,通过复用合成矩阵乘法运算单元1、复合域乘法逆运算单元、合成矩阵乘法运算单元2、常数加运算单元1及常数加运算单元1来构建普通轮变换电路及末轮变换电路,通过复用来实现普通轮变换及末轮变换,从而进一步节省大量aes加密电路资源。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。