CN113282947A - 一种基于sm4算法的数据加密方法、装置及计算机平台 - Google Patents

一种基于sm4算法的数据加密方法、装置及计算机平台 Download PDF

Info

Publication number
CN113282947A
CN113282947A CN202110822234.4A CN202110822234A CN113282947A CN 113282947 A CN113282947 A CN 113282947A CN 202110822234 A CN202110822234 A CN 202110822234A CN 113282947 A CN113282947 A CN 113282947A
Authority
CN
China
Prior art keywords
data
result
registers
bit
algorithm
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
CN202110822234.4A
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.)
DBAPPSecurity Co Ltd
Hangzhou Dbappsecurity Technology Co Ltd
Original Assignee
Hangzhou Dbappsecurity Technology Co Ltd
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 Hangzhou Dbappsecurity Technology Co Ltd filed Critical Hangzhou Dbappsecurity Technology Co Ltd
Priority to CN202110822234.4A priority Critical patent/CN113282947A/zh
Publication of CN113282947A publication Critical patent/CN113282947A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Advance Control (AREA)

Abstract

本申请公开了一种基于SM4算法的数据加密方法、装置、计算机平台及可读存储介质。有效结合了SIMD流水线技术和AES‑NI指令集两种加速方式,实现对SM4算法的加速。此外,为了充分利用计算机平台的全部寄存器,在读取明文分组时,并行读取目标数量的明文分组的数据,然后对读取到的数据进行重排并利用全部寄存器存储重排结果,从而提升SM4算法的加密速度。在此基础之上,考虑到利用AES‑NI指令集进行数据计算的步骤耗时较多,延时较高,对CPU流水线进行了优化,即,在一组数据执行到该计算步骤时,在等待该组数据计算结果的同时继续处理其他组数据,进一步提升SM4算法的加密速度。

Description

