System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于CPU-GPU异构平台的SM3密码恢复方法技术_技高网

一种基于CPU-GPU异构平台的SM3密码恢复方法技术

技术编号:40205040 阅读:9 留言:0更新日期:2024-02-02 22:17
本发明专利技术公开了一种基于CPU‑GPU异构平台的SM3密码恢复方法。本方法为:1)CPU端读取存储待恢复密码的目标哈希值的哈希文件并对其进行解析,得到目标哈希值;2)CPU端初始化OpenCL运行环境,配置内核运行环境;3)CPU端生成候选密码并将其写入GPU显存;4)GPU线程从GPU显存中读取候选密码,并行计算每一候选密码的哈希值,判断计算结果与目标哈希值是否匹配,根据匹配结果生成对应候选密码的标志位并将其写入GPU显存;5)当所有线程都完成计算后,CPU端从GPU显存中读取标志位信息;根据标志位确定是否找到目标密码,如果找到目标密码则结束并释放当前资源;否则返回步骤3),直至找到目标密码。

【技术实现步骤摘要】

本专利技术属于消息摘要算法加密领域,以及程序设计和算法设计领域,提出了一种基于cpu-gpu异构平台的sm3密码恢复方法。


技术介绍

1、随着互联网的快速发展,信息泄露事件逐渐增多,信息安全的保障已经成为各行业的迫切需要。密码学算法是现代密码学的核心技术,为保障信息安全提供了理论支撑。消息摘要算法是密码学三大基础算法之一,广泛应用于数字签名、身份认证、数据完整性校验等领域,具有不可或缺的地位。消息摘要算法的作用原理是,对于任意长度的消息输入,通过一系列变换生成固定长度的摘要输出,从而提取出消息输入的“指纹信息”。

2、国密sm3算法是由我国自主研发的消息摘要算法,已发布为国家密码杂凑算法标准,现已提交至iso国际标准化组织。sm3算法结构类似于sha-2系列算法,但比sha-2具有更复杂的函数运算和更强的数据依赖关系。相比于传统的md5和sha系列算法,sm3具有更强的抗碰撞性。

3、图形处理器(graphics processing unit,简称gpu)的提出初衷是为了协助cpu处理图像计算。但在消费市场庞大需求的刺激下,现代gpu已具有很强的计算性能,它的众核架构和多并发模式能帮助处理大规模数据的并行计算。

4、开放计算语言(open computing language,简称opencl)是一种异构编程框架,能够在不同处理器上运行。同时opencl也是gpu通用计算语言,并且支持在nvidia、intel、amd等多种平台上执行,比cuda具有更强的可移植性。opencl采用c语言来描述物理设备的硬件行为,使开发人员无需考虑硬件电路的实现,方便开发人员编写出更高效率的代码。

5、当前,利用cpu-gpu异构设备实现sm3密码恢复的方案仍有局限性。目前的研究方案大都是针对sm3算法结构和存储资源分配进行改进,基本都是在sm3算法实现层级上加速优化,缺乏在sm3密码恢复层级上的优化方法。


技术实现思路

1、针对现有技术的缺陷,本专利技术的目的在于提供一种基于cpu-gpu异构平台的sm3密码恢复方法。密码学算法的应用通常具有计算过程单一、数据规模较大的特性,因此可以使用gpu对sm3算法进行加速计算。本专利技术基于opencl框架在cpu-gpu异构平台上开发sm3算法的并行计算程序实现sm3密码恢复。本专利技术的密码恢复方法面向的是长度在5~12之间,每个字符的字符集是全字符(95个字符)的密码。

2、为了方便描述,可将本专利技术的sm3密码恢复方法分成3个模块:opencl辅助模块、密码生成和传输模块、sm3密码哈希值计算模块。

3、opencl辅助模块:负责opencl运行环境的配置和gpu内核程序的执行,通过调用opencl内置的api函数在gpu上创建多个线程并管理线程的并行情况;

4、密码生成和传输模块:用于每次在cpu端上生成密码后缀并将其传输至gpu显存上,gpu线程将自行生成的一批密码前缀与所述密码后缀进行密码拼接生成一批候选密码;

5、sm3密码哈希值计算模块:负责在gpu设备上计算候选密码哈希值,是本专利技术最核心的模块。首先在gpu上创建多个线程,每个线程先从gpu显存上读取候选密码,并行计算每一候选密码的哈希值,判断计算结果与所述目标哈希值是否匹配,根据匹配结果生成对应候选密码的标志位并将其写入gpu显存;当所有线程都完成计算后,cpu端从gpu显存中读取标志位信息;根据标志位确定是否找到目标密码,如果找到目标密码则结束并释放当前资源。计算sm3密码哈希值时采用了寄存器重用技术,将消息字扩展中所需寄存器数量从132个减少到17个,节约了寄存器资源;进行消息字扩展时采用了缓存技术,提前计算部分扩展字的数值并缓存在寄存器中,以避免后续大量的重复计算;判断哈希值是否匹配时采用了提前判断方案,减少了压缩变换中3/64的计算量。

