一种采用流水线方式实现SM4密码算法的系统及方法技术方案

技术编号:20273342 阅读:34 留言:0更新日期:2019-02-02 03:57
本发明专利技术属于信息安全技术领域,具体涉及一种采用流水线方式实现SM4密码算法的系统及方法。本发明专利技术提高了加密/解密的速度,可满足大数据量、高实时性的加密/解密应用需求;同时通过对轮密钥生成模块和轮数据生成模块的优化,减少了FPGA硬件门电路中的逻辑单元的消耗。

【技术实现步骤摘要】
一种采用流水线方式实现SM4密码算法的系统及方法
本专利技术属于信息安全
,具体涉及一种采用流水线方式实现SM4密码算法的系统及方法。
技术介绍
随着计算机网络及通信技术的迅速发展,信息安全问题受到越来越多的关注,信息安全问题已经被我国政府提高到了国家发展战略的层次。对于企业及技术研发者来说,核心数据或研发的核心软件也时刻面临着被轻易复制盗窃的巨大风险。因此,需要使用安全的密码算法对核心数据或核心软件进行加密保护。SM4密码算法于2012年被中国国家商用密码管理局确定为国家密码行业标准,标准编号为GM/T0002-2012。SM4密码算法是一种分组密码算法,分组长度为128比特,密钥长度为128比特。即SM4密码算法是每次输入128比特的数据,经过一系列的处理后,最后输出另一个不同的128比特的数据。一般的,SM4密码算法可使用C、JAVA等语言工具编写软件模块实现,这是一种软件加密实现方法。SM4密码算法也可使用FPGA硬件门电路实现,这是一种硬件加密实现方法。硬件加密比软件加密具有速度更快的优点。使用FPGA硬件门电路实现SM4密码算法时,往往是使用简单的逻辑电路来实现,这种实现方法具有消耗逻辑单元多、处理时间长、加密/解密速度慢的缺点,满足不了大数据量、高实时性的加密/解密处理需求。
技术实现思路
(一)要解决的技术问题本专利技术提出一种采用流水线方式实现SM4密码算法的系统及方法,以解决如何克服FPGA硬件门电路中使用简单的逻辑电路实现SM4密码算法时消耗逻辑单元多、处理时间长、加密/解密速度慢的技术问题。(二)技术方案为了解决上述技术问题,本专利技术提出一种采用流水线方式实现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输入数据选择器、本文档来自技高网...

【技术保护点】
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...

【技术特征摘要】
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进制计数器停止计数,也停止输出。2.一种采用流水线方式实现SM4密码算法的方法,其特征在于,利用权利要求1所述的系统,所述方法包括如下步骤:(1)存储准备信息密钥寄存器存储128比特的数据作为加密/解密的密钥;加密/解密控制信号寄存器存储1比特的数据,若该数据为1,则表征为解密,若该数据为0,则表征为加密;输入信息存储器存储128比特的数据,并且每次数据被读走时立即往输入信息存储器存入新的128比特的数据;(2)生成轮密钥轮密钥用于SM4密码算法的32轮迭代过程中,是由轮密钥生成模块产生;密钥寄存器的数据MK分成4个32比特的数据MK0、MK1、MK2、MK3,即MK=(MK0,MK1,MK2,MK3);这4个32比特的密钥数据分别与参量FK0、FK1、FK2、FK3送入2输入异或运算器进行异或运算,并将运算的结果存入寄存器X0、X1、X2、X3;当轮密钥生成控制信号寄存器提供的轮密钥控制信号为0时,64进制计数器处于不工作状态;当轮密钥生成控制信号寄存器的轮密钥控制信号为1时,启动64进制计数器工作;当64进制计数器输出值为1时,4个2输入数据选择器分别选择寄存器X0、...

【专利技术属性】
技术研发人员:李宏耀
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1