一种轮计算单元以及相应的加解密算法系统
【技术领域】
1.本发明涉及加密通信技术领域,特别是涉及一种轮计算单元以及相应的加解密算法系统。
背景技术:2.aes即高级加密标准,是由美国国家标准与技术研究院发布的一种加密标准,是当今最流行的对称区块加密算法之一。
3.sm4或sms4.0是中国国家密码局于2012年3月21日发布的一种分组密码标准,在商用密码体系中,主要用于数据加密。
4.随着通信技术的发展,通信网传输速率的逐步提高,通信网的安全性越来越受到社会的关注。通信网从l3层的ip加密(ip sec)到l2层的mac加密(mac sec),通信网加密的需求向着更低的实现复杂度和成本、更低的网络延迟和更多样的加密方式的方向发展。特别是作为下一代骨干传送网,需要以更低的实现复杂度和时延来满足用户对加密需求的多样性。
5.鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
技术实现要素:6.本发明要解决的技术问题是aes加解密算法和sm4加密算法是相对独立的,兼容不同的加密模式,需要分别使用不同的独立的加密电路;高吞吐量意味着需要并行化的加密算法,加密算法实现的电路规模较大,支持多种模式加密功能使得电路规模成倍增加。
7.本发明采用如下技术方案:
8.第一方面,本发明提供了一种轮计算单元,包括输入选择模块、可重配置的s盒模块、可重配置的移位模块、可重配置的列混合模块和输出选择模块,各个模块之间依次级联耦合,其中,轮密钥处理模块跨连在所述输入选择模块与输出选择模块之间,上述模块均有sm4和aes两种工作模式。
9.优选的,所述的输入选择模块,具体包括:
10.工作于sm4模式时,在所述输入选择模块中将三组输入的x1、x2、x3和sm4轮密钥进行异或后得到的结果,与所述x1、x2和x3一同作为输出;
11.工作于aes模式时,输入选择模块的输出与输入相同,均为x0、x1、x2和x3。
12.优选的,所述输入选择模块包括选择器和输入异或模块,其中,选择器包括输入端口1和输入端口2,以及输出端口1和输出端口2,所述输入异或模块的输入端口1与所述选择器的输出端口1相连,输入异或模块的输入端口2、输入端口3、输入端口4分别用于输入数据x1、x2和x3,所述选择器的输出端口2连接轮密钥处理模块,并由所述轮密钥处理模块的与输出选择模块的第二组输入端口传递给所述输出选择模块,具体的:
13.当工作在sm4模式时,所述选择器的输入端口1用于输入x0,所述选择器的输入端口2用于sm4轮密钥;所述选择器的输出端口1用于sm4轮密钥,所述选择器的输出端口2用于
输出x0;
14.当工作在aes模式时,所述选择器的输入端口1用于输入x0,所述选择器的输入端口2用于输入aes轮密钥;其中,所述选择器的输出端口1和所述选择器的输出端口2分别用于透传所述选择器的输入端口1和所述选择器的输入端口2的数据。
15.优选的,所述可重配置的s盒包括第一s盒、第二s盒、第三s盒和第四s盒,具体的:
16.当工作于sm4模式时,第一s盒配置为sm4模式的s盒模式,其他三个s盒,第二s盒、第三s盒和第四s盒配置为线性关系;
17.工作于aes模式时,四个s盒模块均配置为aes模式的s盒模式。
18.优选的,所述可重配置的移位模块,具体包括:
19.当工作在sm4模式时,对应所述第一s盒输出的数据,按照预设位移策略得到3个移位后的位移数据,将所述位移数据与第一s盒输出的进行异或处理后,作为移位模块的一组输出,其中,从第二s盒、第三s盒和第四s盒获取的三组数据分别在移位模块中透传;
20.当工作在aes模式时,在执行完相应aes位移操作后,输出位移操作结果。
21.优选的,所述可重配置的列混合模块,具体包括:
22.当工作在sm4模式时,数据从所述列混合模块中透传输出;当工作在aes模式时,所述列混合模块生效。
23.优选的,为满足aes的异或轮密钥操作和sm4的输出时异或x0操作,所述输出选择模块有两组输入端口和一组输出端口;所述输出选择模块的第一组输入端口用于获取经由输入选择模块、s盒模块、移位模块和列混合模块依次级联处理后的4个通道数据,具体的:
24.当工作在sm4模式时,所述输出选择模块的第二组输入端口输入的是轮密钥处理模块从输入选择模块中获取的数据x0,进行两个输出选择模块的输入端口的异或操作;当工作在aes模式时,所述输出选择模块的第二组输入端口输入的是轮密钥处理模块获取的aes轮密钥。
25.本发明提出的轮计算单元,可以同时兼容sm4和aes加密算法,实现电路运行过程中的模式可配置,且复用部分电路资源,在兼容sm4和aes加密算法的前下,提高了电路资源的利用效率。
26.第二方面,本发明提供了一种加解密算法系统,包括32个如第一方面所述的轮计算单元,具体包括:
27.当用于aes加解密时,每个轮计算单元配置为aes工作模式,且第14个轮计算单元的输出为aes加解密的输出;
28.当用于sm4加解密时,每个轮计算单元配置为sm4工作模式,且第32个轮计算单元的输出为sm4加解密的输出。
29.本发明提出的加解密算法系统可以同时兼容sm4和aes加密算法,实现电路运行过程中的模式可配置,且可保证算法具备高吞吐量。
30.第三方面,本发明提供了一种加解密算法系统,包括14个如第一方面所述的轮计算单元,具体包括:
31.当用于aes加解密时,每个轮计算单元配置为aes工作模式,且第14个轮计算单元的输出为aes加解密的输出;
32.当用于sm4加解密时,每个轮计算单元配置为sm4工作模式,且第1个轮计算单元的
输入需要进行选择,第8个轮计算单元的输出也需要进行选择,经过4次轮询,第8个轮计算单元的输出作为sm4加解密的输出。
33.优选的,还包括脉动控制器设置在系统的输入端口,具体的:
34.若当前模式为sm4模式,每32个时钟周期输出连续8拍,为待加密的sm4明文数据窗口;若当前模式为aes模式,则脉动控制器处于透传状态。
35.本发明提出的加解密算法系统可以同时兼容sm4和aes加密算法,实现电路运行过程中的模式可配置,并通过流水线加串行化的设计方案,在保证aes加密算法吞吐量的前提下,实现sm4加密算法,且具备较高的加密数据的吞吐量。
【附图说明】
36.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
37.图1是本发明实施例提供的一种轮计算单元的结构示意图;
38.图2是本发明实施例提供的一种轮计算单元的结构示意图;
39.图3是本发明实施例提供的一种aes的s盒的内容示意图;
40.图4是本发明实施例提供的一种sm4的s盒的内容示意图;
41.图5是本发明实施例提供的一种线性关系s盒的内容示意图;
42.图6是本发明实施例提供的现有技术中的一种sm4加密的轮计算单元的结构示意图;
43.图7是本发明实施例提供的一种加解密算法系统的全串行结构示意图;
44.图8是本发明实施例提供的一种加解密算法系统的流水线结构示意图;
45.图9是本发明实施例提供的一种加解密算法系统的流水线+串行结构示意图;
46.图10是本发明实施例提供的一种轮计算单元的轮计算过程的流程示意图;
47.图11是本发明实施例提供的一种轮计算单元的轮计算过程的流程示意图;
48.图12是本发明实施例提供的一种加解密算法系统的计算过程的流程示意图;
49.图13是本发明实施例提供的一种加解密算法系统的计算过程的流程示意图;
50.图14是本发明实施例提供的一种加解密算法系统的计算过程的流程示意图。
【具体实施方式】
51.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
52.随着通信技术的发展,通信网的安全性越来越受到关注。aes加解密算法,是美国国家标准与技术研究院发布的高级加密算法,在诸多领域被广泛采用;sm4加密算法,是国内密码管理局发布的加密算法,主要用于无线局域网等产品的信息安全,在国内的应用越来越多。通信网面对不同的通信设备,加密需求也是多样性的;通信网带宽的增加,使得芯片处理带宽也进一步提高,处理加密功能的电路也更加庞大和复杂,使得芯片的功耗等增
大。
53.此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
54.实施例1:
55.相比较现有技术,如实施例1所展示的,在本发明实施例中重新设计了加密算法中的轮计算过程,采用了可重配置的s盒模块、可重配置的移位模块和可重配置的列混合模块(在本发明实施例中分别会被简称为s盒模块、移位模块和列混合模块),新增了输入选择模块,改造了输出异或模块。本发明实施例提出了一种轮计算单元,如图1所示,包括输入选择模块、可重配置的s盒模块、可重配置的移位模块、可重配置的列混合模块和输出选择模块,各个模块之间依次级联耦合,其中,轮密钥处理模块跨连在所述输入选择模块与输出选择模块之间,上述模块均有sm4和aes两种工作模式。
56.在本发明各实施例中,对应sm4加密算法的工作模式也被简称为sm4模式,对应的aes加密算法的工作模式也被简称为aes模式,具体的:
57.对于输入的4组x0、x1、x2、x3数据,在输入选择模块中,当工作在sm4模式时,在所述输入选择模块中将三组输入的x1、x2、x3和sm4轮密钥进行异或后得到的结果,与所述x1、x2和x3一同作为输出;当工作在aes模式时,输入选择模块的输出与输入相同,均为x0、x1、x2和x3。
58.可重配置的s盒模块包括第一s盒、第二s盒、第三s盒和第四s盒,当工作在sm4模式时,第一s盒配置为sm4模式的s盒模式,其他三个s盒,第二s盒、第三s盒和第四s盒配置为线性关系;当工作在aes模式时,四个s盒模块均配置为aes模式的s盒模式。
59.在移位模块中,当工作在sm4模式时,对应所述第一s盒输出的数据,按照预设位移策略得到3个移位后的位移数据,将所述位移数据与第一s盒输出的数据进行异或处理后,作为移位模块的一组输出,其中,从第二s盒、第三s盒和第四s盒获取的三组数据分别在移位模块中透传。
60.当工作在aes模式时,在执行完相应aes位移操作后,输出位移操作结果。以每个s盒输入数据为32bit长度为例,需要补充解释的是,当工作在sm4模式时,第一s盒输出的32-bit分别进行了2比特移位、10比特移位和24比特移位(即预设位移策略的实例表现),总共4组32bit数据进行异或操作后,得到的32bit作为移位模块的一组输出,并非来自第二s盒、第三s盒和第四s盒输出的32bit。
61.在列混合模块中,当工作在sm4模式时,数据从所述列混合模块中透传输出;当工作在aes模式时,所述列混合模块生效。
62.在输出选择模块中,为满足aes的异或轮密钥操作和sm4的输出时异或x0操作,所述输出选择模块有两组输入端口和一组输出端口;所述输出选择模块的第一组输入端口用于获取经由输入选择模块、可重配置的s盒模块、移位模块和列混合模块依次级联处理后的4个通道数据;当工作在sm4模式时,所述输出选择模块的第二组输入端口输入的是轮密钥处理模块从输入选择模块中获取的数据x0,进行两个输出选择模块的输入端口的异或操作;当工作在aes模式时,所述输出选择模块的第二组输入端口输入的是轮密钥处理模块获取的aes轮密钥。
63.本发明实施例提出的轮计算单元,可以同时兼容sm4和aes加密算法,实现电路运行过程中的模式可配置;新设计的轮计算单元,复用部分电路资源,在兼容sm4和aes加密算
法的前下,提高了电路资源的利用效率。
64.在本发明实施例中,如图2所示,所述输入选择模块包括选择器和输入异或模块,其中,选择器包括输入端口1和输入端口2,以及输出端口1和输出端口2,所述输入异或模块的输入端口1与所述选择器的输出端口1相连,输入异或模块的输入端口2、输入端口3、输入端口4分别用于输入数据x1、x2和x3,所述选择器的输出端口2连接轮密钥处理模块,并由所述轮密钥处理模块的与输出选择模块的第二组输入端口传递给所述输出选择模块,具体的:
65.当工作在sm4模式时,所述选择器的输入端口1用于输入x0,所述选择器的输入端口2用于sm4轮密钥;所述选择器的输出端口1用于sm4轮密钥,所述选择器的输出端口2用于输出x0。
66.当工作在aes模式时,所述选择器的输入端口1用于输入x0,所述选择器的输入端口2用于输入aes轮密钥;其中,所述选择器的输出端口1和所述选择器的输出端口2分别用于透传所述选择器的输入端口1和所述选择器的输入端口2的数据。
67.在本发明实施例中,选择器只工作在sm4模式下;输入异或模块也只工作在sm4下。两者可以作为输入选择模块共同描述是合理的。在x0为32bit大小数据的实例中,选择器实现了输入32bit的数据x0和32bit的sm4轮密钥的换位操作。
68.结合本发明实施例,对于第一s盒、第二s盒、第三s盒和第四s盒在实现过程中,以32bit长度作为各s盒输入数据大小举例,分别予以假设s盒模块输入的128bit为4组32bit的y0、y1、y2和y3,分别对应于第一s盒、第二s盒、第三s盒和第四s盒,设s盒模块输出的128bit为4组32bit的z0、z1、z2和z3,其中,y0、y1、y2和y3分别对应于输入选择模块的4个输出端口的输出数据,具体的:
[0069][0070][0071][0072][0073]
其中,τ
sm.4
为常规的sm4模式的s盒模式变换;τ
aes
为常规的aes模式的s盒模式变换。
[0074]
与上述阐述s盒模块类似的,在本发明实施例的所述移位模块中,输入数据为所述z0、z1、z2和z3,并且,每一组数据长度为32bit,则设中间变量为t0、t1、t2、t3、t4、t5和t6,设移位模块的输出为m0,m1,m2,m3,具体的:
[0075]
所述aes位移操作包括:t0=z3,t1=z3<<<2,t2=z3<<<10,t3=z3<<<24,t4=z2<<<8,t5=z1<<<16,t6=z0<<<24;其中,符号<<<表示位移操作,符号<<<右侧的参数值为相应的位移bit位参数值。
[0076][0077][0078][0079][0080]
与上述阐述s盒模块类似的,在本发明实施例中,涉及的所述在列混合模块中,所述列混合模块的输入为4组数据m0,m1,m2,m3,所述列混合模块的输出为4组数据n0,n1,n2,n3,则所述当工作在sm4模式时,数据从所述列混合模块中透传输出;当工作在aes模式时,所述列混合模块生效,具体表现为:
[0081][0082][0083][0084][0085]
其中,σ
aes
为常规的aes模式的列混合模块变换。
[0086]
在本发明实施例中,为满足aes模式的异或轮密钥的操作,以及sm4模式的输出时异或x0的操作,输出选择模块有两组输入接口,所述输出选择模块的输入端口1为128bit数据接口,所述输出选择模块的输入端口2为128bit轮密钥接口;一组输出端口,为128bit数据接口,具体的:
[0087]
当工作在sm4模式时,所述输出选择模块的第一组输入端口由4个32bit的n0/n1/n2/n3数据通道构成,所述输出选择模块的第二组输入端口输入的是32bitx0和96bit0;进行两个所述输出选择模块的输入端口的异或操作;当工作在aes模式时,所述输出选择模块的第一组输入端口由4个32bit的n0/n1/n2/n3数据通道构成,所述输出选择模块的第二组输入端口输入的是128bit的aes轮密钥。
[0088]
实施例2:
[0089]
本发明实施例1提供了一种轮计算单元。相比较实施例1而言,本发明实施例以实例化的,较为完整的装置结构包含的各个模块的功能特性极性详尽阐述(在本发明实施例中,直接采用对应图2的结构阐述具体方案实现细节)。在本发明实施例中,直接以输入数据x0、x1、x2、x3的大小为32bit作为实例设定,阐述相应与实施例1中关联的技术内容。本领域技术人员可知,在具体实现过程中,相应的输入数据x0、x1、x2、x3包括但不局限于上述的
32bit长度。
[0090]
在进入输入异或模块前,根据当前加密模式,对输入的32bitx0和128bit轮密钥进行数据选择与变换。如图2所示,选择器为两个输入端口和两个输出端口,输入端口1为32bit的x0输入,输入端口2为128bit输入;输出端口1为32bit输出,输出端口2为128bit输出。输入输出关系如下表所示:
[0091]
选择器端口sm4模式aes模式输入端口1(32b)32bit x032bit x0输入端口2(128b){32bit sm4.轮密钥,0,0,0}{128bit aes.轮密钥}输出端口1(32b)32bit sm4.轮密钥32bit x0输出端口2(128b){32bit x0,0,0,0}{128bit aes.轮密钥}
[0092]
sm4加密的第一步为输入异或,即将三组32bit输入的x1、x2、x3和32bit的sm4轮密钥进行异或;对于aes而言,不存在此步骤。
[0093]
当工作在aes模式时,输入异或模块的输出等于输入;当工作在sm4模式时,假设输入异或模块输入的128bit为4组32bit,即设模块输出的128bit亦为4组32bit,即为值得注意的是,此时经过选择器模块后,此时的x0已经变成了sm4的轮密钥sm4.rk,如下公式:
[0094][0095]
y2=x3[0096]
y1=x2[0097]
y0=x1[0098]
在本发明实施例中,采用可重配置的s盒模块,根据sm4或aes模式,通过软件动态的对s盒进行重配置;例如,可以复用图2中的轮密钥处理模块,使其具备有对外的控制信号交互能力,并由其对其他各个可重配置模块进行动态配置操作。
[0099]
当工作在aes模式时,四个s盒均需配置为aes的s盒,即如图3所示,在具体实现过程中,s盒中数据均采用16进制表示,例如输入“ef”,则经s盒后的值为表中第e行和第f列值,sbox(
‘
ef’)=
‘
df’。
[0100]
当工作在sm4模式时,第一s盒配置为sm4的s盒,如图4所示所示,在具体实现过程中,s盒中数据均采用16进制表示,例如输入“ef”,则经s盒后的值为表中第e行和第f列值,sbox(
‘
ef’)=
‘
84’。
[0101]
其他三个s盒,第二s盒、第三s盒、第四s盒配置为线性关系,如图5所示。
[0102]
假设s盒模块输入的128bit为4组32bit,即(y0,y1,y2,y3),设s盒模块输出的128bit亦为4组32bit,即为(z0,z1,z2,z3),如下公式所示:
[0103][0104]
[0105][0106][0107]
设计了移位模块,兼容aes的行移位操作和sm4的32bit移位操作。
[0108]
在所述移位模块中,输入数据为所述z0、z1、z2和z3,并且,每一组数据长度为32bit,则设中间变量为t0、t1、t2、t3、t4、t5和t6,设移位模块的输出为m0,m1,m2,m3。
[0109]
所述aes位移操作包括:t0=z3,t1=z3<<<2,t2=z3<<<10,t3=z3<<<24,t4=z2<<<8,t5=z1<<<16,t6=z0<<<24;其中,符号<<<表示位移操作,符号<<<右侧的参数值为相应的位移bit位参数值。
[0110][0111][0112][0113][0114]
列混合模块,为满足aes的列混合操作,相较aes加密算法中的列混合操作无改动。当工作在aes模式时,模块生效;在工作在sm4模式时,模块无效,数据透传输出。
[0115]
输出异或模块,为满足aes模式的异或轮密钥的操作,以及sm4模式的输出时异或x0的操作。输出异或模块有两组输入端口,输入端口1为128bit数据接口,输入端口2为128bit轮密钥接口;一组输出端口,为128bit数据接口。在输入选择模块的作用下,aes模式时,输入端口2输入的是128bit的aes轮密钥;sm4模式时,输入端口2输入的是32bit x0和96bit 0。进行两个输入端口的异或操作后,输出结果可以满足其算法要求。
[0116]
实施例3:
[0117]
本发明实施例是以实施例2中相应的轮计算单元工作在aes模式下为例,说明重新设计的加密算法中的轮计算过程。在本发明实施例中,所述轮计算单元也被称呼为sm4+aes兼容的轮计算单元。相应的,在各个模块中,数据输入输出的标识方式沿用实施例1和实施例2中对应方式。如图2和图10所示,包括:
[0118]
在步骤201中,将输入的128bit明文数据分为4组32bit数据,分别为{x0,x1,x2,x3}输入sm4+aes兼容的轮计算单元输入端口(即实施例1中输入选择模块的输入端口),同时将当前128bit aes.rk轮密钥输入模块(即实施例1中输入选择模块)。
[0119]
在步骤202中,选择器工作模式预先被配置为aes模式,此时选择器的输出端口1为32bit x0,输出端口2为128bit的aes轮密钥aes.rk。
[0120]
在具体实现过程中,通常一次即输入128bit数据。只不过将这128数据分为了4组,其中x0组的数据需要进入这个模块。
[0121]
在步骤203中,输入异或模块预先配置为aes模式,此时输入异或模块透传,输入异或模块的输入为{x0,x1,x2,x3},输入异或模块的输出为{y0,y1,y2,y3},此时,{y0,y1,y2,y3}与{x0,x1,x2,x3}相同。
[0122]
在步骤204中,s盒模块中所有的s盒预先配置为aes的s盒,128bit数据共使用并行的16个s盒以8bit为单位,进行查表,假设此时s盒模块的输入为{y0,y1,y2,y3},则查表输出即为模块的输出为{z0,z1,z2,z3}。
[0123]
在步骤205中,移位模块预先配置为aes模式,依次对4个32bit数据进行移位,分别循环左移0bit、8bit、16bit、24bit,假设此时模块的输入为{z0,z1,z2,z3},则移位模块的输出为{m0,m1,m2,m3}。
[0124]
在步骤206中,行列混合模块预先配置为aes模式,按照aes加密算法对输入4*32bit数据进行列混合,假设此时模块的输入为{m0,m1,m2,m3},则移位模块的输出为{n0,n1,n2,n3}。
[0125]
在步骤207中,在输出选择模块中进行输出异或处理,分别将输入的4*32bit数据{n0,n1,n2,n3},与128bit轮密钥进行按位异或,计算结果为{p0,p1,p2,p3}。此时输出的4*32bit数据{p0,p1,p2,p3}为一次轮计算结果输出。
[0126]
实施例4:
[0127]
本发明实施例是以实施例2中相应的轮计算单元工作在sm4模式下为例,说明重新设计的加密算法中的轮计算过程。在本发明实施例中,所述轮计算单元也被称呼为sm4+aes兼容的轮计算单元。相应的,在各个模块中,数据输入输出的标识方式沿用实施例1和实施例2中对应方式。如图2和图11所示,包括:
[0128]
在步骤301中,将输入的128bit明文数据分为4组32bit数据,分别为{x0,x1,x2,x3}输入sm4+aes兼容的轮计算单元输入端口,同时将当前32bit轮密钥sm4.rk进行修改,添加96bit 0作为低位,{sm4.rk,0,0,0}作为轮密钥输入模块。
[0129]
在步骤302中,选择器工作模式预先被配置为sm4模式,此时选择模块输出端口1为32bit的sm轮密钥sm4.rk,输出端口2为128bit的{x0,0,0,0}。
[0130]
在步骤303中,输入异或模块预先配置为sm4模式,此时输入异或模块的输入为{sm4.rk,x1,x2,x3},模块的输出为{y0,y1,y2,y3},其中,{y0,y1,y2,y3}对应内容表现为{y,x1,x2,x3},所述y是所述输入选择模块中将三组32bit输入的x1、x2、x3和32bit的sm4轮密钥进行异或后得到的结果。
[0131]
在步骤304中,s盒模块中的第一s盒预先配置为sm4盒,其他三组可变s盒为输入等于输出,进行查表,假设此时模块的输入为{y0,y1,y2,y3},则查表输出即为模块的输出为{z0,z1,z2,z3},其中,通过步骤303中内容推导此处可知悉,其中,z1,z2,z3分别对应为x1,x2,x3,而相应的z0可以理解为上述y在第一s盒中通过查表得到。
[0132]
在步骤305中,移位模块预先配置为sm4模式,依次最高位32bit数据进行移位,分别循环左移0bit、2bit、10bit、24bit,假设此时模块的输入为{z0,z1,z2,z3},则移位模块的输出为{m0,m1,m2,m3},其中,m1,m2,m3分别对应为x1,x2,x3,而其中的m0则是将其中的z0分别循环左移0bit、2bit、10bit、24bit得到的结果。
[0133]
在步骤306中,行列混合模块预先配置为sm4模式,在sm4模式下,此列混合模为透传,假设此时模块的输入为{m0,m1,m2,m3},则移位模块的输出为{n0,n1,n2,n3},其中,{n0,
n1,n2,n3}与{m0,m1,m2,m3}的内容是相同的。
[0134]
在步骤307中,进行输出异或处理,分别将输入的4*32bit数据{n0,n1,n2,n3},与128bit{x0,0,0,0}进行按位异或,计算结果为{p0,p1,p2,p3}。此时输出的4*32bit数据{p0,p1,p2,p3}为一次轮计算结果输出。
[0135]
实施例5:
[0136]
本发明基于实施例1与实施例2所描述的轮计算单元的基础上,提供了一种加解密算法系统,具体包括:
[0137]
所述加解密系统包括一个或多个如实施例1所述的轮计算单元,具体包含轮计算单元的数量根据解密系统所采用的计算结构决定。在本发明实施例中,所述轮计算单元也被称呼为sm4+aes兼容的轮计算单元。
[0138]
所述加解密算法系统可采用的计算结构有串行化计算结构、流水线计算结构以及流水线加串行化计算结构等,具体使用何种计算结构由本领域技术人员根据加解密算法系统在实际应用场景下的需求决定。
[0139]
其中,采用串行化计算结构,具有资源最小化的特点,其中,基于单个轮计算单元,对数据进行迭代计算,如图7所示;在初始数据载入sm4+aes轮计算单元后,其后续将轮计算单元的输出作为轮计算单元的输入,进行迭代计算,经过一定的轮次的迭代后,轮计算单元的输出即为加密结果。算法与迭代次数如下表所示:
[0140]
加密算法迭代次数aes-12810aes-25614sm432
[0141]
串行化计算结构应用在电路规模严格限制,对吞吐量或者处理能力要求不高的应用场景。
[0142]
而流水线计算结构,则具有吞吐量最大的特点,通过复用sm4+aes兼容的轮计算单元和sm4轮计算单元,对数据进行加密见,如图8所述;aes加密算法最多需要14轮迭代,sm4算法需要固定32轮迭代,要实现全流水线的加密结构,需要有32个轮计算单元。由于aes和sm4公用的电路只有前14轮,从优化资源角度考虑,本发明实施例还提出了一种异构型流水线结构,前14轮采用sm4+aes兼容的轮计算单元,后18路采用sm4轮计算单元(如图6所述,此处的sm4轮计算单元为现有技术)。将第14轮计算结果输出作为aes加密结算结果输出,将第32轮输出作为sm4加密计算结果输出。
[0143]
流水线计算结构应用在对吞吐量需求大于电路规模的场景下,即要优先保证aes和sm4的处理能力。
[0144]
流水线加串行化计算结构,具有均衡电路资源和吞吐量的特点,通过复用sm4+aes兼容的轮计算单元,流水线最后轮输出aes加密结果,使用前部分轮计算单元进行串行;流水线结构使用了额外的18轮sm4的轮计算单元,若电路工作在aes模式下时,该部分电路存在资源浪费的情况。从吞吐量和电路规模的均衡角度,进而提出了流水线加串行化的计算结构,例如使用14个sm4+aes兼容的轮计算单元,或者使用14个sm4+aes兼容的轮计算单元加上2个sm4的轮计算单元。
[0145]
以只使用14个sm4+aes兼容的轮计算单元结构为例,如图9。当工作在aes模式时,
例如进行aes-256加密,总共需要14轮计算,故第14轮计算输出即为aes加密输出。当工作在sm4模式时,总共需要32轮计算,将第8轮计算结构迭代回至第一轮输入,进行共4此迭代后,第8轮计算结构的输出为sm4加密结果输出。还需要使用额外的脉动控制电路,将输入数据进行整流,每次输出连续8拍输出,输出间隔为32拍。
[0146]
此时,aes的处理吞吐量为100%,sm4的处理吞吐量为25%。
[0147]
以使用14个sm4+aes兼容的轮计算单元结构和2个额外的sm4轮计算结构为例。当工作在aes模式时,例如进行aes-256加密,总共需要14轮计算,故第14轮计算输出即为aes加密输出。当工作在sm4模式时,总共需要32轮计算,将第16轮计算结构迭代回至第一轮输入,进行共2此迭代后,第16轮计算结构的输出为sm4加密结果输出。脉动控制电路,将输入数据进行整流,每次输出连续16拍输出,输出间隔为32拍。
[0148]
此时,aes的处理吞吐量为100%,sm4的处理吞吐量为50%。
[0149]
若对吞吐量和电路规模要求均比较严格的情况下,可以考虑此流水线加串行化计算结构进行权衡设计。
[0150]
实施例6:
[0151]
本发明实施例是以实施例5中相应的加解密算法系统下说明串行化计算过程。如图7和图12所示,包括:
[0152]
在步骤401中,根据当前的加密模式对选择器、输入异或模块、可重配置的s盒的内容、可重配置的移位模块、可重配置的列混合模块和输出选择模块进行模式配置。
[0153]
在步骤402中,将待加密的128bit明文数据和对应的轮密钥导入输入选择模块。
[0154]
在步骤403中,将输出选择模块计算输出的128bit数据回送至选择器和输入异或模块,作为下一轮轮计算的输入;并且,更新当前轮轮计算的轮密钥输入到选择器。
[0155]
在步骤404中,一直重复步骤403,直到迭代次数等于加密算法中的轮数,此时,将输出选择模块的输出作为最终的加密结果进行输出。
[0156]
实施例7:
[0157]
本发明实施例是以实施例5中相应的加解密算法系统下说明流水线计算过程。在本发明实施例中,将兼容sm4和aes加密算法的装置简称为sm4+aes轮计算单元,其中,不同的个体又以相应配编号的方式呈现,例如sm4+aes轮计算单元0和sm4+aes轮计算单元13。如图8和图13所示,包括:
[0158]
在步骤501中,根据当前的加密模式对输入选择模块、可重配置的s盒的内容、可重配置的移位模块、可重配置的列混合模块和输出选择模块进行模式配置。
[0159]
在步骤502中,将待加密的128bit明文数据输入如sm4+aes轮计算单元0,对应的轮密钥输入sm4+aes轮计算单元0~13,以及sm4轮计算单元14~31。
[0160]
在步骤503中,将其他各轮对应的轮密钥分别输入如附图8所示的对应轮计算单元。
[0161]
在步骤504中,若配置为aes-256模式,则在第14轮输出加密结果;若配置为aes-128模式,则在第10轮输出加密结果。
[0162]
在步骤505中,若配置为sm4模式,则在最后第32轮输出加密结果。
[0163]
实施例8:
[0164]
本发明实施例是以实施例5中相应的加解密算法系统下以14个sm4+aes轮计算单
元的结构,说明流水线+串行化计算过程。在本发明实施例中,将兼容sm4和aes加密算法的装置简称为sm4+aes轮计算单元,其中,不同的个体又以相应配编号的方式呈现,例如sm4+aes轮计算单元0和sm4+aes轮计算单元13。此时假定sm4加密进行4次串行化操作。如图9和图14所示,包括:
[0165]
在步骤601中,根据当前的加密模式对输入选择模块、可重配置的s盒的内容、可重配置的移位模块、可重配置的列混合模块和输出选择模块进行模式配置。具体的,对图9中所有的sm4+aes轮计算单元进行上述步骤601的初始化。
[0166]
在步骤602中,若当前加密模式为sm4模式,则需要配置脉动控制器,每32个时钟周期输出连续8拍,为待加密的sm4明文数据窗口。若当前模式为aes模式,则脉动控制器处于透传状态。脉动控制器的输出为待加密的明文数据。
[0167]
在步骤603中,若当前模式为aes模式,将待加密的128bit明文数据输入如附图9所示的sm4+aes轮计算单元0,对应的轮密钥输入如附图9所示的sm4+aes轮计算单元0-13。
[0168]
在步骤604中,将其他各轮对应的轮密钥分别输入如图9所示的对应各sm4+aes轮计算单元。
[0169]
在步骤605中,若配置为aes-256模式,则在第14轮计算输出加密结果(即将图9中sm4+aes轮计算单元13的输出作为加密结果);若配置为aes-128模式,则在第10轮输出加密结果(即将图9中sm4+aes轮计算单元9的输出作为加密结果)。
[0170]
在步骤606中,若当前模式为sm4模式,将待加密的128bit明文数据和前8轮对应的轮密钥输入如附图9所示的sm4+aes轮计算单元0~7。
[0171]
在步骤607中,将sm4+aes轮计算单元7输出的数据迭代回至sm4+aes轮计算单元0,将9~16轮对应的密钥输入如附图9所示的sm4+aes轮计算单元0~7。
[0172]
在步骤608中,将sm4+aes轮计算单元7输出的数据迭代回至sm4+aes轮计算单元0,将17~24轮对应的密钥输入如附图9所示的sm4+aes轮计算单元0~7。
[0173]
在步骤609中,将sm4+aes轮计算单元7输出的数据迭代回至轮计算单元0,将25~32轮对应的密钥输入如附图9所示的sm4+aes轮计算单元0~7。
[0174]
在步骤610中,将sm4+aes轮计算单元7的计算结果进行输出,输出的sm4加密结果。
[0175]
实施例9:
[0176]
本发明基于实施例5所描述的轮计算单元的基础上,提供了一种加解密算法系统,所述加解密算法系统采用流水线计算结构,如图8所示,包括32个如实施例1所述的轮计算单元,具体包括:
[0177]
当用于aes加解密时,每个轮计算单元配置为aes工作模式,且第14个轮计算单元的输出为aes加解密的输出。
[0178]
当用于sm4加解密时,每个轮计算单元配置为sm4工作模式,且第32个轮计算单元的输出为sm4加解密的输出。
[0179]
所述加解密算法系统在同时兼容sm4和aes加解密算法的基础上,还保证了算法的吞吐量。
[0180]
实施例10:
[0181]
本发明基于实施例5所描述的轮计算单元的基础上,提供了一种加解密算法系统,所述加解密算法系统采用流水线加串行化计算结构,如图9所示,包括14个如实施例1中所
述的轮计算单元,具体包括:
[0182]
当用于aes加解密时,每个轮计算单元配置为aes工作模式,且第14个轮计算单元的输出为aes加解密的输出。
[0183]
当用于sm4加解密时,每个轮计算单元配置为sm4工作模式,且第1个轮计算单元的输入需要进行选择,第8个轮计算单元的输出也需要进行选择,经过4次轮询,第8个轮计算单元的输出作为sm4加解密的输出。
[0184]
所述加解密系统还包括脉动控制器设置在系统的输入端口,具体的:
[0185]
若当前模式为sm4模式,每32个时钟周期输出连续8拍,为待加密的sm4明文数据窗口;若当前模式为aes模式,则脉动控制器处于透传状态。
[0186]
本实施例通过轮询的形式,避免了电路资源的浪费。且在保证aes加密算法吞吐量的前提下,实现sm4加密算法,具备较高的加密数据的吞吐量。
[0187]
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0188]
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁盘或光盘等。
[0189]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。