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

allin2023-03-29  65

一种面向异构并行架构的高性能sm4比特切片优化方法
技术领域
1.本发明属于安全密码应用技术领域,涉及一种面向异构并行架构的高性能sm4比特切片优化方法。


背景技术:

2.sm4是我国无线局域网标准wapi中所采用的分组密码标准,随后被我国商用密码标准采用。作为我国商用密码的分组密码标准,预计sm4在国内的敏感但非机密的应用领域会逐渐取代3des、aes等国外分组密码标准,用于通信加密、数据加密等应用场合。sm4是密钥长度和分组长度均为128比特的对称密码算法,输出128比特作为密文。
3.下面给出采用的运算符号及相应的含义:mod:模运算; :32位比特与运算; :32位比特或运算; :32位比特非运算;:32位比特异或运算;:mod 比特算术加运算;:32位比特循环左移比特运算;:向左赋值运算符;:包含元素的有限域。
4.密钥扩展算法如下:标准算法的sm4的字长为32比特,加密密钥长度为128比特,表示为4个字;轮密钥表示为32个字;明文输入看作4个字,密文输出表示为;sm4密钥扩展算法:1)设4个字;2)轮密钥生成算法为;其中,是一个合成置换函数,包含了线性变换和非线性变换,都是常量。
5.加密算法如下:1)32次迭代运算;
2)输出;其中,是一个合成置换函数,包含了线性变换和非线性变换。
6.由于sm4设计时的预计应用领域为低功耗芯片(即wapi芯片),因此sm4针对减少硬件电路数量进行了优化,带来的后果是sm4的软件实现效率较低,难以充分利用主流32位/64位通用处理器的计算能力,其软件实现的效率通常大大低于同类对称加密算法aes的软件实现。
7.目前主流的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位标量的向量计算。
8.目前主流的intel/amd x86处理器和arm处理器,可以同时支持非向量指令集和向量指令集的计算。常规的并行算法往往是通过直接使用向量寄存器或者多核处理器,同时执行多个sm4算法,但由于标准的sm4算法的实现时要求的寄存器宽度比较宽(32比特),即使用宽度为256比特的向量寄存器实现,也最多只能同时并行8个sm4算法。gpu运算也有类似的问题,单线程而言,gpu的运算速度难以超过cpu,gpu的并行能力受到流处理器的限制,无法同时处理更多的线程。在对单线程sm4加密速度要求较小,但sm4加密线程较多的使用场景下,算法的并行度不够,加密总体效率低,迫切需要一种计算资源利用更加充分,多线程sm4运算速度更快的算法。


技术实现要素:

