CN115499152A - 一种基于寄存器优化的sm4快速软件实现方法 - Google Patents

一种基于寄存器优化的sm4快速软件实现方法 Download PDF

Info

Publication number
CN115499152A
CN115499152A CN202210893613.7A CN202210893613A CN115499152A CN 115499152 A CN115499152 A CN 115499152A CN 202210893613 A CN202210893613 A CN 202210893613A CN 115499152 A CN115499152 A CN 115499152A
Authority
CN
China
Prior art keywords
data
register
key
round
plaintext
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210893613.7A
Other languages
English (en)
Inventor
郭华
陈晨
刘源灏
龚子睿
张习勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN202210893613.7A priority Critical patent/CN115499152A/zh
Publication of CN115499152A publication Critical patent/CN115499152A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于寄存器优化的SM4快速软件实现方法,该方法包括:基于比特切片方法和AVX2(Advanced Vector Extension 2)指令集,对64组明文数据并行加解密,在明文数据编排中,引入了数据打包的过程,并在寄存器内部进行数据转置与轮函数操作;通过对密钥编排进行分离,将密钥编排划分为扩展和复制操作,在密钥生成函数中对扩展操作进行预处理,在算法执行过程中进行复制操作,减少了密钥编排所需的时间。

Description

一种基于寄存器优化的SM4快速软件实现方法
技术领域
本发明涉及一种基于寄存器优化的SM4快速软件实现方法,能够极大地提升SM4算法的实现效率,属于计算机软件工程和安全技术交叉领域。
背景技术
SM4算法即原SMS4算法,是国内官方公布的第一个商用密码算法,作为我国自主设计的商用分组对称密码算法,于2012年3月被国家密码管理局批准为行业标准,广泛用于WAPI无线网络标准以保护数据的机密性。2021年6月,SM4算法被纳入ISO/IEC国际标准正式发布,标志着我国商用密码算法国际标准体系进一步完善。
随着SM4算法在国防、军事以及工商业等领域的逐步应用,如今不仅要保证算法的安全性,算法的实现效率在实际应用中也越来越重要。在软件快速实现方法中,目前研究中常用的方法是比特切片方法,并结合基于硬件加速的扩展指令集进行实现。而在使用比特切片方法进行算法实现的过程中,由于并行规模过大,而指令寄存器的数量不足,因此在加解密过程中需要内存与寄存器之间进行频繁的数据交互操作,导致了算法运行效率的降低。
发明内容
本发明基于比特切片方法和AVX2指令,提出了一种新的SM4软件快速实现方法。发明涉及两个部分:1.通过改变数据的存储方式,减少了数据编排以及线性变换过程中内存与寄存器之间的存取操作,2.通过对密钥编排进行分离操作并预处理,简化了密钥编排的过程。
本发明采用以下方案进行,一种基于寄存器优化的SM4快速软件实现方法,步骤1:数据打包:令Xi(i∈[0,35])为32比特数据,SM4的任意一组明文数据可以表示为M=(X0,X1,X2,X3),将64组明文的Xi排列在连续的内存位置中;
步骤2:数据转置:将内存中的64组明文的Xi放入寄存器中,对Xi进行数据转置操作,之后将数据放入内存中,使得每组明文的
Figure BDA0003768536100000021
(j∈[0,7],i∈[0,3],
Figure BDA0003768536100000022
表示Xi中的第j比特)数据排列在连续的内存位置中;
步骤3:密钥编排:将每轮轮密钥复制为64组,编排为与明文相同的存储形式,使得每组轮密钥的rkj,rkj+8,rkj+16,rkj+24(j∈[0,7],rkj表示轮密钥的第j比特)数据排列在连续的内存位置中。
步骤4:在寄存器中进行轮函数操作,SM4算法的轮函数为
Figure BDA0003768536100000023
Figure BDA0003768536100000024
其中,rki为当前迭代的轮密钥,T为一个
Figure BDA0003768536100000025
的可逆变换,使用AVX2指令集中的字节重排指令完成T变换中线性变换的移位运算。
步骤5:数据逆转置:将64组密文的Xi(i∈[32,35])进行逆转置,将使得每组明文的Xi数据排列在连续内存位置中。
步骤6:数据打包的逆过程:调整密文数据的存储形式,将64组密文中每组密文的(X35,X34,X33,X32)数据存储在连续的内存位置中。
步骤1中在数据编排过程中引入了数据打包的操作。SM4的一组明文数据可以表示为M=(X0,X1,X2,X3),其中Xi(0≤i≤3)为32比特,数据打包操作通过AVX2指令集中的unpack指令完成,主要能够将64组明文的每个Xi放在连续内存位置中,如图1所示(
Figure BDA0003768536100000031
表示第j组数据的X0)。
步骤2中,对打包后的数据通过AVX2指令进行转置操作,而数据转置过程只在寄存器内部进行,即每次转置操作的主要过程都只在YMM寄存器中。通过数据转置操作,能够将每组明文的
Figure BDA0003768536100000032
(j∈[0,7],i∈[0,3])比特放在同一个寄存器中。
步骤3中为了保证算法的正确性,对密钥进行了编排。在加密之前提前对密钥进行预处理操作,在预处理操作过程中,针对每一轮轮密钥,对其每一位进行判断:若当前位为1,则存储8位数据0xff;若当前位为0,则存储8位数据0x0。并将处理后的密钥数据预存储起来,之后将轮密钥复制为64组,进行加密运算。
步骤4中在寄存器内部进行轮函数操作。在线性移位变换过程中,由于AVX2指令集不存在循环移位指令,所以循环左移过程需要两个移位指令和一个异或指令完成移位;而由于本发明中循环移位的位数都以字节为单位,因此本发明中一次循环移位过程能够通过AVX2指令集中的一个数据重排指令完成。
在原始比特切片方法中,能够实现256组数据并行加解密。而在算法实现过程中,数据编排只包含数据转置的过程,实现一次数据编排需要消耗3136条逻辑指令和896次数据读取操作。而根据Intel的官方文档给出的指令的迟延和吞吐量,逻辑指令的迟延为1个时钟周期,一次数据读取指令需要多个时钟周期。内存与寄存器频繁的数据交互操作,消耗了大量时间。因此,为了提高数据编排的实现效率,本发明在数据编排过程中引入了数据打包的操作,之后再进行数据转置,而数据转置过程只在寄存器内部进行,减少了与内存之间的交互操作。经过数据编排之后,本发明方法的并行组数为64分组。而在加密256组同等数量的明文操作中,本发明中的数据编排需要消耗1728条逻辑指令和256次数据读取操作,充分降低了寄存器与内存之间的读取操作,经测试,数据编排所需要的指令条数减少了44%,需要读取的内存次数减少了71%,充分降低了寄存器与内存之间的读取操作。总耗时减少了66%。
SM4的任意一组明文数据可以表示为M=(X0,X1,X2,X3),在数据编排中,通过数据打包操作,将64组明文的Xi排列在连续的内存位置中。在数据打包过程中,分别使用unpack指令对低64位数据进行操作和高64位数据进行操作。对打包后的数据进行数据转置,将每组明文中的Xi中的
Figure BDA0003768536100000041
(j∈[0,7],i∈[0,3],
Figure BDA0003768536100000042
表示Xi中的第j比特)放在同一个寄存器中。在数据转置中,分别将64组明文数据中的X0,X1,X2,X3放在8个YMM寄存器中进行数据转置。在后续的轮函数操作中,使用AVX2指令集并行操作64组数据,其算法中的4个S盒能够并行运算。
在轮函数的线性变换中(包含与X0异或的过程),同等条件下加密256分组明文,在原始比特切片方法中,需要消耗的逻辑指令条数为5120条,需要的内存读取次数为10240次;本发明的线性变换中需要消耗的逻辑指令条数为8704条,需要的内存读取次数为2048次。虽然相比于原始的线性变换,本文所需消耗的指令条数略有增加,但内存的读取次数大大减少。相比于原始的线性变换方法,本文中的线性变换总耗时减少了70%,效率有很大的提升。
为了保证算法的正确性,在对明文进行数据编排之后,需要对密钥进行数据编排。在本发明中对此进行了优化,在加密之前提前对密钥进行扩展操作,并将扩展后的密文数据预存储起来,以此减少算法过程中密钥编排消耗的时间。
在扩展操作过程中,针对每一轮轮密钥,对其每一位进行判断:若当前位为1,则存储8位数据0xff;若当前位为0,则存储8位数据0x0。每一轮轮密钥的数据存储形式为:rk[k]=((uint32_t)temp[k]<<24)|((uint32_t)temp[k+8]<<16)|((uint32_t)temp[k+16]<<8)|((uint32_t)temp[k+24])(k∈[0,8],rk表示每轮需要存储的轮密钥,temp[k]表示第k个8位数据)。
之后,将编排后的轮密钥预存储起来,32轮轮密钥需要占用1KB的数据存储空间,在可接受范围内。
本发明的突出优势在于:
本发明实现了一种基于寄存器优化的SM4快速软件实现方法,相比其他公开文献中的比特切片方法,本方法考虑了算法实现中内存的读取过程,并减少了内存与寄存器之间频繁的存取操作。使用本发明中的方法加密1个字节仅需4.5个时钟周期,是目前SM4软件实现方法中加解密速度最快的,在AMD Ryzen 75800H平台上的加密效率可达11070Mbps,且本方法适用于其他平台的实现,对于其它对称密码算法也有一定的参考价值。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实例一起用于解释本发明,并不构成对本发明的限制。
在附图中:
图1为本发明的整体流程图;
图2显示了本发明中数据打包后64组明文中的X0在内存中的存储分布形式;
图3显示了本发明中数据转置后数据在寄存器中的分布存储变化;
图4显示了本发明中密钥扩展后轮密钥在内存中的分布;
图5显示了本发明中算法总体实现的过程以及所使用的优化技术;
图6显示了本发明中的数据转置算法;
图7显示了本发明中的线性变换过程。
具体实施方式
下面介绍方法的具体实施方式,此处所描述内容仅用于说明和解释本发明,并不用于限定本发明。
本发明基于比特切片方法和AVX2指令集,提出了一种新的SM4软件快速实现方法。发明涉及两个部分:1.通过改变数据的存储方式,减少了数据编排以及线性变换过程中内存与寄存器之间的存取操作,2.通过对密钥编排进行分离操作并预处理,简化了密钥编排的过程。
本发明中的数据编排包含两个步骤:数据打包和数据转置。在数据打包操作中,通过AVX2指令集中unpack指令对YMM寄存器中的数据进行操作,将64组明文中每个分组的X0,X1,X2,X3放在相邻的存储位置中。经过数据打包后的64组X0,X1,X2,X3的数据存储形式如图2所示。之后,为了能够对64组数据并行加密,分别对64组X0,X1,X2,X3进行数据转置操作,使用的数据转置算法如图6所示。其中,src[r]与src[r+k](0≤r<7,0<r+k≤7)代指第r个和第r+k个YMM寄存器,算法中的逻辑操作与移位操作通过AVX2指令完成,主要包括vpandn、vpsrlq、vpor、vpand、vpsllq等指令,经过数据转置后的数据分布存储变化如图3所示。经过数据转置后,能够将每组明文的
Figure BDA0003768536100000071
(j∈[0,7])放在同一个寄存器中,之后使用AVX2指令集并行操作64组数据,并简化SM4算法中的S盒操作和线性变换操作。
为了保证算法的正确性,在对明文进行数据编排之后,需要对密钥进行数据编排。本发明将密钥编排分离为扩展和复制操作,并对扩展操作进行预处理,在密钥生成函数中进行密钥扩展。在扩展操作中,针对每一轮轮密钥,对其每一位进行判断:若当前位为1,则存储8位数据0xff;若当前位为0,则存储8位数据0x0。扩展过程密钥扩展后轮密钥在内存中的分布如图3所示,存储形式应为:rk[k]=((uint32_t)temp[k]<<24)|((uint32_t)temp[k+8]<<16)|((uint32_t)temp[k+16]<<8)|((uint32_t)temp[k+24])(k∈[0,8],rk表示每轮需要存储的轮密钥,temp[k]表示第k个8位数据)。
之后,在加密过程中,通过AVX2指令将轮密钥复制到寄存器中进行算法加密。
在算法加密的过程中,本发明中的S盒通过逻辑函数实现,借助复合域技术完成S盒的实现。
在线性变换中,线性移位的过程如图7所示。其中,ROTL8(x)表示x在32比特内循环左移8位,ROTL16(x)表示x在32比特内循环左移16位,ROTL8(x)表示x在32比特内循环左移24位。S′0~S′7表示8个原始寄存器,即经过S盒之后数据所在的Y0~Y7寄存器(Yi代表第i个YMM寄存器),T0~T7表示运算结果。线性变换之后,与X0异或得到轮函数结果并存储在X0的内存位置。在线性移位变换过程中,由于AVX2指令集不存在循环移位指令,所以循环左移过程需要通过移位指令和异或指令共同完成。以循环左移8位为例,需要三个指令完成:vpslld、vpsrld、vpxor,即左移、右移和异或指令。而在本方法的线性移位实现过程中,循环左移的位数都为8的倍数,即以字节为单位进行循环左移,因此,循环左移的过程能够用AVX2指令集的shuffle字节重排指令来进行移位,从而达到循环左移的效果,即使用一个指令就能完成操作。通过指令集的替换,在线性移位的操作过程中,每一轮的指令条数从110条降低到了60条,效率有较大提升。

