基于存储的数据流水方式-2(Security)安全散列算法

SHA-2(Security Hash Algorithm-2)Security Hash Algorithm)是美国国家安全局(NSA)和美国国家标准与技术研究院(NIST)于2002年公布的一种加密哈希算法。它的主要功能是实现数据之间的单向映射,可以将任意长度的消息映射成固定长度的消息摘要,并且映射过程是不可逆的[1]。根据输出消息摘要的长度不同,SHA-2族分为SHA -224、SHA-256、SHA-384、SHA-512四种算法,分别是主要应用于数字签名、指纹验证和网络安全协议等领域。

现有的高吞吐量通常以硬件实现。因此,在现有流水线结构的基础上,本文将使用基于存储的数据流水线来替代传统的基于寄存器的数据流水线。

1 SHA256算法概述

1.1 SHA256 流水线实现

SHA256 可以将任何有限长度的输入消息(长度小于 264 位)转换为 256 位的输出消息摘要。这些步骤分为三个部分:数据预处理、数据扩展和数据压缩[2]。

1.1.1 数据预处理

1.1.2 数据扩展

式中(3),运算符为按位异或,运算符为按位与,运算符为按位否定,运算符SHRn为右移n位,ROTRn为循环右移n位。

1.1.3 数据压缩

现在假设八个迭代变量分别为 A、B、C、D、E、F、G 和 H。首先根据公式(4)指定的算法初始化8个变量,其中Hj-1为j-1个数据块(Mj)迭代后的输出哈希值,初始值由公式给出(1) 出来了。

上述初始赋值后,进行如下迭代操作: For t=0~63:(Kt为一组常数[5])

经过64次迭代,最终的哈希值计算方式如公式(6):

在这里,|| 表示拼接器。其余数据块同上压缩,每个数据块的输出256值作为下一个数据块的输入值。最后,多次使用该算法后,可以将任意长度的输入数据压缩成256位。输出消息摘要。

1.2 通用流水线结构

基于寄存器反转的SHA256全流水线电路结构如图1所示,包括流水线结构的数据压缩部分和数据扩展流水线结构。当每个时钟触发沿到来时,数据扩展部分进入一个新的数据块Mi,形成W0i~W15i,并存储在数据扩展部分的第一级寄存器组中,其中W0i将被输入到数据压缩部分,和车轮的第一次压缩。然后,随着时钟触发沿的不断到来,第i个数据块被不断转发进行流水线传输,并逐步扩展生成W16i~W63i,同时W1i~W63i逐渐输入到数据压缩部分进行压缩,直到完成64轮压缩得到最终的A63i到H63i,这样就完成了对第i个数据块Mi的处理。此时,所有与Mi相关的信息都会从管线结构中移除,管线结构正在处理Mi1到Mi64的数据块。

在上述结构中,64级AH寄存器用于暂存64个输入数据块的压缩信息,64级Wt寄存器用于暂存64个输入数据块的扩展信息。可以看出,传统的全流水线结构在实现高吞吐量的同时会消耗大量的寄存器和压缩扩展算子[5]。

1.3 SHA256流水线结构研究现状

目前,国内外文献针对SHA256的流水线实现提出了很多优化方案。文献[6]提出了四级流水线结构,提高了运算速度,提高了吞吐率;文献[7]提出了一种通过Wallace树互连的CSA组合树结构,将多个操作数相加,减少了SHA256电路更新中加法器带来的延迟,提高了电路性能;文献[8]提出了一种14nm三栅CMOS工艺来实现SHA256安全哈希硬件加速器。通过该方法完成分布式哈希计算,提高了吞吐率;在文献[9]中,提出了一种基于可重构硬件的SHA256电路,在面积和最大频率方面进行了优化,最大吞吐率达到2 027.84 Mb/s;此外,基于文献[10]中的硬件描述语言实现了SHA256哈希函数的优化流水线结构,修改了压缩器和扩展块,增加了进位跳转加法器,提高了架构的性能. 实现 SHA256 的优化。