一种基于SM4算法的数据加密方法、装置及计算机平台
技术领域
本申请涉及计算机技术领域,特别涉及一种基于SM4算法的数据加密方法、装置、计算机平台及可读存储介质。
背景技术
在愈来愈重视数据安全和隐私保护的今天,市场上各类产品为贴合用户需求,保护用户个人信息,均大量应用了密码技术。例如,使用密钥和密码算法先对敏感数据进行加密,然后再进行存储、传输、分发,终端收到数据后,使用约定的密钥进行解密获得敏感数据,是比较普遍的安全解决方案。随着现阶段网络云盘、视频网站、vpn等技术的快速发展,数据量呈几何式增长。如何在高速、复杂的网络环境下,保护用户数据安全,同时降低服务器和终端设备的计算压力,提高用户体验成为安全通信场景下亟待解决的问题。而解决这个问题的主要途径之一,就是提高密码算法的加解密效率。
SM4是我国采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布,相关标准为GM / T 0002-2012《 SM4分组密码算法》。算法分组长度128位,密钥长度128位,加密算法和密钥扩展算法均采用32轮非线性迭代结构。对通信数据的机密性可采用 SM4算法对数据加密保护。现阶段,随着网络中传输和交换的信息量越来越大,市场上的安全产品对使用的密码算法性能要求也越来越高,作为同属于对称加密算法的SM4 算法,性能较AES 算法有一定差距,在某些实时性要求高的通信加密应用场景中,可能难以满足需求。
综上,如何实现对AES算法的加速,提升数据加密效率,是亟待本领域技术人员解决的问题。
发明内容
本申请的目的是提供一种基于SM4算法的数据加密方法、装置、计算机平台及可读存储介质,用以解决目前SM4算法加密效率较低的问题。其具体方案如下:
第一方面,本申请提供了一种基于SM4算法的数据加密方法,应用于计算机平台,包括:
运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器;所述目标数量为:所述计算机平台的寄存器长度与32的商的整数倍;
将所述全部寄存器每4个划分为一个寄存器分组,各个所述寄存器分组依次执行S1至S3的步骤,执行之后,各个所述分组依次执行S4至S6的步骤;
对所述全部寄存器中的数据进行反重排,得到密文;
S1至S6的步骤如下:
S1、将寄存器中的数据与轮密钥进行抑或运算;
S2、对抑或运算结果进行第一仿射变换;
S3、利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算;
S4、在计算完成后,对计算结果进行第二仿射变换;
S5、对第二仿射变换结果进行循环移位、置换;
S6、判断当前迭代次数是否达到32,若是,结束流程,否则更新当前迭代次数并进入S1。
可选的,所述利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算,包括:
利用128位AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算。
可选的,所述运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器,包括:
运用SIMD流水线技术,每次并行读取32个明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器。
可选的,在计算机平台为X86平台时,该X86平台包括16个256位的YMM寄存器;
所述运用SIMD流水线技术,每次并行读取32个明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器,包括:
运用256位的SIMD流水线技术,每次读取8个明文分组,并行数为4;对读取到的数据进行重排,将重排结果存入16个YMM寄存器。
可选的,所述利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算,包括:
将第一仿射变换结果拆分为两个128位数据;利用128位AES-NI指令集的AESENCLAST指令,对所述两个128位数据进行计算;
相应的,所述在计算完成后,对计算结果进行第二仿射变换,包括:
在计算完成后,得到两个128位计算结果;对所述两个128位计算结果进行合并,对合并结果进行第二仿射变换。
可选的,所述将第一仿射变换结果拆分为两个128位数据;利用128位AES-NI指令集的AESENCLAST指令,对所述两个128位数据进行计算,包括:
将第一仿射变换结果拆分为两个128位数据,分别存入两个XMM寄存器中;利用128位AES-NI指令集的AESENCLAST指令,对所述两个XMM寄存器中的数据进行计算。
可选的,在计算机平台为ARM平台时,该ARM平台包括32个128位的NEON寄存器;
相应的,所述运用SIMD流水线技术,每次并行读取32个明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器,包括:
运用128位的SIMD流水线技术,每次读取4个明文分组,并行数为8;对读取到的数据进行重排,将重排结果存入32个NEON寄存器。
第二方面,本申请提供了一种基于SM4算法的数据加密装置,应用于计算机平台,包括:
并行读取模块,用于运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器;所述目标数量为:所述计算机平台的寄存器长度与32的商的整数倍;
迭代运算模块,用于将所述全部寄存器每4个划分为一个寄存器分组,各个所述寄存器分组依次执行S1至S3的步骤,执行之后,各个所述分组依次执行S4至S6的步骤;
反重排模块,用于对所述全部寄存器中的数据进行反重排,得到密文;
S1至S6的步骤如下:
S1、将寄存器中的数据与轮密钥进行抑或运算;
S2、对抑或运算结果进行第一仿射变换;
S3、利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算;
S4、在计算完成后,对计算结果进行第二仿射变换;
S5、对第二仿射变换结果进行循环移位、置换;
S6、判断当前迭代次数是否达到32,若是,结束流程,否则更新当前迭代次数并进入S1。
第三方面,本申请提供了一种计算机平台,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上所述的基于SM4算法的数据加密方法。
第四方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的基于SM4算法的数据加密方法。
本申请所提供的一种基于SM4算法的数据加密方法,应用于计算机平台,包括:运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器,该目标数量为计算机平台的寄存器长度与32的商的整数倍;将全部寄存器每4个划分为一个寄存器分组,各个寄存器分组依次执行S1至S3的步骤,执行之后,各个分组依次执行S4至S6的步骤:对全部寄存器中的数据进行反重排,得到密文。
其中,S1至S6的步骤如下:S1、将寄存器中的数据与轮密钥进行抑或运算;S2、对抑或运算结果进行第一仿射变换;S3、利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算;S4、在计算完成后,对计算结果进行第二仿射变换;S5、对第二仿射变换结果进行循环移位、置换;S6、判断当前迭代次数是否达到32,若是,结束流程,否则更新当前迭代次数并进入S1。
可见,该方法有效结合了SIMD流水线技术和AES-NI指令集两种加速方式,实现对SM4算法的加速。此外,为了充分利用计算机平台的全部寄存器,在读取明文分组时,该方法并行读取目标数量的明文分组的数据,然后对读取到的数据进行重排并利用全部寄存器存储重排结果,从而提升SM4算法的加密速度。在此基础之上,考虑到利用AES-NI指令集进行数据计算的步骤耗时较多,延时较高,该方法对CPU流水线进行了优化,即,在一组数据执行到该计算步骤时,在等待该组数据计算结果的同时继续处理其他组数据,从而提升CPU利用效率,进一步提升SM4算法的加密速度。
此外,本申请还提供了一种基于SM4算法的数据加密装置、计算机平台及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请所提供的基于SM4算法的数据加密方法实施例一的流程图;
图2为本申请所提供的寄存器长度为256的计算机平台的数据读取过程示意图;
图3为本申请所提供的寄存器长度为128的计算机平台的数据读取过程示意图;
图4为本申请所提供的基于SM4算法的数据加密方法实施例二的流程图;
图5为本申请所提供的基于SM4算法的数据加密方法实施例三的流程图;
图6为本申请所提供的基于SM4算法的数据加密装置实施例的功能框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
AES算法是美国NIST2001年11月发布的高级加密标准,已然成为对称加密中最流行的算法之一。目前,针对AES算法的加速方式主要有以下三种:
1、TBOX (查表法)加速:
使用预计算,构造对应矩阵进行预先存储,减少实际迭代时的运算量,使用查表法进行计算。
2、AES-NI( Advanced Encryption Standard New Instructions)加速:
AES-NI是一种用于提高AES算法加解密速度的指令集,2008年3月,INTEL、AMD等公司相继宣布在其x86架构处理器上支持用于AES算法加速的指令集AES-NI,使得AES算法在通用CPU上的计算速度得到了极大的提升。
3、SIMD(Single instruction, multiple data)加速:
一种能将多个数据段打包进大型寄存器,并通过一条指令对数据进行处理,利用数据级别的并行性,提升具体算法性能。使用SIMD技术,对AES算法进行加速。通过同时将多个明文分组存入长寄存器(128bits、256bits、512bits长度),通过对该寄存器的一次操作,达到多个明文分组并行处理的加速效果,使AES算法性能大幅提升。
现有技术中,应用上述加速方式的AES算法加速方案存在以下缺点:
1、仅使用TBOX的SM4加速算法,加速效果一般,开源库openssl就是使用这种方式。
2、使用AES-NI指令集和SSE(适用于x86架构系列处理器的128位SIMD流水线技术)进行算法加速,算法效率有较大提升,相对openssl实现性能提升60%。但是,其未使用AVX2(适用于x86架构系列处理器的256位SIMD流水线技术)以上的SIMD技术以及编译器代码优化,仍有较大的加速潜力。
3、考虑TBOX结合SIMD技术进行SM4加速,相对openssl标准实现性能提升80%。但是,该方法依赖vpgatherdd指令完成8位输入32位输出的查表运算,该指令延时较大,使得该方案并未达到期待的线性加速比。
针对上述问题,本申请的核心在于提供一种基于SM4算法的数据加密方法、装置、计算机平台及可读存储介质,用以提升SM4算法的速度,提升数据加密解密效率。本申请主要考虑对SM4算法中的32轮迭代运算部分进行加速。
值得一提的是,由于SM4算法的数据加密算法和数据解密算法的流程基本相同,唯一区别是数据解密时轮密钥的使用顺序为数据加密时的逆序,为方便描述,下文仅以数据加密过程为例对SM4算法加速原理进行说明,实际应用中,本申请的SM4算法加速原理可以应用于数据解密过程,详细的数据解密过程不再多做介绍。
下面对本申请提供的基于SM4算法的数据加密方法实施例一进行介绍。参见图1,实施例一应用于计算机平台,包括以下步骤:
S11、运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器;该目标数量为:计算机平台的寄存器长度与32的商的整数倍;
S12、将全部寄存器每4个划分为一个寄存器分组,各个寄存器分组依次执行S1至S3的步骤,执行之后,各个分组依次执行S4至S6的步骤;
S13、对全部寄存器中的数据进行反重排,得到密文。
其中,S1至S6的步骤如下:
S1、将寄存器中的数据与轮密钥进行抑或运算;
S2、对抑或运算结果进行第一仿射变换;
S3、利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算;
S4、在计算完成后,对计算结果进行第二仿射变换;
S5、对第二仿射变换结果进行循环移位、置换;
S6、判断当前迭代次数是否达到32,若是,结束流程,否则更新当前迭代次数并进入S1。
现阶段硬件支持情况如下:X86平台下,INTEL 2013年发布Haswell后续系列、AMD2017年Zen系列处理器均支持AVX2、AES-NI指令集。ARM平台下,ARM Cortex-A8后续系列均支持128位NEON(适用于ARM系列处理器的128位SIMD流水线技术)和AES-NI指令集。因此,本实施例同时采用SIMD流水线技术和AES-NI指令集两种加速方式对SM4算法进行加速。
其中,SIMD流水线技术可以包括256位SIMD流水线技术和128位SIMD流水线技术,具体选用哪一种,可以根据计算机平台的寄存器配置自行确定。如果计算机平台的寄存器为256位寄存器,则选用256位SIMD流水线技术;如果计算机平台的寄存器为128位寄存器,则选用128位SIMD流水线技术。
至于AES-NI指令集,考虑到256位的AES-NI指令集只有部分高端服务器CPU支持,为了保证平台通用性,作为一种具体的实施方式,可以选用128位AES-NI指令集。所以,上述S3的过程具体为:利用128位AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算。
在SM4算法的32轮核心迭代运算中,输入的明文为128(4*32)位,输出的密文也为128位。运算过程为32位字运算,函数输入为32位,输出为32位。同一明文分组中不同的32位的运算方式不同,所以,在读取明文时,每次读取明文分组的32位,4(128/32)次读取完整个明文分组。
假设寄存器为256位寄存器,那么,可以利用256位的SIMD流水线技术,每次读取8个明文分组的32位,每次读取的数据存入一个寄存器,如图2所示。4次读取完整个明文分组,所以8个明文分组的数据共存入4个寄存器中。
假设寄存器为128位寄存器,那么,运用128位的SIMD流水线技术,每次读取4个明文分组的32位,每次读取的数据存入一个寄存器,如图3所示。4次读取完整个明文分组,所以4个明文分组的数据共存入4个寄存器中。
由此可见,本实施例至少需要利用计算机平台的4个寄存器。实际应用中,计算机平台的寄存器数量往往大于4,为了充分利用计算机平台上的寄存器,在读取明文时可以并行读取。例如,在寄存器为256位寄存器时,原本每次读取8个明文分组,并行读取时,则每次可以读取8的整数倍个明文分组;在寄存器为128位寄存器时,原本每次读取4个明文分组,并行读取时,每次可以读取4的整数倍个明文分组。所以,在S11中,本实施例每次并行读取目标数量的明文分组,该目标数量为:计算机平台的寄存器长度与32的商的整数倍。
上面已经提到,本实施例选用128位AES-NI指令集对SM4算法进行加速,所以,当计算机平台的寄存器位数为256时,需要在计算前对数据进行拆分并在计算后对数据进行合并,此时,上述S3和S4的过程具体如下:将第一仿射变换结果拆分为两个128位数据;利用128位AES-NI指令集的AESENCLAST指令,对两个128位数据进行计算;在计算完成后,得到两个128位计算结果;对两个128位计算结果进行合并,对合并结果进行第二仿射变换。
综上,算法加速主要可分为细粒度并行加速和粗粒度并行加速两种:细粒度加速主要是指,将一组明文分组在算法内部进行加速,提高单个分组的加密速度;粗粒度加速是指,将多组明文分组同时进行运算,减少相同数据量下的处理时间。其中AES-NI属于细粒度加速方案,SIMD属于粗粒度加速方案,本实施例提供一种基于SM4算法的数据加密方法,同时利用这两种技术对SM4算法进行加速,有效提升数据加密解密效率。
现阶段用户终端PC,手机,iot设备型号种类繁多,本实施例提供了一个通用的SM4算法加速方案,使得SM4算法在x86平台、ARM平台下均能达到极高的加解密速度,适配所有主流硬件平台。
实施例一介绍了应用于计算机平台的基于SM4算法的数据加密方法,下面分别介绍该方法在X86平台和ARM平台上的实施过程。
首先,介绍申请提供的基于SM4算法的数据加密方法实施例二,实施例二应用于X86平台。X86平台下,实施例二运用256位的SIMD流水线技术(AVX2指令集)、128位AES-NI技术对SM4算法核心运算部分进行优化,采用编译器优化技术对核心代码调整,最终达到加速的效果。
如图4所示,实施例二中,基于AVX2指令的AES-NI加速过程如下:
初始化:一次性读取8个明文分组,每个明文分组128位,用4个字母序列表示,字母序列中的每个字母表示32位,具体如下:
Figure 256486DEST_PATH_IMAGE001
为了使得同类数据可以进行并行计算,对数据进行重排,每一行256位数据记为一个重排数据
Figure 60494DEST_PATH_IMAGE002
,最终得到以下形式:
Figure 743410DEST_PATH_IMAGE003
步骤1:将4个重排数据分别存入4个YMM寄存器(SIMD技术)。
步骤2:与轮密钥k进行抑或运算:x=p^ k。
步骤3:使用第一函数完成仿射变换:
Figure 963170DEST_PATH_IMAGE004
步骤4:这里使用128位AES-NI指令集,所以需要进行数据拆分,指令集长度的切换会产生一定时间上的损失。将y按照下述方式拆分为两部分,并将拆分结果存入XMM寄存器:
Figure 179257DEST_PATH_IMAGE005
步骤5:使用AESENCLAST指令,进行有限域空间转换:
Figure 888587DEST_PATH_IMAGE006
Figure 573646DEST_PATH_IMAGE007
步骤6:将转换得到的两个128位数据按照下述方式进行合并,得到256位数据,重新存放进YMM寄存器:
Figure 672796DEST_PATH_IMAGE008
步骤7:使用第二函数完成仿射变换:
Figure 494121DEST_PATH_IMAGE009
步骤8:对p进行循环移位、置换。
步骤9:回到步骤1,循环32次。
步骤10:进行数据反重排:
Figure 92462DEST_PATH_IMAGE010
步骤11:结束。
经过本部分优化,i9 9900k(主频4.5Ghz)平台下,可以将SM4 ECB模式从标准实现(openssl T-box)的200MB/s提速到520MB/s,提速达到160%。
实施例二中,编译器优化技术包括以下两个方面:
1、充分利用寄存器:
AVX2指令集拥有16个YMM 256位寄存器,仅使用一次上述指令加速,会闲置大部分寄存器,不能发挥全部效率。本实施例选择将上述核心的步骤进行4次数据并行,即在初始化阶段一次性抽取32个分组的数据进行重排,生成16个重排数据
Figure 890916DEST_PATH_IMAGE002
存放进16个YMM寄存器,在上述优化基础上进一步提升了4倍的数据并行化。实践证明,经过这样的代码优化,加速效果最好。
2、CPU流水线优化:
根据INTEL Intrinsics Guide显示,AESENCLAST指令延迟较高。同组数据后续CPU流水计算的时候将依赖步骤五AESENCLAST指令的返回结果,从而造成效率上的损失。本实施例通过充分利用上一部分(充分利用CPU寄存器优化部分)的4次数据并行,可以降低甚至避免这种损失。具体的,通过调整CPU指令流水,在等待AESENCLAST结果返回的同时,进行其他组数据的前置计算,减少同组数据对AESENCLAST指令等待延迟的效率损失。32次循环中核心步骤(1-9)实际操作流水线如下:
1、计算数据组1的步骤1-5
2、计算数据组2的步骤1-5
3、计算数据组3的步骤1-5,
4、计算数据组4的步骤1-5
5、计算数据组1的步骤7-9
6、计算数据组2的步骤7-9
7、计算数据组3的步骤7-9
8、计算数据组4的步骤7-9
经过本部分两项优化,i9 9900k(主频4.5Ghz)平台下,可以将SM4 ECB模式加解密速度从第一部分的520MB/s提速到1.1GB/s,进一步提速90%。
综上,实施例二主要思想是利用AVX2指令集实现数据并行提速,利用两次仿射变换以及AESENCLAST指令加速SM4的S盒查表运算。
然后,介绍申请提供的基于SM4算法的数据加密方法实施例三,实施例三应用于ARM平台。ARM平台下,实施例二运用128位的SIMD流水线技术(NEON指令集)、128位AES-NI技术对SM4算法核心运算部分进行优化,采用不同于x86平台的编译器优化技术对核心代码调整,最终达到加速的效果。
ARMv8-A AArch64上NEON寄存器长度为128位,相较于AVX2上256位的寄存器引起的主要区别是ARM上进行AESENCLAST运算时不再需要进行数据拆分和数据合并步骤。本实施例使用128位的SSE指令集实现x86功能,然后用SSE2NEON项目进行指令迁移,直接将x86下SSE代码映射至ARM下NEON框架。
如图5所示,实施例三中,基于NEON指令的AES-NI加速过程如下:
初始化:一次性读取4个明文分组,每个明文分组128位,用4个字母序列表示,每个字母表示32位:
Figure 45954DEST_PATH_IMAGE011
经过数据重排,得到:
Figure 190627DEST_PATH_IMAGE012
步骤1:将4个重排数据分别存放进4个NEON寄存器。
步骤2:与轮密钥k进行抑或运算:x=p^ k。
步骤3:使用第一函数,完成仿射变换:
Figure 756606DEST_PATH_IMAGE013
步骤4:使用AESENCLAST指令:z= AESENCLAST(y)。
步骤5:使用第二函数,完成仿射变换,输出p:
Figure 150679DEST_PATH_IMAGE014
步骤6:对p进行循环移位、置换。
步骤7:回到步骤一,循环32次。
步骤8:数据反重排:
Figure 109407DEST_PATH_IMAGE015
步骤9:结束。
经过本部分优化,apple m1平台下,可以将SM4 ECB模式从标准实现(openssl T-box)的162MB/s提速到180MB/s。提速10%。不利用编译器优化技术,仅使用NEON 128比特长度指令集,AES-NI优化的效果相比T-box并无太大优势。
实施例三中,编译器优化技术包括以下两个方面:
1、充分利用CPU寄存器
考虑到ARMv8-A AArch64架构上的NEON指令集拥有32个128位NEON 寄存器,本实施例考虑将上述核心的步骤进行8次数据并行,即在初始化阶段一次性抽取32个分组的数据进行重排,生成32个重排数据
Figure 13647DEST_PATH_IMAGE002
存放进32个NEON寄存器,在上述优化基础上进一步提升了8倍的数据并行化。
2、CPU流水线优化
类似于X86平台,ARM平台有8组数据并行,优化如下:
1、计算数据组1的步骤1-4
2、计算数据组2的步骤1-4
3、计算数据组3的步骤1-4
4、计算数据组4的步骤1-4
5、计算数据组5的步骤1-4
6、计算数据组6的步骤1-4
7、计算数据组7的步骤1-4
8、计算数据组8的步骤1-4
9、计算数据组1的步骤5-7
10、计算数据组2的步骤5-7
11、计算数据组3的步骤5-7
12、计算数据组4的步骤5-7
13、计算数据组5的步骤5-7
14、计算数据组6的步骤5-7
15、计算数据组7的步骤5-7
16、计算数据组8的步骤5-7
经过本部分优化,apple m1平台下,可以将SM4 ECB模式加解密速度从第一部分的180MB/s提速到720MB/s,进一步提速300%,提速效果非常明显。
综上,实施例三主要思想是利用NEON指令集实现数据并行提速,利用两次仿射变换以及AESENCLAST指令加速SM4的S盒查表运算。
下面对本申请实施例提供的基于SM4算法的数据加密装置进行介绍,下文描述的基于SM4算法的数据加密装置与上文描述的基于SM4算法的数据加密方法可相互对应参照。
如图6所示,本实施例的基于SM4算法的数据加密装置,应用于计算机平台,包括:
并行读取模块61,用于运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器;所述目标数量为:所述计算机平台的寄存器长度与32的商的整数倍;
迭代运算模块62,用于将所述全部寄存器每4个划分为一个寄存器分组,各个所述寄存器分组依次执行S1至S3的步骤,执行之后,各个所述分组依次执行S4至S6的步骤;
反重排模块63,用于对所述全部寄存器中的数据进行反重排,得到密文;
S1至S6的步骤如下:
S1、将寄存器中的数据与轮密钥进行抑或运算;
S2、对抑或运算结果进行第一仿射变换;
S3、利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算;
S4、在计算完成后,对计算结果进行第二仿射变换;
S5、对第二仿射变换结果进行循环移位、置换;
S6、判断当前迭代次数是否达到32,若是,结束流程,否则更新当前迭代次数并进入S1。
本实施例的基于SM4算法的数据加密装置用于实现前述的基于SM4算法的数据加密方法,因此该装置的具体实施方式可见前文中的基于SM4算法的数据加密方法的实施例部分,在此不再展开介绍。
此外,本申请还提供了一种计算机平台,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上文所述的基于SM4算法的数据加密方法。
最后,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的基于SM4算法的数据加密方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种基于SM4算法的数据加密方法,其特征在于,应用于计算机平台,包括:
运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器;所述目标数量为:所述计算机平台的寄存器长度与32的商的整数倍;
将所述全部寄存器每4个划分为一个寄存器分组,各个所述寄存器分组依次执行S1至S3的步骤,执行之后,各个所述分组依次执行S4至S6的步骤;
对所述全部寄存器中的数据进行反重排,得到密文;
S1至S6的步骤如下:
S1、将寄存器中的数据与轮密钥进行抑或运算;
S2、对抑或运算结果进行第一仿射变换;
S3、利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算;
S4、在计算完成后,对计算结果进行第二仿射变换;
S5、对第二仿射变换结果进行循环移位、置换;
S6、判断当前迭代次数是否达到32,若是,结束流程,否则更新当前迭代次数并进入S1。
2.如权利要求1所述的方法,其特征在于,所述利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算,包括:
利用128位AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算。
3.如权利要求2所述的方法,其特征在于,所述运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器,包括:
运用SIMD流水线技术,每次并行读取32个明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器。
4.如权利要求3所述的方法,其特征在于,在计算机平台为X86平台时,该X86平台包括16个256位的YMM寄存器;
所述运用SIMD流水线技术,每次并行读取32个明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器,包括:
运用256位的SIMD流水线技术,每次读取8个明文分组,并行数为4;对读取到的数据进行重排,将重排结果存入16个YMM寄存器。
5.如权利要求4所述的方法,其特征在于,所述利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算,包括:
将第一仿射变换结果拆分为两个128位数据;利用128位AES-NI指令集的AESENCLAST指令,对所述两个128位数据进行计算;
相应的,所述在计算完成后,对计算结果进行第二仿射变换,包括:
在计算完成后,得到两个128位计算结果;对所述两个128位计算结果进行合并,对合并结果进行第二仿射变换。
6.如权利要求5所述的方法,其特征在于,所述将第一仿射变换结果拆分为两个128位数据;利用128位AES-NI指令集的AESENCLAST指令,对所述两个128位数据进行计算,包括:
将第一仿射变换结果拆分为两个128位数据,分别存入两个XMM寄存器中;利用128位AES-NI指令集的AESENCLAST指令,对所述两个XMM寄存器中的数据进行计算。
7.如权利要求3所述的方法,其特征在于,在计算机平台为ARM平台时,该ARM平台包括32个128位的NEON寄存器;
相应的,所述运用SIMD流水线技术,每次并行读取32个明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器,包括:
运用128位的SIMD流水线技术,每次读取4个明文分组,并行数为8;对读取到的数据进行重排,将重排结果存入32个NEON寄存器。
8.一种基于SM4算法的数据加密装置,其特征在于,应用于计算机平台,包括:
并行读取模块,用于运用SIMD流水线技术,每次并行读取目标数量的明文分组,对读取到的数据进行重排,将重排结果存入计算机平台的全部寄存器;所述目标数量为:所述计算机平台的寄存器长度与32的商的整数倍;
迭代运算模块,用于将所述全部寄存器每4个划分为一个寄存器分组,各个所述寄存器分组依次执行S1至S3的步骤,执行之后,各个所述分组依次执行S4至S6的步骤;
反重排模块,用于对所述全部寄存器中的数据进行反重排,得到密文;
S1至S6的步骤如下:
S1、将寄存器中的数据与轮密钥进行抑或运算;
S2、对抑或运算结果进行第一仿射变换;
S3、利用AES-NI指令集的AESENCLAST指令,对第一仿射变换结果进行计算;
S4、在计算完成后,对计算结果进行第二仿射变换;
S5、对第二仿射变换结果进行循环移位、置换;
S6、判断当前迭代次数是否达到32,若是,结束流程,否则更新当前迭代次数并进入S1。
9.一种计算机平台,其特征在于,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如权利要求1至7任意一项所述的基于SM4算法的数据加密方法。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1至7任意一项所述的基于SM4算法的数据加密方法。
CN202110822234.4A 2021-07-21 2021-07-21 一种基于sm4算法的数据加密方法、装置及计算机平台 Pending CN113282947A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110822234.4A CN113282947A (zh) 2021-07-21 2021-07-21 一种基于sm4算法的数据加密方法、装置及计算机平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110822234.4A CN113282947A (zh) 2021-07-21 2021-07-21 一种基于sm4算法的数据加密方法、装置及计算机平台

