[发明专利]SM4密码算法的FPGA优化实现方法、系统及应用有效
申请号: | 202110212804.8 | 申请日: | 2021-02-25 |
公开(公告)号: | CN113078996B | 公开(公告)日: | 2022-09-13 |
发明(设计)人: | 何诗洋;李晖;李凤华 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | H04L9/06 | 分类号: | H04L9/06 |
代理公司: | 西安长和专利代理有限公司 61227 | 代理人: | 黄伟洪 |
地址: | 710071 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | sm4 密码 算法 fpga 优化 实现 方法 系统 应用 | ||
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轮迭代过程中生成的中间密文并构成循环电路。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110212804.8/1.html,转载请声明来源钻瓜专利网。