6、本专利技术是基于cpu-gpu异构平台的sm3密码恢复方法实现,其中gpu上主要是进行哈希值的计算,而cpu端负责搭建opencl运行环境、生成候选密码并传输到gpu上、调度gpu设备进行计算等。整个sm3密码恢复方法的运行包括如下步骤:

7、步骤一:cpu端读取存储待恢复密码的目标哈希值的哈希文件并对其进行解析,得到所述目标哈希值;

8、步骤二:cpu端通过调用库函数进行opencl运行环境的初始化,其主要内容包括选择opencl平台和设备、创建设备上下文和命令队列、创建gpu内核程序、初始化内存空间、加载编译内核程序等;

9、步骤三:cpu端生成候选密码并将其写入gpu显存;

10、步骤四:gpu线程从gpu显存中读取候选密码,并行计算每一候选密码的哈希值,判断计算结果与所述目标哈希值是否匹配,根据匹配结果生成对应候选密码的标志位并将其写入gpu显存;

11、步骤五:当所有线程的计算都完成后,cpu端从gpu显存中读取标志位信息;根据标志位确定是否找到目标密码,如果找到目标密码则结束并释放当前资源;否则返回步骤三,直至找到目标密码。

12、本专利技术的优点如下:

13、1、本公开采用的计算设备是gpu,能高效处理大规模数据的计算;采用的平台是opencl框架,能够支持在cpu、gpu、fpga和dsp等多种处理器上运行,便于后续做异构并行的移植。

14、2、本公开在步骤三生成密码时采用了前后缀密码拼接技术,cpu只需将密码后缀写入gpu显存,再由gpu线程自动生成密码前缀进行拼接;这一方案极大地减少了数据传输量,提高程序运行性能。

15、3、本公开在步骤四计算密码哈希值时对程序结构进行了改进,合并了消息字扩展和压缩函数,促进了循环展开,降低分支跳转带来的开销;还采用了寄存器重用技术,将消息扩展中所需寄存器从132个减少到17个,节约了寄存器资源,为提高线程并行能力提供了存储资源的支持;并使用了循环展开和指令优化技术,减少了程序的分支跳转次数和汇编代码中的指令数量。

16、4、本公开在步骤四判断哈希值是否匹配时采用了提前判断的方案。由于sm3算法有64轮压缩变换,需要进行64步的计算才能得到最终哈希值。但根据sm3算法特性,在第61步时就已经能计算出哈希值中第4个字的值,因此可以在第61步后直接对目标哈希值的第4个字进行判断,若不匹配就无需进行后续计算,这样可以减少压缩函数中3/64的计算量。

17、5、本公开在步骤四计算密码哈希值时采用了缓存技术。在采用前后缀密码拼接技术的基础上,gpu上的每个线程计算的密码前缀不同、而后缀相同,因此w1~w15的值也相同,消息扩展中仅与w1~w15的值有关的扩展字w17、w18、w20、w21、w23、w24、w26、w27、w30、w33、w36、w39的值也相同。所以可以提前计算这些扩展字的值,并缓存计算结果,避免后面消息扩展中大量的重复计算。

本文档来自技高网...

【技术保护点】

1.一种基于CPU-GPU异构平台的SM3密码恢复方法,其步骤包括:

2.根据权利要求1所述的方法,其特征在于,所述CPU端生成候选密码并将其写入GPU显存的方法为:每次CPU端生成一个密码后缀并其写入GPU显存,同时GPU线程生成一批密码前缀,GPU线程将当前收到的密码后缀与当前生成的每一密码前缀进行拼接,生成一批候选密码。

3.根据权利要求2所述的方法,其特征在于,所述待恢复密码的长度在5~12位,所述密码前缀长度为4位,所述密码后缀的长度为1~8位。

4.根据权利要求3所述的方法,其特征在于,判断计算结果与所述目标哈希值是否匹配的步骤包括:

5.一种基于CPU-GPU异构平台的SM3密码恢复系统,其特征在于,包括OpenCL辅助模块、密码生成和传输模块、SM3密码哈希值计算模块、CPU端和GPU端;

6.一种服务器,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1至4任一所述方法中各步骤的指令。

7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4任一所述方法的步骤。

...

【技术特征摘要】

1.一种基于cpu-gpu异构平台的sm3密码恢复方法,其步骤包括:

2.根据权利要求1所述的方法,其特征在于,所述cpu端生成候选密码并将其写入gpu显存的方法为:每次cpu端生成一个密码后缀并其写入gpu显存,同时gpu线程生成一批密码前缀,gpu线程将当前收到的密码后缀与当前生成的每一密码前缀进行拼接,生成一批候选密码。

3.根据权利要求2所述的方法,其特征在于,所述待恢复密码的长度在5~12位,所述密码前缀长度为4位,所述密码后缀的长度为1~8位。

4.根据权利要求3所述的方法,其特征在于,判断计算结...

【专利技术属性】
技术研发人员:康矗韩柳彤邢明杰武延军赵琛
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:

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

1