CN113204372A - 存储受限型哈希算法的加速装置及方法 - Google Patents

存储受限型哈希算法的加速装置及方法 Download PDF

Info

Publication number
CN113204372A
CN113204372A CN202110467409.4A CN202110467409A CN113204372A CN 113204372 A CN113204372 A CN 113204372A CN 202110467409 A CN202110467409 A CN 202110467409A CN 113204372 A CN113204372 A CN 113204372A
Authority
CN
China
Prior art keywords
data
unit
storage
data block
calculation
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
Application number
CN202110467409.4A
Other languages
English (en)
Other versions
CN113204372B (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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202110467409.4A priority Critical patent/CN113204372B/zh
Publication of CN113204372A publication Critical patent/CN113204372A/zh
Application granted granted Critical
Publication of CN113204372B publication Critical patent/CN113204372B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种存储受限型哈希算法的加速装置,包括通用处理单元、加速单元和存储单元;通用处理单元和加速单元之间信号连接,通用处理单元与存储单元之间为双向高速访问的信号连接;加速单元包括a个计算单元,每个计算单元采用直接内存访问的方式对局部存储和存储单元进行数据传输,直接内存访问和计算单元的运行是相互独立且并行运行。本发明还同时提供了利用上述存储受限型哈希算法的加速装置进行的加速方法。采用本发明能高效地实现存储受限型哈希算法。

Description

存储受限型哈希算法的加速装置及方法
技术领域
本发明涉及哈希算法加速领域,具体是存储受限型哈希算法的加速装置及方法。
背景技术
随着互联网的发展,数据安全和隐私保护受到人们极度重视。口令作为一种常见且简单的用户认证方式,被广为使用。口令恢复是在忘记口令的情况下,恢复正确口令的过程。口令恢复中,简单直接的办法是遍历口令空间,以得到正确的口令。
哈希算法作为口令加密算法,其在口令恢复研究中占有主要地位。能够快速地计算哈希算法,缩小遍历口令空间时间,是口令恢复的主要研究方向之一。目前哈希算法的设计主要包含两种:(1)计算密集型哈希算法,该类算法在计算过程中,通过对散列函数的循环迭代计算来增加算法的时间复杂度,从而保证哈希算法的强度;(2)存储受限型哈希算法,该类算法在计算过程中,需要足够内存来存储中间过程值,不断地更新内存中的数据,来保证算法的时间复杂度,校验值需要根据迭代更新后的内存数据来生成。存储需求提升算法的空间复杂度,该类算法比计算密集型具有更高的强度。
在口令恢复时,针对计算密集型哈希算法,可以通过图形处理器(GraphicsProcessing Unit,GPU)、专用集成电路(Application Specific Integrated Circuit,ASIC)等硬件提升哈希算法的计算效率,从而提高口令恢复的效率。但是,存储受限型哈希算法不同于计算密集型加密算法:内存需求使得目前高性能硬件系统难以满足存储需求,如GPU的局部存储;不同参数的设置,导致对存储的需求也不同,使得专用集成电路这种硬件平台无法满足更多的应用算法;最为困难的是频繁的数据访问增加了算法计算的时间,从而降低了加密算法的计算效率。
因此,为了满足存储受限型哈希算法的存储需求,解决访存带来的计算效率下降问题,本发明提出一种存储受限型哈希算法加速装置及方法。
发明内容
本发明要解决的技术问题提供一种存储受限型哈希算法的加速装置及方法,用以高效地实现存储受限型哈希算法。
为了解决上述技术问题,本发明提供一种存储受限型哈希算法的加速装置,包括通用处理单元、加速单元和存储单元;通用处理单元和加速单元之间信号连接,通用处理单元与存储单元之间为双向高速访问的信号连接;
所述加速单元包括a个计算单元,a为自然数,每个计算单元含有至少4K字节的局部存储且计算单元之间为并行运行,每个计算单元采用直接内存访问(Direct MemoryAccess,DMA)的方式对局部存储和存储单元进行数据传输,直接内存访问和计算单元的运行是相互独立且并行运行。
作为本发明的存储受限型哈希算法的加速装置的改进:
所述存储单元提供至少8G字节的独立存储空间供通用处理单元访问。
本发明还同时提供了利用所述的存储受限型哈希算法的加速装置进行的加速方法,包括初始化、循环计算和哈希值生成,所述初始化包括在存储单元中申请建立
Figure BDA0003043750340000021
个数据块B[l][n]*p行*4个切片的m K字节的存储空间,其中l,n分别为数据块B[l][n]所在的行和列,
Figure BDA0003043750340000022
p为并行度,m为4p的整倍数;
所述通用处理单元用以所述初始化和哈希值生成;
所述加速单元用以所述循环计算:四个切片按从左到右的顺序,循环迭代更新计算t次,其中t为迭代次数,在加速单元内,更新计算以一个切片为单位运行;在每个切片内,每个计算单元对应于处理一行数据,利用压缩函数G从左至右的顺序对每个数据块B[l][n]依次进行更新计算,a个计算单元同步对a行数据进行并行的更新计算,前一个切片每行的最后一个数据块B作为后一个切片对应行的第一个数据块B的输入,每行的最后一个数据块B[0][n-1]、B[1][n-1]、……、B[p-1][n-1]作为下一轮更新计算的一个输入;
所述计算单元对数据块B[l][n]更新计算的同时从存储单元读取索引数据块D[i][j]作为数据块B[l][n+1]更新计算的一个输入,每个切片的计算所需时间为第一个数据块B的两次从存储单元读入加速单元的DMA操作时长、最后一个数据块B从加速单元写入存储单元的一次DMA操作时长,以及压缩函数G的
Figure BDA0003043750340000023
次更新计算的时长的总和。
作为本发明的加速方法的改进,所述计算单元利用压缩函数G依次对每个数据块B[l][n]进行更新计算为:
B[l][n]=G(B[l][n-1],D[i][j]),
计算单元从存储单元读取索引数据块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]。
作为本发明的加速方法的进一步改进:
所述变换操作包括:将8*8矩阵的每一行或每一列分成16个基本块,将16个基本块设置为4*4的单元矩阵X,每次变化操作的输入为单元矩阵X中的4个基本块,一个单元矩阵X共需执行8次变化操作:前四次变化操作分别按单元矩阵X的每一行中的4个基本块进行分组处理,后四次变化操作分别按单元矩阵X的对角线的4个基本块进行分组处理,输出为一个新的8*8矩阵。
作为本发明的加速方法的进一步改进:
所述初始化还包括初始化存储受限型哈希算法的参数:版本号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的长度;然后将初步处理的结果依次填充所述m K字节的存储空间中第一个切片每一行的前两个数据块B作为所述循环计算的初始输入。
作为本发明的加速方法的进一步改进:
所述哈希值生成包括通用处理单元将所述更新计算所得的每行的最后一个数据块B[0][n-1]、B[1][n-1]、……、B[p-1][n-1]分别依次按位异或计算,然后再各自经过BLAKE2b算法后,根据所述输出长度T进行拼接或截断得到哈希函数散列输出值。
本发明与现有技术相比的有益效果主要体现在:
1、本发明将初始化阶段和哈希值生成阶段置于通用处理单元运行,将循环计算阶段置于加速单元运行,从而充分利用了多个加速单元对哈希函数的循环计算的并行运行的效率;
2、本发明将一个切片的更新放入加速单元内处理,由多个计算单元并行处理一个切片内多行数据的更新计算,从而提高了更新计算的效率;
3、本发明在数据块连续的更新计算时,可以将上一次的计算结果直接用来下一次更新计算的输入,而不用再次去访问主存,且计算单元在计算的同时只需通过DMA方式从存储单元访问获取索引数据块,实现访存和计算解耦、并行操作实现来提升算法的计算效率。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明的存储受限型哈希算法加速装置结构示意图;
图2为本发明的实施例1中存储受限型哈希算法Argon2i流程示意图;
图3为本发明的实施例1中存储受限型哈希算法Argon2i基于国产处理器的加速方法示意图;
图4为本发明的实施例1中存储受限型哈希算法Argon2i的压缩函数G更新计算的流程示意图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:
实施例1、存储受限型哈希算法的加速装置,如图1所示,国产处理器(申威SW26010)是一种异构架构的处理器,本实例中的存储受限型哈希算法的加速装置使用国产处理器实现,每个国产处理器包含4个核组和存储单元20,每个核组含有一个通用处理单元10(即主核)和一个加速单元30(即从核阵列),一个核组用以实现一条哈希值的计算,主核作为运算控制核心(Management Processing Element,MPE)可以处理复杂的逻辑操作,实现对存储受限型哈希算法的预处理操作,对算法的数据参数进行处理,初始化存储空间,主核与主存之间互为双向高速访问的信号连接,主核可以快速访问主存,实现存储受限型哈希算法的初始化和哈希值生成计算;主存提供8G字节的独立的存储空间供主核访问,满足存储受限哈希算法存储参数最大为8G字节的要求;每个加速单元30含有a个计算单元31(a为自然数,申威SW26010为64个从核),即申威SW26010的从核阵列可以并发运行64个从核,每个从核含有64K字节的局部存储32,可以实现单指令多数据流的计算方式,提升从核的计算效率和吞吐率,计算单元31可以高速地访存局部存储32;
从核阵列与主存之间为互为双向访问的信号连接;从核采用直接内存访问(Direct Memory Access,DMA的方式实现对局部存储32和主存的数据传输,从核计算时,可以高效访问局部存储32,访问延迟为4个节拍,且DMA的访存和从核的计算是相互独立的,可以并行执行,利用DMA实现双缓冲的数据访问机制,在从核计算的同时,写回上一次的计算结果和读入下一次计算的输入;
主核与从核之间为信号连接,多个从核并发由主核Athread编程实现,从核内部支持单指令多数据流的实现方式,可以提升从核的计算效率。
利用存储受限型哈希算法的加速装置进行存储受限型哈希算法Argon2i的加速方法如图2-图4所示,过程如下:
Argon2i是存储受限型哈希算法Argon2的一种,算法含有10个参数,参数默认为四个字节表示:
p为并行度,取值范围[1,224-1],默认值为1;
T为算法输出长度,以字节为单位,取值范围[4,232-1],默认输出32字节;
m为需要的存储空间大小,以1024字节为单位(KiloBytes,KB),取值范围[8p,232-1],实际的计算情况是向上取整到4p的整数倍,默认为4M字节;
t为迭代次数,表明循环阶段,需要更新内存的次数,取值范围[1,232-1],默认值为3;
v表示版本号,为固定值0x13,用一个字节表示;
y为算法种类,Argon2i为1,用一个字节;
P为输入数据,数据长度范围为[0,232-1]字节;
S为盐值,盐值长度范围为[8,232-1]字节;
K和X为关联数据,数据长度范围[0,232-1]字节;
1、初始化
1.1、参数设置
对Argon2i算法的10个参数进行初始化设置:版本号v、算法种类y为固定值;关联数据K和X为字符数据,可以根据实际应用选择是否需要;并行度p、算法输出长度T、需要的存储空间m、迭代次数t根据需要设置对应值,数值大小用4个字节表示;输入数据P和盐值S进行初始化;
1.2、参数处理及初步运算
此步骤的运算主要以逻辑运算为主,包括参数处理、存储空间申请以及初步运算,逻辑处理复杂,在主核中实现,首先采用以下顺序对各个初始化后的参数进行级联获得级联后的参数:(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,在主存中申请建立
Figure BDA0003043750340000061
个数据块B[l][n]*p行*4个切片的m K字节的存储空间,其中l,n分别为数据块B所在的行和列,p为并行度,m为4p的整倍数,即:在主存中以1024字节就是1K字节的大小申请连续的m个数据块B,共申请的m K字节的存储空间,后续操作以一个数据块B作为基本处理单元,将申请的m K字节的存储空间从左至右分为4个切片(Slices),然后根据步骤1.1中设置的参数中的并行度p,将每个切片从上往下分为p行,每个切片中的每行均含有
Figure BDA0003043750340000062
个数据块B;
将级联后的参数(p,T,m,t,v,y,<P>,P,<S>,S,<K>,K,<X>,X)作为输入数据,利用BLAKE2b算法H进行初步运算,结果填充申请的m K字节的存储空间一行的前两个数据块B,即数据块B[0][0]和B[0][1]、数据块B[1][0]和B[1][1]、……、数据块B[p-1][0]和B[p-1][1],作为步骤2的输入;
2、循环处理
2.1、一个数据块的更新
对当前所需更新的数据块B[l][n]进行一次数据块更新时,将前一个数据块B[l][n-1](其中l,n分别为数据块B所在的行和列,
Figure BDA0003043750340000063
)和索引数据块D[i][j]作为输入,利用压缩函数G进行更新计算:B[l][n]=G(B[l][n-1],B[i][j]),然后将压缩函数G更新计算的结果在局部存储32和主存中分别对应地更新数据块B[l][n],具体过程如下:
1)、获取索引数据块D[i][j]
由索引计算得到索引值i和j,再根据索引值i和j在主存内查找并定位索引数据块D[i][j],利用DMA的数据传输方式从主存将索引数据块D[i][j]读入到局部存储32,需要一次DMA数据传输,共1K字节的数据大小;
2)、获取前一个数据块B[l][n-1]
压缩函数G的更新计算从每行每个切片第1个数据块B时,利用DMA的数据传输方式从主存读入到局部存储32;
压缩函数G的更新计算切片内第2个至
Figure BDA0003043750340000064
个数据块B时,只需直接在从核中获取前一个数据块B[l][n-1]经过压缩函数G的更新计算的结果,无需从主存读取;
3)、压缩函数G的更新计算
压缩函数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中虚线⑤、⑥、⑦、⑧所示的行中的4个基本块)对数据分组进行迭代计算,每次迭代计算后更新该4个基本块的值;一个数据矩阵R共设置成8个单元矩阵X,因此一个数据矩阵R共需变换操作64次,获得更新后的64个基本块,从而对应地输出Q0、Q1、……、Q63,并设置为8*8的数据矩阵Q;
在对4*4的单元矩阵X的变换操作中,前四次计算的输入数据彼此不存在相关性,后四次计算同样如此,因此在从核阵列中,可以采用并发计算的方式提升性能,从核支持256位(32字节)单指令多数据流的计算,恰好对应四次变换操作,因此在从核中针对一个单元矩阵X的8次变换操作可以采用单指令多数据流的计算方式,两次计算可以实现原来的8次变换操作的计算,从而实现了用单指令多数据流的并行进行数据处理,提升计算效率;
对于数据矩阵Q到数据矩阵Z的变化操作过程与数据矩阵R到数据矩阵Q的变换操作过程类似,以数据矩阵Q每列128字节的数据,作为变换操作的输入,同样地利用变换操作得到数据矩阵Z;
在上述一个数据块B[l][n]的更新过程中,压缩函数G计算之前,从核需要将两个数据块从主存读入到局部存储32,压缩函数G计算后,从核要将一个数据块从局部存储32写回到主存,一个数据块B[l][n]的更新过程需要三个数据块的读写操作。
2.2、一个切片的更新
一个切片包含p行数据,每行包括
Figure BDA0003043750340000081
个数据块B,在同一个切片内,按步骤2.1的方式,将数据块B按行从左到右依次进行更新,例如第一个切片的第0行,按B[0][0]、B[0][1]、B[0][2]、…、
Figure BDA0003043750340000082
的先后循序依次更新,从第1行至第p行如此类推;另外,在对主存中m K字节的存储空间迭代更新时,同一切片中不同行数据块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的写操作以及
Figure BDA0003043750340000083
次压缩函数G的更新计算时长的总和,该计算方法将将数据访存时间隐藏在计算后,提升哈希函数的计算效率。
2.3循环迭代更新
采用步骤2.2的一个切片的更新方式,对主存内的四个切片slices按从左到右的顺序,以一个切片为单位对每个切片中的数据块B依次进行更新计算(第二、三、四个切片每一行的第一个数据块B的输入为前一个切片对应行的最后一个数据块B),每行最后一个数据块B[0][n-1]、B[1][n-1]、……、B[p-1][n-1],其中
Figure BDA0003043750340000084
更新后,完成了一次循环迭代更新,然后将每行最后一个数据块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中初始化设置所得)。
3、哈希值生成阶段
经过步骤2.3,即在从核阵列循环迭代更新t次主核申请的m K字节存储空间数据后,主核对最后一个数据块B[0][n-1]、B[1][n-1]、……、B[p-1][n-1],分别依次按位异或计算然后再各自经过BLAKE2b算法计算后,根据步骤1.1中设置的输出长度T进行拼接或截断得到最后输出,即Argon2i哈希函数散列输出值,该部分计算简单,在主核中计算即可。
实验1:
分别搭建三个实验环境验证本发明的有效性:
1)国产处理器SW26010上仅使用主核实现Argon2i存储受限哈希算法;
2)国产处理器SW26010上使用主核加从核的方式采用本实施例1实现Argon2i存储受限哈希算法;
3)Intel(R)Core(TM)i7-8700 CPU@3.20GHz 3.19GHz处理器上实现Argon2i存储受限哈希算法。
首先,在从核实现压缩函数G时,利用国产处理器软件统计计算的时钟周期,单指令多数据流的实现方式,计算一次需要10323个时钟周期,非单指令流多数据流的实现方式,计算一次需要41084个时钟周期,计算效率提升41084/10323≈3.98倍。
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哈希值,计算效率提升为
Figure BDA0003043750340000091
倍。
实验环境2)和实验环境3)参数设置为迭代参数10,并行度4,内存参数4M字节输入数据p为7个字符长度,盐值为8个字符长度,在两种平台实现Argon2i算法,在实验环境3)上计算一次Argon2i哈希值时间为0.0078秒,在实验环境2)上计算一次Argon2i哈希值时间为0.0013秒,计算效率提升0.0078/0.0013=6倍,因此本发明有效地提升了存储受限型哈希算法的效率,达到了发明目的。
最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (7)

1.存储受限型哈希算法的加速装置,其特征在于:包括通用处理单元(10)、加速单元(30)和存储单元(20);通用处理单元(10)和加速单元(30)之间信号连接,通用处理单元(10)与存储单元(20)之间为双向高速访问的信号连接;
所述加速单元(30)包括a个计算单元(31),a为自然数,每个计算单元(31)含有至少4K字节的局部存储(32)且计算单元(31)之间为并行运行,每个计算单元(31)采用直接内存访问的方式对局部存储(32)和存储单元(20)进行数据传输,直接内存访问和计算单元(31)的运行是相互独立且并行运行。
2.根据权利要求1所述的存储受限型哈希算法的加速装置,其特征在于:
所述存储单元(20)提供至少8G字节的独立存储空间供通用处理单元(10)访问。
3.利用如权利要求1-2任一所述的存储受限型哈希算法的加速装置进行的加速方法,包括初始化、循环计算和哈希值生成,所述初始化包括在存储单元(20)中申请建立
Figure FDA0003043750330000011
个数据块B[l][n]*p行*4个切片的m K字节的存储空间,其中l,n分别为数据块B[l][n]所在的行和列,
Figure FDA0003043750330000012
p为并行度,m为4p的整倍数,其特征在于:
所述通用处理单元(10)用以所述初始化和哈希值生成;
所述加速单元(30)用以所述循环计算:四个切片按从左到右的顺序,循环迭代更新计算t次,其中t为迭代次数,在加速单元(30)内,更新计算以一个切片为单位运行;在每个切片内,每个计算单元(31)对应于处理一行数据,利用压缩函数G从左至右的顺序对每个数据块B[l][n]依次进行更新计算,a个计算单元(31)同步对a行数据进行并行的更新计算,前一个切片每行的最后一个数据块B作为后一个切片对应行的第一个数据块B的输入,每行的最后一个数据块B[0][n-1]、B[1][n-1]、……、B[p-1][n-1]作为下一轮更新计算的一个输入;
所述计算单元(31)对数据块B[l][n]更新计算的同时从存储单元(20)读取索引数据块D[i][j]作为数据块B[l][n+1]更新计算的一个输入,每个切片的计算所需时间为第一个数据块B的两次从存储单元(20)读入加速单元(30)的DMA操作时长、最后一个数据块B的从加速单元(30)写入存储单元(20)的一次DMA操作时长以及压缩函数G的
Figure FDA0003043750330000013
次更新计算的时长的总和。
4.根据权利要求3所述的加速方法,其特征在于,所述计算单元(31)利用压缩函数G依次对每个数据块B[l][n]进行更新计算为:
B[l][n]=G(B[l][n-1],D[i][j]),
计算单元(31)从存储单元(20)读取索引数据块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同步更新到局部存储(32)和存储单元(20)中的数据块数据块B[l][n]。
5.根据权利要求4所述的加速方法,其特征在于:
所述变换操作包括:将8*8矩阵的每一行或每一列分成16个基本块,将16个基本块设置为4*4的单元矩阵X,每次变化操作的输入为单元矩阵X中的4个基本块,一个单元矩阵X共需执行8次变化操作:前四次变化操作分别按单元矩阵X的每一行中的4个基本块进行分组处理,后四次变化操作分别按单元矩阵X的对角线的4个基本块进行分组处理,输出为一个新的8*8矩阵。
6.根据权利要求5所述的加速方法,其特征在于:
所述初始化还包括初始化存储受限型哈希算法的参数:版本号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的长度;然后将初步处理的结果依次填充所述m K字节的存储空间中第一个切片每一行的前两个数据块B作为所述循环计算的初始输入。
7.根据权利要求6所述的加速方法,其特征在于:
所述哈希值生成包括通用处理单元(10)将所述更新计算所得的每行的最后一个数据块B[0][n-1]、B[1][n-1]、……、B[p-1][n-1]分别依次按位异或计算,然后再各自经过BLAKE2b算法后,根据所述输出长度T进行拼接或截断得到哈希函数散列输出值。
CN202110467409.4A 2021-04-28 2021-04-28 存储受限型哈希算法的加速装置及方法 Active CN113204372B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110467409.4A CN113204372B (zh) 2021-04-28 2021-04-28 存储受限型哈希算法的加速装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110467409.4A CN113204372B (zh) 2021-04-28 2021-04-28 存储受限型哈希算法的加速装置及方法

