APP下载

基于多核FPGA的HMAC-SHA1口令恢复

2020-11-05周清雷

计算机工程与科学 2020年10期
关键词:状态机流水线口令

冯 峰,周清雷,李 斌

(郑州大学信息工程学院,河南 郑州 450001)

1 引言

消息认证码MAC(Message Authentication Code)是一种使用密钥对通信消息进行认证的机制,在开放的、通用的网络上常利用该机制来保证通信消息的机密性、完整性和有效性。基于Hash算法(如MD5、SHA系列、SM3等)的消息认证码是目前广泛使用的消息认证码,即HMAC(keyed-Hash Message Authentication Code),它是美国国家标准与技术研究院NIST(National Institute of Standards and Technology)指定的标准[1,2],且被要求在IPsec协议族和其他如SSL的Internet协议中实现。可以用HMAC认证的消息种类有很多,本文中HMAC-SHA1(Hash-based Message Authentication Code-secure Hash Algorithm 1)针对的应用场景是基于SHA1算法对用户密码进行认证,以确认密码的正确性。正因为HMAC具有较高的安全性,所以也经常被不法分子所利用,以传播危害公共安全的数据信息,这给信息安全监管和计算机取证工作带来了很大困难。因此,HMAC口令认证码的快速口令恢复对信息安全具有很重要的意义。

对于口令的恢复,仅依靠暴力穷举是不可行的。有研究表明,用户密码服从Zipf分布[3],这样就可以利用“口令猜测算法”和“口令猜测模型”并结合社会工程学等方法[4 - 6]获得对某一用户有针对性的信息,从而分析出对应高概率口令的特征并生成字典,最后采用字典+穷举结合的方法猜出口令。但是,随着口令长度的增加,口令的验证速度依然是最亟待解决的问题。口令恢复加速的研究与具体算法具有强依赖性。因此,从计算平台的角度来看,目前口令恢复加速的研究现状主要是基于CPU的通用平台以及基于OpenCL和CUDA架构的GPU平台。前者破解效率较低,后者有功耗高且因受到访存限制而影响性能提升的问题。现场可编程门阵列FPGA(Field Programmable Gate Array)目前已广泛应用在各个领域[7 - 9],利用FPGA硬件并行的优势并采用逻辑上的流水线工作模式,可使每个时钟周期能够完成更多的处理任务且具有相当低的能耗[10,11],再构建多核FPGA硬件平台则可完成多流水线的并行计算。因此,基于FPGA硬件平台的口令恢复更具有优势。

本文实现了基于多核FPGA的高速HMAC-SHA1口令恢复,通过深入分析HMAC-SHA1算法,使用可重构硬件FPGA和流水线技术,以展开结构和引入保留进位加法器CSA(Carry Save Adder)优化SHA1算核,同时实现了全流水线和状态机模式的HMAC-SHA1算子,最后设计并实现了字典+穷举模式的口令恢复架构。

2 算法分析

2.1 SHA1

SHA是著名的密码散列算法家族,这些算法具有单向性、抗冲突性等特性,SHA1是其中之一。SHA1能对输入的消息产生160 bit固定长度的消息摘要。SHA1的内容如下所示:

(1)消息填充与分块。

在输入消息的后面加1位1,再向后用0填充,直到总位长对512取模时的结果为448,最后继续填充64位,用于保存初始输入消息的长度。填充后的消息位长为512的整数倍,按每512位进行分块。

(2)单个消息块的计算过程。

各个消息块按分块顺序执行本过程。本过程总共4轮,每轮20步。设t为本过程的步数,则0≤t≤79。本过程的计算如式(1)所示:

(1)

其中,参量Hi,i=0,1,…,4在消息块为首块时是固定的5个常数,为非首块时是前一个消息块的计算结果;参量Kt和ft()分别是轮常数和轮函数,它们在4轮上均不相同;参量Wt是明文分组,设消息块(512 bit)按每32 bit进行分割后的顺序表示为{M0,M1,…,M15},则它的取值如式(2)所示:

(2)

最后在本过程结束时,将求得的Hi与它们在本过程刚开始时的初始值分别相加作为结果输出。

2.2 HMAC-SHA1口令处理算法

HMAC-SHA1口令处理算法的过程如下所示:

设pwd为密钥,salt为盐值。若pwd的长度大于512 bit则用SHA1处理pwd并将结果作为新的pwd;salt的长度小于448 bit。

