[发明专利]一种采用流水线方式实现SM4密码算法的系统及方法在审

专利信息
申请号: 201811274070.0 申请日: 2018-10-30
公开(公告)号: CN109299614A 公开(公告)日: 2019-02-01
发明(设计)人: 李宏耀 申请(专利权)人: 天津津航计算技术研究所
主分类号: G06F21/60 分类号: G06F21/60;H04L9/06
代理公司: 中国兵器工业集团公司专利中心 11011 代理人: 祁恒
地址: 300308 天津*** 国省代码: 天津;12
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 流水线方式 加密/解密 密码算法 密钥生成模块 信息安全技术 硬件门电路 大数据量 高实时性 逻辑单元 生成模块 应用需求 轮数据 对轮 消耗 优化
【权利要求书】:

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、X1、X2、X3的数据作为其输出值,输出给寄存器K0、K1、K2、K3;32输入数据选择器选择常量CK0作为输出,输出给寄存器CK;32输出数据选择器处于不工作状态;随后寄存器K1、K2、K3、CK的数据被送入4输入异或运算器进行异或运算,运算的结果送入S盒变换器进行字节替换,替换后得到的数据分别送入循环移位器0和循环移位器1进行循环移位操作,字节替换后得到的数据、循环移位器0的输出值和循环移位器1的输出值一并送入3输入异或运算器进行异或运算,运算结果再与寄存器K0的数据送入2输入异或运算器进行异或运算,运算结果存储在寄存器K4中;至此等待64进制计数器的下一个输出信号的到来;

接着64进制计数器输出为2,4个2输入数据选择器分别选择寄存器K1、K2、K3、K4的数据作为其输出值,输出给寄存器K0、K1、K2、K3;32输入数据选择器选择常量CK1作为输出,输出给寄存器CK;32输出数据选择器选择寄存器rk0作为输出寄存器,将寄存器K4的数据存入寄存器rk0;随后寄存器K1、K2、K3、CK的数据被送入4输入异或运算器进行异或运算,运算的结果送入S盒变换器进行字节替换,替换后得到的数据分别送入循环移位器0和循环移位器1进行循环移位操作,字节替换后得到的数据、循环移位器0的输出值和循环移位器1的输出值一并送入3输入异或运算器进行异或运算,运算结果再与寄存器K0的数据送入2输入异或运算器进行异或运算,运算结果存储在寄存器K4中;若加密/解密控制信号寄存器提供的加密/解密控制信号为0,则寄存器rk0的数据被输出给寄存器RK0,若加密/解密控制信号寄存器提供的加密/解密控制信号为1,则寄存器rk0的数据被输出给寄存器RK31;至此等待64进制计数器的下一个输出信号的到来;

接着64进制计数器输出为i(2<i<33),4个2输入数据选择器分别选择寄存器K1、K2、K3、K4的数据作为其输出值,输出给寄存器K0、K1、K2、K3;32输入数据选择器选择常量CKi-1(2<i<33)作为输出,输出给寄存器CK;32输出数据选择器选择寄存器rki-2(2<i<33)作为输出寄存器,将寄存器K4的数据存入寄存器rki-2(2<i<33);随后寄存器K1、K2、K3、CK的数据被送入4输入异或运算器进行异或运算,运算的结果送入S盒变换器进行字节替换,替换后得到的数据分别送入循环移位器0和循环移位器1进行循环移位操作,字节替换后得到的数据、循环移位器0的输出值和循环移位器1的输出值一并送入3输入异或运算器进行异或运算,运算结果再与寄存器K0的数据送入2输入异或运算器进行异或运算,运算结果存储在寄存器K4中;若加密/解密控制信号寄存器提供的加密/解密控制信号为0,则寄存器rki-2(2<i<33)的数据被输出给寄存器RKi-2(2<i<33),若加密/解密控制信号寄存器提供的加密/解密控制信号为1,则寄存器rki-2(2<i<33)的数据被输出给寄存器RK33-i(2<i<33);至此等待64进制计数器的下一个输出信号的到来;

当64进制计数器输出为33时,4个2输入数据选择器停止工作,输出值不变;32输入数据选择器停止工作,输出值不变;32输出数据选择器选择寄存器rk31作为输出寄存器,将寄存器K4的数据存入寄存器rk31;若加密/解密控制信号寄存器提供的加密/解密控制信号为0,则寄存器rk31的数据被输出给寄存器RK31,若加密/解密控制信号寄存器提供的加密/解密控制信号为1,则寄存器rk31的数据被输出给寄存器RK0;至此32个轮密钥全部生成,64进制计数器停止工作和停止输出;

(3)生成轮数据

轮数据是SM4密码算法的32轮迭代过程中的中间数据,由轮数据生成模块产生;轮数据生成模块受同步时钟生成模块驱动,当启动控制信号寄存器提供的启动控制信号为1时,同步时钟生成模块启动工作,并输出1MHz时钟信号,从而初始化轮数据生成模块中的8进制计数器,进入可控的工作状态;

