一种基于AES-NI指令集的SM4快速软件实现方法技术

技术编号:38464103 阅读:5 留言:0更新日期:2023-08-11 14:41
本发明专利技术公开了一种基于AES

【技术实现步骤摘要】
一种基于AES

NI指令集的SM4快速软件实现方法


[0001]本专利技术属于计算机软件工程和安全技术交叉领域,具体涉及一种基于AES

NI指令集的SM4快速软件实现方法,能够提升SM4算法的实现效率。

技术介绍

[0002]随着处理器性能的提升,目前大部分CPU架构都提供了基于硬件加速的扩展指令集。为了进一步提高软件实现速度,国内外许多学者开始尝试将SIMD指令集,如AVX2指令集应用到密码算法的软件快速实现中。在SIMD指令集中,AES

NI指令集是Intel推出的实现AES算法的方案,从硬件设计上大幅度提升了AES算法的实现效率。
[0003]SM4算法作为我国自主设计的第一个商用对称密码算法,在各个领域都有广泛的应用。由于针对AES算法指令集的推出,SM4的性能明显落后于AES的实现。AES算法和SM4算法的S盒所使用的不可约多项式都为GF(28)上的多项式,通过找到有限域之间的同构关系,将SM4的S盒映射到AES的S盒上,利用AES

NI指令集实现SM4算法,能够提高SM4算法的实现效率。

技术实现思路

[0004]本专利技术基于AVX2指令集以及AES

NI扩展指令集,提出了一种新的SM4快速软件实现方法。专利技术涉及一个部分:通过找到SM4算法的S盒与AES算法的S盒的有限域之间的同构关系,利用AES

NI指令集提高了SM4算法的实现效率。
[0005]总体来说,如图4所示,是采用以下步骤来完成的:包括以下几个步骤:
[0006]步骤1:同构映射矩阵求解:将SM4算法中S盒的有限域和AES算法中S盒的有限域映射至同一个复合域上,得到有限域之间的同构映射矩阵;
[0007]步骤2:S盒表达式求解:基于映射矩阵给出SM4算法中S盒的代数表达式;
[0008]步骤3:AES

NI指令集实现S盒:使用AES

NI指令集实现SM4算法中的S盒;
[0009]步骤4:实现SM4算法:对数据进行编排,实现8组数据的并行加解密;
[0010]步骤5:矩阵运算优化:使用AVX2指令集中的shuffle指令实现轮函数中的矩阵运算。
[0011]具体的,为了能够更加容易找到映射矩阵,本专利技术将两个有限域映射到同一个复合域上进行查找,整体过程如图1所示,接下来将详细介绍图1中的转化过程。将有限域映射到同一个复合域上可以不必直接求得映射矩阵,而是通过求图1所示的T1、T2映射矩阵及其对应的逆矩阵,进而求出所需要的同构映射矩阵,即
[0012][0013][0014]基于上述公式,为了进一步使用AES

NI指令,需要求出SM4算法中S盒的代数表达式与AES算法中S盒的代数表达式之间的代换关系。
[0015]其中,SM4算法中S盒的代数表达式为
[0016]S
SM4
(x)=A
SM4
·
I
SM4
(A
SM4
·
x+C
SM4
)+C
SM4
[0017]AES算法中S盒的代数表达式为
[0018]S
AES
(x)=A
AES
·
I
AES
(x)+C
AES
[0019]其中A
SM4
、A
AES
表示向量矩阵,C
SM4
和C
AES
表示列向量,I
SM4
(x)和I
AES
(x)表示对x进行求逆。为了能够找到不同S盒之间的同构关系,本专利技术对SM4算法和AES算法的代数表达式进行变换,给出了代数表达式之间的关系。
[0020]令T表示同构映射矩阵,x为GF
SM4
(28)上的元素,则
[0021]I
SM4
(x)=T
·
I
AES
(T
‑1·
x)
[0022]对AES算法中S盒的代数表达式进行变换得到
[0023][0024]对SM4算法中S盒的代数表达式进行变换得到
[0025][0026]使用映射矩阵进行代换可以得到
[0027]S
SM4
(x)=A
SM4
·
T
·
I
AES
(T
‑1·
A
SM4
·
x+T
‑1·
C
SM4
)+C
SM4
[0028]将AES算法中S盒的代数表达式代入可以得到
[0029][0030]化简可得
[0031]S
SM4
(x)=ATA
·
S
AES
(TA
·
x+TCP)+ATAC
[0032]其中,TA=T
‑1·
A
SM4
,TC=T
‑1·
C
SM4
,本专利技术给出了矩阵和向量的具体参数,即
[0033][0034][0035][0036]使用给出的S盒表达式对SM4算法的S盒进行求解,SM4算法的轮函数如图2所示。其中,aesenclast指令能够执行AES算法的最后一轮,由于AES算法的最后一轮不含列混淆操作,因此使用该指令能够简化实现SM4算法的过程。为了能够抵消指令中的行移位和轮密钥异或操作,在实现时进行了逆行移位的操作,并传入数据0x00..00(共有256个0比特)作为轮密钥。在实现中,通过SIMD指令集中的shuffle指令完成矩阵运算。由于该指令的索引只有低四比特有效,因此在实现中需要将字节数据分为高四比特和低四比特,同时与矩阵的前四列和后四列做矩阵运算,各自的输出进行异或就能够得到一次完整的仿射变换。
[0037]本专利技术的突出优势在于:
[0038]本专利技术实现了一种基于AES

NI指令集的SM4快速软件实现方法,通过找到AES算法的S盒与SM4算法的S盒的有限域之间的同构关系,充分利用AES

NI及其扩展指令提高了SM4算法的实现效率,在AMD R75800H平台上实现速度达到了3723Mbps,为其他对称密码算法的快速软件实现提供了借鉴意义。
附图说明
[0039]附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中:
[0040]图1显示了本专利技术中AES算法中S盒的有限域和SM4算法中S盒的有限域之间的同构映射关系;
[0041]图2显示了SM4算法轮函数的实现过程;
[0042]图3显示了8本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于AES

NI指令集的SM4快速软件实现方法,其特征在于,包括以下几个步骤:步骤1:同构映射矩阵求解:将SM4算法中S盒的有限域和AES算法中S盒的有限域映射至同一个复合域上,得到有限域之间的同构映射矩阵;步骤2:S盒表达式求解:基于映射矩阵给出SM4算法中S盒的代数表达式;步骤3:AES

NI指令集实现S盒:使用AES

NI指令集实现SM4算法中的S盒;步骤4:实现SM4算法:对数据进行编排,实现8组数据的并行加解密;步骤5:矩阵运算优化:使用AVX2指令集中的shuffle指令实现轮函数中的矩阵运算。2.根据权利要求1所述的基于AES

NI指令集的SM4快速软件实现方法,其特征在于,步骤1中,将SM4算法中S盒的有限域和AES算法中S盒的有限域映射到同一个复合域上,求出各自的映射矩阵T1和T2,之后通过T1和T2求出两个有限域之间的映射矩阵T。3.根据权利要求1所述的基于AES

NI指令集的SM4快速软件实现方法,其特征在于,步骤2中,基于同构映射矩阵,给出SM4算法中S盒新的代数表达式:S
SM4
(x)=ATA
·
S
AES
(TA
·
x+TC)+ATA...

【专利技术属性】
技术研发人员:郭华陈晨龚子睿霍嘉荣刘源灏张习勇刘建伟
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

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

1