CN105281890A - 一种折叠结构的sm3杂凑密码压缩运算电路 - Google Patents
一种折叠结构的sm3杂凑密码压缩运算电路 Download PDFInfo
- Publication number
- CN105281890A CN105281890A CN201410349798.0A CN201410349798A CN105281890A CN 105281890 A CN105281890 A CN 105281890A CN 201410349798 A CN201410349798 A CN 201410349798A CN 105281890 A CN105281890 A CN 105281890A
- Authority
- CN
- China
- Prior art keywords
- input
- selector
- register
- output
- clock cycle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Pinball Game Machines (AREA)
Abstract
本发明公开了一种折叠结构的SM3杂凑密码压缩运算电路,包括11个寄存器、5个与门、4个异或门、2个或门,1个非门、8个加法器、6个循环移位单元和21个选择器;折叠结构的SM3杂凑密码压缩运算电路将一轮压缩运算分为5个时钟周期进行,每个时钟周期中各32位寄存器参与执行一次模232加法或者循环左移或者按位异或操作,并且最多只进行一次模232加法操作。与普通迭代方式压缩运算电路一个时钟周期完成一轮压缩运算不同,折叠结构SM3压缩运算电路以每轮压缩运算增加4个时钟周期为代价,换取了电路规模的减小和压缩运算电路关键路径延时的大幅减小。
Description
技术领域
本发明属于杂凑密码学技术领域,更具体地,涉及一种折叠结构的SM3杂凑密码压缩运算电路。
背景技术
杂凑密码算法在现代密码学中占有重要的位置。杂凑密码算法计算了一个消息的摘要,而这个摘要是一个非常短的、固定长度的位字符串。对某个特定的消息而言,消息摘要(或杂凑值)可以看做是该消息的指纹,是消息的唯一表示。杂凑密码在密码学中的应用有很多方面,是数字签名方案和消息验证码的核心部分。
九十年代初,NIST向全球发布一种新的杂凑密码算法SHA-0,并经过几年的修订推出SHA-1。SHA-1很快就取代MD5,成为使用最广泛的杂凑密码算法,目前许多应用仍在使用SHA-1。2001年,为增强安全性,NIST发布了第二代杂凑密码算法SHA-2系列。2007年,NIST开始征集新的杂凑密码算法,经过为期5年的三轮竞赛,最终Keccak算法赢得竞赛,成为SHA-3算法。在密码学高速发展的背景下,中国国家密码管理局于2010年的12月份公布《SM3杂凑密码算法》,其安全要求适用于我国的商用密码产品。
SM3杂凑密码算法的压缩运算如下所示:
为了实现上述SM3杂凑密码算法,现有的电路有两种方式:一种是迭代方法,即在单周期执行一次压缩运算;另一种是循环展开方式,即在单周期执行多次压缩运算。由于迭代方式和循环展开方式在单周期执行一次或多次压缩运算,因此导致了压缩运算在电路实现时较大的资源占用和较大的关键路径延时。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种占用资源小,关键路径延时小,采用数字电路实现的折叠结构SM3杂凑密码压缩运算电路。
本发明提供的折叠结构的SM3杂凑密码压缩运算电路,包括第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第七寄存器、第八寄存器、第九寄存器、第十寄存器、第十一寄存器、第一与门、第二与门、第三与门、第四与门、第五与门、第一异或门、第二异或门、第三异或门、第四异或门、第一或门、第二或门、第一非门、第一加法器、第二加法器、第三加法器、第四加法器、第五加法器、第六加法器、第七加法器、第八加法器、第一循环左移单元、第五循环左移单元、第二循环左移单元、第三循环左移单元、第四循环左移单元、第六循环左移单元、第一选择器、第二选择器、第三选择器、第四选择器、第五选择器、第六选择器、第七选择器、第八选择器、第九选择器、第十选择器、第十一选择器、第十二选择器、第十三选择器、第十四选择器、第十五选择器、第十六选择器、第十七选择器、第十八选择器、第十九选择器、第二十选择器和第二十一选择器;所述第一寄存器的输出端分别与所述第一与门的第一输入端、第三与门的第一输入端、第一异或门的第一输入端、第三循环左移单元的输入端、第十四选择器的第二输入端和第十五选择器的第一输入端连接;所述第二寄存器的输出端分别与所述第一与门的第二输入端、所述第二与门的第一输入端、第一异或门的第二输入端、第十五选择器的第二输入端、第五循环左移单元的输入端连接;所述第三寄存器的输出端分别与所述第二与门的第二输入端、所述第三与门的第二输入端、所述第一异或门的第三输入端、所述第十六选择器的第二输入端、所述第十七选择器的第一输入端连接;所述第四寄存器的输出端分别与所述第一加法器的第二输入端和所述第十七选择器的第二输入端连接;所述第五寄存器的输出端分别与第六加法器的第二输入端、所述第四与门的第一输入端、所述第一非门的输入端、所述第二异或门的第一输入端、所述第十八选择器的第二输入端和所述第十九选择器的第一输入端连接;所述第六寄存器的输出端分别与所述第四与门的第二输入端、所述第二异或门的第二输入端、所述第十九选择器的第二输入端、所述第六循环左移单元的输入端连接;所述第七寄存器的输出端分别与所述第五与门的第二输入端、第二异或门的第三输入端、第二十选择器的第二输入端、第二十一选择器的第一输入端连接;所述第八寄存器的输出端分别与所述第三加法器的第二输入端、所述第二十一选择器的第二输入端连接;所述第九寄存器的输出端分别与所述第二选择器的第二输入端、所述第一加法器的第一输入端、所述第二加法器的第一输入端和所述第八加法器的第一输入端连接;所述第十寄存器的输出端分别与所述第三加法器的第一输入端、所述第四加法器的第一输入端、所述第五加法器的第一输入端、所述第一循环左移单元的输入端、所述第二循环左移单元的输入端、所述第三异或门的第三输入端和所述第六选择器的第二输入端连接;所述第十一寄存器的输出端分别与所述第五加法器的第二输入端、所述第七加法器的第一输入端、所述第八加法器的第二输入端、所述第四循环左移单元的输入端、所述第四异或门的第一输入端和所述第十选择器的第二输入端连接;所述第一与门的输出端与所述第一或门的第一输入端连接;所述第二与门的输出端与所述第一或门的第二输入端连接;所述第三与门的输出端与所述第一或门的第三输入端连接;所述第四与门的输出端与所述第二或门的第一输入端连接;所述第五与门的输出端与所述第二或门的第二输入端连接;所述第一异或门的输出端与所述第一选择器的第二输入端连接;所述第二异或门的输出端与所述第五选择器的第二输入端连接;所述第三异或门的输出端与所述第十八选择器的第一输入端连接;所述第四异或门的输出端与所述第十三选择器的第二输入端连接;所述第一或门的输出端与所述第一选择器的第一输入端连接;所述第二或门的输出端与所述第五选择器的第一输入端连接;所述第一非门的输出端与所述第五与门的第一输入端连接;所述第一加法器的输出端与所述第三选择器的第二输入端连接;所述第二加法器的输出端与所述第四选择器的第二输入端连接;所述第三加法器的输出端与所述第七选择器的第二输入端连接;所述第四加法器的输出端与所述第八选择器的第二输入端连接;所述第五加法器的输出端与所述第九选择器的第二输入端连接;所述第六加法器的输出端与所述第十选择器的第一输入端连接;所述第七加法器的输出端与所述第十一选择器的第二输入端连接;所述第八加法器的输出端与所述第十四选择器的第一输入端连接;所述第一循环左移单元的输出端与所述第三异或门的第一输入端连接;所述第二循环左移单元的输出端与所述第三异或门的第二输入端连接;所述第三循环左移单元的输出端,分别接第七加法器的第二输入端、第四异或门的第二输入端连接;所述第四循环左移单元的输出端与所述第十二选择器的第二输入端连接;所述第五循环左移单元的输出端与所述第十六选择器的第一输入端连接;所述第六循环左移单元的输出端与所述第二十选择器的第一输入端连接;所述第一选择器的输出端与所述第二选择器的第一输入端连接;所述第二选择器的输出端与所述第三选择器的第一输入端连接;所述第三选择器的输出端与所述第四选择器的第一输入端连接;所述第四选择器的输出端与所述第九寄存器的输入端连接;所述第五选择器的输出端与所述第六选择器的第一输入端连接;所述第六选择器的输出端与所述第七选择器的第一输入端连接;所述第七选择器的输出端与所述第八选择器的第一输入端连接;所述第八选择器的输出端与所述第九选择器的第一输入端连接;所述第九选择器的输出端与所述第十寄存器的输入端连接;所述第十选择器的输出端与所述第十一选择器的第一输入端连接;所述第十一选择器的输出端与所述第十二选择器的第一输入端连接;所述第十二选择器的输出端与所述第十三选择器的第一输入端连接;所述第十三选择器的输出端与所述第十一寄存器的输入端连接;所述第十四选择器的输出端与所述第一寄存器的输入端连接;所述第十五选择器的输出端与所述第二寄存器的输入端连接;所述第十六选择器的输出端与所述第三寄存器的输入端连接;所述第十七选择器的输出端与所述第四寄存器的输入端连接;所述第十八选择器的输出端与所述第五寄存器的输入端连接;所述第十九选择器的输出端与所述第六寄存器的输入端连接;所述第二十选择器的输出端与所述第七寄存器的输入端连接;所述第二十一选择器的输出端与所述第八寄存器的输入端连接;第一输入信号SEL0分别与所述第二选择器的第三输入端、所述第六选择器的第三输入端、所述第十选择器的第三输入端连接;所述第二输入信号SEL1分别与所述第三选择器的第三输入端、所述第七选择器的第三输入端和所述第十一选择器的第三输入端连接;所述第三输入信号SEL2分别与所述第四选择器的第三输入端、所述第八选择器的第三输入端和所述第十二选择器的第三输入端连接;所述第四输入信号SEL3分别与所述第九选择器的第三输入端和所述第十三选择器的第三输入端连接;所述第五输入信号SEL4分别与所述第十四选择器的第三输入端、所述第十五选择器的第三输入端、所述第十六选择器的第三输入端、所述第十七选择器的第三输入端、所述第十八选择器的第三输入端、所述第十九选择器的第三输入端、所述第二十选择器的第三输入端和所述第二十一选择器的第三输入端连接;所述第六输入信号R_SEL分别与所述第一选择器的第三输入端和所述第五选择器的第三输入端连接;所述第一输入信号***作字Wj与所述第四加法器的第二输入端连接;所述第一输入信号***作字Wj`与所述第二加法器的第二输入端连接;所述输入信号轮常量Tj与所述第六加法器的第一输入端。
其中,工作时,将一轮压缩运算分为5个时钟周期进行,每个时钟周期中各个32位寄存器最多只进行一次模232加法运算;对第j轮压缩运算,第一时钟周期是指第一轮压缩运算开始后第一个时钟周期,或第j-1轮压缩运算第五时钟周期后的下一时钟周期;第二时钟周期是指第一时钟周期后的下一时钟周期;第三时钟周期是指第二时钟周期后的下一时钟周期;第四时钟周期是指第三时钟周期后的下一时钟周期;第五时钟周期是指第四时钟周期后的下一时钟周期;第j轮第五时钟周期的下一个时钟周期为第j+1轮第一时钟周期;所有时钟周期开始于上升沿,结束于下降沿;或开始于下降沿,结束于上升沿;j为大于等于0且小于等于63的整数。
其中,第一时钟周期的操作包括:第五寄存器的值与Tj按位异或,在第一时钟周期末尾赋给第十一寄存器;第一寄存器、第二寄存器和第三寄存器三者的值进行FFj()函数操作,在第一时钟末尾赋给第九寄存器;第五寄存器、第六寄存器和第七寄存器三者的值进行GGj()函数操作,在第一时钟末尾赋给第十寄存器;其中,FFj()函数操作和GGj()函数操作为SM3杂凑密码压缩函数,Tj为SM3杂凑密码轮迭代常量;第二时钟周期的操作包括:第九寄存器和第四寄存器的值进行模232加法,在第二时钟周期的末尾赋给第九寄存器;第十寄存器和第八寄存器的值进行模232加法,在第二时钟周期的末尾赋给第十寄存器;第一寄存器循环左移12位后与第十一寄存器进行模232加法,在第二时钟周期的末尾赋给第十一寄存器;第三时钟周期的操作包括:第九寄存器的值和Wj`进行模232加法,在第三时钟周期的末尾赋给第九寄存器;第十寄存器的值和Wj进行模232加法,在第三时钟周期的末尾赋给第十寄存器;第十一寄存器循环左移7位,在第三时钟周期的末尾赋给第十一寄存器。其中Wj和Wj`为SM3杂凑密码***作字;第四时钟周期的操作包括:第十寄存器和第十一寄存器的值进行模232加法,在第四时钟周期的末尾赋给第十寄存器;第一寄存器循环左移12位后与第十一寄存器按位异或,在第四时钟周期的末尾赋给第十一寄存器;第五时钟周期的操作包括:第九寄存器和第十一寄存器的值进行模232加法,在第五时钟周期的末尾赋给第一寄存器;第一寄存器的值,在第五时钟周期的末尾赋给第一寄存器;第二寄存器的值左移9位,在第五时钟周期的末尾赋给第三寄存器;第三寄存器的值,在第五时钟周期的末尾赋给第四寄存器;第十寄存器的值进行P0()函数操作,在第五时钟周期的末尾赋给第五寄存器;第五寄存器的值,在第五时钟周期的末尾赋给第六寄存器;第六寄存器的值左移19位,在第五时钟周期的末尾赋给第七寄存器;第七寄存器的值,在第五时钟周期的末尾赋给第八寄存器。其中P0()函数操作为SM3杂凑密码P0()置换函数。
本发明提供的折叠结构的SM3杂凑密码压缩运算电路,将一轮压缩运算分为5个时钟周期进行,每个时钟周期中各32位寄存器最多只进行一次模232加法运算。折叠结构的SM3杂凑密码压缩运算电路包括11个32位寄存器,分别为第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第七寄存器、第八寄存器、第九寄存器、第十寄存器、第十一寄存器。压缩运算进行期间,每个寄存器在每个时钟周期执行一次模232加法或者循环左移或者按位异或操作,并且最多只进行一次模232加法操作。与普通迭代方式压缩运算电路一个时钟周期完成一轮压缩运算不同,折叠结构SM3压缩运算电路以每轮压缩运算增加4个时钟周期为代价,换取了电路规模的减小和压缩运算电路关键路径延时的大幅减小。
附图说明
图1是本发明实施例提供的折叠结构的SM3杂凑密码压缩运算电路的模块结构框图;
图2是本发明实施例提供的折叠结构的SM3杂凑密码压缩运算电路中一轮压缩运算的寄存器操作图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的目的在于提供一种占用资源小,关键路径延时小,采用数字电路实现的折叠结构SM3杂凑密码压缩运算电路。本发明提供的折叠结构的SM3杂凑密码压缩运算电路,将一轮压缩运算分为5个时钟周期进行,每个时钟周期中各32位寄存器最多只进行一次模232加法运算。折叠结构的SM3杂凑密码压缩运算电路包括11个32位寄存器,分别为第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第七寄存器、第八寄存器、第九寄存器、第十寄存器、第十一寄存器。压缩运算进行期间,每个寄存器在每个时钟周期执行一次模232加法或者循环左移或者按位异或操作,并且最多只进行一次模232加法操作。与普通迭代方式压缩运算电路一个时钟周期完成一轮压缩运算不同,折叠结构SM3压缩运算电路以每轮压缩运算增加4个时钟周期为代价,换取了电路规模的减小和压缩运算电路关键路径延时的大幅减小。
本发明实施例提供的折叠结构的SM3杂凑密码压缩运算电路的模块结构如图1所示,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
折叠结构的SM3杂凑密码压缩运算电路包括第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第七寄存器、第八寄存器、第九寄存器、第十寄存器、第十一寄存器、第一与门、第二与门、第三与门、第四与门、第五与门、第一异或门、第二异或门、第三异或门、第四异或门、第一或门、第二或门、第一非门、第一加法器、第二加法器、第三加法器、第四加法器、第五加法器、第六加法器、第七加法器、第八加法器、第一循环左移单元、第五循环左移单元、第二循环左移单元、第三循环左移单元、第四循环左移单元、第六循环左移单元、第一选择器、第二选择器、第三选择器、第四选择器、第五选择器、第六选择器、第七选择器、第八选择器、第九选择器、第十选择器、第十一选择器、第十二选择器、第十三选择器、第十四选择器、第十五选择器、第十六选择器、第十七选择器、第十八选择器、第十九选择器、第二十选择器和第二十一选择器;第一寄存器的输出端分别与第一与门的第一输入端、第三与门的第一输入端、第一异或门的第一输入端、第三循环左移单元的输入端、第十四选择器的第二输入端和第十五选择器的第一输入端连接;第二寄存器的输出端分别与第一与门的第二输入端、第二与门的第一输入端、第一异或门的第二输入端、第十五选择器的第二输入端、第五循环左移单元的输入端连接;第三寄存器的输出端分别与第二与门的第二输入端、第三与门的第二输入端、第一异或门的第三输入端、第十六选择器的第二输入端、所述第十七选择器的第一输入端连接;第四寄存器的输出端分别与第一加法器的第二输入端和第十七选择器的第二输入端连接;第五寄存器的输出端分别与第六加法器的第二输入端、第四与门的第一输入端、第一非门的输入端、第二异或门的第一输入端、第十八选择器的第二输入端和第十九选择器的第一输入端连接;第六寄存器的输出端分别与第四与门的第二输入端、第二异或门的第二输入端、第十九选择器的第二输入端、第六循环左移单元的输入端连接;第七寄存器的输出端分别与第五与门的第二输入端、第二异或门的第三输入端、第二十选择器的第二输入端、第二十一选择器的第一输入端连接;第八寄存器的输出端分别与第三加法器的第二输入端、第二十一选择器的第二输入端连接;第九寄存器的输出端分别与第二选择器的第二输入端、第一加法器的第一输入端、第二加法器的第一输入端和所述第八加法器的第一输入端连接;第十寄存器的输出端分别与所述第三加法器的第一输入端、第四加法器的第一输入端、第五加法器的第一输入端、第一循环左移单元的输入端、第二循环左移单元的输入端、第三异或门的第三输入端和第六选择器的第二输入端连接;第十一寄存器的输出端分别与第五加法器的第二输入端、第七加法器的第一输入端、第八加法器的第二输入端、第四循环左移单元的输入端、第四异或门的第一输入端和所述第十选择器的第二输入端连接;第一与门的输出端与所述第一或门的第一输入端连接;第二与门的输出端与所述第一或门的第二输入端连接;第三与门的输出端与所述第一或门的第三输入端连接;所述第四与门的输出端与所述第二或门的第一输入端连接;所述第五与门的输出端与所述第二或门的第二输入端连接;所述第一异或门的输出端与所述第一选择器的第二输入端连接;第二异或门的输出端与所述第五选择器的第二输入端连接;第三异或门的输出端与所述第十八选择器的第一输入端连接;所述第四异或门的输出端与所述第十三选择器的第二输入端连接;所述第一或门的输出端与所述第一选择器的第一输入端连接;所述第二或门的输出端与所述第五选择器的第一输入端连接;所述第一非门的输出端与所述第五与门的第一输入端连接;所述第一加法器的输出端与所述第三选择器的第二输入端连接;所述第二加法器的输出端与所述第四选择器的第二输入端连接;所述第三加法器的输出端与所述第七选择器的第二输入端连接;所述第四加法器的输出端与所述第八选择器的第二输入端连接;所述第五加法器的输出端与所述第九选择器的第二输入端连接;所述第六加法器的输出端与所述第十选择器的第一输入端连接;所述第七加法器的输出端与所述第十一选择器的第二输入端连接;所述第八加法器的输出端与所述第十四选择器的第一输入端连接;所述第一循环左移单元的输出端与所述第三异或门的第一输入端连接;所述第二循环左移单元的输出端与所述第三异或门的第二输入端连接;所述第三循环左移单元的输出端,分别接第七加法器的第二输入端、第四异或门的第二输入端连接;所述第四循环左移单元的输出端与所述第十二选择器的第二输入端连接;所述第五循环左移单元的输出端与所述第十六选择器的第一输入端连接;所述第六循环左移单元的输出端与所述第二十选择器的第一输入端连接;所述第一选择器的输出端与所述第二选择器的第一输入端连接;所述第二选择器的输出端与所述第三选择器的第一输入端连接;所述第三选择器的输出端与所述第四选择器的第一输入端连接;所述第四选择器的输出端与所述第九寄存器的输入端连接;所述第五选择器的输出端与所述第六选择器的第一输入端连接;所述第六选择器的输出端与所述第七选择器的第一输入端连接;所述第七选择器的输出端与所述第八选择器的第一输入端连接;所述第八选择器的输出端与所述第九选择器的第一输入端连接;所述第九选择器的输出端与所述第十寄存器的输入端连接;所述第十选择器的输出端与所述第十一选择器的第一输入端连接;所述第十一选择器的输出端与所述第十二选择器的第一输入端连接;所述第十二选择器的输出端与所述第十三选择器的第一输入端连接;所述第十三选择器的输出端与所述第十一寄存器的输入端连接;所述第十四选择器的输出端与所述第一寄存器的输入端连接;所述第十五选择器的输出端与所述第二寄存器的输入端连接;所述第十六选择器的输出端与所述第三寄存器的输入端连接;所述第十七选择器的输出端与所述第四寄存器的输入端连接;所述第十八选择器的输出端与所述第五寄存器的输入端连接;所述第十九选择器的输出端与所述第六寄存器的输入端连接;所述第二十选择器的输出端与所述第七寄存器的输入端连接;所述第二十一选择器的输出端与所述第八寄存器的输入端连接;第一输入信号SEL0分别与所述第二选择器的第三输入端、所述第六选择器的第三输入端、所述第十选择器的第三输入端连接;所述第二输入信号SEL1分别与所述第三选择器的第三输入端、所述第七选择器的第三输入端和所述第十一选择器的第三输入端连接;所述第三输入信号SEL2分别与所述第四选择器的第三输入端、所述第八选择器的第三输入端和所述第十二选择器的第三输入端连接;所述第四输入信号SEL3分别与所述第九选择器的第三输入端和所述第十三选择器的第三输入端连接;所述第五输入信号SEL4分别与所述第十四选择器的第三输入端、所述第十五选择器的第三输入端、所述第十六选择器的第三输入端、所述第十七选择器的第三输入端、所述第十八选择器的第三输入端、所述第十九选择器的第三输入端、所述第二十选择器的第三输入端和所述第二十一选择器的第三输入端连接;所述第六输入信号R_SEL分别与第一选择器的第三输入端和所述第五选择器的第三输入端连接;第一输入信号***作字Wj与所述第四加法器的第二输入端连接;第一输入信号***作字Wj`与所述第二加法器的第二输入端连接;输入信号轮常量Tj与所述第六加法器的第一输入端。
在本发明实施例中,第一加法器、第二加法器、第三加法器、第四加法器、第五加法器、第六加法器、第七加法器和第八加法器为2输入模232位加法器。第一循环左移单元和第五循环左移单元为循环左移9位单元;第二循环左移单元为循环左移17位单元;第三循环左移单元为循环左移12位单元;第四循环左移单元为循环左移7位单元;第六循环左移单元为循环左移19位单元。
在本发明实施例中,21个选择器均为32位3输入(2个32位数据输入,1个1位选择信号输入)选择器。
在本发明实施例中,十一个寄存器用于寄存每个时钟周期中经过模232加法、循环移位、异或等操作得到的中间结果,并将所寄存的中间结果用于下一个时钟周期的运算;二十一个选择器根据选择信号的有效与否选择参与运算的32位数据;八个加法器用于对2个32位输入数据进行模232加法运算;六个循环左移单元用于对32位输入数据进行循环移位操作。
本发明提供了一种折叠结构的SM3杂凑密码压缩运算电路,将一轮压缩运算分为5个时钟周期进行,每个时钟周期中各32位寄存器最多只进行一次模232加法运算。折叠结构的SM3杂凑密码压缩运算电路包括11个32位寄存器,包含11个32位寄存器,分别为第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第七寄存器、第八寄存器、第九寄存器、第十寄存器、第十一寄存器。压缩运算进行期间,每个寄存器在每个时钟周期执行一次模232加法或者循环左移或者按位异或操作,并且最多只进行一次模232加法操作。下面具体阐述每轮压缩运算5个时钟周期中各寄存器操作方式。
对第j轮(j大于等于0且小于等于63)压缩运算来说,第一时钟周期是指第一轮压缩运算开始后第一个时钟周期,或第j-1轮压缩运算第五时钟周期后的下一时钟周期;第二时钟周期是指第一时钟周期后的下一时钟周期;第三时钟周期是指第二时钟周期后的下一时钟周期;第四时钟周期是指第三时钟周期后的下一时钟周期;第五时钟周期是指第四时钟周期后的下一时钟周期。所有时钟周期开始于上升沿,结束于下降沿;或开始于下降沿,结束于上升沿。
第一时钟周期的操作包括,第五寄存器的值与Tj按位异或,在第一时钟周期末尾赋给第十一寄存器;第一寄存器、第二寄存器和第三寄存器三者的值进行FFj()函数操作,在第一时钟末尾赋给第九寄存器;第五寄存器、第六寄存器和第七寄存器三者的值进行GGj()函数操作,在第一时钟末尾赋给第十寄存器。其中FFj()函数操作和GGj()函数操作上文已经叙述,FFj()函数操作和GGj()函数操作为SM3杂凑密码压缩函数,Tj为SM3杂凑密码轮迭代常量。
第二时钟周期的操作包括,第九寄存器和第四寄存器的值进行模232加法,在第二时钟周期的末尾赋给第九寄存器;第十寄存器和第八寄存器的值进行模232加法,在第二时钟周期的末尾赋给第十寄存器;第一寄存器循环左移12位后与第十一寄存器进行模232加法,在第二时钟周期的末尾赋给第十一寄存器。
第三时钟周期的操作包括,第九寄存器的值和Wj`进行模232加法,在第三时钟周期的末尾赋给第九寄存器;第十寄存器的值和Wj进行模232加法,在第三时钟周期的末尾赋给第十寄存器;第十一寄存器循环左移7位,在第三时钟周期的末尾赋给第十一寄存器。其中Wj和Wj`为SM3杂凑密码***作字。
第四时钟周期的操作包括,第十寄存器和第十一寄存器的值进行模232加法,在第四时钟周期的末尾赋给第十寄存器;第一寄存器循环左移12位后与第十一寄存器按位异或,在第四时钟周期的末尾赋给第十一寄存器。
第五时钟周期的操作包括,第九寄存器和第十一寄存器的值进行模232加法,在第五时钟周期的末尾赋给第一寄存器;第一寄存器的值,在第五时钟周期的末尾赋给第一寄存器;第二寄存器的值左移9位,在第五时钟周期的末尾赋给第三寄存器;第三寄存器的值,在第五时钟周期的末尾赋给第四寄存器;第十寄存器的值进行P0()函数操作,在第五时钟周期的末尾赋给第五寄存器;第五寄存器的值,在第五时钟周期的末尾赋给第六寄存器;第六寄存器的值左移19位,在第五时钟周期的末尾赋给第七寄存器;第七寄存器的值,在第五时钟周期的末尾赋给第八寄存器。其中P0()函数操作为SM3杂凑密码P0()置换函数。
第j轮第五时钟周期下一个时钟周期,为第j+1轮第一时钟周期。
本发明实施例采用数字电路实现的折叠结构的SM3杂凑密码压缩运算电路,将一轮压缩运算分为5个时钟周期进行,每个时钟周期中各32位寄存器最多只进行一次模232加法运算,以每轮压缩运算增加4个时钟周期为代价,换取了电路规模的减小和压缩运算电路关键路径延时的大幅减小。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种折叠结构的SM3杂凑密码压缩运算电路,其特征在于,包括第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第七寄存器、第八寄存器、第九寄存器、第十寄存器、第十一寄存器、第一与门、第二与门、第三与门、第四与门、第五与门、第一异或门、第二异或门、第三异或门、第四异或门、第一或门、第二或门、第一非门、第一加法器、第二加法器、第三加法器、第四加法器、第五加法器、第六加法器、第七加法器、第八加法器、第一循环左移单元、第五循环左移单元、第二循环左移单元、第三循环左移单元、第四循环左移单元、第六循环左移单元、第一选择器、第二选择器、第三选择器、第四选择器、第五选择器、第六选择器、第七选择器、第八选择器、第九选择器、第十选择器、第十一选择器、第十二选择器、第十三选择器、第十四选择器、第十五选择器、第十六选择器、第十七选择器、第十八选择器、第十九选择器、第二十选择器和第二十一选择器;
所述第一寄存器的输出端分别与所述第一与门的第一输入端、第三与门的第一输入端、第一异或门的第一输入端、第三循环左移单元的输入端、第十四选择器的第二输入端和第十五选择器的第一输入端连接;
所述第二寄存器的输出端分别与所述第一与门的第二输入端、所述第二与门的第一输入端、第一异或门的第二输入端、第十五选择器的第二输入端、第五循环左移单元的输入端连接;
所述第三寄存器的输出端分别与所述第二与门的第二输入端、所述第三与门的第二输入端、所述第一异或门的第三输入端、所述第十六选择器的第二输入端、所述第十七选择器的第一输入端连接;
所述第四寄存器的输出端分别与所述第一加法器的第二输入端和所述第十七选择器的第二输入端连接;
所述第五寄存器的输出端分别与第六加法器的第二输入端、所述第四与门的第一输入端、所述第一非门的输入端、所述第二异或门的第一输入端、所述第十八选择器的第二输入端和所述第十九选择器的第一输入端连接;
所述第六寄存器的输出端分别与所述第四与门的第二输入端、所述第二异或门的第二输入端、所述第十九选择器的第二输入端、所述第六循环左移单元的输入端连接;
所述第七寄存器的输出端分别与所述第五与门的第二输入端、第二异或门的第三输入端、第二十选择器的第二输入端、第二十一选择器的第一输入端连接;
所述第八寄存器的输出端分别与所述第三加法器的第二输入端、所述第二十一选择器的第二输入端连接;
所述第九寄存器的输出端分别与所述第二选择器的第二输入端、所述第一加法器的第一输入端、所述第二加法器的第一输入端和所述第八加法器的第一输入端连接;
所述第十寄存器的输出端分别与所述第三加法器的第一输入端、所述第四加法器的第一输入端、所述第五加法器的第一输入端、所述第一循环左移单元的输入端、所述第二循环左移单元的输入端、所述第三异或门的第三输入端和所述第六选择器的第二输入端连接;
所述第十一寄存器的输出端分别与所述第五加法器的第二输入端、所述第七加法器的第一输入端、所述第八加法器的第二输入端、所述第四循环左移单元的输入端、所述第四异或门的第一输入端和所述第十选择器的第二输入端连接;
所述第一与门的输出端与所述第一或门的第一输入端连接;所述第二与门的输出端与所述第一或门的第二输入端连接;所述第三与门的输出端与所述第一或门的第三输入端连接;所述第四与门的输出端与所述第二或门的第一输入端连接;所述第五与门的输出端与所述第二或门的第二输入端连接;
所述第一异或门的输出端与所述第一选择器的第二输入端连接;所述第二异或门的输出端与所述第五选择器的第二输入端连接;所述第三异或门的输出端与所述第十八选择器的第一输入端连接;所述第四异或门的输出端与所述第十三选择器的第二输入端连接;
所述第一或门的输出端与所述第一选择器的第一输入端连接;所述第二或门的输出端与所述第五选择器的第一输入端连接;所述第一非门的输出端与所述第五与门的第一输入端连接;
所述第一加法器的输出端与所述第三选择器的第二输入端连接;所述第二加法器的输出端与所述第四选择器的第二输入端连接;所述第三加法器的输出端与所述第七选择器的第二输入端连接;所述第四加法器的输出端与所述第八选择器的第二输入端连接;所述第五加法器的输出端与所述第九选择器的第二输入端连接;所述第六加法器的输出端与所述第十选择器的第一输入端连接;所述第七加法器的输出端与所述第十一选择器的第二输入端连接;所述第八加法器的输出端与所述第十四选择器的第一输入端连接;
所述第一循环左移单元的输出端与所述第三异或门的第一输入端连接;所述第二循环左移单元的输出端与所述第三异或门的第二输入端连接;所述第三循环左移单元的输出端,分别接第七加法器的第二输入端、第四异或门的第二输入端连接;所述第四循环左移单元的输出端与所述第十二选择器的第二输入端连接;所述第五循环左移单元的输出端与所述第十六选择器的第一输入端连接;所述第六循环左移单元的输出端与所述第二十选择器的第一输入端连接;
所述第一选择器的输出端与所述第二选择器的第一输入端连接;所述第二选择器的输出端与所述第三选择器的第一输入端连接;所述第三选择器的输出端与所述第四选择器的第一输入端连接;所述第四选择器的输出端与所述第九寄存器的输入端连接;所述第五选择器的输出端与所述第六选择器的第一输入端连接;所述第六选择器的输出端与所述第七选择器的第一输入端连接;所述第七选择器的输出端与所述第八选择器的第一输入端连接;所述第八选择器的输出端与所述第九选择器的第一输入端连接;所述第九选择器的输出端与所述第十寄存器的输入端连接;所述第十选择器的输出端与所述第十一选择器的第一输入端连接;所述第十一选择器的输出端与所述第十二选择器的第一输入端连接;所述第十二选择器的输出端与所述第十三选择器的第一输入端连接;所述第十三选择器的输出端与所述第十一寄存器的输入端连接;所述第十四选择器的输出端与所述第一寄存器的输入端连接;所述第十五选择器的输出端与所述第二寄存器的输入端连接;所述第十六选择器的输出端与所述第三寄存器的输入端连接;所述第十七选择器的输出端与所述第四寄存器的输入端连接;所述第十八选择器的输出端与所述第五寄存器的输入端连接;所述第十九选择器的输出端与所述第六寄存器的输入端连接;所述第二十选择器的输出端与所述第七寄存器的输入端连接;所述第二十一选择器的输出端与所述第八寄存器的输入端连接;
第一输入信号SEL0分别与所述第二选择器的第三输入端、所述第六选择器的第三输入端、所述第十选择器的第三输入端连接;所述第二输入信号SEL1分别与所述第三选择器的第三输入端、所述第七选择器的第三输入端和所述第十一选择器的第三输入端连接;所述第三输入信号SEL2分别与所述第四选择器的第三输入端、所述第八选择器的第三输入端和所述第十二选择器的第三输入端连接;所述第四输入信号SEL3分别与所述第九选择器的第三输入端和所述第十三选择器的第三输入端连接;所述第五输入信号SEL4分别与所述第十四选择器的第三输入端、所述第十五选择器的第三输入端、所述第十六选择器的第三输入端、所述第十七选择器的第三输入端、所述第十八选择器的第三输入端、所述第十九选择器的第三输入端、所述第二十选择器的第三输入端和所述第二十一选择器的第三输入端连接;所述第六输入信号R_SEL分别与所述第一选择器的第三输入端和所述第五选择器的第三输入端连接;
所述第一输入信号***作字Wj与所述第四加法器的第二输入端连接;所述第一输入信号***作字Wj`与所述第二加法器的第二输入端连接;所述输入信号轮常量Tj与所述第六加法器的第一输入端。
2.如权利要求1所述的SM3杂凑密码压缩运算电路,其特征在于,工作时,将一轮压缩运算分为5个时钟周期进行,每个时钟周期中各个32位寄存器最多只进行一次模232加法运算;对第j轮压缩运算,第一时钟周期是指第一轮压缩运算开始后第一个时钟周期,或第j-1轮压缩运算第五时钟周期后的下一时钟周期;第二时钟周期是指第一时钟周期后的下一时钟周期;第三时钟周期是指第二时钟周期后的下一时钟周期;第四时钟周期是指第三时钟周期后的下一时钟周期;第五时钟周期是指第四时钟周期后的下一时钟周期;第j轮第五时钟周期的下一个时钟周期为第j+1轮第一时钟周期;所有时钟周期开始于上升沿,结束于下降沿;或开始于下降沿,结束于上升沿;j为大于等于0且小于等于63的整数。
3.如权利要求2所述的SM3杂凑密码压缩运算电路,其特征在于,第一时钟周期的操作包括:第五寄存器的值与Tj按位异或,在第一时钟周期末尾赋给第十一寄存器;第一寄存器、第二寄存器和第三寄存器三者的值进行FFj()函数操作,在第一时钟末尾赋给第九寄存器;第五寄存器、第六寄存器和第七寄存器三者的值进行GGj()函数操作,在第一时钟末尾赋给第十寄存器;其中,FFj()函数操作和GGj()函数操作为SM3杂凑密码压缩函数,Tj为SM3杂凑密码轮迭代常量。
第二时钟周期的操作包括:第九寄存器和第四寄存器的值进行模232加法,在第二时钟周期的末尾赋给第九寄存器;第十寄存器和第八寄存器的值进行模232加法,在第二时钟周期的末尾赋给第十寄存器;第一寄存器循环左移12位后与第十一寄存器进行模232加法,在第二时钟周期的末尾赋给第十一寄存器;
第三时钟周期的操作包括:第九寄存器的值和Wj`进行模232加法,在第三时钟周期的末尾赋给第九寄存器;第十寄存器的值和Wj进行模232加法,在第三时钟周期的末尾赋给第十寄存器;第十一寄存器循环左移7位,在第三时钟周期的末尾赋给第十一寄存器。其中Wj和Wj`为SM3杂凑密码***作字;
第四时钟周期的操作包括:第十寄存器和第十一寄存器的值进行模232加法,在第四时钟周期的末尾赋给第十寄存器;第一寄存器循环左移12位后与第十一寄存器按位异或,在第四时钟周期的末尾赋给第十一寄存器;
第五时钟周期的操作包括:第九寄存器和第十一寄存器的值进行模232加法,在第五时钟周期的末尾赋给第一寄存器;第一寄存器的值,在第五时钟周期的末尾赋给第一寄存器;第二寄存器的值左移9位,在第五时钟周期的末尾赋给第三寄存器;第三寄存器的值,在第五时钟周期的末尾赋给第四寄存器;第十寄存器的值进行P0()函数操作,在第五时钟周期的末尾赋给第五寄存器;第五寄存器的值,在第五时钟周期的末尾赋给第六寄存器;第六寄存器的值左移19位,在第五时钟周期的末尾赋给第七寄存器;第七寄存器的值,在第五时钟周期的末尾赋给第八寄存器。其中P0()函数操作为SM3杂凑密码P0()置换函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410349798.0A CN105281890B (zh) | 2014-07-22 | 2014-07-22 | 一种折叠结构的sm3杂凑密码压缩运算电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410349798.0A CN105281890B (zh) | 2014-07-22 | 2014-07-22 | 一种折叠结构的sm3杂凑密码压缩运算电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105281890A true CN105281890A (zh) | 2016-01-27 |
CN105281890B CN105281890B (zh) | 2018-04-03 |
Family
ID=55150289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410349798.0A Expired - Fee Related CN105281890B (zh) | 2014-07-22 | 2014-07-22 | 一种折叠结构的sm3杂凑密码压缩运算电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105281890B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109687972A (zh) * | 2018-12-21 | 2019-04-26 | 天津国芯科技有限公司 | 一种支持多种Hash算法的电路 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1716848A (zh) * | 2004-06-14 | 2006-01-04 | 上海安创信息科技有限公司 | 一种硬件快速实现杂凑算法的方法 |
CN102761414A (zh) * | 2011-04-26 | 2012-10-31 | 航天信息股份有限公司 | 一种sm3密码杂凑算法及确定其中的变量字的方法 |
US20130297667A1 (en) * | 2012-05-04 | 2013-11-07 | Leslie Imre Sohay | OSBS subtractor Accelerator |
CN103425939A (zh) * | 2013-08-07 | 2013-12-04 | 成都卫士通信息产业股份有限公司 | 一种sm3算法在java环境中的实现方法及*** |
CN103457719A (zh) * | 2013-07-23 | 2013-12-18 | 国家密码管理局商用密码检测中心 | 一种对sm3密码算法hmac模式的侧信道能量分析方法 |
-
2014
- 2014-07-22 CN CN201410349798.0A patent/CN105281890B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1716848A (zh) * | 2004-06-14 | 2006-01-04 | 上海安创信息科技有限公司 | 一种硬件快速实现杂凑算法的方法 |
CN102761414A (zh) * | 2011-04-26 | 2012-10-31 | 航天信息股份有限公司 | 一种sm3密码杂凑算法及确定其中的变量字的方法 |
US20130297667A1 (en) * | 2012-05-04 | 2013-11-07 | Leslie Imre Sohay | OSBS subtractor Accelerator |
CN103457719A (zh) * | 2013-07-23 | 2013-12-18 | 国家密码管理局商用密码检测中心 | 一种对sm3密码算法hmac模式的侧信道能量分析方法 |
CN103425939A (zh) * | 2013-08-07 | 2013-12-04 | 成都卫士通信息产业股份有限公司 | 一种sm3算法在java环境中的实现方法及*** |
Non-Patent Citations (10)
Title |
---|
AO TIANYONG,HE ZHANGQING,DAI KUI,ZOU XUECHENG;: "A compact hardware implementation of SM3", 《2014 IEEE INTERNATIONAL CONFERENCE ON CONSUMER ELECTRONICS》 * |
G WANG , Y SHEN;: "preimage and pseudo-collision attacks on step-reduced SM3 hash function", 《INFORMATION PROCESSING LETTERS》 * |
MA Y, XIA L, LIN J, ET AL.: "hardware performance optimization and evaluation of SM3 hash algorithm on FPGA", 《 INFORMATION AND COMMUNICATIONS SECURITY》 * |
MENDEL F, NAD T, SCHLÄFFER M: "finding collisions for round-reduced SM3", 《 INTERNATIONAL CONFERENCE ON TOPICS IN CRYPTOLOGY》 * |
丁冬平, 高献伟;: "SM3算法的FPGA设计与实现", 《微型机与应用》 * |
刘宗斌,马原,荆继武,夏鲁宁;: "SM3 哈希算法的硬件实现与研究", 《第26次全国计算机安全学术交流会》 * |
周琴琴: "基于Hash函数的MD5和SHA_1加密算法研究及其硬件实现", 《中国优秀硕士学位论文全文数据库》 * |
沈一公,苏厚勤;: "基于Android 的SM3 密码杂凑算法研究与实现", 《电子技术与软件工程》 * |
王晓燕,杨先文;: "基于FPGA的SM3算法优化设计与实现", 《计算机工程》 * |
申延召: "SM3密码杂凑算法分析", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109687972A (zh) * | 2018-12-21 | 2019-04-26 | 天津国芯科技有限公司 | 一种支持多种Hash算法的电路 |
CN109687972B (zh) * | 2018-12-21 | 2021-08-10 | 天津国芯科技有限公司 | 一种支持多种Hash算法的电路 |
Also Published As
Publication number | Publication date |
---|---|
CN105281890B (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Göös et al. | Communication lower bounds via critical block sensitivity | |
Aumasson et al. | NORX: parallel and scalable AEAD | |
CN109639428B (zh) | 从位混合器构造安全散列函数的方法 | |
Megha Mukundan et al. | Hash‐One: a lightweight cryptographic hash function | |
US10536264B2 (en) | Efficient cryptographically secure control flow integrity protection | |
CN106603222A (zh) | 一种用于实现sm3杂凑算法的***及sm3杂凑算法实现方法 | |
CN102289425B (zh) | 在信息安全中基于可扩展精度混沌的哈希算法 | |
CN109547192A (zh) | Sm3密码杂凑算法的并行化优化方法 | |
Kumar et al. | A cryptographic model based on logistic map and a 3-D matrix | |
Atiwa et al. | Accelerated hardware implementation of blake2 cryptographic hash for blockchain | |
CN105933120A (zh) | 一种基于Spark平台的口令哈希值恢复方法和装置 | |
Li et al. | Automatic preimage attack framework on ascon using a linearize-and-guess approach | |
CN101399667A (zh) | 产生快速安全哈希函数的步函数装置和消息扩展方法 | |
Jothi et al. | Parallel RC4 Key Searching System Based on FPGA | |
CN107612891B (zh) | 一种数据压缩加密电路 | |
CN105281890A (zh) | 一种折叠结构的sm3杂凑密码压缩运算电路 | |
CN103701591A (zh) | 一种序列密码实现方法和密钥流生成方法及装置 | |
CN103873239A (zh) | 基于偶数公钥密码体制应用的偶数素数对的快速生成方法 | |
CN109510699B (zh) | 一种六维离散超混沌***及六维离散超混沌信号发生器 | |
Ganor et al. | Space pseudorandom generators by communication complexity lower bounds | |
CN104219043B (zh) | 一种可预置和重构的密钥装置及运行方法 | |
CN101202618A (zh) | 利用环迭代结构生成消息摘要的方法和装置 | |
CN105119595B (zh) | 基于预充电型puf电路的blake算法 | |
CN106100825A (zh) | 基于fpga的高吞吐量sha‑1算法 | |
Lee et al. | Using AES Encryption Algorithm to Optimize High-tech Intelligent Platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180403 Termination date: 20200722 |