联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame > hashgames

存储受限型哈希算法的加速装置及方法HASH GAME - Online Skill Game ET 300

发布时间:2025-03-15 16:29:35  点击量:

  HASH GAME - Online Skill Game GET 300

存储受限型哈希算法的加速装置及方法HASH GAME - Online Skill Game GET 300

  哈希算法作为口令加密算法,其在口令恢复研究中占有主要地位。能够快速地计算哈希算法,缩小遍历口令空间时间,是口令恢复的主要研究方向之一。目前哈希算法的设计主要包含两种:(1)计算密集型哈希算法,该类算法在计算过程中,通过对散列函数的循环迭代计算来增加算法的时间复杂度,从而保证哈希算法的强度;(2)存储受限型哈希算法,该类算法在计算过程中,需要足够内存来存储中间过程值,不断地更新内存中的数据,来保证算法的时间复杂度,校验值需要根据迭代更新后的内存数据来生成。存储需求提升算法的空间复杂度,该类算法比计算密集型具有更高的强度。

  在口令恢复时,针对计算密集型哈希算法,可以通过图形处理器(graphicsprocessingunit,gpu)、专用集成电路(applicationspecificintegratedcircuit,asic)等硬件提升哈希算法的计算效率,从而提高口令恢复的效率。但是,存储受限型哈希算法不同于计算密集型加密算法:内存需求使得目前高性能硬件系统难以满足存储需求,如gpu的局部存储;不同参数的设置,导致对存储的需求也不同,使得专用集成电路这种硬件平台无法满足更多的应用算法;最为困难的是频繁的数据访问增加了算法计算的时间,从而降低了加密算法的计算效率。

  所述加速单元用以所述循环计算:四个切片按从左到右的顺序,循环迭代更新计算t次,其中t为迭代次数,在加速单元内,更新计算以一个切片为单位运行;在每个切片内,每个计算单元对应于处理一行数据,利用压缩函数g从左至右的顺序对每个数据块b[l][n]依次进行更新计算,a个计算单元同步对a行数据进行并行的更新计算,前一个切片每行的最后一个数据块b作为后一个切片对应行的第一个数据块b的输入,每行的最后一个数据块b[0][n-1]、b[1][n-1]、……、b[p-1][n-1]作为下一轮更新计算的一个输入;

  计算单元从存储单元读取索引数据块d[i][j]作为更新计算的一个输入,其中i、j为索引计算得到的索引值,数据块b[l][n-1]直接作为更新计算的另一个输入;然后将数据块b[l][n-1])和索引数据块d[i][j])中的数据按位异或并将结果分组为个64单元r0、r1、……、r63,将64个单元设置为8*8的数据矩阵r,再依次对数据矩阵r的每行进行变换操作后得到8*8的数据矩阵q,然后再依次对数据矩阵q的每列进行变换操作后得到8*8的数据矩阵z,最后将数据矩阵z和数据矩阵r按位异或得到输出的数据块output,将数据块output同步更新到局部存储和存储单元中的数据块b[l][n]。

  所述初始化还包括初始化存储受限型哈希算法的参数:版本号v、算法种类y、关联数据k、关联数据x、并行度p、算法输出长度t、需要的存储空间m、迭代次数t、输入数据p和盐值s;然后将参数级联后获得:(p,t,m,t,v,y,p,p,s,s,k,k,x,x)并利用blake2b算法进行初步处理,其中,p为输入数据p的长度,s为盐值s的长度,k为关联数据k的长度,x为关联数据x的长度;然后将初步处理的结果依次填充所述mk字节的存储空间中第一个切片每一行的前两个数据块b作为所述循环计算的初始输入。

  实施例1、存储受限型哈希算法的加速装置,如图1所示,国产处理器(申威sw26010)是一种异构架构的处理器,本实例中的存储受限型哈希算法的加速装置使用国产处理器实现,每个国产处理器包含4个核组和存储单元20,每个核组含有一个通用处理单元10(即主核)和一个加速单元30(即从核阵列),一个核组用以实现一条哈希值的计算,主核作为运算控制核心(managementprocessingelement,mpe)可以处理复杂的逻辑操作,实现对存储受限型哈希算法的预处理操作,对算法的数据参数进行处理,初始化存储空间,主核与主存之间互为双向高速访问的信号连接,主核可以快速访问主存,实现存储受限型哈希算法的初始化和哈希值生成计算;主存提供8g字节的独立的存储空间供主核访问,满足存储受限哈希算法存储参数最大为8g字节的要求;每个加速单元30含有a个计算单元31(a为自然数,申威sw26010为64个从核),即申威sw26010的从核阵列可以并发运行64个从核,每个从核含有64k字节的局部存储32,可以实现单指令多数据流的计算方式,提升从核的计算效率和吞吐率,计算单元31可以高速地访存局部存储32;

  此步骤的运算主要以逻辑运算为主,包括参数处理、存储空间申请以及初步运算,逻辑处理复杂,在主核中实现,首先采用以下顺序对各个初始化后的参数进行级联获得级联后的参数:(p,t,m,t,v,y,p,p,s,s,k,k,x,x),其中,符号表示对应数据长度,如p为输入数据p的长度,s为盐值s的长度,k为关联数据k的长度,x为关联数据x的长度;

  然后根据步骤1.1中设置的参数m,在主存中申请建立个数据块b[l][n]*p行*4个切片的mk字节的存储空间,其中l,n分别为数据块b所在的行和列,p为并行度,m为4p的整倍数,即:在主存中以1024字节就是1k字节的大小申请连续的m个数据块b,共申请的mk字节的存储空间,后续操作以一个数据块b作为基本处理单元,将申请的mk字节的存储空间从左至右分为4个切片(slices),然后根据步骤1.1中设置的参数中的并行度p,将每个切片从上往下分为p行,每个切片中的每行均含有个数据块b;

  压缩函数g的更新计算过程如图4所示:将一个输入的数据块b[l][n-1])和另一个输入的索引数据块d[i][j])中的数据按位异或并将结果分组为64个单元(即r0、r1、……、r63),每个单元为16字节,将64个单元设置为8*8的矩阵从而得到数据矩阵r,再依次对数据矩阵r的每行进行变换操作得到8*8矩阵形式的数据矩阵q,然后再依次对数据矩阵q的每列进行变换操作后得到8*8矩阵形式的数据矩阵z,最后将数据矩阵z和数据矩阵r按位异或得到数据块output,即压缩函数g的的输出为数据块output,将数据块output从局部存储32利用dma的方式传输到主存,同步更新局部存储32和主存中的数据块b[l][n]作为下一个数据块b[l][n+1]的一个输入,从而实现了一个数据块的更新;

  数据矩阵r到数据矩阵q的变换操作具体为:将数据矩阵r的每行(128字节)分成16个基本块(即x0、x1、……、x15),每个基本块为8个字节,将16个基本块设置为4*4的单元矩阵x,即数据矩阵r的每一行对应地设置为一个4*4的单元矩阵x,一个单元矩阵x共需执行八次blake2b算法中的迭代计算,其中,前四次分别按单元矩阵x的每一行中的4个基本块(如图4中虚线①、②、③、④所示的行中的4个基本块)对数据分组进行迭代计算,后四次分别按单元矩阵x的对角线中虚线⑤、⑥、⑦、⑧所示的行中的4个基本块)对数据分组进行迭代计算,每次迭代计算后更新该4个基本块的值;一个数据矩阵r共设置成8个单元矩阵x,因此一个数据矩阵r共需变换操作64次,获得更新后的64个基本块,从而对应地输出q0、q1、……、q63,并设置为8*8的数据矩阵q;

  一个切片包含p行数据,每行包括个数据块b,在同一个切片内,按步骤2.1的方式,将数据块b按行从左到右依次进行更新,例如第一个切片的第0行,按b[0][0]、b[0][1]、b[0][2]、…、的先后循序依次更新,从第1行至第p行如此类推;另外,在对主存中mk字节的存储空间迭代更新时,同一切片中不同行数据块b的更新计算,不同行之间不存在数据相关性(如图2中数据块b[l][n]的计算不会访问同一切片上同列的其他行的数据),即同一切片下不同行可以并行计算,结合该特点,采取每个从核实现一个切片中的一行的数据更新计算,即64个从核最多可以一次实现同一切片内顺序64行数据块b之间的并行计算,实现数据更新;

  同一个切片内的数据块b更新时,压缩函数g计算是在从核中实现,其中一个输入是压缩函数g的输出的前一个数据块b[l][n-1],可以直接在从核中获得,另一个输入是利用dma操作从主存中读入的索引数据块d[i][j],利用该方式一次压缩函数g的计算可以只需一次dma操作时间;压缩函数g计算时,采用该双缓冲的数据访存方式:写回压缩函数g的计算结果的同时,同步读入下一个压缩函数g的索引数据块d[i][j],可以隐藏掉数据从主存读入局部存储32以及计算后的数据从局部存储32写回主存的时间;因此整个切片的计算时间为第一个数据块b的两次读操作、最后一个数据块b的写操作以及次压缩函数g的更新计算时长的总和,该计算方法将将数据访存时间隐藏在计算后,提升哈希函数的计算效率。

  采用步骤2.2的一个切片的更新方式,对主存内的四个切片slices按从左到右的顺序,以一个切片为单位对每个切片中的数据块b依次进行更新计算(第二、三、四个切片每一行的第一个数据块b的输入为前一个切片对应行的最后一个数据块b),每行最后一个数据块b[0][n-1]、b[1][n-1]、……、b[p-1][n-1],其中更新后,完成了一次循环迭代更新,然后将每行最后一个数据块b[0][n-1]、b[1][n-1]、……、b[p-1][n-1]作为每行第一个数据块b[0][0]、b[1][0]、……、b[p-1][0]的一个输入,继续下一轮对每个切片中的每个数据块b的更新计算,如此循环迭代更新t次(步骤1.1中初始化设置所得)。

  argon2i哈希函数计算时,实验环境1)和实验环境2)采用默认参数设置,即迭代次数3,内存参数4m字节,并行度p为1,输入数据p为7个字符长度,盐值为8个字符长度,k和x不设置,其他参数为默认值,在两种平台上实现argon2i算法,并利用软件统计计算时间。在实验环境1)上实现argon2i算法,计算一次argon2i哈希值时间需要0.16秒;在实验环境2)上采用国产处理器主核加从核,并采用实施例1的加速方法,64个从核同时运行,计算一次argon2i哈希值时间需要0.1秒,单个核组(1个主核+64个从核)相比于一个主核计算一次argon2i哈希值,计算效率提升为倍。

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: