CN113078996B - Sm4密码算法的fpga优化实现方法、系统及应用 - Google Patents
Sm4密码算法的fpga优化实现方法、系统及应用 Download PDFInfo
- Publication number
- CN113078996B CN113078996B CN202110212804.8A CN202110212804A CN113078996B CN 113078996 B CN113078996 B CN 113078996B CN 202110212804 A CN202110212804 A CN 202110212804A CN 113078996 B CN113078996 B CN 113078996B
- Authority
- CN
- China
- Prior art keywords
- round
- encryption
- key generation
- round key
- 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
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
- 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
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明属于密码学技术领域,公开了一种SM4密码算法的FPGA优化实现方法、系统及应用,所述SM4密码算法的FPGA优化实现系统包括:循环型设计架构、流水线LUT型设计架构、流水线BRAM型设计架构、流水线BRAM+REGISTER型设计架构;所述循环型设计架构包括控制模块、轮密钥生成模块和加密模块;所述流水线LUT型设计架构包括控制模块、轮密钥生成模块和流水线加密模块;所述流水线BRAM型设计架构包括控制模块、轮密钥生成模块和流水线加密模块;所述流水线BRAM+REGISTER型设计架构包括控制模块、轮密钥生成模块和流水线加密模块。本发明能够有效抵抗侧信道攻击,提升加密性能。
Description
技术领域
本发明属于密码学技术领域,尤其涉及一种SM4密码算法的FPGA优化实现方法、系统及应用。
背景技术
数据加密是保证信息安全的重要手段之一,当前,主流加密算法主要分为对称密码算法(如DES、AES、SM4等)和非对称密码算法(如RSA、ECC等)。与非对称密码算法相比,对称密码算法具有简洁高效、部署容易、加解密速度快等优势,被广泛的应用于数据加密场景中。
2006年1月,在国家密码管理局发布无线局域网产品密码事宜公告中,SMS4密码算法成为我国首个被批准应用于无线局域网产品的对称密码算法[第7号]。2012年3月,在《祖冲之序列密码算法》等6项密码行业标准公告中,国家密码局批准《SM4分组密码算法》(原SMS4分组密码算法)为行业标准。
与其他对称密码算法相比,SM4密码算法具有以下主要优势。第一,安全性强。常用的对称密码算法(如DES)核心模块(S盒)的设计准则到目前还没有完全公开,是否留有陷门还无法得到证实,而SM4密码算法是由我国密码学家吕述望等人设计完成并获国家密码管理局批准的密码算法,与其他对称密码算法相比安全性能够得到保障。第二,效率高。在算法结构方面,轮密钥生成算法和加密算法结构相似;在算法加解密流程方面,加/解密运算方法一致,只是轮密钥顺序相反;在算法计算方面,只包含异或、位移、置换等简单运算。第三,易于硬件实现。SM4的算法结构能够与FPGA器件的并行性、灵活性等特点充分结合,既能够采用循环型架构在资源受限的硬件设备中高效实现,也能够采用流水线型架构在资源丰富的硬件设备中高速实现。
SM4密码算法不仅易于硬件实现,而且能够充分利用硬件的特有优势提升效率或提高性能。在硬件实现SM4密码算法中,有很多学者进行了详细的研究和分析,具体实现架构主要分为两类。一类是基于循环的电路架构,需要约32个时钟循环完成一次加/解密,该方案能够最大程度的节省硬件资源,适合部署在资源受限的设备上;另一类是基于流水线电路架构,在电子密码本模式(Electronic Code Book Mode,ECB)下,仅需1个时钟循环即可完成一次加解/密,它的优势是吞吐量大,能够达到20Gbit/s以上,但是资源消耗巨大,适合部署在资源丰富的设备上。
通过上述分析,现有技术存在的问题及缺陷为:
(1)在面向资源节约型优化的架构中,资源利用率还有进一步提升的空间,在抵抗侧信道攻击方面仍需加强。
(2)在面向加密性能型优化的架构中,资源的合理分配、资源利用率还有进一步提升的空间,整个架构的设计和加密性能还有进一步提升的空间。
解决以上问题及缺陷的难度为:如何设计并优化方案架构,进一步提高资源利用率,提升资源使用、分配的合理性,提高加密性能。
解决以上问题及缺陷的意义为:在面向资源节约的优化方面,进一步优化电路架构设计,使SM4密码算法能够部署在如移动设备、智能穿戴设备等资源受限的场景中;在面向性能的优化方面,进一步优化电路架构设计,使SM4密码算法能够部署在如服务器、云计算等对加密性能要求较高的场景中。
发明内容
针对现有技术存在的问题,本发明提供了一种SM4密码算法的FPGA优化实现方法、系统及应用。
本发明是这样实现的,一种SM4密码算法的FPGA优化实现系统,所述SM4密码算法的FPGA优化实现系统包括:
循环型设计架构、流水线LUT型设计架构、流水线BRAM型设计架构、流水线BRAM+REGISTER型设计架构。
所述循环型设计架构包括控制模块、轮密钥生成模块和加密模块;
所述流水线LUT型设计架构包括控制模块、轮密钥生成模块和流水线加密模块;
所述流水线BRAM型设计架构包括控制模块、轮密钥生成模块和流水线加密模块;
所述流水线BRAM+REGISTER型设计架构包括控制模块、轮密钥生成模块和流水线加密模块。
进一步,所述循环型设计架构包括:
控制模块,用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块和加密模块输出密钥、待加密消息、当前迭代轮次信号等,控制和协调轮密钥生成模块和加密模块正常运行;
所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块和加密模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态和加密状态。
轮密钥生成模块,用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果输出给加密模块;
所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的一些异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括2组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取;所述轮密钥生成模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括1个寄存器,用于存储当前计算生成的轮密钥值并构成循环电路。
加密模块,用于根据接收到的待加密数据、当前轮密钥、迭代轮次信号,按照SM4加密算法规则进行32轮迭代加密计算,计算完成输出密文;
所述加密模块包括多组异或电路,用于SM4加密算法中数据的一些异或计算;所述加密模块包括一组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述加密模块包括2组多路选择器,其一用于根据迭代轮次信号判断加密数据直接从输入的待加密数据获取还是从上一轮迭代密文中获取,其二是根据迭代轮次信号判断待加密数据是否已经完成32轮迭代加密,是否可以直接输出密文;所述加密成模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法加密过程中数据的非线性变换;所述加密模块包括1个寄存器,用于存储32轮迭代过程中生成的中间密文并构成循环电路。
进一步,所述流水线LUT型设计架构包括:
控制模块,用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块输出密钥、当前迭代轮次信号等,向流水线加密模块输出待加密消息,控制和协调轮密钥生成模块和流水线加密模块正常运行;
所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态、轮密钥生成状态、加密状态。
轮密钥生成模块,用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果存入对应寄存器,由寄存器输出给流水线加密模块;
所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的一些异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括3组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取,其三用于根据迭代轮次信号判断并将当前计算生成的轮密钥存入对应的寄存器中;所述轮密钥生成模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括33个寄存器,其中1个用于存储当前计算生成的轮密钥值并构成循环电路,剩下32个寄存器用于存储对应的32个轮密钥。
流水线加密模块,用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文;
所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的一些异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密成模块包括32×4=128组并行S盒电路,由LUT组合逻辑构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32个寄存器,用于存储每轮迭代过程中生成的中间密文并构造流水线结构。
进一步,所述流水线BRAM型设计架构包括:
控制模块,用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块输出密钥、当前迭代轮次信号等,向流水线加密模块输出待加密消息,控制和协调轮密钥生成模块和流水线加密模块正常运行;
所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态、轮密钥生成状态、加密状态。
轮密钥生成模块,用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果存入寄存器,由寄存器输出给流水线加密模块;
所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的一些异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括3组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取,其三用于根据迭代轮次信号判断并将当前计算生成的轮密钥存入对应的寄存器中;所述轮密钥生成模块包括2组并行S盒电路,每组由1个双端口BRAM构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括33个寄存器,其中1个用于存储当前计算生成的轮密钥值并构成循环电路,剩下32个寄存器用于存储对应的32个轮密钥。
流水线加密模块,用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文;
所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的一些异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密成模块包括32×2=64组并行S盒电路,每组由一个双口BRAM构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32个寄存器,用于存储每轮迭代过程中生成的中间密文并构造流水线结构。
进一步,所述流水线BRAM+REGISTER型设计架构包括:
控制模块,用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块输出密钥、当前迭代轮次信号等,向流水线加密模块输出待加密消息,控制和协调轮密钥生成模块和流水线加密模块正常运行;
所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态、轮密钥生成状态、加密状态。
轮密钥生成模块,用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果存入寄存器,由寄存器输出给流水线加密模块;
所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的一些异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括3组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取,其三用于根据迭代轮次信号判断并将当前计算生成的轮密钥存入对应的寄存器中;所述轮密钥生成模块包括2组并行S盒电路,每组由1个双端口BRAM构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括33个寄存器,其中1个用于存储当前计算生成的轮密钥值并构成循环电路,剩下32个寄存器用于存储对应的32个轮密钥。
流水线加密模块,用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文;
所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的一些异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密成模块包括32×2=64组并行S盒电路,每组由一个双口BRAM构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32×4=128个寄存器,其中64个用于BRAM输出寄存器,剩下64个用于存储每轮迭代过程中生成的中间密文并构造流水线结构。
本发明的另一目的在于提供一种应用所述的SM4密码算法的FPGA优化实现系统的SM4密码算法的FPGA优化实现方法,所述SM4密码算法的FPGA优化实现方法包括以下步骤:
步骤一,在循环型设计架构中,当valid_in消息为高电平时,控制模块状态由空闲状态转为工作状态,模块内计数器开始计数,产生迭代轮次信号round_rk、round_enc,其中round_enc较round_rk信号晚一个时钟循环,当完成32轮循环后,控制模块状态由工作状态转为空闲状态;
步骤二,控制模块将密钥和round_rk信号输出给轮密钥生成模块,将待加密数据和round_enc信号输出给加密模块;轮密钥生成模块收到密钥和round_rk信号后进行迭代计算,得出轮密钥rk_i并输出给加密模块用于迭代加密;加密模块收到待加密数据、round_enc、rk_i信号后,开始进行32轮循环迭代加密运算,迭代结束后输出密文;
步骤四,根据round_rk信号值进行判断,当round_rk为第0轮时,接收(K0,K1,K2,K3)进行后续计算,否则接收中间迭代值进行后续计算,同时根据round_rk信号值进行判断,给出系统参数CK对应的数值,进而将得到的数值与系统参数CK通过异或电路进行计算
步骤五,将得到的计算结果通过S盒电路,进行非线性变换τ,再将非线性变换计算结果通过位移电路,进行L'线性变换;将线性变换结果通过异或电路,进行异或计算;最后将计算结果存入寄存器,寄存器将当前轮密钥rk_i传输给加密模块用于后续加密计算,同时将当前轮密钥rk_i输出用于下一次迭代计算;
步骤六,在循环型加密模块设计架构中,当接收到来自控制模块的待加密数据和round_enc信号后,根据round_enc信号值进行判断,当round_enc为第0轮时,接收待加密数据进行后续计算,否则接收迭代加密数据进行后续计算;
步骤七,将数据信号和输入信号rk_i通过异或电路进行计算再将数据信号通过4个并行的S盒电路,进行非线性变换;再将非线性变换计算结果通过循环位移电路,进行L线性变换;再将线性变换结果通过异或电路进行异或计算;最后将计算结果存入寄存器,寄存器根据round_enc信号值进行判断,当round_enc信号值表示第32轮时,寄存器输出密文,否则将当前密文输出用于下一次迭代计算;
步骤八,在流水线型设计架构中,当valid_in消息为高电平时,控制模块状态由空闲状态转为轮密钥生成状态,模块内计数器开始计数,产生迭代轮次信号round,将密钥和round信号输出给轮密钥生成模块,轮密钥生成模块收到数据信号后开始进行32轮迭代计算,生成对应32个轮密钥并存入寄存器中;
步骤九,当所有轮密钥计算完成后,控制模块由轮密钥生成状态转为加密状态,将待加密数据输出给流水线加密模块,流水线加密模块根据待加密数据和对应轮密钥进行32轮流水线迭代加密计算后,输出密文;
步骤十,在流水线型轮密钥生成模块设计架构中,当接收到来自控制模块的密钥和round信号后,首先将密钥和系统参数FK通过异或电路进行计算再根据round信号值进行判断,当round_rk为第0轮时,接收(K0,K1,K2,K3)进行后续计算,否则接收中间迭代值进行后续计算,根据round_rk信号值进行判断,给出系统参数CK对应的数值;再将得到的数值与系统参数CK通过异或电路进行计算
步骤十一,将得到的计算结果通过S盒电路,进行非线性变换,如果S盒采用LUT组合逻辑结构,如果S盒采用BRAM结构,(K0,K1,K2,K3)密钥计算信号需要经过寄存器进行一个时钟时延;再将非线性变换计算结果通过循环位移电路,进行L'线性变换;再将线性变换结果与Ki通过异或电路,进行异或计算;最后根据当前迭代轮次round信号,将轮密钥存入对应寄存器,与此同时,将当前轮密钥作为输入,进行下一轮迭代计算;
步骤十二,在流水线LUT型加密模块设计架构中,当接收到来自控制模块的待加密数据和轮密钥生成模块的rk_i信号后,首先通过异或电路进行计算随后经过S盒电路进行非线性变换计算,计算结果进而通过循环位移电路进行线性变换计算,再而通过异或电路进行计算,最后存入流水线间插入的寄存器中,作为下一套迭代加密电路的输入;
步骤十三,在流水线BRAM型加密模块设计架构中,当接收到来自控制模块的待加密数据和轮密钥生成模块的rk_i信号后,首先通过异或电路进行计算同时将数据信号存入寄存器中,随后经过S盒电路进行非线性变换计算,计算结果进而通过循环位移电路进行线性变换计算,最后将线性变换结果和寄存器信号通过异或电路进行计算并输出作为下一套迭代加密电路的输入;
步骤十四,在流水线BRAM+REGISTER型加密模块设计架构中,当接收到来自控制模块的待加密数据和轮密钥生成模块的rk_i信号后,首先通过异或电路进行计算同时将数据信号存入2级寄存器中,随后数据信号经过S盒电路进行非线性变换计算并通过寄存器输出,输出数据信号与2级寄存器数据信号通过异或电路进行计算并输出作为下一套迭代加密电路的输入;流水线型加密模块经过32轮流水线加密迭代后即可输出密文。
进一步,所述SM4算法是一个分组加密算法,消息分组和密钥长度均为128比特,包括密钥扩展算法、加密算法、解密算法;所述SM4算法采用32轮非线性迭代结构,加密和解密算法结构相同,只是轮密钥使用顺序相反。
所述SM4算法中,表示比特e的向量集,中的元素称为字,中的元素称为字节;Sbox(·)表示8输入8输出的S盒,用于非线性置换;表示32比特的异或运算;<<<i表示32比特的循环左移计算;MK表示加密密钥,长度为128比特;rki(i=0,···,31)表示轮密钥,长度为32比特;cki(i=0,···,31)表示系统参数,长度为32比特;轮函数F表示为非线性变换τ表示为τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3));线性变换L表示为线性变换L'表示为
进一步,所述SM4算法,包括:
(1)加/解密算法
2)(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32),将迭代结果顺序进行翻转,得到加密密文。
所述解密算法与加密算法过程相同,轮密钥的使用顺序相反,为(rk31,rk30,···,rk0)。
(2)密钥扩展算法
输出:轮密钥rki,i=0,1,···,31。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述的SM4密码算法的FPGA优化实现方法。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的SM4密码算法的FPGA优化实现方法。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:
(1)在循环型架构方案中。首先,轮密钥生成模块生成的新鲜轮密钥直接用于加密模块,不进行存储,能够节省32套寄存器资源,与当前先进架构相比能够节省约50%FFs使用。其次,轮密钥生成模块和加密模块并行执行,当密钥更新时,轮密钥生成模块可以实时计算最新的轮密钥,加密模块无需等待,整个加密过程能够连续进行。最后,轮密钥生成模块和加密模块在整个分组数据加密过程中所需要的时钟循环为常数,能够有效抵抗侧信道攻击。
(2)在流水线型架构方案中。流水线BRAM型设计架构与流水线LUT型设计架构相比,能够在加密吞吐量基本不变的前提下,以增加33个双口BRAM为代价节省约5205个LUTs占用,将LUTs使用数量降低为原来的四分之一,后者能够在LUT和BRAM资源消耗量之间进行权衡优化,平衡硬件资源使用,提高资源利用率。流水线BRAM+REGISTER型设计架构在流水线BRAM型设计架构的基础上增加了输出寄存器,并对整体电路进行了优化,缩减关键路径,进一步提升加密性能,吞吐量可达42.10Gbit/s,比普通基于BRAM的架构提速约51.77%。
(3)循环型架构方案包括控制模块、轮密钥生成模块和加密模块,由于架构的先进设计,该方案能够节省大量寄存器资源;当加密密钥更新时无需等待,加密过程能够连续进行;能够抵抗侧信道攻击。流水线型架构方案包括基于LUT、BRAM、BRAM+REGISTER三种,由控制模块、轮密钥生成模块和流水线加密模块构成,根据不同应用场景和资源配置,三种流水线型架构可在加密性能、资源优化利用等方面进行权衡。相较于当前先进架构方案,本发明的四套方案在资源节约,资源优化利用、加密吞吐量等方面优势明显。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的SM4密码算法的FPGA优化实现系统结构框图;
图中:1、循环型设计架构;2、流水线LUT型设计架构;3、流水线BRAM型设计架构;4、流水线BRAM+REGISTER型设计架构。
图2是本发明实施例提供的循环型设计架构图。
图3是本发明实施例提供的循环型轮密钥生成模块设计架构图。
图4是本发明实施例提供的循环型加密模块设计架构图。
图5是本发明实施例提供的流水线型设计架构图。
图6是本发明实施例提供的流水线型轮密钥生成模块设计架构图。
图7是本发明实施例提供的流水线型加密模块(LUT、BRAM、BRAM+REGISTER)设计架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种SM4密码算法的FPGA优化实现方法、系统及应用,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的SM4密码算法的FPGA优化实现系统包括:循环型设计架构1、流水线LUT型设计架构2、流水线BRAM型设计架构3、流水线BRAM+REGISTER型设计架构4。
循环型设计架构1包括控制模块、轮密钥生成模块和加密模块;
流水线LUT型设计架构2包括控制模块、轮密钥生成模块和流水线加密模块;
流水线BRAM型设计架构3包括控制模块、轮密钥生成模块和流水线加密模块;
流水线BRAM+REGISTER型设计架构4包括控制模块、轮密钥生成模块和流水线加密模块。
下面结合实施例对本发明的技术方案作进一步描述。
实施例1
SM4算法是一个分组加密算法,消息分组和密钥长度均为128比特,主要包括密钥扩展算法、加密算法、解密算法。算法采用32轮非线性迭代结构,加密和解密算法结构相同,只是轮密钥使用顺序相反。
下面对SM4算法原理进行简要介绍。表示比特e的向量集,中的元素称为字,中的元素称为字节。Sbox(·)表示8输入8输出的S盒,用于非线性置换。表示32比特的异或运算。<<<i表示32比特的循环左移计算。MK表示加密密钥,长度为128比特。rki(i=0,···,31)表示轮密钥,长度为32比特。cki(i=0,···,31)表示系统参数,长度为32比特。轮函数F表示为非线性变换τ表示为τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))。线性变换L表示为线性变换L'表示为
加/解密算法。
(2)(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32),将迭代结果顺序进行翻转,得到加密密文。
解密算法与加密算法过程相同,轮密钥的使用顺序相反,为(rk31,rk30,···,rk0)。
密钥扩展算法。
输出:轮密钥rki,i=0,1,···,31。
实施例2
本发明实施例提供的SM4密码算法的FPGA优化实现系统包括:循环型设计架构、流水线LUT型设计架构、流水线BRAM型设计架构、流水线BRAM+REGISTER型设计架构。
1.循环型设计架构包括控制模块、轮密钥生成模块、加密模块。
(1)控制模块用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块和加密模块输出密钥、待加密消息、当前迭代轮次信号等,控制和协调轮密钥生成模块和加密模块正常运行。
上述方案中,所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块和加密模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态和加密状态。
(2)轮密钥生成模块用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果输出给加密模块。
上述方案中,所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的一些异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括2组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取;所述轮密钥生成模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括1个寄存器,用于存储当前计算生成的轮密钥值并构成循环电路。
(3)加密模块用于根据接收到的待加密数据、当前轮密钥、迭代轮次信号,按照SM4加密算法规则进行32轮迭代加密计算,计算完成输出密文。
上述方案中,所述加密模块包括多组异或电路,用于SM4加密算法中数据的一些异或计算;所述加密模块包括一组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述加密模块包括2组多路选择器,其一用于根据迭代轮次信号判断加密数据直接从输入的待加密数据获取还是从上一轮迭代密文中获取,其二是根据迭代轮次信号判断待加密数据是否已经完成32轮迭代加密,是否可以直接输出密文;所述加密成模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法加密过程中数据的非线性变换;所述加密模块包括1个寄存器,用于存储32轮迭代过程中生成的中间密文并构成循环电路。
2.流水线LUT型设计架构包括控制模块、轮密钥生成模块、流水线加密模块。
(1)控制模块用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块输出密钥、当前迭代轮次信号等,向流水线加密模块输出待加密消息,控制和协调轮密钥生成模块和流水线加密模块正常运行。
上述方案中,所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态、轮密钥生成状态、加密状态。
(2)轮密钥生成模块用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果存入对应寄存器,由寄存器输出给流水线加密模块。
上述方案中,所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的一些异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括3组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取,其三用于根据迭代轮次信号判断并将当前计算生成的轮密钥存入对应的寄存器中;所述轮密钥生成模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括33个寄存器,其中1个用于存储当前计算生成的轮密钥值并构成循环电路,剩下32个寄存器用于存储对应的32个轮密钥。
(3)流水线加密模块用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文。
上述方案中,所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的一些异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密成模块包括32×4=128组并行S盒电路,由LUT组合逻辑构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32个寄存器,用于存储每轮迭代过程中生成的中间密文并构造流水线结构。
3.流水线BRAM型设计架构包括控制模块、轮密钥生成模块、流水线加密模块。
(1)控制模块用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块输出密钥、当前迭代轮次信号等,向流水线加密模块输出待加密消息,控制和协调轮密钥生成模块和流水线加密模块正常运行。
上述方案中,所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态、轮密钥生成状态、加密状态。
(2)轮密钥生成模块用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果存入寄存器,由寄存器输出给流水线加密模块。
上述方案中,所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的一些异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括3组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取,其三用于根据迭代轮次信号判断并将当前计算生成的轮密钥存入对应的寄存器中;所述轮密钥生成模块包括2组并行S盒电路,每组由1个双端口BRAM构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括33个寄存器,其中1个用于存储当前计算生成的轮密钥值并构成循环电路,剩下32个寄存器用于存储对应的32个轮密钥。
(3)流水线加密模块用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文。
上述方案中,所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的一些异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密成模块包括32×2=64组并行S盒电路,每组由一个双口BRAM构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32个寄存器,用于存储每轮迭代过程中生成的中间密文并构造流水线结构。
4.流水线BRAM+REGISTER型设计架构包括控制模块、轮密钥生成模块和流水线加密模块。
(1)控制模块、轮密钥生成模块与上述3中方案一致。
(2)流水线加密模块用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文。
上述方案中,所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的一些异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密成模块包括32×2=64组并行S盒电路,每组由一个双口BRAM构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32×4=128个寄存器,其中64个用于BRAM输出寄存器,剩下64个用于存储每轮迭代过程中生成的中间密文并构造流水线结构。
在循环型架构方案中。首先,轮密钥生成模块生成的新鲜轮密钥直接用于加密模块,不进行存储,能够节省32套寄存器资源,与当前先进架构相比能够节省约50%FFs使用。其次,轮密钥生成模块和加密模块并行执行,当密钥更新时,轮密钥生成模块可以实时计算最新的轮密钥,加密模块无需等待,整个加密过程能够连续进行。最后,轮密钥生成模块和加密模块在整个分组数据加密过程中所需要的时钟循环为常数,能够有效抵抗侧信道攻击。
在流水线型架构方案中。流水线BRAM型设计架构与流水线LUT型设计架构相比,能够在加密吞吐量基本不变的前提下,以增加33个双口BRAM为代价节省约5205个LUTs占用,将LUTs使用数量降低为原来的四分之一,后者能够在LUT和BRAM资源消耗量之间进行权衡优化,平衡硬件资源使用,提高资源利用率。流水线BRAM+REGISTER型设计架构在流水线BRAM型设计架构的基础上增加了输出寄存器,并对整体电路进行了优化,缩减关键路径,进一步提升加密性能,吞吐量可达42.10Gbit/s,比普通基于BRAM的架构提速约51.77%。
实施例3
本发明实施例提供的国密SM4对称密码算法的FPGA优化实现方法,主要包括面向资源节约优化的循环型架构设计方案和面向加密性能优化的流水线型架构设计方案。流水线型架构方案主要由基于LUT、BRAM、BRAM+REGISTER三种设计思路构成。
所述循环型架构方案包括控制模块、轮密钥生成模块和加密模块,包括:
(1)控制模块主要由计数器和Moore型状态机构成。计数器判断输入控制信号valid_in进行计数,为整个循环型架构提供当前迭代轮次信号。Moore型状态机分为空闲和工作状态,当系统处于空闲状态时,控制模块接收待加密明文、密钥、有效位等信号;当系统处于工作状态时,控制模块控制轮密钥生成模块和加密模块运行,不接收外部信号。控制模块根据内部状态、输入信号、寄存器信号等生成round_rk和round_enc协调轮密钥生成模块和加密模块并行启动并进行32轮迭代运算,两个模块启动和运行相差一个时钟循环。
(2)轮密钥生成模块主要由S盒、CK参数、多路选择器、异或电路、寄存器等构成。其中S盒采用4个并行的LUT组合逻辑实现。CK参数同样采用LUT组合逻辑实现,根据round_rk信号确定CK参数。利用寄存器和多路选择器共同构成迭代循环电路,多路选择器根据round_rk信号判断接收密钥或进行32轮迭代计算,寄存器储存并输出每轮计算产生的新鲜轮密钥。在控制模块round_rk和key信号控制调节下,轮密钥生成模块每个时钟循环完成一次迭代运算,生成当前的轮密钥rk_i,新鲜生成的轮密钥不进行存储,直接传递给加密模块用于下一步加密计算,可节省大量寄存器。在整个运行期间,轮密钥生成模块不间断进行计算迭代,当密钥更新时,可实时产生新的轮密钥输出给加密模块,不影响整个架构的加密连贯性。
(3)加密模块主要由S盒、多路选择器、异或电路、寄存器等构成。S盒采用4个并行的LUT组合逻辑实现,采用两个多路选择器和一个寄存器构成循环迭代电路。其中一个多路选择器根据round_enc信号判断接收新的待加密数据或进行迭代加密计算,另外一个多路选择器根据round_enc信号判断是否完成一次分组加密并输出密文。在32轮迭代加密的过程中,每轮迭代产生的加密数据存储在寄存器中。在轮密钥生成模块的输出信号rk_i和控制模块输出信号round_enc和data控制调节下,加密模块比轮密钥生成模块晚一个时钟循环启动,每个时钟循环完成一次迭代加密运算,32轮迭代运算后输出加密密文。
所述流水线型架构方案包括控制模块、轮密钥生成模块和流水线加密模块,包括:
(1)控制模块主要由计数器和Moore型状态机构成。计数器判断输入控制信号valid_in进行计数,为轮密钥模块提供当前迭代轮次信号round。控制模块根据输入信号key_in、valid_in、data_in、状态机状态等,生成round和valid信号控制轮密钥生成模块进行32轮迭代计算轮密钥并存入对应寄存器中,在一个时钟循环时延后,向流水线加密模块输入待加密数据data。
(2)轮密钥生成模块由S盒、CK参数、多路选择器、异或电路、中间寄存器、轮密钥寄存器等构成。S盒可根据不同使用场景和资源配置设计为4路并行LUT组合逻辑实现或2路并行双端口BRAM实现。CK参数采用LUT组合逻辑实现,根据round信号确定CK参数。该模块的架构采用循环型,由多路选择器和中间寄存器构成循环迭代电路,中间寄存器用于存储32轮迭代计算过程中产生的中间值,多路选择器一根据round信号判断引入新的密钥或继续迭代循环,多路选择器二根据round信号将生成的轮密钥rk_i存入对应的轮密钥寄存器中。轮密钥寄存器负责存储32个轮密钥并向流水线加密模块持续输出对应轮密钥。
(3)流水线加密模块由32套加密模块和寄存器构成。在32套加密模块之间插入寄存器确保流水线加密能够持续运行。S盒可根据不同使用场景和资源配置设计为4路并行LUT组合逻辑方法实现、2路并行双端口BRAM方法实现、2路并行双端口BRAM+REGISTER方法实现。流水线加密模块根据S盒的实现方法,在其间插入1个或2个寄存器以保证流水线中加密的连续型。该模块根据输入data、rk_i信号,经过32个或64个时钟时延后,能够连续输出加密密文,每个时钟循环即可完成一次分组加密。
下面结合附图对本发明的应用原理作详细的描述。
如图2所示,在循环型设计架构中,当valid_in消息为高电平时,控制模块状态由空闲状态转为工作状态,模块内计数器开始计数,产生迭代轮次信号round_rk、round_enc,其中round_enc较round_rk信号晚一个时钟循环,当完成32轮循环后,控制模块状态由工作状态转为空闲状态。控制模块将密钥和round_rk信号输出给轮密钥生成模块,将待加密数据和round_enc信号输出给加密模块。轮密钥生成模块收到密钥和round_rk信号后进行迭代计算,得出轮密钥rk_i并输出给加密模块用于迭代加密。加密模块收到待加密数据、round_enc、rk_i信号后,开始进行32轮循环迭代加密运算,迭代结束后输出密文。
如图3所示,在循环型轮密钥生成模块设计架构中,当接收到来自控制模块的密钥和round_rk信号后,首先将密钥和系统参数FK通过异或电路进行计算随后根据round_rk信号值进行判断,当round_rk为第0轮时,接收(K0,K1,K2,K3)进行后续计算,否则接收中间迭代值进行后续计算,同时根据round_rk信号值进行判断,给出系统参数CK对应的数值。进而将得到的数值与系统参数CK通过异或电路进行计算再将得到的计算结果通过S盒电路,进行非线性变换τ。再将非线性变换计算结果通过位移电路,进行L'线性变换。将线性变换结果通过异或电路,进行异或计算。最后将计算结果存入寄存器,寄存器将当前轮密钥rk_i传输给加密模块用于后续加密计算,同时将当前轮密钥rk_i输出用于下一次迭代计算。
如图4所示,在循环型加密模块设计架构中,当接收到来自控制模块的待加密数据和round_enc信号后,根据round_enc信号值进行判断,当round_enc为第0轮时,接收待加密数据进行后续计算,否则接收迭代加密数据进行后续计算。将数据信号和输入信号rk_i通过异或电路进行计算再将数据信号通过4个并行的S盒电路,进行非线性变换。再将非线性变换计算结果通过循环位移电路,进行L线性变换。再将线性变换结果通过异或电路进行异或计算。最后将计算结果存入寄存器,寄存器根据round_enc信号值进行判断,当round_enc信号值表示第32轮时,寄存器输出密文,否则将当前密文输出用于下一次迭代计算。
如图5所示,在流水线型设计架构中,当valid_in消息为高电平时,控制模块状态由空闲状态转为轮密钥生成状态,模块内计数器开始计数,产生迭代轮次信号round,将密钥和round信号输出给轮密钥生成模块,轮密钥生成模块收到数据信号后开始进行32轮迭代计算,生成对应32个轮密钥并存入寄存器中。当所有轮密钥计算完成后,控制模块由轮密钥生成状态转为加密状态,将待加密数据输出给流水线加密模块,流水线加密模块根据待加密数据和对应轮密钥进行32轮流水线迭代加密计算后,输出密文。
如图6所示,在流水线型轮密钥生成模块设计架构中,当接收到来自控制模块的密钥和round信号后,首先将密钥和系统参数FK通过异或电路进行计算再根据round信号值进行判断,当round_rk为第0轮时,接收(K0,K1,K2,K3)进行后续计算,否则接收中间迭代值进行后续计算,根据round_rk信号值进行判断,给出系统参数CK对应的数值。再将得到的数值与系统参数CK通过异或电路进行计算再将得到的计算结果通过S盒电路,进行非线性变换,如果S盒采用LUT组合逻辑结构,后续电路与图2所示相同,如果S盒采用BRAM结构,(K0,K1,K2,K3)密钥计算信号需要经过寄存器进行一个时钟时延。再将非线性变换计算结果通过循环位移电路,进行L'线性变换。再将线性变换结果与Ki通过异或电路,进行异或计算。最后根据当前迭代轮次round信号,将轮密钥存入对应寄存器,与此同时,将当前轮密钥作为输入,进行下一轮迭代计算。
如图7所示,在流水线LUT型加密模块设计架构中,当接收到来自控制模块的待加密数据和轮密钥生成模块的rk_i信号后,首先通过异或电路进行计算随后经过S盒电路进行非线性变换计算,计算结果进而通过循环位移电路进行线性变换计算,再而通过异或电路进行计算,最后存入流水线间插入的寄存器中,作为下一套迭代加密电路的输入;在流水线BRAM型加密模块设计架构中,当接收到来自控制模块的待加密数据和轮密钥生成模块的rk_i信号后,首先通过异或电路进行计算同时将数据信号存入寄存器中,随后经过S盒电路进行非线性变换计算,计算结果进而通过循环位移电路进行线性变换计算,最后将线性变换结果和寄存器信号通过异或电路进行计算并输出作为下一套迭代加密电路的输入;在流水线BRAM+REGISTER型加密模块设计架构中,当接收到来自控制模块的待加密数据和轮密钥生成模块的rk_i信号后,首先通过异或电路进行计算同时将数据信号存入2级寄存器中,随后数据信号经过S盒电路进行非线性变换计算并通过寄存器输出,输出数据信号与2级寄存器数据信号通过异或电路进行计算并输出作为下一套迭代加密电路的输入。流水线型加密模块经过32轮流水线加密迭代后即可输出密文。
本发明中的4套设计架构资源消耗、性能表现如表1所示。
表1资源消耗和性能表现
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (6)
1.一种SM4密码算法的FPGA优化实现系统,其特征在于,所述SM4密码算法的FPGA优化实现系统包括:
循环型设计架构、流水线LUT型设计架构、流水线BRAM型设计架构、流水线BRAM+REGISTER型设计架构;
所述循环型设计架构包括控制模块、轮密钥生成模块和加密模块;
所述流水线LUT型设计架构包括控制模块、轮密钥生成模块和流水线加密模块;
所述流水线BRAM型设计架构包括控制模块、轮密钥生成模块和流水线加密模块;
所述流水线BRAM+REGISTER型设计架构包括控制模块、轮密钥生成模块和流水线加密模块;
所述流水线LUT型设计架构包括:
控制模块,用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块输出密钥、当前迭代轮次信号,向流水线加密模块输出待加密消息,控制和协调轮密钥生成模块和流水线加密模块正常运行;
所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态、轮密钥生成状态、加密状态;
轮密钥生成模块,用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果存入对应寄存器,由寄存器输出给流水线加密模块;
所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括3组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取,其三用于根据迭代轮次信号判断并将当前计算生成的轮密钥存入对应的寄存器中;所述轮密钥生成模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括33个寄存器,其中1个用于存储当前计算生成的轮密钥值并构成循环电路,剩下32个寄存器用于存储对应的32个轮密钥;
流水线加密模块,用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文;
所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密模块包括32×4=128组并行S盒电路,由LUT组合逻辑构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32个寄存器,用于存储每轮迭代过程中生成的中间密文并构造流水线结构;
所述流水线BRAM型设计架构包括:
控制模块,用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块输出密钥、当前迭代轮次信号,向流水线加密模块输出待加密消息,控制和协调轮密钥生成模块和流水线加密模块正常运行;
所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态、轮密钥生成状态、加密状态;
轮密钥生成模块,用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果存入寄存器,由寄存器输出给流水线加密模块;
所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括3组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取,其三用于根据迭代轮次信号判断并将当前计算生成的轮密钥存入对应的寄存器中;所述轮密钥生成模块包括2组并行S盒电路,每组由1个双端口BRAM构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括33个寄存器,其中1个用于存储当前计算生成的轮密钥值并构成循环电路,剩下32个寄存器用于存储对应的32个轮密钥;
流水线加密模块,用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文;
所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密模块包括32×2=64组并行S盒电路,每组由一个双口BRAM构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32个寄存器,用于存储每轮迭代过程中生成的中间密文并构造流水线结构;
所述流水线BRAM+REGISTER型设计架构包括:
控制模块,用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块输出密钥、当前迭代轮次信号,向流水线加密模块输出待加密消息,控制和协调轮密钥生成模块和流水线加密模块正常运行;
所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态、轮密钥生成状态、加密状态;
轮密钥生成模块,用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果存入寄存器,由寄存器输出给流水线加密模块;
所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括3组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取,其三用于根据迭代轮次信号判断并将当前计算生成的轮密钥存入对应的寄存器中;所述轮密钥生成模块包括2组并行S盒电路,每组由1个双端口BRAM构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括33个寄存器,其中1个用于存储当前计算生成的轮密钥值并构成循环电路,剩下32个寄存器用于存储对应的32个轮密钥;
流水线加密模块,用于根据接收到的待加密数据、当前轮密钥,按照SM4加密算法规则进行32轮流水线迭代计算,计算完成输出密文;
所述流水线加密模块包括多组异或电路,用于SM4加密算法中数据的异或计算;所述流水线加密模块包括32组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述流水线加密模块包括32×2=64组并行S盒电路,每组由一个双口BRAM构成,用于SM4算法加密过程中数据的非线性变换;所述流水线加密模块包括32×4=128个寄存器,其中64个用于BRAM输出寄存器,剩下64个用于存储每轮迭代过程中生成的中间密文并构造流水线结构;
所述循环型设计架构包括:
控制模块,用于接收密钥、待加密消息、有效信号,判断当前状态,向轮密钥生成模块和加密模块输出密钥、待加密消息、当前迭代轮次信号,控制和协调轮密钥生成模块和加密模块正常运行;
所述控制模块包括一套计数器,用于在32轮迭代计算过程中为轮密钥生成模块和加密模块提供当前迭代轮次信号;所述控制模块包括Moore型状态机,用于根据当前接收的信号确定整个架构的工作状态,包括空闲状态和加密状态;
轮密钥生成模块,用于根据接收到的密钥和迭代轮次信号,按照SM4轮密钥生成算法进行迭代计算,将计算得到的轮密钥结果输出给加密模块;
所述轮密钥生成模块包括多组异或电路,用于SM4加密算法中轮密钥生成中的异或计算;所述轮密钥生成模块包括一组循环位移电路,用于SM4加密算法中轮密钥生成过程中数据的循环位移;所述轮密钥生成模块包括2组多路选择器,其一用于根据迭代轮次信号判断并提供对应的CK参数,其二用于判断轮密钥生成数据直接从密钥获取还是从上一轮迭代参数中获取;所述轮密钥生成模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法中轮密钥生成过程中数据的非线性变换;所述轮密钥生成模块包括1个寄存器,用于存储当前计算生成的轮密钥值并构成循环电路;
加密模块,用于根据接收到的待加密数据、当前轮密钥、迭代轮次信号,按照SM4加密算法规则进行32轮迭代加密计算,计算完成输出密文;
所述加密模块包括多组异或电路,用于SM4加密算法中数据的异或计算;所述加密模块包括一组循环位移电路,用于SM4加密算法中加密数据的循环位移;所述加密模块包括2组多路选择器,其一用于根据迭代轮次信号判断加密数据直接从输入的待加密数据获取还是从上一轮迭代密文中获取,其二是根据迭代轮次信号判断待加密数据是否已经完成32轮迭代加密,是否可以直接输出密文;所述加密模块包括4组并行S盒电路,由LUT组合逻辑构成,用于SM4算法加密过程中数据的非线性变换;所述加密模块包括1个寄存器,用于存储32轮迭代过程中生成的中间密文并构成循环电路。
2.一种实施权利要求1所述的SM4密码算法的FPGA优化实现系统的SM4密码算法的FPGA优化实现方法,其特征在于,所述SM4密码算法的FPGA优化实现方法包括以下步骤:
步骤一,在循环型设计架构中,当valid_in消息为高电平时,控制模块状态由空闲状态转为工作状态,模块内计数器开始计数,产生迭代轮次信号round_rk、round_enc,其中round_enc较round_rk信号晚一个时钟循环,当完成32轮循环后,控制模块状态由工作状态转为空闲状态;
步骤二,控制模块将密钥和round_rk信号输出给轮密钥生成模块,将待加密数据和round_enc信号输出给加密模块;轮密钥生成模块收到密钥和round_rk信号后进行迭代计算,得出轮密钥rk_i并输出给加密模块用于迭代加密;加密模块收到待加密数据、round_enc、rk_i信号后,开始进行32轮循环迭代加密运算,迭代结束后输出密文;
步骤四,根据round_rk信号值进行判断,当round_rk为第0轮时,接收(K0,K1,K2,K3)进行后续计算,否则接收中间迭代值进行后续计算,同时根据round_rk信号值进行判断,给出系统参数CK对应的数值,进而将得到的数值与系统参数CK通过异或电路进行计算
步骤五,将得到的计算结果通过S盒电路,进行非线性变换τ,再将非线性变换计算结果通过位移电路,进行L'线性变换;将线性变换结果通过异或电路,进行异或计算;最后将计算结果存入寄存器,寄存器将当前轮密钥rk_i传输给加密模块用于后续加密计算,同时将当前轮密钥rk_i输出用于下一次迭代计算;
步骤六,在循环型加密模块设计架构中,当接收到来自控制模块的待加密数据和round_enc信号后,根据round_enc信号值进行判断,当round_enc为第0轮时,接收待加密数据进行后续计算,否则接收迭代加密数据进行后续计算;
步骤七,将数据信号和输入信号rk_i通过异或电路进行计算再将数据信号通过4个并行的S盒电路,进行非线性变换;再将非线性变换计算结果通过循环位移电路,进行L线性变换;再将线性变换结果通过异或电路进行异或计算;最后将计算结果存入寄存器,寄存器根据round_enc信号值进行判断,当round_enc信号值表示第32轮时,寄存器输出密文,否则将当前密文输出用于下一次迭代计算;
步骤八,在流水线型设计架构中,当valid_in消息为高电平时,控制模块状态由空闲状态转为轮密钥生成状态,模块内计数器开始计数,产生迭代轮次信号round,将密钥和round信号输出给轮密钥生成模块,轮密钥生成模块收到数据信号后开始进行32轮迭代计算,生成对应32个轮密钥并存入寄存器中;
步骤九,当所有轮密钥计算完成后,控制模块由轮密钥生成状态转为加密状态,将待加密数据输出给流水线加密模块,流水线加密模块根据待加密数据和对应轮密钥进行32轮流水线迭代加密计算后,输出密文;
步骤十,在流水线型轮密钥生成模块设计架构中,当接收到来自控制模块的密钥和round信号后,首先将密钥和系统参数FK通过异或电路进行计算再根据round信号值进行判断,当round_rk为第0轮时,接收(K0,K1,K2,K3)进行后续计算,否则接收中间迭代值进行后续计算,根据round_rk信号值进行判断,给出系统参数CK对应的数值;再将得到的数值与系统参数CK通过异或电路进行计算
步骤十一,将得到的计算结果通过S盒电路,进行非线性变换,如果S盒采用LUT组合逻辑结构,如果S盒采用BRAM结构,(K0,K1,K2,K3)密钥计算信号需要经过寄存器进行一个时钟时延;再将非线性变换计算结果通过循环位移电路,进行L'线性变换;再将线性变换结果与Ki通过异或电路,进行异或计算;最后根据当前迭代轮次round信号,将轮密钥存入对应寄存器,与此同时,将当前轮密钥作为输入,进行下一轮迭代计算;
步骤十二,在流水线LUT型加密模块设计架构中,当接收到来自控制模块的待加密数据和轮密钥生成模块的rk_i信号后,首先通过异或电路进行计算随后经过S盒电路进行非线性变换计算,计算结果进而通过循环位移电路进行线性变换计算,再而通过异或电路进行计算,最后存入流水线间插入的寄存器中,作为下一套迭代加密电路的输入;
步骤十三,在流水线BRAM型加密模块设计架构中,当接收到来自控制模块的待加密数据和轮密钥生成模块的rk_i信号后,首先通过异或电路进行计算同时将数据信号存入寄存器中,随后经过S盒电路进行非线性变换计算,计算结果进而通过循环位移电路进行线性变换计算,最后将线性变换结果和寄存器信号通过异或电路进行计算并输出作为下一套迭代加密电路的输入;
3.如权利要求2所述SM4密码算法的FPGA优化实现方法,其特征在于,所述SM4算法是一个分组加密算法,消息分组和密钥长度均为128比特,包括密钥扩展算法、加密算法和解密算法;所述SM4算法采用32轮非线性迭代结构,加密和解密算法结构相同,只是轮密钥使用顺序相反;
5.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求2所述的SM4密码算法的FPGA优化实现方法。
6.一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现权利要求2所述的SM4密码算法的FPGA优化实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110212804.8A CN113078996B (zh) | 2021-02-25 | 2021-02-25 | Sm4密码算法的fpga优化实现方法、系统及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110212804.8A CN113078996B (zh) | 2021-02-25 | 2021-02-25 | Sm4密码算法的fpga优化实现方法、系统及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113078996A CN113078996A (zh) | 2021-07-06 |
CN113078996B true CN113078996B (zh) | 2022-09-13 |
Family
ID=76610006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110212804.8A Active CN113078996B (zh) | 2021-02-25 | 2021-02-25 | Sm4密码算法的fpga优化实现方法、系统及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113078996B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113949504B (zh) * | 2021-10-15 | 2023-09-19 | 中国计量大学 | 一种适用于移动设备的高速sm4密码算法电路 |
CN116070292B (zh) * | 2023-03-07 | 2023-06-16 | 苏州宏存芯捷科技有限公司 | 一种基于fpga的sm4加密异构加速系统 |
CN116506106B (zh) * | 2023-03-13 | 2023-11-03 | 苏州宏存芯捷科技有限公司 | 一种基于fpga的可配置密钥sm4加解密系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111431706A (zh) * | 2020-03-18 | 2020-07-17 | 中孚信息股份有限公司 | 一种使用fpga逻辑实现提高sm4算法速度的方法,系统及设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010050989A1 (en) * | 2000-06-07 | 2001-12-13 | Jabari Zakiya | Systems and methods for implementing encryption algorithms |
FR2941343B1 (fr) * | 2009-01-20 | 2011-04-08 | Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst | Circuit de cryptographie, protege notamment contre les attaques par observation de fuites d'information par leur chiffrement. |
US10103873B2 (en) * | 2016-04-01 | 2018-10-16 | Intel Corporation | Power side-channel attack resistant advanced encryption standard accelerator processor |
CN106487500A (zh) * | 2017-01-04 | 2017-03-08 | 盛科网络(苏州)有限公司 | 采用流水线实现aes算法处理的方法 |
CN109299614A (zh) * | 2018-10-30 | 2019-02-01 | 天津津航计算技术研究所 | 一种采用流水线方式实现sm4密码算法的系统及方法 |
CN111914307B (zh) * | 2020-08-11 | 2022-10-14 | 山东大学 | 基于高层次综合的国密算法sm4加速处理方法及系统 |
-
2021
- 2021-02-25 CN CN202110212804.8A patent/CN113078996B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111431706A (zh) * | 2020-03-18 | 2020-07-17 | 中孚信息股份有限公司 | 一种使用fpga逻辑实现提高sm4算法速度的方法,系统及设备 |
Non-Patent Citations (1)
Title |
---|
基于现场可编程门阵列的Linux统一加密设置认证算法的流水线架构;杨文勇等;《厦门大学学报(自然科学版)》;20180728(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113078996A (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113078996B (zh) | Sm4密码算法的fpga优化实现方法、系统及应用 | |
Wang et al. | Single-and multi-core configurable AES architectures for flexible security | |
Chen et al. | High performance data encryption with AES implementation on FPGA | |
CN112202568A (zh) | 软硬件协同设计sm9数字签名通信方法和系统 | |
CN116094711B (zh) | 一种基于指令集的后量子格密码硬件优化结构 | |
CN109190413B (zh) | 一种基于fpga和md5加密的串行通信系统 | |
CN114640454A (zh) | 一种后量子密码Crystals Kyber协议的密码系统 | |
CN110336661B (zh) | Aes-gcm数据处理方法、装置、电子设备及存储介质 | |
Algredo-Badillo et al. | Efficient hardware architecture for the AES-CCM protocol of the IEEE 802.11 i standard | |
CN114679252A (zh) | 一种MACsec AES算法资源共享方法 | |
Fu et al. | Low-cost hardware implementation of SM4 based on composite field | |
Zhang et al. | Optimization and implementation of AES algorithm based on FPGA | |
Luo et al. | Optimization of AES-128 encryption algorithm for security layer in zigbee networking of internet of things | |
CN114553424B (zh) | Zuc-256流密码轻量级硬件系统 | |
Li et al. | An implementation method for SM4-GCM on FPGA | |
CN112988235B (zh) | 一种高效率第三代安全散列算法的硬件实现电路及方法 | |
CN114615069A (zh) | 一种Quartet轻量级加密算法的实现装置及方法 | |
CN109033893A (zh) | 基于合成矩阵的aes加密单元、aes加密电路及其加密方法 | |
CN110493003B (zh) | 一种基于四基二进制底层模运算的快速加密系统 | |
Rodríguez et al. | System-on-Programmable-Chip AES-GCM implementation for wire-speed cryptography for SAS | |
Chen et al. | Research and implementation of reconfigurable architecture of DES and ZUC | |
Lv et al. | High-performance optimization of SM4-GCM based on FPGA | |
CN203119915U (zh) | 一种基于硬件加密数据的装置 | |
Kanda et al. | Vedic Multiplier-based International Data Encryption Algorithm Crypto-Core for Efficient Hardware Multiphase Encryption Design | |
Mohanraj et al. | High performance GCM architecture for the security of high speed network |
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 |