一种面向异构并行架构的高性能SM4比特切片优化方法技术

技术编号:34053047 阅读:23 留言:0更新日期:2022-07-06 16:18
本发明专利技术公开一种面向异构并行架构的高性能SM4比特切片优化方法,属于安全密码应用技术领域,本方法通过将SM4分组密码算法在1比特数据宽度下实现,可以在非向量指令集和向量指令集上实现多线程SM4,在向量指令集上可以支持更高的加密速度。持更高的加密速度。

A high performance SM4 bit slicing optimization method for heterogeneous parallel architecture

【技术实现步骤摘要】
一种面向异构并行架构的高性能SM4比特切片优化方法


[0001]本专利技术属于安全密码应用
,涉及一种面向异构并行架构的高性能SM4比特切片优化方法。

技术介绍

[0002]SM4是我国无线局域网标准WAPI中所采用的分组密码标准,随后被我国商用密码标准采用。作为我国商用密码的分组密码标准,预计SM4在国内的敏感但非机密的应用领域会逐渐取代3DES、AES等国外分组密码标准,用于通信加密、数据加密等应用场合。SM4是密钥长度和分组长度均为128比特的对称密码算法,输出128比特作为密文。
[0003]下面给出采用的运算符号及相应的含义:mod:模运算; :32位比特与运算; :32位比特或运算; :32位比特非运算;:32位比特异或运算;:mod 比特算术加运算;:32位比特循环左移比特运算;:向左赋值运算符;:包含元素的有限域。
[0004]密钥扩展算法如下:标准算法的SM4的字长为32比特,加密密钥长度为128比特,表示为4个字;轮密钥表示为32个字;明文输入看作4个字,密文输出表示为;SM4密钥扩展算法:1)设4个字;2)轮密钥生成算法为;其中,是一个合成置换函数,包含了线性变换和非线性变换,都是常量。
[0005]加密算法如下:1)32次迭代运算;
2)输出;其中,是一个合成置换函数,包含了线性变换和非线性变换。
[0006]由于SM4设计时的预计应用领域为低功耗芯片(即WAPI芯片),因此SM4针对减少硬件电路数量进行了优化,带来的后果是SM4的软件实现效率较低,难以充分利用主流32位/64位通用处理器的计算能力,其软件实现的效率通常大大低于同类对称加密算法AES的软件实现。
[0007]目前主流的CPU除了基本的通用指令集如SISD(Single Instruction, Single Data)之外,还包括SIMD (Single Instruction, Multiple Data)指令集等扩展指令集,例如目前主流的Intel和AMD的X86处理器支持AVX/AVX2指令集,ARM Cortex

A系列架构的移动处理器支持NEON指令集。Intel AVX

2支持256位的指令集,AVX2指令集包含16个256位的向量寄存器,Intel已经公布了AVX

512指令集,AVX

512指令集包含32个512位的向量寄存器,可以执行16路的32位字向量运算。NEON是ARM Cortex

A架构的SIMD指令集。NEON架构包含16个128位的SIMD寄存器,可以这些寄存器上执行4路的32位标量的向量计算。
[0008]目前主流的Intel/AMD X86处理器和ARM处理器,可以同时支持非向量指令集和向量指令集的计算。常规的并行算法往往是通过直接使用向量寄存器或者多核处理器,同时执行多个SM4算法,但由于标准的SM4算法的实现时要求的寄存器宽度比较宽(32比特),即使用宽度为256比特的向量寄存器实现,也最多只能同时并行8个SM4算法。GPU运算也有类似的问题,单线程而言,GPU的运算速度难以超过CPU,GPU的并行能力受到流处理器的限制,无法同时处理更多的线程。在对单线程SM4加密速度要求较小,但SM4加密线程较多的使用场景下,算法的并行度不够,加密总体效率低,迫切需要一种计算资源利用更加充分,多线程SM4运算速度更快的算法。

技术实现思路

