[发明专利]一种流水线结构的SM4算法实现系统在审
申请号: | 201510293265.X | 申请日: | 2015-06-01 |
公开(公告)号: | CN105049194A | 公开(公告)日: | 2015-11-11 |
发明(设计)人: | 牛砚波;蒋安平 | 申请(专利权)人: | 北京时代民芯科技有限公司;北京微电子技术研究所 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/06 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 陈鹏 |
地址: | 100076 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 流水线 结构 sm4 算法 实现 系统 | ||
1.一种流水线结构的SM4算法实现系统,其特征在于包括控制模块、输入缓冲模块、内部四级流水轮函数模块、常数生成运算模块、存储模块、输出缓冲模块,其中
控制模块,监测并接收外界发送的使能信号,当接收到使能信号时获取并解析模式控制信号,
如果是加密运算模式控制信号,则控制输入缓冲模块接收外部输入的128位原始明文数据及32位随机掩码数据,控制内部四级流水轮函数模块从存储模块读取第i次加密轮函数运算所需的轮函数子密钥数据,其中,i=1,2,3…32且初值为1;
如果是解密运算模式控制信号,则控制输入缓冲模块接收外部输入的128位原始密文数据及32位随机掩码数据,控制内部四级流水轮函数模块从存储模块读取第j次解密轮函数运算所需的轮函数子密钥数据,其中,j=1,2,3…32且初值为1;
如果是密钥扩展运算模式控制信号,则控制输入缓冲模块接收外部输入的128位原始密钥及32位随机掩码数据,使能常数生成模块在外部基准系统时钟Clk控制下每四个周期将常数生成模块生成的32位常数子密钥数据送至内部四级流水轮函数模块;
输入缓冲模块,在控制模块的控制下,采用32位数据总线输入方式接收外部输入的128位原始密钥及32位随机掩码数据并送至内部四级流水轮函数模块;
在控制模块的控制下,采用32位数据总线输入方式接受外部输入128位原始明文数据以及32位随机掩码数据并送至内部四级流水轮函数模块;
在控制模块的控制下,采用32位数据总线输入方式接受外部输入128位原始密文数据以及32位随机掩码数据并送至内部四级流水轮函数模块;
内部四级流水轮函数模块,接收输入缓冲模块发送的128位原始密钥及32位随机掩码数据、常数生成模块发送的一组32位常数后,取128位原始密钥中的高96位依次分为三组32位数据,该三组32位数据与32位随机掩码数据、32位常数共五组数据进行异或运算得到32位的第一密钥扩展运算中间数据,将第一密钥扩展运算中间数据依次分为四组8位数据并分别送至四个8输入8输出非线性S盒得到32位的第二密钥扩展运算中间数据,然后将第二密钥扩展运算中间数据进行线性变换后与128位原始密钥中的低32位、32位随机掩码数据共三组数据进行异或运算,完成一次轮函数运算并得到一个32位的轮函数子密钥数据,所述的轮函数运算共进行32次,得到32个轮函数子密钥数据并送至存储模块存储;
接收输入缓冲模块发送的128位的原始明文数据及32位随机掩码数据,从存储模块选择并读取地址为i的轮函数子密钥数据,将128位原始明文数据中的高96位依次分为三组32位数据后,该三组32位数据与32位随机掩码数据、32位的轮函数子密钥数据共五组数据进行异或运算得到32位的第一加密运算中间数据,将第一加密运算中间数据分为四组8位数据并分别送至四个8输入8输出非线性S盒得到32位的第二加密运算中间数据,然后将该第二加密运算中间数据进行线性变换后与128位原始明文数据中的低32位、32位随机掩码数据共三组数据进行异或运算,得到32位的第三加密运算中间数据,将该第三加密运算中间数据作为高32位与原始明文数据的高96位合并生成128位的轮函数加密结果数据,作为第i+1次加密轮函数运算的128位的原始明文数据,完成第i次加密轮函数运算,i=i+1,重复上述加密轮函数运算直至i=32,将第32次轮函数运算得到的128位结果数据进行高低位变换后作为加密结果数据并送至输出缓冲模块;
接收输入缓冲模块发送的128位的原始密文数据及32位随机掩码数据,从存储模块选择并读取地址为33-j的轮函数子密钥数据,将128位原始明文数据中的高96位依次分为三组32位数据,该三组32位数据与32位随机掩码数据、32位轮函数子密钥数据共五组数据进行异或运算得到32位的第一解密运算中间数据,将第一解密运算中间数据分为四组8位数据并分别送至四个8输入8输出非线性S盒得到32位的第二解密运算中间数据,然后将第二解密运算中间数据进行线性变换后与128位原始密文数据中的低32位、32位随机掩码数据共三组数据进行异或运算,得到一个32位的第三解密运算中间数据,将第三解密运算中间数据作为高32位与原始密文数据的高96位合并生成128位的轮函数解密结果数据,作为第j+1次加密轮函数运算的128位的原始密文数据,完成第j次解密轮函数运算,j=j+1,重复上述解密轮函数运算直至j=32,将第32次轮函数运算得到的128位结果数据进行高低位变换后作为解密结果数据并送至输出缓冲模块;
存储模块,接收内部四级流水轮函数模块发送的32个轮函数子密钥数据,并以各个轮函数子密钥数据对应的轮函数运算的次数i为存储地址进行存储;
常数生成模块,以常数(0007E15)
输出缓冲模块,接收内部四级流水轮函数模块发送的加密结果数据、解密结果数据并输出。
2.根据权利要求1所述的一种流水线结构的SM4算法实现系统,其特征在于:所述的非线性变换S盒包括前端变换单元、域求逆运算单元与后端变换单元,其中
前端变换单元,接收8位数据后进行P·a
域求逆运算单元,接收第一中间数据temp1后进行GF(2
后端变换单元,接收第二中间数据temp2后进行R·temp2+C2运算,得到8位的非线性变换S盒结果数据,其中,a为8位数据,
C1=[1,0,1,0,1,1,1,1],C2=[1,1,0,1,0,0,1,1]。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京时代民芯科技有限公司;北京微电子技术研究所,未经北京时代民芯科技有限公司;北京微电子技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510293265.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:风力发电控制器
- 下一篇:一种0.3阶混合型与链式分数阶积分切换方法及电路