9.为了实现更加高效的多线程sm4算法,本发明提出一种软件实现的sm4分组密码比特切片优化算法,并在sisd、simd指令集、gpu上的实现。本发明既可以在非向量指令集上实现多线程sm4,也可以在向量指令集上实现多线程sm4,其中向量指令集上可以支持更高的加密速度。
10.本发明提出一种面向异构并行架构的高性能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算法多线程并行计算。
11.本发明的方法是一种软件实现的sm4分组密码比特切片优化算法,通过算法线性分析,将原始标准sm4加密算法在32比特字上的线性运算,等价转化成1比特字长的线性运算,同时通过构造有限域同构映射,将原始标准sm4算法中的非线性运算,映射到1比特字长的非线性运算上。通过上述方法,将整个sm4算法从基于32比特字长的实现,转化成基于1比特字长的实现,进而在寄存器宽度更宽的非向量或向量指令集平台上,将寄存器按照1比特分割成不同的sm4线程(如32位寄存器可以分割成32个1比特,因此可以实现32线程的sm4算法),进而实现并行度更高的sm4多线程优化算法。在具体实现的时候,整个算法的计算不再需要更宽的寄存器,因此,在支持32位、64位或者更宽寄存器的计算平台上,一个寄存器可以同时保存8、16或者更多的线程的数据,对数据进行计算的时候,可以同时对8、16或者更多的线程的数据进行运算,从而实现更高线程的sm4算法。
12.本发明的核心是:提出了sm4分组密码算法在1比特数据宽度下的实现,并将其应用到向量指令集或者非向量指令集上,将寄存器按照1比特分割,从而能够得到比同等条件下标准sm4算法(字长32比特)高32倍并行度的多线程sm4算法。通过分析可以发现,本发明提供的sm4并行优化方法既可以在向量指令运算或者gpu上实现,在不支持simd指令的运算的cpu平台上,该算法同样可以实现。
13.与现有技术相比,本发明的有益效果是:1)常量时间算法,使用矩阵运算、位移、异或等运算代替了查找s盒的操作,算法可以在常量时间下实现,执行时间与算法内部状态无关,可以抵抗各种基于时间的测信道攻击,本发明的sm4算法更加安全。2)更高的并行线程,只需要使用寄存器的1比特就可以完成整个算法,在32位、64位寄存器环境下,可以直接并行执行32路、64路sm4加解密算法,在avx512寄存器下,最多可以执行512路的sm4加密算法,进而提高总体的加密速率。在对单线程sm4加密速度要求较低、但加密线程数较多的运用场景下,可以大幅度的提升总体效率。在gpu上计算时,假设有x个并行的gpu线程,如果每个线程使用64比特宽的寄存器,那么就可以同时处理64个线程的sm4算法,那么就能将sm4算法并行的线程数扩充64倍。
具体实施方式
14.为使本发明的上述特征和优点能更明显易懂,下文特举实施例,作详细说明如下。
15.本发明提供一种面向异构并行架构的高性能sm4比特切片优化方法,仅依赖1比特数据宽度,逻辑操作只有异或和与运算的情况下实现sm4运算,对比传统sm4算法的软件实
现,其算法可以将x位寄存器看作x向量寄存器使用,从而实现x组sm4算法的并行计算,这里x为寄存器的宽度,从而大幅度提高运算速度。
16.具体而言,本发明方法采用如下步骤:1)将sm4中的所有变量按照从低位到高位分割成1比特的数据,比如明文分组为128比特(分为4个32比特字进行处理),看作是128个1比特数据的数据;2)将sm4中的异或运算和循环位移看作是128个1比特数据之间的异或和换位;3)将sm4的唯一非线性运算s盒,按照原理分解成矩阵仿射变换和有限域求逆;4)将求逆通过塔式分解同构映射到复合域上的求逆,并进一步变换成上的求逆和乘法;5)将上述步骤4)分解过程中的同构映射、矩阵运算和特定有限域的乘法都看作矩阵乘法,实现1比特数据宽度下的计算;6)将上的求逆进一步塔式分解,同构映射到,并进一步变换成上的求逆和乘法;7)将上述步骤6)分解过程中的同构映射、矩阵运算和特定有限域的乘法都看作矩阵乘法,实现1比特数据宽度下的计算;8)上的求逆等价于高位比特不变,低位等于高位异或低位,从而在1比特数据宽度下计算得到;9)整合所有算法,整个sm4至此实现了仅依赖1比特数据宽度、异或、与运算就完成整个计算,可以将x位寄存器看作x向量寄存器使用,从而实现x组sm4算法的并行计算。
17.sm4多线程优化算法的变量表示:标准的sm4算法,秘钥为16字节,输入明文为16字节,各类中间状态变量为4字节长度的字。在本发明方法中,秘钥和明文按照字节的高低位被分割成128个1比特数据,中间状态的变量字按照高低位分割成32个1比特数数据。
18.现假设本发明所有变量均按照以下方法分割为1比特宽度:秘钥格式:秘钥128比特,其中q表示比特的编号;明文格式:明文128比特,q表示比特的编号;32位字:sm4的基本运算字是4个字节,按照高低32比特分割为:,其中data表示32位变量的名称,q表示比特的编号。
19.sm4多线程优化算法的线性运算:异或计算:本发明的sm4多线程优化方法将所有原标准sm4算法上的32比特字间的异或计算,都转化成1比特的长度进行;计算过程如下:1)假设标准算法sm4存在两个32比特状态字需要计算;2)将sm4中的变量分割成32比特的和;
3)对位分别异或计算:,得到的结果刚好也是32比特状态字按照1比特分割的形式。
20.线性变换函数:标准的sm4中的线性变换函数包括了异或计算以及位移计算,其中格式为:;上述式子中的表示四个循环左移的位数(注:与异或计算的含义不相同);是一个32比特的字,而与的格式类似,是两个结构相近的函数,区别是的依次为2,10,18,24,而的依次为13,23,0,0;按照sm4多线程优化算法的变量表示法将分割成32个1比特长的数据也必须输出相同格式的32个1比特数据,因此,输出可以表示为对应位置的32比特异或,即:;其中表示按照1比特分割,从高位到低位的编号,表示在中第比特数据(假设最后1比特的下一比特是的第1比特),的值与循环位移的位数以及输出的位置有关;%是取模运算,即计算除以32的余数。
21.计算过程如下:1)将32比特输入按照1比特为单位依序分割成;2)将32比特输出按照1比特为单位依序分割成;3)根据公式,给定i的值,找到计算时参与异或运算的上的比特数据,计算:;4)对于重复计算步骤3),得到的最终结果。
22.线性变换函数的原理与一致。
23.多线程优化算法的非线性s盒运算:s盒数学原理:s盒是标准算法的sm4中唯一的非线性部件,被用于非线性函数的计算,其s盒是一个8比特输入、8比特输出的替换表,如下所示:0xd6,0x90,0xe9,0xfe,0xcc,0xe1,0x3d,0xb7,0x16,0xb6,0x14,0xc2,0x28,
0xfb,0x2c,0x05, 0x2b,0x67,0x9a,0x76,0x2a,0xbe,0x04,0xc3,0xaa,0x44,0x13,0x26,0x49,0x86,0x06,0x99, 0x9c,0x42,0x50,0xf4,0x91,0xef,0x98,0x7a,0x33,0x54,0x0b,0x43,0xed,0xcf,0xac,0x62, 0xe4,0xb3,0x1c,0xa9,0xc9,0x08,0xe8,0x95,0x80,0xdf,0x94,0xfa,0x75,0x8f,0x3f,0xa6, 0x47,0x07,0xa7,0xfc,0xf3,0x73,0x17,0xba,0x83,0x59,0x3c,0x19,0xe6,0x85,0x4f,0xa8, 0x68,0x6b,0x81,0xb2,0x71,0x64,0xda,0x8b,0xf8,0xeb,0x0f,0x4b,0x70,0x56,0x9d,0x35, 0x1e,0x24,0x0e,0x5e,0x63,0x58,0xd1,0xa2,0x25,0x22,0x7c,0x3b,0x01,0x21,0x78,0x87, 0xd4,0x00,0x46,0x57,0x9f,0xd3,0x27,0x52,0x4c,0x36,0x02,0xe7,0xa0,0xc4,0xc8,0x9e, 0xea,0xbf,0x8a,0xd2,0x40,0xc7,0x38,0xb5,0xa3,0xf7,0xf2,0xce,0xf9,0x61,0x15,0xa1, 0xe0,0xae,0x5d,0xa4,0x9b,0x34,0x1a,0x55,0xad,0x93,0x32,0x30,0xf5,0x8c,0xb1,0xe3, 0x1d,0xf6,0xe2,0x2e,0x82,0x66,0xca,0x60,0xc0,0x29,0x23,0xab,0x0d,0x53,0x4e,0x6f, 0xd5,0xdb,0x37,0x45,0xde,0xfd,0x8e,0x2f,0x03,0xff,0x6a,0x72,0x6d,0x6c,0x5b,0x51, 0x8d,0x1b,0xaf,0x92,0xbb,0xdd,0xbc,0x7f,0x11,0xd9,0x5c,0x41,0x1f,0x10,0x5a,0xd8, 0x0a,0xc1,0x31,0x88,0xa5,0xcd,0x7b,0xbd,0x2d,0x74,0xd0,0x12,0xb8,0xe5,0xb4,0xb0, 0x89,0x69,0x97,0x4a,0x0c,0x96,0x77,0x7e,0x65,0xb9,0xf1,0x09,0xc5,0x6e,0xc6,0x84, 0x18,0xf0,0x7d,0xec,0x3a,0xdc,0x4d,0x20,0x79,0xee,0x5f,0x3e,0xd7,0xcb,0x39,0x48。
24.标准算法中的s盒替换,实际上是7次多项式构成的有限域上的元素变换,可以用数学的方法描述如下:设是二进制8*8矩阵:{1,1,1,0,0,1,0,1},{1,1,1,1,0,0,1,0},{0,1,1,1,1,0,0,1},{1,0,1,1,1,1,0,0},{0,1,0,1,1,1,1,0},{0,0,1,0,1,1,1,1},{1,0,0,1,0,1,1,1},{1,1,0,0,1,0,1,1},是长度为8的二进制向量:{1, 1, 0, 0, 1, 0, 1, 1}。
25.设是一个8比特的二进制数,对应多项式。本原多项式,表示 在多项式模数域上的逆。若,则定义的逆元。
26.逆运算关系如下:1. ;2. ;
3.
ꢀꢀ

