基于拟态计算机的SHA512算法高吞吐量实现

时间:2018-10-30 编辑整理:席胜鑫,张文宁,周清雷,斯雪明,李 斌 来源:早发表网

要:哈希函数SHA512是一种目前广泛使用的加密算法,在现代加密学中占据很重要的地位。 鉴于拟态计算机高性能和高效能的特点,对SHA512算法进行了深入分析,提出了基于拟态计算机的全 流水线结构的实现方案。为了提高算法的运算速率,在关键路径对加法运算进行了优化,并且配合全流水 线结构,减少了加密一个数据分组所需要的时钟周期数,提高了数据吞吐率。在拟态计算机上实际运行, 芯片工作在130 MHz的时钟频率下,数据吞吐率达到133 120 Mbits/s,性能得到了显著提高,且能效比 高于通用服务器的能效比。

关键词:哈希函数;SHA512;拟态计算机;全流水结构;CSA

1 引言

近年来,科学技术高速发展,与之伴随的互联 网已经深深地融人人们的生活和工作中,成为不可 或缺的组成部分。网络的迅速普及和信息行业的 发展标志着人类已经正式跨入了信息化和大数据 的时代。信息爆炸而产生的海量数据时刻充斥在 日常生活当中,而其中更是不乏各种各样包含个人 隐私和敏感信息的重要文件。在这些信息的挖掘和使用过程中,为了防止其受到窃取和篡改,人们 通常采取加密的措施来保障其安全。哈希函数作 为一类在信息安全领域广泛使用的加密算法, 在网络安全方面和密码学领域具有十分重要的意 义和广泛的应用。王小云教授在2005年宣布了破 译SHAl的研究成果,因此美国国家标准技术研 究所表示,将逐步使用先进的SHA224、SHA256、 SHA384及SHA512的密码系统代替SHAl密码 系统。由此可见,SHA512等算法将会广泛使 用。

2013年9月21日,世界第一台拟态计算机基 于认知的主动重构计算体系PRCA(Proactive Reconfigurable Computing Architecture)原理验 证样机在中国研制成功。拟态计算指的是在执行 运算的过程中通过自身感知、动态选择或者生成最 优效能解算结构集合。拟态计算的目标是实现高 性能、高效能的计算,其实现本质是将高阶函数融 人计算结构当中,通过感知程序内部的自变量动态 可变地选用最优部件解决计算问题。在拟态计 算机处理任务的过程中,其本身可以对自变量进行 感知,从而通过拟态变换的方式生成执行所需的最 优效能解算结构集合。拟态计算机以配置流控制 的硬件作为执行主体,其计算、存储、互联等物理执 行结构属于变体部分,在执行过程中要求动态可 变,最终达到“依靠动态可变的物理结构,通过软硬 件结合实现高效能、高性能的计算”。

拟态计算机和通用计算机最大的不同之处就 在于动态可变。在执行一个计算任务的过程当中, 通用计算机会始终维持其物理结构静态不变,以软 件编程的控制作为主要执行体;而拟态计算机的所 有软件和硬件变体部件都是动态可变的,在实现应 用处理的过程中,可以根据程序自变量动态选择最 优的方案来实现各种功能等价、计算效能不同的最 优解的集合。因此,拟态计算机高效能、高性能 的特点使它非常适合于计算密集型的大数据量处 理任务。在口令恢复的运算过程中往往伴随大量 的迭代运算,如WORD2013中的SHA512运算、 ZIP中的SHAl运算,哈希算法的高次迭代运算量 占到口令恢复算法整个流程运算量的90%以上。 拟态计算机在实现口令恢复的过程中,通过识别口 令恢复的需求和变化,同时感知系统中可以利用的 处理资源,依据尽可能高性能和高效能的原则,认 知并决策出的现场可编程门阵列FPGA(Field~ Programmable Gate Arrary)对于实现SHA512等 哈希函数的运算具有速度快、吞吐量高的特点。

FPGA是拟态计算机中的重要部件,它具有体 系结构和逻辑单元灵活、设计开发周期短、集成度 高以及适用范围宽等特点。兼容了可编程逻辑 器件PLD(Programmable I,ogic Device)和通用门 阵列的优点,可实现较大规模的电路,编程也很灵 活。由于SHA512算法本身的复杂性,使用软 件加密则会存在加密速度慢、占用CPU资源等诸 多缺点,因此使用硬件实现算法就成为未来应用的 必然选择。

SHA512在FPGA中已经有实现,也产生了 很多不同的实现方案。Algredo—Badillo等人采 用了不同级数的流水线对SHA512算法进行优 化,并对不同的方案进行了分析。Rote等人采 用了环形流水线的方式,对SHA2算法进行了实 现,提高了算法的吞吐率。文献通过对关键运 算部分进行分解,采用中间变量进行预计算,实现 了SHA512迭代部分的并行计算处理,提高了运 算速度。文献通过循环打开和路径优化两大 硬件优化技术,在保持较小面积和相似主频的情况 下,提高了加密速率。文献在关键计算路径上 进行了加法器结构的优化,并且实现了分组数据输 入与循环运算的并行进行,减少了加密一个分组所 需的时钟周期数,提高了加密效率。文献采用 数据流可重构的设计思想和方法设计了一种新的 硬件结构实现多种哈希函数,注重降低资源的消 耗。鉴于目前芯片技术突飞猛进的发展,使用更多 的逻辑资源来换取运算时间的降低,以提升运算性 能已经十分普遍。本文将介绍使用全流水线结构 在拟态计算机中实现sHA512算法,同时也对加 法运算进行优化,达到增加工作频率和并行化的目 的,从而提高SHA512的计算速度和效能。

2 SHA512算法简介

SHA512算法可以将任意长的输入消息串(长 度不超过2128bit),通过一系列操作转化为固定长 的输出串,且转化过程不可逆,如图1所示。

算法的具体流程如下:

(1) 填充。

SHA512算法的运算过程是以1 024 bit(16× 64 bit)为单位进行的,因此需要对输入消息串进行 数据填充处理。第一步填充的字符串高位为1,其 余位为o,使其满足:填充后的字符串长度模1 024 后余896 bit;第二步填充(即长度填充),长128 bit 的长度值(以bit为单位)附加在经过数据填充后的消息后,使得消息的最终长度为1 024位的整数 倍。

 

(2) 迭代加密阶段。

SHA512是对长度为1 024 bit的数据块进行 处理,因此需要将输入的数据每1 024 bit分成一 块。分块之后就可以对每块数据按下述方法依次 进行处理(这里以一个1 024 bit的数据块进行说 明):

 

 

3 算法优化

 

 

3.1加法运算优化

从上述算法描述可以看出,SHA512最关键的 计算是步骤4的哈希迭代运算,SHA512每1 024 位数据块需要80个时钟周期才能完成处理。并且 在每轮的哈希计算中,SHA512涉及一个6个数相加和一个7个数相加的加法运算。如图3所示,在 每轮的哈希计算中,B、C、D、F、G、H的值无需计 算,分别由上一轮的A、B、C、E、F、G直接赋值得 到,几乎没有电路上的延时。而A涉及7个数相 加,还有一些异或运算,这就大大增大了关键路径 上的延时,使整个算法的运行频率降低。因此,要 提高哈希函数的运算速度可以从提高算法的工作 频率着手。而提高算法的工作频率,可以通过减少 算法实现的关键路径的长度,减少关键路径的延时 来实现。加法在FPGA的实现中要比位操作的延 时大得多,因此本文基于进位选择加法器CSA (Carry Select Adder)的原理对加法进行优化。 CSA方式是根据如下特性做出的:

 

 

A、E的赋值运算可以看出,A的赋值运算 共由7个加法计算构成,E的赋值运算共由6个加 法计算构成。为了对加法进行优化,本文根据CSA原理,定义了如下方法:

 

因此,A的赋值运算使用CSA7,E的赋值运 算使用CSA6。从上述的方法描述可以看出,A的 赋值运算由原来的7个加法计算变为2个加法计 算,E的赋值运算由原来的6个加法计算变为2个 加法计算,减少了关键路径上加法计算的数量,也 就大大减少了关键路径上的延时。

3.2全流水线结构

如果某个设计的处理流程可分为若干步骤,而 且整个数据处理是“单流向”的,即没有反馈或者迭 代运算,前一个步骤的输出是下一个步骤的输入, 可利用流水线技术来提高处理的并行度。在 SHA512最核心的80轮迭代运算中,如图4所示, 单步运算有着结构上的相似性,每一轮数据都是上 一轮运算的结果,并且没有反馈。因此,本文采用 全流水线技术增加并行程度。为了将吞吐量提升 至最高,通过打开循环并且加入中间寄存器,把80 轮循环迭代运算的每一轮作为流水线的一级,构建 了一个80级的全流水线。在80级的全流水线中, 每一级对应传统的80轮迭代运算中的一轮运算。 为了提高对公共寄存器的使用率,本文构建了一个 80级的全流水线。如图5所示,在第一个时钟周 期,第一组64 bit数据进入第一级流水线进行处理;在第二个时钟周期,第一组数据处理完后传递 到第二级,与此同时第二组64 bit数据进入第一 级;每一个时钟周期都按照这样的流水线处理方式 处理。从每一组数据的处理来看,每一组数据都需 要80个时钟周期进行处理,但在整个80轮流水线 处理过程中,每一个时钟周期都能计算出一组数 据。因此,平均计算一组数据只需要一个时钟周 期,大大提高了数据处理速度,保证了整个系统以 较高的频率工作。

 

综上所述,全流水线结构的SHA512算法可 以通过如下方法来计算:

步骤l 明文经过预处理之后,按照1 024 bit为单位 进行分组。

 

4 算法实验

本文在ISE Design Suite软件上使用Verilog 硬件描述语言实现了设计的SHA512算法,仿真 结果正确,编译综合通过,并且下载到Xilinx公司 的virtex6系列XC6VLX550T器件中进行测试, 芯片运行正常,测试结果正确。如表1所示,本文 所实现的芯片的最大工作频率为130 MHz,吞吐 量达133 120 Mbits/s,是文献的130倍,是文 献的56倍,是文献的102倍,是文献的92倍,加密速率得到了很大的提升,优于以往的 实现结果

 

本文还在Xilinx公司的Virtex6系列 XC6VLX550T开发板上实现了另外几种SHA512 算法。如表2所示,NoP—NoCSA代表l级流水线 并且没有加法运算优化;NoP—CSA代表1级流水 线并且经过加法运算优化;P—NoCSA代表80级 流水线并且没有加法运算优化;P—CSA代表80级 流水线并且经过加法运算优化(即本文算法)。另 外,本文计算吞吐量的公式如下所示:

(1024×130×80)/80一133120 Mbi/s

其中吞吐量为T,数据块大小为B,时钟频率为,, 流水线级数为N,计算延时为d,则可以得出本文 全流水结构的SHA512算法实际实现所达到的吞 吐量为:

 

从表3的数据可以看出,破解同一个SHA512 加密文件时,虽然拟态计算机的功耗是M3服务器 的三倍多,但是拟态计算机的能效比是M3服务器 的一百多倍。

5 结束语

本文给出了SHA512算法基于拟态计算机的 全流水线实现方案,通过使用全流水线结构和对加 法运算的优化,提高了工作频率,吞吐率也得到了 极大的提高,在130 MHz时钟频率下数据吞吐率 达133 120 Mbits/s。

另外,通过理论分析和实验验证,虽然本文的 实验方案占用了一定数量的资源,LuT和寄存器 的使用量分别是1级流水线的30倍和20倍,数据 吞吐率却是l级流水线的80倍。最后,为了验证 拟态计算机高效能的特点,本文通过实验与IBM M3进行了能效比测试。实验表明,拟态计算机的 能效比远高于通用服务器的

 


职称
论文

期刊
发表

加急
见刊

写作
咨询

课题
专答

编辑
顾问

关注
我们

返回
顶部