一种普通轮变换运算单元、普通轮变换电路及AES解密电路转让专利

申请号 : CN201810597060.4

文献号 : CN108933652B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张肖强王新航郑辛星梁广俊王磊孙忠先

申请人 : 安徽工程大学

摘要 :

本发明涉及密码电路技术领域,尤其涉及一种普通轮变换运算单元、普通轮变换电路及AES解密电路,本发明提出的用于AES解密的普通轮变换单元,通过常数矩阵的合并与合成运算,将AES解密算法中普通轮变换中的所有线性变换运算组合成两个合成矩阵,合成矩阵与合成矩阵可以缩短电路关键路径,还能够减少电路实现面积。

权利要求 :

1.一种普通轮变换运算单元,用于AES解密,其特征在于,所述普通轮变换运算单元包括:合成矩阵乘法运算单元1、常数加运算单元、复合域乘法逆运算单元及合成矩阵乘法运算单元2,合成矩阵乘法运算单元1的输入端与数据输入端口连接,输出端与常数加运算单元的输入端连接,常数加运算单元的输出端与复合域乘法逆运算单元的输入端连接,复合域乘法逆运算单元的输出端及密钥输入端口与合成矩阵乘法逆运算单元2的输入端连接,合成矩阵乘法运算单元2的输出端与数据输出端口连接;

合成矩阵乘法运算单元1,将合成矩阵 与从数据输入端口输入的数据向量 进行乘法运算,将运算结果 输出到常数加运算单元,其中,合成矩阵 的表达式具体如下所示:

常数加运算单元,将向量 与常数向量Ωλ=[ωλ,ωλ,ωλ,ωλ]T进行相加运算,将运算结果 输出到复合域乘法逆运算单元,其中,分别表示向量 的第一个、第二个、第三个及第四个元素, 分别表示向量 的第一个、第二个、第三个及第四个元素,T表示矩阵的转置,表示常数矩阵,常数矩阵 为常数矩阵δ和常数矩阵τ′的乘积,即 常数矩阵δ为映射矩阵,其作用是将GF(28)域上的元素映射到复合域上,常数矩阵τ′为逆S盒运算中逆仿射运算所指定的常数矩阵,ωλ为常数矩阵δ、常数矩阵τ'和常数ω的乘积,即ωλ=δ×τ'×ω,常数ω为逆S盒运算中逆仿射运算所指定的字节常数;

复合域乘法逆运算单元,将向量 中的每个字节进行复合域乘法逆运

算,将运算结果 输出到合成矩阵乘法运算单元2,其中,

分别表示向量 的第一个、第二个、第三个及第四个元素;

合成矩阵乘法运算单元2,将数据向量 和密钥向量

组合成一个列向量 并将合成矩阵 与列向

量 进行乘法运算,即 将运算结果 输出到数据输出端口,

合成矩阵 的表达式如下所示:

合成矩阵乘法运算单元1、常数加运算单元、复合域乘法逆运算单元及合成矩阵乘法运算单元2的输入端及输出端的数据位宽均为4个字节, 分别表示向量 的第一个、第二个、第三个及第四个元素, 分别表示密钥向量 的第一个、第二个、第三个及第四个元素,常数矩阵 为常数矩阵 和常数矩阵δ'的乘积,即 常数矩阵 为常数矩阵 和常数矩阵δ'的乘积,即 常数矩阵 为常数矩阵 和常数矩阵δ'的乘积,即 常数矩阵 为常数矩阵 和常数矩阵δ'的乘积,即

8

常数矩阵 分别为GF(2)域上乘常数×{09}16、×{0b}16、×{0d}16、×{0e}16的矩阵形式,常数矩阵δ′为映射矩阵。

2.一种普通轮变换电路,其特征在于,所述电路包括:

4×(Nr-1)个如权利要求1所述的普通轮变换运算单元,其中,每4个普通轮变换运算单元并联组成一个普通轮变换模块,(Nr-1)个普通轮变换模块串联组成普通轮变换电路,其中,Nr为轮变换数量。

3.一种普通轮变换电路,其特征在于,所述电路包括:

一个如权利要求1所述的普通轮变换运算单元、及用于循环4×(Nr-1)次所述普通轮变换运算单元的循环反馈电路,Nr为轮变换数量;

其中,循环反馈电路由二选一选择器、寄存器1及寄存器2组成,寄存器1及寄存器2的数据位宽均为16字节,寄存器1输入端与选择器的输出端连接,寄存器1的输出端与寄存器2的输入端相连接,寄存器2的输出端与普通轮变换运算单元的数据输入端连接,普通轮变换运算单元的数据输出端与选择器的一输入端连接,选择器的另一输入端与首轮变换电路的输出端连接,普通轮变换运算单元的输出端连接还与末轮变换电路的输入端连接。

4.一种普通轮变换电路,其特征在于,所述电路包括:

由两个如权利要求1所述的普通轮变换运算单元并联组成的普通轮变换模块,及循环反馈电路,循环反馈电路用于对普通轮变换模块进行2(Nr-1)次循环,Nr为轮变换数量;

其中,循环反馈电路由选择器、寄存器1及寄存器2组成,寄存器1及寄存器2的数据位宽均为16字节,其中,寄存器1的输入端与选择器的输出端连接,寄存器1的输出端与寄存器2的输入端连接,寄存器2的输出端与普通轮变换模块的数据输入端连接,选择器的一输入端与首轮变换电路的输出端连接,另一输入端与普通轮变换模块的输出端连接,普通轮变换模块的输出端还与末轮变换电路的输入端连接。

5.一种普通轮变换电路,其特征在于,所述电路包括:

由四个如权利要求1所述的普通轮变换运算单元并联组成的普通轮变换模块,及循环反馈电路,循环反馈电路用于对普通轮变换模块进行(Nr-1)次循环;

其中,循环反馈电路由选择器及寄存器组成,寄存器的数据位宽为16字节,其中,寄存器的输出端与普通轮变换模块的输入端连接,寄存器输入端与选择器的输出端连接,选择器的一输入端与首轮变换电路的输出端连接,另一输入端与普通轮变换模块的输出端连接,普通轮变换模块的输出端还与末轮变换电路的输入端连接。

6.一种AES解密电路,其特征在于,所述电路包括:

依次连接的首轮变换电路、普通轮变换电路及末轮变换电路,其中,普通轮变换电路采用权利要求2至权利要求5中任一权利要求所述的普通轮变换电路。

说明书 :

一种普通轮变换运算单元、普通轮变换电路及AES解密电路

技术领域

[0001] 本发明涉及密码电路技术领域,尤其涉及一种普通轮变换运算单元、普通轮变换电路及AES解密电路。

背景技术

[0002] AES(Advanced Encryption Standard,高级加密标准)是由美国国家标准与技术研究院2001年制定的新一代分组对称密码算法,用于取代原来的DES(Data Encryption Standard,数据加密标准)。目前,AES密码算法已经被多个国际标准组织所采用,是目前使用最广泛的分组密码算法。
[0003] 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轮普通轮变换及末轮变换,首轮变换依次进行密钥加运算及字节替换运算;普通轮变换按顺序进行行移位、列混合和密钥加及字节替换四个运算;首轮变换按顺序进行行移位及密钥加运算。AES解密流程是与加密过程相反的一个过程,如图2所示,也是依次进行首轮变换、Nr-1轮普通轮变换及末轮变换,首轮变换为加密流程中末轮变换的逆运算,依次进行密钥加及逆行移位运算,普通轮变换为加密流程中普通轮变换的逆运算,包括逆字节替换、密钥加、逆列混合、逆行移位运算,末轮变化为加密流程中首轮变换的逆运算,依次进行逆字节替换及密钥加运算,其中,逆列混合、逆行移位和逆字节替换分别为加密流程中列混合、行移位和字节替换的逆运算。
[0004] 普通轮变换是AES解密运算的主要运算,因此普通轮变换电路的实现是AES解密运算电路实现的关键。T盒实现方式是目前普通轮变换电路实现中最常用的运算单元合并实现方式,T盒实现通过预计算方式将S盒、行移位和列混合等运算的运算结果预存一个存储运算单元中,以查询表的方式实现S盒、行移位和列混合合并运算功能。T盒实现减少了整个普通轮变换电路的关键路径,因此T盒实现方式主要应用在高速AES电路设计中,T盒实现方式虽然可以加快数据处理速度,但也大大增加了电路面积,如Rach等人将基于复合域S盒/逆S盒中最后一级GF(24)乘法器、映射矩阵/逆映射运算、仿射/逆仿射运算、列混合/逆列混合运算和密钥加运算等五个运算合并成一个运算单元,合并运算单元缩短了关键路径,但同时也大大增加了电路面积,现有的基于合并运算的普通轮变换电路,都是以增加电路面积为代价对关键路径长度进行了优化。

发明内容

[0005] 本发明实施例提供一种普通轮变换电路,旨在解决现有基于合并运算的普通轮变换电路,均是以增加电路面积为代价来对关键路径长度进行优化的问题。
[0006] 本发明是这样实现的,一种普通轮变换运算单元,用于AES解密,普通轮变换运算单元包括:
[0007] 合成矩阵乘法运算单元1、常数加运算单元、复合域乘法逆运算单元及合成矩阵乘法运算单元2,合成矩阵乘法运算单元1的输入端与数据输入端口连接,输出端与常数加运算单元的输入端连接,常数加运算单元的输出端与复合域乘法逆运算单元的输入端连接,复合域乘法逆运算单元的输出端及密钥输入端口与合成矩阵乘法逆运算单元2的输入端连接,合成矩阵乘法运算单元2的输出端与数据输出端口连接;
[0008] 合成矩阵乘法运算单元1,将合成矩阵 与从数据输入端口输入的数据向量 进行乘法运算,将运算结果 输出到常数加运算单元,其中,合成矩阵 的表达式具体如下所示:
[0009]
[0010] 常数加运算单元,将向量 与常数向量Ωλ=[ωλ,ωλ,ωλ,ωλ]T进行相加运算,将运算结果 输出到复合域乘法逆运算单元;
[0011] 复合域乘法逆运算单元,将向量 中的每个字节进行复合域乘法逆运算,将运算结果 输出到合成矩阵乘法运算单元2;
[0012] 合成矩阵乘法运算单元2,将数据向量 和密钥向量组合成一个列向量 并合成矩阵 与列向量
进行乘法运算,即 将运算结果 输出到数据输出端口,合
成矩阵 的表达式如下所示:
[0013]
[0014] 合成矩阵乘法运算单元1、常数加运算单元、复合域乘法逆运算单元及合成矩阵乘法运算单元2的输入端及输出端的数据位宽均为4个字节。
[0015] 本发明是这样实现的,一种普通轮变换电路,普通轮变换电路包括:
[0016] 4×(Nr-1)个如权利要求1所述普通轮变换运算单元,其中,每4个普通轮变换运算单元并联组成一个普通轮变换模块,(Nr-1)个普通轮变换模块串联组成普通轮变换电路。
[0017] 本发明是这样实现的,一种普通轮变换电路,普通轮变换电路包括:
[0018] 一个如权利要求1所述普通轮变换运算单元、及用于循环4×(Nr-1)次所述普通轮变换运算单元的循环反馈电路;
[0019] 其中,循环反馈电路由二选一选择器、寄存器1及寄存器2组成,寄存器1及寄存器2的数据位宽均为16字节,寄存器1输入端与选择器的输出端连接,寄存器1的输出端与寄存器2的输入端相连接,寄存器2的输出端与普通轮变换运算单元的数据输入端连接,普通轮变换运算单元的数据输出端与选择器的一输入端连接,选择器的另一输入端与首轮变换电路的输出端连接,普通轮变换运算单元的输出端连接还与末轮变换电路的输入端连接。
[0020] 本发明是这样实现的,一种普通轮变换电路,普通轮变换电路包括:
[0021] 由两个如权利要求1所述普通轮变换运算单元并联组成的普通轮变换模块,及循环反馈电路,循环反馈电路用于对普通轮变换模块进行2(Nr-1)次循环;
[0022] 其中,循环反馈电路由选择器、寄存器1及寄存器2组成,寄存器1及寄存器2的数据位宽均为16字节,其中,寄存器1的输入端与选择器的输出端连接,寄存器1的输出端与寄存器2的输入端连接,寄存器2的输出端与普通轮变换模块的数据输入端连接,选择器的一输入端与首轮变换电路的输出端连接,另一输入端与普通轮变换模块的输出端连接,普通轮变换模块的输出端还与末轮变换电路的输入端连接。
[0023] 本发明是这样实现的,一种普通轮变换电路,普通轮变换电路包括:
[0024] 由四个如权利要求1所述普通轮变换运算单元并联组成的普通轮变换模块,及循环反馈电路,循环反馈电路用于对普通轮变换模块进行(Nr-1)次循环;
[0025] 其中,循环反馈电路由选择器及寄存器组成,寄存器的数据位宽为16字节,其中,寄存器的输出端与普通轮变换模块的输入端连接,寄存器输入端与选择器的输出端连接,选择器的一输入端与首轮变换电路的输出端连接,另一输入端与普通轮变换模块的输出端连接,普通轮变换运算模块的输出端还与末轮变换电路的输入端连接。
[0026] 本发明是这样实现的,一种AES解密电路,AES解密电路包括:
[0027] 依次连接首轮变换电路,普通轮变换电路及末轮变换电路。
[0028] 本发明提出的用于AES解密的普通轮变换单元,通过常数矩阵的合并与合成运算,将AES解密算法中普通轮变换中的所有线性变换运算组合成两个合成矩阵,合成矩阵 与合成矩阵 可以缩短实现电路的关键路径,还能够减少电路的实现面积。