寄存器A0、A1、A2、A3用于存储输入的32比特数据;轮密钥输入寄存器0、轮密钥输入寄存器1、轮密钥输入寄存器2、轮密钥输入寄存器3用于存储由轮密钥生成模块产生的轮密钥;8个轮数据生成模块中,按由上至下的顺序,第1个轮数据生成模块获取轮密钥RK0、RK1、RK2、RK3;依此类推,第8个轮数据生成模块获取轮密钥RK28、RK29、RK30、RK31;

当8进制计数器输出值为1时,4个2输入数据选择器分别选择寄存器A0、A1、A2、A3的数据作为其输出值,输出给寄存器D0、D1、D2、D3;4输入数据选择器选择轮密钥输入寄存器0作为输出,输出给寄存器RK;4输出数据选择器处于不工作状态;随后寄存器A1、A2、A3、RK的数据被送入4输入异或运算器进行异或运算,运算的结果送入S盒变换器进行字节替换,替换后得到的数据分别送入循环移位器2、循环移位器3、循环移位器4和循环移位器5进行循环移位操作,字节替换后得到的数据、循环移位器2、循环移位器3、循环移位器4和循环移位器5的输出值一并送入5输入异或运算器进行异或运算,运算结果再与寄存器A0的数据送入2输入异或运算器进行异或运算,运算结果存储在寄存器D4中;至此等待8进制计数器的下一个输出信号的到来;

当8进制计数器输出值为2时,4个2输入数据选择器分别选择寄存器D1、D2、D3、D4的数据作为其输出值,输出给寄存器D0、D1、D2、D3;4输入数据选择器选择轮密钥输入寄存器1作为输出,输出给寄存器RK;4输出数据选择器选择寄存器B0作为输出寄存器,将寄存器D4的数据存入寄存器B0;随后寄存器A1、A2、A3、RK的数据被送入4输入异或运算器进行异或运算,运算的结果送入S盒变换器进行字节替换,替换后得到的数据分别送入循环移位器2、循环移位器3、循环移位器4和循环移位器5进行循环移位操作,字节替换后得到的数据、循环移位器2、循环移位器3、循环移位器4和循环移位器5的输出值一并送入5输入异或运算器进行异或运算,运算结果再与寄存器A0的数据送入2输入异或运算器进行异或运算,运算结果存储在寄存器D4中;至此等待8进制计数器的下一个输出信号的到来;

当8进制计数器输出值为3时,4个2输入数据选择器分别选择寄存器D1、D2、D3、D4的数据作为其输出值,输出给寄存器D0、D1、D2、D3;4输入数据选择器选择轮密钥输入寄存器2作为输出,输出给寄存器RK;4输出数据选择器选择寄存器B1作为输出寄存器,将寄存器D4的数据存入寄存器B1;随后寄存器A1、A2、A3、RK的数据被送入4输入异或运算器进行异或运算,运算的结果送入S盒变换器进行字节替换,替换后得到的数据分别送入循环移位器2、循环移位器3、循环移位器4和循环移位器5进行循环移位操作,字节替换后得到的数据、循环移位器2、循环移位器3、循环移位器4和循环移位器5的输出值一并送入5输入异或运算器进行异或运算,运算结果再与寄存器A0的数据送入2输入异或运算器进行异或运算,运算结果存储在寄存器D4中;至此等待8进制计数器的下一个输出信号的到来;

当8进制计数器输出值为4时,4个2输入数据选择器分别选择寄存器D1、D2、D3、D4的数据作为其输出值,输出给寄存器D0、D1、D2、D3;4输入数据选择器选择轮密钥输入寄存器3作为输出,输出给寄存器RK;4输出数据选择器选择寄存器B2作为输出寄存器,将寄存器D4的数据存入寄存器B2;随后寄存器A1、A2、A3、RK的数据被送入4输入异或运算器进行异或运算,运算的结果送入S盒变换器进行字节替换,替换后得到的数据分别送入循环移位器2、循环移位器3、循环移位器4和循环移位器5进行循环移位操作,字节替换后得到的数据、循环移位器2、循环移位器3、循环移位器4和循环移位器5的输出值一并送入5输入异或运算器进行异或运算,运算结果再与寄存器A0的数据送入2输入异或运算器进行异或运算,运算结果存储在寄存器D4中;至此等待8进制计数器的下一个输出信号的到来;

当8进制计数器输出值为5时,4个2输入数据选择器停止工作,输出值不变;4输入数据选择器停止工作,输出值不变;4输出数据选择器选择寄存器B3作为输出寄存器,将寄存器D4的数据存入寄存器B3;此后,8进制计数器保持输出值为5,等待下一个同步时钟信号的到来;

8个轮数据生成模块在同步时钟信号的驱动下,实现了数据的流水线作业;

(4)双字顺序调整

第8个轮数据生成模块输出的数据进入双字顺序调整模块;双字顺序调整模块实现了数据的字节顺序调整;

128比特的数据X=(X0,X1,X2,X3),经过双字顺序调整器的处理后,得到128比特的输出数据为Y=(X3,X2,X1,X0);

(5)信息输出

输出信息存储器接收双字顺序调整器输出的数据并存储,等待外部设备读取。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津津航计算技术研究所,未经天津津航计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201811274070.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top