Claims (5)

1.一种基于寄存器优化的SM4快速软件实现方法,其特征在于,包括以下几个步骤:
步骤1:数据打包:令Xi(i∈[0,35])为32比特数据,SM4的任意一组明文数据可以表示为M=(X0,X1,X2,X3),将64组明文的Xi排列在连续的内存位置中;
步骤2:数据转置:将内存中的64组明文的Xi放入寄存器中,对Xi进行数据转置操作,之后将数据放入内存中,使得每组明文的
Figure FDA0003768536090000011
数据排列在连续的内存位置中;j∈[0,7],i∈[0,3],
Figure FDA0003768536090000012
表示Xi中的第j比特;
步骤3:密钥编排:将每轮轮密钥复制为64组,编排为与明文相同的存储形式,使得每组轮密钥的rkj,rkj+8,rkj+16,rkj+24数据排列在连续的内存位置中;j∈[0,7],rkj表示轮密钥的第j比特;
步骤4:在寄存器中进行轮函数操作,SM4算法的轮函数为
Figure FDA0003768536090000013
Figure FDA0003768536090000014
其中,rki为当前迭代的轮密钥,T为一个
Figure FDA0003768536090000015
的可逆变换,完成T变换中线性变换的移位运算;
步骤5:数据逆转置:将64组密文的Xi,i∈[32,35]进行逆转置,将使得每组明文的Xi数据排列在连续内存位置中;
步骤6:数据打包的逆过程:调整密文数据的存储形式,将64组密文中每组密文的(X35,X34,X33,X32)数据存储在连续的内存位置中。
2.根据权利要求,所述的基于寄存器优化的SM4快速软件实现方法,其特征在于,步骤1中,在数据编排过程中引入了数据打包的操作,SM4的一组明文数据可以表示为M=(X0,X1,X2,X3),其中Xi(0≤i≤3)为32比特,将64组明文的每个Xi放在连续内存位置中,
Figure FDA0003768536090000021
表示第j组数据的X0
3.根据权利要求1所述的基于寄存器优化的SM4快速软件实现方法,其特征在于,步骤2中,对打包后的数据进行转置操作,数据转置过程只在寄存器内部进行;通过数据转置操作,能够将每组明文的
Figure FDA0003768536090000022
比特放在同一个寄存器中,j∈[0,7],i∈[0,3]。
4.根据权利要求1所述的基于寄存器优化的SM4快速软件实现方法,其特征在于,步骤3中,在加密之前提前对密钥进行预处理操作,在预处理操作过程中,针对每一轮轮密钥,对其每一位进行判断:若当前位为1,则存储8位数据0xff;若当前位为0,则存储8位数据0x0;并将处理后的密钥数据预存储起来,之后将轮密钥复制为64组,进行加密运算。
5.根据权利要求1中所述的基于寄存器优化的SM4快速软件实现方法,其特征在于,步骤4中,在寄存器内部进行轮函数操作,在线性移位变换过程中,一次循环移位过程能够通过AVX2指令集中的一个数据重排指令完成。
CN202210893613.7A 2022-07-27 2022-07-27 一种基于寄存器优化的sm4快速软件实现方法 Pending CN115499152A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210893613.7A CN115499152A (zh) 2022-07-27 2022-07-27 一种基于寄存器优化的sm4快速软件实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210893613.7A CN115499152A (zh) 2022-07-27 2022-07-27 一种基于寄存器优化的sm4快速软件实现方法