附图说明

[0029] 图1为本发明实施例提供的标准AES加密流程图;
[0030] 图2为本发明实施例提供的标准AES解密流程图;
[0031] 图3为本发明实施例提供的普通轮变换运算单元的结构示意图;
[0032] 图4为本发明实施例一提供的普通轮变换电路的结构示意图;
[0033] 图5为本发明实施例二提供的普通轮变换电路的结构示意图;
[0034] 图6为本发明实施例三提供的普通轮变换电路的结构示意图;
[0035] 图7为本发明实施例四提供的普通轮变换电路的结构示意图。

具体实施方式

[0036] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0037] AES解密电路由以下几个运算单元构成,包括:逆字节替换运算单元、密钥加运算单元、逆列混合运算单元及逆行移位运算单元。
[0038] AES轮变换是以矩阵形式进行变换操作的,解密算法将输入的128比特分组数据视为4×4字节矩阵,每个矩阵的元素为1个字节。轮变换的中间结果称之为状态矩阵为4×4字节矩阵。假设普通轮变换输入的状态矩阵为:
[0039]
[0040] AES解密过程中的各个运算详细介绍如下:
[0041] 1.逆字节替换运算单元
[0042] 逆字节替换运算单元进行逆字节替换运算,逆字节替换运算为字节替换的逆运算,也称为逆S盒运算。逆S盒运算同样是将状态矩阵中的每个字节根据字节替换表进行逆替换操作。假设经过逆S盒运算后的状态矩阵为:
[0043]
[0044] 则逆S盒运算可以表达为:
[0045]
[0046] 其中 为逆S盒运算函数。逆S盒运算是普通轮变换四个运算中唯一的非线性运算,也是运算复杂度最高的运算,因此逆S盒运算电路占据了整个AES解密电路的绝大部分电路面积和功耗。
[0047] 在逆S盒运算中,输入字节首先进行一个逆仿射运算,逆仿射运算为加密S盒仿射运算的逆运算,然后进行一个有限域GF(28)域上乘法逆运算,其表达式为:
[0048]
[0049] 其中x为输入字节,ω为字节常数,τ′为8×8bit常数矩阵,是加密S盒中常数矩阵τ的逆矩阵,τ′和ω用于完成逆仿射运算,()A-1为GF(28)域上的乘法逆运算。本发明所涉及的GF(28)域为AES密码算法中所指定的GF(28)域,其不可约多项式为
[0050] f(x)=x8+x4+x3+x+1
[0051] 在众多S盒实现方式中,基于复合域的S盒实现具有最小的电路面积。复合域S盒通过数学变换将S盒中的主要运算单元—GF(28)域乘法逆运算单元映射到复合域中实现。复合域乘法逆运算的计算复杂度要远远小于GF(28)域乘法逆的计算复杂度,因而可以大大减少S盒电路实现的硬件复杂度。
[0052] 基于复合域的逆S盒运算表达式为:
[0053]
[0054] 其中()C-1为复合域上的乘法逆运算,复合域为任意与GF(28)域同构的复合域,δ为8×8bit映射矩阵,其作用是将输入字节x从GF(28)域映射到复合域,δ'为δ逆矩阵,其作用是将复合域乘法逆运算结果从复合域映射回到GF(28)域。
[0055] 在有限域中,加法运算为位异或逻辑运算。根据x⊕y⊕0=x⊕y,因此,常数加运算+ω在硬件实现时,加0运算可以直接省略掉,加1运算可以用两种方法代替异或逻辑运算:1.任意两个变量的异或逻辑采用同或逻辑代替;2.任意两个变量的采用异或逻辑+取反逻辑实现。由于同或逻辑门与异或逻辑门的电路面积和延时几乎相同,同时相比于异或逻辑门,反向逻辑门的电路面积和延时可以忽略,因此,在逆S盒硬件实现时,常数加运算+ω电路面积和延时可以忽略不计。
[0056] 2.密钥加运算单元
[0057] 密钥加运算单元进行密钥加运算,密钥加运算与加密流程中的密钥加运算相同。假设经过密钥加运算后的状态矩阵为:
[0058]
[0059] 密钥加运算表达式为:
[0060]
[0061] 其中矩阵 为子密钥矩阵,由密钥扩展算法产生,子密钥矩阵的使用顺序与加密流程中子密钥矩阵的使用顺序相反。
[0062] 3.逆列混合运算单元
[0063] 逆列混合运算单元进行逆列混合运算,逆列混合运算为列混合的逆运算,同样可以视为状态矩阵中每一列与一个常数多项式在环 上的乘积。假设经过逆列混合运算后的状态矩阵为:
[0064]
[0065] 逆列混合运算的表达式为:
[0066]
[0067] 其中矩阵 为列混合常数矩阵,常数矩阵 中的 分别为GF(28)域上乘常数×{09}16、×{0b}16、×{0d}16、×{0e}16的矩阵形式,本发明中{}16表示常数的十六进制形式。
[0068] 4.逆行移位运算单元
[0069] 逆行移位运算单元进行逆行移位运算,逆行移位运算是行移位的逆运算,即状态矩阵的第一行不变换,第二,三,四行分别向右移位一个字节,二个字节,和三个字节。假设经过逆行移位运算后的状态矩阵为:
[0070]
[0071] 逆行移位之后的状态矩阵可以表达为:
[0072]
[0073] 逆行移位运算在硬件实现中也不需要消耗任何逻辑电路资源,只需调整总线位置即可。
[0074] 5.普通轮变换公式
[0075] 普通轮变换中的四个运算单元可以单独实现,也可以将相邻的几个运算单元合并成一个运算单元进行实现。运算单元单独实现的轮变换电路不仅浪费电路资源,且关键路径较长。本发明根据解密普通轮变换公式,通过常数矩阵的合并与合成运算,对解密普通轮变换中的线性运算进行合并。根据上述中轮变换中的各个子运算公式,可以得出解密普通轮变换公式为:
[0076]
[0077] 其中 为常数矩阵 中的行向量, 和 分别为输入的数据矩阵 和密钥矩阵 中的列向量,即:
[0078]
[0079]
[0080] 将上述公式中具有相同输入的输出变量rx,y划分一组,共可以划分成四个分组。这四个分组具有相同运算操作,并在硬件实现时具有相同的电路运算单元。每一分组输出变量都可以表达为线性方程形式:
[0081]
[0082] 上式中的输入变量和输出变量在每一分组中对应的变量为:
[0083] 组I: 组II:
[0084] 组III: 组IV:
[0085] 为了减少电路实现面积,本发明进一步将逆S盒中的GF(28)乘法逆映射到复合域中,映射后的普通轮变换分组公式为:
[0086]
[0087] 6.首轮变换公式
[0088] 根据上述各个子运算公式,同样可以得出首轮变换公式为:
[0089]
[0090] 按照普通轮变换分组,将上述首轮变换公式也可以分成四个分组,首轮变换分组公式为:
[0091]
[0092] 首轮变换分组公式中的输入变量和输出变量在每一分组中对应的变量与普通轮变换相同。
[0093] 7.末轮变换公式
[0094] 根据上述各个子运算公式,同样可以得出末轮变换公式为:
[0095]
[0096] 同样将末轮变换公式也可以分成四个分组,末轮变换分组公式为:
[0097]
[0098] 上式中的输入变量和输出变量在每一分组中对应的变量为:
[0099] 组I: 组II:
[0100] 组III: 组IV:
[0101] 上述分组中,输出变量 在每一分组中对应的变量与普通轮变换不同,输入变量 和 在每一分组中对应的变量与普通轮变换相同。将末轮变换中的逆S盒运算映射到复合域中,则末轮变换分组公式为:
[0102]
[0103] 本发明提出的用于AES解密的普通轮变换单元,通过常数矩阵的合并与合成运算,将AES解密算法中普通轮变换中的所有线性变换运算组合成两个合成矩阵,合成矩阵 与合成矩阵 可以缩短电路关键路径,还能够减少电路实现面积。
[0104] 图3为本发明实施例提供的普通轮变换运算单元的结构示意图,为了便于说明,仅示出于本发明实施例相关的部分。
[0105] 该普通轮变换运算单元,用于实现AES解密中的普通轮变换,包括:
[0106] 合成矩阵乘法运算单元1、常数加运算单元、复合域乘法逆运算单元及合成矩阵乘法运算单元2,合成矩阵乘法运算单元1的输入端与数据输入端口连接,输出端与常数加运算单元的输入端连接,常数加运算单元的输出端与复合域乘法逆运算单元的输入端连接,复合域乘法逆运算单元的输出端及密钥输入端口与合成矩阵乘法逆运算单元2的输入端连接,合成矩阵乘法运算单元2的输出端与数据输出端口连接;
[0107] 合成矩阵乘法运算单元1,其输入端及输出端的数据位宽为4个字节,将合成矩阵和数据向量 进行乘法运算, 为数据输入端口输入的数据向量,其中,合成矩阵的表达式具体如下所示:
[0108]
[0109] 其中,合成矩阵 由四个常数矩阵 组合而成,常数矩阵 为常数矩阵δ和常数矩阵τ′的乘积,即 常数矩阵δ为映射矩阵,其作用是将GF(28)域上的元素映射到复合域上。常数矩阵τ′为逆S盒运算中逆仿射运算所指定的常数矩阵。合成矩阵乘法运算单元1可以用具体公式进行表达为:
[0110]
[0111] 将运算结果 进一步输出到常数加运算单元。
[0112] 常数加运算单元,其输入端及输出端的数据位宽均为4个字节,将向量与常数向量Ωλ=[ωλ,ωλ,ωλ,ωλ]T进行相加运算,常数向量Ωλ由四个常数ωλ组合而成,常数ωλ为常数矩阵δ、常数矩阵τ'和常数ω的乘积,即ωλ=δ×τ'×ω,常数ω为逆S盒运算中逆仿射运算所指定的字节常数。常数加运算单元的具体表达形式为:
[0113]
[0114] 将运算结果 进一步输出到复合域乘法逆运算单元中。
[0115] 复合域乘法逆运算单元,其输入端及输出端的数据位宽均为4个字节,将向量中的每个字节进行复合域乘法逆运算,这里的复合域为任意与GF(28)域同构的复合域。复合域乘法逆运算单元的具体表达形式为:
[0116]
[0117] 将运算结果 进一步输出到合成矩阵乘法运算单元2。
[0118] 合成矩阵乘法运算单元2,其输入端和输出端的数据位宽为4个字节,将数据向量和密钥向量 组合成一个列向量密钥向量 与加密运算中的密钥向量Kv相同,并合成
矩阵 与列向量 进行乘法运算,即 将运算结果 输出到
数据输出端口,合成矩阵 的表达式如下所示:
[0119]
[0120] 其中,合成矩阵 由常数矩阵 组合而成,常数矩阵 为常数矩阵 和常数矩阵δ'的乘积,即 常数矩阵 为常数矩阵 和
常数矩阵δ'的乘积,即 常数矩阵 为常数矩阵 和常数矩阵δ'的乘积,即
常数矩阵 为常数矩阵 和常数矩阵δ'的乘积,即 常数矩阵
分别为GF(28)域上乘常数×{09}16、×{0b}16、×{0d}16、×{0e}16的矩阵
形式;常数矩阵δ′为映射矩阵,其作用是将复合域上的元素映射到GF(28)域上,合成矩阵乘法运算单元2可以用具体公式进行表达为:
[0121]
[0122] 本发明提出的用于AES解密的普通轮变换单元,通过常数矩阵的合并与合成运算,将AES解密算法中普通轮变换中的所有线性变换运算组合成两个合成矩阵,合成矩阵 与合成矩阵 可以缩短电路关键路径,还能够减少电路实现面积。
[0123] 串行结构和循环结构是普通轮变换电路实现的两种基本结构,基于所提出的普通轮变换运算单元采用并行处理方式构成串行结构普通轮变换电路,采用分时复用处理方式或者是分时复用与并行处理相结合的方式来构成循环结构普通轮变换电路。
[0124] 图4为本发明实施例一提供的普通轮变换电路的结构示意图,为了便于说明,仅示出与本发明实施例相关的部分。
[0125] 该普通轮变换电路,用于实现AES解密的普通轮变换,包括:
[0126] 4×(Nr-1)个普通轮变换运算单元,其中,每4个普通轮变换运算单元并联组成一个普通轮变换模块,(Nr-1)个普通轮变换模块串联组成普通轮变换电路,每个普通轮变换模块用于完成一次16字节数据的普通轮变换运算。
[0127] 图5为本发明实施例二提供的普通轮变换电路的结构示意图,为了便于说明,仅示出与本发明实施例相关的部分。
[0128] 该普通轮变换电路,用于实现AES解密的普通轮变换,包括:
[0129] 一个普通轮变换运算单元、及用于循环4×(Nr-1)次所述普通轮变换运算单元的循环反馈电路;
[0130] 其中,循环反馈电路由二选一选择器、寄存器1及寄存器2组成,寄存器1及寄存器2的数据位宽均为16字节,寄存器1输入端与选择器的输出端连接,寄存器1的输出端与寄存器2的输入端相连接,寄存器2的输出端与普通轮变换运算单元的数据输入端连接,普通轮变换运算单元的数据输出端与选择器的一输入端连接,选择器的另一输入端与首轮变换电路的输出端连接,普通轮变换运算单元的输出端连接还与末轮变换电路的输入端连接;
[0131] 普通轮变换运算单元的数据输出端将每次循环后的运算结果分别输出至选择器及末轮变换电路,选择器将前4(Nr-2)次运算结果反馈至寄存器1中,普通轮变换单元每次完成4个字节的普通轮变换运算,通过循环反馈电路的四次循环,普通轮变换单元完成一轮完整(16字节)的AES普通轮变换运算,完成一轮AES普通轮变换运算后寄存器1的数据输入到寄存器2中,寄存器2每次输出四个字节,作为普通轮变换运算单元的输入数据,进行下一次普通轮变换运算,共进行4(Nr-1)次普通轮变换运算,末轮变换电路将第(4Nr-7)~(4Nr-4)次运算结果,即第(Nr-1)轮普通轮变换运算结果作为末轮变换电路的输入数据,进行末轮变换。
[0132] 图6为本发明实施例三提供的普通轮变换电路的结构示意图,为了便于说明,仅示出于本发明实施例相关的部分。
[0133] 该普通轮变换电路,用于实现AES解密的普通轮变换,包括:
[0134] 由两个普通轮变换运算单元并联组成的普通轮变换模块,及循环反馈电路,循环反馈电路用于对普通轮变换模块进行2(Nr-1)次循环;
[0135] 其中,循环反馈电路由选择器、寄存器1及寄存器2组成,寄存器1及寄存器2的数据位宽均为16字节,其中,寄存器1的输入端与选择器的输出端连接,寄存器1的输出端与寄存器2的输入端连接,寄存器2的输出端与普通轮变换模块的数据输入端连接,选择器的一输入端与首轮变换电路的输出端连接,另一输入端与普通轮变换模块的输出端连接,普通轮变换模块的输出端还与末轮变换电路的输入端连接;
[0136] 普通轮变换运算模块的输出端将两普通轮变换运算单元每次运算结果分别输出至选择器及末轮变换电路,选择器将前2(Nr-2)次运算结果反馈至寄存器1中。普通轮变换运算模块每次完成8个字节的普通轮变换运算,通过所述循环反馈电路的两次循环,普通轮变换运算模块完成一轮完整的AES普通轮变换运算,完成一轮AES普通轮变换运算后,寄存器1的数据输入到寄存器2中,寄存器2每次输出两组四字节数据,作为普通轮变换运算模块的输入数据,分别输入两普通轮变换运算单元,进行下一次普通轮变换运算,共进行2(Nr-1)次普通轮变换运算,末轮变换电路将第(2Nr-3)~(2Nr-2)次运算结果作为输入数据,即将第(Nr-1)轮普通轮变换运算结果作为末轮变换电路的输入数据,进行末轮变换。
[0137] 图7为本发明实施例四提供的普通轮变换电路的结构示意图,为了便于说明,仅示出于本发明实施例相关的部分。
[0138] 该普通轮变换电路,用于实现AES解密的普通轮变换,包括:
[0139] 由四个普通轮变换运算单元并联组成的普通轮变换模块,及循环反馈电路,循环反馈电路用于对普通轮变换模块进行(Nr-1)次循环;
[0140] 其中,循环反馈电路由选择器及寄存器组成,寄存器的数据位宽为16字节,其中,寄存器的输出端与普通轮变换模块的输入端连接,寄存器输入端与选择器的输出端连接,选择器的一输入端与首轮变换电路的输出端连接,另一输入端与普通轮变换模块的输出端连接,普通轮变换运算模块的输出端还与末轮变换电路的输入端连接。
[0141] 普通轮变换模块每次完成16个字节的普通轮变换运算,通过循环反馈电路的一次循环,普通轮变换模块完成一轮完整的普通轮变换运算;
[0142] 普通轮变换模块的输出端将四个普通轮变换运算单元每次运算结果分别输出至选择器及末轮变换电路,选择器将前(Nr-2)次运算结果Rv通过寄存器反馈至普通轮变换模块的输入端,寄存器将四组4字节的数据分别输入四个普通轮变换运算单元的数据输入端,进行下一轮普通轮变换,共进行(Nr-1)轮普通轮变换,将第(Nr-1)次运算结果Rv输入末轮变换电路,进行末轮变换运算。
[0143] 循环结构的普通轮变换电路相比于串行结构的普通轮变换电路而言,其电路面积大大减小,因此适用于面积受限的数据处理电路中;但串行结构的普通轮变换电路采用流水线技术可以大大提高电路处理速度,适用于高速数据处理电路中,因此可根据实际需求设计普通轮变换电路的结构;
[0144] 上述实施例一、实施例二、实施例三及实施例四提供的普通轮变换电路是基于普通轮变换运算单元构成,普通轮变换运算单元通过矩阵合并与合成运算将AES密码算法中的复合域映射运算、仿射运算、列混合运算与密钥加运算合并成两个合成矩阵,矩阵 与矩阵 基于普通轮变换运算单元构成的普通轮变换电路大大减少电路的关键路径长度。公共项消除算法是线性运算单元最有效的电路优化方法,研究表明电路规模越大,电路效率越高,因此本发明通过矩阵合并与合成将若干小规模线性运算单元组合成大规模的线性运算,有利于电路优化效率的提高,减少电路实现面积。
[0145] 在本发明实施例中还提供一种AES解密电路,该AES解密电路包括:依次串联连接的首轮变换电路、普通轮加密电路、及末轮变换电路,该普通轮变换电路采用实施例一、实施例二、实施例三及实施例四提供的普通轮变换电路,而首轮变换电路及末轮变换电路均采用现有的结构。
[0146] 本发明实施例提供的AES解密电路是基于前面所述的普通轮变换电路构成,而普通轮变换电路是基于普通轮变换运算单元构成的,由于普通轮变换运算单元通过矩阵 与矩阵 将AES解密算法中的复合域映射运算、仿射运算、列混合运算与密钥加运算进行合并,在硬件实现上,该AES解密电路大大减少了电路的关键路径长度。公共项消除算法是线性运算单元最有效的电路优化方法,研究表明电路规模越大,电路效率越高,因此本发明通过矩阵合并与合成将若干小规模线性运算单元组合成大规模的线性运算,有利于电路优化效率的提高,减少AES解密电路的实现面积。
[0147] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。