上述文献虽然采用了多种优化方案来提高SHA256硬件实现电路的效率,但大多是基于寄存器翻转的数据流水线方式。对于SHA256流水线结构,其硬件实现需要使用大量的寄存器。基于寄存器翻转的数据流水线方法虽然实现简单,但其动态翻转的功耗很大。因此,为了降低功耗,本文提出了一种基于锁存存储的SHA256流水线硬件实现电路。

2 个存储选项

本节将从数据压缩部分主要介绍本文提出的基于锁存存储的全流水线实现。

一个锁存器用于存储每轮迭代新生成的A和E,然后通过选择内存中存储的前4轮的A和E数据得到新一轮的A和E。但是在输入阶段计算A2、A3、A4和E2、E3、E4时,会缺少前轮计算数据。因此,本节将从通用级存储结构和输入级(A0~A4,E0~E4)存储结构。

2.1 通用存储结构

以64级标准流水线结构为例,注意Round1~Round5前五轮新生成的A和E。具体算法见公式(7)~Formula(11))

A1 和 E1 由 Round1 生成,但在 Round2~Round5 中使用。因此,A1和E1不需要一步步向前传递,而是可以存储在内存中。当 Round2~Round5 的迭代需要用到这个数据时,可以直接读取内存中的数据。4个时钟周期后,A1和E1的生命周期结束,在后续迭代中不再使用。此时,存储在内存中的 A1 和 E1 可以被擦除和更新。

更一般地,为每个级别写 A 到 H:

其中 k 表示第 k 级内存,i 是第 i 个输入数据。如图 2 所示,讨论了存储方案实现的一般情况。

对于阶段k,只需要两个内存bank分别存储A和E,每个寄存器bank大小为4×32位,分别存储Ak_i, Ak_i+1、Ak_i+2、Ak_i+3和Ek_i, Ek_i+ 1、Ek_i+2、Ek_i+3,其中Ak_i+3、Ek_i+3为第k轮新生成的数据,Ak_i,Ak_i+1、Ak_i+2和Ek_i,Ek_i+ 1、Ek_i+2 是前 3 轮生成的数据存储在内存中。

对于第i个输入数据,在k轮迭代操作完成后,得到的数据不转发,而是继续存储在第k阶段对应的内存中,这样就可以调用第k+4轮迭代操作. 为了得到 Ak+4_i 和 Ek+4_i,Ak_i 和 Ek_i 存储在第 k 级存储器中,Ak+1_i 和 Ek+1_i 存储在第 k+1 级存储器中,Ak+2_i 和 Ek+1_i 存储在第 k 级存储器中使用第 K+2 级内存。Ek+2_i 和 Ak+3_i 和 Ek+3_i 存储在第 k+3 个内存中:

2.2 输入级存储结构

对于输入阶段,即A0~A4和E0~E4,在这个存储方案中,由于新数据的产生需要用到内存前三个阶段的数据,根据公式(7)~formula (11),A1和E1可以完全由外部输入数据计算出来,但是A2、A3、A4和E2、E3、的生成E4仍然需要输入A0和E0,因此引入了一个三级输入缓冲存储器来存储相应的输入数据,如图3所示。

每组输入缓冲存储器为32位,共12组,其中HA3-1_i-3、HE3-1_i-3用于存储第i-3个输入数据的A和E,HA2-1_i -2、HA2-2_i-2用于存储第i-2个输入数据的A和B,HE2-1_i-2、HE2-2_i-2用于存储第i个输入数据的E和F -2次输入数据,缓冲存储器中的数据仍然是逐步传输的。

引入上述缓冲存储器后基本rs触发器课件,在Round1~Round4中,可以通过调用数据来生成A2、A3、A4和E2、E3、E4在缓冲存储器中计算;在 Round5 中,A5 和 E5 由 A1、A2、A3、A4 和 E1、E2、E3、E4 得到,计算形式与公式(13)一致。由此,输入级存储结构和通用级存储结构构成完整的数据压缩存储结构。

2.3 完整的数据压缩存储结构

完整的数据压缩存储结构如图4所示。对于输入级,在时钟沿,输入的数据首先存储在第一级存储器(Latch1_AE)中,在将数据传递到缓冲区的同时产生新的数据阶段性地。输入级数据产生如下:输入端MUX选择输入数据,压缩算子计算模块计算出的输出值依次存入内存。四个周期后,A0、E0的生命周期结束,内存对应位置的值被擦除更新为A0_i+4和E0_i+4,同时数据压缩进入正常管道水平。

在普通流水线阶段,数据压缩方法与输入阶段相同。输入数据通过8个MUX选择,输出值经过压缩算子计算模块后依次存入内存。四个周期后,存储器中的数据被复位。更新。64次迭代后,哈希值计算如公式(14):

其中,DMj-1为Mj个数据块迭代后输出的hash值,DMj为第Mj-1个数据块迭代后输出的hash值,m,n,p,q代表m,n, pth 存储在当前时刻的内存中,组 q 的数据。

另外,数据扩展部分的原理与数据压缩部分的原理类似,同样使用锁存器进行存储,只是数据存储周期略有不同。参与数据压缩计算部分的数据是通过MUX选择开关选择的,新扩展数据的生成和存储也是通过选择开关实现的,这里不再赘述。

3 电路设计

3.1 内存

存储器采用图5所示的锁存结构,通过控制使能信号实现存储功能。每组存储单元的大小为32位,使用4组32位锁存器分别存储A和E。控制数据存储位置(EN和ENB是一对反相信号)。

3.2 使能信号产生电路

控制存储器存储和开关的使能信号产生电路如图6所示。该电路由一个计数器(Cnt)、一个二四译码器(Dec)和一个不重叠的使能信号电路(N)组成。产生四组占空比为1:3的使能信号,每组信号之间有1/4周期的延迟。

3.3 非重叠使能信号发生电路

在数据选择电路(MUX)中,需要不重叠的使能信号来控制开关不被两个使能信号同时导通,从而减少泄漏。使用的非重叠信号产生电路如图7所示,其中RS触发器产生非重叠信号基本rs触发器课件,与非门用于调节占空比。通过调整虚线框图中的反相器数量,形成四组不重叠的使能信号。

3.4 选择开关电路

选择开关由逆变器和TG32组成,如图8所示。一个总选择开关由四组选择开关组成,分别选择A和E。数据选择功能是通过使能信号控制开关的通断来实现的,选择数据时的使能信号与存储数据时的使能信号一致。TG32 开关由图 5 中使用的四组 8 位传输门组成,由一组使能信号(EN 和 ENB)控制。选择EN1、EN2、EN3、EN4这四组信号,数据选择方法如公式(13).

4 绩效评估

4.1 ModelSim 仿真

使用Verilog硬件描述语言实现了本文提出的基于锁存存储和传统寄存器翻转的流水线电路,并使用ModelSim进行仿真。在相同的仿真激励下,仿真结果如图 9 所示。

其中,sim是基于寄存器翻转的传统流水线电路的波形图,vsim是本文提出的基于锁存存储的电路波形图,DM_pre和DM_new分别是输入值和输出值。在激励条件下,本文提出了基于寄存器翻转的传统标准流水线结构(sim:DM_new)和输出值的电路结构(vsim:DM_new)。

仿真结果表明,在相同的仿真激励下,本文提出的电路结构与标准流水线电路结构的仿真结果一致,验证了本文提出的电路结构的可行性。

4.2 节奏模拟

为了进一步验证本文提出的存储器结构在功耗和面积方面的优势,基于28nm标准CMOS工艺,本文提出的基于锁存存储的电路及对应的传统寄存器翻转基于电路设计在 MOS 晶体管级。流水线数据结构SHA256标准电路。相同激励条件下,功耗仿真结果如图10所示。

