CN110086602A - 基于gpu的sm3密码散列算法的快速实现方法 - Google Patents
基于gpu的sm3密码散列算法的快速实现方法 Download PDFInfo
- Publication number
- CN110086602A CN110086602A CN201910302522.XA CN201910302522A CN110086602A CN 110086602 A CN110086602 A CN 110086602A CN 201910302522 A CN201910302522 A CN 201910302522A CN 110086602 A CN110086602 A CN 110086602A
- Authority
- CN
- China
- Prior art keywords
- message
- gpu
- extension
- cryptographic hash
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Landscapes
- Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种基于GPU的SM3密码散列算法的快速实现方法,通过异步方式将待处理消息从内存复制到作为全局存储器的GPU的显存,当GPU通过包含填充扩展和压缩函数循环展开的SM3快速实现方法进行哈希值计算时,CPU同时传输下一批次的消息;GPU将计算结果输出至显存并由CPU读取显存中的结果,传输消息摘要值。本发明实施简单,性能稳定,SM3快速实现性能达到11.4亿Hash/s,极大提高了SM3的计算效率。
Description
技术领域
本发明涉及的是一种信息安全领域的技术,具体是一种基于OpenCL和GPU的SM3密码散列算法的快速实现方法。
背景技术
摘要算法被广泛应用在数字签名、消息认证、数据完整性和口令保护等重要领域。其中SM3算法属于运算分支少、算术密集型、高带宽需求型计算任务,使用OpenCL语言,利用GPU通用计算的性能优势能实现SM3快速计算服务。现有多种通过硬件实现SM3散列算法的技术,但其无法实现针对SM3的高效计算方案。
发明内容
本发明针对现有技术在CPU进行消息传输时GPU需要等待CPU提供下一批消息值,而当GPU并行计算当前批消息哈希值时,CPU处于闲置状态。因此GPU的利用率不高的问题,提出一种基于GPU的SM3密码散列算法的快速实现方法,实施简单,性能稳定,SM3快速实现性能达到11.4亿Hash/s,极大提高了SM3的计算效率。
本发明是通过以下技术方案实现的:
本发明涉及一种基于GPU的SM3密码散列算法的快速实现方法,通过异步方式将待处理消息从内存复制到作为全局存储器的GPU的显存,当GPU通过包含填充扩展和压缩函数循环展开的SM3快速实现方法进行哈希值计算时,CPU同时传输下一批次的消息;GPU将计算结果输出至显存并由CPU读取显存中的结果,传输消息摘要值。
所述的当前批SM3哈希值,采用压缩函数循环展开、指令优化、寄存器复用的方法计算得到,具体为:
1)64步压缩函数循环展开:其中1~16步展开为,C0(A,B,C,D,E,F,G,H,w[0~15],w1[0~15],0~15,0x79cc4519);17~64步展开为C1(A,B,C,D,E,F,G,H,w[16~63],w1[16~63],16~63,0x7a879d8a)。其中C0,C1分别为1~16步和17~64步的压缩函数,A~H为存储摘要值的8个寄存器,w[0]~w[68],w1[0]~w1[64]为消息扩展得到的132个字。
2)指令优化:使用OpenCL内置的bitselect和rotate函数对压缩函数计算中逻辑运算和循环移位运算进行优化;
3)寄存器复用:每轮16步的压缩函数仅和该轮的16个寄存器取值有关。64步消息扩展阶段采用16个字的寄存器空间复用64个字。
本发明涉及一种实现上述方法的系统,包括:用于GPU进行本批次哈希值计算和CPU产生下一批消息操作异步并行化的异步并行模块、用于并行计算当前批SM3哈希值的SM3运算模块和用于从显存中读取当前批消息哈希值的数据读取模块,其中:CPU用于消息摘要值传输和记录,GPU用于并行计算当前批消息哈希值并将结果输出至显存。
所述的SM3运算模块包括:用于将待哈希计算的消息分组进行扩展的消息扩展子单元和用于对扩展后的消息进行压缩处理并得到消息哈希值的消息压缩子单元。
所述的扩展,其宽度为132个字。
所述的数据读取模块,SM3摘要值采用大端模式表示,以32bit无符号数输出并存储于缓存。
技术效果
与现有技术相比,本发明使用消息分批异步传输方法,减少了传输开销:使用GPU-Z工具监控运行过程中的程序,GPU占用率始终在99%以上,即使用异步并行方法可以显著降低GPU空闲时间,提高了GPU占用率;将压缩函数循环展开,并减少分支操作,算法性能得到了提升。本发明使用的寄存器复用技术可将矢量寄存器(VGPRs)占用量都从超过245降至57以下,同时运行的wavefront深度可提高到4,整体算法性能提高超过了1倍。使用逻辑运算指令bitselect和循环移位指令rotate也可令性能提升5%。本发明在AMD R9 290 GPU上性能峰值可达11.4亿次Hash/s,SM3快速实现性能约为FPGA环境下的3.9倍。
附图说明
图1为本发明方法流程图;
图2为本发明SM3的CPU和GPU异步时序图;
图3为实施例SM3快速实现算法单线程流程图。
具体实施方式
如图1所示,本实施例包括用于GPU进行本批次哈希值计算和CPU产生下一批消息操作异步并行化的异步并行模块、用于并行计算当前批SM3哈希值的SM3运算模块和用于从显存中读取当前批消息哈希值的数据读取模块,其中:CPU用于消息摘要值传输和记录,GPU用于并行计算当前批消息哈希值并将结果输出至显存。
如图3所示,上述系统通过以下方式进行SM3密码散列算法的快速实现:
0)OpenCL平台初始化:通过OpenCL应用程序编程接口(API)选择OpenCL平台和设备、创建设备上下文、创建kernel和初始化存储空间。
1)异步并行消息传输:调用OpenCL API将消息从内存复制到作为全局存储器的GPU的显存;
如图2所示,所述的OpenCL API通过在调用缓存线清除(clfinish)函数前调用缓存线清除(clflush)函数,当GPU进行哈希值计算时,CPU同时传输下一批次的消息,SM3摘要算法能在同样时间内进行更多批次的哈希计算,可以提高GPU设备的利用率。
2)摘要计算:SM3计算模块通过SM3快速实现方法在GPU设备端创建多个并行线程,每个线程计算多个消息摘要值,并将结果输出至显存;
3)结果输出:CPU读取显存中的结果,传输消息摘要值。
如图3所示,所述的SM3快速实现方法具体为:
a)初始化:首先对总线程数,每线程处理的输入消息数,移位寄存器初值H0~H7,以及常量值等进行初始化。
b)填充扩展:将消息进行填充扩展,得到132个消息扩展字:W0,…,W67,W'0,…,W'63。其中W0,W1,…,W15由消息划分可得,W16,…,W67通过公式1扩展得到:其中:Wj为扩展消息得到的第j个字,P1为置换函数;当Wj(15<j<68)范围,每个字仅仅和它的前16个字相关。所以在实际处理过程中,消息扩展阶段的68个字可以仅仅占用16个字的寄存器空间,该过程可为: 其中:Wj为扩展消息得到的第j个字,P1为置换函数。W'0,…,W'63的扩展公式为:其取值仅与Wj和Wj+4有关。
同样地,采用16个字的寄存器空间复用64个字。实际计算时,仅需比W滞后4个字计算即可:
c)压缩函数循环展开:SM3算法中的消息扩展函数会运行132次,压缩函数会执行64次,压缩函数需要进行常量和布尔函数替代,需要大量分支处理操作,本实施例中使用预处理宏命令减少分支和循环展开提高执行效率,具体为:
C0(A,B,C,D,E,F,G,H,w[0~15],w1[0~15],0~15,0x79cc4519);//SM3round 0~15
C1(A,B,C,D,E,F,G,H,w[16~63],w1[16~63],16~63,0x7a879d8a);//SM3round16~63
根据常量的不同,将压缩函数循环展开为使用压缩函数C0、C1表示的两种形式,通过预处理宏命令展开循环的同时,采用交换A~H寄存器值,减少赋值操作以进一步提高性能。
所述的SM3快速实现方法涉及的逻辑运算以及循环移位操作,通过以下OpenCL内置函数进行优化:
i)使用bitselect函数,将逻辑运算操作:GG1(x,y,z)=(x&y)|(~x&z)替换为GG1(x,y,z)=bitselect(z,y,x);
ii)使用rotate函数,将循环移位操作:ROTL(x,n)((x<<n)|(x>>(32-n)))替换为ROTL(x,n)rotate(x,n)。
通过使用bitselect函数将GG1函数的指令条数从4条缩减到1条,指令条数减少了75%;通过使用内置rotate函数,可以将指令条数从3条缩减到1条,大大提高了计算效率。
d)结果存储:将本批次哈希值结果写入显存,若本批次消息摘要值计算完成,退出循环,否则继续载入本批次的消息计算摘要。
综上所述,本实施例在异步并行中,使用了消息分批异步传输方法,减少了传输开销:使用GPU-Z工具监控运行过程中的程序,GPU占用率始终在99%以上,即使用异步并行方法可以显著降低GPU空闲时间,提高了GPU占用率;将压缩函数循环展开,并减少分支操作,算法性能得到了提升。
使用CodeXL对OpenCL kernel的寄存器占用分析可知,使用寄存器复用可将矢量寄存器(VGPRs)占用量都从超过245降至57以下,同时运行的wavefront深度可提高到4,整体算法性能提高超过了1倍。而针对SM3算法进行的指令优化也可提升性能5%。
本方法在AMD R9 290 GPU上性能峰值可达11.4亿次Hash/s,SM3快速实现性能约为FPGA环境下的3.9倍。
所述的具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由所述的具体实施所限,在其范围内的各个实现方案均受本发明之约束。
Claims (8)
1.一种基于GPU的SM3密码散列算法的快速实现方法,其特征在于,通过异步方式将待处理消息从内存复制到作为全局存储器的GPU的显存,当GPU通过包含填充扩展和压缩函数循环展开的SM3快速实现方法进行哈希值计算时,CPU同时传输下一批次的消息;GPU将计算结果输出至显存并由CPU读取显存中的结果,传输消息摘要值;所述的当前批SM3哈希值,采用压缩函数循环展开、指令优化、寄存器复用的方法计算得到。
2.根据权利要求1所述的方法,其特征是,所述的压缩函数循环展开是指:64步压缩函数循环展开:其中1~16步展开为,C0(A,B,C,D,E,F,G,H,w[0~15],w1[0~15],0~15,0x79cc4519);17~64步展开为C1(A,B,C,D,E,F,G,H,w[16~63],w1[16~63],16~63,0x7a879d8a)。其中C0,C1分别为1~16步和17~64步的压缩函数,A~H为存储摘要值的8个寄存器,w[0]~w[68],w1[0]~w1[64]为消息扩展得到的132个字。
3.根据权利要求1所述的方法,其特征是,所述的指令优化是指:使用OpenCL内置的bitselect和rotate函数对压缩函数计算中逻辑运算和循环移位运算进行优化。
4.根据权利要求1所述的方法,其特征是,所述的寄存器复用是指:每轮16步的压缩函数仅和该轮的16个寄存器取值有关。64步消息扩展阶段采用16个字的寄存器空间复用64个字。
5.根据权利要求1所述的方法,其特征是,所述的SM3快速实现方法具体包括:
a)初始化:首先对总线程数,每线程处理的输入消息数,移位寄存器初值H0~H7,以及常量值等进行初始化;
b)填充扩展:将消息进行填充扩展,得到132个消息扩展字:W0,…,W67,W'0,…,W'63。其中W0,W1,…,W15由消息划分可得,W16,…,W67通过公式1扩展得到:其中:Wj为扩展消息得到的第j个字,P1为置换函数;当Wj(15<j<68)范围,每个字仅仅和它的前16个字相关,即 其中:Wj为扩展消息得到的第j个字,P1为置换函数,W'0,…,W'63的扩展公式为:其取值仅与Wj和Wj+4有关;
同样采用16个字的寄存器空间复用64个字,即:
c)压缩函数循环展开:使用预处理宏命令减少分支和循环展开提高执行效率,具体为:
C0(A,B,C,D,E,F,G,H,w[0~15],w1[0~15],0~15,0x79cc4519);//SM3round0~15
C1(A,B,C,D,E,F,G,H,w[16~63],w1[16~63],16~63,0x7a879d8a);//SM3round16~63
根据常量的不同,将压缩函数循环展开为使用压缩函数C0、C1表示的两种形式,通过预处理宏命令展开循环的同时,采用交换A~H寄存器值,减少赋值操作以进一步提高性能。
6.根据权利要求3所述的方法,其特征是,所述的逻辑运算,使用bitselect函数,将逻辑运算操作:GG1(x,y,z)=(x&y)|(~x&z)替换为GG1(x,y,z)=bitselect(z,y,x)。
7.根据权利要求3所述的方法,其特征是,所述的循环移位操作,使用rotate函数,将循环移位操作:ROTL(x,n)((x<<n)|(x>>(32-n)))替换为ROTL(x,n)rotate(x,n)。
8.一种实现上述任一权利要求所述方法的系统,其特征在于,包括:用于GPU进行本批次哈希值计算和CPU产生下一批消息操作异步并行化的异步并行模块、用于并行计算当前批SM3哈希值的SM3运算模块和用于从显存中读取当前批消息哈希值的数据读取模块,其中:CPU用于消息摘要值传输和记录,GPU用于并行计算当前批消息哈希值并将结果输出至显存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910302522.XA CN110086602B (zh) | 2019-04-16 | 2019-04-16 | 基于gpu的sm3密码散列算法的快速实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910302522.XA CN110086602B (zh) | 2019-04-16 | 2019-04-16 | 基于gpu的sm3密码散列算法的快速实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110086602A true CN110086602A (zh) | 2019-08-02 |
CN110086602B CN110086602B (zh) | 2022-02-11 |
Family
ID=67415214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910302522.XA Active CN110086602B (zh) | 2019-04-16 | 2019-04-16 | 基于gpu的sm3密码散列算法的快速实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110086602B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913749A (zh) * | 2020-08-07 | 2020-11-10 | 山东大学 | 基于流水线的sm3算法fpga实现方法及系统 |
CN112202546A (zh) * | 2020-09-29 | 2021-01-08 | 山东华翼微电子技术股份有限公司 | Sm3密码杂凑算法消息扩展串行优化系统与方法 |
CN113221193A (zh) * | 2021-06-02 | 2021-08-06 | 上海交通大学 | 基于gpu的sm2数字签名与验签快速实现方法及系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN203618006U (zh) * | 2013-12-24 | 2014-05-28 | 张巍 | 一种基于时间同步的动态电子口令卡 |
US20160092688A1 (en) * | 2014-09-26 | 2016-03-31 | Gilbert M. Wolrich | Instructions and logic to provide simd sm3 cryptographic hashing functionality |
CN106130719A (zh) * | 2016-07-21 | 2016-11-16 | 中国科学院信息工程研究所 | 一种抵抗内存泄漏攻击的密码算法多核实现方法及装置 |
CN106446153A (zh) * | 2016-09-21 | 2017-02-22 | 广州特道信息科技有限公司 | 一种分布式newSQL数据库系统及方法 |
CN106603222A (zh) * | 2016-09-27 | 2017-04-26 | 江冠成 | 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法 |
US20170141914A1 (en) * | 2015-11-12 | 2017-05-18 | Intel Corporation | Hybrid sm3 and sha acceleration processors |
CN107612681A (zh) * | 2017-09-25 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于sm3算法的数据处理方法、装置及系统 |
CN108920714A (zh) * | 2018-07-26 | 2018-11-30 | 上海交通大学 | 一种分布式环境下隐私保护的关联规则挖掘方法和系统 |
CN109032018A (zh) * | 2018-08-02 | 2018-12-18 | 清华大学 | 基于嵌入式gpu的无人机通用信号处理装置 |
CN109547192A (zh) * | 2018-11-08 | 2019-03-29 | 北京大学 | Sm3密码杂凑算法的并行化优化方法 |
-
2019
- 2019-04-16 CN CN201910302522.XA patent/CN110086602B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN203618006U (zh) * | 2013-12-24 | 2014-05-28 | 张巍 | 一种基于时间同步的动态电子口令卡 |
US20160092688A1 (en) * | 2014-09-26 | 2016-03-31 | Gilbert M. Wolrich | Instructions and logic to provide simd sm3 cryptographic hashing functionality |
CN107094369A (zh) * | 2014-09-26 | 2017-08-25 | 英特尔公司 | 用于提供simd sm3密码散列函数的指令和逻辑 |
US20170141914A1 (en) * | 2015-11-12 | 2017-05-18 | Intel Corporation | Hybrid sm3 and sha acceleration processors |
CN106130719A (zh) * | 2016-07-21 | 2016-11-16 | 中国科学院信息工程研究所 | 一种抵抗内存泄漏攻击的密码算法多核实现方法及装置 |
CN106446153A (zh) * | 2016-09-21 | 2017-02-22 | 广州特道信息科技有限公司 | 一种分布式newSQL数据库系统及方法 |
CN106603222A (zh) * | 2016-09-27 | 2017-04-26 | 江冠成 | 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法 |
CN107612681A (zh) * | 2017-09-25 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于sm3算法的数据处理方法、装置及系统 |
CN108920714A (zh) * | 2018-07-26 | 2018-11-30 | 上海交通大学 | 一种分布式环境下隐私保护的关联规则挖掘方法和系统 |
CN109032018A (zh) * | 2018-08-02 | 2018-12-18 | 清华大学 | 基于嵌入式gpu的无人机通用信号处理装置 |
CN109547192A (zh) * | 2018-11-08 | 2019-03-29 | 北京大学 | Sm3密码杂凑算法的并行化优化方法 |
Non-Patent Citations (4)
Title |
---|
CAN GEE CT.: "Optimized Password Recovery for SHA-512 on GPUs", 《2017 IEEE INTERNATIONAL CONFERENCE ON COMPUTATIONAL SCIENCE AND ENGINEERING (CSE) AND IEEE INTERNATIONAL CONFERENCE ON EMBEDDED AND UBIQUITOUS COMPUTING (EUC)》 * |
XIAOJING AN ECT.: "Optimized Password Recovery for Encrypted RAR on GPUs", 《2015 IEEE 17TH INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING AND COMMUNICATIONS (HPCC)》 * |
张倩,李树国: "SM3杂凑算法的ASIC设计和实现", 《微电子学与计算机》 * |
王小云,于红波: "SM3密码杂凑算法", 《信息安全研究》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913749A (zh) * | 2020-08-07 | 2020-11-10 | 山东大学 | 基于流水线的sm3算法fpga实现方法及系统 |
CN112202546A (zh) * | 2020-09-29 | 2021-01-08 | 山东华翼微电子技术股份有限公司 | Sm3密码杂凑算法消息扩展串行优化系统与方法 |
CN112202546B (zh) * | 2020-09-29 | 2023-06-23 | 山东华翼微电子技术股份有限公司 | Sm3密码杂凑算法消息扩展串行优化系统与方法 |
CN113221193A (zh) * | 2021-06-02 | 2021-08-06 | 上海交通大学 | 基于gpu的sm2数字签名与验签快速实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110086602B (zh) | 2022-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210382719A1 (en) | Apparatuses, methods, and systems for access synchronization in a shared memory | |
CN108268278B (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
EP3432146A1 (en) | Apparatuses, methods, and systems for blockchain transaction acceleration | |
WO2017124644A1 (zh) | 一种人工神经网络压缩编码装置和方法 | |
US9606797B2 (en) | Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor | |
US20220012598A1 (en) | Methods and apparatus for matrix and vector storage and operations | |
US20190056885A1 (en) | Low synch dedicated accelerator with in-memory computation capability | |
CN110086602A (zh) | 基于gpu的sm3密码散列算法的快速实现方法 | |
US10275247B2 (en) | Apparatuses and methods to accelerate vector multiplication of vector elements having matching indices | |
CN105912501B (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 | |
Rupnow et al. | A study of high-level synthesis: Promises and challenges | |
CN108009126B (zh) | 一种计算方法及相关产品 | |
CN108228960B (zh) | 用于熔丝验证的基于Simon的散列 | |
CN112543095A (zh) | 处理指令的系统、设备、方法、处理器、介质和电子设备 | |
CN108108190B (zh) | 一种计算方法及相关产品 | |
CN109739556B (zh) | 一种基于多并行缓存交互及计算的通用深度学习处理器 | |
CN102567254B (zh) | 采用dma控制器进行数据归一化处理的方法 | |
CN114399035A (zh) | 搬运数据的方法、直接存储器访问装置以及计算机系统 | |
TWI751125B (zh) | 用以監控位址衝突的計數器 | |
Stepchenkov et al. | Recurrent data-flow architecture: features and realization problems | |
CN110008436B (zh) | 基于数据流架构的快速傅里叶变换方法、系统和存储介质 | |
CN116308989B (zh) | 一种全同态快速数论变换的gpu加速方法 | |
CN111475205A (zh) | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 | |
CN114706813B (zh) | 多核异构片上系统、非对称同步方法、计算设备和介质 | |
WO2021217502A1 (zh) | 一种计算架构 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |