CN113794552B - 一种基于simd的sm3并行数据加密运算方法及系统 - Google Patents

一种基于simd的sm3并行数据加密运算方法及系统 Download PDF

Info

Publication number
CN113794552B
CN113794552B CN202111074292.XA CN202111074292A CN113794552B CN 113794552 B CN113794552 B CN 113794552B CN 202111074292 A CN202111074292 A CN 202111074292A CN 113794552 B CN113794552 B CN 113794552B
Authority
CN
China
Prior art keywords
data
length
function operation
pieces
function
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.)
Active
Application number
CN202111074292.XA
Other languages
English (en)
Other versions
CN113794552A (zh
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.)
Qilu University of Technology
National Supercomputing Center in Jinan
Original Assignee
Qilu University of Technology
National Supercomputing Center in Jinan
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 Qilu University of Technology, National Supercomputing Center in Jinan filed Critical Qilu University of Technology
Priority to CN202111074292.XA priority Critical patent/CN113794552B/zh
Publication of CN113794552A publication Critical patent/CN113794552A/zh
Application granted granted Critical
Publication of CN113794552B publication Critical patent/CN113794552B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)

Abstract

本公开提供了一种基于SIMD的SM3并行数据加密运算方法及系统,获取多条待处理数据;如果各条待处理数据等长,对待处理的数据进行分组,每组的长度相同,分组执行CF函数运算;在完成多轮CF函数运算后,对最后的分组进行判断,如果数据长度如果小于或等于第一阈值,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算;如果数据长度大于第一阈值,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算,直至得到最终的运算结果;本公开使数据在保持数据具有哈希依赖的情况下实现了多路并行运算,既保证了运算结果的正确性,又提高了性能。

Description

