一种sha-256算法硬件实现方法

文档序号:6472447阅读:236来源:国知局
专利名称:一种sha-256算法硬件实现方法
技术领域
本发明涉及优化实现安全散列算法SHA-256方法。
背景技术
散列函数,它把任意长的二元字符串变换成固定长的二元字符串,变换结果称为散列值 。在密码学中,散列函数h的基本特性必须满足找到两个不同的输入散列成同一个散列值是 计算上不可行的,同时对于一个给定的散列值y,找到一个输入x,是h (x) 二y成立也是计算 上不可行的。散列函数通常应用在数字签名和数据完整性检査中。在保护信息完整方面具有 很强的实际意义和可行性。
由于硬件实现在速度方面相对软件有很大的优越性,散列函数的优化硬件实现显得越来
越重要,同时,在目前所采用的散列函数中,如MD4,MD5,SHA-1算法被证明可破译。而
SHA-256算法目前尚未有公布可攻破的算法,因此具有更高的安全性。
在SHA-256中,最核心的计算是一个计算8个中间变量的迭代 for t= 0 to 63
ti=" s;2、)+帥'/'s)+《s)+^
/1 = g
ti = c c = 6 6 = a
。=A + r2
8个中间变量a、 b、 c、 d、 e、 f、 g、 h在一个周期内同时由组合逻辑电路根据上次迭代的计算产生,因此每次迭代计算所需时间是由最慢的计算过程决定。这条最长的路径就是关 键路径。SHA-256中的关键路径就是计算变量a,其次是计算变量e。硬件实现时,8个变量在 一个时钟周期内由组合逻辑根据上一次迭代的计算值产生,因此每次迭代所需要的时间由最 慢的计算过程决定,即关键路径。SHA-256中,由上述公式可以看出计算出中间变量a需要完 成多个多变量逻辑函数和多个连续32bit加法,是关键路径。at的计算主要包括非线性函数 运算、加法运算和移位。其中非线性函数运算只是完成信息在不同输入输出之间的切换,只 需要用组合逻辑电路设计,不会产生太大的延迟;移位只占用布线资源,同样不会对电路的 速度有影响;而加法运算在电路上由于进位会产生延迟。正是由于变量a和e的计算比较复杂 ,造成SHA-256算法硬件实现的工作频率难以提高,数据吞吐率难以加大。

发明内容
本发明所要解决的技术问题是,提供一种縮短关键路径的SHA-256算法硬件实现方法。 本发明为解决上述技术问题所采用的技术方案是, 一种SHA-256算法硬件实现方法,8个
中间变量a、 b、 c、 d、 e、 f、 g、 h在一个周期内同时由组合逻辑电路根据上一次的迭代计算
产生,
T" = ^ + S ;爛) + C"化—! ' L ' ^ ) + &
+『,
j s。
+ iw^.O,屮Vi,。-i)
r1 + r2
在此基础上,引
.辅助变量使关于中间变量Th分散到多路并行运算-
引入辅助变量P、辅助变量Q,对中间变量L进行分解,其中 助变量R对T1进行分解,= r'W" +『w 。
还可引入辅
同样的,引入辅助变量P、辅助变量Q对中间变量L进行分解,其中引入辅助变量R对T1进行分解,& = ^人7" + ^'+3 。
本发明的有益效果是,将复杂的计算中间变量a和e的过程分成几个并行的计算,縮短关 键路径,提高了电路工作频率,使得数据吞吐率也得到大大提高。


图l为现有技术的算法中的中间变量a、 b、 c、 d、 e、 f、 g、 h的数据流图,粗线表示其 关键路径。
图2是本发明中间变量a、 b、 c、 d、 e、 f、 g、 h以及辅助变量P、 Q的数据流图,粗线表 示其关键路径。
具体实施例方式
如图1所示,为现有技术的算法中的中间变量a、 b、 c、 d、 e、 f、 g、 h的数据流图,最 长路径为计算at, 一共有6个加法。由于加法运算在电路上由于进位会产生延迟,因此应尽 量对其进行优化,否则会影响电路运算速度。本发明的核心思想在于通过分析縮短电路关键 路径,将一路复杂的运算分散到几路并行运算,达到提高电路工作频率的目的。
其中n:r(o+购化'u,不軒优化,主要对Th进行
优化分解,采用引入辅助变量的方法。 ^
首先引入一个中间变量Pt-l,使得P"^^4 + S1 (e'-i) + ^56> + w',那么就使得第t次
迭代中的;^, s一0)+c、通过引进辅助錢
可以把第t次迭代提前到第t-l次计算,并将第t次迭代转变为l次加法。但是pt4的计算仍需
要同一次迭代的其他中间变量,如~: 已,并没有达到快速优化计算的目的t
要同一次迭代的其他中间变量,如e'-l'、-l,这样第t次迭代中的计算只是提前到第t-l次而
所以再继续引入中间Qt一,令丄1、〃 ,其中
所以,
Gm = & + C} +』
由于,& = & = 「 ^=,—、将其代入迭代,得<formula>formula see original document page 7</formula>其中(^还可以分解为0 = ^-1+^-1,但是由于这里计算at最少需要3步加法,整体延时 由最长路径决定,所以这里对Qt.再作分解也不能縮短延时,可不再分解了。如图2所示,经
过优化后的是最长路径。<formula>formula see original document page 7</formula>3个加法,大大减少了关键路径延时,优化后的速度可以达到优化前的2倍。
同理,也能将Tu分解为
还引
入辅助变量R对T1进行分解 —具体操作实现时,根据算法中的公式分析
关键路径,然后引入辅助变量,将第t次迭代提前到t-l次并行运算,若计算还是比较复杂或 要用到同一轮中其他变量,则继续引入中间变量,直到最简。
对于给定的一组消息,首先对消息进行分组填充,依次对每一个消息块进行计算
1、定义8个中间变量Ho、 Hh H2、 H3、 H4、 H5、 H6和H ,并设定初始值 《)=6a09e667 ,
<formula>formula see original document page 7</formula>;
定义64个32位的Kt常数用于散列的迭代计算中(Kt值见SHA-256协议) 2、对消息M (i)依次执行步骤
1) 将512位消息分成16个32位的字Wo, W l , W15。
2) 由公式计算Wt<formula>formula see original document page 8</formula>
3)计算每一步的中间变量a、 b、 c、 d、 e、 f、 g、 h:
a) 加入辅助变量后,预运算辅助变量P, Q:
b) 计算0 63圈的中间迭代变量a、 b、 c、 d、 e、 f、 g、 h:for t = 0 to 63
} Of ) + Mq; A;' cf ^ )
ef = d + 7\ a , = cf-1
数据流图及关键路径如图2所示。
WAS
权利要求
1.一种SHA-256算法硬件实现方法,8个中间变量a、b、c、d、e、f、g、h在一个周期内同时由组合逻辑电路根据上一次的迭代计算产生,<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><msub> <mi>T</mi> <mrow><mn>1</mn><mi>t</mi> </mrow></msub><mo>=</mo><msub> <mi>h</mi> <mrow><mi>t</mi><mo>-</mo><mn>1</mn> </mrow></msub><mo>+</mo><msubsup> <mi>&Sigma;</mi> <mn>1</mn> <mrow><mo>(</mo><mn>256</mn><mo>)</mo> </mrow></msubsup><mrow> <mo>(</mo> <msub><mi>e</mi><mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow><mo>+</mo><mi>Ch</mi><mrow> <mo>(</mo> <msub><mi>e</mi><mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>,</mo> <msub><mi>f</mi><mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>,</mo> <msub><mi>g</mi><mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow><mo>+</mo><msubsup> <mi>K</mi> <mi>t</mi> <mrow><mo>(</mo><mn>256</mn><mo>)</mo> </mrow></msubsup><mo>+</mo><msub> <mi>W</mi> <mi>t</mi></msub> </mrow>]]></math></maths><maths id="math0002" num="0002" ><math><![CDATA[ <mrow><msub> <mi>T</mi> <mrow><mn>2</mn><mi>t</mi> </mrow></msub><mo>=</mo><msubsup> <mi>&Sigma;</mi> <mn>0</mn> <mrow><mo>(</mo><mn>256</mn><mo>)</mo> </mrow></msubsup><mrow> <mo>(</mo> <msub><mi>a</mi><mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow><mo>+</mo><mi>Maj</mi><mrow> <mo>(</mo> <msub><mi>a</mi><mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>,</mo> <msub><mi>b</mi><mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>,</mo> <msub><mi>c</mi><mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow> </mrow>]]></math></maths>ht=gt-1gt=ft-1ft=et-1et=dt-1+T1dt=ct-1ct=bt-1bt=at-1at=T1+T2时间变量t∈(0,63),其特征在于,引入辅助变量使关于中间变量T1t的运算分散到多路并行运算。
2.如权利要求l所述一种SHA-256算法硬件实现方法,其特征在于, 引入辅助变量P、辅助变量Q对变量T1进行分解,其中,{256}'
3.如权利要求2所述一种SHA-256算法硬件实现方法,其特征在于, 还引入辅助变量R对T1进行分解,其中,y' _+ A'-1 , —、"+ ^'"。
4.如权利要求l所述一种SHA-256算法硬件实现方法,其特征在于, 引入辅助变量P、辅助变量Q对变量T1进行分解,其中~ —丄iA-i + ~i,
5.如权利要求4所述一种SHA-256算法硬件实现方法,其特征在于,还引入辅助变量R对T1进行分解,其中
全文摘要
本发明涉及优化实现安全散列算法SHA-256方法。本发明所要解决的技术问题是,提供一种缩短关键路径的SHA-256算法硬件实现方法。本发明为解决上述技术问题所采用的技术方案是,一种SHA-256算法硬件实现方法,8个中间变量a、b、c、d、e、f、g、h在一个周期内同时由组合逻辑电路根据上一次的迭代计算产生,在此基础上,引入辅助变量使关于中间变量T1t分散到多路并行运算。本发明的有益效果是,将复杂的计算中间变量a和e的过程分成几个并行的计算,缩短关键路径,提高了电路工作频率,使得数据吞吐率也得到大大提高。
文档编号G06F21/00GK101308535SQ20081030237
公开日2008年11月19日 申请日期2008年6月26日 优先权日2008年6月26日
发明者余有勇, 朱正美, 鹏 樊, 王志辉, 勇 陈, 陈奕冲 申请人:四川虹微技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1