[发明专利]一种流水线结构的SM4算法实现系统在审
申请号: | 201510293265.X | 申请日: | 2015-06-01 |
公开(公告)号: | CN105049194A | 公开(公告)日: | 2015-11-11 |
发明(设计)人: | 牛砚波;蒋安平 | 申请(专利权)人: | 北京时代民芯科技有限公司;北京微电子技术研究所 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/06 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 陈鹏 |
地址: | 100076 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种流水线结构的SM4算法实现系统,包括输入缓冲模块、内部四级流水轮函数模块、输出缓冲模块、存储模块、常数生成运算模块、控制模块,首先接收使能信号,获取并解析模式控制信号,然后根据模式控制信号完成密钥扩展运算、加密运算、解密运算,最后得到加密结果数据、解密结果数据并输出。本发明实现系统中采用非线性S盒进行置换运算、非线性S盒采用PPRM结构的随机掩码加法掩码技术、采用单轮迭代内部四级流水结构,与现有技术相比,实现面积小、安全性高、抗零值攻击能力强,而且具有更快的运算速度、更小运算功耗,具有较好的应用前景。 | ||
搜索关键词: | 一种 流水线 结构 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)16 为模加运算初始值,以(1C,1C,1C,1C)16 为每次模加运算常数并行进行四组8位的模加运算得到四组模加运算结果数据,进而得到一组32位模加运算结果数据,根据外部基准系统时钟Clk每四个周期读取当前时刻的四组模加运算结果数据作为模加运算初始值,然后以(1C,1C,1C,1C)16 为每次模加运算常数继续并行进行四组8位的模加运算,同时将得到的32位模加运算结果数据作为32位常数,并送至内部四级流水轮函数模块;输出缓冲模块,接收内部四级流水轮函数模块发送的加密结果数据、解密结果数据并输出。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京时代民芯科技有限公司;北京微电子技术研究所,未经北京时代民芯科技有限公司;北京微电子技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510293265.X/,转载请声明来源钻瓜专利网。
- 上一篇:风力发电控制器
- 下一篇:一种0.3阶混合型与链式分数阶积分切换方法及电路