一种基于SIMD的SM3并行数据加密运算方法及系统
技术领域
本公开涉及数据加密处理技术领域,特别涉及一种基于SIMD的SM3并行数据加密运算方法及系统。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术,并不必然构成现有技术。
杂凑函数(或称Hash函数、散列函数)是杂凑算法的基础,它是一种单向密码体制,即它是一个从明文到密文的不可逆映射,只有加密过程,不能解密。同时,杂凑函数可以将任意长度的输入经过变换以后得到固定长度的输出。杂凑函数的这种单向性特征和输出数据长度固定的特征使得它可以生成消息的“数字指纹”(或称消息摘要、杂凑值、Hash值或散列值),因此在数据完整性认证、数字签名等领域有广泛的应用。
发明人发现,杂凑函数的单路实现,由三个for循环进行实现,所操作的数据具有依赖性,如图1所示,在第二次扩展中,可以很明显的看到W[i]依赖于W[i-16]、W[i-9]、W[i-6]、W[i-3],i=16至68,在进行多路并行操作时无法利用循环进行消息扩展。
发明内容
为了解决现有技术的不足,本公开提供了一种基于SIMD的SM3并行数据加密运算方法及系统,使数据在保持数据具有哈希依赖的情况下实现了多路并行运算,既保证了运算结果的正确性,又提高了性能。
为了实现上述目的,本公开采用如下技术方案:
本公开第一方面提供了一种基于SIMD的SM3并行数据加密运算方法。
一种基于SIMD的SM3并行数据加密运算方法,包括以下过程:
获取多条待处理数据;
如果各条待处理数据等长,对待处理的数据进行分组,每组的长度相同,分组执行CF函数运算;
在完成多轮CF函数运算后,对最后的分组进行判断,如果数据长度如果小于或等于第一阈值,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算;如果数据长度大于第一阈值,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算,直至得到最终的运算结果。
进一步的,获取多条待处理数据;
如果各条待处理数据不等长,获取最长数据的长度;
初始化每条数据的哈希值;
对数据进行分组,将分组后的数据放入消息分块;
判断每个消息分块是否被填满,如果未被填满且结果集中没有此条数据的哈希值,则执行单路CF函数运算,运算完成后将哈希值放入结果集中;
如果消息分块被填满,则执行并行CF函数运算,结束后执行下一轮运算。
进一步的,当待处理数据为八条时,CF函数运算,至少包括:
定义共计十六个个无符号32位整型数组,定义132个__m256i类型临时变量;
对每个分组进行第一步消息扩展,并对在前的多组数据进行装载,将其放入对应的_m256i类型临时变量中;
利用_mm256_xor_si256指令并行进行第二步和第三步的消息扩展,同时完成八条数据的消息扩展。
更进一步的,定义八个可容纳八个元素的无符号32位整型的临时数组,用于存放A、B、C、D、E、F、G和H字寄存器;
定义八个__m256i类型临时变量DA、DB、DC、DD、DE、DF、DG和DH,用于进行字寄存器的并行运算;
将八条数据的hash值放入临时数组并进行寄存器的装载;
对八个字寄存器执行轮函数运算;
将轮函数运算后的字寄存器DA、DB、DC、DD、DE、DF、DG和DH进行组装,分别放入定义的八个符号32位整型的临时数组中;
将存有运算结果的八个临时数组与八条数据的哈希值进行异或,得到本轮运算的结果。
更进一步的,进行寄存器的装载后,先对轮函数运算所需的TT值进行预处理,再对FF函数及GG函数进行拆分,分为前16轮及后48轮两组。
更进一步的,对八个字寄存器执行轮函数运算,分前16轮及后48轮执行,运算中的参数皆为__m256i类型,使用SIMD操作代替异或或者加法操作。
更进一步的,第一步消息扩展产生16组(共128条)数据,再使用132个_m256i向量进行消息扩展第二步和第三步的运算,同时将八组数据扩展为1056条。
本公开第二方面提供了一种基于SIMD的SM3并行数据加密运算系统。
一种基于SIMD的SM3并行数据加密运算系统,包括:
数据获取模块,被配置为:获取多条待处理数据;
数据分组模块,被配置为:如果各条待处理数据等长,对待处理的数据进行分组,每组的长度相同,分组执行CF函数运算;
CF函数运算模块,被配置为:在完成多轮CF函数运算后,对最后的分组进行判断,如果数据长度如果小于或等于第一阈值,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算;如果数据长度大于第一阈值,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算,直至得到最终的运算结果。
本公开第三方面提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如本公开第一方面所述的基于SIMD的SM3并行数据加密运算方法中的步骤。
本公开第四方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本公开第一方面所述的基于SIMD的SM3并行数据加密运算方法中的步骤。
与现有技术相比,本公开的有益效果是:
1、本公开所述的方法、系统、介质或电子设备,定义16个可容纳8个元素的数组来存储第一步消息扩展所产生的16*8条数据,再使用68+64个__m256i向量进行消息扩展第二、三步的运算,同时将8条数据扩展为8*132条,使数据在保持数据具有hash依赖的情况下实现多路并行运算,既保证了运算结果的正确性,又提高了性能。
2、本公开所述的方法、系统、介质或电子设备,对8条数据全部采取向量化进行并行运算,在使用SIMD进行加速时,并行数据可分为等长与不等长,在8条数据等长情况下,数据吞吐率达到最高,最快可达单路实现的3-4倍。而对于各数据长度相差不大的不等长数据,也可以将吞吐率提高到单路实现的2倍以上。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为背景技术中提供的杂凑函数的单路实现方式示意图。
图2为本公开实施例1提供的基于SIMD的SM3并行数据加密运算的流程示意图。
具体实施方式
下面结合附图与实施例对本公开作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
实施例1:
如图1所示,本公开实施例1提供了一种基于SIMD的SM3并行数据加密运算方法,包括以下过程:
获取多条待处理数据;
如果各条待处理数据等长,对待处理的数据进行分组,每组的长度相同,分组执行CF函数运算;
在完成多轮CF函数运算后,对最后的分组进行判断,如果数据长度如果小于或等于第一阈值,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算;如果数据长度大于第一阈值,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算,直至得到最终的运算结果
具体的,包括以下过程:
S1:提前定义运算所需要的临时变量。
S1.1:u32i为32位无符号整型变量。
S1.2:_FSM3_ALIGN为强制字节对齐函数,用于内存中数据的字节对齐。
定义messageBlock_1、messageBlock_2、messageBlock_3、messageBlock_4、messageBlock_5、messageBlock_6、messageBlock_7、messageBlock_8为静态无符号字符型数组,每个长度为64字节,同时对其进行强制字节对齐操作
定义hash_1、hash_2、hash_3、hash_4、hash_5、hash_6、hash_7、hash_8为静态无符号整型数组,每个长度为32字节,可容纳8个元素,且初始值为0,同时对其进行强制字节对齐操作。
S2:获取输入的8条数据及其长度,并初始化8组数据的hash值,其初始值为:
{0x7380166f,0x4914b2b9,0x172442d7,0xda8a0600,0xa96f30bc,0x163138aa,0xe38dee4d,0xb0fb0e4e}
S3:对传入数据分别进行分组,并传入数据,每组长为64字节。
从消息源0中提取64字节数据放入消息分组messageBlock_1中;
从消息源1中提取64字节数据放入消息分组messageBlock_2中;
从消息源2中提取64字节数据放入消息分组messageBlock_3中;
从消息源3中提取64字节数据放入消息分组messageBlock_4中;
从消息源4中提取64字节数据放入消息分组messageBlock_5中;
从消息源5中提取64字节数据放入消息分组messageBlock_6中;
从消息源6中提取64字节数据放入消息分组messageBlock_7中;
从消息源7中提取64字节数据放入消息分组messageBlock_8中。
S4:对分组数据执行CF函数,分别传入每个填充好的分组及其对应的hash值,以下S6···S15步为CF函数的具体执行过程。
S5:定义w0[8]-w15[8]共计16个32位无符号整型数组,定义w0g-w67g及w_0g-w_63g共计132个__m256i类型临时变量。
S6:手动对每个分组进行第一步消息扩展,并对0-15组数据进行装载,将其放入上一步所定义的对应的_m256i类型临时变量中。
将messageBlock_1的前4字节数据放入w0数组的第0位;
将messageBlock_1的第4至第7字节数据放入w1数组的第0位;
将messageBlock_1的第8至第11字节数据放入w2数组的第0位;
将messageBlock_1的第12至第15字节数据放入w3数组的第0位;
···
将messageBlock_1的第60至第64字节数据放入w15数组的第0位;
将messageBlock_2的前4字节数据放入w0数组的第1位;
···
将messageBlock_2的第60至第64字节数据放入w15数组的第1位;
···
将messageBlock_8的第56至第59字节数据放入w14数组的第7位;
将messageBlock_8的第60至第64字节数据放入w15数组的第7位;
将w0数组强制转换为__m256i类型并装载至w0g寄存器中;
将w1数组强制转换为__m256i类型并装载至w1g寄存器中;
···
将w15数组强制转换为__m256i类型并装载至w15g寄存器中。
S7:利用_mm256_xor_si256指令并行进行第二、三步的消息扩展,同时完成8条数据的消息扩展。
将w0g与w7g相异或的值与w13g循环左移15位的值相异或,之后放入P1函数中进行运算,所得的值与w3g循环左移7位的值进行异或,再将得数与w10g进行异或,最终得出w16g的值;
将w1g与w8g相异或的值与w14g循环左移15位的值相异或,之后放入P1函数中进行运算,所得的值与w4g循环左移7位的值进行异或,再将得数与w11g进行异或,最终得出w17g的值;
···
将w51g与w58g相异或的值与w64g循环左移15位的值相异或,之后放入P1函数中进行运算,所得的值与w54g循环左移7位的值进行异或,再将得数与w61g进行异或,最终得出w64g的值;
将w0g与w4g相异或,得出w_0g的值;
将w1g与w5g相异或,得出w_1g的值;
···
将w62g与w66g相异或,得出w_62g的值;
将w63g与w67g相异或,得出w_63g的值;
S8:定义saveA、saveB、saveC、saveD、saveE、saveF、saveG、saveH为无符号32位整型的临时数组,每个可容纳8个元素,同时对其进行强制字节对齐操作,用于存放A、B、C、D、E、F、G、H字寄存器。
S9:定义8个__m256i类型临时变量DA,DB,DC,DD,DE,DF,DG,DH,用于进行字寄存器的并行运算,定义_m256i类型的SS1、SS2、TT2临时变量,用于后续的轮函数运算。
S10:将8条数据的hash值放入临时数组并进行寄存器的装载。
将数组hash_1至hash_8的第0个元素(共8个)按顺序放入数组saveA中;
将数组hash_1至hash_8的第1个元素(共8个)按顺序放入数组saveB中;
将数组hash_1至hash_8的第2个元素(共8个)按顺序放入数组saveC中;
将数组hash_1至hash_8的第3个元素(共8个)按顺序放入数组saveD中;
将数组hash_1至hash_8的第4个元素(共8个)按顺序放入数组saveE中;
将数组hash_1至hash_8的第5个元素(共8个)按顺序放入数组saveF中;
将数组hash_1至hash_8的第6个元素(共8个)按顺序放入数组saveG中;
将数组hash_1至hash_8的第7个元素(共8个)按顺序放入数组saveH中;
将数组saveA、saveB、saveC、saveD、saveE、saveF、saveG、saveH强制转换位__m256i类型并分别装载入DA、DB、DC、DD、DE、DF、DG、DH寄存器中。
S11:对轮函数运算所需的TT值进行预处理,减少程序运行中不必要的计算。其内容为:
const unsigned int TT[64]={0x79cc4519,0xf3988a32,0xe7311465,0xce6228cb,0x9cc45197,0x3988a32f,0x7311465e,0xe6228cbc,0xcc451979,0x988a32f3,0x311465e7,0x6228cbce,0xc451979c,0x88a32f39,0x11465e73,0x228cbce6,0x9d8a7a87,0x3b14f50f,0x7629ea1e,0xec53d43c,0xd8a7a879,0xb14f50f3,0x629ea1e7,0xc53d43ce,0x8a7a879d,0x14f50f3b,0x29ea1e76,0x53d43cec,0xa7a879d8,0x4f50f3b1,0x9ea1e762,0x3d43cec5,0x7a879d8a,0xf50f3b14,0xea1e7629,0xd43cec53,0xa879d8a7,0x50f3b14f,0xa1e7629e,0x43cec53d,0x879d8a7a,0xf3b14f5,0x1e7629ea,0x3cec53d4,0x79d8a7a8,0xf3b14f50,0xe7629ea1,0xcec53d43,0x9d8a7a87,0x3b14f50f,0x7629ea1e,0xec53d43c,0xd8a7a879,0xb14f50f3,0x629ea1e7,0xc53d43ce,0x8a7a879d,0x14f50f3b,0x29ea1e76,0x53d43cec,0xa7a879d8,0x4f50f3b1,0x9ea1e762,0x3d43cec5};
S12:对FF及GG函数进行拆分,分为前16轮及后48轮两组,避免运算中的if判断。
S12.1:FF函数拆分为FFJ1与FFJ2
将寄存器X的值与寄存器Y的值相异或,再与寄存器Z的值相异或,得出FFJ1的值;
将寄存器X与寄存器Y相与的值,和寄存器X与寄存器Z相与的值,将寄存器Y与寄存器Z相与的值,进行或操作,得出FFJ2的值。
S12.2:GG函数拆分为GGJ1与GGJ2
函数GGJ1,参数为X、Y、Z,返回值为__m256i;
将寄存器X的值与寄存器Y的值相异或,再与寄存器Z的值相异或,得出GGJ1的值;
函数GGJ2,参数为X、Y、Z,返回值为__m256i;
将寄存器X与寄存器Y想与的值,和寄存器X按位取反与寄存器Z相与的值,进行或操作,得出GGJ2的值。
S13:对8个字寄存器执行轮函数运算,分前16轮及后48轮执行,其运算中的参数皆为__m256i类型,使用_mm256_xor_si256、_mm256_add_epi32及_mm256_set1_epi32等SIMD操作代替普通的异或、加法等运算。
S13.1:前16轮运算为
轮函数1(参数为A,B,C,D,E,F,G,H,i,w,w1,moveLeftTemp)返回值为__m256i;
moveLeftTemp的值为寄存器A循环左移12位;
DSS1的值为tempMoveLeft加寄存器E加SM3_Tj的第[i]个元素的值,循环左移7位;
DDS2的值为DSS1的值异或tempMoveLeft的值;
D的值为寄存器A、B、C放入FFJ1函数运算后与寄存器D、DSS2、w1相加;
DTT2的值为寄存器E、F、G放入GJJ1函数运算后与寄存器H、DSS1、w相加;
B的值为寄存器B循环左移9位;
F的值为寄存器F循环左移19位;
H的值为TT2放入函数P0计算得出的值。
S13.2:后48轮运算为
轮函数2参数为(A,B,C,D,E,F,G,H,i,w,w1,moveLeftTemp)返回值为__m256i;
moveLeftTemp的值为寄存器A循环左移12位;
DSS1的值为moveLeftTemp加寄存器E加SM3_Tj的第[i]个元素的值,并循环左移7位;
DSS2的值为DSS1异或moveLeftTemp;
D的值为寄存器A、B、C放入FFJ2函数运算后与寄存器D、DSS2、w1相加;
DTT2的值为寄存器E、F、G放入GJJ2函数运算后与寄存器H、DSS1、w1相加;
B的值为寄存器B循环左移9位;
F的值为寄存器F循环左移19位;
H的值为DTT2放入P0函数计算得出的值。
S13.3:其中P0为:
函数P0,参数为X,返回值为__m256i;
P0的值为寄存器X与寄存器X循环左移9位后的值相异或,再与寄存器X循环左移17位后的值相异或;
P0(X)_mm256_xor_si256(_mm256_xor_si256(X,MoveLeft(X,9)),MoveLeft(X,17))。
S13.4:其中P1为:
函数P1,参数为X,返回值为__m256i;
P1的值为寄存器X与寄存器X循环左移15位后的值相异或,再与寄存器X循环左移23位后的值相异或。
P1(X)_mm256_xor_si256(_mm256_xor_si256(X,MoveLeft(X,15)),MoveLeft(X,23))
S14:将运算后的字寄存器DA、DB、DC、DD、DE、DF、DG和DH进行组装,放入S8中所定义的8个数组中。
S15:将存有运算结果的8个数组与8条数据的hash值进行异或,计算出本轮运算的结果。
数组hash_1至hash_8的第0个元素分别于saveA的第0至第7元素异或;
数组hash_1至hash_8的第1个元素分别于saveB的第0至第7元素异或;
数组hash_1至hash_8的第2个元素分别于saveC的第0至第7元素异或;
数组hash_1至hash_8的第3个元素分别于saveD的第0至第7元素异或;
数组hash_1至hash_8的第4个元素分别于saveE的第0至第7元素异或;
数组hash_1至hash_8的第5个元素分别于saveF的第0至第7元素异或;
数组hash_1至hash_8的第6个元素分别于saveG的第0至第7元素异或;
数组hash_1至hash_8的第7个元素分别于saveH的第0至第7元素异或。
S16:在完成若干轮6…16步的CF函数运算后,对最后的分组进行判断,其数据长度如果小于等于55字节,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算。如果数据长度大于55字节,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算。
S17:运算完成后返回并输出运算结果。
在各条数据不等长时,包括以下过程:
(1)输入数据,并获取最长数据的长度maxLength。
(2)初始化每条数据的hash值。
(3)对数据进行分组,每组64字节,共maxLength/64组。
(4)将数据放入消息分块。
(5)判断每个消息分块是否被填满,如果未被填满且结果集中没有此条数据的hash值,则对齐执行单路CF函数,运算完成后将hash值放入结果集中,如果分组被填满,则执行并行CF函数,结束后执行下一轮运算。
实施例2:
本公开实施例2提供了一种基于SIMD的SM3并行数据加密运算系统,包括:
数据获取模块,被配置为:获取多条待处理数据;
数据分组模块,被配置为:如果各条待处理数据等长,对待处理的数据进行分组,每组的长度相同,分组执行CF函数运算;
CF函数运算模块,被配置为:在完成多轮CF函数运算后,对最后的分组进行判断,如果数据长度如果小于或等于第一阈值,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算;如果数据长度大于第一阈值,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算,直至得到最终的运算结果。
所述系统的工作方法与实施例1提供的基于SIMD的SM3并行数据加密运算方法相同,这里不再赘述。
实施例3:
本公开实施例3提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如本公开实施例1所述的基于SIMD的SM3并行数据加密运算方法中的步骤。
实施例4:
本公开实施例4提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本公开实施例1所述的基于SIMD的SM3并行数据加密运算方法中的步骤。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (8)

1.一种基于SIMD的SM3并行数据加密运算方法,其特征在于,包括以下过程:
获取多条待处理数据;
如果各条待处理数据等长,对待处理的数据进行分组,每组的长度相同,分组执行CF函数运算;
在完成多轮CF函数运算后,对最后的分组进行判断,如果数据长度如果小于或等于第一阈值,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算;如果数据长度大于第一阈值,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算,直至得到最终的运算结果;
当待处理数据为八条时,CF函数运算,至少包括:
定义共计十六个无符号32位整型数组,定义132个__m256i类型临时变量;
对每个分组进行第一步消息扩展,并对在前的多组数据进行装载,将其放入对应的_m256i类型临时变量中;
利用_mm256_xor_si256指令并行进行第二步和第三步的消息扩展,同时完成八条数据的消息扩展;
定义八个可容纳八个元素的无符号32位整型的临时数组,用于存放A、B、C、D、E、F、G和H字寄存器;
定义八个__m256i类型临时变量DA、DB、DC、DD、DE、DF、DG和DH,用于进行字寄存器的并行运算;
将八条数据的hash值放入临时数组并进行寄存器的装载;
对八个字寄存器执行轮函数运算;
将轮函数运算后的字寄存器DA、DB、DC、DD、DE、DF、DG和DH进行组装,分别放入定义的八个符号32位整型的临时数组中;
将存有运算结果的八个临时数组与八条数据的哈希值进行异或,得到本轮运算的结果。
2.如权利要求1所述的基于SIMD的SM3并行数据加密运算方法,其特征在于,包括以下过程:
获取多条待处理数据;
如果各条待处理数据不等长,获取最长数据的长度;
初始化每条数据的哈希值;
对数据进行分组,将分组后的数据放入消息分块;
判断每个消息分块是否被填满,如果未被填满且结果集中没有此条数据的哈希值,则执行单路CF函数运算,运算完成后将哈希值放入结果集中;
如果消息分块被填满,则执行并行CF函数运算,结束后执行下一轮运算。
3.如权利要求1所述的基于SIMD的SM3并行数据加密运算方法,其特征在于,
进行寄存器的装载后,先对轮函数运算所需的TT值进行预处理,再对FF函数及GG函数进行拆分,分为前16轮及后48轮两组。
4.如权利要求3所述的基于SIMD的SM3并行数据加密运算方法,其特征在于,
对八个字寄存器执行轮函数运算,分前16轮及后48轮执行,运算中的参数皆为__m256i类型,使用SIMD操作代替异或或者加法操作。
5.如权利要求1所述的基于SIMD的SM3并行数据加密运算方法,其特征在于,
第一步消息扩展产生16组共128条数据,再使用132个_m256i向量进行消息扩展第二步和第三步的运算,同时将八组数据扩展为1056条。
6.一种基于SIMD的SM3并行数据加密运算系统,其特征在于,包括:
数据获取模块,被配置为:获取多条待处理数据;
数据分组模块,被配置为:如果各条待处理数据等长,对待处理的数据进行分组,每组的长度相同,分组执行CF函数运算;
CF函数运算模块,被配置为:在完成多轮CF函数运算后,对最后的分组进行判断,如果数据长度如果小于或等于第一阈值,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算;如果数据长度大于第一阈值,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算,直至得到最终的运算结果;
当待处理数据为八条时,CF函数运算,至少包括:
定义共计十六个无符号32位整型数组,定义132个__m256i类型临时变量;
对每个分组进行第一步消息扩展,并对在前的多组数据进行装载,将其放入对应的_m256i类型临时变量中;
利用_mm256_xor_si256指令并行进行第二步和第三步的消息扩展,同时完成八条数据的消息扩展;
定义八个可容纳八个元素的无符号32位整型的临时数组,用于存放A、B、C、D、E、F、G和H字寄存器;
定义八个__m256i类型临时变量DA、DB、DC、DD、DE、DF、DG和DH,用于进行字寄存器的并行运算;
将八条数据的hash值放入临时数组并进行寄存器的装载;
对八个字寄存器执行轮函数运算;
将轮函数运算后的字寄存器DA、DB、DC、DD、DE、DF、DG和DH进行组装,分别放入定义的八个符号32位整型的临时数组中;
将存有运算结果的八个临时数组与八条数据的哈希值进行异或,得到本轮运算的结果。
7.一种计算机可读存储介质,其上存储有程序,其特征在于,该程序被处理器执行时实现如权利要求1-5任一项所述的基于SIMD的SM3并行数据加密运算方法中的步骤。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5任一项所述的基于SIMD的SM3并行数据加密运算方法中的步骤。
CN202111074292.XA 2021-09-14 2021-09-14 一种基于simd的sm3并行数据加密运算方法及系统 Active CN113794552B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111074292.XA CN113794552B (zh) 2021-09-14 2021-09-14 一种基于simd的sm3并行数据加密运算方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111074292.XA CN113794552B (zh) 2021-09-14 2021-09-14 一种基于simd的sm3并行数据加密运算方法及系统

