[发明专利]一种采用流水线方式实现SM4密码算法的系统及方法在审
申请号: | 201811274070.0 | 申请日: | 2018-10-30 |
公开(公告)号: | CN109299614A | 公开(公告)日: | 2019-02-01 |
发明(设计)人: | 李宏耀 | 申请(专利权)人: | 天津津航计算技术研究所 |
主分类号: | G06F21/60 | 分类号: | G06F21/60;H04L9/06 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 祁恒 |
地址: | 300308 天津*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明属于信息安全技术领域,具体涉及一种采用流水线方式实现SM4密码算法的系统及方法。本发明提高了加密/解密的速度,可满足大数据量、高实时性的加密/解密应用需求;同时通过对轮密钥生成模块和轮数据生成模块的优化,减少了FPGA硬件门电路中的逻辑单元的消耗。 | ||
搜索关键词: | 流水线方式 加密/解密 密码算法 密钥生成模块 信息安全技术 硬件门电路 大数据量 高实时性 逻辑单元 生成模块 应用需求 轮数据 对轮 消耗 优化 | ||
【主权项】:
1.一种采用流水线方式实现SM4密码算法的系统,其特征在于,所述系统包括输入信息存储器、输出信息存储器、加密/解密控制信号寄存器、轮密钥生成控制信号寄存器、密钥寄存器、启动控制信号寄存器、同步时钟生成模块、双字顺序调整模块、轮密钥生成模块和轮数据生成模块;其中,所述输入信息存储器和输出信息存储器,分别用于存储输入的数据和输出的数据;所述加密/解密控制信号寄存器,用于寄存加密/解密的控制信号,该控制信号决定系统进行加密操作或解密操作;所述轮密钥生成控制信号寄存器,用于寄存轮密钥生成模块的启动信号,该启动信号决定轮密钥生成模块是否启动工作状态;所述密钥寄存器,用于系统的加密/解密;所述启动控制信号寄存器,用于寄存同步时钟生成模块的控制信号,该控制信号决定同步时钟生成模块启动工作或停止工作;所述同步时钟生成模块,用于为轮数据生成模块提供基准的同步时钟,同步时钟生成模块受启动控制信号寄存器的启动控制信号的控制,依据不同的启动控制信可进入工作状态或停止工作状态;所述双字顺序调整模块,用于对输入数据进行双字序调整并对调整后的数据进行输出;所述轮密钥生成模块,包括参量FK0、参量FK1、参量FK2、参量FK3、参量CKi(i=0~31)、密钥MK0、密钥MK1、密钥MK2、密钥MK3、2输入异或运算器、寄存器X0、寄存器X1、寄存器X2、寄存器X3、寄存器K0、寄存器K1、寄存器K2、寄存器K3、寄存器K4、寄存器CK、寄存器rki(i=0~31)、2输入数据选择器、32输入数据选择器、4输入异或运算器、3输入异或运算器、S盒变换器、循环移位器0、循环移位器1、32输出数据选择器、轮密钥输出控制器、轮密钥RKi(i=0~31)、16进制计数器和64进制计数器;其中,依据SM4密码算法标准,参量FK0=A3B1BAC6,参量FK1=56AA3350,参量FK2=677D9197,参量FK3=B27022DC,参量CK0=00070E15,参量CK1=1C232A31,参量CK2=383F464D,参量CK3=545B6269,参量CK4=70777E85,参量CK5=8C939AA1,参量CK6=A8AFB6BD,参量CK7=C4CBD2D9,参量CK8=E0E7EEF5,参量CK9=FC030A11,参量CK10=181F262D,参量CK11=343B4249,参量CK12=50575E65,参量CK13=6C737A81,参量CK14=888F969D,参量CK15=A4ABB2B9,参量CK16=C0C7CED5,参量CK17=DCE3EAF1,参量CK18=F8FF060D,参量CK19=141B2229,参量CK20=30373E45,参量CK21=4C535A61,参量CK22=686F767D,参量CK23=848B9299,参量CK24=A0A7AEB5,参量CK25=BCC3CAD1,参量CK26=D8DFE6ED,参量CK27=F4FB0209,参量CK28=10171E25,参量CK29=2C333A41,参量CK30=484F565D,参量CK31=646B7279;密钥MK0、密钥MK1、密钥MK2、密钥MK3均为32比特的密钥输入数据,由密钥寄存器提供;2输入异或运算器,是对2个32比特的输入数据进行逐位异或运算,输出一个新的32比特的数据;寄存器X0、寄存器X1、寄存器X2、寄存器X3、寄存器K0、寄存器K1、寄存器K2、寄存器K3、寄存器K4、寄存器CK、寄存器rki(i=0~31)均是32位的数据寄存器;2输入数据选择器,是根据64进制计数器提供的控制信号,决定2个输入之中选择一个进行输出,每一个输入均为32比特的数据,输出也为32比特的数据;32输入数据选择器,是根据64进制计数器提供的控制信号,决定32个输入之中选择一个进行输出,每一个输入均为32比特的数据,输出也为32比特的数据;4输入异或运算器,是对4个32比特的输入数据进行逐位异或运算,输出一个新的32比特的数据;3输入异或运算器,是对3个32比特的输入数据进行逐位异或运算,输出一个新的32比特的数据;S盒变换器,是将一个32比特的输入数据以字节为单位,用完全不相关的新的字节进行替换;循环移位器0,是将一个32比特的输入数据,向左循环移位13位,输出一个新的32比特的数据;循环移位器1,是将一个32比特的输入数据,向左循环移位23位,输出一个新的32比特的数据;32输出数据选择器,是根据64进制计数器提供的控制信号,将输入的数据送入指定的32个输出中的某一个进行输出,输入为32比特的数据,每一个输出也是32比特的数据;轮密钥输出控制器,依据加密/解密控制信号,决定轮密钥RKi(i=0~31)的输出值;轮密钥RKi(i=0~31),是寄存生成的32个轮密钥,每个轮密钥都是32比特的数据;16进制计数器,是对输入的50MHz时钟信号脉冲进行计数,每当计数值为8,输出一个高电平,每当计数值为15,输出一个低电平;64进制计数器,受轮密钥生成控制信号控制,当收到有效的控制信号后,64进制计数器启动工作,并对16进制计数器的输出信号脉冲进行计数,然后将计数值进行输出,当64进制计数器计数值等于34后,64进制计数器停止计数,也停止输出;所述轮数据生成模块,包括寄存器A0、寄存器A1、寄存器A2、寄存器A3、寄存器B0、寄存器B1、寄存器B2、寄存器B3、寄存器D0、寄存器D1、寄存器D2、寄存器D3、寄存器D4、寄存器RK、轮密钥输入寄存器0、轮密钥输入寄存器1、轮密钥输入寄存器2、轮密钥输入寄存器3、2输入数据选择器、4输入数据选择器、4输出数据选择器、2输入异或运算器、4输入异或运算器、5输入异或运算器、S盒变换器、循环移位器2、循环移位器3、循环移位器4、循环移位器5、12进制计数器和8进制计数器;其中,寄存器A0、寄存器A1、寄存器A2、寄存器A3、寄存器B0、寄存器B1、寄存器B2、寄存器B3、寄存器D0、寄存器D1、寄存器D2、寄存器D3、寄存器D4、寄存器RK、轮密钥输入寄存器0、轮密钥输入寄存器1、轮密钥输入寄存器2、轮密钥输入寄存器3,均为32比特的数据寄存器;其中,寄存器A0、寄存器A1、寄存器A2、寄存器A3,用于寄存输入的数据;寄存器B0、寄存器B1、寄存器B2、寄存器B3,用于寄存输出的数据;轮密钥输入寄存器0、轮密钥输入寄存器1、轮密钥输入寄存器2、轮密钥输入寄存器3,用于寄存相应的输入轮密钥;4输入数据选择器,是根据8进制计数器提供的控制信号,决定4个输入之中选择一个进行输出,每一个输入均为32比特的数据,输出也是32比特的数据;4输出数据选择器,是根据8进制计数器提供的控制信号,将输入的数据送入指定的4个输出中的某一个进行输出,输入为32比特的数据,每一个输出也是32比特的数据;5输入异或运算器,是对5个32比特的输入数据进行逐位异或运算,输出一个新的32比特的数据;循环移位器2,是将一个32比特的输入数据,向左循环移位2位,输出一个新的32比特的数据;循环移位器3,是将一个32比特的输入数据,向左循环移位10位,输出一个新的32比特的数据;循环移位器4,是将一个32比特的输入数据,向左循环移位18位,输出一个新的32比特的数据;循环移位器5,是将一个32比特的输入数据,向左循环移位24位,输出一个新的32比特的数据;12进制计数器,是对输入的50MHz时钟信号脉冲进行计数,每当计数值为6,输出一个高电平,每当计数值为11,输出一个低电平;8进制计数器,受同步时钟信号控制,任何时候收到有效的同步时钟信号,8进制计数器都立即执行清;当同步时钟信号无效时,8进制计数器对12进制计数器的输出信号脉冲进行计数,然后将计数值进行输出,直到8进制计数器计数值等于4后,8进制计数器停止计数,也停止输出。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津津航计算技术研究所,未经天津津航计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811274070.0/,转载请声明来源钻瓜专利网。