结合AES和SM4加密和解密的高速电路的制作方法
未命名
08-27
阅读:107
评论:0

结合aes和sm4加密和解密的高速电路
背景技术:
1.加密算法(也被称为“密码”)被用来对数据进行加密和解密。现代加密算法对非常大的数(其被用作密码密钥)执行计算以维持消息的完整性、保密性和真实性。消息可以是单个位或位块的形式。密码可以使用对称密钥(其中相同的密钥被用来对消息进行加密和解密)或非对称密钥(其中不同的密钥被用于加密和解密)。使用对称密钥的密码尤其包括aes(高级加密标准)和sm4(用于无线lan wapi的中国国家标准)。aes在跨多个特征和aes加速硬件的许多平台上得到广泛支持。
2.诸如aes和sm4之类的大多数现代对称密码通常被设计为一系列轮次,每个轮次由一系列线性操作组成,随后是由也被称为“替换盒”(s-box)的查找表所实现的可逆非线性变换,可能随后是附加的线性操作。s-box变换通常被应用于输入的每8位块。然而,aes和sm4密码涉及不同的轮次数目、不同的s-box以及需要单独的硬件实现或固件代码的旋转、缩放和混合操作。
3.密码可以用硬件、软件、或者硬件和软件的组合来实现。提出了硬件实现来加速aes所需的计算。需要aes和sm4密码的高效、统一的硬件实现。
附图说明
4.在附图中,在各个附图中被图示的每个相同或几乎相同的组件由相同的附图标记来表示。为了清楚起见,不是每个组件都在每个附图中被标记。在附图中:
5.图1是图示了根据一些实施例的统一密码硬件加速器的s-box电路的框图;
6.图2是根据一些实施例的执行aes和sm4加密和解密的统一硬件加速器的框图;
7.图3是根据一些实施例的执行aes和sm4加密和解密的硬件处理管线的框图;
8.图4至图7是根据一些实施例的硬件处理管线的各个级的框图;
9.图8是根据其他实施例的执行aes和sm4加密和解密的硬件处理管线的框图;
10.图9是图8的硬件处理管线的一个级的一些实施例的框图;
11.图10是图示了包括执行aes和sm4加密和解密的统一硬件加速器的处理系统的一个实施例的框图;
12.图11是图示了用于生成电路组件的表示的处理系统的一个实施例的框图。
具体实施方式
13.用于实现诸如aes和sm4之类的块密码的先前解决方案包括使用软件/微代码来实现它们或者针对每个个体块密码设计专用硬件加速器。这种软件/微代码实现通常不能满足期望的性能要求。同时,在电路中包括用于每个块密码的专用硬件加速器在硅面积和泄漏功率方面增加了产品成本,并且还带来了对重要的设计和验证努力的需要。在一个方面中,本公开提出一种统一硬件加速器以允许在对性能影响最小的情况下针对aes和sm4密码的硬件加速。
14.aes和sm4密码在若干方面是类似的。例如,两种密码都利用对称的秘密密钥来执
行对由相同长度的伽罗瓦域gf(28)(即,有限域)表示的数据的加密和解密,区别仅在于它们相应的多项式的定义。此外,两种密码都对数据的16字节块(128位块)进行操作,并执行多个轮次(对于aes为10到14个轮次,对于sm4为32个轮次),其中每个轮次包括字节替换操作和置换操作,以在加密或解密期间变换输入数据。字节替换操作通过模糊密钥值和被加密或解密的信息之间的关系来执行“混淆”操作,并且置换操作通过混洗、调换和混合密钥值和被加密或解密的输入数据的位来执行“扩散”操作。解密类似于加密,并且aes解密涉及对被用于加密的操作进行反转。
15.字节替换操作通常使用被称为“s-box”的查找表来实现。aes密码使用两个256字节的s-box分别用于加密和解密。sm4密码使用一个s-box用于加密或解密,并且使用扩展加密密钥的密钥调度算法从加密密钥生成32位的轮次密钥。
16.所公开的实施例描述了用于aes和sm4密码的统一硬件加速器。所公开的实施例使用公共s-box表来节省面积并降低成本。预期所公开的统一aes/sm4加密/解密硬件加速器将比使用单独的aes/sm4实现提供显著的面积改进。
17.虽然aes和sm4密码可以执行类似的字节替换操作(s-box),但是它们使用不同的伽罗瓦域gf(28)约简多项式。aes密码可以使用gf(28)约简多项式x8+x4+x3+x+1,而sm4密码可以使用gf(28)约简多项式x8+x7+x6+x5+x4+x2+1。约简多项式的选择区分了用于伽罗瓦域乘法和逆计算的逻辑,因此需要使用用于aes和sms4硬件实现的单独电路。针对aes和sms4实现单独的专用硬件加速器是笨拙和低效的,并且可能导致显著的面积和功率开销。
18.本文所描述的实施例通过避免用于aes和sm4密码中的每一个密码的单独的硬件来减小电路面积。相反,所公开的实施例使用单个统一硬件加速器来解决aes/sm4加密和解密。aes和sm4密码包括执行s-box操作的公共主要组件,s-box操作可以包括大多数面积和性能关键操作。
19.图1是图示了根据一些实施例的统一密码硬件加速器的s-box电路的框图。s-box电路包括分别接收来自aes数据路径的数据块sbia和来自sm4数据路径的数据块sbi的两个输入。s-box电路还包括分别向aes数据路径和sm4数据路径提供数据块sboa、sbos的两个输出。输入sbia连接到仿射变换电路ast,以用于将aes数据块sbia从由aes s-box定义的aes加密或解密域变换到由sm4 s-box定义的sm4域。s-box电路还包括多路复用器mx,用于选择变换电路ast的输出和输入数据块sbi中的一者或另一者。多路复用器mx由用于选择输入数据路径aes或sm4的信号a-s来控制。多路复用器mx的输出连接到sm4 s-box smbx。s-box smbx的输出提供sm4输出数据块sbo,并由仿射变换电路sat进一步处理以用于将由s-box smbx产生的输出数据块从sm4域变换到aes加密或解密域。变换电路sat的输出提供aes输出数据块sboa。
20.仿射变换电路ast、sat接收指定要被执行的操作(加密或解密)的信号e-d,要被应用于电路ast、sat的输入数据的仿射变换对于加密和解密是不同的。
21.根据一些实施例,数据sbia、sbis、sboa、sbos是字节,并且仿射变换由下式来定义:
22.s=m
·
b+c,
ꢀꢀ
(1)
23.其中s是仿射变换的输出字节,m是8
×
8位矩阵,b是仿射变换操作的输入字节,并且c是定义平移向量的常数字节。由电路ast执行的仿射变换在至少一个示例中如下:
[0024][0025]
对于加密,其中bi(i=0
…
7)是字节b的位,并且si(i=0
…
7)是输出字节s的位,并且对于解密:
[0026][0027]
由电路sat执行的仿射变换在等式(2)和(3)的示例中如下:
[0028][0029]
对于加密以及对于解密:
[0030][0031]
可以发现其它矩阵m、m1和常数字节c、c1将数据从aes伽罗瓦域变换到sm4伽罗瓦域并且反向地变换。
[0032]
图1的电路可以被复制以同时处理例如32或128位的数据块的每个字节。
[0033]
图2是图示了根据一些实施例的密码硬件加速器hwa的框图。密码加速器hwa包括执行轮次处理和密钥扩展(也被称为“密钥调度”)的组合aes/sm4轮次模块crm。aes密码在每一轮次执行用于数据处理的16个s-box操作和用于密钥调度的其它s-box操作。sm4在每一轮次执行用于数据处理的4个s-box操作和用于密钥调度的另外4个s-box操作。轮次模块crm被配置为执行16个s-box操作,使得其可以执行两个轮次的sm4密码和sm4密钥调度以及一个aes轮次。如图2中所示,密码加速器hwa接收输入数据块di和密钥块ki,并输出数据块do和轮次密钥块ko。密码加速器hwa还包括多路复用器mx1、mx2,多路复用器mx1、mx2一方面在输入数据块di和密钥块ki之间并且另一方面在输出数据块do和输出密钥块ko之间选择
要被提供给轮次模块crm的数据。
[0034]
轮次模块crm和多路复用器mx1、mx2由控制电路ctl管理,该控制电路ctl接收用于选择要被执行的密码aes或sm4的第一信号a-s和用于选择加密或解密的第二信号e-d。控制电路ctl可以接收第三信号,以指定在aes密码的情况下输入密钥块ki是用128位还是用256位编码。控制电路ctl管理要被执行的轮次数目(即,激活轮次模块crm的次数)。为此目的,控制模块ctl向轮次模块crm和多路复用器mx1、mx2提供控制信号。多路复用器mx1、mx2由控制电路控制,以在第一轮次将输入数据块di和密钥ki提供给轮次模块crm。在后续轮次,输出数据块do和密钥ko被提供给轮次模块crm的输入。
[0035]
鉴于随后的解密sm4和aes密码,该密码使用当数据块被加密时生成的最后一个轮次密钥以对该数据块进行解密,可以由轮次模块crm输出或存储被用于加密的最后一个轮次密钥ko。
[0036]
代替将轮次模块crm的输出轮次到其输入,可以在硬件管线中复制轮次模块crm,该硬件管线接收要被加密或解密的数据块di和要被使用的密钥块ki,并分别提供加密、解密的数据块do。
[0037]
图3是图示了根据一些实施例的统一硬件加速器hpp的处理管线的框图。硬件加速器hpp包括轮次级crm0-crm16、触发器组或128位寄存器ff1-9、执行组合两个128位数据块的逐位异或运算的xor运算器xg、以及多路复用器mx4、mx5。
[0038]
根据一些实施例,轮次级crm1-crm14中的每一个轮次级执行一个aes处理轮次和两个sm4处理轮次。轮次级crm15和crm16中的每一个轮次级执行两个sm4处理轮次。硬件加速器hpp接收由xor运算器xg组合的输入数据块di和密钥块ki。该操作对应于aes密码的第一“加法轮次密钥”。在第一处理周期期间,数据块di和密钥块ki也被存储在相应的寄存器1、2中。在第一处理周期期间,运算器xg的输出也被存储在寄存器3中。在该第一处理周期期间,密钥块ki由第一轮次级crm0处理以提供用于sm4密码的第一轮次密钥。寄存器1-3和轮次级crm0的相应输出连接到第二轮次级crm1。轮次级crm1至crm13级联连接。
[0039]
轮次级crm9的aes数据块输出还连接到级联连接的四个寄存器4-7的群组中的第一寄存器4。轮次级crm13的aes数据块输出与寄存器7的输出一起连接到多路复用器mx4的相应输入。多路复用器mx4的输出连接到轮次级crm14的aes数据块输入。轮次级crm13的其它输出连接到轮次级crm14的对应输入。轮次级crm14的aes数据块输出还连接到级联连接的两个寄存器8、9的群组中的第一寄存器8。轮次级crm14的sm4数据和密钥输出连接到轮次级crm15的对应输入,并且轮次级crm15的sm4数据和密钥输出连接到轮次级crm16的对应输入。寄存器9的输出和轮次级crm16的sm4数据输出连接到多路复用器mx5的相应输入,多路复用器mx5向硬件加速器hpp的数据输出提供输出数据块do。多路复用器mx4由信号k256控制以用于选择aes密钥的大小128或256位。多路复用器mx5由选择要被执行的密码aes或sm4的信号a-s来控制。
[0040]
级crm1-crm9执行aes密码的前9个轮次和sm4密码的前18个轮次。如果aes密码被选择来执行10个轮次,那么密钥块ki是128位块(信号a-s被设置为“aes”并且信号k256被设置为例如0),并且级crm9的aes数据输出被连续地存储在寄存器4-7中并且由多路复用器mx4提供给级crm14。如果sm4密码被选择(信号a-s被设置为“sm4”),则级crm10至crm13连续地执行另外8个轮次的sm4密码。如果aes密码被选择来执行14个轮次,那么密钥块ki是256
位的块(信号a-s被设置为“aes”并且信号k256被设置为例如1),并且级crm10至crm13执行另外4个轮次的aes密码,级crm13的aes数据输出通过多路复用器mx4而被提供给级crm14。取决于由信号a-s和k256的值所定义的情况,级crm14执行最后(第10或第14)轮次的aes密码或第28轮次的sm4密码。由级crm14提供的aes输出数据块被连续地存储在寄存器8、9中,而级crm15和crm16执行sm4密码的最后4个轮次(第29至第32)。
[0041]
图4是图示了根据一些实施例的一个轮次级crmx的框图。轮次级crmx可以是轮次级crm2到crm14之一。轮次级crmx包括用于要由sm4密码处理的轮次密钥块rkis和数据块dis的128位输入、用于aes轮次密钥块rkia的256位输入、以及用于要由aes密码处理的数据块dia的128位输入。
[0042]
轮次级crmx包括sm4轮次密钥调度电路,其包括:执行逐位xor运算的xor运算器xg1、xg2、xg3和xg4、多路复用器mx6和mx7、触发器或寄存器10和12、存储128位块的寄存器10、存储32位字的寄存器12、两组两个左旋转器13位的lr13和23位的lr23、以及两组四个s-box smb1、smb2。sm4轮次密钥块的三个最低有效32位字与32位常数字rca一起进行xor。由运算器xg1提供的32位字通过多路复用器mx6被传输到一组四个s-box sbm1,每个s-box接收从该字中提取的相应字节。由s-box操作产生的32位输出字被提供给两组左旋转器lr13和lr23之一的输入,并且被提供给xor运算器xg2的输入,xor运算器xg2接收左旋转器lr13和lr23的输出以及128位轮次密钥块rki的位[127:96]。并行地,轮次密钥块rki被排列为使得其位[95:0]被移位到位位置[127:32],并且所排列的轮次密钥块的位[31:0]被设置为由运算器xg2提供的32位字,重新排列的轮次密钥块被存储在寄存器10中。然后,由xor运算器xg3将重新排列的轮次密钥块的32位字[95:64]、[63:32]、[31:0]与32位常数字rcb一起进行xor。常数rca和rcb取决于当前执行的轮次数目和当前执行的密码操作——加密或解密,如由信号e-d所选择的。在运算器xg3的输出处的32位字通过多路复用器mx7被提供给第二组四个s-box smb2。由s-box组smb2提供的32位字被存储在寄存器12中,然后直接地并分别通过第二组两个左旋转器lr13和lr23而被提供给xor运算器xg4。寄存器10中的轮次密钥块的位[127:96]也被提供给运算器xg4的输入。并行地,寄存器10中的128位密钥块被排列为使得位[95:0]被移位到位位置[127:32],位[31:0]被设置为由运算器xg4提供的32位字,由此获得的128位字在下一sm4轮次中的轮次级crmx的输出处被提供为新的128位轮次密钥块rko。
[0043]
根据sm4规范,要由轮次级crmx用于加密的常数rca和rcb分别等于用于加密的32位常数字ck
2x
和ck
2x+1
,其中x是轮次级crmx的编号,并且
[0044]
ck
i,j
=(4i+j)x 7(mod 256),ck
i,j
是常数字cki的第j字节,其中j=0,1,2和3,并且i=0,1,
…
,31。
[0045]
对于解密,要由轮次级crmx使用的常数rca和rcb分别是ck
2(17-x)+1
和ck
2(17-x)
。轮次级crmx还可以被配置为接收轮次索引x,并且计算作为信号e-d的函数的常数值rca和rcb。
[0046]
总之,由运算器xg1和xg2以及s-box组smb1执行的处理对应于一个轮次的sm4密钥调度,而由运算器xg3和xg4以及s-box组smb2执行的处理对应于下一个轮次的sm4密钥调度。
[0047]
轮次级crmx还包括sm4轮次处理电路,该电路包括xor运算器xg5、xg6、xg7、xg8、多路复用器mx8和mx9、触发器或寄存器14和15(寄存器15存储128位块,而寄存器14存储一个
mx9、s-box组smb1-smb4以及寄存器11-14。
[0052]
在轮次级crmx的输入处接收的、要被解密的128位数据块dia首先由电路imxc和ishr连续地处理,然后由仿射变换电路astd变换。电路astd被配置为将仿射变换m
·
b+c(例如,根据等式(3))应用于由电路ishr提供的128位数据块的每个字节。然后,由电路astd提供的128位数据块的32位字通过多路复用器mx6-mx9被传输和分派到s-box组smb1-smb4。由s-box组smb1-smb4提供的32位字分别被存储在寄存器11-14中,然后以128位数据块的形式而被提供给仿射变换电路satd。电路satd被配置为将仿射变换m1
·
b+c1(例如,根据等式(5))应用于接收到的数据块的每个字节。由电路satd提供的128位数据块和由电路rks提供的128位轮次密钥rka由运算器xg9进行组合,运算器xg9输出128位数据块do。可以在运算器xg9的输入处提供多路复用器mx13,以根据选择加密或解密的信号e-d来选择电路mxc的输出或电路satd的输出。
[0053]
因此,轮次级crmx包括16个s-box(或四组四个s-box),使得它可以执行两个轮次的sm4密码和sm4密钥调度或者一个轮次的aes密码,密码被同时应用于128位输入数据块dis或dia的四个32位字。由于寄存器10-15的存在,由于任何输入到输出路径穿过一个寄存器10-15,所以轮次级crmx在一个时钟周期中产生输出数据。结果,硬件处理管线hdd在17个时钟周期中针对sm4和aes密码加密或解密128位数据块(在级crm0或寄存器1-3中的一个周期和在轮次级crm1-crm16中的16个周期)。此外,硬件处理管线hdd可以在每个时钟周期处开始数据块加密或解密。
[0054]
根据一个实施例,信号a-s、e-d和k256在每个轮次被存储,使得在每个时钟周期处开始的密码过程(sm4/aes、密钥大小128/256位、加密/解密)也可以在每个时钟周期处改变。
[0055]
轮次级crm(图2)可以通过从轮次级crmx导出的轮次级来实现,并且还包括由轮次数信号激活的导出路径,当轮次数目被设置为1时,该导出路径旁路电路imxc,当轮次数量信号被设置为10或14时,该导出路径旁路电路mxc,并且为常数数据rca、rcb提供与轮次数目相关的值。根据一些实施例,轮次级crmx包括多路复用器,该多路复用器根据指示第一aes轮次当前是否被执行的信号而旁路电路imxc。多路复用器mx13还可以包括另一输入,其连接到电路shr的输出以根据指示最后一个aes轮次(轮次10或14)当前是否被执行的信号irnd而旁路电路mxc。
[0056]
图5示出了轮次级crm1(如图3中所示)的一个示例。轮次级crm1与轮次级crmx的不同之处在于:它不包括电路imxc,并且具有修改的sm4轮次密钥调度电路。轮次级cmr1的sm4轮次密钥调度电路包括运算器xg1、xg2、xg3、xg4、两组左旋转器lr13、lr23、寄存器16和由信号e-d控制的多路复用器mx10,寄存器10被移除。s-box组smb1的输出被直接提供给运算器xg4和第二组左旋转器lr13、lr23的输入。运算器xg4的输出被连接以形成64位字的位[31:0],其中运算器xg2的输出处呈现32位字。多路复用器mx10被连接以选择用于解密或用于加密的轮次密钥rki的位[127:64]、由xor运算器xg4提供的32位字和由xor运算器xg2提供的位32位字形成的64位字。寄存器16的位位置[63:0]接收多路复用器mx10的输出,并且寄存器16的位位置[127:64]接收轮次密钥rki的位[63:0]。寄存器16提供输出轮次密钥rko。当信号e-d选择解密时,输出轮次密钥rko等于输入轮次密钥rki,其中字[63:0]和[127:64]被交换以恢复由级crm0所交换的原始解密密钥。
[0057]
轮次级crm14(图3)可以通过轮次级crmx来实现,该轮次级crmx通过移除电路mxc或在最后一个aes轮次处(即,当信号irnd被设置时)使用具有三个输入的多路复用器mx13以旁路电路mxc来修改。
[0058]
图6是图示了根据一些实施例的轮次级crmy的框图。轮次级crmy可以是仅执行sm4加密或解密处理的轮次级crm15、crm16之一。从轮次级crmx导出轮次级crmy,使得aes轮次加密和解密处理电路以及aes轮次密钥调度电路rks被移除。由于s-box组smb1-smb4在aes和sm4密码之间不共享,因此也可以移除多路复用器mx6-mx9。根据其它实施例,轮次级crmy可以由轮次级crmx来实现,其中控制信号a-s被强制为选择sm4密码的值,其中输入rk1a和dia未被连接,并且输出rk1a和doa未被连接。
[0059]
由于sm4密钥调度对于最后一个sm4轮次不是必需的,所以可以通过在轮次级cmry中移除sm4轮次密钥调度电路来实现sm4轮次级crm16。
[0060]
图7是图示了根据一些实施例的轮次级crm0的框图。轮次级crm0从轮次级crm1导出,使得它仅包括轮次级cmr1的sm4轮次密钥调度电路。轮次级crm0还包括由信号e-d控制的xor运算器xg10和多路复用器mx11。运算器xg10被放置于电路中以接收输入轮次密钥rki和128位数据块fk,从而用数据块fk对轮次密钥进行掩码。运算器xg10的输出连接到运算器xg1、xg2、xg3和xg4的输入。输入轮次密钥rki的位[127:64]和[63:0]分别被提供给多路复用器mx10和mx11。多路复用器mx11在另一输入上接收运算器xg10的输出的位[63:0]。多路复用器mx11的输出被存储在寄存器16中的位位置[127:64]处,而多路复用器mx10的输出被存储在寄存器16中的位位置[63:0]处。数据块fk是被设置为0xa3b1bac656aa3350677d9197b27022dc的sm4密码的系统参数。当信号e-d选择解密时,输出轮次密钥rko对应于字[63:0]和[127:64]交换的输入密钥rki。
[0061]
图8是图示了硬件管线hpp的另一个实施例hpp1的框图。硬件管线hpp1与硬件管线hpp的不同之处在于:它包括接收第二128位数据块(例如di[255:128])的附加处理管线,并且包括轮次级cxr1-crx16、xor运算器xg20、多路复用器mx24、mx25以及寄存器21和23-29。附加处理管线具有与硬件管线hpp的处理管线相同的结构。附加处理管线接收第二128位数据块,例如,di[255:128],而主处理管线接收128位数据块di[127:0]。
[0062]
每个轮次级crx1-crx14执行一个aes处理轮次和两个sm4处理轮次。轮次级crx15和crx16中的每一个轮次级执行两个sm4处理轮次。轮次级crx1-crx16与轮次级crm1-crm16的不同之处在于:它们不执行轮次密钥调度,而是从对应的轮次级crm1-crm16接收相应的轮次密钥。附加处理管线接收由xor运算器xg20组合的输入数据块di[255:128]和密钥块ki。该操作对应于aes密码的第一“加法轮次密钥”。在第一处理周期期间,数据块di[255:128]也被存储在寄存器21中。在第一处理周期期间,运算器xg的输出也被存储在寄存器23中。寄存器21、23的相应输出连接到轮次级crx1。轮次级crx1至crx13级联连接。轮次级crx9的aes数据块输出还连接到级联连接的四个寄存器24-27的群组中的第一寄存器24。轮次级crx13的aes数据块输出与寄存器27的输出一起连接到多路复用器mx24的相应输入。多路复用器mx24的输出连接到轮次级crx14的aes数据块输入。轮次级crx13的其它输出连接到轮次级crx14的对应输入。轮次级crx14的aes数据块输出还连接到级联连接的两个寄存器28、29的群组中的第一寄存器28。轮次级crx14的sm4数据输出连接到轮次级crx15的对应输入,轮次级crx15的sm4数据输出连接到轮次级crx16的对应输入。寄存器29的输出和轮次级
crx16的sm4数据输出连接到多路复用器mx25的相应输入,多路复用器mx25向硬件加速器hpp1的数据输出提供输出数据块do[255:128]。多路复用器mx24由信号k256控制以用于选择aes密钥的大小(128或256位)。多路复用器mx25由选择要被执行的密码aes或sm4的信号a-s来控制。
[0063]
级crx1-crx9执行aes密码的前9个轮次和sm4密码的前18个轮次。如果aes密码被选择来执行10个轮次,那么密钥块ki是128位块(信号a-s被设置为“aes”,并且信号k256被设置为例如0),并且级crx9的aes数据输出被连续地存储在寄存器24-27中并且由多路复用器mx24提供给级crx14。如果sm4密码被选择(信号a-s被设置为“sm4”),则级crx10至crx13连续地执行另外8个sm4密码的轮次。如果aes密码被选择执行14个轮次,那么密钥块ki是256位的块(信号a-s被设置为“aes”并且信号k256被设置为例如1),并且级crx10至crx13执行另外4个aes密码的轮次,级cxr13的aes数据输出通过多路复用器mx24而被提供给级cxr14。取决于由信号a-s和k256的值所定义的情况,级crx14执行aes密码的最后(第10或第14)轮次或sm4密码的第28轮次。由级crx14提供的aes输出数据块被连续地存储在寄存器28、29中,而级crx15和crx16执行sm4密码的最后4个轮次(第29至第32)。
[0064]
根据一些实施例,硬件管线包括包含轮次级crx1-crx16的多个附加处理管线以同时处理多个128位数据块。
[0065]
图9是图示了轮次级cxr2-cxr13的一个实施例cxrx的框图。轮次级cxrx与轮次级crmx(图4)的不同之处在于:它不包括sm4和aes轮次密钥调度电路,并且因此它不包括两组四个s-box smb1、smb2。此外,电路sate和satd仅处理64位的字。为了执行所有aes s-box操作,轮次级cxrx包括aes仿射电路aaf、aes逆仿射电路aia、两组四个乘法逆电路asb1、asb2、64位寄存器18和由信号e-d控制的多路复用器mx14、mx15。提供电路aaf和aia以使用相同的aes s-box用于进行加密和解密。sm4输入数据块dis和aes输入数据块dia的位[127:64]由与轮次级crmx中相同的处理电路来处理。aes输入数据块dia的位[63:0]被分成两个32位字,这两个32位字分别被传输到多路复用器mx14、mx15。由电路ishr提供的数据块的位[63:0]被传输到电路aia,并且由电路aia提供的64位数据块被分成两个32位字,这两个32位字分别被传输到多路复用器mx14、mx15。由多路复用器mx14提供的字[31:0]由乘法逆电路asb1处理,并且由多路复用器mx15提供的字[63:31]由乘法逆电路asb2处理。组abs1、abs2中的每个乘法逆电路计算输入字节的aes字段中的伽罗瓦域gf(28)乘法逆。由乘法逆电路的组asb1、asb2提供的字分别被存储在寄存器18中的位位置[31:0]和[63:32]处。存储在寄存器18中的64位字被提供给电路aaf,并且与电路satd的64位输出字一起形成被提供给多路复用器mx13的128位数据块。由电路aaf提供的64位字与电路sate的64位输出字一起形成提供给电路shr的128位数据块。
[0066]
可以通过如下方式来从轮次级cxrx导出轮次级cxr1:移除电路imxc或添加多路复用器mx12,该多路复用器mx12根据指示第一轮次当前是否正在运行的信号rnd1而选择输入数据块dia或电路ixmc的输出。
[0067]
可以通过如下方式来从轮次级crmx导出轮次级cxr14:移除电路mxc或将条目添加到多路复用器mx13以用于根据指示最后一个aes轮次当前是否正在运行的信号irnd而选择电路mxc的输出或电路shr的输出。
[0068]
通过移除crmy的sm4轮次密钥调度电路,可以从轮次级crmy导出轮次级cxr15和
cxr16。
[0069]
图10是图示了可以包括硬件加速器hwa或硬件管线hpp的处理系统ps的一个实施例的框图。处理系统ps可以包括:诸如微处理器或微控制器之类的一个或多个处理器prc、耦合到处理器prc的数据和地址总线adb、以及耦合到总线adb的存储器mem、一个或多个输入/输出电路ioc、可以包括硬件加速器hwa或硬件管线hpp的一个或多个硬件加速器电路cp。存储器mem可以包括:易失性存储器,例如包含易失性应用数据的ram型(“随机存取存储器”)存储器;非易失性存储器,例如包含非易失性数据和应用程序的eeprom或闪存;以及可能的只读存储器(或rom存储器),其可以存储处理器prc的操作系统。操作系统也可以被存储在非易失性存储器中。
[0070]
通信接口电路ioc可以包括从处理系统ps向另一个处理或存储系统(未示出)传输信息和/或从另一个处理或存储系统(未示出)接收信息的任何合适类型、数目和/或配置的有线和/或无线设备。通信设备ioc可以接收用户输入和参数,并使用户输入和参数被存储在存储器m1中。
[0071]
处理系统ps,或者仅硬件加速器hwa或硬件管线hpp可以被集成到集成电路中或片上系统(soc)中。
[0072]
图11是图示了用于处理或生成可以包括硬件加速器hwa或硬件管线hpp的电路组件的表示的处理系统ps1的一个实施例的框图。处理系统ps1包括一个或多个处理器pr1、一个或多个存储器m1以及一个或多个通信设备io1。处理器pr1、存储器m1和通信设备io1使用任何适当类型、数目和/或配置的有线和/或无线连接b1进行通信。
[0073]
处理器pr1执行存储在存储器m1中的一个或多个过程prd的指令,以响应于用户输入uin和参数pms来处理和/或生成电路组件表示ccc。过程prd可以是被用来设计、模拟、分析和/或验证电子电路系统和/或生成用于电子电路系统的光掩模的任何合适的电子设计自动化(eda)工具或其部分。表示ccc包括描述如图2-图6中所示的电路hwa、hpp、crm、crm0-crm16、crmx、crmy的全部或部分的数据。
[0074]
存储器m1包括存储过程prd、用户输入uin、参数pms和电路组件ccc的任何合适类型、数目和/或配置的非暂时性计算机可读存储介质。
[0075]
通信设备io1可以包括从处理系统ps1向另一个处理或存储系统(未示出)传输信息和/或从另一个处理或存储系统(未示出)接收信息的任何合适类型、数量和/或配置的有线和/或无线设备。例如,通信设备io1可以将电路组件ccc传输到另一个系统。通信设备io1可以接收过程prd、用户输入uin、参数prd和/或电路组件ccc,并使过程prd、用户输入uin、参数pms和/或电路组件ccc存储在存储器m1中。
[0076]
本文所描述的图示旨在提供对各种实施例的结构的一般理解。这些图示不旨在用作对利用其中所描述的结构或方法的装置、处理器和系统的所有元件和特征的完整描述。在通过组合所公开的实施例审阅本公开内容后,许多其它实施例或其组合对于本领域普通技术人员来说是显而易见的。可以利用并从本公开中导出其他实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替换和改变。
[0077]
例如,图1的电路可以被单独实现,以执行针对sm4密码以及针对使用8
×
8s-box的另一对称块密码的s-box操作,诸如aria和camellia。仿射变换ast、sat然后被定义为与sm4密码相组合的另一个对称块密码的函数。
[0078]
图1的电路原理可以适用于对称块密码的另一种组合,以被用于实现与另一种对称块密码相组合的sm4密码的硬件加速器电路中。
[0079]
此外,本公开和图示应被认为是说明性的而非限制性的,并且所附权利要求旨在覆盖落入本说明书的真实精神和范围内的所有这样的修改、增强和其他实施例。因此,以下权利要求书的范围将由权利要求书及其等效物的最广泛的容许解释来确定,并且不应由前述描述来约束或限定。
技术特征:
1.一种执行密码操作的方法,包括:由密码加速器电路执行应用于输入数据块的第一仿射变换,以获得第一变换数据块,其中所述第一仿射变换包括输入数据块与第一矩阵的乘法以及第一平移向量的加法;由所述密码加速器电路根据sm4密码并且使用sm4 s-box表来执行第一字节替换(s-box)操作,所述sm4 s-box操作被应用于所述第一变换数据块以获得替换数据块;以及由所述密码加速器电路执行应用于所述替换数据块的第二仿射变换以获得第二变换数据块,其中所述第二仿射变换包括所述替换数据块与第二矩阵的乘法以及第二平移向量的加法,并且其中所述第一矩阵和所述第二矩阵以及所述第一平移向量和所述第二平移向量被定义为使得所述第二变换数据块等于由根据另一对称密码使用s-box表的第二s-box操作所处理的所述输入数据块。2.根据权利要求1所述的方法,其中所述第二s-box操作是高级加密标准(aes)s-box操作。3.根据权利要求1或2所述的方法,其中:所述输入数据块包括多个字节,对所述输入数据块执行所述第一仿射变换包括:对所述输入数据块的每个字节同时应用所述第一仿射变换,以生成所述第一变换数据块的字节,对所述第一变换数据块执行所述sm4 s-box操作包括:使用相应的sm4 s-box表,对所述第一变换数据块的每个字节同时应用所述sm4 s-box操作,以生成所述替换数据块的字节,并且对所述替换数据块执行所述第二仿射变换包括:对所述替换数据块的每个字节同时应用所述第二仿射变换,以生成所述第二变换数据块的字节。4.根据权利要求3所述的方法,其中由所述密码加速器电路用来执行应用于所述第一变换数据块的所述sm4 s-box操作的所述sm4s-box表是两个相邻sm4轮次电路的s-box表,每个轮次电路被配置为根据sm4密码来执行一个轮次并且根据sm4轮次密钥调度过程来执行sm4轮次密钥的一个轮次扩展操作。5.根据权利要求1至4中的一项所述的方法,其中由密码加速器电路执行的所述密码操作包括加密操作和解密操作,每个操作与相应的特定的第一仿射变换和第二仿射变换相关联。6.根据权利要求1至5中的一项所述的方法,包括:由所述密码加速器电路对所述输入数据块应用第一sm4密码操作以获得第一部分sm4密码数据块;由所述密码加速器电路旁路所述第一仿射变换;由所述密码加速器电路将所述sm4 s-box操作应用于所述第一部分sm4密码数据块,以获得sm4替换数据块;以及由所述密码加速器电路旁路所述第二仿射变换,所述sm4替换数据块被供应给相邻sm4轮次处理电路。7.一种密码加速器电路,包括:第一仿射变换电路,从输入数据块生成第一变换数据块,其中所述第一仿射变换电路被配置为执行输入数据块与第一矩阵的乘法以及第一平移向量的加法;
sm4字节替换(s-box)电路,被配置为根据sm4密码并且使用sm4 s-box表执行第一s-box操作,所述sm4 s-box操作被应用于所述第一变换数据块以获得替换数据块;以及第二仿射变换电路,从所述替换数据块生成第二变换数据块,其中所述第二仿射变换电路被配置为执行所述替换数据块与第二矩阵的乘法以及第二平移向量的加法,并且其中所述第一仿射变换电路和所述第二仿射变换电路被配置为使得所述第二变换向量块等于由根据另一对称密码使用s-box表的第二s-box操作所处理的所述输入数据块。8.根据权利要求7所述的密码加速器电路,其中所述第二s-box操作是高级加密标准(aes)s-box操作。9.根据权利要求7或8所述的密码加速器电路,其中:所述输入数据块包括多个字节,所述第一仿射变换电路包括多个第一字节仿射变换电路,每个第一字节仿射变换电路被配置为将所述第一仿射变换应用于所述输入数据块的相应字节,以生成所述第一变换数据块的字节,所述sm4 s-box电路包括多个sm4字节s-box电路,每个sm4字节s-box电路被配置为使用相应的sm4字节s-box表来将sm4字节s-box操作应用于所述第一变换数据块的相应字节,以生成所述替换数据块的字节,并且所述第二仿射变换电路包括多个第二字节仿射变换电路,每个第二字节仿射变换电路被配置为将所述第二仿射变换应用于所述替换数据块的相应字节,以生成所述第二变换数据块的字节。10.根据权利要求9所述的密码加速器电路,包括两个相邻的sm4轮次电路,每个sm4轮次电路被配置为使用第一组sm4 s-box表根据sm4密码来执行一个轮次,并且使用第二组sm4 s-box表根据sm4密钥调度过程来执行sm4轮次密钥的一个轮次扩展,每个相邻sm4轮次电路的所述第一组s-box表和所述第二组s-box表被用来同时将所述sm4 s-box操作应用于所述第一变换数据块的每个字节。11.根据权利要求7至10中的一项所述的密码加速器电路,被配置为:对所述输入数据块应用第一sm4密码操作,以获得第一部分sm4密码数据块;旁路所述第一仿射变换;将所述sm4 s-box操作应用于所述第一部分sm4密码数据块,以获得sm4替换数据块;以及旁路所述第二仿射变换,所述sm4替换数据块被供应给相邻sm4轮次处理电路。12.根据权利要求7至11中的一项所述的密码加速器电路,包括第一处理管线,所述第一处理管线包括多个轮次级,每个轮次级被配置为在两个时钟周期中执行两个sm4轮次和两个sm4轮次密钥调度以及所述另一对称密码的一个轮次。13.根据权利要求12所述的密码加速器电路,其中所述第一处理管线的所述轮次级被配置为根据选择加密或解密以及选择所述sm4密码或所述另一对称密码的相应选择信号来同时处理相应数据块。14.根据权利要求12或13所述的密码加速器电路,包括多个处理管线,每个处理管线接收将使用相同密码密钥处理的相应输入数据块。15.一种存储电路组件的表示的计算机可读介质,所述电路组件包括:
第一仿射变换电路,从输入数据块生成第一变换数据块,其中所述第一仿射变换电路被配置为执行输入数据块与第一矩阵的乘法以及第一平移向量的加法;sm4替换盒(s-box)电路,被配置为根据sm4密码并且使用sm4s-box表来执行第一字节替换(s-box)操作,所述sm4 s-box操作被应用于所述第一变换数据块以获得替换数据块;以及第二仿射变换电路,从所述替换数据块生成第二变换数据块,其中所述第二仿射变换电路被配置为执行所述替换数据块与第二矩阵的乘法以及第二平移向量的加法,并且其中所述第一仿射变换电路和所述第二仿射变换电路被配置为使得所述第二变换数据块等于由根据另一对称密码使用s-box表的第二s-box操作所处理的所述输入数据块。16.根据权利要求15所述的计算机可读介质,其中所述第二s-box操作是高级加密标准(aes)s-box操作。17.根据权利要求15或16所述的计算机可读介质,其中:所述输入数据块包括多个字节,所述第一仿射变换电路包括多个第一字节仿射变换电路,每个第一字节仿射变换电路被配置为将所述第一仿射变换应用于所述输入数据块的相应字节,以生成所述第一变换数据块的字节,所述sm4 s-box电路包括多个sm4字节s-box电路,每个sm4字节s-box电路被配置为使用相应的sm4字节s-box表来将sm4字节s-box操作应用于所述第一变换数据块的相应字节,以生成所述替换数据块的字节,并且所述第二仿射变换电路包括多个第二字节仿射变换电路,每个第二字节仿射变换电路被配置为将所述第二仿射变换应用于所述替换数据块的相应字节,以生成所述第二变换数据块的字节。18.根据权利要求17所述的计算机可读介质,其中所述电路组件还包括两个相邻sm4轮次电路,每个sm4轮次电路被配置为使用第一组sm4 s-box表根据sm4密码来执行一个轮次,并且使用第二组sm4 s-box表根据sm4密钥调度过程来执行sm4轮次密钥的一个轮次扩展,每个相邻sm4轮次电路的所述第一组s-box表和所述第二组s-box表被用来同时将所述sm4 s-box操作应用于所述第一变换数据块的每个字节。19.根据权利要求15至18中的一项所述的计算机可读介质,其中所述电路组件还被配置为:对所述输入数据块应用第一sm4密码操作,以获得第一部分sm4密码数据块;旁路所述第一仿射变换;将所述sm4 s-box操作应用于所述第一部分sm4密码数据块,以获得sm4替换数据块;以及旁路所述第二仿射变换,所述sm4替换数据块被供应给相邻sm4轮次处理电路。20.根据权利要求15至19中的一项所述的计算机可读介质,其中所述电路组件包括第一处理管线,所述第一处理管线包括多个轮次级,每个轮次级被配置为在两个时钟周期中执行两个sm4轮次和两个sm4轮次密钥调度以及所述另一对称密码的一个轮次。21.根据权利要求20所述的计算机可读介质,其中所述第一处理管线的所述轮次级被配置为根据选择加密或解密并且选择所述sm4密码或所述另一对称密码的相应选择信号来
同时处理相应数据块。22.根据权利要求20或21所述的计算机可读介质,其中所述电路组件包括多个处理管线,每个处理管线接收将使用相同密码密钥处理的相应输入数据块。
技术总结
所公开的实施例涉及密码加速器电路,其包括:从输入数据块生成第一数据块的第一仿射变换电路;SM4S-box电路,其被配置为根据SM4密码并使用SM4S-box表执行第一字节S-box操作,该SM4S-box操作被应用于第一变换数据块以获得替换数据块;以及第二仿射变换电路,其从替换数据块生成第二数据块,其中第一仿射变换电路和第二仿射变换电路被配置为执行替换数据块与相应矩阵的乘法以及相应平移向量的加法,并且其中第一仿射变换电路和第二仿射变换电路被配置为使得第二变换数据块等于由根据另一对称密码使用S-box表的第二S-box操作所处理的输入数据块。的输入数据块。的输入数据块。
技术研发人员:P
受保护的技术使用者:拉姆伯斯公司
技术研发日:2021.11.30
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/