CN212115336U - Sm4/aes双模加密电路 - Google Patents
Sm4/aes双模加密电路 Download PDFInfo
- Publication number
- CN212115336U CN212115336U CN202020539147.9U CN202020539147U CN212115336U CN 212115336 U CN212115336 U CN 212115336U CN 202020539147 U CN202020539147 U CN 202020539147U CN 212115336 U CN212115336 U CN 212115336U
- Authority
- CN
- China
- Prior art keywords
- unit
- input
- aes
- coupled
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Facsimile Transmission Control (AREA)
Abstract
本申请涉及SM4/AES双模加密电路,包括第一组多个选择器、多个查表单元、第二组多个选择器、第三组多个选择器、多个异或单元与多个合并移位单元;第一组多个选择器的每个的输出耦合到多个查表单元之一的输入;多个查表单元的每个的输出耦合到第二组多个选择器之一的第一输入;多个合并移位单元的每个的输出耦合到第二组多个选择器的子组之一的选择器的第二输入,其中第二组多个选择器包括多个子组,每个子组包括相同数量的选择器;多个合并移位单元的每个的输出还耦合第三组多个选择器之一的第二输入;第二组多个选择器的每个子组的每个选择器的输出,耦合到多个异或单元之一的输入。
Description
技术领域
本申请涉及信息安全领域,具体涉及支持SM4与AES两种加密标准的加密电路。
背景技术
SM4是国家密码管理局提供的标准密码算法。SM4标准使用的分组长度为128位,密钥长度也为128位。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32 位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4标准加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。
以加密过程为例,对每个分组进行计算时,SM4标准的输入包括128比特的明文(记为X)。用X(i)代表32比特(4字节)数据,其来自明文X或者对明文X进行计算的结果。SM4标准的输入还包括加密密钥(记为MK),长度为128比特。加密密钥KM被分为4部分,分别记为MK0、MK1、MK2与MK3,每个部分的长度均为32比特。从加密密钥MK生成轮密钥(记为rk(i),其中i取从0到31的整数)。SM4标准对每个128 比特的分组进行32轮加密,在第i轮加密过程中,使用轮密钥rk(i)。
SM4标准还使用系统参数FK=(FK0,FK1,FK2,FK3),固定参数 CK=(CK0,CK1,.....,CK31),其中FK0、FK1、FK2与FK3的长度均为32比特,CK0、CK1、.....、 CK31的每个的长度也为32比特。
图1A展示了根据SM4标准的加密装置的框图。
SM4标准对每个分组的加密过程,包括32轮迭代。在每轮迭代中,产生轮密钥rk(i);以及使用该轮的轮密钥rk(i)对明文在该轮的计算结果加密。图1A的加密装置包括轮密钥生成装置(左侧)与密文生成装置(右侧)。
轮密钥生成装置将加密密钥MK作为输入,并获取系统参数FK与固定参数CK,以及在32轮迭代的每轮中,产生轮密钥rk(i)提供给密文生成装置。
轮密钥生成装置包括异或单元110、异或单元120、S盒变换单元130、线性变换单元140以及异或单元150。
参看图1A,在对128比特的分组开始加密前,异或单元110将加密密钥MK与系统参数FK做异或运算,得到参数K。第i轮迭代中使用的参数K被记为 (K(i),K(i+1),K(i+2),K(i+3))。异或单元110输出的参数K为在第0轮迭代中使用的参数 K(0),K(1),K(2),K(3)),K0=MK0^FK0,K1=MK1^FK1,K2=MK2^FK2,K3=MK3^FK3。
在每轮迭代中,异或单元120计算K(i+1)^K(i+2)^K(i+3)^CK(i),其中,“^”代表异或运算。S盒变换单元130对K(i+1)^K(i+2)^K(i+3)^CK(i)的结果进行S盒(Sbox)变换,线性变换单元140对S盒变换单元130的输出做线性变换(移位),以及异或单元150 对线性变换单元140的输出同K(i)做异或运算,得到异或单元150输出的结果为参数 K(i+4),作为该轮的轮密钥rk(i)(rk(i)=K(i+4))。其中加密密钥MK与系统参数FK做异或运算,每轮迭代中S盒变换单元130进行的S盒(Sbox)变换与线性变换单元140 进行的线性变换,均为在SM4算法标准中定义的操作,为所属领域技术人员所知悉。
在第i轮迭代中,生成的轮密钥rk(i)也即参数K(i+4),将在第i+1轮迭代中作为参数 K被使用,在第i+1轮中使用的参数K被记为(K(i+2),K(i+3),K(i+4)),其中K(i+2)与K(i+3) 为在第i轮迭代中已使用过的参数,以及在第i+1轮迭代中生成的参数K(i+1+4)(也记为 K(5),其作为轮密钥rk(i+1)),并在第i+2轮迭代中作为参数K被使用。从而异或单元150输出的K(i+4)被提供给密文生成装置,也被提供给异或单元120。
密文生成装置包括异或单元160、S盒变换单元170、线性变换单元180与异或单元190。密文生成装置获取待加密的128比特明文X与轮密钥生成装置提供的轮密钥rk(i) 作为输入。明文X被分为4部分,分别记为X(0)、X(1)、X(2)与X(3),每部分的大小为 32比特。
在第i轮迭代中,异或单元160对X(i+1)、X(i+2)、X(i+3)与rk(i)做异或操作,结果被提供给S盒单元170。在第0轮中,异或单元160要处理的X(1)、X(2)与X(3)来自输入的明文X,而rk(0)来自轮密钥生成装置提供的K(4);在第i轮迭代(i>=1)中,异或单元160要处理的X(i+1)与X(i+2)在上一轮迭代中已经提供给异或单元160,而X(i+3) 来自上一轮迭代中异或单元190的输出。从而异或单元190的输出耦合到异或单元160 的输入。在第i轮迭代中,rk(i)来自轮密钥生成装置提供的K(i+4)。
S盒变换单元170对X(i+1)^X(i+2)^X(i+3)^rk(i)的结果进行S盒(Sbox)变换,线性变换单元180对S盒变换单元170的输出做线性变换,以及异或单元190对线性变换单元180的输出同X(i)做异或运算,得到异或单元190输出的结果为X(i+4),并提供给异或单元160用于下一轮的迭代。每轮迭代中S盒变换单元170进行的S盒(Sbox)变换与线性变换单元180进行的线性变换,均为在SM4算法标准中定义的操作,为所属领域技术人员所知悉。
在第31轮迭代完成后,异或单元190输出X(35),并连同之前轮迭代得到的X(32)、X(33)与X(34)构成对明文X加密得到的128比特密文Y。
可以理解地,图1A中展示的加密装置的各单元,可由集成电路、运行了程序的处理器、可编程门阵列等实现。
图1B展示了根据SM4标准实施加密的框图。
在一轮(第i轮)迭代中,明文或者之前迭代得到的X(i+1)、X(i+2)与X(i+3),同该轮的轮密钥rki做异或操作,得到32比特的结果。32比特的结果包括4个字节(图1B 中展示为b0、b1、b2与b3)。对每个字节(8比特)进行S盒变换,得到8比特输出。从而对32比特异或结果的4个字节,分别进行S盒变换后,共得到32比特的变换结果。对32比特变换结果,进行多种移位操作(循环左移),包括左移2位(由“<<<2”指示)、左移10位(由“<<<10”指示)、左移18位(由“<<<18”指示)与左移24位(由“<<<24”指示),连同未经移位操作的32比特变换结果本身与Xi,对总计6个32比特数进行异或,异或结果作为X(i+4)。至此一轮迭代完成。
在一轮迭代中,生成32比特计算结果。该生成的32比特计算结果(例如,X(i+4)),与该轮迭代所使用过的96比特输入数据(例如,X(i+1)、X(i+2)与X(i+3))组成新的128 比特数据,作为下一轮迭代的输入。依此类推,直到32轮迭代完成产生加密后的密文结果。
在申请号为2019105779490的中国专利申请中提供了SM4加密电路及其实施SM4加密操作的方法。
XTS-AES(带有调整和密文窃取的高级加密标准,XEX encryption mode withTweak and ciphertext Stealing-ADVANCED_ENCRYPTION_STANDARD)标准主要用于以数据单元(包括扇区、逻辑磁盘块等)为基础结构的存储设备中静止状态数据的加密。XTS-AES的公布解决了一系列的安全威胁,并且允许在算法实现上应用并行化和流水线结构。
现有技术的XTS-AES标准中,输入的数据分为不同数据类型,每种数据类型均按128比特分组处理。在“IEEE P1619TM/D16Standard for Cryptographic Protection ofData on Block-Oriented Storage Devices”(http://grouper.ieee.org/groups/1619/email/pdf00086.pdf) 中定义XTS-AES标准,将其全文通过引用合并于此。
AES标准根据选取密钥的宽度不同,运算轮数为10、12或14轮,每轮完成一次128比特输入、128比特输出的变换。每轮运算的基本结构如下图所示,其中TA-TD均为8 入32出的查找表操作。
图2A展示了根据AES标准实施加密的示意图。
要加密的输入数据是128比特。以进行10轮运算为例,将每轮运算记为第i轮 (1<=i<=10,i为整数)。在开始第1轮运算前,将输入数据同扩展密钥相加(异或操作),结果被作为第1轮运算的输入。每轮运算的输出作为下一轮运算的输入。
参看图2A,在每轮运算中,对输入的128比特数据实施字节替代210、行移位220、列混淆230与轮密钥加240,并得到128比特的输出数据。
字节替代210,对输入数据的每个字节根据其内容替代为8比特的指定内容,通常该操作由S盒单元完成。字节替代操作得到的结果包括16比特数据,作为4x4矩阵。在行移位操作220中对该4x4矩阵的多行(第二行到第四行)分别实施指定位数的循环左移。列混淆操作230中,对行移位操作的结果的4x4矩阵,左乘指定矩阵,得到列混淆后的矩阵。轮密钥加操作240中,对列混淆后的矩阵的各元素同当前轮(第i轮)的轮密钥相加(异或)。每轮使用的轮密钥也为128比特,第i轮使用的轮密钥记为W(i)、 W(i+1)、W(i+2)与W(i+3),其中W(i)为32比特数。
为了加快迭代计算的过程,也将字节替代操作210、行移位操作220与列混淆操作230组合在一起,并由查找表记录对8比特指定输入数据的最终变换结果,从而将每轮迭代中的这三种操作由单一的查表操作替代。
图2B展示了根据AES标准实施加密的框图。
第i轮加密运算的128比特输入数据记为X3i、X2i、X1i与X0i。Xi代表32位数,包括4个字节。128比特输入数据对应的字节分别记为B0~B15。为128比特输入数据的每个字节进行查表变换,以替代字节替代操作210、行移位操作220与列混淆操作230 (也参看图2A)。对每个字节的8比特输入数据查表变换的结果是32比特数。异或单元(276、274、272与270)对指定的4个变换结果与对应的轮密钥实施异或操作,得到 X3i+1、X2i+1、X1i+1与X0i+1。为第i轮加密运算的输出,并作为第i+1轮加密运算的输入。
实用新型内容
一些电子设备需要同时支持SM4标准与AES标准。为此需要既提供实现SM4标准的加密/解密电路,也提供实现AES标准的加密/解密电路。加密标准定义的加密过程需要大量的计算资源(异或单元,查找表等),而为在单一电子设备中支持多种加密标准而为每种加密标准提供加密/解密电路,则进一步增加了所要使用的计算资源。对于集成电路芯片,则增大了芯片的面积与功耗,也增加了成本。
从图1B与图2B展示的框图中看到,SM4与AES标准定义的计算过程中,都需要使用较多的查找表(提供S盒或变换单元)与异或单元。如果能在提供两种加密标准的单一电路中重用这些计算资源,将有助于明显减少电路面积、降低功耗并控制成本。
为了解决现有技术中需要同时支持SM4标准和AES标准的电路面积与功耗大的技术问题,根据本申请第一方面,提供了根据本申请第一方面的第一SM4/AES双模加密电路,包括:第一组多个选择器(330~33f)、多个查表单元(340~34f)、第二组多个选择器(370~37f)、第三组多个选择器(380、382、384与386)、多个异或单元(390、 392、394与396)与多个合并移位单元(350、352、354与356);所述第一组多个选择器(330~33f)的每个的输出耦合到所述多个查表单元(340~34f)之一的输入;所述多个查表单元(340~34f)的每个的输出耦合到所述第二组多个选择器(370~37f)之一的第一输入;所述多个合并移位单元(350、352、354与356)的每个的输出耦合到所述第二组多个选择器(370~37f)的子组之一的选择器的第二输入,其中所述第二组多个选择器(370~37f)包括多个子组,每个子组包括相同数量的选择器;所述多个合并移位单元 (350、352、354与356)的每个的输出还耦合所述第三组多个选择器(380、382、384 与386)之一的第二输入;所述第二组多个选择器(370~37f)的每个子组的每个选择器的输出,耦合到所述多个异或单元(390、392、394与396)之一的输入。
根据本申请第一方面的第一SM4/AES双模加密电路,提供了本申请第一方面的第二 SM4/AES双模加密电路,该电路还包括:AES密钥分发网络(322);AES密钥分发网络(322)耦合所述第三组多个选择器(380、382、384与386)的每个的第一输入,以向所述第三组多个选择器(380、382、384与386)的每个提供各自需要的AES轮密钥 (W(i)、W(i+1)、W(i+2)与W(i+3))。
根据本申请第一方面的第一或第二SM4/AES双模加密电路,提供了本申请第一方面的第三SM4/AES双模加密电路,电路还包括AES数据分发网络(320);所述AES数据分发网络(320)的输出耦合所述第一组多个选择器(330~33f)的各个选择器的第一输入,以向所述第一组多个选择器(330~33f)的每个提供AES输入数据。
根据本申请第一方面的第三SM4/AES双模加密电路,提供了本申请第一方面的第四 SM4/AES双模加密电路,所述多个异或单元(390、392、394与396)的每个的输出耦合到所述AES数据分发网络(320)的输入。
根据本申请第一方面的第一至第四SM4/AES双模加密电路中的任一项,提供了本申请第一方面的第五SM4/AES双模加密电路,电路还包括多个SM4数据分发网络(310、 312、314与316);所述多个SM4数据分发网络(310、312、314与316)的每个的输出耦合所述第一组多个选择器(330~33f)的子组之一的选择器的第二输入,其中所述第一组多个选择器(330~33f)包括多个子组,每个子组包括相同数量的选择器。
根据本申请第一方面的第五SM4/AES双模加密电路,提供了本申请第一方面的第六 SM4/AES双模加密电路,所述多个异或单元(390、392、394与396)的第一异或单元 (390)的输出耦合到所述多个SM4数据分发网络(310、312、314与316)的第二数据分发网络(312、第三数据分发网络(314)与第四数据分发网络(316);所述多个异或单元(390、392、394与396)的第二异或单元(392)的输出耦合到所述多个SM4数据分发网络(310、312、314与316)的第三数据分发网络(314)与第四数据分发网络(316);所述多个异或单元(390、392、394与396)的第三异或单元(394)的输出耦合到所述多个SM4数据分发网络(310、312、314与316)的第四数据分发网络(316)。
根据本申请第一方面的第一至第六SM4/AES双模加密电路中的任一项,提供了本申请第一方面的第七SM4/AES双模加密电路,还包括AES中间分发网络(360);所述多个查表单元(340~34f)的每个的输出通过所述AES中间分发网络(360)耦合到所述第二组多个选择器(370~37f)之一的第一输入。
根据本申请第一方面的第一至第七SM4/AES双模加密电路中的任一项,提供了本申请第一方面的第八SM4/AES双模加密电路,所述第三组多个选择器(380、382、384与 386)的每个的输出耦合到所述多个异或单元(390、392、394与396)之一的输入。
根据本申请第一方面的第一至第八SM4/AES双模加密电路中的任一项,提供了本申请第一方面的第九SM4/AES双模加密电路,所述多个查表单元(340~34f)的每个子组的输出耦合到所述多个合并移位单元(350、352、354与356)之一的输入;其中所述多个查表单元(340~34f)包括多个子组,每个子组包括相同数量的查表单元。
根据本申请第一方面的第九SM4/AES双模加密电路,提供了本申请第一方面的第十 SM4/AES双模加密电路,所述第一组多个选择器(330~33f)包括16个选择器;所述多个查表单元(340~34f)包括16个查表单元;所述第二组多个选择器(370~37f)包括16 个选择器;所述第三组多个选择器(380、382、384与386)包括4个选择器;所述多个异或单元(390、392、394与396)包括4个异或单元;所述合并移位单元(350、352、 354与35)包括4个合并移位单元。
根据本申请第一方面的第十SM4/AES双模加密电路,提供了本申请第一方面的第十一SM4/AES双模加密电路,所述第一组多个选择器(330~33f)的每个选择器的两个输入与两个输出各自的位宽都是8比特;所述第二组多个选择器(370~37f)与所述第三组多个选择器(380、382、384与386)的每个选择器的两个输入与两个输出各自的位宽都是32比特;所述第一组多个选择器(330~33f)包括4个子组;所述第二组多个选择器 (370~37f)包括4个子组;所述查表单元(340~34f)的每个是输入位宽为8比特、输出位宽为32比特的存储器或查找表单元。
根据本申请第一方面的第十一SM4/AES双模加密电路,提供了本申请第一方面的第十二SM4/AES双模加密电路,所述多个查表单元(340~34f)的每个子组的输出的指定8比特耦合到所述多个合并移位单元(350、352、354与35)之一的输入。
根据本申请第一方面的第十一或第十二SM4/AES双模加密电路,提供了本申请第一方面的第十三SM4/AES双模加密电路,在SM4模式中,所述多个查表单元(340~34f) 的每个将8比特输入映射到8比特输出;在AES模式中,所述多个查表单元(340~34f) 的每个将8比特输入映射到32比特输出。
根据本申请第一方面的第一至第十三SM4/AES双模加密电路中的任一项,提供了本申请第一方面的第十四SM4/AES双模加密电路,合并移位单元包括多个输入端口、合并单元与移位单元;所述多个输入端口的每个耦合所述多个查表单元(340~34f)的子组之一的输出;所述多个输入端口还耦合所述合并单元的输入;所述合并单元将从所述多个输入端口获取的数据或部分数据按位合并;所述合并单元的输出耦合所述移位单元的输入;所述移位单元对输入的数据循环左移并输出。
根据本申请第一方面的第十四SM4/AES双模加密电路,提供了本申请第一方面的第十五SM4/AES双模加密电路,所述移位单元有多个,所述合并单元的输出耦合到每个移位单元的输入;移位单元各自对输入的数据循环左移指定的位数;多个移位单元的输出是所述合并移位单元的输出。
根据本申请第一方面的第十五SM4/AES双模加密电路,提供了本申请第一方面的第十六SM4/AES双模加密电路,所述移位单元有4个,其中,第一移位单元对输入的数据循环左移2位;第二移位单元对输入的数据循环左移10位;第三移位单元对输入的数据循环左移18位;第四移位单元对输入的数据循环左移24位。
根据本申请第一方面的第十五或第十六SM4/AES双模加密电路,提供了本申请第一方面的第十七SM4/AES双模加密电路,所述合并移位单元还包括第一异或单元;所述第一异或单元的输入耦合所述合并单元的输出或者多个移位单元之一的输出;所述第一异或单元的输入还耦合所述合并移位单元的外部输入,所述外部输入提供SM4输入数据;所述第一异或单元的输出是所述合并移位单元的输出。
根据本申请第一方面的第十四SM4/AES双模加密电路,提供了本申请第一方面的第十八SM4/AES双模加密电路,所述合并移位单元还包括多个寄存器;所述移位单元是一个移位单元;所述移位单元对输入数据循环左移多种指定位数,并将移位结果写入所述多个寄存器之一;所述合并单元的输出也耦合所述多个寄存器之一;所述多个寄存器的输出是所述合并移位单元的输出。
根据本申请第一方面的第十八SM4/AES双模加密电路,提供了本申请第一方面的第十九SM4/AES双模加密电路,所述多个寄存器包括5个寄存器;所述移位单元对输入的数据循环左移2位并将移位结果写入第一寄存器;所述移位单元对输入的数据循环左移 10位并将移位结果写入第二寄存器;所述移位单元对输入的数据循环左移18位并将移位结果写入第三寄存器;所述移位单元对输入的数据循环左移24位并将移位结果写入第四寄存器;所述合并单元的输出耦合到第五寄存器。
根据本申请第一方面的第十九SM4/AES双模加密电路,提供了本申请第一方面的第二十SM4/AES双模加密电路,所述合并移位单元还包括第一异或单元;所述第一异或单元的输入耦合所述合并单元的输出;所述第一异或单元的输入还耦合所述合并移位单元的外部输入,所述外部输入提供SM4输入数据;所述第一异或单元的输出耦合到第五寄存器。
根据本申请第一方面的第一至第二十SM4/AES双模加密电路中的任一项,提供了本申请第一方面的第二十一SM4/AES双模加密电路,在AES模式下,所述第一组多个选择器(330~33f)、第二组多个选择器(370~37f)与第三组多个选择器(380、382、384 与386)的每个选择器将其第一输入耦合到其输出;在SM4模式下,所述第一组多个选择器(330~33f)、第二组多个选择器(370~37f)与第三组多个选择器(380、382、384 与386)的每个选择器将其第二输入耦合到其输出。
根据本申请的第二方面,提供了根据本申请的第二方面的第一SM4/AES双模加密电路,包括:16个第一选择器(330~33f)、16个查表单元(340~34f)、16个第二选择器 (370~37f)、4个第三选择器(380、382、384与386)、4个异或单元(390、392、394 与396)与4个合并移位单元(350、352、354与356);第一选择器的第一输入耦合用于AES模式的输入数据,第一选择器的第二输入耦合用于SM4模式的输入数据;编号为j的第一选择器的输出耦合编号为j的查表单元的输入,其中0<=j<15;查表单元的输出耦合第二选择器的第一输入,编号为4k到4k+3的查表单元的输出还耦合编号为k的合并移位单元的输入,其中0<=k<=3;编号为k的合并移位单元的输出耦合到编号为4k 到4k+3的第二选择器的第二输入,以及编号为k的合并移位单元的输出耦合到编号为k 的第三选择器的第二输入;第三选择器的第一输入耦合用于AES模式的轮密钥;编号为 4k到4k+3的第二选择器的输出耦合到编号为k的异或单元的输入;编号为k的第三选择器的输出耦合到编号为k的异或单元的输入。
根据本申请第二方面的第一SM4/AES双模加密电路,提供了本申请第二方面的第二 SM4/AES双模加密电路,其中,用于AES模式的输入数据包括128比特,B[j]代表用于 AES模式的输入数据从低位到高位的第j字节,B[j]被耦合到编号为j的第一选择器的第一输入;用于SM4模式的输入数据包括32比特的第0轮输入数据、32比特的第1轮输入数据、32比特的第2轮输入数据与32比特的第3轮输入数据;S[i,j]代表用于SM4模式的输入数据的第k轮32比特输入数据从低位到高位的第j字节,S[k,j]被耦合到编号为 4k+j的第一选择器的第二输入;所述第一选择器的第一输入、第二输入与输出的位宽都是8比特。
根据本申请第二方面的第一或第二SM4/AES双模加密电路,提供了本申请第二方面的第三SM4/AES双模加密电路,在SM4模式中,所述16个查表单元(340~34f)的每个将8比特输入映射到8比特输出;在AES模式中,所述16个查表单元(340~34f)的每个将8比特输入映射到32比特输出。
根据本申请第二方面的第一至第三SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第四SM4/AES双模加密电路,所述第二选择器的第一输入、第二输入与输出的位宽都是32比特;所述第三选择器的第一输入、第二输入与输出的位宽都是32比特。
根据本申请第二方面的第一至第四SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第五SM4/AES双模加密电路,用于AES模式的轮密钥包括128比特,R[k] 代表用于AES模式的轮密钥的从低位到高位的第k个32比特双字,R[k]被耦合到编号为 k的第三选择器的第一输入。
根据本申请第二方面的第一至第五SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第六SM4/AES双模加密电路,在AES模式中,编号为k的异或单元的输出,被作为下一轮迭代中用于AES模式的输入数据的第k个双字。
根据本申请第二方面的第一至第六SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第七SM4/AES双模加密电路,编号为k的合并移位单元将编号为4k到4k+3的查表单元的输出的指定8比特合并为32比特数据;编号为k的合并移位单元的将合并得到的32比特数据、该32比特数据左移2位的结果、该32比特数据左移10位的结果、该32比特数据左移18位的结果以及该32比特数据左移24位的结果,分别输出到编号为4k到4k+3的第二选择器的第二输入与编号为k的第三选择器的第二输入之一。
根据本申请第二方面的第一至第六SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第八SM4/AES双模加密电路,编号为k的合并移位单元将编号为4k到4k+3的查表单元的输出的指定8比特合并为32比特数据;编号为k的合并移位单元的将合并得到的32比特数据、该32比特数据左移2位的结果、该32比特数据左移10位的结果、该32比特数据左移18位的结果以及该32比特数据左移24位的结果中的4个32比特数据,分别输出到编号为4k到4k+3的第二选择器的第二输入与编号为k的第三选择器的第二输入中的4个第二输入之一;编号为k的合并移位单元的将余下的32比特数据同用于SM4模式的第二输入数据的第k轮32比特输入数据异或得到的32比特数据,输出到编号为4k到4k+3的第二选择器的第二输入与编号为k的第三选择器的第二输入中的余下的第二输入。
根据本申请第二方面的第八SM4/AES双模加密电路,提供了本申请第二方面的第九 SM4/AES双模加密电路,合并移位单元包括4个输入端口、合并单元与移位单元;编号为k的合并移位单元的4个输入端口耦合编号为4k~4k+3的查表单元的输出;所述4个输入端口还耦合所述合并单元的输入;所述合并单元将从所述4个输入端口的每个获取的8比特数据按位合并;所述合并单元的输出耦合所述移位单元的输入;所述移位单元对输入的数据循环左移并输出。
根据本申请第二方面的第九SM4/AES双模加密电路,提供了本申请第二方面的第十 SM4/AES双模加密电路,所述移位单元有4个,所述合并单元的输出耦合到每个移位单元的输入;第一移位单元对输入的数据循环左移2位;第二移位单元对输入的数据循环左移10位;第三移位单元对输入的数据循环左移18位;第四移位单元对输入的数据循环左移24位;4个移位单元的输出是所述合并移位单元的输出。
根据本申请第二方面的第八SM4/AES双模加密电路,提供了本申请第二方面的第十一SM4/AES双模加密电路,合并移位单元包括4个输入端口、合并单元、移位单元与第一异或单元;编号为k的合并移位单元的4个输入端口耦合编号为4k~4k+3的查表单元的输出;所述4个输入端口还耦合所述合并单元的输入;所述合并单元将从所述4个输入端口的每个获取的8比特数据按位合并;所述移位单元有4个,所述合并单元的输出耦合到每个移位单元的输入;所述移位单元对输入的数据循环左移并输出;所述第一异或单元的输入耦合所述合并单元的输出或者4个移位单元之一的输出;所述第一异或单元的输入还耦合用于SM4模式的第二输入数据的第k轮32比特输入数据;4个移位单元的输出是所述合并移位单元的输出;所述第一异或单元的输出也是所述合并移位单元的输出。
根据本申请第二方面的第一至第十一SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第十二SM4/AES双模加密电路,在SM4模式中,编号为k的异或单元的输出,被用于产生用于SM4模式的第p轮到用于SM4模式的第4轮输入数据,其中 k<p<=4。
根据本申请第二方面的第一至第十二SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第十三SM4/AES双模加密电路,还包括4个SM4数据分发网络(310、 312、314与316);编号为k的SM4数据分发网络(310、312、314与316)的输出耦合编号为4k到4k+3的第一选择器的第二输入。
根据本申请第二方面的第十三SM4/AES双模加密电路,提供了本申请第二方面的第十四SM4/AES双模加密电路,还包括4个第二异或单元(510、512、514与516);编号为k的第二异或单元的输出耦合编号为k的SM4数据分发网络的输入;编号为k的异或单元的输出耦合到从编号为q到编号为4的第二异或单元,其中k<q<=4。
根据本申请第二方面的第一至第十四SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第十五SM4/AES双模加密电路,查表单元的输出通过AES中间分发网络耦合第二选择器的第一输入;所述AES中间分发网络将编号为0的查表单元耦合编号为0的第二选择器,将编号为5的查表单元耦合到编号为1的第二选择器,将编号为10 的查表单元耦合到编号为2的第二选择器,将编号为15的查表单元耦合到编号为0的第二选择器,将编号为3的查表单元耦合到编号为4的第二选择器,将编号为4的查表单元耦合到编号为5的第二选择器,将编号为9的查表单耦合到编号为6的第二选择器,将编号为14的查表单元耦合到编号为77的第二选择器,将编号为2的查表单元耦合到编号为8的第二选择器,将编号为7的查表单耦合到编号为9的第二选择器,将编号为 8的查表单耦合到编号为10的第二选择器,将编号为13的查表单元耦合到编号为11的第二选择器,将编号为1的查表单元耦合到编号为12的第二选择器,将编号为6的查表单元耦合到编号为13的第二选择器,将编号为11的查表单元耦合到编号为14的第二选择器,将编号为12的查表单元耦合到编号为15的第二选择器。
根据本申请第二方面的第一至第十五SM4/AES双模加密电路中的任一项,提供了本申请第二方面的第十六SM4/AES双模加密电路,在AES模式下,所述16个第一选择器 (330~33f)、16个第二选择器(370~37f)与4个第三选择器(380、382、384与386) 的每个选择器将其第一输入耦合到其输出;在SM4模式下,所述16个第一选择器 (330~33f)、16个第二选择器(370~37f)与4个第三选择器(380、382、384与386) 的每个选择器将其第二输入耦合到其输出。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A展示了根据SM4算法的加密装置的框图;
图1B展示了根据SM4标准实施加密的框图;
图2A展示了根据AES标准实施加密的示意图;
图2B展示了根据AES标准实施加密的框图;
图3展示了本申请实施例提供的SM4/AES双模加密电路;
图4A-4D展示了本申请实施例提供的的合并移位单元的框图;
图5展示了本申请实施例中的SM4/AES双模加密电路进行加密计算的示意图;
图6展示了本申请实施例提供的AES中间分发网络。
具体实施方式
下面将结合本实用新型实施例中的附图,对本实用新型实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本实用新型一部分实施例,而不是全部的实施例。基于本实用新型中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本实用新型保护的范围。
图3展示了根据本申请实施例的SM4/AES双模加密电路。
双模加密电路300的两种工作模式分别为SM4模式与AES模式。根据图3的实施例,双模加密电路用于计算AES标准的1轮迭代与SM4标准的4轮迭代。在AES标准的1轮迭代中,对128比特输入数据产生128比特输出数据并用于下次迭代。而在SM4标准的4轮迭代中,对128比特输入数据产生128比特输出数据,并且也获得了下轮迭代所需的输入数据。
参看图3,双模加密电路包括SM4数据分发网络(310、312、314与316),用于为双模加密电路提供SM4迭代运算的每轮所需要的输入数据。作为举例,SM4迭代运算的第i轮所需的数据为X(i+1)、X(i+2)与X(i+3)与rk(i)。X(i+1)、X(i+2)与X(i+3)为要加密的明文或者在之前的迭代中产生的输出数据,而rk(i)为第i轮的轮密钥。而在SM4的4轮迭代运算中,还需要轮密钥rk(i+1)、rk(i+2)与rk(i+3),以及也需要在该4轮迭代运算的前3轮产生的输出数据X(i+4)、X(i+5)与X(i+6)作为输入数据。这些输入数据都通过SM4数据分发网络(310、312、 314与316)提供给双模加密电路。
根据图3的实施例,要为SM4加密过程完成4轮迭代,为了清楚的目的,将这4轮迭代依次分别记为第i1轮迭代、第i2轮迭代、第i3轮迭代与第i4轮迭代,每轮迭代的输出数据分别记为X(i+4)、X(i+5)、X(i+6)与X(i+7)。
SM4加密过程的第i1轮迭代所需的输入数据由SM4数据分发网络310提供给双模加密电路,第i2轮迭代所需的输入数据由SM4数据分发网络312提供给双模加密电路,第i3轮迭代所需的输入数据由SM4数据分发网络314提供给双模加密电路,第i4轮迭代所需的输入数据由SM4数据分发网络316提供给双模加密电路。
图3的双模加密电路包括耦合到查表单元的16个选择器(330~33f),其每个耦合到对应的查表单元之一(340~34f)。从而选择器(33j)耦合到查表单元(34j)(其中,j为从0到f 的十六进制符号),并为查表单元(34j)提供8比特输入数据。选择器(33j)选择向其提供的2个8比特数之一提供给查表单元。由双模加密电路的工作模式(SM4模式或AES模式)来确定选择器(33j)所选择的数据。
查表单元(34j)根据8比特输入数据输出例如32比特数据。可选地,在AES模式中,查表单元(34j)输出32比特数,而在SM4模式中,查表单元(34j)输出8比特数。依然可选地,在SM4模式中,查表单元(34j)也输出32比特数,但仅其中指定的8比特数有效。作为举例,用查找表电路或静态随机访问存储器实现查表单元(34j)。例如,查表单元(34j) 存储了256个32比特数,由向查表单元(34j)提供的8比特数作为地址,寻址其存储的256 个32比特数之一。依然可选地,通过向查表单元(34j)的查找表电路或静态随机访问存储器写入数据来改变查表单元(34j)的映射规则,或者使查表单元(34j)在SM4模式与AES 模式之间切换。
在SM4模式中,查表单元(34j)提供S盒的变换功能(也参看图1B的S盒)。在AES 模式中,查表单元(34j)提供变换单元的变换功能(也参看图2B的变换单元)。
SM4数据分发网络310耦合到4个选择器(330~333),SM4数据分发网络312耦合到4个选择器(334~337),SM4数据分发网络314耦合3到4个选择器(338~33b),SM4数据分发网络316耦合到4个选择器(33c~33f)。从而SM4加密过程的第i1轮迭代由选择器(330~333)将输入数据提供查表单元(340~343),而其他选择器(334~33f)在第i1轮迭代期间无须工作,或其工作结果不对SM4加密过程产生影响。SM4加密过程的第i2轮迭代由选择器 (334~337)将输入数据提供查表单元(344~347),而其他选择器(338~33f)在第i2轮迭代期间无须工作。SM4加密过程的第i3轮迭代由选择器(338~33b)将输入数据提供查表单元 (348~34b),而其他选择器(33c~33f)在第i3轮迭代期间无须工作。SM4加密过程的第i4 轮迭代由选择器(33c~33f)将输入数据提供查表单元(34c~34f)。
在AES模式中,AES数据分发单元320将一轮迭代所要处理的128比特数据(分别记为 X0i、X1i、X2i与X3i)输入依次提供给16个选择器(330~33f),并由各选择器(33j)将输入数据提供给对应的查表单元(34j)。作为举例,X0i代表了AES输入数据的最低32比特,其中的最低8比特被提供给选择器330、接下来的次低8比特被提供给选择器331、接下来的8比特被提供给选择器332,而最高8比特被提供给选择器333。以类似的方式,X1i、X2i与 X3i各自被提供给对应的选择器(334~33f)。
查表单元(340~34f)的输出被耦合到AES中间分发网络(360)。AES中间分发网络360 将指定查表单元(340~34f)的输出耦合到指定选择器(370~37f)。AES密钥分发网络将一轮迭代所需的128比特密钥(记为W(i)、W(i+1)、W(i+2)与W(i+3),其中W(i)为32比特数) 依次耦合到选择器(380、382、384与386)。
异或单元(390、392、394与396)都是五输入异或单元,每个输入都是32比特。异或单元(390、392、394与396)对输入的5个32比特数做异或操作。异或单元(390、392、 394与396)的输入耦合到选择器(370~37f)与选择器(380、382、384与386)。异或单元 390的输入耦合到选择器(370~373)与选择器(380),异或单元392的输入耦合到选择器 (374~377)与选择器(382),异或单元394的输入耦合到选择器(378~37b)与选择器(384),异或单元396的输入耦合到选择器(37c~37f)与选择器(386)。
选择器(37j)选择向其提供的2个32比特数之一提供给同其耦合的异或单元(390~396)。由双模加密电路的工作模式(SM4模式或AES模式)来确定选择器(37j)所选择的数据。选择器(380、382、384与386)选择向其提供的2个32比特数之一提供给同其耦合的异或单元(390~396)。由双模加密电路的工作模式(SM4模式或AES模式)来确定选择器(380、382、384与386)所选择的数据。
在AES模式下,选择器(37j)将AES中间分发网络向其提供的查表单元之一的输出提供给同该选择器(37j)耦合的异或单元(390、392、394或396)。选择器(380、382、384 与386),将当前轮的轮密钥(W(i)、W(i+1)、W(i+2)与W(i+3))分别提供给异或单元(390、 392、394与396)。
在AES模式下,异或单元(390、392、394与396)分别实施同图2B的异或单元(270、272、274与276)依次对应的异或计算,计算结果是AES当前轮迭代的输出(分别记为X0i+1、X1i+1、X2i+1与X3i+1),其中异或单元390的输出是X0i+1,异或单元392的输出是X1i+1,异或单元394的输出是X2i+1,异或单元396的输出是X3i+1。
合并移位单元(350、352、354与356)仅在SM4模式中发挥作用。合并移位单元(350)的输入耦合到查表单元(340~343)的输出,合并移位单元(352)的输入耦合到查表单元(344~347)的输出,合并移位单元(354)的输入耦合到查表单元(348~34b)的输出,合并移位单元(356)的输入耦合到查表单元(34c~34f)的输出。合并移位单元(350、352、354 或356)将同其耦合的4个查表单元的32比特数据的指定8比特(例如,最低8比特)合并为32比特数,再对合并得到的32比特数实施多种循环左移。作为举例,合并移位单元(350、 352、354或356)对合并得到的32比特数,分别实施2位左移、10位左移、18位左移与24 位左移,得到4个左移后的32比特数。合并移位单元(350、352、354或356)将合并得到的32比特数与4个经左移的32比特数分别提供给同其耦合的选择器(370~37f、380、382、 384与386)。
合并移位单元350耦合到选择器(370~373)与选择器(380),合并移位单元352耦合到选择器(374~377)与选择器(382),合并移位单元354耦合到选择器(378~37b)与选择器 (384),合并移位单元356耦合到选择器(37c~37f)与选择器(386)。
在SM4模式下,选择器(370~373)与选择器(380)选择来自合并移位单元(350、352、 354或356)的32比特数并提供给同其耦合的异或单元。
可以理解地,在SM4的一轮迭代中,对S盒输出的32比特数、对该32比特数经循环左移得到的4个32比特数以及该轮的输入数据中的32比特(也参看图1B)进行异或。异或操作的操作数是6个32比特数。
在一种实施方式中,异或单元(390、392、394与396)各自是6输入异或单元,接收6个32比特输入。每个异或单元(390、392、394与396)的输入耦合到6个选择器(图3中展示了5个选择器),图3未展示的选择器仅将SM4的当前轮的输入耦合到同其对应的异或单元。例如,耦合到异或单元390的第6选择器将SM4的第i1轮迭代的32比特输入X(i1) 耦合到异或单元390,耦合到异或单元392的第6选择器将SM4的第i2轮迭代的32比特输入X(i2)耦合到异或单元392,耦合到异或单元394的第6选择器将SM4的第i3轮迭代的32 比特输入X(i3)耦合到异或单元394,耦合到异或单元396的第6选择器将SM4的第i4轮迭代的32比特输入X(i4)耦合到异或单元396。而第6选择器的另一输入耦合到例如32比特的全0数据。
在又一种实施方式中,异或单元(390、392、394与396)各自是5输入异或单元,接收5个32比特输入。而合并移位单元(350、352、354或356)额外将SM4的该轮的输入数据中的32比特同其合并得到的32比特数或左移得到的32比特数之一进行异或后,再将异或结果提供给选择器(370~37f、380、382、384或386)。例如,合并移位单元350将SM4的第 i1轮迭代的32比特输入X(i1)同其合并得到的32比特数或左移得到的32比特数之一(例如,未经左移的32比特数)进行异或,并将异或结果提供给选择器380,而将经左移得到的4个32比特数分别提供给选择器(370~373)。合并移位单元352将SM4的第i2轮迭代的32比特输入X(i2)同其合并得到的32比特数或左移得到的32比特数之一(例如,未经左移的32比特数)进行异或,并将异或结果提供给选择器382,而将经左移得到的4个32比特数分别提供给选择器(374~377)。合并移位单元354将SM4的第i3轮迭代的32比特输入X(i3)同其合并得到的32比特数或左移得到的32比特数之一(例如,未经左移的32比特数)进行异或,并将异或结果提供给选择器384,而将经左移得到的4个32比特数分别提供给选择器 (378~37b)。合并移位单元356将SM4的第i4轮迭代的32比特输入X(i4)同其合并得到的 32比特数或左移得到的32比特数之一(例如,未经左移的32比特数)进行异或,并将异或结果提供给选择器388,而将经左移得到的4个32比特数分别提供给选择器(37c~37f)。
在上面两种实施方式中,异或单元(390、392、394与396)的输出分别是SM4的第i1次迭代的输出X(i+4),第i2次迭代的输出X(i+5),第i3次迭代的输出X(i+6),第i4次迭代的输出X(i+7)。从而第i1轮迭代的输出X(i+4)还需要被耦合到SM4数据分发网络(312、314 与316)作为第i2、第i3与第i4轮迭代的输入,第i2轮迭代的输出X(i+5)还需要被耦合到 SM4数据分发网络(314与316)作为第i3轮与第i4轮迭代的输入。第i3轮迭代的输出X(i+6) 还需要被耦合到SM4数据分发网络(316)作为第i4轮迭代的输入。
在另一种实施方式中,异或单元(390、392、394与396)各自是5输入异或单元,接收5个32比特输入。而合并移位单元(350、352、354或356)将其合并得到的32比特数与左移得到的32比特数(同5个32比特数)提供给同其耦合的5个选择器(370~37f、380、382、 384或386)。而通过额外的异或单元(图3中未示出)将SM4的第i1轮迭代的32比特输入 X(i1)同异或单元390进行异或,通过额外的异或单元(图3中未示出)将SM4的第i2轮迭代的32比特输入X(i2)同异或单元392进行异或,通过额外的异或单元(图3中未示出)将 SM4的第i3轮迭代的32比特输入X(i3)同异或单元394进行异或,通过额外的异或单元(图 3中未示出)将SM4的第i4轮迭代的32比特输入X(i4)同异或单元396进行异或。在该实施方式中,同异或单元(390、392、394与396)的输出分别耦合的额外异或单元的输出分别是 SM4的第i1次迭代的输出X(i+4),第i2次迭代的输出X(i+5),第i3次迭代的输出X(i+6),第i4次迭代的输出X(i+7)。
可以理解地,SM4加密过程的第i1轮迭代由异或单元390输出X(i+4),而其他异或单元 (392、394与396)以及同这些其他异或单元耦合的选择器(374~37f、382、384与386)与合并移位单元(352、354与356)都无须工作,或其工作结果不对SM4加密过程产生影响。SM4加密过程的第i2轮迭代由异或单元392输出X(i+5),而其他异或单元(394与396)以及同这些其他异或单元耦合的选择器(377~37f、384与386)与合并移位单元(354与356) 都无须工作响。SM4加密过程的第i3轮迭代由异或单元394输出X(i+6),而其他异或单元(396)以及同这些其他异或单元耦合的选择器(37c~37f与386)与合并移位单元(356)都无须工作响。
根据图3的实施例的SM4/AES双模加密电路,SM4模式与AES模式复用了查表单元(340~34f)与异或单元(390、392、394与396)。在SM4模式中,查表单元(340~34f)提供将8比特输入转换为8比特输出的S盒功能;在AES模式中,查表单元(340~34f)提供将8比特输入转换为32比特输出的变换单元功能。除了响应于加密模式的改变而更新查表单元存储的映射表,在又一种实施方式中,查表单元(340~34f)存储256*40比特的映射表,其中40比特的32比特用于AES模式而另外8比特用于SM4模式。
图4A-4D展示了根据本申请实施例的合并移位单元的详细框图。
参看图4A,根据本申请一种实施例的合并移位单元410,包括输入端口、合并单元412 与多个移位单元(420、422、424与428)。输入端口同双模加密电路的查表单元耦合,并将查表单元输出数据的指定8比特(例如,最低8比特)提供给合并单元412。合并单元412 将4个输入端口各自提供的8比特数据合并为32比特数。合并单元412耦合到多个移位单元(420、422、424与428)的每个,将合并后的32比特数提供各移位单元。
移位单元420对合并单元412提供的32比特数循环左移10位,移位单元422对合并单元412提供的32比特数循环左移2位,移位单元424对合并单元412提供的32比特数循环左移24位,移位单元420对合并单元418提供的32比特数循环左移18位。移位单元(420、 422、424与428)各自输出移位结果。移位单元(420、422、424与428)各自输出的移位结果作为合并移位单元410的输出,合并单元412合并得到的32比特数也作为合并移位单元 410的输出。合并移位单元410输出的5个32比特数通过5个选择器被提供给双模加密电路的异或单元。
通过提供多个移位单元,使得合并移位单元410输出的多个移位结果得以被同时提供给异或单元,使得异或单元得以对多个32比特数进行异或计算。并且无须用时钟信号来同步 SM 4的每次迭代的计算过程,也无须同步SM4的4次迭代的计算过程。
参看图4B,根据本申请又一种实施例的合并移位单元430,包括输入端口、合并单元432 与多个移位单元(420、422、424与428)。输入端口同双模加密电路的查表单元耦合,并将查表单元输出数据的指定8比特(例如,最低8比特)提供给合并单元412。合并单元412将4个输入端口各自提供的8比特数据合并为32比特数。合并单元412耦合到多个移位单元(420、422、424与428)的每个,将合并后的32比特数提供各移位单元。
合并移位单元430还包括异或单元429。合并单元412的输出还耦合到异或单元429。异或单元429的输入还耦合到SM4该轮迭代的输入X(i)。当被用于处理第i1轮迭代时,异或单元429的输入还耦合到输入X(i1);若被用于处理第i2轮迭代,异或单元429的输入还耦合到输入X(i2);若被用于处理第i3轮迭代,异或单元429的输入还耦合到输入X(i3);若被用于处理第i4轮迭代,异或单元429的输入还耦合到输入X(i4)。
移位单元(420、422、424与428)各自输出的移位结果作为合并移位单元430的输出,异或单元429的输出也作为合并移位单元430的输出。合并移位单元430输出的5个32比特数通过5个选择器被提供给双模加密电路的异或单元。
可选地,异或单元429的输入不是耦合到合并单元412的输出,而是耦合多个移位单元 (420、422、424与428)之一的输出。而输入X(i)被直接作为合并移位单元的输出。
参看图4C,根据本申请一种实施例的合并移位单元450,包括输入端口、合并单元412、移位单元(452)与多个寄存器(460、462、464、468与469)。输入端口同双模加密电路的查表单元耦合,并将查表单元输出数据的指定8比特(例如,最低8比特)提供给合并单元412。合并单元412将4个输入端口各自提供的8比特数据合并为32比特数。合并单元412 耦合到移位单元452,将合并后的32比特数提供移位单元452。
移位单元452对接收的32比特数循环左移2位,将移位写过写入寄存器462;移位单元 452对接收的32比特数循环左移10位,将移位写过写入寄存器460;移位单元452对接收的 32比特数循环左移18位,将移位写过写入寄存器468;移位单元452对接收的32比特数循环左移24位,将移位写过写入寄存器464。合并单元412输出还耦合到寄存器469的输入。合并单元412输出的32比特数还被写入寄存器469。
寄存器(460、462、464、468与469)各自输出的移位结果作为合并移位单元450的输出。合并移位单元450输出的5个32比特数通过5个选择器被提供给双模加密电路的异或单元。
通过提供多个寄存器,使得合并移位单元450复用了移位单元452。同合并移位单元410 相比,合并移位单元450仅包括单一的移位单元。
参看图4D,根据本申请一种实施例的合并移位单元470,包括输入端口、合并单元412、移位单元(452)与多个寄存器(480、482、484、488与489)。移位单元452对接收的32比特数循环左移2位,将移位写过写入寄存器482;移位单元452对接收的32比特数循环左移 10位,将移位写过写入寄存器480;移位单元452对接收的32比特数循环左移18位,将移位写过写入寄存器488;移位单元452对接收的32比特数循环左移24位,将移位写过写入寄存器484。
合并移位单元470还包括异或单元490。合并单元412的输出还耦合到异或单元490。异或单元490的输入还耦合到SM4该轮迭代的输入X(i)。
寄存器(480、482、484、488与489)各自输出的移位结果作为合并移位单元470的输出。合并移位单元450输出的5个32比特数通过5个选择器被提供给双模加密电路的异或单元。
可以理解地,合并移位单元430或合并移位单元470已进行了对输入X(i)的异或计算,从而双模加密电路的异或单元的输出为其对应迭代轮的输出。而合并移位单元410或合并移位单元450未进行对输入X(i)的异或计算,从而从而双模加密电路的异或单元的输出还需要再同X(i)进行异或操作才得到其对应迭代轮的输出。
图5展示了使用根据本申请图3的实施例的SM4/AES双模加密电路的进行加密计算的示意图。
双模加密电路300是根据图3的实施例的SM4/AES双模加密电路,包括作为输入端口的 SM4数据分发网络(310、312、314与316)、AES数据分发网络(320)与AES密钥分发网络(322)。
在可选的实施方式中,在AES模式中,双模加密电路300的一个工作周期处理AES的一轮迭代,对128比特AES输入数据(记为X0i、X1i、X21与X3i)与128比特的AES轮密钥进行加密,生成128比特的AES输出数。异或单元(390、392、394与396)提供AES输出数据(分别记为X0i+1、X1i+1、X2i+1与X3i+1),这些AES输出数据又被耦合到AES数据分发网络(320)作为下一轮迭代的128比特AES输入数据。
在依然可选的实施方式中,在SM4模式中,双模加密电路300的一个工作周期处理SM4 的4轮迭代。这4轮迭代作为整体,对128比特输入数据(记为X(i)、X(i+1)、X(i+2)与X(i+3)) (520)与轮密钥(ri(i)、rk(i+1)、rk(i+2)与rk(i+3))(524)进行加密,得到128比特输出数据(记为X(i+4)、X(i+5)、X(i+6)与X(i+7))。异或单元390输出X(i+4),异或单元392输出 X(i+5),异或单元394输出X(i+6)而异或单元396输出X(i+7)。在处理SM4的4轮迭代的双模加密电路300的一个工作周期内,异或单元(390、392与394)的输出(X(i+4)、X(i+5) 与X(i+6))还作为SM4中间输入数据(522)被提供给SM4数据分发网络(312、314与316)。
可以理解地,图5中展示的输入数据(例如,128比特输入数据(SM4)520、中间输入数据(SM4)522、轮密钥(SM4)524、128比特输入数据(AES)与AES轮密钥)为示意性的,并未必然需要设置存储这些数据的寄存器,这些输入数据可以被直接耦合到SM4数据分发网络(310、312、314与316)、AES数据分发网络(320)或AES密钥分发网络(322)。
继续参看图5,双模加密电路300还包括四个异或单元(记为XOR510、512、514、516)。异或单元(XOR510、512、514、516)对耦合到其输入端的4个32比特数进行异或操作,计算结果被各自提供给SM4数据分发网络(310、312、314与316),其中异或单元XOR 510 的输出耦合到SM4数据分发网络310,异或单元XOR 512的输出耦合到SM4数据分发网络 312,异或单元XOR 514的输出耦合到SM4数据分发网络314,异或单元XOR 516的输出耦合到SM4数据分发网络316。
128比特输入数据(520)中的X(i+1)、X(i+2)与X(i+3),以及轮密钥524的rk(i)被耦合到异或单元XOR 510。128比特输入数据(520)中的X(i+2)与X(i+3)轮密钥(524)的rk(i+1),以及中间输入数据(522)的X(i+4)被耦合到异或单元XOR 512。128比特输入数据(520)中的X(i+3),轮密钥(524)的rk(i+3),以及中间输入数据(522)的X(i+4)与X(i+5)被耦合到异或单元XOR 514。轮密钥(524)的rk(i+4),以及中间输入数据(522)的X(i+4)、X(i+5) 与X(i+6)被耦合到异或单元XOR 516。
可选地,128比特输入数据(520)(X(i)、X(i+1)、X(i+2)与X(i+3))还被提供给双模加密电路300的合并移位单元(350、352、354与356)(也参看图3)。例如,128比特输入数据(520)的X(i)被耦合到合并移位单元350,128比特输入数据(520)的X(i+1)被耦合到合并移位单元352,128比特输入数据(520)的X(i+2)被耦合到合并移位单元354,128比特输入数据(520)的X(i+3)被耦合到合并移位单元356。
依然可选地,128比特输入数据(520)的X(i)被同异或单元390的输出再做异或操作,计算结果作为中间输入数据(522)的X(i+4);128比特输入数据(520)的X(i+1)被同异或单元392的输出再做异或操作,计算结果作为中间输入数据(522)的X(i+5);128比特输入数据(520)的X(i+2)被同异或单元394的输出再做异或操作,计算结果作为中间输入数据(522) 的X(i+6);128比特输入数据(520)的X(i+3)被同异或单元390的输出再做异或操作,计算结果作为SM4的该4轮迭代最终的输出X(i+7)。
在可选的实施方式中,在SM4的第i1轮迭代,异或单元XOR 510的所有输入数据就绪,其输出被提供给SM4数据分发网络310,继而异或单元390输出X(i+4)。异或单元390输出的X(i+4)被耦合到异或单元XOR 512的输入。从而异或单元XOR 512的所有输入数据就绪,SM4的第i2轮迭代得以开启。异或单元XOR 512的输出被提供给SM4数据分发网络312,继而异或单元392输出X(i+5)。异或单元392输出的X(i+5)被耦合到异或单元XOR 514的输入。从而异或单元XOR 514的所有输入数据就绪,SM4的第i3轮迭代得以开启。异或单元 XOR 514的输出被提供给SM4数据分发网络314,继而异或单元394输出X(i+6)。异或单元 394输出的X(i+6)被耦合到异或单元XOR 516的输入。从而异或单元XOR 516的所有输入数据就绪,SM4的第i4轮迭代得以开启。异或单元XOR 516的输出被提供给SM4数据分发网络316,继而异或单元396输出X(i+7)。至此完成了SM4的4轮迭代。
双模加密电路300可完全有组合逻辑电路实现,从而在双模加密电路300的一个工作周期完成SM4的4轮迭代。
图6展示了根据本申请实施例的AES中间分发网络。根据图6的实施例的AES中间分发网络用于替换图3的AES中间分发网络360。
AES中间分发网络耦合查表单元(340~34f)的每个与选择器(370~37f)的对应一个。参看图6,通过AES中间分发网络,对于耦合到异或单元390的4个选择器(370~373),查表单元340耦合选择器370,查表单元345耦合选择器371,查表单元34a耦合选择器372,查表单元34f耦合选择器373。对于耦合到异或单元392的4个选择器(374~377),查表单元 343耦合选择器374,查表单元344耦合选择器375,查表单元349耦合选择器376,查表单元34e耦合选择器377。对于耦合到异或单元394的4个选择器(378~37b),查表单元342 耦合选择器378,查表单元347耦合选择器379,查表单元348耦合选择器37a,查表单元34d 耦合选择器37b。对于耦合到异或单元396的4个选择器(37c~37f),查表单元341耦合选择器37c,查表单元346耦合选择器37d,查表单元34b耦合选择器37e,查表单元34c耦合选择器37f。
可选地,在AES模式或SM4模式中,多个查表单元(340、344、348与34c)具有相同的映射规则,其中各查表单元的查找表或存储表记录了代表映射规则的相同数据。多个查表单元(341、345、349与34d)具有相同的映射规则,多个查表单元(342、346、34a与34e) 具有相同的映射规则,多个查表单元(343、347、34b与34f)具有相同的映射规则。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种SM4/AES双模加密电路,其特征在于,包括:第一组多个选择器、多个查表单元、第二组多个选择器、第三组多个选择器、多个异或单元与多个合并移位单元;
所述第一组多个选择器的每个的输出耦合到所述多个查表单元之一的输入;
所述多个查表单元的每个的输出耦合到所述第二组多个选择器之一的第一输入;
所述多个合并移位单元的每个的输出耦合到所述第二组多个选择器的子组之一的选择器的第二输入,其中所述第二组多个选择器包括多个子组,每个子组包括相同数量的选择器;所述多个合并移位单元的每个的输出还耦合所述第三组多个选择器之一的第二输入;
所述第二组多个选择器的每个子组的每个选择器的输出,耦合到所述多个异或单元之一的输入。
2.根据权利要求1所述的SM4/AES双模加密电路,其特征在于,还包括:AES密钥分发网络;
AES密钥分发网络耦合所述第三组多个选择器的每个的第一输入,以向所述第三组多个选择器的每个提供各自需要的AES轮密钥W(i)、W(i+1)、W(i+2)与W(i+3)。
3.根据权利要求1或2所述的SM4/AES双模加密电路,其特征在于,还包括AES数据分发网络;
所述AES数据分发网络的输出耦合所述第一组多个选择器的各个选择器的第一输入,以向所述第一组多个选择器的每个提供AES输入数据。
4.根据权利要求1或2所述的SM4/AES双模加密电路,其特征在于,还包括多个SM4数据分发网络;
所述多个SM4数据分发网络的每个的输出耦合所述第一组多个选择器的子组之一的选择器的第二输入,其中所述第一组多个选择器包括多个子组,每个子组包括相同数量的选择器。
5.根据权利要求4所述的SM4/AES双模加密电路,其特征在于,
所述多个异或单元的第一异或单元的输出耦合到所述多个SM4数据分发网络的第二数据分发网络、第三数据分发网络与第四数据分发网络;
所述多个异或单元的第二异或单元的输出耦合到所述多个SM4数据分发网络的第三数据分发网络与第四数据分发网络;
所述多个异或单元的第三异或单元的输出耦合到所述多个SM4数据分发网络的第四数据分发网络。
6.根据权利要求1所述的SM4/AES双模加密电路,其特征在于,
所述多个查表单元的每个子组的输出耦合到所述多个合并移位单元之一的输入;其中所述多个查表单元包括多个子组,每个子组包括相同数量的查表单元。
7.根据权利要求1所述的SM4/AES双模加密电路,其特征在于,
合并移位单元包括多个输入端口、合并单元与移位单元;
所述多个输入端口的每个耦合所述多个查表单元的子组之一的输出;
所述多个输入端口还耦合所述合并单元的输入;所述合并单元将从所述多个输入端口获取的数据或部分数据按位合并;
所述合并单元的输出耦合所述移位单元的输入;
所述移位单元对输入的数据循环左移并输出。
8.根据权利要求7所述的SM4/AES双模加密电路,其特征在于,
所述移位单元有多个,所述合并单元的输出耦合到每个移位单元的输入;
移位单元各自对输入的数据循环左移指定的位数;
多个移位单元的输出是所述合并移位单元的输出。
9.根据权利要求8所述的SM4/AES双模加密电路,其特征在于,
所述合并移位单元还包括多个寄存器;
所述移位单元是一个移位单元;
所述移位单元对输入数据循环左移多种指定位数,并将移位结果写入所述多个寄存器之一;
所述合并单元的输出也耦合所述多个寄存器之一;
所述多个寄存器的输出是所述合并移位单元的输出。
10.根据权利要求1所述的SM4/AES双模加密电路,其特征在于,
在AES模式下,所述第一组多个选择器、第二组多个选择器与第三组多个选择器的每个选择器将其第一输入耦合到其输出;
在SM4模式下,所述第一组多个选择器、第二组多个选择器与第三组多个选择器的每个选择器将其第二输入耦合到其输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202020539147.9U CN212115336U (zh) | 2020-04-13 | 2020-04-13 | Sm4/aes双模加密电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202020539147.9U CN212115336U (zh) | 2020-04-13 | 2020-04-13 | Sm4/aes双模加密电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN212115336U true CN212115336U (zh) | 2020-12-08 |
Family
ID=73631552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202020539147.9U Active CN212115336U (zh) | 2020-04-13 | 2020-04-13 | Sm4/aes双模加密电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN212115336U (zh) |
-
2020
- 2020-04-13 CN CN202020539147.9U patent/CN212115336U/zh active Active
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3770751B1 (en) | High speed encryption key generating engine | |
US20070064933A1 (en) | Method of symmetric key data encryption | |
US9325494B2 (en) | Method for generating a bit vector | |
US11606189B2 (en) | Method and apparatus for improving the speed of advanced encryption standard (AES) decryption algorithm | |
US20080062803A1 (en) | System and method for encrypting data | |
CN106712930A (zh) | 一种sm4加密方法及装置 | |
US11258579B2 (en) | Method and circuit for implementing a substitution table | |
WO2011153666A1 (zh) | 一种s盒构造方法及s盒 | |
US20050232416A1 (en) | Method and device for determining a result | |
TWI546731B (zh) | 輸入-相依隨機數產生裝置及其方法 | |
CN104484615A (zh) | 适用于可重构阵列架构的基于空间随机化抗故障攻击方法 | |
CN111510296A (zh) | Sm4/aes双模加密电路 | |
CN104219045A (zh) | Rc4 流密码生成器 | |
CN212115336U (zh) | Sm4/aes双模加密电路 | |
RU2503135C1 (ru) | Способ криптографического преобразования информации и устройство для его реализации | |
CN103684748B (zh) | 对称式加解密方法、对称式加解密系统 | |
Singh et al. | Study & analysis of cryptography algorithms: RSA, AES, DES, T-DES, blowfish | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
CN105376052A (zh) | 对称迭代块编码方法和相应设备 | |
ES2293665T3 (es) | Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits. | |
CN101355423A (zh) | 流密码生成方法 | |
Harshitha et al. | High Performance Advanced Encryption Standard system using Secure Double Rate Registers | |
CN113872752B (zh) | 安全引擎模组、安全引擎装置和通信设备 | |
Kumar et al. | FPGA Implementation of High Performance Hybrid Encryption Standard | |
KR100935372B1 (ko) | 라인달 알고리즘을 이용한 암호화 및 복호화 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |