一种基于折叠的SHA-256硬件优化设计方法

文档序号:31167354发布日期:2022-08-17 08:53阅读:132来源:国知局
一种基于折叠的SHA-256硬件优化设计方法
一种基于折叠的sha-256硬件优化设计方法
技术领域
1.本发明属于电子电路技术领域,涉及一种基于折叠的sha-256硬件优化设计方法。


背景技术:

2.安全哈希算法将不同长度的报文或程序生成固定长度的摘要,使报文拥有独有的“指纹”。报文摘要对应唯一的报文,且无法通过摘要倒推出原始报文,因此具有很强的安全性。安全散列函数sha由美国nist和nsa一起设计,其中sha-256算法生成256位散列值,具有比以前的哈希算法更高的安全性和抗碰撞性,目前在实际中已被广泛使用。
3.sha-256算法的硬件实现有多种方法,目的在于提高算法的运算速度或减少芯片面积和功耗。目前常见的优化算法有流水线、un-rolling、folding和重调度等方法,现有的对轮计算的重调度方法(rescheduling)是目前可以采用较高时钟频率的sha-256硬件实现方法,该算法通过对中间哈希值的更新过程进行重调度优化,缩短了轮计算过程的关键路径延迟,因此具有很高的吞吐量。
4.折叠方法是一种降低电路功耗的设计方法,该方法利用算法关键路径上一些计算单元的重复性,将两个寄存器之间的运算过程“折叠”成两个或多个同样形式的运算过程,从而最大程度上复用电路上的硬件资源,并降低算法所需的芯片面积。
5.为提高sha-256算法电路运算速度并增加吞吐量,提出了一种基于折叠的sha-256硬件优化设计方法,实现运算速度大幅提升的同时具有吞吐量高、无需占用过多芯片面积。


技术实现要素:

6.本发明的目的就是提供一种基于折叠的sha-256硬件优化设计方法。
7.本发明利用折叠方法将重调度后的轮计算关键路径分为延迟更低的两个阶段;复用一个4-2压缩器替代原关键路径中的五操作数加法运算。具体包括如下步骤:
8.所述利用折叠方法将重调度后的轮计算关键路径分为延迟更低的两个阶段具体为:
9.sha-256轮计算关键路径为对寄存器a的更新,a
k+1
=∑0(ak)+maj(ak,bk,ck)+pk+sk+nk,其中k为轮计算的轮数,ak表示在第k次轮计算中寄存器a所存储的值;∑0(ak)和maj(ak,bk,ck)为对寄存器中的值进行逻辑运算后的结果。
10.利用折叠方法,将关键路径上包含五个操作数的加法运算分为两个阶段,第一个阶段通过4-2压缩器将sk、nk、pk的和转化为两个数ask和ack,保存在新的寄存器as和ac中,第二阶段计算新的寄存器中存储的值ask、ack与∑0(ak)、maj(ak+bk+ck)的和;寄存器s、n、p分别保存每轮sk、nk和pk的值。
11.所述复用一个4-2压缩器替代原关键路径中的五操作数加法运算具体为:
12.用4-2压缩器代替关键路径上的加法运算,在运算的两个阶段,第一个阶段4-2压缩器的输入为sk、nk和pk,输出为ask和ack;第二个阶段4-2压缩器的输入为∑0(ak)、maj(ak+bk+ck)、ask和ack,输出为as
k+1
和ac
k+1
。四个二选一的多路选择器用于选择两个阶段4-2压缩
器的输入,由于在第一个阶段只有三个有效的输入值,因此第四个多路选择器在第一个阶段选择一个0值作为输入。寄存器as和ac分别保存ask和ack的值,它们的和在每一轮第一阶段存入寄存器a中。
13.本发明在保持较高效率(本方案的算法硬件效率为1.86mbps/slice)的条件下实现sha-256硬件实现的高速运算(时钟频率达到366mhz)和高吞吐量(1990mbps)。实现运算速度大幅提升的同时具吞吐量高、占用芯片面积少。
附图说明
14.图1为原重调度方案轮计算的关键路径;
15.图2为本发明关键路径实现流程图。
具体实施方式
16.以下结合附图对本发明进行进一步的描述。
17.如图1所示,原重调度(rescheduling)方案轮计算的关键路径,其时延为两个csa和一个加法器的延迟之和。如图2所示,本发明关键路径时延为多路选择器和4-2压缩器的延迟之和。
18.一种基于折叠的sha-256硬件优化设计方法,利用折叠方法将关键路径分为两个阶段具体为:
19.寄存器s、n、p分别保存每轮计算sk、nk、pk的值,∑0为计算∑0(ak)的逻辑电路,maj为计算maj(ak+bk+ck)的逻辑电路。寄存器s和逻辑电路∑0的输出连接多路选择器m0的输入端,寄存器n和逻辑电路maj的输出连接多路选择器m1的输入端,寄存器p的输出连接多路选择器m2的一个输入端。多路选择器实现两次复用的折叠方法,在运算的第一个阶段,m0选择寄存器s的输出,m1选择寄存器n的输出,m2选择寄存器p的输出,由于此阶段仅有三个操作数,因此第四个多路选择器m3选择0值;在运算的第二个阶段,m0选择∑0的输出,m1选择maj的输出。
20.所述复用一个4-2压缩器替代原关键路径中的五操作数加法运算具体为:
21.用一个4-2压缩器替代原电路中的加法器,4-2压缩器的输入为四个多路选择器m0,m1,m2和m3的输出,用于在不同阶段接收不同的输入值。4-2压缩器的输出为两个寄存器as和ac。寄存器as和ac分别保存ask和ack的值。
22.寄存器as和ac的输出分别连接多路选择器m2和m3,在运算的第二个阶段,多路选择器m2的输入为寄存器as的输出,多路选择器m3的输入为寄存器ac的输出。
23.本发明采用的结合4-2压缩器和多路选择器的方案实现了将sha-256轮计算硬件电路的关键路径“折叠”为两个同样的运算,将路径延迟降低为原方案的36%;本电路的最高可用时钟频率可达到366mhz,吞吐量为1990mbps。本电路的算法效率为1.86mbps/slice。与原方案的比较如表1所示。
24.表1
25.方案时钟频率(mhz)吞吐量(mbps)效率(mbps/slice)原重调度方案131.76881.11.82本发明36619901.86


技术特征:
1.一种基于折叠的sha-256硬件优化设计方法,其特征在于:利用折叠方法将重调度后的轮计算关键路径分为延迟更低的两个阶段;复用一个4-2压缩器替代原关键路径中的五操作数加法运算;具体包括如下步骤:所述利用折叠方法将重调度后的轮计算关键路径分为延迟更低的两个阶段具体为:sha-256轮计算关键路径为对寄存器a的更新,a
k+1
=∑0(a
k
)+maj(a
k
,b
k
,c
k
)+p
k
+s
k
+n
k
,其中k为轮计算的轮数,a
k
表示在第k次轮计算中寄存器a所存储的值;∑0(a
k
)和maj(a
k
,b
k
,c
k
)为对寄存器中的值进行逻辑运算后的结果;利用折叠方法,将关键路径上包含五个操作数的加法运算分为两个阶段,第一个阶段通过4-2压缩器将s
k
、n
k
、p
k
的和转化为两个数as
k
和ac
k
,保存在新的寄存器as和ac中,第二阶段计算新的寄存器中存储的值as
k
、ac
k
与∑0(a
k
)、maj(a
k
+b
k
+c
k
)的和;寄存器s、n、p分别保存每轮s
k
、n
k
和p
k
的值;所述复用一个4-2压缩器替代原关键路径中的五操作数加法运算具体为:用4-2压缩器代替关键路径上的加法运算,在运算的两个阶段,第一个阶段4-2压缩器的输入为s
k
、n
k
和p
k
,输出为as
k
和ac
k
;第二个阶段4-2压缩器的输入为∑0(a
k
)、maj(a
k
+b
k
+c
k
)、as
k
和ac
k
,输出为as
k+1
和ac
k+1
;四个二选一的多路选择器用于选择两个阶段4-2压缩器的输入,由于在第一个阶段只有三个有效的输入值,因此第四个多路选择器在第一个阶段选择一个0值作为输入;寄存器as和ac分别保存as
k
和ac
k
的值,它们的和在每一轮第一阶段存入寄存器a中。

技术总结
本发明涉及一种基于折叠的SHA-256硬件优化设计方法。为提高SHA-256算法电路运算速度并增加吞吐量,并降低算法所需的芯片面积。本发明利用折叠方法将重调度后的轮计算关键路径分为延迟更低的两个阶段;复用一个4-2压缩器替代原关键路径中的五操作数加法运算。本发明在保持较高效率的条件下实现SHA-256硬件实现的高速运算和高吞吐量,占用芯片面积少。占用芯片面积少。占用芯片面积少。


技术研发人员:薛紫微 姚茂群
受保护的技术使用者:杭州师范大学
技术研发日:2022.05.23
技术公布日:2022/8/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1