(1)对pwd补0至512位,然后与一个512位且每8位重复出现十六进制36的值进行异或得到消息块Message,此Message和SHA1初始H输入SHA1进行运算,结果H记为IPAD。

(2)对pwd补0至512位,然后与一个512位且每8位重复出现十六进制5c的值进行异或得到消息块Message,此Message和SHA1初始H输入SHA1进行运算,结果H记为OPAD。

(3)对salt进行SHA1规则的消息填充,其中长度部分要算上产生IPAD时Message所占的64 B,即512 bit,填充后得到本次消息块Message。此Message和IPAD输入SHA1进行运算,结果H向下继续传递。

(4)对上次的结果H进行SHA1规则的消息填充,其中长度部分要算上产生OPAD时Message所占的64 B,即512 bit,填充后得到本次消息块Message。此Message和OPAD输入SHA1进行运算,结果H为RESULT。

HMAC-SHA1口令处理算法的过程[1]如图1所示。

Figure 1 Process of HMAC-SHA1 password processing algorithm图1 HMAC-SHA1口令处理算法的过程

2.3 HMAC-SHA1口令恢复

由于Hash算法的单向性,HMAC-SHA1口令恢复的主要思路就是不断尝试HMAC-SHA1口令认证,直到碰撞出目标口令认证码所代表的正确密钥。本文将目标口令认证码称为HashValue,HashValue和salt的组合称为特征串。

HMAC-SHA1口令恢复的过程如下所示:

(1)根据给定的特征串解析出HashValue和salt。

(2)采用字典+穷举结合的方法来生成试探密钥。

(3)若试探密钥已全部枚举完则就此结束口令恢复,口令恢复失败,否则继续。

(4)以试探密钥和salt进行HMAC-SHA1口令处理,处理结果记为digest。

(5)若digest与HashValue一致,则digest对应的试探密钥即为正确密钥,口令恢复成功,否则重新从(2)开始。

HMAC-SHA1口令恢复的过程如图2所示。

Figure 2 Password recovery process of HMAC-SHA1图2 HMAC-SHA1口令恢复的过程

至此,本文对HMAC-SHA1口令进行恢复的相关算法已介绍完毕。由前述算法分析可知,对HMAC-SHA1口令进行恢复的主要运算量在于SHA1算核的运算,在具体实现中,SHA1算核的运算速度将成为整个HMAC-SHA1口令恢复速度的瓶颈。因为SHA1算核需要经历80步运算,每一步运算中包含与、或、异或、移位等子运算,站在FPGA硬件设计的角度,可以针对这些步骤、子运算等结合时钟周期因素产生许多设计思路,但是不同的思路将最终得到不同的SHA1计算速度。比如,SHA1的串行实现设计难度小,但是最终工作的时钟频率却很低,这无疑成为了速度瓶颈。

为了后续描述方便,本文将“对单个消息块进行SHA1运算”称为“一次SHA1”。由于整个HMAC-SHA1口令处理过程中只包含4个消息块,因此,每进行一次HMAC-SHA1口令处理实际需要进行4次SHA1。

3 HMAC-SHA1高速口令恢复实现与优化

3.1 SHA1实现与优化

(1)流水线。

对于FPGA的设计,用硬连线的方式实现复杂的运算是不可取的。首先,复杂的硬连线会占用大量的资源。其次,复杂的硬连线会加大时钟延迟进而目标逻辑不能工作在高频时序,如果时钟频率降低,则吞吐量也会降低,对应的运算速度也随之降低,强行设置较高的时钟频率将会导致布线失败。最后,硬连线不可缓存数据,需要通过寄存器进行缓存,且寄存器的读写需要占用一个时钟周期。因此,需在此基础上考虑SHA1的实现。

根据一次SHA1运算的过程可知,一次SHA1运算需要80步,每一步的输入、输出仅与相邻的步具有依赖关系,因此可将SHA1算法通过流水线技术实现为并行模式,从而降低时间复杂度。在本文实现中,为了算法整体的衔接所加入的输入缓存和输出缓存各占用一个时钟周期,因此,本文对一次SHA1的实现为82级流水线模式,本文后续将该实现称为流水线SHA1算核。FPGA中的流水线是以空间、可编程逻辑资源来换取运算速度的技术,流水线SHA1算核在满负荷工作时,每一个时钟周期都可得出一次SHA1运算的结果。

由前述算法分析可知,一次SHA1运算中的Wt参量在80步中各不相同且需要由之前已有的Wt计算得出。因此,Wt的计算和流水线传递是流水线SHA1算核的一个较大部分,以下是对Wt在具体实现中的逻辑描述,包括了缓存、计算和传递3个方面:

①缓存。

Wt的缓存需要依靠比较多的寄存器。在流水线SHA1中,不仅要求能够提供每一步运算所需的Wt,还要保证新的Wt能够同时被算出,而需要计算得到的Wt总共是64个,实际上在流水线SHA1中,输入缓存时钟时就可以开始Wt的计算了。因此,流水线SHA1的前63步在提供当前步骤Wt的同时还在计算后续的Wt,至于最后17步则只用输出已经算好的Wt即可。这样来看,首先需要一个长度为64的寄存器数组来保存通过计算得到的Wt值;然后需要80个寄存器数组分别对应SHA1的80步,其中,前64个寄存器数组的长度均是16,后16个寄存器数组的长度从16开始依次递减。

②计算。

流水线SHA1对Wt计算最大的优势是高度的并行性。在某一时钟周期内,前述缓存方式能够同时对应82个独立的SHA1运算,逻辑上的每一步都有对应的寄存器数组配合完成Wt的计算。例如流水线SHA1的第63步中,进行第80个Wt的计算,这将通过存储了该Wt所需前16个值的寄存器数组来辅助完成,其余步骤下均是如此。

③传递。

流水线SHA1对Wt的传递是为了在每一步中顺利输出该步骤所需的Wt值。具体做法是80个对应每一步的寄存器数组之间进行错位赋值,即舍弃数组中首个寄存器内的值,并将后续寄存器内的值依次传递到下个数组编号减1的寄存器中去,最后把新计算得到的Wt值追加到下个数组的最后一个寄存器。这些在寄存器数组间的赋值同样是完全并行的。

Wt计算和传递的逻辑如图3所示。

Figure 3 Logical sketch of calculation and transfer of Wt图3 Wt计算和传递的逻辑示意

在流水线SHA1算核中,对Wt的维护是队列式缓存逻辑。从逻辑上看,在队首元素参与运算的同时计算队尾元素,在队首元素出队的同时将新的队尾元素入队。流水线模式使得上述逻辑按流水线级数并行,在一个时钟周期内每一级处理都对应着互不相关的SHA1运算,并随着时钟周期以流水线的方式将这种对应关系通过寄存器数组向下传递。

(2)展开结构。

通过分析SHA1算法可知,SHA1的每一步运算中,对第1个缓存H0的计算最为复杂。对于FPGA硬件来说,无缓存式运算参与的器件参数越多,则布线的空间距离越大,即运算的关键路径越长,这会使得延迟增大进而拉低最大工作频率。因此,可通过展开结构的方式做进一步优化。

基于前述流水线的实现方式,本文对缓存H0的计算进行拆分,以优化上述问题。因为输入缓存的存在使SHA1运算推后了一个时钟周期,所以计算缓存H0所需的E+Wt+Kt部分可预先计算完成。因此,对缓存H0的计算被分成2个时钟周期来完成,第1个时钟周期进行预计算,这样做使得单次参与缓存H0计算的参数个数减少了。对计算缓存H0的结构展开前后对比,如图4所示,图4a为展开前,图4b为展开后。

Figure 4 Comparison of calculation structure of H0 before and after expansion 图4 对计算缓存H0的结构展开前后对比

(3)使用保留进位加法器。

在对计算缓存H0进行实现时,本文对其中的加法运算进行了优化。FPGA编程面向的是底层硬件,因此FPGA适合进行位运算,加法运算的延迟要比位运算高。保留进位加法器CSA能够通过增加位运算来减少加法运算,从而降低计算延迟,保证流水线的吞吐率[12]。CSA运算如下所示:

其中,S(a,b,c)为和输出,Ca(a,b,c)为进位输出,并且a、b、c的二进制位数一致。

3.2 HMAC-SHA1口令处理实现

前文已指出HMAC-SHA1口令处理需要进行4次SHA1。为了描述方便,本文对这4次SHA1进行命名,并根据前文算法描述的逻辑过程排列命名的顺序:

其中,ipad_sha1+salt_sha1实际是SHA1对第1次消息输入进行处理,opad_sha1+hmac_sha1实际是SHA1对第2次消息输入进行处理。通过分析可知:

ipad_sha1与opad_sha1没有运算上的依赖顺序,两者可同时进行运算;salt_sha1与opad_sha1没有运算上的依赖顺序,两者可同时进行运算;其他任何组合都具有运算上的依赖顺序,运算顺序与上述命名顺序相同。

HMAC-SHA1口令处理需要进行的SHA1次数在逻辑上是固定的,但用FPGA进行具体实现时,前述流水线SHA1算核的物理个数是可以进行设计的。本文后续把对HMAC-SHA1口令处理的实现称为HMAC-SHA1口令处理算子。

对于HMAC-SHA1口令处理本文进行了以下2种实现:

(1)HMAC-SHA1口令处理全流水线算子。

本算子将流水线SHA1算核实例化了4份,即物理空间上存在4份算核电路。在工作逻辑上,本算子采用ipad_sha1与opad_sha1并行工作且两者与salt_sha1、hmac_sha1按命名顺序串行工作的工作逻辑。在算子满负荷运行时,该工作逻辑在拥有4份算核电路的算子中以全流水线的方式推进。算子实现时,opad_sha1产生的阶段结果经由FIFO进行了82级缓存,为的是在逻辑上延迟至hmac_sha1开始。该FIFO通过一个双端口Block RAM实现的IP核来配置。本算子的工作逻辑如图5所示。

Figure 5 Full pipeline operator working logic of HMAC-SHA1 password processing 图5 HMAC-SHA1口令处理全流水线算子工作逻辑

本算子的资源占用主要是4份流水线SHA1算核电路,满负荷工作时,每82×4个时钟周期可产生82×4个口令处理结果。

(2)HMAC-SHA1口令处理状态机算子。

本算子将流水线SHA1算核实例化了一份,即物理空间上存在一份算核电路。在工作逻辑上,本算子采用ipad_sha1、opad_sha1、salt_sha1、hmac_sha1按命名顺序串行工作的工作逻辑。在算子满负荷运行时,该工作逻辑在拥有一份算核电路的算子当中以状态机流水线的方式推进,状态机决定算核当前状态是在进行哪一次SHA1运算且算核以流水线模式工作。算子实现当中,共需要2个FIFO来进行缓存,opad_sha1所需的512 bit消息块经由第1个FIFO进行了82级缓存,为的是在逻辑上延迟至opad_sha1开始,ipad_sha1和opad_sha1产生的阶段结果经由第2个FIFO进行了82级缓存,为的是在逻辑上延迟至salt_sha1和hmac_sha1开始。以上2个FIFO均通过一个双端口Block RAM实现的IP核来配置。本算子的工作逻辑如图6所示。

Figure 6 State machine operator working logic of HMAC-SHA1 password processing 图6 HMAC-SHA1口令处理状态机算子工作逻辑

本算子的资源占用主要是一份流水线SHA1算核电路,满负荷工作时,每82×4个时钟周期可产生82个口令处理结果。

最后,对比2种实现方式。综合了资源占用和运算速度后,在同等工作频率下,理论上两者的总体性能相当,但状态机方式能够更好地支持扩展改进,具有更大的实际应用价值,而全流水线方式与算法本身具有强耦合性,不利于扩展改进。HMAC具有很多的应用场景或迭代使用,比如“PBKDF2-HMAC”对HMAC迭代了1 000次,此时全流水线的实现方式将不再适用。

3.3 口令恢复架构与实现

前述工作中,本文实现了能够高速进行HMAC-SHA1口令处理的算子,这是进行HMAC-SHA1口令恢复的核心工作模块。围绕它实现HMAC-SHA1口令恢复,本文设计了如图7所示的架构,本文将该架构以外的部分称为“外部”。

Figure 7 Password recovery architecture图7 口令恢复架构

从图7中可以看出,顶层模块封装了整个架构,口令恢复任务所需的相关数据从外部缓存到接口模块中的FIFO,然后在内部时钟频率下被读取到解析模块进行解析处理,解析后的口令恢复任务被分配到对应的口令恢复模块进行计算,所有的计算结果都将汇总到选择模块进行处理,若口令恢复成功,则相关信息再经过接口模块输出到外部。其中,口令恢复模块接到任务后通过口令生成模块来产生口令,口令经过口令处理模块计算后,结果交给匹配模块来进行检查。以下是对各个模块的介绍,其中所用到的FIFO均通过一个双端口Block RAM实现的IP核来配置。

(1)TOP顶层模块。作用是实例化INTERFACE、ANALYSIS、OPERATOR和SELECT模块,并依照各模块的功能正确连通它们的接口。

(2)INTERFACE接口模块。作用是承担与外部的交互工作,外部通过顶层TOP模块连入INTERFACE模块。外部与TOP模块内部处在不同的时钟域,因为TOP模块内部需要完成计算任务,所以TOP模块内部时钟频率要比外部时钟频率高很多。因此,INTERFACE模块需要通过FIFO来缓存外部传入的口令恢复配置信息,以此来隔离时钟域。

(3)ANALYSIS解析模块。作用是解析口令恢复配置信息并下发口令恢复任务,这些信息包括算例编号、字典规则、特征串等。

(4)OPERATOR口令恢复模块。本文将该模块的实例称为口令恢复算例。该模块包含ENUM、HMAC-SHA1和MATCH子模块,作用是依照各子模块的功能正确连通它们的接口。各子模块具体如下所示:

①ENUM口令生成模块。作用是根据本算例的口令恢复任务依照字典规则生成口令。因为口令处理需要经过复杂的计算过程,所以被处理的口令还需要通过FIFO进行缓存,以便与口令处理结果同步对应。

此处对本文中的可穷举字典规则进行简要说明。对于一条口令字典规则,它能表示的最大口令长度为32 bit可打印字符位置,一个口令字符位置可以是明文也可以是掩码,掩码有4种,分别是数字、小写字母、大写字母、标点符号。例如“#1#2#3?d?l?u?s”表示一个7位密码,其中,#1、#2、#3表示1、2、3这3个明文字符,?d表示数字0~9的掩码,?l表示小写字母a~z的掩码,?u表示大写字母A~Z的掩码,?s表示标点符号掩码。

②HMAC-SHA1口令处理模块。该模块就是前文实现的HMAC-SHA1口令处理算子。

③MATCH匹配模块。作用是检查口令恢复是否成功。

(5)SELECT选择模块。作用是选择口令恢复成功的算例,并将其口令恢复结果发送给INTERFACE模块。

在以上架构的实现中,根据板卡上FPGA芯片的资源量和所选内部时钟频率,应尽可能多地实例化口令恢复算例并完成综合以及布线,这样能最大化单块FPGA芯片的口令恢复速度。

3.4 多核FPGA口令恢复设计与管理

本文中所谓多核FPGA就是一块PCIe外设板卡上同时搭载多个独立的FPGA芯片,该板卡的具体构成以及FPGA芯片型号将在后续实验部分进行阐述。

对于基于多核FPGA的口令恢复,本文构建了对应的口令恢复系统并采用树状结构设计其管理方式。在整套系统中,FPGA板卡的宿主机将担任口令恢复任务分配管理的重要角色。具体做法是,用户机统一管理所有计算节点,一台宿主机及其上所包含的若干前述板卡整体被定义为一个计算节点;单个计算节点上的宿主机管理其上所有可利用算例,这其中的关系是,宿主机包含若干板卡,一块板卡搭载多个FPGA核,一个FPGA上实例化了多个算例。综上,整个口令恢复任务通过分配可穷举字典规则的方式进行逐级下放,使得最终所有算例根据所分得的字典规则能够并行完成各自的任务,整个系统具有极高的效率。该结构如图8所示。

Figure 8 Structure of password recovery system based on multi-core FPGA图8 基于多核FPGA的口令恢复系统结构示意

从图8中可以看出,该结构能够通过增加计算节点的数量来动态扩展整个口令恢复任务的算力配置,具有很高的灵活性。

4 实验及结果分析

本文实验涉及的硬件平台如下所示:

(1)FPGA加速卡。该加速卡集成了4个FPGA芯片,每个芯片的型号均为XILINX公司的XCKU060,板卡通过PCIe接口与上位机通信和上电。图9所示为该加速卡的简要构成。

Figure 9 Brief composition of FPGA acceleration card图9 FPGA加速卡简要构成示意

(2)对比平台。CPU,Intel Core i5-8500 @ 3.00 GHz 6核;GPU,NVIDIA GeForce GTX 1080 (8 GB/EVGA)。

辅助软件有:

(1)Vivado。针对XILINX的FPGA芯片进行开发需要用到Vivado,它是XILINX公司提供给开发者的集成开发环境,能够在FPGA开发的整个生命周期内提供支持。Vivado不仅功能强大,还能根据所配置的相关策略自动对开发者的FPGA工程进行底层优化。

(2)hashcat。hashcat是一款开源的口令破解软件,其中包括众多被优化后的口令恢复算法,且这些口令恢复算法是通过OpenCL实现的,所以hashcat能够同时在CPU和GPU上进行口令恢复。hashcat因为其强大的口令恢复功能和跨平台支持而得到了广泛使用。因此,本文实验通过hashcat软件来获取在CPU和GPU平台上HMAC-SHA1口令恢复的速度。

本文实验进行的第1项对比是对SHA1算核实现与优化的各个阶段的资源占用与最大工作频率的对比,结果如表1所示。其中,阶段1是仅采用流水线;阶段2是采用流水线并展开结构;阶段3是采用流水线并展开结构,同时引入保留进位加法器,即最终实现。

Table 1 Resource occupancy and maximum frequency in different stages表1 不同阶段的资源占用和最大频率

从表1中可以看出,在阶段3中本文实现的SHA1算核最高工作频率达到了最大,而3个阶段所占用的资源却相差不大。

本文实验进行的第2项对比是本文实现且优化后的流水线SHA1算核与其他文献中SHA1性能的对比,结果如表2所示。

Table 2 Comparison of SHA1 implementation performance in different references表2 不同文献SHA1实现性能对比

通过对比可知,本文实现且优化后的流水线架构SHA1算核在频率上达到了480 MHz,吞吐量达到了245.76 Gbps。在吞吐量上,本文的实现是文献[17]的33倍,比除本文外最高的文献[10]的高出90 Gbps,性能提升显著。在此需要说明,流水线SHA1算核仅是HMAC-SHA1口令恢复工程中的核心运算单元,整个工程还包括前文所述的许多模块,并且最终需要满载算例。对于FPGA工程来说,工程越复杂则越难提高工作频率,因此,最终HMAC-SHA1口令恢复工程中的内部时钟工作频率为200 MHz。

本文实验进行的第3项对比是HMAC-SHA1口令处理全流水线算子和状态机算子在吞吐量和资源占用量上的对比,结果如表3所示。

Table 3 Comparison between full pipeline operator and state machine operator表3 全流水线算子和状态机算子对比

根据表3可知,单个HMAC-SHA1口令处理全流水线算子的吞吐量和资源占用量均是状态机算子的4倍左右。因此,每4个HMAC-SHA1口令处理状态机算子与单个全流水线算子在吞吐量和资源占用量上相当。需要说明的是,当LUT等资源的使用超出85%后,本文实验所用的XCKU060芯片在200 MHz的时序约束下将无法通过布线。因此,根据实际测试,在本文实验中的单个FPGA芯片上最多能搭载4个全流水线算子或16个状态机算子。在满配全流水线算子后整套系统的资源利用率是LUT消耗194 866(58.75%)、FF消耗505 770(76.24%);在满配状态机算子后整套系统的资源利用率是LUT消耗273 620(82.50%)、FF消耗555 630(83.76%)。

本文实验最后用基于满载上述规模算子的4核FPGA加速卡与基于hashcat的CPU、GPU平台对HMAC-SHA1口令恢复速度进行了对比,结果如表4所示。

Table 4 Comparison of speed on different platforms表4 不同平台上的速度对比

根据表4可知,本文对HMAC-SHA1口令恢复的速度达到了CPU平台上的72倍,GPU平台上的2.6倍。这只是单块板卡的速度对比,而单台上位机可配置多块参与口令恢复的板卡,最后若再以集群形式进行口令恢复,则口令恢复的速度也会成倍增长。因此,基于FPGA进行HMAC-SHA1口令恢复还具有横向可扩展的优点。

5 结束语

本文实现了基于多核FPGA的高速HMAC-SHA1口令恢复。首先,对HMAC-SHA1口令处理的相关算法进行了深入分析。其次,先后实现和优化了SHA1算核,完成了基于全流水线和状态机的HMAC-SHA1口令处理算子,设计并实现了HMAC-SHA1口令恢复架构。最后,通过实验测试了本文SHA1算核的性能,测试结果表明,相比于其它文献,本文SHA1算核的性能要高出很多,紧接着根据基于全流水线和状态机的算子吞吐量、资源占用量进行了单块板卡满配算子的速度测试,在与其他平台进行对比后得出,本文对HMAC-SHA1口令恢复的速度达到了CPU平台上的72倍,GPU平台上的2.6倍,充分利用了FPGA的硬件优势。

猜你喜欢

状态机流水线口令
流水线
高矮胖瘦
基于有限状态机的交会对接飞行任务规划方法
口 令
基于Spring StateMachine的有限状态机应用研究
好玩的“反口令”游戏
报废汽车拆解半自动流水线研究
流水线生产杀死艺术
SIMATIC IPC3000 SMART在汽车流水线领域的应用
健身气功·五禽戏教学口令