CN108959128B - Crypt-SHA512加密算法的加速装置与方法 - Google Patents
Crypt-SHA512加密算法的加速装置与方法 Download PDFInfo
- Publication number
- CN108959128B CN108959128B CN201810562960.5A CN201810562960A CN108959128B CN 108959128 B CN108959128 B CN 108959128B CN 201810562960 A CN201810562960 A CN 201810562960A CN 108959128 B CN108959128 B CN 108959128B
- Authority
- CN
- China
- Prior art keywords
- password
- data
- cpu
- calculation
- crypt
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种Crypt‑SHA512加密算法的加速装置,包括由FPGA和CPU。FPGA包括存储单元、状态控制器、数据选择器以及流水计算单元;数据选择器的数量与消息分组的字节数相同;消息分组填充的数据的每个字节通过对应数据选择器由存储单元输送至流水计算单元。本发明还提供一种利用上述装置进行加速的方法;根据口令长度和固定的盐值长度对FPGA进行重构,令粗粒度数据通路与口令长度和盐值长度相对应,从而仅由迭代次数确定消息填充的方式;再利用数据选择器控制细粒度数据通路调整,实现每个时钟周期都有一个消息分组输入到流水计算单元中,使得数据流不间断地通过流水计算单元,不出现阻塞,加快计算速度。
Description
技术领域
本发明涉及CPU-FPGA异构系统的加密算法的加速设计领域,具体为提出一种适用于CPU-FPGA异构系统实现Crypt-SHA512加密算法加速的优化技术。
背景技术
随着互联网和计算机技术不断普及,信息安全和数据加密受到人们的广泛关注。使用口令是一种常见且简单便捷的保护信息安全的手段。要想有效地保护信息安全,除了使用强度大的口令以外,还需要使用加密算法对软硬件系统中的口令进行加密。
口令恢复是指在不知道密钥的情况下,恢复出口令密文中隐藏的明文信息的过程。在口令恢复中常见的方法是穷尽搜索和字典法,两者都是将口令集合中的候选口令输入到特定的加密算法中对候选口令进行加密,将计算得到的密文和存储下来的正确口令的密文进行比较。可以看出在口令强度一致的情况下,加密算法运算的速度越快,口令恢复得也就越快。
在密码学不断发展的过程中,为了增加安全性,加密算法在不断地改进,加密算法的强度在不断地增强。基于密码的密钥派生函数PBKDF2(Password-BasedKeyDerivationFunction2)结构的加密算法是当前处理口令最常见的算法之一,是通过循环迭代的方式提高加密算法的计算强度,将上一次哈希函数迭代的计算结果作为下一次哈希函数迭代的消息输入。随着计算算力的提升,简单地将循环迭代次数增加已经不能满足人们对加密算法安全性的需求。因此在加密算法的设计中,在每次迭代的消息分组生成的过程中加入随机性,增加加密算法的复杂程度,以此提升加密算法的安全性。
比如在用于UNIX/Linux操作系统登录口令的加密算法Crypt-SHA512中,算法核心是SHA-512哈希函数,SHA-512哈希函数将输入消息按照128字节进行分组,形成消息分组进行计算,输入的状态位是64字节,最终输出64字节的消息摘要。在循环阶段,默认进行5000次的SHA-512计算迭代,输入哈希函数的消息分组的填充方式随着口令长度的变化而变化,且每次迭代的消息分组填充方式还和迭代次数有关。
随着加密算法计算强度的提高,口令恢复的难度逐渐增大,故需要对现有技术进行改进。
发明内容
本发明要解决的技术问题是对Crypt-SHA512加密算法的加速实现,缩短了加密算法计算口令密文的时间,使得通过该加密算法进行加密的口令的恢复速度加快。
为解决上述技术问题,本发明提出Crypt-SHA512加密算法的加速装置,包括FPGA与通用CPU组成的CPU-FPGA异构系统,CPU和FPGA通过总线接口相互连接:
所述CPU用于进行Crypt-SHA512加密算法初始化阶段和输出阶段的计算;
所述FPGA用于进行Crypt-SHA512加密算法循环阶段的加速计算;
所述CPU将Crypt-SHA512加密算法初始化阶段的计算结果发送至FPGA,由FPGA进行循环阶段加速计算后,FPGA再将计算结果发送至CPU进行输出阶段的计算。
作为本发明Crypt-SHA512加密算法的加速装置的改进:
所述FPGA包括存储单元、状态控制器、数据选择器以及流水计算单元;
所述存储单元分别与CPU、数据选择器和流水计算单元相连;
所述数据选择器分别与状态控制器、存储单元和流水计算单元相连;
所述流水计算单元还与CPU相连;
所述存储单元存储用于消息分组填充的数据;
所述状态控制器用于控制状态转换并且向数据选择器输送对应的控制信号;
所述数据选择器根据控制信号从存储单元中选择用于消息分组填充的数据输送至流水计算单元;
所述流水计算单元用于对输入的消息分组填充的数据进行流水计算,并将循环阶段每次迭代的计算结果输出到存储单元,循环阶段最后一次迭代的计算结果输出到CPU。
作为本发明Crypt-SHA512加密算法的加速装置的进一步改进:
所述数据选择器的数量与消息分组的字节数相同;
消息分组填充的数据的每个字节通过对应数据选择器由存储单元输送至流水计算单元。
作为本发明Crypt-SHA512加密算法的加速装置的进一步改进:
所述消息分组填充的数据包括CPU初始化阶段计算结果和/或流水计算单元的计算结果;
所述存储单元包括Pmem、S mem、DL_1mem和DL_2mem;
所述Pmem和S mem均与CPU相连,用于储存CPU初始化阶段计算结果;
所述DL_1mem与CPU/流水计算单元输出端相连,DL_2mem与流水计算单元输出端相连,DL_1mem和DL_2mem用来存储循环阶段的流水计算单元的计算结果。
作为本发明Crypt-SHA512加密算法的加速装置的进一步改进:
所述流水计算单元为SHA-512计算单元;
所述状态控制器通过查找表向每个数据选择器输送控制信号;
所述查找表包含数据选择器一个循环周期内所有控制信号。
如:本实施例中数据选择器循环周期含42个控制信号,即,数据选择器控制细粒度数据通路的切换42次为一循环。
为解决上述技术问题,本发明还提出利用上述加速装置进行Crypt-SHA512加密算法的加速方法,其特征在于:
在Crypt-SHA512加密算法的循环阶段进行加速,包括以下步骤:
(1)、预处理:将口令集合按照口令长度分成不同的口令子集;
(2)、粗粒度数据通路调整:
根据口令子集的口令长度和固定的盐值长度对FPGA进行重构,令粗粒度数据通路与该口令子集的口令长度和盐值长度相对应;
(3)、初始化计算:
将步骤(2)所得口令子集中口令,按照每组N个口令进行分组;
每组口令依次在CPU端进行初始化阶段的计算,CPU将N个口令的初始化计算结果通过总线接口传输到FPGA上的存储单元Pmem、S mem和DL_1mem中;
(4)、迭代计算:
将消息分组填充所需的数据从存储单元Pmem、S mem、DL_1mem或DL_2mem中经过对应细粒度数据通路流水化地输入到SHA-512计算单元中进行计算,计算的结果存放在DL_2mem或DL_1mem中;
进行下一次迭代计算时,数据选择器控制细粒度数据通路调整,重复步骤(4),直至完成迭代计算;
注:第一次迭代用于消息分组填充的数据仅来源于初始化阶段,之后的迭代的消息分组的数据来源于初始化计算的结果和上一次迭代计算的结果。
(5)、口令认证:
SHA-512计算单元将步骤(4)完成迭代计算所得的计算结果输出至CPU;CPU根据这组N个口令的计算结果判断是否有正确的口令;如果没有正确口令,则取口令子集中的下一组N个口令重复步骤(4),直至在该口令子集中找到正确的口令,或将该口令子集中的口令全都计算和验证完或找到正确的口令;
当该口令子集中未找到正确的口令,则选取下一个口令子集重复步骤(2)至步骤(5)。
作为本发明Crypt-SHA512加密算法的加速方法的改进:
所述步骤(4)中细粒度数据通路调整方法为:
分析每次迭代的数据选择器的控制信号的变换规律,根据该控制信号的变换规律建立查找表;
依次输出查找表中的控制信号到对应的数据选择器,令对应的数据选择器控制细粒度数据通路的切换。
本发明在为Crypt-SHA512加密算法设计加速方案的过程中,如何在可编程逻辑阵列(FPGA)上为Crypt-SHA512加密算法设计直接高效的数据通路,从而使得流水化SHA-512计算单元不受阻塞。
本发明与现有技术相比,具有如下技术优势:
本发明能够为消息生成过程复杂的Crypt-SHA512加密算法中SHA-512计算任务的输入消息分组设计直接的数据通路,从而使得每个时钟周期都有一个消息分组输入到SHA-512计算单元中,使得数据流不间断地通过SHA-512计算单元,不出现阻塞,最终实现在CPU-FPGA异构平台上对结构复杂的Crypt-SHA512加密算法进行加速。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为实施例1中Crypt-SHA512加密算法在盐值长度为8的情况下在FPGA上实现的电路结构图;
图2为实施例1中Crypt-SHA512加密算法中用于细粒度数据通路切换的基于查找表的状态控制器。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。
Crypt-SHA512加密算法分为三个阶段,分别是初始化阶段、循环阶段和输出阶段。初始化阶段根据输入的口令明文和盐值进行SHA-512计算,得到的计算结果摘要作为循环阶段消息分组填充的数据源;循环阶段进行5000次的SHA-512迭代计算,每次迭代计算的摘要用于下次迭代的消息分组填充,将最后一次迭代计算的摘要作为结果输出;输出阶段将循环阶段输出的64字节的摘要经过base-64编码转化为86字节的字符串,和盐值等信息一同存储下来,用于后续的口令认证过程。
在这三个阶段中,初始化阶段的计算结构比较复杂,计算量小,SHA-512的平均计算次数仅占总量的0.28%;循环阶段计算密集,SHA-512的计算次数占总量的99.72%,操作单一,结构规整;输出阶段的作用仅仅是为了输出可打印的字符串,无SHA-512计算。因此Crypt-SHA512加密算法加速的关键是对循环阶段进行加速,
实施例1、Crypt-SHA512加密算法的加速装置,包括可编程逻辑阵列(FPGA)和CPU组成的CPU-FPGA异构系统,CPU和FPGA通过总线接口相互连接。
CPU用于进行Crypt-SHA512加密算法初始化阶段和输出阶段的计算,其中初始化阶段得到的计算结果摘要作为循环阶段消息分组填充的数据源。
FPGA用于进行Crypt-SHA512加密算法循环阶段的加速计算。CPU将Crypt-SHA512加密算法初始化阶段的计算结果输送到FPGA,由FPGA进行其循环阶段的加速计算,FPGA将计算结果再输送至CPU进行输出阶段的计算。
FPGA包括存储单元、状态控制器、数据选择器以及流水计算单元。
存储单元分别与CPU、数据选择器和流水计算单元信号相连。流水计算单元分别与CPU、数据选择器和存储单元信号相连。数据选择器还与状态控制器信号相连。
即,存储单元分别与CPU、数据选择器和流水计算单元相连。数据选择器分别与状态控制器、存储单元和流水计算单元相连。流水计算单元分别与CPU、数据选择器和存储单元相连。
流水计算单元为SHA-512计算单元,即图1中SHA-512流水线。流水计算单元用于对输入的消息分组填充的数据进行流水计算,并将循环阶段每次迭代的计算结果输出到存储单元,循环阶段最后一次迭代的计算结果输出到CPU。
为了提高加密算法的安全性,Crypt-SHA512加密算法在循环阶段不仅有大量的SHA-512计算任务(默认5000次,可设置为1,000到999,999,999),还增加了消息填充方式的随机性,消息填充的方式与口令长度、盐值长度和迭代次数有密切关系。
本发明中基于双粒度调整的数据通路优化技术对循环阶段的数据通路进行设计,为Crypt-SHA512加密算法中SHA-512计算任务的输入消息分组设计直接数据通路。上述粒度为数据通路调整过程中的最小单位,双粒度指两个层次的数据通路调整的最小单位不同,分别为粗粒度数据通路调整和细粒度数据通路调整,即,粗粒度数据通路调整和细粒度数据通路调整指在两个层面对数据通路进行调整。
数据通路,指FPGA中存储单元通过数据选择器到流水计算单元之间的数据通路。
粗粒度数据通路调整指的是对于某一口令长度,将8种可能的数据通路全部都进行重构。
细粒度数据通路调整指的是在重构后8种可能的数据通路中进行切换,选择其中的一个。
设计直接的数据通路指让每个字节的数据源(即,存储单元)都直接连接到流水计算单元的输入端口,从而实现每个时钟周期有128个字节的数据输入流水计算单元。
FPGA能够根据口令长度进行重构,从而重新配置粗粒度数据通路,使其与当前口令长度和盐值长度相对应。具体实现方式为:
先将口令集合按照口令长度分为不同口令子集,将口令子集分别输入到Crypt-SHA512加密算法中进行计算(即,先输入到CPU进行Crypt-SHA512加密算法初始化阶段的计算,再输入至FPGA进行Crypt-SHA512加密算法循环阶段部分计算),当改变口令子集的时候,即口令长度发生改变,此时根据当前口令长度和盐值长度对FPGA进行重构,将粗粒度数据通路重新配置成与当前口令长度和盐值长度相对应。
进行FPGA重构后,FPGA的存储单元配置成和当前口令长度和盐值长度相对应的大小,数据选择器的个数不发生变化,但是每个数据选择器的输入的数据来源和输入数据的个数有所变化。
注:FPGA重构是现有技术,故本发明中不对其进行重构的步骤进行详细描述。
存储单元储存用于消息分组填充的数据,存储单元包括P mem、S mem、DL_1mem和DL_2mem;其中,P mem和S mem均与CPU相连,用于存储CPU初始化阶段计算结果;DL_1mem与CPU/流水计算单元输出端信号相连,DL_2mem与流水计算单元输出端信号相连,DL_1mem和DL_2mem用来存储循环阶段的流水计算单元的计算结果。
其中DL_1mem和DL_2mem的作用是消除读写结构冲突,如,初始化的计算结果输入到DL_1mem中,作为循环阶段第一次迭代的消息分组的数据来源,第一次迭代的计算结果输出存在DL_2mem中,作为循环阶段第二次迭代的消息分组的数据来源,第二次迭代的计算结果输出存在DL_1mem中,如此循环。
状态控制器用于控制各个状态之间的跳转,每个状态都有对应的控制信号输给数据选择器,从而实现数据选择器控制信号的切换。
注:每个状态所对应的控制信号是通过查找表的方式来确定的,本实施例中所采用的查找表可参照图2。
查找表包含数据选择器一个循环周期内所有控制信号。
数据选择器用于根据所接收的控制信号控制细粒度数据通路的切换,从而控制SHA-512消息分组填充的数据从存储单元由对应的细粒度数据通路输送至流水计算单元输入端。
数据选择器的数量与消息分组填充的数据的字节数相同;消息分组填充的数据的每个字节通过对应的数据选择器由存储单元输送至流水计算单元。即,每个时钟周期都有一个消息分组输入到SHA-512计算单元中,使得数据流不间断地通过SHA-512计算单元,不出现阻塞,最终在CPU-FPGA异构平台上实现对结构复杂的Crypt-SHA512加密算法的加速。
本发明通过改变数据选择器的控制信号来进行数据通路的切换,为控制信号设计有限状态机。
本实施例中数据选择器循环周期含42个控制信号,即,数据选择器控制细粒度数据通路的切换42次为一循环。
流水计算单元用于对输入的消息分组填充的数据进行流水计算,并将循环阶段每次迭代的计算结果输出到存储单元,循环阶段最后一次迭代的计算结果输出到CPU。
本发明利用上述Crypt-SHA512加密算法的加速装置实现在FPGA上为Crypt-SHA512加密算法设计直接的数据通路,令流水化SHA-512计算单元不受阻塞,从而实现Crypt-SHA512加密算法的加速,缩短了加密算法计算口令密文的时间,即,使得通过该加密算法进行加密的口令的恢复速度加快。
为了充分利用SHA-512计算单元,使得每个时钟周期都有一个长度为128字节的消息分组输入到SHA-512计算单元中,必须将128个字节的消息分组完全分块,在数据源和SHA-512计算单元的输入端之间设计直接的数据通路,才能不造成流水线的阻塞。
考虑到Crypt-SHA512加密算法的消息分组的填充形式随机性强,消息分组中的每个字节的内容在不同的口令长度、盐值长度和迭代次数下,都会来自于不同的变量,要为其设计直接的数据通路,一方面需要128个数据选择器为128个字节长度的消息分组的每个字节选择数据来源,另一方面由于这些数据选择器的控制信号跟当前口令长度有关,难以为这些数据选择器的控制信号设计有限状态机,故本发明通过对粗粒度数据通路和细粒度数据通路的调整解决上述技术问题。
消息分组的填充形式与口令长度M、盐值长度及迭代次数有关。
口令长度M:Crypt-SHA512加密算法支持无限长的口令,但在实际应用中对口令的输入长度有所限制,因此本发明仅讨论口令长度M取1到16字节的情况,如图1所示,口令长度M取1到16。
盐值长度:盐值长度支持8到16字节,在大部分操作系统(如CentOS和Ubuntu)中盐值长度默认为8字节。在特定的一次口令恢复过程中,由于盐值是已知的,因此可以认为在特定的一次口令恢复过程中,盐值长度是固定的,如图1所示,本实施例取盐值长度为8的情况。
注:对于其他的口令长度和盐值长度本发明也同样适用。
迭代次数:在循环阶段中,消息分组的填充形式和迭代次数有关,根据迭代次数“是否为奇数”、“是否为3的倍数”、“是否为7的倍数”三个判断条件来确定。
由于细粒度数据通路的调整是在固定口令长度的基础上进行的,且认为在特定的一次口令恢复过程中,盐值长度是固定的,故通过固定口令长度后已经将数据通路的情况下降到8种(即,仅由迭代次数确定消息填充的方式),因此细粒度数据通路的调整是在这8种数据通路中进行切换。利用数据选择器对细粒度数据通路进行调整的具体方式为:
通过数据选择器连接数据源和SHA-512计算单元的输入接口来实现128个字节的消息分组的直接数据通路的设计,数据选择器的输入数据的个数取决于该字节有几个可能的数据来源,如图1所示,不同字节的数据选择器的输入数据的个数不同;通过改变数据选择器的控制信号来进行数据通路的切换,为控制信号设计有限状态机。根据对循环阶段消息分组填充方式的分析,迭代次数每42进行一轮循环,因此将这42种情况下的数据选择器控制信号都写到查找表中(如图2所示),依次循环输出查找表中的控制信号到128个数据选择器的控制端。因此细粒度数据通路调整是通过基于查找表的状态控制器对128个数据选择器的控制信号进行切换来实现的。
注:相关领域的技术人员经过对Crypt-SHA512加密算法的分析,可以写出图2查找表中全部的内容,同样根据查找表的内容,可以知道消息分组的每个字节的数据来源是什么,同样可以画出图1中全部数据选择器的连线方式,故为了图面的整洁,于图1省略部分数据选择器与存储单元的连线方式,于图2中省略部分控制信号。
本发明利用上述装置对Crypt-SHA512加密算法进行加速的方法如下:
(1)预处理:将口令集合按照口令长度分成不同的口令子集;
(2)粗粒度数据通路调整:
取其中一个口令子集,根据该口令子集的口令长度和固定的盐值长度(对于特定的一次口令恢复过程,盐值长度是固定的)进行基于FPGA重构的数据通路重构,将粗粒度数据通路重新配置成与当前口令长度和盐值长度相对应。
粗粒度数据通路调整解决的是SHA-512消息分组的填充方式随着口令长度改变而造成的数据通路改变的随机性问题。在不同口令长度下,SHA-512消息分组中的某个字节的内容,可能来自完全不同的数据来源;而将口令长度固定,就可以将数据通路的连接情况下降到8种。
本发明提出将用于口令恢复的口令集合按照口令长度分为多个不同的口令子集,对于每个口令子集,根据口令长度和盐值长度进行FPGA重构,将粗粒度数据通路调整为与该口令长度和盐值长度所对应的配置。因此粗粒度的数据通路调整是通过FPGA重构来实现的。
取口令子集中N个口令为一组,在CPU端进行初始化阶段的计算,将N个口令的初始化计算结果通过总线接口传输到FPGA上的存储单元Pmem、S mem和DL_1mem(DL_1mem和DL_2mem用来存储循环阶段的SHA-512的计算结果,是为了消除读写结构冲突而设置的两个存储单元)中。
(3)初始化计算:
本发明不仅按照口令长度将口令集合分成不同的口令子集,还对于每个口令子集对口令进行分组,一组N个口令。每组口令依次在CPU端进行初始化阶段的计算,CPU将N个口令的初始化计算结果通过总线接口传输到FPGA上的存储单元Pmem和S mem中。
由于上一次SHA-512计算的结果要作为下一次SHA-512计算的输入,前后两次SHA-512迭代之间具有数据相关性,而对于不同的口令的SHA-512计算之间没有数据相关性。通过对口令进行分组,首先计算该组全部N个口令的前一次SHA-512,再计算该组全部N个口令的下一次SHA-512。对口令子集进行分组不仅可以消除数据相关性,实现流水,还可以降低细粒度数据通路切换的频率,即,经过一组口令的N次SHA-512计算才进行一次细粒度数据通路的切换。
注:现有技术中单个口令依次迭代后完成计算,本发明则是N个口令依次计算完,在进入下一次迭代,从而减少细粒度数据通路的切换,加快计算速度。
N取值需考虑FPGA存储资源的同时满足消除数据相关性的需求,根据不同的FPGA,N的取值范围都不同,本实施例中在Xilinx ZYNQ系列的XC7Z030-3上进行实现,故以2048个口令为一组(N取值为2048)。
N取值的依据:首先N取值要比流水级数大,才能达到消除数据相关性的效果;其次由于这组口令的初始化计算结果存储下来要用于循环阶段,以及迭代过程的计算结果要存储下来用于下次迭代,一组口令N过大会造成FPGA存储资源不够,因此根据FPGA的BRAM资源来决定N的取值的最大值。
(4)迭代计算:
将消息分组填充所需的数据从存储单元Pmem、S mem、DL_1mem或DL_2mem中经过对应细粒度数据通路流水化地输入到SHA-512计算单元中进行计算,计算的结果存放在DL_2mem或DL_1mem中;
进行下一次迭代计算时,数据选择器控制细粒度数据通路的切换,重复步骤(4),直至完成迭代计算。
进行迭代计算的过程中,状态控制器根据当前迭代次数,从查找表中读取当前迭代次数所对应的数据选择器的控制信号,输入到数据选择器的控制端(细粒度数据通路的切换),将SHA-512消息分组填充的数据从存储单元Pmem、S mem和DL_1mem(或DL_2mem)中经过选择的细粒度数据通路流水化地输入到SHA-512计算单元中,进行计算,计算的结果存放在DL_2mem(DL_1mem)中,对于下一次迭代同样进行同样的操作,进行细粒度数据通路的切换。
注:第一次迭代用于消息分组填充的数据仅来源于初始化阶段,之后的迭代的消息分组的数据来源于初始化计算的结果和上一次迭代计算的结果。
细粒度数据通路调整解决的是算法循环阶段中SHA-512消息分组的填充方式随着迭代次数改变而造成数据通路改变的随机性问题。在循环阶段,根据迭代次数“是否为奇数”、“是否为3的倍数”、“是否为7的倍数”三个判断条件来确定消息分组的填充方式,一共有8种可能的填充格式,也就是说有8条数据通路。由于数据通路变化的规律是每42次一循环,也就是说迭代次数间隔42的两次迭代的数据通路是一样的。
本发明提出对128字节消息分组的每个字节都用数据选择器连接数据源(存储单元)和SHA-512流水计算单元的输入端,不同的数据通路的切换通过改变数据选择器的控制信号来实现。由于数据通路的变化规律是每42次一循环(即,每42次为一个循环周期),因此将前42次迭代次数的数据选择器的控制信号写入查找表中,然后依次循环输出查找表中的控制信号到128个数据选择器。因此细粒度的数据通路调整是通过基于查找表的状态控制器对128个数据选择器的控制信号进行切换来实现的。
(5)口令认证:
SHA-512计算单元输出步骤(4)中N个口令的最后一次迭代所得的计算结果至CPU;CPU根据这组N个口令的计算结果判断是否有正确的口令;如果没有正确口令,则取口令子集中的下一组N个口令进行同样的5000次迭代的操作,直至找到正确的口令或将这一长度的口令子集中的口令全都计算和验证完。
注:加密算法的计算结果就是候选口令的密文,判断候选口令是否是正确的口令,只需要比较候选口令的密文是否和正确口令的密文是否一致即可。
当该口令子集中未找到正确的口令,则选取下一个口令子集重复步骤(2)至步骤(5)。即,取下一个口令子集,根据该口令子集的口令长度和固定的盐值长度对FPGA进行重构(粗粒度数据通路调整),直到所有的口令子集都完成计算和验证,口令恢复过程结束。
另外,为了验证本发明的有益效果,将实施例应用于Crypt-SHA512加密算法的加速,在Xilinx ZYNQ系列上进行实现,所用的FPGA为XC7Z030-3。FPGA采用的时钟频率为100MHz,实现了一条流水级数为80的SHA-512流水线(即,SHA-512计算单元),系统速度达到18,855passwords/s,每焦耳加密的口令数为1645个,相比基于NVIDIA GTX 1080Ti GPU实现的Hashcat软件加速方案每焦耳加密的口令数为742个,本发明所实现的流水线硬件加速方案在能效上有2.2倍的提升。
最后还需要值得注意的是,以上列举的仅仅是本发明的具体实施例。显然本发明不仅限于以上实施例。本领域的普通技术人员能从本发明公开的内容直接导出或者联想到的所有变形,均认为是本发明的保护范围。
Claims (6)
1.利用加速装置进行Crypt-SHA512加密算法的加速方法,其特征在于:
Crypt-SHA512加密算法的加速装置,包括FPGA与通用CPU组成的CPU-FPGA异构系统,CPU和FPGA通过总线接口相互连接,所述CPU用于进行Crypt-SHA512加密算法初始化阶段和输出阶段的计算;所述FPGA用于进行Crypt-SHA512加密算法循环阶段的加速计算;所述CPU将Crypt-SHA512加密算法初始化阶段的计算结果发送至FPGA,由FPGA进行循环阶段加速计算后,FPGA再将计算结果发送至CPU进行输出阶段的计算;
在Crypt-SHA512加密算法的循环阶段进行加速,包括以下步骤:
(1)、预处理:将口令集合按照口令长度分成不同的口令子集;
(2)、粗粒度数据通路调整:
根据口令子集的口令长度和固定的盐值长度对FPGA进行重构,令粗粒度数据通路与该口令子集的口令长度和盐值长度相对应;
(3)、初始化计算:
将步骤(2)所得口令子集中口令,按照每组N个口令进行分组;
每组口令依次在CPU端进行初始化阶段的计算,CPU将N个口令的初始化计算结果通过总线接口传输到FPGA上的存储单元P mem、S mem和DL_1mem中;
(4)、迭代计算:
将消息分组填充所需的数据从存储单元P mem、S mem、DL_1mem或DL_2mem中经过对应细粒度数据通路流水化地输入到SHA-512计算单元中进行计算,计算的结果存放在DL_2mem或DL_1mem中;
进行下一次迭代计算时,数据选择器控制细粒度数据通路调整,重复步骤(4),直至完成迭代计算;
(5)口令认证:
SHA-512计算单元将步骤(4)完成迭代计算所得的计算结果输出至CPU;CPU根据这组N个口令的计算结果判断是否有正确的口令;如果没有正确口令,则取口令子集中的下一组N个口令重复步骤(4),直至在该口令子集中找到正确的口令,或将该口令子集中的口令全都计算和验证完;
当该口令子集中未找到正确的口令,则选取下一个口令子集重复步骤(2)至步骤(5)。
2.根据权利要求1所述的Crypt-SHA512加密算法的加速方法,其特征在于:
所述步骤(4)中细粒度数据通路调整方法为:
分析每次迭代的数据选择器的控制信号的变换规律,根据该控制信号的变换规律建立查找表;
依次输出查找表中的控制信号到对应的数据选择器,令对应的数据选择器控制细粒度数据通路的切换。
3.根据权利要求2所述的Crypt-SHA512加密算法的加速方法,其特征在于:
所述FPGA包括存储单元、状态控制器、数据选择器以及流水计算单元;
所述存储单元分别与CPU、数据选择器和流水计算单元相连;
所述数据选择器分别与状态控制器、存储单元和流水计算单元相连;
所述流水计算单元还与CPU相连;
所述存储单元存储用于消息分组填充的数据;
所述状态控制器用于控制状态转换并且向数据选择器输送对应的控制信号;
所述数据选择器根据控制信号从存储单元中选择用于消息分组填充的数据输送至流水计算单元;
所述流水计算单元用于对输入的消息分组填充的数据进行流水计算,并将循环阶段每次迭代的计算结果输出到存储单元,循环阶段最后一次迭代的计算结果输出到CPU。
4.根据权利要求3所述的Crypt-SHA512加密算法的加速方法,其特征在于:
所述数据选择器的数量与消息分组的字节数相同;
消息分组填充的数据的每个字节通过对应数据选择器由存储单元输送至流水计算单元。
5.根据权利要求4所述的Crypt-SHA512加密算法的加速方法,其特征在于:
所述消息分组填充的数据包括CPU初始化阶段计算结果和/或流水计算单元的计算结果;
所述存储单元包括P mem、S mem、DL_1mem和DL_2mem;
所述P mem和S mem均与CPU相连,用于储存CPU初始化阶段计算结果;
所述DL_1mem与CPU/流水计算单元输出端相连,DL_2mem与流水计算单元输出端相连,DL_1mem和DL_2mem用来存储循环阶段的流水计算单元的计算结果。
6.根据权利要求5所述的Crypt-SHA512加密算法的加速方法,其特征在于:
所述流水计算单元为SHA-512计算单元;
所述状态控制器通过查找表向每个数据选择器输送控制信号;
所述查找表包含数据选择器一个循环周期内所有控制信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810562960.5A CN108959128B (zh) | 2018-06-04 | 2018-06-04 | Crypt-SHA512加密算法的加速装置与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810562960.5A CN108959128B (zh) | 2018-06-04 | 2018-06-04 | Crypt-SHA512加密算法的加速装置与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108959128A CN108959128A (zh) | 2018-12-07 |
CN108959128B true CN108959128B (zh) | 2023-03-31 |
Family
ID=64492782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810562960.5A Active CN108959128B (zh) | 2018-06-04 | 2018-06-04 | Crypt-SHA512加密算法的加速装置与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108959128B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104165A (zh) * | 2019-12-12 | 2020-05-05 | 南京万维御芯计算技术有限公司 | 一种节省寄存器资源的边缘计算方法 |
CN112104449B (zh) * | 2020-08-20 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种用于哈希算法的sdk |
CN112199214B (zh) * | 2020-10-13 | 2023-12-01 | 中国科学院信息工程研究所 | 一种gpu上的候选口令生成及应用破解方法 |
CN112564922B (zh) * | 2020-12-22 | 2022-07-26 | 创元网络技术股份有限公司 | 基于拟态计算的多功能集成高速hmac-sha1口令恢复方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106100825A (zh) * | 2016-05-31 | 2016-11-09 | 深圳市风云实业有限公司 | 基于fpga的高吞吐量sha‑1算法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010128392A (ja) * | 2008-11-28 | 2010-06-10 | Canon Inc | ハッシュ処理装置及びその方法 |
US8832464B2 (en) * | 2009-03-31 | 2014-09-09 | Oracle America, Inc. | Processor and method for implementing instruction support for hash algorithms |
US8694703B2 (en) * | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
EP2596593A1 (en) * | 2010-07-23 | 2013-05-29 | Emue Holdings Pty Ltd | Encryption device and method |
CN103116730B (zh) * | 2013-01-21 | 2016-05-11 | 厦门市美亚柏科信息股份有限公司 | 一种dpapi加密数据的解密方法和系统 |
CN103701829B (zh) * | 2014-01-03 | 2017-01-04 | 厦门市美亚柏科信息股份有限公司 | 一种离线解析dpapi加密数据的方法 |
CN104392153B (zh) * | 2014-12-10 | 2017-12-26 | 北京深思数盾科技股份有限公司 | 一种软件保护方法及系统 |
CN105159654B (zh) * | 2015-08-21 | 2018-06-12 | 中国人民解放军信息工程大学 | 基于多线程并行的完整性度量散列算法优化方法 |
CN105912501B (zh) * | 2016-05-06 | 2018-11-06 | 东南大学—无锡集成电路技术研究所 | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 |
CN117692170A (zh) * | 2016-09-15 | 2024-03-12 | 美商纳兹控股有限责任公司 | 通信方法和设备、折叠数据的方法和系统以及计算机 |
CN107135078B (zh) * | 2017-06-05 | 2019-12-20 | 浙江大学 | Pbkdf2密码算法加速方法及所用装置 |
CN107492064B (zh) * | 2017-07-06 | 2019-10-08 | 河南大学 | 基于忆阻混沌系统、初等元胞自动机和压缩感知的图像加密方法 |
-
2018
- 2018-06-04 CN CN201810562960.5A patent/CN108959128B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106100825A (zh) * | 2016-05-31 | 2016-11-09 | 深圳市风云实业有限公司 | 基于fpga的高吞吐量sha‑1算法 |
Also Published As
Publication number | Publication date |
---|---|
CN108959128A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108959128B (zh) | Crypt-SHA512加密算法的加速装置与方法 | |
CN111464308B (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
EP3758275B1 (en) | Post quantum public key signature operation for reconfigurable circuit devices | |
Wiemer et al. | High-speed implementation of bcrypt password search using special-purpose hardware | |
Khalil-Hani et al. | Hardware Acceleration of OpenSSL cryptographic functions for high-performance Internet Security | |
Homsirikamol et al. | Security margin evaluation of SHA-3 contest finalists through SAT-based attacks | |
CN111913749A (zh) | 基于流水线的sm3算法fpga实现方法及系统 | |
EP1766854A1 (en) | Apparatus and method for performing md5 digesting | |
CN109190413B (zh) | 一种基于fpga和md5加密的串行通信系统 | |
US20050240764A1 (en) | Apparatus and method for performing RC4 ciphering | |
CN116488794A (zh) | 基于fpga的高速sm4密码模组实现方法及装置 | |
Nabil et al. | Design and implementation of pipelined and parallel AES encryption systems using FPGA | |
Abdelraheem et al. | Cryptanalysis of ARMADILLO2 | |
Zhang et al. | A hybrid-CPU-FPGA-based solution to the recovery of sha256crypt-hashed passwords | |
Kumar et al. | Secured network on chip (NoC) architecture and routing with modified TACIT cryptographic technique | |
Iyer et al. | Efficient hardware architectures for AES on FPGA | |
CN115412241B (zh) | 实现后量子密码算法Kyber和Saber的融合密码安全处理器 | |
US11042488B2 (en) | Diversifying a base symmetric key based on a public key | |
Al-Doori et al. | A multi polynomial CRC circuit for LTE-Advanced communication standard | |
CN114615069B (zh) | 一种Quartet轻量级加密算法的实现装置及方法 | |
Pham et al. | Flexible and Scalable BLAKE/BLAKE2 Coprocessor for Blockchain-Based IoT Applications. | |
CN112988235B (zh) | 一种高效率第三代安全散列算法的硬件实现电路及方法 | |
Ding et al. | Energy-efficient RAR3 password recovery with dual-granularity data path strategy | |
Park | Analysis of AES hardware implementations | |
Renugadevi et al. | Methods for improving the implementation of advanced encryption standard hardware accelerator on field programmable gate array‐A survey |
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 |