Publications (2)

Publication Number Publication Date
CN113204372A true CN113204372A (zh) 2021-08-03
CN113204372B CN113204372B (zh) 2022-07-01

Family

ID=77027100

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110467409.4A Active CN113204372B (zh) 2021-04-28 2021-04-28 存储受限型哈希算法的加速装置及方法

Country Status (1)

Country Link
CN (1) CN113204372B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023036009A1 (zh) * 2021-09-08 2023-03-16 北京灵汐科技有限公司 计算系统、存储设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160373250A1 (en) * 2012-12-29 2016-12-22 Intel Corporation Instruction and logic to provide simd secure hashing round slice functionality
CN110956699A (zh) * 2019-11-27 2020-04-03 西安交通大学 一种三角形网格模型gpu并行切片方法
CN111461311A (zh) * 2020-03-26 2020-07-28 中国科学技术大学 基于众核处理器的卷积神经网络运算加速方法及装置
CN111580969A (zh) * 2020-05-07 2020-08-25 湖南大学 一种基于多gpu的a*搜索方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160373250A1 (en) * 2012-12-29 2016-12-22 Intel Corporation Instruction and logic to provide simd secure hashing round slice functionality
CN110956699A (zh) * 2019-11-27 2020-04-03 西安交通大学 一种三角形网格模型gpu并行切片方法
CN111461311A (zh) * 2020-03-26 2020-07-28 中国科学技术大学 基于众核处理器的卷积神经网络运算加速方法及装置
CN111580969A (zh) * 2020-05-07 2020-08-25 湖南大学 一种基于多gpu的a*搜索方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
QIAO SUN 等: "Bandwidth Reduced Parallel SpMV on the SW26010 Many-Core Platform", 《ICPP 2018》 *
佚名: "全球最强超级计算机搭载的SW26010处理器解析", 《HTTP://WWW.ELECFANS.COM/EMB/DSP/20160805430336_A.HTML?_T_T_T=0.9850393927190453》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023036009A1 (zh) * 2021-09-08 2023-03-16 北京灵汐科技有限公司 计算系统、存储设备