Publications (1)

Publication Number Publication Date
CN115499152A true CN115499152A (zh) 2022-12-20

Family

ID=84467468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210893613.7A Pending CN115499152A (zh) 2022-07-27 2022-07-27 一种基于寄存器优化的sm4快速软件实现方法

Country Status (1)

Country Link
CN (1) CN115499152A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117873431A (zh) * 2024-03-13 2024-04-12 杭州金智塔科技有限公司 基于国密sm4算法的随机数生成方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117873431A (zh) * 2024-03-13 2024-04-12 杭州金智塔科技有限公司 基于国密sm4算法的随机数生成方法及装置

Similar Documents

Publication Publication Date Title
USRE44594E1 (en) Method and circuit for data encryption/decryption
Gueron Intel’s new AES instructions for enhanced performance and security
US7200226B2 (en) Cipher block chaining decryption
CN110880967B (zh) 采用分组对称密钥算法对多消息并行加解密方法
JPH1075240A (ja) データ送信を保護する方法およびデータを暗号化または解読化する装置
Nishikawa et al. High-performance symmetric block ciphers on CUDA
CN112199696B (zh) 基于白盒分组密码的加解密方法
Lee et al. Efficient implementation of AES-CTR and AES-ECB on GPUs with applications for high-speed FrodoKEM and exhaustive key search
CN115499152A (zh) 一种基于寄存器优化的sm4快速软件实现方法
CN104219045B (zh) Rc4 流密码生成器
CN106982116A (zh) 一种基于可逆逻辑电路的aes的本地文件加密方法
CN114091086A (zh) 一种基于比特切片的sm4算法快速实现方法
Wei et al. Software implementation and comparison of ZUC-256, SNOW-V, and AES-256 on RISC-V platform
CN107124267B (zh) 一种密码芯片上的固定位宽密钥产生方法
Khan et al. AES-128 ECB encryption on GPUs and effects of input plaintext patterns on performance
CN111614457A (zh) 基于p置换改进的轻量级分组加解密方法、装置及存储介质
US20240097880A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
CN112737767B (zh) 抗差分功耗分析与时间攻击的消息认证码生成方法及系统
CN102360414B (zh) 一种可修正伪随机序列的可误导的加密方法
CN111262685B (zh) 一种新型密钥生成的Shield分组密码实现方法、装置及可读存储介质
Lam et al. Implementation of Lightweight Cryptography Core PRESENT and DM-PRESENT on FPGA
Kim et al. Parallel Implementation of PIPO and Its Application for Format Preserving Encryption
Thirer A pipelined FPGA implementation of an encryption algorithm based on genetic algorithm
WO2007112672A1 (en) A device for implementing sms4 algorithm
Yang ESTABLISHING A MATHEMATICAL MODEL FOR ENCRYPTION AND DECRYPTION OF COMMUNICATION NETWORK DATA

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination