CN212112472U - 一种轮运算电路 - Google Patents
一种轮运算电路 Download PDFInfo
- Publication number
- CN212112472U CN212112472U CN202020868012.7U CN202020868012U CN212112472U CN 212112472 U CN212112472 U CN 212112472U CN 202020868012 U CN202020868012 U CN 202020868012U CN 212112472 U CN212112472 U CN 212112472U
- Authority
- CN
- China
- Prior art keywords
- circuit
- register
- sub
- round
- data
- 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
- Storage Device Security (AREA)
Abstract
本实用新型公开了一种轮运算电路,包括:寄存器阵列、字节替换子电路、列混淆子电路和轮密钥加子电路;寄存器阵列中设置有至少一个选择器,寄存器阵列的输出端与字节替换子电路的输入端相连;字节替换子电路的输出端与列混淆子电路的输入端相接;轮密钥加子电路具有数据输入端,列混淆子电路的输出端与轮密钥加子电路的数据输入端相连;轮密钥加子电路的输出端,与寄存器阵列的输入端相接。通过本实用新型,能够减小AES算法硬件实现的电路面积。
Description
技术领域
本实用新型涉及加密解密技术,尤其涉及一种轮运算电路。
背景技术
针对高级加密标准(Advanced Encryption Standard,AES)算法主要集中在两方面,一方面是AES算法的攻击方式与分析方法,另一方面是对AES算法的优化的研究。AES算法的硬件实现,能够使得核心算法集成于芯片中,保证和提高了AES算法的稳定性和安全性。然而,在通过硬件实现AES算法时,必须要权衡运算速度与电路面积之间的关系。
常见的AES算法实现中,AES算法的字节替换过程大部分是通过查表方式实现的,即提前生成S盒并存储,而针对密钥扩展,也是提前将轮密钥扩展好并存储,在使用时直接读取轮密钥扩展即可。然而,提前生成S盒并存储,以及提前生成轮密钥并存储,都会使得AES算法实现电路的面积较大。因而,针对AES算的优化的研究,大多是优化S盒的生成算法以及密钥扩展算法,使得AES实现电路的面积和AES算法的速度达到平衡。
AES算法可以通过软件和硬件两种方式实现。目前,AES算法主要是通过软件的方式实现的,被广泛应用于对数据库中的数据的加密,对音频类媒体流的加密等。而对多媒体信息进行加密时,由于需要加密的数据量巨大,使得加密效率较低。相比AES算法的软件实现,AES算法的硬件实现的加密效率较高,并且通过硬件实现AES算法,使得AES算法运行于芯片之中,保证和提高了加密的稳定性和安全性。然而,AES算法的硬件实现,必须要权衡电路面积和加密速度之间的关系。对于高速AES算法的硬件实现,目前有轮外流水线。轮内分级流水线以及环展开三种常用的架构来优化AES算法的硬件实现的电路面积。相比另外两个架构,轮内分级流水线架构能够在没有反馈模式的情况下实现最快加密速度;流水线架构则是在实现较快的加密速度的同时,有效减小了AES算法硬件实现的电路面积。
然而,轮外流水线、轮外分级流水线和环展开这三种常用架构,都是基于传统的AES加密轮函数进行设计的,电路中存在复用空间,AES的电路面积存在优化空间,从而使得AES算法硬件实现的电路面积依旧较大。
实用新型内容
本实用新型实施例提供一种轮运算电路,能够减小AES算法硬件实现的电路面积。
本实用新型实施例的技术方案是这样实现的:
本实用新型实施例提供一种轮运算电路,包括:寄存器阵列、字节替换子电路、列混淆子电路和轮密钥加子电路;
所述寄存器阵列中设置有至少一个选择器,所述寄存器阵列的输出端与所述字节替换子电路的输入端相连;
所述字节替换子电路的输出端与所述列混淆子电路的输入端相接;
所述轮密钥加子电路具有数据输入端,所述列混淆子电路的输出端与所述轮密钥加子电路的数据输入端相连;
所述轮密钥加子电路的输出端,与所述寄存器阵列的输入端相接。
在本实用新型的一些实施例中,所述寄存器阵列包括:至少一个寄存器;
所述至少一个寄存器,均匀排布在预设数目个寄存器支路上;每个寄存器支路上的寄存器的输出端,与位于所述每个寄存器支路上的下一个寄存器的输入端相连。
在本实用新型的一些实施例中,所述至少一个选择器分别设置于所述预设数目个寄存器支路中的寄存器支路上;
位于第i个寄存器支路上的选择器的输出端,与所述第i个寄存器支路上的第i个寄存器的输入端相连;i大于1,小于等于预设数目;
位于所述第i个寄存器支路上的所述选择器的低电平输入端,与所述第i个寄存器支路上的首个寄存器的输入端相连;位于所述第i个寄存器支路上的所述选择器的高电平输入端,与所述第i个寄存器支路上的第i-1个寄存器的输出端相连。
在本实用新型的一些实施例中,所述字节替换子电路包括至少一个字节替换子单元,字节替换子单元的数目与寄存器支路的数目相同;
所述至少一个字节替换子单元中的每个字节替换子单元,分别与所述寄存器阵列中的每个寄存器支路的输出端相接。
在本实用新型的一些实施例中,所述轮密钥加子电路还具有轮密钥输入端。
在本实用新型的一些实施例中,所述列混淆子电路的输入端包括与所述至少一个字节替换子单元对应的至少一个子输入端;
所述至少一个字节替换子单元中的每个字节替换子单元的输出端,与所述每个字节替换子单元所对应的子输入端相接。
在本实用新型的一些实施例中,所述轮运算电路设置于加密解密电路中;其中,所述加密解密电路通过所述轮密钥加子电路的轮密钥输入端接收扩展密钥。
在本实用新型的一些实施例中,所述轮运算电路还设置于密钥扩展电路中;
所述密钥扩展电路的输出端,与所述轮密钥加子电路的轮密钥输入端相接。
在本实用新型的一些实施例中,所述加密解密电路设置有数据读入信号端和数据输出信号端;
所述数据读入信号端与数据缓存器的第一信号端相接,所述数据输出信号端与所述数据缓存器的第二信号端相接;
所述加密解密电路的数据输入接口和所述数据缓存器的输出端相接,所述加密解密电路的数据输出接口和所述数据缓存器的输入端相接。
在本实用新型的一些实施例中,所述寄存器为8为移位寄存器。
本实用新型实施例中,轮运算电路包括寄存器阵列、字节替换子电路、列混淆子电路和轮密钥加子电路;寄存器阵列中设置有至少一个选择器,寄存器阵列的输出端与字节替换子电路的输入端相连,字节替换子电路的输出端与列混淆子电路的输入端相接,轮密钥加子电路具有轮密钥输入端和数据输入端,列混淆子电路的输出端和轮密钥加子电路的数据输入端相连,轮密钥加子电路的输出端与寄存器阵列的输入端相连。通过该轮运算电路,能够将行位移变换在寄存器阵列中实现,使得轮运算的轮函数能以折叠架构存在,减小了AES算法硬件实现的电路面积。
附图说明
图1为相关技术中AES算法轮函数的流程图;
图2为本实用新型实施例提供的轮运算电路的组成结构示意图一;
图3为本实用新型实施例提供的一种寄存器阵列的示意图;
图4为本实用新型实施例提供了的选择器分布在寄存器支路上的示意图;
图5是本实用新型实施例提供的轮运算电路的组成结构示意图二;
图6为本实用新型实施例提供的数据进入寄存器阵列形成状态矩阵示意图;
图7为本实用新型实施例提供的第一个轮运算周期的示意图;
图8为本实用新型实施例提供的第二个轮运算周期的示意图;
图9为本实用新型实施例提供的第三个轮运算周期的示意图;
图10为本实用新型实施例提供的第四个轮运算周期的示意图;
图11为本实用新型实施例提供的状态矩阵对比图;
图12为本实用新型实施例提供的轮函数的折叠架构示意图;
图13为本实用新型实施例提供的密钥扩展过程示意图;
图14为本实用新型实施例提供的加密解密电路和数据缓存器交互的示意图;
图15为本实用新型实施例提供的数据缓存器的组成结构示意图。
具体实施方式
为使本实用新型实施例的技术方案和优点更加清楚,下面将结合本实用新型实施例中的服务,对本实用新型的具体技术方案作进一步的详细描述。以下实施例用于说明本实用新型,但不用于限制本实用信息的范围。
在详述本实用新型实施例时,为便于说明,标识器件结构的剖面图会不依一般比例做局部放大,而且本实用新型实施例所给出的示意图只是示例,其不应限制本实用新型保护的范围。此外,在实际制作中包含长度、宽度及深度的三维空间尺寸。
应当理解,此处所描述的具体实施例仅仅用以解释本实用新型,并不用于限定本实用新型。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本实用新型的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
在以下的描述中,所涉及的术语“第一\第二”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本实用新型实施例能够以除了在这里图示或描述的以外的顺序实施。
相关技术中,AES算法轮函数的流程如图1所示,每一个周期计算16字节的数据,数据总线宽度为128比特。在AES算法的轮函数中,主要包括四种运算,即行位移变换1-1、字节替换1-2、列混淆变换1-3和轮密钥加1-4。其中,行移位变换可以按照16字节为单位进行处理,字节替换可以按照1字节为单位进行处理,列混淆变换可以按照4字节为单位进行处理,轮密钥加可以按照1字节为单位进行处理,此时,每轮轮计算需要一个行位移变换模块,16个字节替换模块,4个列混淆变换模块和16个轮密钥加模块,存在着重复单元。基于上述分析,如果能够利用轮函数内的重复单元,使得行移位变换也以4字节为单位来处理,每轮计算消耗由一个周期变为四个周期,可以使得AES算法硬件实现的电路面积缩小到原有电路的1/4。
基于上述思想,本实用新型提供一种轮运算电路,图2为本实用新型实施例提供的轮运算电路的组成结构示意图一,如图2所示,轮运算电路包括:寄存器阵列11、字节替换子电路12、列混淆子电路13和轮密钥加子电路14;
寄存器阵列11中设置有至少一个选择器,寄存器阵列11的输出端与字节替换子电路12的输入端相连;
字节替换子电路12的输出端与列混淆子电路13的输入端相接;
轮密钥加子电路14具有数据输入端;列混淆子电路13的输出端与轮密钥加子电路14的数据输入端相连;
轮密钥加子电路14的输出端,与寄存器阵列11的输入端相接。
需要说明的是,寄存器阵列11中各个寄存器中的待处理数据可以进行左移或右移,即待处理数据可以从寄存器阵列11中的一个寄存器,移动到该寄存器左边,或是右边的寄存器中。通过多次数据移动操作,实现对待处理数据完成行移位变换。寄存器阵列11中的寄存器,都与相邻的寄存器之间通过数据传输线相连接。
可以理解的是,至少一个选择器用于选择出寄存器阵列中不进行数据移动操作的寄存器。
字节替换子电路12用于对寄存器阵列11输出的数据用S盒内的值替换,列混淆子电路13对字节替换子电路12输出的数据的每一列进行独立混淆操作,轮密钥加子电路14用于对列混淆子电路13输出的数据,和轮密钥进行按位异或运算。待处理数据在经过寄存器阵列11、字节替换子电路12、列混淆子电路13和轮密钥加子电路14的运算之后,就完成了一个运算周期,在进行过四个运算周期后,就完成了一轮轮函数运算。
在本实用新型的一些实施例中,寄存器阵列11中包括:至少一个寄存器;
至少一个寄存器均匀排布在预设数目个寄存器支路上;每个寄存器支路中的寄存器的输出端,与位于每个寄存器支路上的下一个寄存器的输入端相连。
需要说明的是,预设数目可以按照实际需求来进行设定,在本实用新型的一些实施例中,可以将预设数目设置为4,此时,至少一个寄存器均匀分布在4个寄存器支路上,即这4个寄存器支路上寄存器数量相等。
可以理解的是,至少一个寄存器中寄存器的数量,是可以根据实际需求进行设置的。例如,在AES算法中,行位移变换需要按照16字节为单位进行处理,而寄存器阵列11是用于完成行位移变换的,因而,可以利用16个寄存器组成寄存器阵列11,此时,这16个寄存器均匀分布在4个寄存器支路上,即每个寄存器支路上具有4个寄存器。
在本实用新型的一些实施例中,寄存器阵列中的寄存器可以是8位移位寄存器,每个寄存器存储并移动1个字节的数据。
示例性的,本实用新型实施例提供了一种寄存器阵列的示意图,参见图3,寄存器阵列11中具有16个寄存器,分别为Rge0,Reg1,……,Reg15。这16个寄存器分别分布在寄存器支路11-1、寄存器支路11-2、寄存器支路11-3和寄存器支路11-4上。在每个寄存器支路上,寄存器的输出端以该寄存器支路上的下一个寄存器的输入端相连。此时,寄存器阵列的输出端,即是由每个寄存器支路的输出端组成,而每个寄存器支路的输出端,则是每个寄存器支路最末端的一个寄存器的输出端。
在本实用新型的一些实施例中,至少一个选择器分别设置于预设数目个寄存器支路中的寄存器支路上;
位于第i个寄存器支路上的选择器的输出端,与第i个寄存器支路上的第i个寄存器的输入端相连;i大于1,小于等于预设数目;
位于第i个寄存器支路上的选择器的低电平输入端,与第i个寄存器支路上的首个寄存器的输入端相连;位于第i个寄存器支路上的选择器的高电平输入端,与第i个寄存器支路上的第i-1个寄存器的输出端相连。
可以理解的是,本实用新型实施例中,由于对于i个寄存器支路而言,只有i大于1的寄存器支路上才设置有选择器,因此,选择器的数目为预设数目减一,即在预设数目个寄存器之中,选择器被设置在预设数目减一个寄存器支路上。
需要说明的是,由于第i个寄存器上的选择器的高电平输入端,是和第i个寄存器支路上的第i-1个寄存器的输出端相连,该选择器的低电平输入端是和第i个寄存器支路上的首个寄存器的输入端相连,该选择器的输出端,与第i个寄存器支路上的第i个寄存器的输入端相连,此时,可以看作是该选择器将第i个寄存器支路中,从首个寄存器到第i个寄存器之间的这些寄存器选择出来,可以由选择器控制这些寄存器中的数据是否进行数据移动操作。
可以理解的是,当选择器为高电平时,被选择器所选中的寄存器中的数据会经过选择器的高电平输入端进入选择器,再经过选择器的输出端进入第i个寄存器,即选择器所选中的寄存器中的数据会进入第i个寄存器中;而当选择器为低电平时,由于第i个寄存器支路上的首个寄存器的输入端与选择器的低电平输入端相连,此时,原本要进入第i个寄存器支路上的首个寄存器的数据,会经由选择器的低电平输入端进入选择器中,再经由选择器的输出端进入到第i个寄存器中,并且,由于被选择所选中的寄存器中的数据,无法通过选择器的高电平输入端进入选择器,也就无法经由选择器的输出端进入到第i个寄存器之中,即被选择器所选中的寄存器被锁定,不能进行数据移动。
示例性的,本实用新型实施例提供了选择器分布在寄存器支路上的示意图,如图4所示,寄存器阵列11中共具有4个寄存器支路,分别为寄存器支路11-1、寄存器支路11-2、寄存器支路11-3和寄存器支路11-4。此时,至少一个选择器可以设置在寄存器支路11-2、寄存器支路11-3和寄存器支路11-4上。具体的,在寄存器支路11-2中,选择器11-2a的高电平输入端与寄存器支路11-2的第1个寄存器11-21的输出端相连,选择器11-2a的低电平输入端与寄存器支路11-2的第1个寄存器11-21的输入端相连,选择器11-2a的输出端与寄存器支路11-2的第2个寄存器11-22的输入端相连,即寄存器支路11-2的第1个寄存器11-21为被选择器11-2a所选中的寄存器;在寄存器支路11-3中,选择器11-3a的高电平输入端与寄存器支路11-3的第2个寄存器11-32的输出端相连,选择器11-3a的低电平输入端与寄存器支路11-3的第1个寄存器11-31的输入端相连,选择器11-3a的输出端与寄存器支路11-3的第3个寄存器11-33的输入端相连,即寄存器支路11-3的第1个寄存器11-31和第2个寄存器11-32为被选择器11-3a所选中的寄存器;在寄存器支路11-4中,选择器11-4a的高电平输入端与寄存器支路11-4的第3个寄存器11-43的输出端相连,选择器11-4a的低电平输入端与寄存器支路11-4的第1个寄存器11-41的输入端相连,选择器11-4a的输出端与寄存器支路11-4的第4个寄存器的输入端相连,即寄存器支路11-4的第1个寄存器11-41、第2个寄存器11-42和第3个寄存器11-43为被选择器11-4a选中的寄存器。
在本实用新型的一些实施例中,字节替换子电路12包括至少一个字节替换子单元,字节替换子单元的数目与寄存器支路的数目相同;
至少一个字节替换子电路中的每个字节替换子单元,分别与寄存器阵列中的每个寄存器支路的输出端相接。
可以理解的是,字节替换子电路中的每个字节替换子单元,都是以1字节为单位进行字节替换操作,而寄存器支路的输出端即是位于寄存器支路末端的寄存器的输出端,位于寄存器支路末端的寄存器中长度1字节的数据,通过这些寄存器的输出端进入到字节替换子电路中,为了能够对每个寄存器支路末端的寄存器中的数据同时进行字节替换操作,字节替换子电路中需要具有预设数目个字节替换子单元,即字节替换子单元的数目与寄存器支路的数目相同。
在本实用新型的一些实施例中,轮密钥加子电路还具有轮密钥输入端。
可以理解的是,轮密钥加子电路需要利用扩展密钥对数据进行运算,此时,在轮密钥加子电路上需要设置用于接收扩展密钥的输入端,即轮密钥加子电路还具有轮密钥输入端。
在本实用新型的一些实施例中,列混淆子电路的输入端包括与至少一个字节替换子单元对应的至少一个子输入端;
至少一个字节替换子单元中的每个字节替换子单元的输出端,与每个字节替换子单元所对应的子输入端相接。
可以理解的是,由于字节替换模块具有至少一个字节替换子单元,而每个字节替换子单元都需要输出经过字节替换的数据,因而,列混淆子电路需要设置与每个字节替换子单元相对应的子输入端,来接收每个字节替换子单元输出的数据。此时,列混淆子电路中的子输入端的个数,与字节替换子电路中字节替换子单元的个数相同。
示例性的,图5是本实用新型实施例提供的轮运算电路的组成结构示意图二,如图5所示,16个寄存器Rge0,Reg1,……,Reg15分别分布在寄存器支路11-1、寄存器支路11-2、寄存器支路11-3和寄存器支路11-4上,且每个寄存器支路上都有选择器。字节替换子电路12由字节替换子单元12-1、字节替换子单元12-2、字节替换子单元12-3和字节替换子单元12-4组成。寄存器阵列11的寄存器支路11-1的输出端,即寄存器支路11-1上的寄存器Reg0的输出端与字节替换子单元12-4的输入端相连;寄存器支路11-2的输出端,即寄存器支路11-2上的寄存器Reg1的输出端与字节替换子单元12-3的输入端相连;寄存器支路11-3的输出端,即寄存器支路11-3上的寄存器Reg2的输出端与字节替换子单元12-2相连,寄存器支路11-4的输出端,即寄存器支路11-4上的寄存器Reg3的输出端与字节替换子单元12-1的输入端相连。字节替换子单元12-1的输出端、字节替换子单元12-2的输出端、字节替换子单元12-3的输出端和字节替换子单元12-4的输出端,均与列混淆子电路13的输入端相连,列混淆子电路13的输出端与轮密钥加子电路14的数据输入端相连,轮密钥加子电路14的输出端,与寄存器阵列11的输入端相接。
对于AES算法而言,假设16字节的数据分别为S00~S33,这16个字节的数据进入图5所示的轮运算电路中的寄存器阵列11之后,分别存储在寄存器阵列的每个寄存器中,此时,寄存器阵列11中的数据可以组成状态矩阵。图6为本实用新型实施例提供的数据进入寄存器阵列形成状态矩阵示意图,如图6所示,16个字节的数据S00、S10、S20、S30、S01、……、S23、S33先是以一个数据序列输入寄存器阵列11,这些数据进入寄存器阵列11之后,会将S03、S02、S01和S00按照该顺序,对应写入第1个寄存器支路11-1的寄存器11-11、寄存器11-12、寄存器11-13和寄存器11-14中,即S03、S02、S01和S00处于状态矩阵的第1行;将S13、S12、S11和S10按照该顺序,对应写入第2个寄存器支路11-2的寄存器11-21、寄存器11-22、寄存器11-23和寄存器11-24中,即S13、S12、S11和S10处于状态矩阵的第2行;将S23、S22、S21和S20按照该顺序,对应写入第3个寄存器支路11-3的寄存器11-31、寄存器11-32、寄存器11-33和寄存器11-34中,即S23、S22、S21和S20处于状态矩阵的第2行,将S33、S32、S31和S30按照顺序,对应写入第4个寄存器支路11-4的寄存器11-41、寄存器11-42、寄存器11-43和寄存器11-44中,即S33、S32、S31和S30处于状态矩阵的第4行。
之后,在第一个轮运算周期中,所有选择器均被置为高电平,寄存器11-14中的S00、寄存器11-24中的S10、寄存器11-34中的S20和寄存器11-44中的S30,会分别对应进入到字节替换子单元12-4、字节替换子单元12-3、字节替换子单元12-2和字节替换子单元12-1中,经过字节替换的数据再进入到列混淆子电路13中进行列混淆操作,之后,经过列混淆操作的数据再进入轮密钥加子电路14中进行轮密钥加操作,最后,将经过轮密钥加的数据在传输给寄存器阵列11,即这些数据分别进入寄存器11-11、寄存器11-21、寄存器11-31和寄存器11-41中。图7为本实用新型实施例提供的第一个轮运算周期的示意图,如图7所示,在经过第一个轮运算周期之后,状态矩阵中的所有元素都向右移动了一次,此时,处于状态矩阵最右端一列中的元素S00、S10、S20和S30,在经过了字节替换操作、列混淆操作和轮密钥加操作之后,会变为S00’、S10’、S20’和S30’,回到状态矩阵的最左端。
在第二个轮运算周期中,将第2个寄存器支路11-2中的选择器11-2a置为低电平,此时,寄存器11-14中的S01、寄存器11-24中的S11、寄存器11-34中的S21和寄存器11-44中的S31,会分别对应进入到字节替换子单元12-4、字节替换子单元12-3、字节替换子单元12-2和字节替换子单元12-1中,经过字节替换的数据再进入到列混淆子电路13中进行列混淆操作,之后,经过列混淆操作的数据再进入轮密钥加子电路14中进行轮密钥加操作,最后,将经过轮密钥加的数据在传输给寄存器阵列11。此时,由于将第2个寄存器支路11-2中的选择器置为了低电平,即将寄存器11-21锁定,寄存器11-21中的数据不参与数据移动,需要进入寄存器11-21中的数据会直接经由选择器11-2a的低电平输入端进入选择器11-2a,再经由选择器11-2a的输出端进入寄存器11-22中。图8为本实用新型实施例提供的第二个轮运算周期的示意图,如图8所示,处于状态矩阵最右端一列中的元素S01、S11、S21和S31,分别经过字节替换操作、列混淆操作和轮密钥加操作之后,变为S01’、S11’、S21’和S31’,其中,由于S10’不参与数据移动操作,S01’、S21’和S31’会回到状态矩阵的最左端一列,而S11’则会进入寄存器11-22中,到达状态矩阵从左至右数的第二列。
在第三个轮运算周期中,将第2个寄存器支路11-2中的选择器11-2a,和将第3个寄存器支路11-3中的选择器11-3a置都为低电平,此时,寄存器11-14中的S02、寄存器11-24中的S12、寄存器11-34中的S22和寄存器11-44中的S32,对应进入到字节替换子单元12-4、字节替换子单元12-3、字节替换子单元12-2和字节替换子单元12-1中,经过字节替换的数据再进入到列混淆子电路13中进行列混淆操作,之后,经过列混淆操作的数据再进入轮密钥加子电路14中进行轮密钥加操作,最后,将经过轮密钥加的数据在传输给寄存器阵列11。此时,由于选择器11-3a被置为低电平,即寄存器11-21、寄存器11-31和寄存器11-32被锁定,其中的数据不再参与数据移动过程,这时,需要进入寄存器11-21的数据,会直接通过选择器11-2a的低电平输入端进入到选择器11-2a中,进而进入到寄存器11-22中;需要进入寄存器11-31的数据,会直接通过选择器11-3a的低电平输入端进入到选择器11-3a中,再经过选择器11-3a的输出端进入到寄存器11-33中。图9为本实用新型实施例提供的第三个轮运算周期的示意图,如图9所示,处于状态矩阵最右侧一列的数据S02、S12、S22和S32在经过字节替换操作、列混淆操作和轮密钥加操作之后,变为了S02’、S12’、S22’和S32’,之后,由于S10’、S20’和S21’不参与数据移动过程,S02’和S32’会到达状态矩阵的最左侧一列,S12’到达状态矩阵的第二列,S22’到达状态矩阵的第三列。
在第四个轮运算周期中,将第2个寄存器支路11-2中的选择器11-2a、第3个寄存器支路11-3中的选择器11-3a和第4个寄存器支路11-4的选择器11-4a均置为低电平,类似的,寄存器11-14中的S03、寄存器11-24中的S13、寄存器11-34中的S23和寄存器11-44中的S33在经过字节替换操作、列混淆子电路和轮密钥加操作之后,所得到的数据在输入进寄存器阵列11中。此时,由于选择器11-2a、选择器11-3a和选择器11-4a均为低电平,即寄存器11-21、寄存器11-31、寄存器11-32、寄存器11-41、寄存器11-42和寄存器11-43均被锁定,在这些寄存器中的数据不会参与数据移动,因而,需要进入寄存器11-21的数据,会直接通过选择器11-2a的低电平输入端进入到选择器11-2a中,进而进入到寄存器11-22中;需要进入寄存器11-31的数据,会直接通过选择器11-3a的低电平输入端进入到选择器11-3a中,再经过选择器11-3a的输出端进入到寄存器11-33中;同理的,需要进入寄存器11-41的数据,会直接通过选择器11-4a的低电平输入端进入到选择器11-4a中,进而进入到寄存器11-44中。图10是本实用新型实施例提供的第四个轮运算周期的示意图,如图10所示,处于状态矩阵最右侧一列的数据S03、S13、S23和S33在经过字节替换操作、列混淆操作和轮密钥加操作之后,变为了S03’、S13’、S23’和S33’,之后,由于S10’、S20’、S21’、S30’、S31’和S32’均不参与数据移动过程,S03’状态矩阵的最左侧一列,S13’到达状态矩阵的第二列,S23’到达状态矩阵的第三列,S33’到达状态矩阵的第四列。
图11是本实用新型实施例提供的状态矩阵对比图。通过上述四个轮运算周期,参见图11,在图11左侧的状态矩阵经过轮运算之后,就可以得到图11右侧的状态矩阵,即将状态矩阵第1行中的元素由S00、S01、S02、S03,变为了S00’、S01’、S02’、S03’;状态矩阵第2行中的元素由S10、S11、S12、S13,变为了S11’、S12’、S13’、S10’;状态矩阵第3行中的元素由S20、S21、S22、S23分别变为了S22’、S23’、S20’、S21’;状态矩阵第4行中的元素由S30、S31、S32、S33变为S33’、S30’、S31’、S32’,如此,就可以实现AES算法的一轮轮运算。此时,由于通过四个轮运算周期实现了一次轮运算过程,可以理解为轮运算电路将AES算法中的轮函数折叠起来,因而,本实用新型实施例提供的轮运算电路可以看作是将轮函数的折叠架构。示例性的,图12为本实用新型实施例提供的轮函数的折叠架构示意图,如图12所示,本实用新型实施例提供的轮运算电路是将每轮轮运算中的行位移操作12-1、字节替换操作12-2、列混淆操作12-3和轮密钥加操作12-4折叠起来,分成四个周期来完成。
本实用新型实施例中,轮运算电路包括寄存器阵列、字节替换子电路、列混淆子电路和轮密钥加子电路;寄存器阵列中设置有至少一个选择器,寄存器阵列的输出端与字节替换子电路的输入端相连,字节替换子电路的输出端与列混淆子电路的输入端相接,轮密钥加子电路具有轮密钥输入端和数据输入端,列混淆子电路的输出端和轮密钥加子电路的数据输入端相连,轮密钥加子电路的输出端与寄存器阵列的输入端相连。通过该轮运算电路,能够将行位移变换在寄存器阵列中实现,使得轮运算的轮函数能以折叠架构存在,减小了AES算法硬件实现的电路面积。
在本实用新型实施例中,轮运算电路设置于加密解密电路中;其中,加密解密电路通过轮密钥加子电路14的轮密钥输入端接收扩展密钥。
需要说明的是,本实用新型实施例中,轮运算电路设置于加密解密电路中,即轮运算电路与用于接收数据、传输数据等的外围电路共同组成加密解密电路。其中,轮运算电路中的轮密钥加子电路14的轮密钥输入端作为加密解密电路的扩展密钥接收端,即加密解密电路通过轮密钥加电路14的轮密钥输入端接收扩展密钥,以使轮运算电路中的轮密钥加电路14进行轮密钥加操作。
在本实用新型实施例中,轮运算电路能够设置于加密解密电路中,使得AES算法的加密解密过程能够基于折叠的轮函数进行,减小了加密解密电路的电路面积,从而减小了AES算法硬件实现的电路面积。
在本实用新型的一些实施例中,轮运算电路还设置于密钥扩展电路中;密钥扩展电路的输出端,与轮密钥加子电路的轮密钥输入端相接。
需要说明的是,在AES算法的每一轮轮运算,都需要利用扩展密钥进行轮密钥加操作。而扩展密钥是由密钥扩展电路进行密钥扩展操作生成的,值得注意的是,密钥扩展操作同样是以4字节为单位进行处理的,因此,密钥扩展操作同样可以用于轮运算电路中。
在本实用新型实施例中,扩展密钥是在初始密钥的基础上扩展而来的。在密钥扩展过程中,初始密钥是以4行N列的矩阵表示,当初始密钥为W[0]~W[3]时,密钥扩展先要将初始密钥W[0]~W[3]向右循环移动一个字节,并对经过右移操作的数据进行字节替换,接着对经过字节替换操作的数据进行列混淆,最后对经过列混淆操作的数据和上一轮次扩展出的密钥进行加操作。此时,将密钥扩展过程中的数据移动操作可以利用寄存器阵列11完成,密钥扩展过程中的字节替换操作可以由字节替换子电路12完成,密钥扩展过程中的列混淆操作可以由列混淆子电路13完成,密钥扩展过程中加操作可以通过轮密钥加子电路14完成。
在本实用新型的一些实施例中,由于对于AES算法的加密过程,是每进行一次轮运算即要进行一次密钥扩展,而对于AES算法的解密过程,则第一轮轮运算解密密钥是AES加密过程中最后一轮的加密密钥,因此,对于AES算法的解密过程,需要在解密开始之前,提前生成每轮轮运算对应的解密密钥,以使得解密时可以按轮调用扩展密钥。
在本实用新型的另一些实施例中,在AES加密过程中,密钥扩展电路通过轮运算电路,在每一轮轮运算开始前,生成该轮的扩展密钥,在AES解密过程中,则是先可以进行密钥扩展直至得到最后一轮轮运算对应的解密密钥,不存储中间的轮运算的扩展密钥,然后由最后一轮轮运算对应的解密密钥,反向扩展出每轮轮运算对应的解密密钥。
示例性的,本实用新型实施例提供了密钥扩展过程示意图,如图13所示,在加密过程13-1中,初始密钥为W[0]~W[3]时,并且初始密钥W[0]~W[3]用于第一轮轮运算中的加密操作13-10,密钥扩展电路通过轮运算电路,将一次密钥扩展过程分为四个周期进行,进而得到第二轮轮运算的扩展密钥W[4]~W[7],以便于加密解密电路中的轮运算电路,利用第二轮轮运算的扩展密钥W[4]~W[7]进行第二轮轮运算的加密操作13-11;密钥扩展电路继续通过轮运算电路进行密钥扩展操作,直至得到最后一轮轮运算的扩展密钥W[40]~W[43],以便于加密解密电路中的轮运算电路,利用扩展密钥W[40]~W[43]进行最后一轮轮运算的加密操作13-110。在解密过程13-2中,密钥扩展电路先从W[0]~W[3]扩展到W[40]~W[43],以便于利用W[40]~W[43]进行解密过程13-2,然后再利用最后一轮轮运算的扩展密钥W[40]~W[43]反向扩展,并用反向扩展的密钥进行每一轮轮运算的解密操作,例如解密操作13-20,……,解密操作13-29,解密操作13-210等,这样,密钥扩展电路就利用轮运算电路完成了密钥扩展过程。
在本实用新型实施例中,轮运算电路还能设置与密钥扩展电路中,使得AES算法的密钥扩展过程可以基于折叠的轮函数实现,减小了密钥扩展电路的电路面积,从而进一步减少了AES算法硬件实现的电路面积。
在本实用新型的一些实施例中,加密解密电路设置有数据输入信号端和数据输出信号端;
数据读入信号端与数据缓存器的第一信号端相接,数据输出信号端与数据缓存器的第二信号端相接;
加密解密电路的数据输入接口和数据缓存器的输出端相接,加密解密电路的数据输出接口和数据缓存器的输入端相接。
可以理解的是,加密解密电路上设置的数据读入信号端和数据输出信号端,是用于向数据缓存器发送使能信号的。具体的,加密解密电路通过数据读入信号端发送数据读入使能信号,数据缓存器通过第一信号接收端接收到数据读入使能信号时,就会知晓加密解密电路需要从数据缓存器中读取待处理数据进行处理,此时,数据缓存器将其所存储的待处理数据提取出来,并通过数据缓存器的输出端发送给加密解密电路,加密解密电路通过数据输入接口读入待处理数据,然后对待处理数据进行加密操作,或是进行解密操作,得到处理后的数据。加密解密电路通过数据输出信号端向数据缓存器发送数据输出使能信号,数据缓存器通过第二信号接收端接收到数据输出使能信号之后,便会知晓加密解密电路已经对数据处理完成,需要将处理后的数据保存到数据缓存器中,此时,数据缓存器通过数据缓存器的输入端,接收加密解密电路通过数据输出接口所发送的处理后的数据,并将处理后的数据保存到数据缓存器中。
在本实用新型的一些实施例中,加密解密电路可以在加密过程开始前,先将加密明文的待处理数据存入数据缓存器中,在加密过程开始时,从数据缓存器中将待处理数据取出,进行加密处理,等到加密过程完成后,将密文的处理后的数据再存入到数据缓存器中。对应的,加密解密电路在解密过程开始前,先将密文的待处理数据存入数据缓存器中,在解密过程开始时,从数据缓存器中将待处理数据取出,进行解密处理,等到完成解密过程之后,将明文的处理后的数据再存入到数据缓存器中。
示例性的,本实用新型实施例提供了加密解密电路和数据缓存器交互的示意图,参见图14,加密解密电路14-1通过数据读入信号端向数据缓存器14-2发送数据读入使能信号14-3,并通过数据缓存器14-2的输出端和数据输入接口,接收数据缓存器14-2发送的待处理数据14-4,加密解密电路14-1在对待处理数据经过加密,或是解密处理之后,再向数据缓存器14-2发送数据输出使能信号14-5,之后,将处理后的数据14-6通过数据输出接口和数据缓存器14-2的输入端,将处理后的数据14-6发送给数据缓存器14-2。
在本实用新型实施例中,数据缓存器是由多个寄存器、多个选择器、逻辑与门和逻辑或门组成的。其中,数据缓存器的多个寄存器用于存储待处理数据,数据缓存器的多个选择器用于根据指示信号,确定寄存器中的待处理数据是否可以移动,逻辑与门和逻辑或门用于根据使能信号,生成用于指示信号。
示例性的,本实用新型实施例提供了数据缓存器的组成结构示意图,如图15所示,第一信号端15-11和寄存器的状态指示信号端15-12共同进入逻辑与门15-1,其中,寄存器的状态指示信号端15-12用于说明寄存器中是否存有待处理数据;第二信号端15-21和数据缓存器的输入端15-22共同进入逻辑与门15-2。逻辑与门15-1的输出端和逻辑与门15-2的输出端共同接入逻辑或门15-3,逻辑或门15-3的输出为指示信号。逻辑或门15-3的输出端与选择器15-41的高电平输入端相接,选择器15-41的输出端与寄存器15-51相接,选择器15-41的低电平输出端与寄存器15-51的输出端相接,同时,寄存器15-51的输出端还与选择器15-42的高电平输入端相接。类似的,选择器15-42的输出端与寄存器15-52相接,选择器15-42的低电平输入端与寄存器15-52的输出端相接,同时,寄存器15-52的输出端还与选择器15-43的高电平输入端相接,依次类推,直至将选择器15-43、寄存器15-53、选择器15-44和寄存器15-54连接完毕。值得注意的是,寄存器15-54的输出端除了与选择器15-44的低电平输出端相接之外,还与数据缓存器的输出端相接。当第一信号端15-11得到数据读入使能信号时,且寄存器中具有待处理数据时,逻辑与门15-2输出高电平,使得逻辑或门15-3输出高电平,因而,指示信号为高电平,且各个选择器被置为高电平,此时,指示信号进入选择器15-41中,使得寄存器15-51中的数据右移,从而使得所有寄存器中的数据右移,形成数据流,从数据缓存器的输出端输出。当第二信号端15-21得到数据输出使能信号时,且数据缓存器的输入端15-22有数据流进入时,逻辑与门15-2的输出为高电平,使得逻辑或门15-3的输出为高电平,即指示信号为高电平,并且指示信号中还包含有需要存储的数据流,此时,指示信号进入选择器15-41中,并经过选择器15-41进入寄存器15-51中,由此,数据流就可以写入到各个寄存器中了,之后,各个选择器被置为低电平,使得各个寄存器被锁定,以存储数据流。
本实用新型实施例中,加密解密电路可以通过向数据缓存器发送使能信号,使得一个缓存器既能存储明文,也可以存储密文,如此,可以进一步减小AES算法硬件实现的电路面积。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
以上所述,仅为本实用新型的具体实施方式,但本实用新型的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本实用新型揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本实用新型的保护范围之内。因此,本实用新型的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种轮运算电路,其特征在于,包括:寄存器阵列、字节替换子电路、列混淆子电路和轮密钥加子电路;
所述寄存器阵列中设置有至少一个选择器,所述寄存器阵列的输出端与所述字节替换子电路的输入端相连;
所述字节替换子电路的输出端与所述列混淆子电路的输入端相接;
所述轮密钥加子电路具有数据输入端,所述列混淆子电路的输出端与所述轮密钥加子电路的数据输入端相连;
所述轮密钥加子电路的输出端,与所述寄存器阵列的输入端相接。
2.根据权利要求1所述的轮运算电路,其特征在于,所述寄存器阵列包括:至少一个寄存器;
所述至少一个寄存器,均匀排布在预设数目个寄存器支路上;每个寄存器支路上的寄存器的输出端,与位于所述每个寄存器支路上的下一个寄存器的输入端相连。
3.根据权利要求2所述的轮运算电路,其特征在于,所述至少一个选择器分别设置于所述预设数目个寄存器支路中的寄存器支路上;
位于第i个寄存器支路上的选择器的输出端,与所述第i个寄存器支路上的第i个寄存器的输入端相连;i大于1,小于等于预设数目;
位于所述第i个寄存器支路上的所述选择器的低电平输入端,与所述第i个寄存器支路上的首个寄存器的输入端相连;位于所述第i个寄存器支路上的所述选择器的高电平输入端,与所述第i个寄存器支路上的第i-1个寄存器的输出端相连。
4.根据权利要求1至3任一项所述的轮运算电路,其特征在于,所述字节替换子电路包括至少一个字节替换子单元,字节替换子单元的数目与寄存器支路的数目相同;
所述至少一个字节替换子单元中的每个字节替换子单元,分别与所述寄存器阵列中的每个寄存器支路的输出端相接。
5.根据权利要求1至3任一项所述的轮运算电路,其特征在于,所述轮密钥加子电路还具有轮密钥输入端。
6.根据权利要求4所述的轮运算电路,其特征在于,所述列混淆子电路的输入端包括与所述至少一个字节替换子单元对应的至少一个子输入端;
所述至少一个字节替换子单元中的每个字节替换子单元的输出端,与所述每个字节替换子单元所对应的子输入端相接。
7.根据权利要求5所述的轮运算电路,其特征在于,所述轮运算电路设置于加密解密电路中;其中,所述加密解密电路通过所述轮密钥加子电路的轮密钥输入端接收扩展密钥。
8.根据权利要求7所述的轮运算电路,其特征在于,所述轮运算电路还设置于密钥扩展电路中;
所述密钥扩展电路的输出端,与所述轮密钥加子电路的轮密钥输入端相接。
9.根据权利要求7或8所述的轮运算电路,其特征在于,所述加密解密电路设置有数据读入信号端和数据输出信号端;
所述数据读入信号端与数据缓存器的第一信号端相接,所述数据输出信号端与所述数据缓存器的第二信号端相接;
所述加密解密电路的数据输入接口和所述数据缓存器的输出端相接,所述加密解密电路的数据输出接口和所述数据缓存器的输入端相接。
10.根据权利要求1至3、或6至8任一项所述的轮运算电路,其特征在于,所述寄存器为8位移位寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202020868012.7U CN212112472U (zh) | 2020-05-21 | 2020-05-21 | 一种轮运算电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202020868012.7U CN212112472U (zh) | 2020-05-21 | 2020-05-21 | 一种轮运算电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN212112472U true CN212112472U (zh) | 2020-12-08 |
Family
ID=73622585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202020868012.7U Active CN212112472U (zh) | 2020-05-21 | 2020-05-21 | 一种轮运算电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN212112472U (zh) |
-
2020
- 2020-05-21 CN CN202020868012.7U patent/CN212112472U/zh active Active
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Implementation approaches for the advanced encryption standard algorithm | |
US6072873A (en) | Digital video broadcasting | |
US20080031454A1 (en) | High throughput AES architecture | |
EP1271839B1 (en) | AES Encryption circuit | |
US7502463B2 (en) | Methods and apparatus for implementing a cryptography engine | |
CN112422272B (zh) | 一种防功耗攻击的aes加密方法及电路 | |
KR20050053379A (ko) | AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법 | |
KR100377176B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 | |
CN106506142B (zh) | 一种低复杂度的aes一体化加解密器实现方法 | |
CN112398639B (zh) | 一种Fountain轻量级加密算法的实现装置、方法及应用 | |
CN105007154B (zh) | 一种基于aes算法的加密解密装置 | |
CN103684749B (zh) | 一种基于面积与性能平衡优化的klein加密实现方法 | |
US20040156499A1 (en) | Method of designing optimum encryption function and optimized encryption apparatus in a mobile communication system | |
US6732271B1 (en) | Method of deciphering ciphered data and apparatus for same | |
US10237066B1 (en) | Multi-channel encryption and authentication | |
CN108183790B (zh) | 一种aes加密装置、芯片及系统 | |
CN101431405A (zh) | Des加密电路和方法及其硬件电路实现方法 | |
US20100257373A1 (en) | Cryptographic processor and ic card | |
CN212112472U (zh) | 一种轮运算电路 | |
US7257229B1 (en) | Apparatus and method for key scheduling | |
Deshpande et al. | AES encryption engines of many core processor arrays on FPGA by using parallel, pipeline and sequential technique | |
Rais et al. | Efficient hardware realization of advanced encryption standard algorithm using Virtex-5 FPGA | |
CN108494547B (zh) | 一种aes加密系统及芯片 | |
Rais et al. | A novel FPGA implementation of AES-128 using reduced residue of prime numbers based S-Box | |
CN100525183C (zh) | 一种实现sms4加解密算法的设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |