[发明专利]一种SM4加密算法的软件优化实现方法有效
申请号: | 201910428737.6 | 申请日: | 2019-05-22 |
公开(公告)号: | CN110197076B | 公开(公告)日: | 2021-03-26 |
发明(设计)人: | 张笑从;郜雅;郭华;王闯 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F21/60 | 分类号: | G06F21/60;G06F21/12 |
代理公司: | 重庆启恒腾元专利代理事务所(普通合伙) 50232 | 代理人: | 赵晨宇 |
地址: | 100010*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sm4 加密算法 软件 优化 实现 方法 | ||
本发明公开了一种SM4加密算法的软件优化实现方法,该方法包括:预处理步骤,包括明文编排和密钥编排,其中明文编排将256*128到128*256大小的比特粒度矩阵转置;密钥编排与明文编排类似;迭代计算步骤,将256组128比特的数据表示为32轮的加密密钥记为进行32次迭代运算:其中^表示异或运算;反序计算步骤,将输出的128比特的加密数据表示为反编排步骤,即编排的逆过程。本发明通过构造新的“选择函数”和搜索算法方法简化了SM4中S盒的逻辑表达式,配合X86架构丰富的寄存器资源和强大的SIMD拓展指令集,实现了SM4算法的快速软件加解密,提高了执行效率。
技术领域
本发明涉及计算机安全技术领域,特别是一种SM4软件优化实现方法。
背景技术
目前的各种数据加密体制可分为对称密码加密体制和公钥密码加密体制。常用的对称密码算法有DES、AES、SM4等。
SM4分组密码算法是我国自主设计的分组对称密码,明文长度、密钥长度和密文长度都是128比特,加密和解密密钥相同。加解密通过32次循环的非线性迭代轮函数来实现,其中包括非线性变换S盒及由循环移位异或构成的线性变换。加密时,首先把128比特密钥按照32比特一组分成4组,然后根据密钥扩展算法,生成32组32比特轮密钥;同时把输入的128比特数据按照32比特一组分成4组进行循环运算。
切片实现是密码算法的快速实现方法之一,以若干比特为基本单位进行并行加解密,其中单比特切片与宽泛意义上的切片仍有较大不同。
切片实现中单比特的切片是最早的切片方式,切片粒度为比特,算法中的非线性部分S盒视为逻辑电路实现。使用1比特切片时,将处理器视为并行的1比特SIMD处理器。线性移位操作只需要改变索引,不需要任何实际指令去实现,所以没有时间消耗。
发明内容
本发明用单比特粒度的切片方法实现SM4算法,在原有切片技术的基础上提出了如下改进的技术方案。
一种SM4加密算法的软件优化实现方法,以1比特为单位切片,在X86架构下一次并行加解/密256组,包括:
作为数据预处理的数据编排和密钥编排步骤,包括:
数据编排步骤,从常规256组128比特数据组织方式到单比特切片要求的256组的同一比特组织在一起的组织方式之间,存在比特矩阵转置变换TRANS(),特征在于,输入为256*128比特,输出为128*256比特。若将输入第i比特表示为二维数组X[256][128]的X[i/128][i mod 128]项,则输出为二位数组X[128][256]的X[i mod 128][i/128]项。
密钥编排步骤,对于第i轮加密的128比特密钥RKi,变换得到表示将RKi每比特重复256次得到的结果,即
迭代计算步骤,将256组128比特的数据表示为32轮的加密密钥记为进行32次迭代运算:
其中^表示异或运算;
反序计算步骤,令则输出的128比特的加密数据表示为
其中,合成置换T的输入和输出都是256组32比特,由非线性变换τ和线性变换L复合而成T(·)=L(τ(·))。
上述256组的同1比特存储在一起(ymm拓展寄存器或一块内存)。表示二维数组X[128][256]的X[0]项,其长度为256比特。
更进一步地,将256组32比特输入数据表示为:其中,均为8*256比特,则
更进一步地,合成变换T中的非线性变换τ中的四个S()为,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910428737.6/2.html,转载请声明来源钻瓜专利网。