27.假设是s盒的8比特输入,是s盒的输出,s盒可以表达成:。
28.s盒运算包括8*8矩阵运算、8比特向量异或运算和8比特有限域上的逆运算,其中:矩阵乘法和向量异或属于二进制上的线性运算,根据变量之间的关系,很容易的将其分解成4比特字长下的计算,可以将矩阵先分成8个列向量,再将8比特向量分割成高低4比特,从而在4比特的寄存器上实现矩阵向量运算;有限域上的逆运算是非线性运算,则不能直接在1比特的寄存器上实现,需要进行有限域的同构映射。
29.运算到复合域同构映射:8次本原多项式上构成的多项式模数域,可以等价同构映射到复合域上。
30.复合域定义:上的元素,都可以表示成多项式,可以看作2次多项式模数域上的一个元素,其中模数多项式,是定义在4次既约多项式上的多项式模数域。
31.本发明指的是在上的模数域,其多项式的系数定义在的模数域上。具体的,sm4算法的是定义在模数上,如果存在到的同构映射,那么在上的求逆运算就可以等价为上的求逆运算。
32.具体同构运算方法和求逆运算如下:1)通过矩阵乘法,构造到的同构映射,比如当、的时候(作为一种实施例),存在到的同构映射。同构映射的矩阵为:{0,1,0,1,1,1,1,0,},{0,1,1,1,1,1,0,0,},{1,1,0,1,0,0,0,0,},{0,1,0,1,0,0,0,0,},{1,1,0,1,1,1,0,0,},{0,1,1,0,1,1,0,0,},{1,1,1,1,0,1,1,0,},{0,1,0,1,1,1,1,1,},同构意义下,的求逆运算,变成了的求逆;
2)步骤1)给出的下求逆运算,可以使用以下公式推导得出:设是中元素,如果是该元素的逆,那么必定有如下公式:,表示中4个元素;展开后得到:;。
33.经过同构映射,在的求逆运算,变成了在的求逆运算,同时,根据本发明所选择的,在上的求逆运算,进一步变成了元素在上的求逆和上的乘法运算。
34.运算到复合域同构映射:经过第一次的同构映射,上的求逆问题降低成了上的求逆运算和乘法运算。在此问题上,还可以进一步的进行同构映射,可以将上的计算问题,转化到上。
35.1)通过矩阵乘法,构造到同构映射,作为一种实施例,系数定义在构成的有限域上,构成多项式模数有限域,和所构成的有限域存在同构映射;2)上求逆运算,由以下公式推导:设是中元素,如果是该元素的逆,那么必定有如下公式:;展开后得到:;;可以看出,到同构映射,将上的求逆运算,变成了上的求逆运算和乘法运算;
3)给定的乘法可以转化成矩阵向量乘法运算,并在1比特字长内实现,具体做法是,将相乘的两个4比特元素看成两个向量{x3,x2,x1,x0},其中一个向量改造成矩阵的形式,与另一个向量相乘,假设待改造的向量为{x3,x2,x1,x0},则改造的仿射的矩阵对应为:4)乘法同样可以使用矩阵运算,具体做法是,将相乘的两个2比特元素看成两个向量{x1,x0},其中一个向量改造成矩阵的形式,与另一个向量相乘,假设待改造的向量为{x1,x0},则改造的仿射的矩阵对应为:而上的求逆可以使用以下查表方式,在1比特字长下实现方法如下:比如作为一种实施例,定义在模数多项式上的有限域,其元素的长度只有2比特,其逆元关系如下:对于上任意元素,总是有,可以用此公式实现上的求逆运算。该公式可以在1比特字长内实现,即高位比特不变,低位等于高位异或低位。
36.因此,综上所述,上的求逆运算可以转化成上的求逆运算和乘法运算,而上的求逆运算可以转化成上的求逆运算,上的乘法可以改造成矩阵向量乘法,进而可以在1比特字长下实现。通过改造,标准的sm4的非线性部分和线性部分都在1比特字长中完成。
37.s盒的查询通常是分组密码中最耗时的操作之一,通过x64指令下,比特切片算法在s盒查询时的计算实际,可以明显的看到比特切片算法在多线程计算的时候有着显著的
优势,计算速度接近4倍,对比见表1,完整的sm4算法,切片算法的优势见表2。
38.表1:sm4 的 s 盒的切片算法与查表效率比较表1中的查询速度是指最后一列平均每秒查询s盒的次数,执行次数是测试程序运行的次数,切片方法中运行一次程序可以查询64次s盒,是通常方法的64倍,但所需时间只增加了不到20倍(21.288s/1.287s=16.54倍),显然比特切片s盒算法相较于常规s盒查表算法查询速度更快。
39.表2:sm4 切片算法与标准实现的速度比较算法执行分组数总时间数据量平均每秒查询标准sm4实现128000002.451s1638400000bit668mb/s切片sm4实现128000000.991s1638400000bit1,655mb/s由表2可知,切片sm4实现算法相较于标准sm4实现算法,耗时更短,查询速度更快。
40.通过本发明方法,标准的算法sm4算法,被改造成一个,输入、输出、中间状态、计算过程均可以在1比特寄存器内实现的sm4算法,对于该sm4算法中的每一个变量,均只占1个比特的长度。在32位的计算平台上,每个变量在32位寄存器内都可以保存32组不同的值,在计算的过程中,每个运算在32位寄存器内可以同时计算32组,从而实现了在32位平台上的32线程sm4并行计算。在更宽的计算平台上(如64位),则支持实现更多线程的sm4同步计算。
41.在simd指令集和gpu上实现:给定两个向量,其中为字,下面给出本发明向量指令的计算方式:;。
42.实施例1:arm/neon指令集实现:arm处理器是目前手机等智能移动设备采用的主流处理器,其中部署最广泛的cortex-a系列arm处理器架构除了包含arm通用指令集(armv7指令集),还包含neon simd指令集。neon指令集包含16个128位的simd寄存器,可以做4路32位字的并行计算,因此可以将本实施例的sm4进一步扩展为128组并行计算。
43.下面给出用到的neon指令,这些指令以伪函数(intrinsics)的方式给出,其中int32x4_t为128位的neon向量寄存器:c
ꢀꢀ
a b : 使用指令int32x4_t c = veorq_s32 (int32x4_t a, int32x4_t b);c
ꢀꢀ
a k : 使用指令int32x4_t c = vandq_s32 (int32x4_t a, int32x4_t k)。
44.实施例2:x86/avx2指令集实现:非向量代码可以使用高级语言编写并通过编译实现,向量算法使用avx2指令实现,可以做8路32位字的并行计算,因此可以将本实施例的sm4进一步扩展为256组并行计算;c
ꢀꢀ
a b : 使用指令__m256i c =
ꢀꢀ
_mm256_xor_si256 (__m256i a, __m256i b);c
ꢀꢀ
a & k : 使用指令__m256i c =
ꢀꢀ
_mm256_and_si256 (__m256i a, __m256i b)。
45.实施例3:基于opencl的gpu实现:opencl的编写与c语言是类似的,由于切片算法每个变量都是1比特,因此输入的明文是128比特,每个状态字是32比特,计算s盒的时候输入和输出都是8比特。由于使用了64比特宽度的寄存器,因此单个gpu线程相当于并行计算64个sm4线程。
46.opencl的s盒查询代码结构如下:unsigned long long tp[32];...for (i = 0; i 《 32; i++){...sbox_sms4_bs(&tp[31], &tp[30], &tp[29], &tp[28], &tp[27], &tp[26], &tp[25], &tp[24]);...上述代码切片算法的代码结构,原始标准运算是对一个32比特的tp字的高位8比特查询s盒。在切片算法下,32比特被表示为数组,输入的8比特必须按照1比特的形式分别输入,由于寄存器是64位宽,因此sbox_sms4_bs实际上同时计算了64组的s盒。从而将sm4线程扩充了64倍。
[0047]
需要注意的是,上述实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解,在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

技术特征:
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)中的换位的步骤包括:1)将32比特字按照1比特为单位依序分割成;2)将32比特字的输出按照1比特为单位依序分割成;3)根据线性变换公式,给定的值,找到计算时参与异或运算的上的比特数据,计算如下:;其中表示在中第比特数据;
4)对于,重复计算步骤3),得到全部的最终结果。4.如权利要求1所述的方法,步骤4)中的处理步骤包括:1)通过矩阵乘法,构造到的同构映射;2)对步骤1)得到的进行求逆运算,公式为:;,是模数多项式模数;将上述公式展开后得到:;;根据步骤2)中的公式,将在上的求逆运算进一步变成元素在上的求逆和上的乘法运算。5. 如权利要求1所述的方法,步骤4)中的乘法通过转化成矩阵向量乘法运算,方法为将相乘的两个 4 比特元素看成两个向量,其中一个向量改造成矩阵的形式,与另一个向量相乘,实现在1比特字长下计算。6.如权利要求1所述的方法,步骤5)中的处理步骤包括:1)通过矩阵乘法,构造到同构映射;2)对步骤1)得到的进行求逆运算,公式为:;其中,是中的元素,是该元素的逆,,为多项式模数;将上述公式展开后得到:;;根据步骤2)中的公式,将上的求逆运算变成了上的求逆运算和乘法运算。7.如权利要求1所述的方法,步骤5)中的的乘法通过矩阵运算实现,步骤包括:将相乘的两个2比特元素看成两个向量,将其中一个向量改造成矩阵的形式,并与另一个向量相乘;再在有限域上通过查表的方式求逆运算。

技术总结
本发明公开一种面向异构并行架构的高性能SM4比特切片优化方法,属于安全密码应用技术领域,本方法通过将SM4分组密码算法在1比特数据宽度下实现,可以在非向量指令集和向量指令集上实现多线程SM4,在向量指令集上可以支持更高的加密速度。持更高的加密速度。


技术研发人员:关志 陈钟 何逸飞 王珂 孙磊 齐向东 刘勇 孔坚
受保护的技术使用者:奇安信科技集团股份有限公司
技术研发日:2022.05.19
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-8338.html

最新回复(0)