[0009]为了实现更加高效的多线程SM4算法,本专利技术提出一种软件实现的SM4分组密码比特切片优化算法,并在SISD、SIMD指令集、GPU上的实现。本专利技术既可以在非向量指令集上实现多线程SM4,也可以在向量指令集上实现多线程SM4,其中向量指令集上可以支持更高的加密速度。
[0010]本专利技术提出一种面向异构并行架构的高性能SM4比特切片优化方法,其包括如下步骤:1)将原始标准算法SM4的32比特字长的变量,按顺序分割成32个1比特字长的变量;2)将原始标准算法SM4的线性部分运算:32比特字的异或运算和32比特字的循环左移运算,按照步骤1)定义的变量转化成在32个1比特字长之间进行异或和换位;3)将原始标准算法SM4的非线性部分运算S盒,分解成矩阵仿射变换和有限域求逆;4)对于有限域求逆,利用有限域塔式结构变换,将的有限域通过矩
阵仿射变换,同构映射到复合域上,变换成的求逆和乘法,实现在1比特字长下计算;5)对于的求逆,利用有限域塔式结构变换,将有限域通过矩阵仿射变换,同构映射到有限域,变换成的求逆和乘法,实现在1比特字长下计算;6)对于的求逆,等价于高位比特不变,低位等于高位异或低位,实现在1比特字长下计算;7)按照上述步骤1)至6),实现整个SM4算法仅依赖1比特字长、异或以及与运算完成整个计算,由此将X位寄存器看作X向量寄存器使用,实现X组SM4算法多线程并行计算。
[0011]本专利技术的方法是一种软件实现的SM4分组密码比特切片优化算法,通过算法线性分析,将原始标准SM4加密算法在32比特字上的线性运算,等价转化成1比特字长的线性运算,同时通过构造有限域同构映射,将原始标准SM4算法中的非线性运算,映射到1比特字长的非线性运算上。通过上述方法,将整个SM4算法从基于32比特字长的实现,转化成基于1比特字长的实现,进而在寄存器宽度更宽的非向量或向量指令集平台上,将寄存器按照1比特分割成不同的SM4线程(如32位寄存器可以分割成32个1比特,因此可以实现32线程的SM4算法),进而实现并行度更高的SM4多线程优化算法。在具体实现的时候,整个算法的计算不再需要更宽的寄存器,因此,在支持32位、64位或者更宽寄存器的计算平台上,一个寄存器可以同时保存8、16或者更多的线程的数据,对数据进行计算的时候,可以同时对8、16或者更多的线程的数据进行运算,从而实现更高线程的SM4算法。
[0012]本专利技术的核心是:提出了SM4分组密码算法在1比特数据宽度下的实现,并将其应用到向量指令集或者非向量指令集上,将寄存器按照1比特分割,从而能够得到比同等条件下标准SM4算法(字长32比特)高32倍并行度的多线程SM4算法。通过分析可以发现,本专利技术提供的SM4并行优化方法既可以在向量指令运算或者GPU上实现,在不支持SIMD指令的运算的CPU平台上,该算法同样可以实现。
[0013]与现有技术相比,本专利技术的有益效果是:1)常量时间算法,使用矩阵运算、位移、异或等运算代替了查找S盒的操作,算法可以在常量时间下实现,执行时间与算法内部状态无关,可以抵抗各种基于时间的测信道攻击,本专利技术的SM4算法更加安全。2)更高的并行线程,只需要使用寄存器的1比特就可以完成整个算法,在32位、64位寄存器环境下,可以直接并行执行32路、64路SM4加解密算法,在AVX512寄存器下,最多可以执行512路的SM4加密算法,进而提高总体的加密速率。在对单线程SM4加密速度要求较低、但加密线程数较多的运用场景下,可以大幅度的提升总本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向异构并行架构的高性能SM4比特切片优化方法,其特征在于,包括如下步骤:1)将原始标准算法SM4的32比特字长的变量,按顺序分割成32个1比特字长的变量;2)将原始标准算法SM4的线性部分运算:32比特字的异或运算和32比特字的循环左移运算,按照步骤1)定义的变量,转化成在32个1比特字长之间进行异或和换位;3)将原始标准算法SM4的非线性部分运算S盒,分解成矩阵仿射变换和有限域求逆;4)对于有限域求逆,利用有限域塔式结构变换,将的有限域通过矩阵仿射变换,同构映射到复合域上,变换成的求逆和乘法,实现在1比特字长下计算;5)对于的求逆,利用有限域塔式结构变换,将有限域通过矩阵仿射变换,同构映射到有限域,变换成的求逆和乘法,实现在1比特字长下计算;6)对于的求逆,等价于高位比特不变,低位等于高位异或低位,实现在1比特字长下计算;7)按照上述步骤1)至6),实现整个SM4算法仅依赖1比特字长、异或以及与运算完成整个计算,由此将X位寄存器看作X向量寄存器使用,实现X组SM4算法多线程并行计算。2.如权利要求1所述的方法,步骤2)中的异或运算步骤包括:1)对于原始标准算法SM4存在的两个32比特状态字,计算;2)将SM4中的变量分割成32比特和;3)对位分别异或计算:,输出结果,该结果为32比特状态字按照1比特分割的形式。3.如权利要求1所述的方法,步骤2)中的换位的步骤包括:...

【专利技术属性】
技术研发人员:关志陈钟何逸飞王珂孙磊齐向东刘勇孔坚
申请(专利权)人:奇安信科技集团股份有限公司
类型:发明
国别省市:

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

1