Publications (1)

Publication Number Publication Date
CN113282947A true CN113282947A (zh) 2021-08-20

Family

ID=77286760

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110822234.4A Pending CN113282947A (zh) 2021-07-21 2021-07-21 一种基于sm4算法的数据加密方法、装置及计算机平台

Country Status (1)

Country Link
CN (1) CN113282947A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114511477A (zh) * 2022-01-20 2022-05-17 上海盈方微电子有限公司 一种适用于高斯平滑的neon优化方法
CN114978473A (zh) * 2022-05-07 2022-08-30 海光信息技术股份有限公司 一种sm3算法的处理方法、处理器、芯片及电子设备
CN118214541A (zh) * 2024-05-20 2024-06-18 南京邮电大学 一种基于arm平台的sm3并行数据加密方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520966A (zh) * 2008-02-27 2009-09-02 英特尔公司 并行运算模式中优化高级加密标准加解密的方法和装置
CN110197076A (zh) * 2019-05-22 2019-09-03 北京航空航天大学 一种sm4加密算法的软件优化实现方法
CN111526003A (zh) * 2020-04-09 2020-08-11 北京理工大学 数据加密方法、装置、存储介质和电子设备
CN111736902A (zh) * 2020-07-16 2020-10-02 北京炼石网络技术有限公司 基于simd指令的sm4的并行计算方法及装置、可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520966A (zh) * 2008-02-27 2009-09-02 英特尔公司 并行运算模式中优化高级加密标准加解密的方法和装置
CN110197076A (zh) * 2019-05-22 2019-09-03 北京航空航天大学 一种sm4加密算法的软件优化实现方法
CN111526003A (zh) * 2020-04-09 2020-08-11 北京理工大学 数据加密方法、装置、存储介质和电子设备
CN111736902A (zh) * 2020-07-16 2020-10-02 北京炼石网络技术有限公司 基于simd指令的sm4的并行计算方法及装置、可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郎欢 等: "《SM4的快速软件实现技术》", 《中国科学院大学学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114511477A (zh) * 2022-01-20 2022-05-17 上海盈方微电子有限公司 一种适用于高斯平滑的neon优化方法
CN114978473A (zh) * 2022-05-07 2022-08-30 海光信息技术股份有限公司 一种sm3算法的处理方法、处理器、芯片及电子设备
CN114978473B (zh) * 2022-05-07 2024-03-01 海光信息技术股份有限公司 一种sm3算法的处理方法、处理器、芯片及电子设备
CN118214541A (zh) * 2024-05-20 2024-06-18 南京邮电大学 一种基于arm平台的sm3并行数据加密方法