Also Published As

Publication number Publication date
CN113204372B (zh) 2022-07-01

Similar Documents

Publication Publication Date Title
US7856102B2 (en) Methods and apparatus for providing a message authentication code using a pipeline
US7746350B1 (en) Cryptographic computations on general purpose graphics processing units
CN105912501B (zh) 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统
US20220337421A1 (en) Low latency post-quantum signature verification for fast secure-boot
US10833847B2 (en) Cryptographic hash generated using data parallel instructions
CN114168991B (zh) 对加密数据进行处理的方法、电路及相关产品
CN113919477A (zh) 一种卷积神经网络的加速方法及装置
CN113204372B (zh) 存储受限型哈希算法的加速装置及方法
EP3930253A1 (en) High throughput post quantum aes-gcm engine for tls packet encryption and decryption
CN112836813A (zh) 一种用于混合精度神经网络计算的可重构脉动阵列系统
CN110213050A (zh) 密钥生成方法、装置及存储介质
CN113282947A (zh) 一种基于sm4算法的数据加密方法、装置及计算机平台
US11874898B2 (en) Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal
CN108053361A (zh) 多互连视觉处理器及采用其的图像处理方法
CN110515591B (zh) 基于区块链的随机数生成方法及装置
US20230185905A1 (en) Protection of authentication tag computation against power and electromagnetic side-channel attacks
CN111221501A (zh) 一种用于大数乘法的数论变换电路
CN114826560A (zh) 一种轻量级分组密码cref实现方法及系统
US11681498B2 (en) Neural network arithmetic processing device and neural network arithmetic processing method
CN109150494A (zh) 移动端中构造加解密算法的方法、存储介质、设备及系统
CN112487448B (zh) 一种加密信息处理装置、方法及计算机设备
Kabirirad et al. High-speed GPU implementation of a secret sharing scheme based on cellular automata
WO2023116431A1 (zh) 一种矩阵计算方法、芯片以及相关设备
KR102149576B1 (ko) 저전력 디바이스 환경상에서의 공개키 암호 고속화 연산 처리 방법
US20230076906A1 (en) Calculation device

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