Publications (2)

Publication Number Publication Date
CN113794552A CN113794552A (zh) 2021-12-14
CN113794552B true CN113794552B (zh) 2023-07-07

Family

ID=78880174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111074292.XA Active CN113794552B (zh) 2021-09-14 2021-09-14 一种基于simd的sm3并行数据加密运算方法及系统

Country Status (1)

Country Link
CN (1) CN113794552B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114465820B (zh) * 2022-03-31 2024-07-30 京东方科技集团股份有限公司 数据加密方法、数据加密设备、电子设备、程序及介质
CN115174038B (zh) * 2022-07-19 2025-06-24 山东省计算中心(国家超级计算济南中心) 基于simd的sm2加密及解密快速实现方法
CN116305192B (zh) * 2023-02-07 2023-11-14 成都海泰方圆科技有限公司 数据文件的处理方法、装置、电子设备及存储介质
CN116186747A (zh) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 自适应哈希加密方法、非易失性可读存储介质及电子设备
CN117896067B (zh) * 2024-03-13 2024-07-16 杭州金智塔科技有限公司 适用于国密sm2算法的并行模约减方法及装置
CN118074889B (zh) * 2024-03-14 2024-08-13 杭州金智塔科技有限公司 基于国密sm3算法和mac算法的数据处理方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013147877A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Method and apparatus to process sha-2 secure hashing algorithm
CN103930869A (zh) * 2011-11-17 2014-07-16 Arm有限公司 密码算法中用于支持散列值生成的simd指令
CN106452769A (zh) * 2016-09-13 2017-02-22 杭州华为数字技术有限公司 一种数据处理方法、数据处理装置以及处理器
CN106603222A (zh) * 2016-09-27 2017-04-26 江冠成 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法
CN107094369A (zh) * 2014-09-26 2017-08-25 英特尔公司 用于提供simd sm3密码散列函数的指令和逻辑
EP3338397A1 (en) * 2015-08-19 2018-06-27 Intel Corporation Instructions and logic to provide simd sm3 cryptographic hashing functionality
CN109547192A (zh) * 2018-11-08 2019-03-29 北京大学 Sm3密码杂凑算法的并行化优化方法
WO2019212781A1 (en) * 2018-05-01 2019-11-07 President And Fellows Of Harvard College Rapid and robust predicate evaluation
CN111913749A (zh) * 2020-08-07 2020-11-10 山东大学 基于流水线的sm3算法fpga实现方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856547B2 (en) * 2012-06-07 2014-10-07 Intel Corporation Speed up secure hash algorithm (SHA) using single instruction multiple data (SIMD) architectures
US10503510B2 (en) * 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103930869A (zh) * 2011-11-17 2014-07-16 Arm有限公司 密码算法中用于支持散列值生成的simd指令
WO2013147877A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Method and apparatus to process sha-2 secure hashing algorithm
CN107094369A (zh) * 2014-09-26 2017-08-25 英特尔公司 用于提供simd sm3密码散列函数的指令和逻辑
EP3338397A1 (en) * 2015-08-19 2018-06-27 Intel Corporation Instructions and logic to provide simd sm3 cryptographic hashing functionality
CN106452769A (zh) * 2016-09-13 2017-02-22 杭州华为数字技术有限公司 一种数据处理方法、数据处理装置以及处理器
CN106603222A (zh) * 2016-09-27 2017-04-26 江冠成 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法
WO2019212781A1 (en) * 2018-05-01 2019-11-07 President And Fellows Of Harvard College Rapid and robust predicate evaluation
CN109547192A (zh) * 2018-11-08 2019-03-29 北京大学 Sm3密码杂凑算法的并行化优化方法
CN111913749A (zh) * 2020-08-07 2020-11-10 山东大学 基于流水线的sm3算法fpga实现方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Gilseok HONG."Efficient parallel join processing exploiting SIMD in multi-thread environments".《IEICE TRANSACTIONS on Information and Systems》.2018,全文. *
SM3算法在导弹数据数字化登记系统中的应用;丛林虎;方轶;;兵工自动化(05);全文 *

Also Published As

Publication number Publication date
CN113794552A (zh) 2021-12-14

Similar Documents

Publication Publication Date Title
CN113794552B (zh) 一种基于simd的sm3并行数据加密运算方法及系统
Zhang et al. Chaotic keyed hash function based on feedforward–feedback nonlinear digital filter
CN102138170B (zh) 数据转换器、数据转换方法
US7171604B2 (en) Method and apparatus for calculating cyclic redundancy check (CRC) on data using a programmable CRC engine
Rohde et al. Fast hash-based signatures on constrained devices
CN112152784A (zh) 用于基于散列的签名算法的并行处理技术
CN106330424A (zh) 基于sm3算法的密码模块的防攻击方法及装置
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
Gligoroski et al. Cryptographic hash function Edon-R′
CN115174038B (zh) 基于simd的sm2加密及解密快速实现方法
CN114095149B (zh) 信息加密方法、装置、设备及存储介质
JPH03116184A (ja) マイクロ回路カードの圧縮と置換によるデータの処理方法
CN115525341A (zh) 一种md5信息摘要算法的加速方法及指令集处理器
CN112564890B (zh) 一种加速sm4算法的方法、装置、处理器及电子设备
US7103180B1 (en) Method of implementing the data encryption standard with reduced computation
CN117272337A (zh) 面向simd指令的sm4细粒度切片优化方法及系统
CN115225254A (zh) 一种基于比特切片的加密方法及系统
Guo et al. Differential power analysis on dynamic password token based on SM3 algorithm, and countermeasures
Ibraheem et al. Anti-collision enhancement of a SHA-1 digest using AES encryption by LABVIEW
Faugère et al. Software toolkit for hfe-based multivariate schemes
CN115658148A (zh) 一种sm4分组密码算法的加速方法及指令集处理器
CN113741972A (zh) 一种sm3算法的并行处理方法及电子设备
Abubaker et al. Dafa-a lightweight des augmented finite automaton cryptosystem
CN112861154A (zh) 面向数据流架构的sha算法执行方法、存储介质、电子装置
US10628609B2 (en) Method and apparatus for performing signature verification by offloading values to a server

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20221230

Address after: 250014 No. 19, ASTRI Road, Lixia District, Shandong, Ji'nan

Applicant after: SHANDONG COMPUTER SCIENCE CENTER(NATIONAL SUPERCOMPUTER CENTER IN JINAN)

Applicant after: Qilu University of Technology

Address before: 250014 No. 19, ASTRI Road, Lixia District, Shandong, Ji'nan

Applicant before: SHANDONG COMPUTER SCIENCE CENTER(NATIONAL SUPERCOMPUTER CENTER IN JINAN)

GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 250014 No. 19, ASTRI Road, Lixia District, Shandong, Ji'nan

Patentee after: SHANDONG COMPUTER SCIENCE CENTER(NATIONAL SUPERCOMPUTER CENTER IN JINAN)

Country or region after: China

Patentee after: Qilu University of Technology (Shandong Academy of Sciences)

Address before: 250014 No. 19, ASTRI Road, Lixia District, Shandong, Ji'nan

Patentee before: SHANDONG COMPUTER SCIENCE CENTER(NATIONAL SUPERCOMPUTER CENTER IN JINAN)

Country or region before: China

Patentee before: Qilu University of Technology