Similar Documents

Publication Publication Date Title
CN113282947A (zh) 一种基于sm4算法的数据加密方法、装置及计算机平台
US8155306B2 (en) Method and apparatus for increasing the speed of cryptographic processing
US8504845B2 (en) Protecting states of a cryptographic process using group automorphisms
KR101143041B1 (ko) 리볼빙 버퍼들을 이용한 스트림 암호 설계 방법
CN109417468B (zh) 安全高效的分组密码算法实现的方法与装置
Bernstein et al. Faster binary-field multiplication and faster binary-field macs
CN112714112B (zh) 一种用于服务器数据存储的数据加解密方法、存储介质和终端设备
US7496196B2 (en) Method apparatus and system of performing one or more encryption and/or decryption operations
US20180097630A1 (en) Techniques for secure authentication
Lee et al. Terabit encryption in a second: Performance evaluation of block ciphers in GPU with Kepler, Maxwell, and Pascal architectures
US8687803B2 (en) Operational mode for block ciphers
Abbas et al. An efficient implementation of PBKDF2 with RIPEMD-160 on multiple FPGAs
Bos et al. The matrix reloaded: Multiplication strategies in FrodoKEM
Wei et al. Thunderbird: Efficient Homomorphic Evaluation of Symmetric Ciphers in 3GPP by combining two modes of TFHE
CN110034918B (zh) 一种sm4加速方法和装置
CN117155572A (zh) 一种基于gpu并行实现密码技术中大整数乘法的方法
Banerjee et al. Secure cryptosystem using randomized rail fence cipher for mobile devices
Misra et al. A new encryption/decryption approach using AES
CN114826560B (zh) 一种轻量级分组密码cref实现方法及系统
CN115134070A (zh) 一种分组密码算法实现的方法、装置和设备
Shurui et al. A modified AES algorithm for the platform of Smartphone
CN115913518A (zh) 基于分组密码算法和比特切片的gcm优化方法及系统
Wang et al. Matrix FHE and its application in optimizing bootstrapping
CN117896067B (zh) 适用于国密sm2算法的并行模约减方法及装置
Chen et al. Research on Improved Data Encryption Algorithm Based on AES

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210820