I0波形是传统流式结构的电流波形,I1波形是本文提出的电路结构的电流波形。因为后面的电路结构和前四级是一致的,所以可以比较前四级的功耗和面积。经计算,本文提出的电路结构四级工作的总电流I=1.308 mA,在相同的励磁条件下,总电流I=1.804 mA正常流动结构电路的四阶段操作。

通过对比可以看出,在相同的激励下,该方案的功耗降低了约27.5%。同时,从图10可以看出,该方案对应的最大瞬态功耗也远小于基于寄存器翻转的流水线结构。在成本方面,存储方案的四级电路总共需要488个晶体管,而普通流水线结构的四级电路总共需要960个晶体管。从对比中可以看出,在相同的函数下,可以近似认为该存储方案的优化面积约为49.2%。

因此,通过ModelSim仿真和Cadence仿真验证了该存储方案的可行性和优化效果。本文提出的基于锁存存储的电路结构优于现有基于寄存器翻转的SHA256流水线电路结构,具有功耗低、面积小等优点。

5 结论

本文提出了一种新的适用于全流水线结构的SHA256数据迭代方案。根据标准全流水线结构SHA256系列电路的数据传输特性,只存储每一级产生的A和E。每 4 次迭代后,存储的 A 和 E 数据被擦除和更新。这样,流水线的每一级只需要使用锁存器来存储A和E,其他需要的数据由MUX选择前1到4级存储的数据,不涉及反相登记。存储方案新增硬件主要来自MUX。但是相比普通的流水线结构,MUX的结构简单,存储电路也比寄存器结构简单,从而减少硬件开销和动态功耗。基于28nm标准CMOS工艺的仿真结果表明,采用存储方案实现SHA256的流水线结构电路后,相应的功耗优化率约为27.5%,面积优化率为大约 49. 2%。

参考

[1] 张跃军,廖艳焕,丁岱禄.基于LUT的高速低硬件开销SHA-3算法设计[J]. 电子技术应用, 2017, 43(4): 43-46.

[2] 陈穗光,葛建华.DRM系统的SHA256算法设计与FPGA实现[J].电子技术应用, 2007, 33(1): 139-141.

[3] 杨晓辉,戴子斌.基于FPGA的可重构密码芯片的设计与实现[J]. 电子技术应用, 2006, 32(8): 102-105.

[4] 何润民. 单向哈希函数SHA-256的研究与改进[J].信息技术, 2013 (8): 22-25.

[5] 王政. 一种高效的SHA-256电路设计[D]. 南京:东南大学,2015.

[6] 唐宇,翁秀玲,王云峰.SHA-2S6哈希运算单元的硬件优化实现[J]. 中国集成电路, 2016, 25(5): 26-31.

[7] OPRITOIU F, JURJ SL, VLADUTIU M. 提高安全哈希算法 256 引擎吞吐量的技术解决方案[C]。国际电子封装设计与技术研讨会。IEEE, 2017: 159-164.@ >

[8] SURESH V, SATPATHY S, MATHEW S, et al.A 230 mV-950 mV 2.8Tbps/W 14 nm 三栅极 CMOS 中的统一 SHA256/SM3 安全哈希硬件加速器[C].ESSCIRC 2018 -IEEE 第 44 届欧洲固态电路会议 (ESSCIRC).IEEE, 2018: 98-101.

[9] SUHAILI SB, WATANABE T. 基于 FPGA 的高吞吐量 SHA-256 哈希函数设计[C]. 电气工程与信息学国际会议,2017:1-6.

[10] PADHI M, CHAUDHARI R. SHA-256 哈希函数的优化流水线架构 [C]。嵌入式计算与系统设计国际研讨会,2017:1-4.

作者信息:

陈振江1、张银1、张志文1、卢诗1、刘九阳2、万美林1、戴奎2

(1.湖北大学物理与电子科学学院,湖北武汉 430060;2.华中科技大学光学与电子信息学院,湖北武汉 430062)

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论