[发明专利]一种实现SM4分组对称密码算法的系统无效
申请号: | 201210441335.8 | 申请日: | 2012-11-07 |
公开(公告)号: | CN103812641A | 公开(公告)日: | 2014-05-21 |
发明(设计)人: | 黑勇;王晨光;乔树山;任高峰 | 申请(专利权)人: | 中国科学院微电子研究所 |
主分类号: | H04L9/06 | 分类号: | H04L9/06 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 任岩 |
地址: | 100083 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 sm4 分组 对称 密码 算法 系统 | ||
1.一种实现SM4分组对称密码算法的系统,包括:
输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;
密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;
数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;
数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;
运算逻辑模块,用于进行加解密运算和密钥扩展运算;以及
控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。
2.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述输入密钥处理及结果存储器包括运算部件以及存储单元,当接收到密钥时,该运算部件将该密钥与固定常数进行运算,得到直接参与密钥扩展算法进行迭代运算的数据,并将该数据存储于该存储单元中。
3.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述密钥缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储密钥扩展迭代运算得到的中间结果。
4.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述数据缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储数据加解密迭代运算得到的中间结果。
5.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述数据处理选择模块为一个数据选择器,用于选择输入到运算逻辑模块的数据是加解密数据还是密钥扩展数据,如果控制模块输出的是加解密控制信号,则输入到运算逻辑模块的数据是加解密数据;如果控制模块输出的是密钥扩展信号,则输入到运算逻辑模块的数据是密钥扩展数据。
6.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述运算逻辑模块包括轮密钥运算所需常数生成部件、第一运算部件、S盒部件、循环移位部件以及第二运算部件,其中:
所述轮密钥运算所需常数生成部件,用于根据控制逻辑输出的控制信号,按照相应的数学原理生成轮密钥生成时所需的常数;
所述第一运算部件,用于完成加解密数据与轮密钥进行的异或运算,或者密钥数据与生成轮密钥所需常数的异或运算;
所述S盒部件,用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;
所述循环移位部件,用于完成循环移位与异或运算;
所述循环移位部件,用于先对输入数据进行循环左移2、10、18、24、13、23位,循环左移2、10、18、24位所得的数据输入数据相异或得到输出结果A,循环左移13、23位所得到的数据与输入数据相异或得到输出结果B;
所述第二运算部件,用于对所述循环移位部件的输出结果A与数据缓存器中相应的数据相异或得到A’,对所述循环移位部件的输出结果B与密钥缓存器中相应的数据相异或得到B’。
7.根据权利要求6所述的实现SM4分组对称密码算法的系统,其特征在于,所述第二运算部件的输出A’与B’在控制模块输出的控制信号下分别存入数据缓存器或密钥缓存器。
8.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述控制模块根据输入的工作模式信号产生相应的加密运算控制信号和解密运算控制信号,实现加密运算过程和解密运算过程。
9.根据权利要求8所述的实现SM4分组对称密码算法的系统,其特征在于,所述加密运算过程为:
加密运算开始时,输入的128位明文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器模块;密钥缓存器仅有128位,采取不存储所有轮密钥,而是每轮加密前先计算轮密钥的方式工作;控制模块控制系统交替进行轮密钥的生成与数据块的加密,一组数据的加密通过64轮迭代完成。
10.根据权利要求9所述的实现SM4分组对称密码算法的系统,其特征在于,所述解密运算过程为:
SM4为对合运算,加密过程与解密过程使用相同的密钥;假设加密过程轮密钥的使用顺序为rk0~rk31,解密时轮密钥的使用顺序为rk31~rk0;解密运算开始时,128位密文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器;先由输入密钥通过32轮迭代计算出{rk31,rk30,rk29,rk28},在此过程中只进行密钥扩展运算,不进行数据解密运算;之后,可由{rk31,rk30,rk29,rk28}反推得到rk27~rk0,在此过程中轮密钥的生成与数据的解密交替进行;整个解密过程通过96轮迭代完成。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院微电子研究所,未经中国科学院微电子研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210441335.8/1.html,转载请声明来源钻瓜专利网。