一种基于FPGA的国密SM3杂凑算法的硬件优化方法
未命名
09-29
阅读:75
评论:0
一种基于fpga的国密sm3杂凑算法的硬件优化方法
技术领域
1.本发明涉及信息加密技术领域,尤其是涉及一种基于fpga的国密sm3杂凑算法的硬件优化方法。
背景技术:
2.随着以因特网为主的全球信息化空前地高涨,带来物联网技术的普及和它相关的应用飞速发展,涉及到企业商务系统、政府部门业务系统、金融业务系统等。这样,信息安全也就成为了各系统不可不关注的一个环节。一旦信息被窃取或篡改,将给相关行业带来不可估量的损失。芯片信息安全作为信息安全技术产业之一,有着至关重要的地位。其应用范围逐渐从军事、政治领域发展到社会、经济、生活等方面,信息安全产品成为保障整个社会正常的运转的保险箱。随着各个领域和行业对信息安全要求的提高和集成电路技术的发展,硬件安全的地位如同便衣保镖,默默保护着现代人的生活的各个方面。它逐渐取代软件的串行通用处理。与软件实现相比,硬件加密技术虽然在成本上有所提高,但是在抗解密攻击强度与加解密运算速度上是更具有优势的。
3.杂凑算法是在加解密运算中非常重要的不可逆运算,受到各国密码管理机构的重视。杂凑算法的基本规则是针对任意长度的消息进行进行特定的算法运算,该运算最终将得到的固定比特位的杂凑值。杂凑算法的操作步骤是经过公开不需要保密,一旦输入比特有细微的变化,其输出端的杂凑值的改变也非常地彻底,这种“雪崩效应”将使得不同的输入产生杂凑值输出相同的几率降到该碰撞被认可为不可能事件的阈值。美国的sha_256算法等标准早已制定完成,为了保障信息安全,我国国产杂凑算法sm3也于2010年底由国密办正式颁布。在商用密码体系中,sm3杂凑算法适用于商用密码应用中的数字签名以及验证、消息认证码生成及验证、随机数生成等方面,可以满足多种密码应用的安全需求,同时还可以为安全产品生产商提供产品技术的标准定位和标准化的参考,安全性和效率和sha_256相当。在当前数据量庞大、处理实时的应用背景下,传统的软件杂凑算法操作越来越无法达到用户所需要算法实现速度和效率。
4.随着信息社会的进一步发展,密码处理速度的要求进一提升,sm3的硬件设计成为研究与实现的热点。在很多场合下,能否快速计算的消息的杂凑值,将直接影响整个系统的密码处理能力,因此设计高速的sm3算法硬件显得尤为重要。
技术实现要素:
5.本发明所要解决的技术问题是提供一种基于fpga的国密sm3杂凑算法的硬件优化方法,相比传统算法在运算速度和消耗面积上做了一定的平衡,使得在一定频率上提升了吞吐率,使得关键路径得到了极大地优化,适用于对信息加密处理速度要求较高的应用环境上。
6.一种基于sm3密码杂凑算法的硬件实现方法,包括步骤如下:
7.步骤一:输入消息填充,将消息填充后的结果分成若干消息块;
8.步骤二:对消息块进行消息扩展;
9.采用移位寄存器同一周期四路并行输出的形式进行扩展。
10.步骤三:对扩展数据进行消息压缩;
11.在消息压缩中采用插入中间变量的的方法,改变关键路径从而得到一定延迟的缩减。
12.步骤四:得到输入数据的杂凑值。
13.本发明有益效果如下:
14.针对目前大多数sm3算的研究与实现主要集中在fpga平台,并且硬件实现过程中一般未对消息填充部分做出设计,而是在软件中进行实现,造成了硬件平台的不完整性。本发明将在硬件平台上实现消息填充模块;另外相比传统sm3算法运行周期减少,在压缩模块中对关键路径做出改善,使得电路的延迟得到缓解,这使得性能得到了显著提升。
附图说明
15.图1为消息填充的过程;
16.图2为消息扩展复用模块。
具体实施方式
17.下面根据附图详细说明本发明,本发明的目的和效果将变得更加明显。
18.一种基于sm3密码杂凑算法的硬件实现方法,包括步骤如下:
19.步骤(1):输入消息填充;
20.给定一个消息长度为l(l<2
64
)比特的消息,首先在消息的末尾添加1个比特“1”,在后面级联n个“0”,使得整个消息满足l+1+n=448mod512。再在后面级联一个64位的比特串,这64位的比特串是消息l长度的二进制表示,填充之后的消息长度为512的整数倍。将消息填充之后的结果分成若干消息块b(i)∈{b
(0)
,b
(1)
,......,b
(k)
},每个消息块由512比特长度组成。如图1所示。
21.例如:
22.输入消息“abc”的ascii码的十进制表示为:616263
23.填充“1”后的32位十进制表示为:61626380
24.填充“0”:
25.61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
26.级联64bit长度:
27.61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000018
28.步骤(2):对消息块进行消息扩展;
29.将每个消息块扩展生成132个字w0,w1,
…
,w
67
,w
’0,w
’1,
…
,w’63
:
30.a)将消息块b(i)划分为16个字w0,w1,
…
,w
15
;
31.b)当迭代次数j∈[0,67]时,消息块扩展的字;
[0032]
for(0≤j≤67)
[0033][0034]
end for
[0035]
c)当迭代次数j∈[0,63]时,消息块扩展的字;
[0036]
for(0≤j≤63)
[0037][0038]
endfor
[0039]
本发明的硬件实现方法是设计流水结构,采用16个寄存器存储当前周期前16个周期计算出的消息扩展字。使用寄存器移位的特点,每个周期左移四位,如图2所示。当前周期的消息字wj存入w
j+4
,下一个消息字w
j+1
存入w
j+5
,依次类推。实现同时并行计算四轮的消息块扩展,同时也将下一个压缩函数增加到四轮,充分提高了计算的速度,同时将整个算法核心运算的时钟消耗缩短,大大提高了吞吐率。
[0040]
步骤(3):对扩展数据进行消息压缩;
[0041]
为进一步得到高的吞吐率,本发明在消息压缩中采用插入中间变量的的方法,改变关键路径从而得到一定延迟的缩减。
[0042]
消息压缩中共有64轮运算,将64轮循环得到的结果与本轮计算输入的初始数据做异或运算,就得到本轮运算的哈希值。如第一轮的初始数据,即令初始字寄存器值分别为:a=32’h7380166f;b=32’h4914b2b9;c=32’h172442d7;d=32’hda8a0600;e=32’ha96f30bc;f=32’h163138aa;g=32’he38dee4d;h=32’hb0fb044c。
[0043]
消息压缩过程如下:
[0044]
{a,b,c,d,e,f,g,h}
←v(i)
[0045]
forj=0to63
[0046]
ss1j=((a
j-1
<<<12)+e
j-1
+(tj<<<j))<<<7
[0047][0048]
tt1j=ffj(a
j-1
,b
j-1
,c
j-1
)+d
j-1
+ss2
j-1
+w’j
[0049]
tt2j=ggj(e
j-1
,f
j-1
,g
j-1
)+h
j-1
+ss1j+wj[0050]aj
=tt1j[0051]bj
=a
j-1
;
[0052]cj
=b
j-1
<<<9
[0053]dj
=c
j-1
[0054]ej
=p0((tt2j)
[0055]fj
=e
j-1
[0056]gj
=f
j-1
<<<19
[0057]hj
=g
j-1
[0058]
endfor
[0059]
[0060]
其中,常数函数:
[0061]
布尔函数:
[0062][0063]
其中,aj,bj,cj,dj,ej,fj,gj,hj为当前周期的字寄存器的迭代值,a
j-1
,b
j-1
,c
j-1
,d
j-1
,e
j-1
,f
j-1
,g
j-1
,h
j-1
为上一个周期产生的字寄存器的迭代值,ss1j,ss2j,tt1j,tt2j为中间变量,wj和w
j’为消息扩展字,v(i)为第i组数据块的压缩结果。本发明在消息压缩过程中,引入中间变量x,y,z,如式(1):
[0064]
xj=e
j-1
+(t
j+1
<<<(j+1))
[0065]
yj=d
j-1
+wj'
+1
(1)
[0066]
zj=h
j-1
+w
j+1
[0067]
经过关键路径优化之后,将字寄存器a和e的计算公式分别表示为式(2)和式(3):
[0068]aj
=tt1=ffj(a
j-1
,b
j-1
,c
j-1
)+ss2j+y
j-1
(2)
[0069][0070]
其他变量更新为如式(4):
[0071][0072]
本发明消息压缩中通过设3个中间变量x,y,z,使得关键路径中字寄存器aj和ej的一次迭代值中5次加法运算变成3次,减少了字变量的迭代过程中的关键路径的串行加法运算的数量。从而节约了一个加法的运算时间,保证了算法运算的计算效率。
[0073]
步骤(4):得到输入数据的杂凑值;
[0074]
消息压缩的最后一轮输出的迭代值aj、bj、cj、dj、ej、fj、gj、hj,将其与前一轮输出的字寄存器变量进行异或,得到最终的杂凑值。
[0075]
即计算
[0076]
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。
[0077]
本发明未详细说明部分属于本领域技术人员公知技术。
技术特征:
1.一种基于sm3密码杂凑算法的硬件实现方法,其特征在于,包括步骤如下:步骤一:输入消息填充,将消息填充后的结果分成若干消息块;步骤二:对消息块进行消息扩展;采用移位寄存器同一周期四路并行输出的形式进行扩展;步骤三:对扩展数据进行消息压缩;在消息压缩中采用插入中间变量的的方法,改变关键路径从而得到一定延迟的缩减;步骤四:得到输入数据的杂凑值。2.根据权利要求1所述的一种基于sm3密码杂凑算法的硬件实现方法,其特征在于,步骤一具体方法如下:给定一个消息长度为l,l<2
64
比特的消息,首先在消息的末尾添加1个比特“1”,在后面级联n个“0”,使得整个消息满足l+1+n=448mod 512;再在后面级联一个64位的比特串,这64位的比特串是消息l长度的二进制表示,填充之后的消息长度为512的整数倍;将消息填充之后的结果分成若干消息块b
(i)
∈{b
(0)
,b
(1)
,......,b
(k)
},每个消息块由512比特长度组成。3.根据权利要求2所述的一种基于sm3密码杂凑算法的硬件实现方法,其特征在于,步骤二具体方法如下:将每个消息块扩展生成132个字w0,w1,
…
,w
67
,w
’0,w1’
,
…
,w’63
:a)将消息块b
(i)
划分为16个字w0,w1,
…
,w
15
;b)当迭代次数j∈[0,67]时,消息块扩展的字;for(0≤j≤67)end forc)当迭代次数j∈[0,63]时,消息块扩展的字;for(0≤j≤63)end for设计流水结构,采用16个寄存器存储当前周期前16个周期计算出的消息扩展字;使用寄存器移位的特点,每个周期左移四位;当前周期的消息字w
j
存入w
j+4
,下一个消息字w
j+1
存入w
j+5
,依次类推;实现同时并行计算四轮的消息块扩展,同时也将下一个压缩函数增加到四轮。4.根据权利要求3所述的一种基于sm3密码杂凑算法的硬件实现方法,其特征在于,步骤三具体方法如下:在消息压缩中采用插入中间变量的的方法,改变关键路径从而得到一定延迟的缩减;消息压缩中共有64轮运算,将64轮循环得到的结果与本轮计算输入的初始数据做异或运算,就得到本轮运算的哈希值;消息压缩过程如下:{a,b,c,d,e,f,g,h}
←v(i)
for j=0to 63
ss1
j
=((a
j-1
<<<12)+e
j-1
+(t
j
<<<j))<<<7tt1
j
=ff
j
(a
j-1
,b
j-1
,c
j-1
)+d
j-1
+ss2
j-1
+w
j
′
tt2
j
=gg
j
(e
j-1
,f
j-1
,g
j-1
)+h
j-1
+ss1
j
+w
j
a
j
=tt1
j
b
j
=a
j-1
;c
j
=b
j-1
<<<9d
j
=c
j-1
e
j
=p0((tt2
j
)f
j
=e
j-1
g
j
=f
j-1
<<<19h
j
=g
j-1
endfor其中,常数函数:布尔函数:布尔函数:其中,a
j
,b
j
,c
j
,d
j
,e
j
,f
j
,g
j
,h
j
为当前周期的字寄存器的迭代值,a
j-1
,b
j-1
,c
j-1
,d
j-1
,e
j-1
,f
j-1
,g
j-1
,h
j-1
为上一个周期产生的字寄存器的迭代值,ss1
j
,ss2
j
,tt1
j
,tt2
j
为中间变量,w
j
和w
j’为消息扩展字,v
(i)
为第i组数据块的压缩结果;在消息压缩过程中,引入中间变量x,y,z,如式(1):经过关键路径优化之后,将字寄存器a和e的计算公式分别表示为式(2)和式(3):a
j
=tt1=ff
j
(a
j-1
,b
j-1
,c
j-1
)+ss2
j
+y
j-1 (2)其他变量更新为如式(4):5.根据权利要求4所述的一种基于sm3密码杂凑算法的硬件实现方法,其特征在于,步
骤四具体方法如下:消息压缩的最后一轮输出的迭代值a
j
、b
j
、c
j
、d
j
、e
j
、f
j
、g
j
、h
j
,将其与前一轮输出的字寄存器变量进行异或,得到最终的杂凑值;即计算
技术总结
本发明公开了一种基于SM3密码杂凑算法的硬件实现方法,首先进行输入消息填充,将消息填充后的结果分成若干消息块,对消息块进行消息扩展;再对扩展数据进行消息压缩最后得到输入数据的杂凑值。本发明将在硬件平台上实现消息填充模块;另外相比传统SM3算法运行周期减少,在压缩模块中对关键路径做出改善,使得电路的延迟得到缓解,这使得性能得到了显著提升。升。升。
技术研发人员:颜成钢 陈旺 孙垚棋 朱尊杰 王帅 高宇涵 王鸿奎 殷海兵 张继勇 李宗鹏 赵治栋
受保护的技术使用者:杭州电子科技大学
技术研发日:2023.04.13
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/