一种国密SM4的快速软件实现方法技术

技术编号:21956904 阅读:62 留言:0更新日期:2019-08-24 20:27
本发明专利技术提供了一种国密SM4的快速软件实现方法,该方法包括:数据编排步骤,密钥编排步骤,迭代计算步骤,数据反编排步骤,反序计算步骤。本发明专利技术使用比特切片技术、SIMD技术和复合域技术,实现256组明文消息的并行加密,将SM4中的非线性变换在复合域中实现,并将非线性变换和线性变换压缩合并,使得SM4加密算法中的合成置换T的计算由原先的一次GF(2

A Fast Software Implementation Method for National Secret SM4

【技术实现步骤摘要】
一种国密SM4的快速软件实现方法
本专利技术涉及计算机安全
,特别是一种SM4加密方法
技术介绍
数据加密时密码系统的基本任务。按加密密钥与解密密钥的关系,目前的各种数据加密体制可以分为两大类:对称密码加密体制和公钥密码加密体制。常用的对称密码方法有DES、AES、IDEA、RC6等。SM4是一个分组密码算法,明文、密钥、密文都是128比特,加密和解密密钥相同。通过32次循环的非线性迭代轮函数来实现加密和解密。其中包括非线性变换s盒,以及由循环异或构成的线性变换。除了256字节的s盒之外,还定义了另外两组参数FK以及cK(具体数据参考密码局网站)。基本过程是首先把128比特密钥按照32比特一组分成4组,然后根据密钥扩展算法,生成32组32比特轮密钥;再把输入的128比特数据也按照32比特一组分成4组进行循环运算。
技术实现思路
本专利技术针对目前软件实现方法中的缺陷,提出了如下改进的软件优化方法。一种国密SM4的快速软件实现方法,包括:数据编排步骤,将256组128比特的数据表示为X[256][128],X[i]表示第i组数据,i=0,1,..,255,存在比特矩阵转置变换TRANS256(·):X[128][256]=TRANS(X[256][128]),特征在于,输入为256*128比特,输出为128*256比特,实现将256组数据的同一比特聚集在同一内存块中;密钥编排步骤,将第k轮加密密钥记为RKk,[32],k=0,1,...,31,存在变换TRANS32(·):TRKk,[32][256]=TRANS32(RKk,[32]),其特征在于,定义{·}256表示将元素重复256次并拼接在一起,则TRKk,[i]={RKk,[i]}256,实现将密钥RK的第i个比特复制256次存入TRK的第i项;迭代计算步骤,将经过数据编排后的数据记为X256表示二维数组X[128][256],指向X[128][256]的第i*32项,i=0,1,2,3,将经过密钥编排后的第k轮加密密钥记为进行32次迭代计算:其中,为异或运算;数据反编排步骤,存在相同的比特矩阵转置TRANS256(·):X[256][128]=TRANS256(X[1286][256]),其特征在于,将经过迭代计算后的数据从切片后的128组256比特数据组织方式恢复到正常256组128比特数据;反序计算步骤,令则输出的256组128比特的加密数据表示为其中,合成置换T的输入和输出都是32*256比特,由非线性变换τ和线性变换L复合而成T(·)=L(τ(·))。更进一步地,将256组128比特数据看做两个128组128比特数据,使用SIMD思想并行实现数据编排和数据反编排,利用7组掩码完成比特矩阵转置。7组掩码的16进制表示为:MASK0=5555555555555555555555555555555555555555555555555555555555555555MASK1=3333333333333333333333333333333333333333333333333333333333333333MASK2=0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FMASK3=00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FFMASK4=0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFFMASK5=00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFFMASK6=0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF每组掩码为128比特。更进一步地,将256组32比特输入数据表示为:其中,均为8*256比特,则更进一步地,合成变换T中的非线性变换τ中的函数s(·)为:s(x256)=I(x256*A1+C1)*A2+C2,其中,I(·)为复合域GF((24)2)上的求逆运算,x256为8*256比特的行向量,A1,C1,A2,C2的形式如下:C1={10001110}C2={11010011}更进一步地,选择h,g∈GF((24)2),h=(h1*x+h0)是g=(g1*x+g0)的逆元,其中,h1,h0,g1,g0∈GF(24)。那么有其中,h,g的大小是8*256比特,为异或运算,乘法和求逆为有限域GF(24)上的运算,从而将复合域GF((24)2)上的求逆转换为有限域GF(24)上的乘法和求逆。定义<<<表示循环左移操作,表示异或运算;已知令则令B256=τ(A256),则可得:其中,为异或加,从而可将线性变换优化掉。更进一步地,令a256,b256,c256∈GF(24),且c256=a256*b256则GF(24)上的乘法运算为:其中,为异或加法,与运算缺省表示。更进一步地,令a256,c256∈GF(24),且c256=(a256)-1则GF(24)上的求逆运算为:其中,+为或或运算,~为非运算,与运算缺省表示。本专利技术的技术效果为:结合SIMD思想,使用比特切片技术,利用AVX2指令并行处理256组数据,使用复合域分解技术,将SM4中合成置换T中的计算进行分解,使得SM4加密算法中的非线性变换计算由原先的一次GF(2^8)求逆、两次仿射变换简化为一次GF(2^4)求逆、两次仿射变换、三次GF(2^4)上的乘法运算,降低了计算复杂度,最大化并行处理数据,提高了执行效率。附图说明图1是本专利技术设计的SM4加密方法的系统架构图;图2是本专利技术中复合域求逆算法的图示。具体实施方式下面结合附图1和2进行具体说明图1示出了本专利技术设计的SM4加密方法,该方法包括:数据编排步骤,将256组128比特的数据表示为X[256][128],X[i]表示第i组数据,i=0,1,..,255,存在比特矩阵转置变换TRANS256(·):X[128][256]=TRANS(X[256][128]),特征在于,输入为256*128比特,输出为128*256比特,实现将256组数据的同一比特聚集在同一内存块中;密钥编排步骤,将第k轮加密密钥记为RKk,[32],k=0,1,...,31,存在变换TRANS32(·):TRKk,[32][256]=TRANS32(RKk,[32]),其特征在于,定义{·}256表示将元素重复256次并拼接在一起,则TRKk,[i]={RKk,[i]}256,实现将密钥RK的第i个比特复制256次存入TRK的第i项;迭代计算步骤,将经过数据编排后的数据记为X256表示二维数组X[128][256],指向X[128][256]的第i*32项,i=0,1,2,3,将经过密钥编排后的第k轮加密密钥记为进行32次迭代计算:其中,为异或运算;数据反编排步骤,存在相同的比特矩阵转置TRANS256(·):X[256][128]=TRANS256(X[1286][256])本文档来自技高网...

【技术保护点】
1.一种国密SM4的快速软件实现方法,其特征在于,包括:数据编排步骤:将256组128比特的数据表示为X[256][128],X[i]表示第i组数据,i=0,1,...,255,存在比特矩阵转置变换TRANS256(·):使得X[128][256]=TRANS(X[256][128]),输入为256*128比特,输出为128*256比特,实现将256组数据的同一比特聚集在同一内存块中;密钥编排步骤:将第k轮加密密钥记为RKk,[32],k=0,1,...,31,存在变换TRANS32(·):TRKk,[32][256]=TRANS32(RKk,[32]),定义{·}256表示将元素重复256次并拼接在一起,则TRKk,[i]={RKk,[i]}256,实现将密钥RK的第i个比特复制256次存入TRK的第i项;迭代计算步骤:将经过数据编排后的数据记为

【技术特征摘要】
1.一种国密SM4的快速软件实现方法,其特征在于,包括:数据编排步骤:将256组128比特的数据表示为X[256][128],X[i]表示第i组数据,i=0,1,...,255,存在比特矩阵转置变换TRANS256(·):使得X[128][256]=TRANS(X[256][128]),输入为256*128比特,输出为128*256比特,实现将256组数据的同一比特聚集在同一内存块中;密钥编排步骤:将第k轮加密密钥记为RKk,[32],k=0,1,...,31,存在变换TRANS32(·):TRKk,[32][256]=TRANS32(RKk,[32]),定义{·}256表示将元素重复256次并拼接在一起,则TRKk,[i]={RKk,[i]}256,实现将密钥RK的第i个比特复制256次存入TRK的第i项;迭代计算步骤:将经过数据编排后的数据记为X256表示二维数组X[128][256],指向X[128][256]的第i*32项,i=0,1,2,3,将经过密钥编排后的第k轮加密密钥记为进行32次迭代计算:其中,为异或运算;数据反编排步骤:存在比特矩阵转置TRANS256(·):X[256][128]=TRANS256(X[128][256]),将经过迭代计算后的数据从切片后的128组256比特数据组织方式恢复到正常256组128比特数据;反序计算步骤:令则输出的256组128比特的加密数据表示为其中,合成置换T的输入和输出都是32*256比特,由非线性变换τ和线性变换L复合而成T(·)=L(τ(·))。2.根据权利要求1所述的国密SM4的快速软件实现方法,其特征在于,将256组128比特数据看做两个128组128比特数据,实现数据编排和数据反编排,利用7组掩码完成比特矩阵转置;7组掩码的16进制表示为:MASK0=5555555555555555555555555555555555555555555555555555555555555555MASK1=3333333333333333333333333333333333333333333333333333333333333333MASK2=OFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFMASK3=OOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFOOFFMASK4=OOOOFFFFOOOOFFFFOOOOFFFFOOOOF...

【专利技术属性】
技术研发人员:王闯郭华张笑从郜雅高莹
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1