CN114422111B - 一种轻量级的sm4算法的硬件实现电路 - Google Patents
一种轻量级的sm4算法的硬件实现电路 Download PDFInfo
- Publication number
- CN114422111B CN114422111B CN202210326183.0A CN202210326183A CN114422111B CN 114422111 B CN114422111 B CN 114422111B CN 202210326183 A CN202210326183 A CN 202210326183A CN 114422111 B CN114422111 B CN 114422111B
- Authority
- CN
- China
- Prior art keywords
- module
- key
- data
- ctrl
- encryption
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种轻量级的SM4算法的硬件实现电路,包括控制模块,控制模块用于根据当前的周期数和时钟输出相应的控制信号;S盒模块,用于对来自密钥扩展模块和加密模块的数据进行S盒操作;固定参数CK生成模块,用于根据控制信号生成相应的固定参数;密钥扩展模块,用于根据控制信号更新密钥来生成轮密钥;加密模块,用于根据控制信号利用轮密钥更新加密运算的中间结果。该电路首先接收初始信号,然后由控制模块产生相应的控制信号完成密钥扩展运算、加密运算,最后得到加密结果并输出密文。本发明的整个加密过程采用单比特串行的方式进行数据传输。与现有技术相比,本发明实现面积极小,适用于资源受限的设备,具有良好的应用前景。
Description
技术领域
本发明涉及SM4算法的加密实现技术,具体涉及一种轻量级的SM4算法硬件实现电路。
背景技术
随着物联网技术的发展和普及,资源受限设备的应用越来越广泛。如何在充分利用既有资源为资源受限设备存取、传输的数据提供有效的安全性保护就显得尤为重要。
SM4算法是由国家商用密码管理办公室于2006年公布的用于无线局域网产品的密码算法。SM4算法继2012年被批准为行业标准后,2021年正式成为ISO/IEC国际标准。
SM4算法是一种基于Feistel结构的分组密码算法,其分组长度和密钥长度均为128比特。SM4加密算法由32次迭代运算和一次反序变换构成,每次迭代都需要载入一组轮密钥。解密算法与加密算法结构相同,区别是轮密钥的使用顺序相反。
SM4算法既可以用软件实现,也可以用硬件实现。其中硬件实现方式运行速度快,安全性高。SM4算法硬件实现可使用全展开的硬件电路结构,可获得高吞吐率,但面积开销很大。采用按轮展开的方式则可以在很大程度上减少面积的开销,但吞吐率会较低。现有的专利或者技术通常用BP算法极其变体、Paar算法机器变体、矩阵分解的方式来实现线性层,然而上述方法并不适配单比特串行的硬件实现方式,因此此处采用一种将线性层与后续异或操作结合的新方法,以此达到节约硬件开销的目的。
发明内容
本发明要解决的技术问题是针对以上不足,提供一种轻量级的SM4算法的硬件实现电路。
为解决以上技术问题,本发明采用以下技术方案:
本发明整个电路的输入信号为:明文i_plaintext、初始密钥i_key、时钟信号clk、开始信号start、复位信号rst。整个电路的输出信号为:密文o_data,完成信号o_done;其中控制模块的输入信号是开始信号start、复位信号rst、时钟信号clk和固定参数d_ck,输出信号是控制信号ctrl_k、ctrl_s、ctrl_rt_s、ctrl_sbox、ctrl_sbox_k、ctrl_ck、ctrl_init_ck和加密完成信号o_done、单比特固定参数ck、单比特系统参数fk;S盒模块的输入信号为控制信号ctrl_sbox_k、需要执行S盒操作的数据sbox_in,输出信号为S盒的结果sbox_out;固定参数CK生成模块的输入信号是控制信号ctrl_ck、ctrl_init_ck,输出信号是8比特长的固定参数d_ck;密钥扩展模块的输入信号是初始密钥i_key、时钟信号clk、单比特系统参数fk、单比特固定参数ck、S盒操作的结果sbox_out、控制信号ctrl_k、ctrl_sbox_k,输出信号是轮密钥rk、需要执行S盒操作的数据sbox_in_k;加密模块的输入信号是明文i_plaintext、时钟信号clk、轮密钥rk、S盒操作的结果sbox_out、控制信号ctrl_sbox_s、ctrl_s、ctrl_rt,输出信号是密文o_data、完成信号o_done、需要执行S盒操作的数据sbox_in_s。
控制模块,接收来自外界的信号(开始信号start、复位信号rst和时钟信号clk)经过处理后向其他模块发出控制信号ctrl_k、ctrl_s、ctrl_rt_s、ctrl_sbox、ctrl_sbox_k、ctrl_ck、ctrl_init_ck,向外输出加密完成信号o_done,同时将来自固定参数CK生成模块的8比特固定参数d_ck以单比特ck的形式输入至密钥扩展模块、将系统参数FK以单比特fk的形式输入至密钥扩展模块。
S盒模块,在控制信号ctrl_sbox_k的控制下选择接收来自加密模块的8比特数据sbox_in_s或来自密钥扩展模块的8比特数据sbox_in_k进行置换操作并将8比特置换结果sbox_out输回加密模块或密钥扩展模块。
固定参数CK生成模块,在控制信号ctrl_ck和ctrl_init_ck的控制下将生成的密钥扩展所需的8位固定参数d_ck输入到控制模块。
密钥扩展模块,接收来自外部输入的初始密钥i_key、来自控制模块的单比特系统参数fk、单比特固定参数ck、来自S盒模块的8比特数据sbox_out。并在时钟信号clk、和控制信号ctrl_k、ctrl_sbox_k的控制下完成密钥扩展,同时向加密模块输入轮密钥rk、向S盒模块输入8比特数据sbox_in_k。
加密模块,接收来自外部输入的明文i_plaintext、来自密钥扩展模块的轮密钥rk、来自S盒模块的8比特数据sbox_out。并在时钟信号clk和控制信号ctrl_sbox_s、ctrl_s、ctrl_rt_s的控制下完成加密操作,并向S盒模块输入8比特数据sbox_in_s、向外输出密文o_data。
进一步的,所述控制模块内置轮计数器round和时钟计数器count,轮计数器round用来表示0至38轮,共计39轮,其中第0轮共计128个时钟周期,其余轮次均为32个时钟周期;时钟计数器count用于表示0至127共128个时钟;
所述控制模块在当加密操作执行且开始信号start为0时将两个计数器均初始化为0;当开始信号start为1时,时钟计数器count在每一个时钟上升沿到来时计数,当round=0、count=127时将round+1、count置0;当round≠0、count=31时将round+1、count置0;其余情况下将count+1、round不变;当35≤count≤38时,将完成信号o_done置1,其他情况下将完成信号o_done置0;o_done用来判断是否输出加密所产生的密文;
所述控制模块在当加密操作执行且round=0时,置fk的值为系统参数FK的第count个比特,否则fk置0,fk数值用于初始化密钥;控制模块还接收来自固定参数CK生成模块的输出的8比特数据d_ck,并根据count信号的数值分割d_ck为单比特数据ck:当120≤count≤127或round≠0时,假设count后三位比特构成的十进制数为i,则ck的数值等于d_ck从低位起的第i个比特的值,否则ck置0,ck数值用于计算轮密钥。
进一步的,所述S盒模块用于接收来自控制模块的信号ctrl_sbox_k,且在当ctrl_sbox_k=1时,对来自密钥扩展模块的8比特数据进行S盒操作,将输出数据返回给密钥扩展模块;在当ctrl_sbox_k=0时,对来自加密模块的8比特数据进行S盒操作,将输出数据返回给加密模块。
进一步的,所述固定参数CK生成模块用于生成32组密钥扩展时所需的32比特固定参数;固定参数CK生成模块由来自控制模块的信号ctrl_ck和ctrl_init_ck控制;并用于在当ctrl_ck=1、ctrl_init_ck=1时,d_ck置为00000000;当ctrl_ck=1、ctrl_init_ck=0时,d_ck+00000111,并将d_ck的值输出到控制模块。
进一步的,所述密钥扩展模块用于对初始密钥进行32轮密钥扩展操作以生成32组轮密钥;所述密钥扩展模块由控制信号ctrl_k、ctrl_sbox_k和时钟信号clk进行控制,并接收来自外部输入的初始密钥i_key,来自控制模块的单比特系统参数fk、单比特固定参数ck和来自S盒模块的sbox_out,并向加密模块输入轮密钥rk、向S盒模块输入sbox_in_k;
所述密钥扩展模块包括两组寄存器,其中一组用于存储轮密钥中间状态的寄存器,由高位至低位依次编号为FF127,FF126,…,FF0,该组寄存器的输入数据为Kin,输出数据为Kout;将另一组用于存储S盒输入和输出的寄存器RT_KEY由高位至低位依次编号为FFS7,FFS6,…,FFS0,该组寄存器的输入数据为RT_KEYin,输出数据为RT_KEYout;密钥扩展模块输出到加密模块的轮密钥为rk,其中:
RT_KEYout=rk=FF23
所述密钥扩展模块的两组寄存器在每个时钟周期执行循环移位操作,由低位向高位移位1比特位;
所述密钥扩展模块在当来自控制模块的控制信号ctrl_sbox_k=1时,将存储在寄存器RT_KEY里的数据输入至S盒模块,并接收来自S盒的输出S7,S6,…,S0,其中RT_KEYout=S7, 将S6,S5,…,S0分别存储至寄存器RT_KEY里的FFS7,FFS6,…,FFS1;当ctrl_sbox_k=0时密钥扩展模块不接收来自S盒模块的数据,RT_KEYout=FFS7,其余位向左循环移1比特位。
密钥扩展模块在当round=0时有128个时钟周期,ctrl_k=00时,进行初始化密钥的操作,此时每个时钟周期FF0接收Kin,而Kin的值为fk与i_key异或的结果,其中fk来自密钥控制模块,i_key来自外部输入。在128个时钟周期内FF127,FF126,…,FF0在每个时钟周期内执行循环左移1位的操作,经过128个时钟周期后完成密钥的初始化,且结果存储在寄存器FF127,FF126,…,FF0中。同时FFS0接收数据RT_KEYin,RT_KEYin为FF87、FF55、FF23和ck四个比特异或的结果,经过128个时钟周期后寄存器RT_KEY中FFS7,FFS6,…,FFS0存储着需要进行S盒操作的8比特数据a0;
所述密钥扩展模块在当1≤round≤32时生成加密所需的轮密钥rk,此时每个时钟周期FF0接收Kin而Kin的值为Kout=FF127,当count=0,8,16,24时,ctrl_sbox_k=1,密钥扩展模块接收S盒输出的数据S7,S6,…,S0,并令RT_KEYout=S7,将S6,S5,…,S0分别存储回FFS7,FFS6,…,FFS1;
密钥扩展部分的线性层由下述操作完成:
当0≤count≤12时,ctrl_k=01时,密钥扩展模块循环移位至FF119、FF109和FF0的数据分别更改为FF118、FF108和FF127与RT_KEYout进行异或的结果;
当13≤count≤22时,ctrl_k=1时1,密钥扩展模块循环移位至FF119、FF13和FF0的数据分别更改为FF118、FF12和FF127与RT_KEYout进行异或的结果;
当23≤count≤31时,ctrl_k=10时,密钥扩展模块循环移位至FF23、FF13和FF0的数据分别更改为FF22、FF12和FF127与RT_KEYout进行异或的结果。这样32个时钟之后密钥扩展部分的线性操作就完成了;
进一步的,所述加密模块用于对明文进行32轮迭代操作从而生成密文,所述加密模块模块由控制信号ctrl_sbox_s、ctrl_s、ctrl_rt和时钟信号clk进行控制,接收来自外部输入的明文i_plaintext、来自密钥扩展模块的轮密钥rk和来自S盒的8比特置换结果sbox_out,并向外部输出加密完成信号o_done和密文o_data,同时向S盒模块输入需要进行S盒操作的8比特数据sbox_in_s;
所述加密模块包括两组寄存器,其中一组用于存储加密中间状态的寄存器,由高位至低位依次编号为FF127,FF126,…,FF0,该组寄存器的输入数据为Sin,输出数据为Sout;另一组用于存储S盒输入和输出数据的寄存器由高位至低位依次编号为FFS7,FFS6,…,FFS0,该组寄存器的输入数据为RT_Statein,输出数据为RT_Stateout;
加密模块输出到外部的密文为o_data,当35≤round≤38时,o_data=FF127;
所述加密模块的两组寄存器在每个时钟周期执行循环移位操作,由低位向高位移位1比特位;
所述加密模块用于在当来自控制模块的控制信号ctrl_sbox_s=1时,将存储在FFS6,FFS5,…,FFS0中的7比特数据及RT_Statein输入至S盒模块,将S盒输出的S7,S6,…,S0数据分别存储回FFS7,FFS6,…,FFS0,还用于在当ctrl_sbox_s=0时不接收来自S盒模块的数据。
所述加密模块在当round=0时, ctrl_s=000。加密模块进行输入明文的操作,即仅进行循环左移1位的操作,此时FF0接收数据Sin,而Sin=i_plaintext;
所述加密模块在当round=1时,ctrl_s=100。当0≤count≤22,加密模块仅进行循环左移1位的操作,FF0接收数据Sin,Sin=Sout=FF127;当23≤count≤31时,第一轮加密所需的轮密钥的最高位已经产生并自密钥扩展模块传输到加密模块,此时加密模块计算RT_Stateout并将结果存储于RT_State的FFS7,FFS6,…,FFS0中,且在count=31时,加密模块将FFS6,FFS5,…,FFS0中的数据以及RT_Statein输入至S盒模块,将S盒输出的数据存储回FFS7,FFS6,…,FFS0;
所述加密模块在当2≤round≤33时,生成每轮的加密结果;当count=7,15,23,31时,ctrl_sbox_s=1,加密模块接收S盒输出的8比特数据S7,S6,…,S0,并将S盒输出的数据存储于RT_State的FFS7,FFS6,…,FFS中0;当ctrl_sbox_s=0,加密模块不接收来自S盒的8比特数据;
当0≤count≤1时,ctrl_s=001,所述加密模块中循环移位至FF24、FF18、FF10、FF2和FF32中的数据分别更改为FF23、FF17、FF9、FF1和FF31中的数据与RT_Stateout进行异或的结果;
当2≤count≤9时,ctrl_s=011,所述加密模块中循环移位至FF24、FF18、FF10、FF34和FF32中的数据分别更改为FF23、FF17、FF9、FF33和FF31中的数据与RT_Stateout进行异或的结果;
当10≤count≤17时,ctrl_s=010,所述加密模块中循环移位至FF24、FF18、FF42、FF34和FF32中的数据分别更改为FF23、FF17、FF41、FF33和FF31中的数据与RT_Stateout进行异或的结果;
当18≤count≤23时,ctrl_s=110,所述加密模块中循环移位至FF24、FF50、FF42、FF34和FF32中的数据分别更改为FF23、FF49、FF41、FF33和FF31中的数据与RT_Stateout进行异或的结果;
当24≤count≤31时,ctrl_s=111,所述加密模块中循环移位至FF56、FF50、FF42、FF34和FF32中的数据分别更改为FF55、FF49、FF41、FF33和FF31中的数据与RT_Stateout进行异或的结果。
所述加密模块在当round=34,ctrl_s=101时,执行反序变换,令FF96、FF64、FF32、FF0分别接收来自FF63、FF95、FF95和FF31的比特位,其余寄存器仍接收来自低一位的寄存器所存储的比特位,这样32个时钟周期后反序变换完成;
所述加密模块在当35≤round≤38时,ctrl_s=100将加密产生的密文依次由FF127输出,此时加密模块仅执行循环左移1位的操作。
本发明采用以上技术方案后,与现有技术相比,具有以下优点:
本发明采用基于塔域实现的S盒进行置换运算,引入了新的线性层实现方式,整个加密过程采用单比特串行的方式进行数据传输,以单比特串行的方式通过对线性变换进行优化,可节约SM4算法的硬件实现电路中的门电路数量,与现有的实现相比拥有更小的实现面积。可有效节约成本,减小占用空间。
附图说明
图1为SM4算法原始实现流程图;
图2为本发明的SM4算法硬件实现结构图;
图3为本发明的S盒模块置换运算电路结构图;
图4为本发明的固定参数CK生成模块电路结构图;
图5为本发明的密钥扩展模块电路结构图;
图6为本发明的加密模块电路结构图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示为SM4算法原始流程图,涉及密钥扩展和轮展开两部分,下面对SM4加密算法进行简要介绍:
定义为e比特的向量集;Sbox(·)为S盒操作,是固定的8比特输入到8比特输出的置换;⊕为32比特异或;<<<i为32比特循环左移i位。
,则
SM4解密过程与加密过程相同,只是轮密钥的使用顺序相反。
其中T'(·)与T(·)区别仅在于线性变换:
从密钥扩展和轮展开的介绍中可以看出,加密模块和密钥扩展模块存在较多功能相似甚至相同的部件,因此可以采用模块复用来降低冗余度。
下面结合附图2对本发明实现结构进行详细说明,如图2所示本发明提出的轻量级的SM4算法的硬件实现电路,包括控制模块、S盒模块、固定参数CK生成模块、密钥扩展模块、加密模块。
本发明所述控制模块分别连接着其他四个模块,用来控制整个加密过程使之有序执行。控制模块由开始信号start、复位信号rst、时钟信号clk三个输入信号进行控制。控制模块内置6比特长的轮计数器round和7比特长的时钟计数器count,6比特长的轮计数器round可以用来表示0至38轮,共计39轮,其中第0轮共计128个时钟周期,其余轮次均为32个时钟周期;7比特长的时钟计数器count,可以表示0至127共128个时钟。首先SM4算法电路控制模块判断复位rst信号为低位“0”时,电路中各部件停止工作,两个计数器均初始化为0。反之当rst信号为高位“1”时,系统执行加密操作。
本发明所述控制模块中,当加密操作执行且开始信号start为0时两个计数器均初始化为0;当开始信号start为1时时钟计数器count在每一个时钟上升沿到来时计数。其中当round=0、count=127时round+1、count置0;当round≠0、count=31时round+1、count置0;其余情况下count+1、round不变。最后当35≤count≤38时,完成信号o_done置1,否则置0,o_done用来判断是否输出加密所产生的密文。
本发明所述控制模块中,当加密操作执行且round=0时,置fk的值为系统参数FK的第count个比特,否则fk置0,该数值用于初始化密钥。此外,控制模块还需要接收来自固定参数CK生成模块的输出的8比特数据d_ck,并根据count信号的数值分割d_ck为单比特数据ck:当120≤count≤127或round≠0时,假设count后三位比特构成的十进制数为i,则ck的数值等于d_ck从低位起的第i个比特的值,否则ck置0,该数值用于计算轮密钥。
本发明所述控制模块与S盒模块之间的交互:当round≠0且count低三位为000时,将控制信号ctrl_sbox_k置1,其他情况ctrl_sbox_k置0,该信号用于选择S盒模块的数据是来自密钥扩展模块还是加密模块。
本发明所述控制模块与固定参数CK生成模块之间的交互:当count值为120时,将ctrl_init_ck信号置为1,否则置0。该信号用于初始化固定参数CK模块;当count值为120或当round≠0且count低三位为000时,ctrl_ck信号置为1,否则置0,该信号用于控制固定参数生成模块执行常数加操作。
本发明所述控制模块与密钥扩展模块之间的交互:当round≠0且0≤count≤12时,将ctrl_k信号置为01;当round≠0且13≤count≤22时,将ctrl_k信号置为11;当round≠0且23≤count≤31时,将ctrl_k信号置为10;其余情况将ctrl_k信号置为00,该信号用于协助密钥扩展模块完成密钥扩展函数。当1≤round≤32且count后三位为000时ctrl_sbox_k置1,其余情况ctrl_sbox_k为0,密钥扩展模块在该信号ctrl_sbox_k的控制下完成非线性变换τ。
本发明所述控制模块与加密模块之间的交互:当2≤round≤33,0≤count≤1时,将ctrl_s信号置为001;当2≤round≤33,2≤count≤9时,将ctrl_s信号置为011;当2≤round≤33,10≤count≤17时,将ctrl_s信号置为010;当2≤round≤33,18≤count≤23时,将ctrl_s信号置为110;当2≤round≤33,24≤count≤31时,将ctrl_s信号置为111;当round=34时,将ctrl_s信号置为101;当round=1或35≤round≤38时,将ctrl_s信号置为100;其余情况将ctrl_s信号置为000。此外当2≤round且24≤count≤31时,将ctrl_rt_s信号置为1,否则置为0,这两个信号用于协助加密模块完成加密轮函数。最后当count=127或当round≠0且count低三位为111时,将ctrl_sbox_s信号置为1,否则置为0,该信号用于协助加密模块完成非线性变换τ。
本发明所述S盒模块连接着控制模块、密钥扩展模块和加密模块。S盒模块用于完成S盒的8比特到8比特的置换操作。如图3所示,为本发明所述S盒模块电路结构图。S盒模块由信号ctrl_sbox_k来控制,内置以塔域实现为基础的低面积的S盒实现方案,用以完成SM4加密操作所需的置换。
本发明所述S盒模块与控制模块之间的交互,接收来自控制模块的信号ctrl_sbox_k,用于选择当前进行S盒操作的数据来自密钥扩展模块还是加密模块。
本发明所述S盒模块与密钥扩展模块之间的交互,当ctrl_sbox_k=1时,对来自密钥扩展模块的8比特数据进行S盒操作,S盒的输出返回给密钥扩展模块。
本发明所述S盒模块与加密模块之间的交互,当ctrl_sbox_k=0时,对来自加密模块的8比特数据进行S盒操作,S盒的输出返回给加密模块。
本发明所述固定参数CK生成模块连接着控制模块,用来生成32组密钥扩展时所需的32比特固定参数。图4为本发明所述固定参数CK生成模块电路结构图。本发明采用实时生成的方式得到固定参数CK,尽最大可能减少实现所需的面积资源。固定参数CK生成模块由来自控制模块的信号ctrl_ck和ctrl_init_ck控制。当ctrl_ck=1、ctrl_init_ck=1时,d_ck置为00000000;当ctrl_ck=1、ctrl_init_ck=0时,d_ck+00000111,并将d_ck的值输出到控制模块。
本发明所述密钥扩展模块连接着控制模块、S盒模块和加密模块,用于对初始密钥进行32轮密钥扩展操作以此生成32组轮密钥。图5为本发明所述密钥扩展模块电路结构图。密钥扩展模块由控制信号ctrl_k、ctrl_sbox_k和时钟信号clk进行控制,并接收来自外部输入的初始密钥i_key,来自控制模块的单比特系统参数fk、单比特固定参数ck和来自S盒模块的sbox_out,并向加密模块输入轮密钥rk、向S盒模块输入sbox_in_k。
密钥扩展模块中,将128个存储轮密钥中间状态的寄存器由高位至低位依次编号为FF127,FF126,…,FF0,并将该组寄存器的输入设为Kin,输出设为Kout;将8个存储S盒输入和输出的寄存器RT_KEY由高位至低位依次编号为FFS7,FFS6,…,FFS0,并将该组寄存器的输入设为RT_KEYin,输出设为RT_KEYout;将输出到加密模块的轮密钥设为rk,其中
RT_KEYout=rk=FF23 (10)
,上述提到的两组寄存器在每个时钟周期执行循环移位操作,由低位向高位移位1比特位。
本发明所述密钥扩展模块与S盒模块之间的交互,当来自控制模块的控制信号ctrl_sbox_k=1时,将存储在寄存器RT_KEY里(FFS7,FFS6,…,FFS0)的8比特数据输入至S盒模块,并接收来自S盒的输出S7,S6,…,S0,其中RT_KEYout=S7,余下7比特S6,S5,…,S0,分别存储至寄存器RT_KEY里的FFS7,FFS6,…,FFS1;当ctrl_sbox_k=0时密钥扩展模块不接收来自S盒模块的数据,RT_KEYout=FFS7,其余位向左循环移1比特位。
本发明所述密钥扩展模块中,当round=0时有128个时钟周期,ctrl_k=00。密钥扩展模块进行初始化密钥的操作,此时每个时钟周期FF0接收Kin,而Kin的值为fk与i_key异或的结果,其中fk来自密钥控制模块,i_key来自外部输入。在128个时钟周期内FF127,FF126,…,FF0在每个时钟周期内执行循环左移1位的操作,经过128个时钟周期后完成密钥的初始化,即完成式(5),且结果存储在128个寄存器FF127,FF126,…,FF0中。同时FFS0接收数据RT_KEYin,如式(9)所示,RT_KEYin为FF87、FF55、FF23、ck四个比特位异或的结果。这样128个时钟周期后寄存器RT_KEY中FFS7,FFS6,…,FFS0存储着需要进行S盒操作的8比特数据a0。
本发明所述密钥扩展模块中,当1≤round≤32时各有32个时钟周期。密钥扩展模块生成加密所需的轮密钥rk,此时每个时钟周期FF0接收Kin而Kin的值为Kout=FF127。当count=0,8,16,24时,ctrl_sbox_k=1,密钥扩展模块接收来自S盒的8比特数据S7,S6,…,S0,并令RT_KEYout=S7,余下7比特S6,S5,…,S0,分别存储回FFS7,FFS6,…,FFS1。密钥扩展部分的线性层由下述操作完成:当0≤count≤12时,ctrl_k=01,循环移位至FF119、FF109和FF0的数据分别更改为FF118、FF108和FF127与RT_KEYout进行异或的结果;当13≤count≤22时,ctrl_k=11,循环移位至FF119、FF13和FF0的数据分别更改为FF118、FF12和FF127与RT_KEYout进行异或的结果;当23≤count≤31时,ctrl_k=10,循环移位至FF23、FF13和FF0的数据分别更改为FF22、FF12和FF127与RT_KEYout进行异或的结果。这样32个时钟之后密钥扩展部分的线性操作就完成了。
本发明所述加密模块连接着控制模块、S盒模块和密钥扩展模块,用来对明文进行32轮迭代操作从而生成密文。图6为本发明所述加密模块电路结构图。加密模块模块由控制信号ctrl_sbox_s、ctrl_s、ctrl_rt和时钟信号clk进行控制,接收来自外部输入的明文i_plaintext、来自密钥扩展模块的轮密钥rk和来自S盒的8比特置换结果sbox_out,并向外部输出加密完成信号o_done、密文o_data,同时向S盒模块输入需要进行S盒操作的8比特数据sbox_in_s。
本发明所述加密模块,将128个存储加密中间状态的寄存器由高位至低位依次编号为FF127,FF126,…,FF0,并将该组寄存器的输入设为Sin,输出设为Sout;将8个存储S盒输入和输出的寄存器由高位至低位依次编号为FFS7,FFS6,…,FFS0,并将该组寄存器的输入设为RT_Statein,输出设为RT_Stateout;将输出到外部的密文o_data,其中当35≤round≤38时,o_data=FF127
,上述提到的两组寄存器在每个时钟周期执行循环移位操作,由低位向高位移位1比特位。
本发明所述加密模块与S盒模块之间的交互:当来自控制模块的控制信号ctrl_sbox_s=1时,将存储在FFS6,FFS5,…,FFS0中的7比特数据及RT_Statein输入至S盒模块,经过S盒操作后将结果S7,S6,…,S0,分别存储回FFS7,FFS6,…,FFS0。当ctrl_sbox_s=0时加密模块不接收来自S盒模块的数据。
本发明所述加密模块中,当round=0时,共有128个时钟周期,ctrl_s=000。加密模块进行输入明文的操作,此时因为加密第一轮所需要的轮密钥还未生成,故除了循环左移1位外不做其他操作,此时FF0接收数据Sin,而Sin=i_plaintext。
本发明所述加密模块中,当round=1时,有32个时钟周期,ctrl_s=100。当0≤count≤22,加密模块仅进行循环左移1位的操作,FF0接收数据Sin,Sin=Sout=FF127;当23≤count≤31时,第一轮加密所需的轮密钥的最高位已经产生并自密钥扩展模块传输到加密模块,此时进行式(11)的计算并将结果存储于RT_State中的FFS7,FFS6,…,FFS0,且在count=31时,将FFS6,FFS5,…,FFS0以及RT_Statein共8比特数据输入至S盒模块,S盒运算的结果存储回FFS7,FFS6,…,FFS0。
本发明所述加密模块中,当2≤round≤33时,每轮各有32个时钟周期,加密模块至此开始生成中间状态X4,X5,…,X35。当count=7,15,23,31时,ctrl_sbox_s=1,加密模块接收来自S盒的8比特数据S7,S6,…,S0,并将结果存储于RT_State中的FFS7,FFS6,…,FFS0;反之当ctrl_sbox_s=0,加密模块不接收来自S盒的8比特数据。状态更新部分的线性层由下述操作完成:当0≤count≤1时,ctrl_s=001,循环移位至FF24、FF18、FF10、FF2和FF32的数据分别更改为FF23、FF17、FF9、FF1和FF31与RT_Stateout进行异或的结果;当2≤count≤9时,ctrl_s=011,循环移位至FF24、FF18、FF10、FF34和FF32的数据分别更改为FF23、FF17、FF9、FF33和FF31与RT_Stateout进行异或的结果;当10≤count≤17时,ctrl_s=010,循环移位至FF24、FF18、FF42、FF34和FF32的数据分别更改为FF23、FF17、FF41、FF33和FF31与RT_Stateout进行异或的结果;当18≤count≤23时,ctrl_s=110,循环移位至FF24、FF50、FF42、FF34和FF32的数据分别更改为FF23、FF49、FF41、FF33和FF31与RT_Stateout进行异或的结果;当24≤count≤31时,ctrl_s=111,循环移位至FF56、FF50、FF42、FF34和FF32的数据分别更改为FF55、FF49、FF41、FF33和FF31与RT_Stateout进行异或的结果。这样32个时钟之后状态更新部分的线性操作就完成了。
本发明所述加密模块中,当round=34时,ctrl_s=101。此时加密模块执行反序变换,令FF96、FF64、FF32、FF0分别接收来自FF63、FF95、FF95和FF31的比特位,其余寄存器仍接收来自低一位的寄存器所存储的比特位,这样32个时钟周期后反序变换完成
本发明所述加密模块中,当35≤round≤38时,ctrl_s=100。此时将加密产生的密文依次由FF127输出即可,所以仅执行循环左移1位的操作。
利用目前已知SM4实现的技术(王晨光等人在2013年第2期《科学技术与工程》期刊上发表的《低复杂度SM4加密算法IP核设计》文章中的方案A、王晨光等人在2013年第7期《计算机工程》期刊上发表的《分组密码算法SM4的低复杂度实现》文章中的方案B、Ming Shang等人2014年在International Conference on Advanced Applied Informatics会议上发表的An ultra-compact hardware implementation of SMS4文章中的方案C、朱坤崧等人在2016年第12期《电子技术应用》期刊上发表的《面向物联网的SM4算法轻量级实现》文章中的方案D、Huafeng Chend等人2017年在International Conference on InformationTechnology and Career Education会议上发表的An efficient hardwareimplementation of SM4中提到的方案E、Xiangli Bu等人在2019年在World Congress onEngineering and Computer Science刊登的A Compact Implementation of SM4Encryption and Decryption Circuit中的方案F),本发明涉及的SM4算法轻量级实现在SMIC 180nm工艺库下的代价如下表所示:
表1、现有技术实现SM4算法所需等效门数量
由表1的结果可知,与现有技术相比本发明给出的一种轻量级的SM4算法的硬件实现电路所需等效门数量最少。
以上所述为本发明最佳实施方式的举例,其中未详细述及的部分均为本领域普通技术人员的公知常识。本发明的保护范围以权利要求的内容为准,任何基于本发明的技术启示而进行的等效变换,也在本发明的保护范围之内。
Claims (5)
1.一种轻量级的SM4算法的硬件实现电路,其特征在于,包括控制模块、S盒模块、固定参数CK生成模块、密钥扩展模块和加密模块,所述控制模块分别连接S盒模块和固定参数CK生成模块;
所述控制模块的输入信号包括开始信号start、复位信号rst、时钟信号clk和固定参数d_ck,输出信号包括控制信号ctrl_k、ctrl_s、ctrl_rt_s、ctrl_sbox、ctrl_sbox_k、ctrl_ck、ctrl_init_ck、加密完成信号o_done、单比特固定参数ck和单比特系统参数fk;控制模块用于接收来输入信号并将信号处理后向其他模块发出控制信号,最终向外输出加密完成信号o_done,同时将来自固定参数CK生成模块的固定参数d_ck以单比特ck的形式输入至密钥扩展模块以及将系统参数FK以单比特fk的形式输入至密钥扩展模块;
S盒模块用于在控制信号ctrl_sbox_k的控制下选择接收来自加密模块的数据sbox_in_s或来自密钥扩展模块的数据sbox_in_k并进行置换操作,将置换结果sbox_out输回加密模块或密钥扩展模块;
固定参数CK生成模块用于在控制信号ctrl_ck和ctrl_init_ck的控制下生成扩展密钥时所需的固定参数d_ck并将固定参数d_ck输入到控制模块;
密钥扩展模块用于接收来自外部输入的初始密钥i_key、来自控制模块的单比特系统参数fk、单比特固定参数ck和来自S盒模块的数据sbox_out,并在时钟信号clk和控制信号ctrl_k、ctrl_sbox_k的控制下完成密钥扩展,同时向加密模块输入轮密钥rk以及向S盒模块输入数据sbox_in_k;
加密模块用于接收来自外部输入的明文i_plaintext、来自密钥扩展模块的轮密钥rk和来自S盒模块的数据sbox_out,并在时钟信号clk和控制信号ctrl_sbox_s、ctrl_s和ctrl_rt_s的控制下完成加密操作,并向S盒模块输入数据sbox_in_s,向外输出密文o_data;
所述密钥扩展模块用于对初始密钥进行32轮密钥扩展操作以生成32组轮密钥;所述密钥扩展模块由控制信号ctrl_k、ctrl_sbox_k和时钟信号clk进行控制,并接收来自外部输入的初始密钥i_key,来自控制模块的单比特系统参数fk、单比特固定参数ck和来自S盒模块的sbox_out,并向加密模块输入轮密钥rk、向S盒模块输入sbox_in_k;
所述密钥扩展模块包括两组寄存器,其中一组用于存储轮密钥中间状态的寄存器由高位至低位依次编号为FF127,FF126,…,FF0,该组寄存器的输入数据为Kin,输出数据为Kout;将另一组用于存储S盒输入和输出的寄存器RT_KEY由高位至低位依次编号为FFS7,FFS6,…,FFS0,该组寄存器的输入数据为RT_KEYin,输出数据为RT_KEYout;密钥扩展模块输出到加密模块的轮密钥为rk,其中:
RT_KEYout=rk=FF23
所述密钥扩展模块的两组寄存器在每个时钟周期执行循环移位操作,由低位向高位移位1比特位;
所述密钥扩展模块在当来自控制模块的控制信号ctrl_sbox_k=1时,将存储在寄存器RT_KEY里的数据输入至S盒模块,并接收来自S盒的输出数据S7,S6,…,S0,其中RT_KEYout=S7, 将S6,S5,…,S0分别存储至寄存器RT_KEY里的FFS7,FFS6,…,FFS1中;当ctrl_sbox_k=0时密钥扩展模块不接收来自S盒模块的数据,RT_KEYout=FFS7,其余位向左循环移1比特位;
密钥扩展模块在当round=0且ctrl_k=00时,进行初始化密钥的操作,此时每个时钟周期FF0接收Kin,而Kin的值为fk与i_key异或的结果,其中fk来自密钥控制模块,i_key来自外部输入,在128个时钟周期内FF127,FF126,…,FF0在每个时钟周期内执行循环左移1位的操作,经过128个时钟周期后完成密钥的初始化,且将结果存储在寄存器的FF127,FF126,…,FF0中,同时FFS0接收数据RT_KEYin,RT_KEYin为FF87、FF55、FF23和ck四比特位异或的结果,经过128个时钟周期后寄存器RT_KEY中FFS7,FFS6,…,FFS0存储着需要进行S盒操作的8比特数据a0;
所述密钥扩展模块在当1≤round≤32时生成加密所需的轮密钥rk,此时每个时钟周期FF0接收Kin而Kin的值为Kout=FF127,当count=0,8,16,24时,ctrl_sbox_k=1时,密钥扩展模块接收S盒输出的数据S7,S6,…,S0,并令RT_KEYout=S7,将S6,S5,…,S0分别存储回FFS7,FFS6,…,FFS1;
密钥扩展部分的线性层由下述操作完成:
当0≤count≤12时,ctrl_k=01时,密钥扩展模块循环移位至FF119、FF109和FF0的数据分别更改为FF118、FF108和FF127与RT_KEYout进行异或的结果;
当13≤count≤22时,ctrl_k=1时1,密钥扩展模块循环移位至FF119、FF13和FF0的数据分别更改为FF118、FF12和FF127与RT_KEYout进行异或的结果;
当23≤count≤31时,ctrl_k=10时,密钥扩展模块循环移位至FF23、FF13和FF0的数据分别更改为FF22、FF12和FF127与RT_KEYout进行异或的结果; 则32个时钟之后完成密钥扩展部分的线性操作。
2.根据权利要求1所述的轻量级的SM4算法的硬件实现电路,其特征在于,所述控制模块内置轮计数器round和时钟计数器count,轮计数器round用来表示0至38轮,共计39轮,其中第0轮共计128个时钟周期,其余轮次均为32个时钟周期;时钟计数器count用于表示0至127共128个时钟;
所述控制模块在当加密操作执行且开始信号start为0时将两个计数器均初始化为0;当开始信号start为1时,时钟计数器count在每一个时钟上升沿到来时计数,当round=0、count=127时将round+1、count置0;当round≠0、count=31时将round+1、count置0;其余情况下将count+1、round不变;当35≤count≤38时,将完成信号o_done置1,其他情况下将完成信号o_done置0;o_done置1时控制模块输出加密所产生的密文,o_done置0时控制模块不输出加密所产生的密文;
所述控制模块在当加密操作执行且round=0时,置fk的值为系统参数FK的第count个比特,否则fk置0,fk数值用于初始化密钥;控制模块还接收来自固定参数CK生成模块的输出的8比特数据d_ck,并根据count信号的数值分割d_ck为单比特数据ck:当120≤count≤127或round≠0时,假设count后三位比特构成的十进制数为i,则ck的数值等于d_ck从低位起的第i个比特的值,否则ck置0,ck数值用于计算轮密钥。
3.根据权利要求1所述的轻量级的SM4算法的硬件实现电路,其特征在于,所述S盒模块用于接收来自控制模块的信号ctrl_sbox_k,且在当ctrl_sbox_k=1时,对来自密钥扩展模块的8比特数据进行S盒操作,将输出数据返回给密钥扩展模块;在当ctrl_sbox_k=0时,对来自加密模块的8比特数据进行S盒操作,将输出数据返回给加密模块。
4.根据权利要求1所述的轻量级的SM4算法的硬件实现电路,其特征在于,所述固定参数CK生成模块用于生成32组密钥扩展所需的32比特固定参数d_ck;固定参数CK生成模块由来自控制模块的信号ctrl_ck和ctrl_init_ck控制;并用于在当ctrl_ck=1、ctrl_init_ck=1时,d_ck置为00000000;当ctrl_ck=1、ctrl_init_ck=0时,d_ck+00000111,并将d_ck的值输出到控制模块。
5.根据权利要求1所述的轻量级的SM4算法的硬件实现电路,其特征在于,所述加密模块用于对明文进行32轮迭代操作从而生成密文,所述加密模块由控制信号ctrl_sbox_s、ctrl_s、ctrl_rt和时钟信号clk进行控制,且接收来自外部输入的明文i_plaintext、来自密钥扩展模块的轮密钥rk和来自S盒的8比特置换结果sbox_out,并向外部输出加密完成信号o_done和密文o_data,同时向S盒模块输入需要进行S盒操作的8比特数据sbox_in_s;
所述加密模块包括两组寄存器,其中一组用于存储加密中间状态的寄存器由高位至低位依次编号为FF127,FF126,…,FF0,该组寄存器的输入数据为Sin,输出数据为Sout;另一组用于存储S盒输入和输出数据的寄存器由高位至低位依次编号为FFS7,FFS6,…,FFS0,该组寄存器的输入数据为RT_Statein,输出数据为RT_Stateout;
加密模块输出到外部的密文为o_data,当35≤round≤38时,o_data=FF127;
所述加密模块的两组寄存器在每个时钟周期执行循环移位操作,由低位向高位移位1比特位;
所述加密模块用于在当来自控制模块的控制信号ctrl_sbox_s=1时,将存储在FFS6,FFS5,…,FFS0中的7比特数据及RT_Statein输入至S盒模块,将S盒输出的S7,S6,…,S0数据分别存储回FFS7,FFS6,…,FFS0,还用于在当ctrl_sbox_s=0时不接收来自S盒模块的数据;
所述加密模块在当round=0时, ctrl_s=000时,进行输入明文的操作,仅进行循环左移1位的操作,此时FF0接收数据Sin,而Sin=i_plaintext;
所述加密模块在当round=1,ctrl_s=100,0≤count≤22时,仅进行循环左移1位的操作,FF0接收数据Sin,Sin=Sout=FF127;当23≤count≤31时,第一轮加密所需的轮密钥的最高位已经产生并自密钥扩展模块传输到加密模块,此时加密模块进行RT_Stateout的计算并将结果存储于RT_State的FFS7,FFS6,…,FFS0中,并在count=31时,加密模块将FFS6,FFS5,…,FFS0中的数据以及RT_Statein输入至S盒模块,将S盒输出的数据存储回FFS7,FFS6,…,FFS0;
所述加密模块在当2≤round≤33时,生成每轮的加密结果;在当count=7,15,23,31,ctrl_sbox_s=1时,加密模块接收S盒输出的8比特数据S7,S6,…,S0,并将S盒输出的数据存储于RT_State的FFS7,FFS6,…,FFS中0;当ctrl_sbox_s=0,加密模块不接收来自S盒的8比特数据;
在当0≤count≤1时,ctrl_s=001时,所述加密模块中循环移位至FF24、FF18、FF10、FF2和FF32中的数据分别更改为FF23、FF17、FF9、FF1和FF31中的数据与RT_Stateout进行异或的结果;
当2≤count≤9时,ctrl_s=011,所述加密模块中循环移位至FF24、FF18、FF10、FF34和FF32中的数据分别更改为FF23、FF17、FF9、FF33和FF31中的数据与RT_Stateout进行异或的结果;
当10≤count≤17时,ctrl_s=010,所述加密模块中循环移位至FF24、FF18、FF42、FF34和FF32中的数据分别更改为FF23、FF17、FF41、FF33和FF31中的数据与RT_Stateout进行异或的结果;
当18≤count≤23时,ctrl_s=110,所述加密模块中循环移位至FF24、FF50、FF42、FF34和FF32中的数据分别更改为FF23、FF49、FF41、FF33和FF31中的数据与RT_Stateout进行异或的结果;
当24≤count≤31时,ctrl_s=111,所述加密模块中循环移位至FF56、FF50、FF42、FF34和FF32中的数据分别更改为FF55、FF49、FF41、FF33和FF31中的数据与RT_Stateout进行异或的结果;
所述加密模块在当round=34,ctrl_s=101时,执行反序变换,令FF96=FF63、FF64=FF95、FF32=FF127、FF0=FF31,完成32个时钟周期后反序变换;
所述加密模块在当35≤round≤38时,ctrl_s=100时将加密产生的密文依次由FF127输出,仅执行循环左移1位的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210326183.0A CN114422111B (zh) | 2022-03-30 | 2022-03-30 | 一种轻量级的sm4算法的硬件实现电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210326183.0A CN114422111B (zh) | 2022-03-30 | 2022-03-30 | 一种轻量级的sm4算法的硬件实现电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114422111A CN114422111A (zh) | 2022-04-29 |
CN114422111B true CN114422111B (zh) | 2022-06-17 |
Family
ID=81264175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210326183.0A Active CN114422111B (zh) | 2022-03-30 | 2022-03-30 | 一种轻量级的sm4算法的硬件实现电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114422111B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101764684B (zh) * | 2009-10-26 | 2012-07-04 | 广州杰赛科技股份有限公司 | 实现sms4算法的加解密系统 |
US9503256B2 (en) * | 2014-12-24 | 2016-11-22 | Intel Corporation | SMS4 acceleration hardware |
CN112507644B (zh) * | 2020-12-03 | 2021-05-14 | 湖北大学 | 优化的sm4算法线性层电路 |
CN113255923B (zh) * | 2021-05-31 | 2021-09-14 | 湖北大学 | Sm4算法的量子实现电路 |
CN113949504B (zh) * | 2021-10-15 | 2023-09-19 | 中国计量大学 | 一种适用于移动设备的高速sm4密码算法电路 |
-
2022
- 2022-03-30 CN CN202210326183.0A patent/CN114422111B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114422111A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Paar et al. | The advanced encryption standard (AES) | |
JP4128395B2 (ja) | データ変換装置 | |
US20030133568A1 (en) | Programmable data encryption engine for advanced encryption standard algorithm | |
CN112398639B (zh) | 一种Fountain轻量级加密算法的实现装置、方法及应用 | |
JP2005215688A (ja) | S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法 | |
US11606189B2 (en) | Method and apparatus for improving the speed of advanced encryption standard (AES) decryption algorithm | |
CN111064562A (zh) | 一种fpga上的aes算法的实现方法 | |
CN111934850A (zh) | 组纲aes加解密方法 | |
CN109039583B (zh) | 复用轮变换电路、aes加密电路及加密方法 | |
CN112564890B (zh) | 一种加速sm4算法的方法、装置、处理器及电子设备 | |
CN114422111B (zh) | 一种轻量级的sm4算法的硬件实现电路 | |
CN108566271B (zh) | 复用轮变换电路、aes加密电路及其加密方法 | |
CN109033847B (zh) | Aes加密运算单元、aes加密电路及其加密方法 | |
CN109033893B (zh) | 基于合成矩阵的aes加密单元、aes加密电路及其加密方法 | |
Kocheta et al. | A review of some recent stream ciphers | |
CN105577362B (zh) | 一种应用于aes算法的字节替换方法及系统 | |
CN108989018B (zh) | 一种aes加密单元、aes加密电路及加密方法 | |
CN108964875B (zh) | 普通轮变换运算单元、普通轮变换电路及aes解密电路 | |
JP2000075785A (ja) | 高速暗号処理回路および処理方法 | |
RU2309549C2 (ru) | Способ криптографического преобразования цифровых данных | |
CN109033894B (zh) | 普通轮变换运算单元、普通轮变换电路及其aes加密电路 | |
Hassan | New Approach for Modifying DES Algorithm Using 4-States Multi-keys | |
CN109150496B (zh) | Aes加密运算单元、aes加密电路及加密方法 | |
CN109936440B (zh) | Aes解密电路中的复用轮变换运算单元和构建方法 | |
CN108964876B (zh) | 普通轮变换运算单元、普通轮变换电路及aes加密电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |