CN111464308A - 一种实现多种哈希算法可重构的方法和系统 - Google Patents
一种实现多种哈希算法可重构的方法和系统 Download PDFInfo
- Publication number
- CN111464308A CN111464308A CN202010174565.7A CN202010174565A CN111464308A CN 111464308 A CN111464308 A CN 111464308A CN 202010174565 A CN202010174565 A CN 202010174565A CN 111464308 A CN111464308 A CN 111464308A
- Authority
- CN
- China
- Prior art keywords
- register
- value
- csa
- algorithm
- data
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
一种实现多种哈希算法可重构的方法和系统,涉及网络安全领域,待认证数据分成多个消息块,存储SHA‑1、SM3、SHA‑224以及SHA‑256四种算法的初始值、常量数据Kt;将SHA‑1算法扩展成80个扩展数据、SHA‑224或SHA‑256算法扩展成64个扩展数据,得到Wt;SM3算法扩展成132个扩展数据,得到Wt和Wt';以选择的算法对应的初始值开始,结合Kt、Wt和Wt',对每个消息块进行64轮或80轮迭代压缩运算,得到中间哈希值;以上一个消息块的中间哈希值作为下一个消息块的迭代初始值,再次计算直至所有待认证数据计算完毕。本发明可用在多种需要哈希计算的场景,提高可重构层次的深入性。
Description
技术领域
本发明涉及网络安全领域,具体涉及一种实现多种哈希算法可重构的方法和系统。
背景技术
当今世界电子信息技术迅猛发展,病毒、黑客攻击、电子欺诈等恶性攻击方式的出现,使得用户数据遭受严重威胁。如果计算机和通讯设备遭到攻击,轻则造成个人层面的信息泄露和经济损失,重则造成国家层面的重要信息丢失,进而威胁国家安全,引发社会动荡。在此种环境下,信息安全显得尤为重要。如何保障信息传输过程中的数据安全,一直是社会广泛关注的问题,也是当下学术界和业界研究的一大热点。
数据完整性认证和数据来源认证是最基本的安全服务,在商务交易、邮件往来、数据存储等方面应用广泛。哈希算法(Hash Algorithm)用于提供上述保护,哈希算法又被称作散列算法,可以将任意长度的数据转换为固定长度二进制序列即哈希值。这些字符串具有如下特点:1、信息相同,哈希值也相同;2,强碰撞约束性,信息任意位置发生改变,其得到的散列值将发生巨大变化;3、不可逆性,由散列值不能得到原始信息。密码学Hash函数或许是应用范围最广的密码算法,在各种网络安全协议都可见到它的身影。SHA于1993年由NITS(National Institute of Standards and Technology,美国标准与技术研究所)发布,初期版本为SHA-0(Security Hash Algorithm-0),后来有研究人员成功对SHA-0进行攻击,于是在SHA-1(Security Hash Algorithm-1)在1995年被发布。SHA-1广泛应用于SSL(Security Socket Layer,安全套接层)、SSH(Secure Shell,安全外壳协议)和IPSec(Internet Protocol Security,互联网安全协议)等安全应用程序和协议。由于SHA-1又存在安全隐患,NITS随后又发布SHA-256、SHA-384、SHA-512等SHA-2系列的哈希算法。2010年,我国公布了SM3哈希算法,被广泛应用于信息安全领域。SM3国密算法填补国内哈希算法的空白,其安全性比SHA-1和MD5高。
网络发展的初期并没有把安全考虑在内,但是随着网络带宽的增加,信息交互的数据量增大,安全已经成为不能忽视的问题。网络攻击可能来自很多方面,如伪造、篡改消息数据等,会造成消息泄露,甚至产生虚假数据流。网络信息传输业务所依赖的TCP/IP(Transmission Control Protocol,传输控制协议/Internet Protocol,网际互连协议)协议族在开始设计时没有考虑任何安全性的问题,每个用户信息都会面临着信息泄露、信息篡改、假冒等安全威胁。互联网框架通过部署多种安全相关的协议,诸如IPSec(InternetProtocol Security,互联网安全协议)、SSL,来建立起安全框架。其中,IPSec为用户提供数据来源性验证、数据完整性验证和数据加密服务。IETF(Internet Engineering TaskForce,互联网工程任务组)规定支持IPSec协议的设备必须搭载安全散列算法SHA-1。
根据安全协议的不同以及网关计算性能的不同,采取的哈希算法也可能不相同,在不同的协议层面,针对不同的目的网关设备,需要采用不同的哈希算法来提供保护,一个完备且计算能力足够强大的安全网关需要支持TCP/IP协议栈的多种安全协议,需要设计适配各种安全协议的多种哈希算法加速器。传统的单个哈希算法IP实现形式固定,无法针对计算负载的需求量动态调节算法的计算任务。哈希算法的可重构实现可支持多种哈希算法,灵活性好,可配置性强,可根据不同的计算需求配置为不同的算法,实时调节各种算法的计算任务量。
高性能安全网关需要为客户提供多种服务,涉及到数据来源性验证、数据完整性验证和数据加密服务,需要支持多种密码算法的高速计算服务。目前对于哈希算法的实现研究主要集中在两个方面:第一、单一哈希算法的高速设计,针对各个不同的算法,进行多轮展开或者关键路径优化等策略实现哈希运算的高吞吐率,但设计的硬件结构只能实现单个算法,可配置性较差。第二、两个或两个以上哈希算法可重构实现,单个IP实现多种哈希算法,通过配置寄存器或者控制信号决定当前输入的数据采用哪种算法完成计算,但目前公开的可重构逻辑都是针对控制逻辑、缓冲区存储逻辑及消息填充分组等公共模块的可重构,对于消息扩展、轮函数等核心操作,可重构层次不够深入。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种实现多种哈希算法可重构的方法和系统,可用在多种需要哈希计算的场景,提高可重构层次的深入性。
为达到以上目的,一方面,采取一种实现多种哈希算法可重构的方法,包括:
接收待认证数据并分成多个512bit的消息块,存储SHA-1、SM3、SHA-224以及SHA-256四种算法的初始值,存储四种算法迭代压缩需要的常量数据Kt,t为迭代压缩的轮数;
将每个所述消息块进行扩展,SHA-1算法扩展成80个32bit的扩展数据、SHA-224或SHA-256算法扩展成64个32bit的扩展数据,得到消息扩展值Wt;SM3算法扩展成132个32bit的扩展数据,得到消息扩展值Wt和Wt';
以选择的算法对应的初始值开始,结合所述Kt、Wt和Wt',对每个消息块进行64轮或80轮迭代压缩运算,得到该消息块的中间哈希值;
以上一个消息块的中间哈希值作为下一个消息块的迭代初始值,再次计算中间哈希值,直至所有待认证数据计算完毕。
优选的,所述接收待认证数据并分成多个512bit的消息块包括:
待认证数据按照32bit分组时,接收16组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块;或者,待认证数据按照64bit分组时,接收8组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块。
优选的,对待认证数据中消息块的拼接包括:
若最后拼接的数据串长度小于448bit,则在该数据串末尾填充一个1和若干个0,使数据串长度为448bit,以64bit位宽的数据填充到数据串末尾,构成最后一个512bit位宽的消息块;
若最后拼接的数据串长度大于等于448bit且小于512bit,则在该数据串末尾填充一个1和若干个0至512bit长度,构成倒数第二个512bit消息块,然后再填充448个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度等于512bit,将此数据串作为倒数第二个消息块,然后再填充一个1和447个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
所述64bit位宽的数据是将待认证数据长度通过二进制表示,若不足64bit位宽时,在高位补0,使其满足64bit位宽。
优选的,每个所述消息块的扩展包括:将所述消息块由高到低位依次填充到16个32bit位宽的寄存器R15-R0中;
若选择是SHA-224或SHA-256算法,每个时钟周期取出寄存器R14、R9、R1和R0的值,根据Wt=σ1(Wt-2)+Wt-7+σ0(Wt-15)+Wt-16计算Wt;
若选择的是SM3算法,每个时钟周期取出寄存器R13、R10、R7、R3和R0的值,根据
每一个时钟周期过后,寄存器R15-R0依次向右移位,消息扩展值在算法选择信号的作用下经多路选择器赋到R15中,直至完成64轮或80轮迭。
优选的,所述对每个消息块进行64轮或80轮迭代压缩运算包括:
采用A-H共八个寄存器,初始时,对于SHA-1算法,将5个32bit的初始值赋值给A、B、C、D和E五个寄存器;对于SHA-224、SHA-256或SM3算法,将8个32bit的初始值赋值给A、B、C、D、E、F、G和H八个寄存器;
按时钟周期计算所选择算法的压缩迭代,当上一个时钟周期的消息块拓展后,进行第一个时钟周期的压缩迭代,同时,进行下一个时钟周期的消息块拓展;每个时钟周期进行n轮计算,且n被80和64整除;
所有轮数迭代压缩运算结束后,对于SM3算法,将运算结果同初始时的输入进行异或得到对应消息块的中间哈希值;对于SHA-224、SHA-256或SHA-1算法,将运算结果同初始时的输入相加得到对应消息块的中间哈希值。
优选的,选择SM3算法时,迭代压缩运算包括:
SS1=((A<<<12)+E+(Kt<<<t))<<<7
TT1=FF(A,B,C)+D+SS2+Wt'
TT2=GG(E,F,G)+H+SS1+Wt
E=P0(TT2)
A=TT1
其中,SS1、SS2、TT1和TT2均为中间值,P0为置换函数,A-H均表示对应寄存器的值,Kt为SM3算法存储的常量数据,t为当前迭代压缩模块的轮数:
每一轮SM3算法下寄存器A~H值更新包括:
将TT1赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值循环左移9位赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将TT2经过函数P0计算后赋值给寄存器E,将上一轮寄存器E的值赋值给寄存器F,将上一轮寄存器F的值循环左移19位赋值给寄存器G,将上一轮寄存器G的值赋值给寄存器H。
优选的,选择SHA-1算法时,迭代压缩运算包括:
T=(A<<<5)+ft(B,C,D)+E+Wt+Kt
其中,T表示计算得到的中间值,ft为布尔函数,A、B、C、D和E均表示对应寄存器的值;
每一轮SHA-1算法下寄存器A~E值更新包括:
将T赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值循环左移30位值赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将上一轮寄存器D的值赋值给寄存器E。
优选的,选择SHA-224或SHA-256算法时,迭代压缩运算包括:
T1=Kt+Wt+H+Σ1(E)+Ch(E,F,G)
T2=Σ0(A)+Ma(A,B,C)
A=T1+T2
E=D+T1
其中,T1和T2表示中间值,Σ1、Ch和Σ0均为逻辑函数,A-H均表示对应寄存器的值;
每一轮SHA-224或SHA-256算法下寄存器A~H值更新包括:
将T1和T2相加的结果赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将上一轮寄存器D的值和T1相加的结果赋值给寄存器E,将上一轮寄存器E的值赋值给寄存器F,将上一轮寄存器F的值赋值给寄存器G,将上一轮寄存器G的值赋值给寄存器H。
优选的,所述存储四种算法迭代压缩需要的常量数据Kt包括:
SHA-1算法存储4个32bit常量数据,SM3算法存储2个32bit常量数据、SHA-224或SHA-256存储64个32bit常量数据。
本发明还提供一种实现多种哈希算法可重构的系统,包括:
填充分组模块,接收待认证数据并分成多个512bit的消息块;
初始值存储模块,存储SHA-1、SM3、SHA-224以及SHA-256四种算法的初始值;
Kt存储模块,存储四种算法迭代压缩需要的常量数据Kt,t为迭代压缩的轮数;
Wt扩展模块,对每个所述消息块进行扩展,SHA-1算法扩展成80个32bit的扩展数据、SHA-224或SHA-256算法扩展成64个32bit的扩展数据,得到消息扩展值Wt;SM3算法扩展成132个32bit的扩展数据,得到消息扩展值Wt和Wt';
迭代压缩模块,以选择的算法对应的初始值开始,结合所述Kt、Wt和Wt',对每个消息块进行64轮或80轮迭代压缩运算,得到该消息块的中间哈希值;
轮数控制模块,用于控制Wt扩展模块的16个32bit的寄存器周期性依次向右移位,完成消息块的扩展;还用于驱动迭代压缩模块,以上一个消息块的值作为下一个消息块的迭代初始值,完成每个消息块的64轮或80轮迭代压缩运算,直至所有待认证数据计算完毕。
优选的,所述填充分组模块分别连接轮数控制模块、Wt扩展模块、迭代压缩模块和第二选择器;所述初始值存储模块通过第一选择器连接第二选择器,第二选择器连接I0-I7八个寄存器,八个寄存器的输出通过第三选择器连接A-H八个寄存器,A-H八个寄存器均连接至迭代压缩模块;所述迭代压缩模块的输出分别连接第二选择器和第三选择器;所述Kt存储模块通过第四选择器连接迭代压缩模块;所述轮数控制模块分别连接Wt扩展模块、Kt存储模块和迭代压缩模块。
优选的,所述填充分组模块将待认证数据并分成多个512bit的消息块,如果是第一个消息块,则控制所述第二选择器从初始值存储模块中提取所选择算法的初始值对I0-I7八个寄存器赋值;
如果是最后一个消息块,通知所述迭代压缩模块所有轮数迭代压缩运算完毕后输出结果。
优选的,待认证数据按照32bit分组时,填充分组模块接收16组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块;
或者,待认证数据按照64bit分组时,填充分组模块接收8组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块。
优选的,对待认证数据中消息块的拼接包括:
若最后拼接的数据串长度小于448bit,则在该数据串末尾填充一个1和若干个0,使数据串长度为448bit,以64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度大于等于448bit且小于512bit,则在该数据串末尾填充一个1和若干个0至512bit长度,构成倒数第二个512bit消息块,然后再填充448个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度等于512bit,将此数据串作为倒数第二个消息块,然后再填充一个1和447个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块。
优选的,所述Wt扩展模块包括第五选择器、第六选择器和16个寄存器R15-R0,第五选择器和第六选择器相连,第五选择器接收算法选择信号,第六选择器接收轮数控制模块输出的控制信号,并为R15赋值;
每个消息块拆分为16个32bit,通过第六选择器由高到低位依次填充到16个寄存器R15-R0中,最低32bit填在R0;每个时钟周期,R15-R0依次向右移,计算得到的值通过第五选择器、第六选择器赋值给R15;
寄存器R0、R2、R8和R13的值作为第一异或门的输入,第一异或门的输出结果经过循环左移1位输出,完成SHA-1算法的扩展函数;
R1的值经过函数σ0计算,连同R0和R9的值作为第二CSA的输入,R14的值经函数σ1处理后以及第二CSA的输出结果作为第一CSA的输入值,第一CSA的输出值送往第一加法器,第一加法器与第五选择器的输入相连,加法器的输出结果即为SHA-224或SHA-256算法的扩展函数值;
寄存器R0、R7和R13的值经循环左移15位的结果作为第三异或门的输入值,第三异或门的输出值经过函数P1计算后,连同R3循环左移7位的结果和R10的值送往第二异或门,第二异或门的输出值即为SM3算法的扩展函数值。
优选的,所述迭代压缩模块包括:
第一计算通路,用于根据寄存器A、寄存器E和Kt的值,计算中间值SS1和SS2;
第三计算通路,若使用SM3算法,则根据寄存器Wt、寄存器H、寄存器E、寄存器F、寄存器G和中间值SS1,计算得到中间值TT2和下一轮寄存器E的值;若使用SHA-1算法,则根据Kt和Wt的值、寄存器E、寄存器B、寄存器C、寄存器D和寄存器A的值,计算得到中间值Y1和中间值Y2,供给第二计算通路使用;若使用SHA-224或SHA-256算法,则根据Kt和Wt的值、寄存器H、寄存器E、寄存器F、寄存器G和寄存器D的值,计算得到中间值Y1、中间值Y2中间值TT2和下一轮寄存器E的值;
第二计算通路,用于根据选择的算法对应的Wt'、寄存器A、寄存器B、寄存器C、寄存器D、中间值Y1、中间值Y2和SS2,计算中间值TT1;
所述迭代压缩模块根据所述TT1、TT2以及寄存器A-H的原值,更新下一周期寄存器A-H的值。
优选的,所述第一计算通路包括第七CSA、第二加法器和第五异或门,第七CSA和第二加法器完成(A<<<12)+E+(Kt<<<t)的计算,计算结果循环左移7位后得到SS1,SS1,A循环左移12位后的结果经过第五异或门得到所述SS2;
所述第二计算通路包括多个选择器、第八CSA、第九CSA和第三加法器,所述第九CSA与所述第五异或门通过第十六选择器连接;
所述第三计算通路包括多个选择器、第四加法器和多个CSA,其中第五CSA输出所述Y1和Y2。
优选的,所述迭代压缩模块中,SM3算法的压缩函数路径包括:Kt循环左移t位、寄存器E和寄存器A循环左移12位的结果作为第七CSA的输入,第七CSA的输出经过第二加法器,再经过循环左移7位得到中间值SS1,中间值SS1与寄存器A循环左移12位的结果经过第五异或门得到中间值SS2;
通过第二计算通路中的三个选择器选中寄存器D的值、Wt'和函数FF作为第八CSA的输入,第八CSA的输出作为第九CSA的输入,通过第十六选择器选中所述SS2作为第九CSA的输入,第九CSA的输出经过第三加法器计算得到下一轮寄存器A的值TT1;
通过第八选择器选中0,第九选择器选中寄存器H和Wt的值作为第三计算通路中第三CSA的输入,通过第十选择器选中函数GG和第三CSA的输出作为第四CSA的输入,通过第十一选择器选中所述SS1和第四CSA的输出作为第五CSA的输入,通过第十二选择器选中0连同第五CSA的输出作为第六CSA的输入,第六CSA的输出经过第四加法器计算得到TT2,再经过置换函数P0得到下一轮寄存器E的值。
优选的,所述迭代压缩模块中,SHA-1算法的压缩路径包括:
通过第三计算通路中的两个选择器选择Kt和寄存器E的值,连同Wt作为第三计算通路中第三CSA的输入,第三CSA的输出结果加上第三计算通路中选择的布尔函数ft作为第三计算通路中第四CSA的输入,第四CSA的输出结果与寄存器A的循环左移5位结果作为第五CSA的输入,第五CSA的输出结果与所述第二计算通路中的两个选择器作为所述第八CSA的输入,再与第十六选择器选中的0一起作为第九CSA的输入,第九CSA的输出结果经过第三加法器计算得到下一轮寄存器A的值。
优选的,所述迭代压缩模块中,SHA-224或SHA-256算法的压缩路径包括:
第三计算通路中的两个选择器选中Kt和寄存器H作为第三计算通路中第三CSA的输入,通过第十选择器选择函数Ch作为第三计算通路中第四CSA的输入,通过第十一选择器选中函数∑1作为第五CSA的输入,通过第十二选择器选择寄存器D的值连同第五CSA的输出作为第六CSA的输入,第六CSA的的输出经过第四加法器计算得到下一轮寄存器E的值;
通过第二计算通路的第十三选择器选择函数Ma、以及通过第十四选择器和第十五选择器选择第三计算通路的中间值Y1和Y2,作为第八CSA的输入,第十六选择器选中函数∑0作为第九CSA的输入,第九CSA的输出经过第三加法器计算得到下一轮寄存器A的值。
上述技术方案具有如下有益效果:
通过对SHA-1、SHA-224、SHA-256和SM3算法流程的异同的研究,提出了可重构的架构设计,填充分组模块和轮数控制模块共用,初始值和Kt数值经过多路选择器,在算法选择信号的控制下送入迭代压缩模块。Wt扩展模块使用16个32bit寄存器、2个多路选择器、4个异或门、2个CSA(Carry Save Adder,进位保留加法器)和1个二输入32bit加法器完成4种算法的Wt扩展过程。迭代压缩模块使用7个进位保留加法器、12个多路选择器、3个加法器和8个寄存器以及若干个与或非逻辑完成四种算法的单轮迭代。
相较于以前的可重构哈希电路,本发明在迭代压缩模块进行了更深层次的重构,在SM3算法电路的基础上实现其它三种哈希算法,最大化的重复利用加法器和寄存器资源,极大减小硬件面积,同时采用进位保留加法器(CSA)减小关键路径延时。迭代压缩模块的电路灵活可配置,可用在多种需要哈希计算的场景,在模块的启动信号拉高的同时,算法选择信号alg_sel需由指明当前运算采用何种算法,然后根据选择的算法来控制选择器选择相应的计算通路,完成算法计算。
附图说明
图1为本发明实施例实现多种哈希算法可重构系统示意图;
图2为本发明实施例Wt扩展模块示意图;
图3为本发明实施例迭代压缩模块示意图;
图4为本发明实施例SM3算法的迭代压缩配置图;
图5为本发明实施例SHA-1算法的迭代压缩配置图;
图6为本发明实施例SHA-224或SHA-256法的迭代压缩配置图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本实施例提供一种实现多种哈希算法可重构的方法,包括步骤:
接收待认证数据并分成多个512bit(位宽)的消息块,存储SHA-1、SM3、SHA-224以及SHA-256四种算法的初始值,存储四种算法迭代压缩需要的常量数据Kt,t为迭代压缩的轮数。SHA-1、SHA-224以及SHA-256算法中,Kt出自协议NIST.FIPS.180-4协议,(网址为https://www.nist.gov/publications/secure-hash-standard-shs?pub_id=910977);SM3算法中,Kt即为SM3密码杂凑算法协议(网址为http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002389.shtml)中的Tj。
对每个512bit的消息块按照选择的算法进行扩展。将SHA-1算法扩展成80个32bit(位宽)的扩展数据,分别为W0~W79,得到消息扩展值Wt,每轮压缩需要一个Wt,共80轮。SHA-224或SHA-256算法扩展成64个32bit的扩展数据,分别为W0~W63,得到消息扩展的值Wt,每轮压缩需要一个Wt,共64轮。
SM3算法扩展成132个32bit的扩展数据,分别为W0~W67,W0'~W63',得到消息扩展的值Wt和Wt',每轮压缩需要一个Wt和一个Wt';其中W0~W67以及W0'~W63',共64轮,W64~W67是为了生成Wt',并不直接参与迭代压缩。并且,Wt和Wt'即为SM3密码杂凑算法协议中的Wj和Wj'。
以选择的算法对应的初始值开始,结合每一轮要对应的常量数据Kt、Wt和Wt',对每个消息块进行64轮或80轮迭代压缩运算,得到该消息块的中间哈希值。其中,SHA-1算法为80轮,其余算法为64轮。
以上一个消息块中间哈希值作为下一个消息块的迭代初始值,再次计算Wt、Wt'和中间哈希值,直至所有待认证数据计算完毕,得到最后一个消息块的中间哈希值,即为摘要值。
上述步骤中,对于接收的待认证数据,提供两个不同的实施例。如果是按照32bit分组时,接收16组待认证数据之后,将累计收到的待认证数据拼接成512bit消息块;如果是按照64bit分组时,接收8组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块。
对待认证数据中消息块,当前面的消息块拼接后,根据最后一个要拼接的数据串长度,进行不同的补充,以完成所有消息块的拼接,具体拼接包括:
若最后拼接的数据串长度小于448bit,则在该数据串末尾填充一个1和若干个0,使数据串长度为448bit,以64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度大于等于448bit且小于512bit,则在该数据串末尾填充一个1和若干个0至512bit长度,构成倒数第二个512bit消息块,然后再填充448个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度等于512bit,将此数据串作为倒数第二个消息块,然后再填充一个1和447个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块。
上述64bit位宽的数据是将待认证数据长度通过二进制表示,若不足64bit位宽时,在高位补0,使其满足64bit位宽。
进一步的,提供一个消息扩展得到消息扩展值Wt和Wt'方法的实施例,包括步骤:
将一个上述512bit的消息块由高到低位依次填充到16个32bit寄存器R15-R0中。
若选择的是SHA-1算法,每个时钟周期取出寄存器R13、R8、R2和R0的值,根据计算Wt。其中,ROTL表示循环左移函数(<<<),上角标是1表示循环左移1位,表示异或符号,R0-R15依次存储消息扩展值W0-W15。本实施例中t=16,公式中后面四个算子分别是W13、W8、W2和W0,由此得到W16,然后R15~R0寄存器值依次右移,W16的值赋给寄存器R15。
若选择的是SM3算法,每个时钟周期取出寄存器R13、R10、R7、R3和R0的值,根据
每一个时钟周期过后,16个寄存器R15-R0依次向右移位,扩展完成的值在算法选择信号的作用下经多路选择器赋到R15中,直至完成64轮或80轮迭代。
进一步的,对每个消息块进行64轮或80轮迭代压缩运算包括:
根据选择的算法,初始时配置选择器将对应的初始值填入寄存器A、寄存器B、寄存器C、寄存器D、寄存器E、寄存器F、寄存器G和寄存器H中。对于SHA-1算法,将5个32bit的初始值赋值给A、B、C、D和E五个寄存器;对于SHA-224、SHA-256或SM3算法,将8个32bit的初始值赋值给A、B、C、D、E、F、G和H八个寄存器。
按时钟周期计算所选择算法的压缩迭代,当上一个时钟周期的消息块拓展后,进行第一个时钟周期的压缩迭代,同时,进行下一个时钟周期的消息块拓展。由于SHA-1算法一共进行80轮,SM3、SHA-224或SHA-256算法一共进行64轮,每个周期进行n轮,因此要保证80和64是n的倍数,n可以是1,即每个时钟周期进行1轮计算,n也可以是2、4或者8,并且一个时钟周期内进行运算的轮数不能太多,这样会导致时钟频率下降。
一个512bit的消息块所有轮数迭代压缩运算结束后,对于SM3算法,将运算结果同初始时的输入进行异或得到对应消息块的中间哈希值;对于SHA-224、SHA-256或SHA-1算法,将运算结果同初始时的输入相加得到对应消息块的中间哈希值。
压缩迭代过程中,根据当前迭代轮数,选择合适的常量数据Kt、Wt和Wt',并且Kt的数量和选择的算法相关,SHA-1算法存储4个32bit常量数据Kt,SM3算法存储2个32bit常量数据Kt、SHA-224或SHA-256存储64个32bit常量数据Kt。
如图1所示,提供一种实现多种哈希算法可重构的系统的实施例,可以用来实现上述方法。系统包括填充分组模块、初始值存储模块、Kt存储模块、Wt扩展模块、轮数控制模块、和迭代压缩模块。其中,图中[]内为位宽。
填充分组模块分别连接轮数控制模块、Wt扩展模块、迭代压缩模块和第二选择器(multiplexer,MUX)。初始值存储模块通过第一选择器连接第二选择器,第二选择器连接I0-I7八个寄存器;八个寄存器的输出通过第三选择器连接A-H八个寄存器,A-H八个寄存器均连接至迭代压缩模块。迭代压缩模块的输出分别连接第二选择器和第三选择器;Kt存储模块通过第四选择器连接迭代压缩模块;轮数控制模块分别连接Wt扩展模块、Kt存储模块和迭代压缩模块。
填充分组模块,用来从外部接口接收待认证数据,并分成多个512bit的消息块,将消息块送往Wt扩展模块,并给出当前的消息块是第一块还是最后一块,如果是第一个消息块,则控制第二选择器从初始值存储模块中提取所选择算法的初始值对I0-I7八个寄存器赋值;如果是最后一个消息块,通知迭代压缩模块所有轮数迭代压缩运算完毕后输出结果;如果是中间消息块,则上一个512bit消息块计算的中间哈希值经过第二选择器送到I0-I7八个寄存器中。
Kt存储模块,用来存储四种算法迭代压缩需要的常量数据Kt,根据选择的算法和当前轮数,经多路选择器取出相应的常量,其中SHA-1算法是4个32bit常量,SM3算法是2个32bit常量、SHA-224算法和SHA-224均是64个32bit常量。
Wt扩展模块,对每个所述消息块进行扩展。当SHA-1算法时,对应的所述消息块扩展成80个32bit的扩展数据;当SHA-224或SHA-256算法时,对应的所述消息块扩展成64个32bit的扩展数据;得到消息扩展的值Wt;当SM3算法时,对应的所述消息块扩展成132个32bit的扩展数据,得到消息扩展的值Wt和Wt'。消息扩展的值参与到每轮的迭代压缩计算过程,消息块由高到低位依次填充到16个寄存器R15-R0中。上述SHA-1算法、SHA-224和SHA-256算法扩展依据为NIST.FIPS.180-4,SM3算法扩展依据为SM3密码杂凑算法。
如图2所示,具体的,Wt扩展模块包括第五选择器、第六选择器和16个寄存器R15-R0,第五选择器和第六选择器相连,第五选择器接收算法选择信号alg_sel,第六选择器接收轮数控制模块输出的控制信号cur_round,还接收填充分组模块输出的消息块信号msg_blk,并对R15进行赋值。
每个消息块拆分为16个32bit,通过第六选择器由高到低位依次填充到16个寄存器R15-R0中,最低32bit填在寄存器R0,最高32bit填在寄存器R15。每个时钟周期上升沿,寄存器R15-R0依次向右移,计算得到的值通过第五选择器、第六选择器赋值给R15,R15赋值给R14,R14赋值给R13,以此类推,R1赋值给R0。
如图2所示,寄存器R0、R2、R8和R13的值(即W0、W2、W8和W13)作为第一异或门的输入,第一异或门的输出结果经过循环左移1位后输出,完成SHA-1算法的扩展函数。
其中,SHA-1算法的扩展函数为:从输入的512bit消息块Mi中由高到低取出数据,依次存入寄存器R15、……、R1、R0,也即W15为Mi[511:480]、W14为Mi[479:448]、……、W0为Mi[31:0]。对于SHA-1的扩展数据W16~W79,根据迭代公式
寄存器R1的值经过函数σ0计算,连同寄存器R0和R9的值作为第二CSA的输入,第二CSA的输出结果加上R14的值经函数σ1处理,作为第一CSA的3个输入值,第一CSA的输出值送往第一加法器,第一加法器与第五选择器的输入相连,第一加法器的输出结果即为SHA-224或SHA-256算法的扩展函数值。上述σ0和σ1均为NIST.FIPS.180-4协议中的函数。
其中,SHA-224算法或SHA-256算法的扩展函数为:从输入的512bit消息块Mi中由高到低取出数据,依次存入寄存器R15、……、R1、R0,也即W15为Mi[511:480]、W14为Mi[479:448]、……、W0为Mi[31:0]。对于W16~W63,根据迭代公式
Wt=σ1(Wt-2)+Wt-7+σ0(Wt-15)+Wt-16得出。
寄存器R0、R7和R13的值经循环左移15位的结果作为第三异或门的输入值,第三异或门的输出值经过置换函数P1计算后,连同寄存器R3循环左移7位的结果和R10的值送往第二异或门,第二异或门的输出值即为SM3算法的扩展函数值。
其中,SM3算法的扩展函数为:从输入的512bit消息块Mi中由高到低取出数据,依次存入寄存器R15、……、R1、R0,也即W15为Mi[511:480]、W14为Mi[479:448]、……、W0为Mi[31:0]。W16-W67根据迭代公式得出。对于SM3算法的W0'~W63',按照得出Wt'。
上述三个扩展函数值经过第一选择器和第二选择器,在算法选择信号和控制信号的作用下赋值给寄存器R15,完成本轮的消息扩展。
如图1所示,本实施例中迭代压缩模块以选择的算法对应的初始值开始,SHA-1算法、SHA-224以及SHA-256结合上述Kt、Wt,或者SM3算法结合Kt、Wt和Wt',对每个消息块进行64轮或80轮迭代压缩运算,得到该消息块的中间哈希值。其中,SHA-1算法进行80轮迭代压缩,其他算法进行64轮迭代压缩。
轮数控制模块,用于控制Wt扩展模块的多个寄存器周期性依次向右移位,完成消息块的扩展;还用于驱动迭代压缩模块,以上一个消息块的值作为下一个消息块的迭代初始值,完成每个消息块的64轮或80轮迭代压缩运算,直至所有待认证数据计算完毕。
另外,本实施例中,第三选择器和寄存器A-H用于迭代压缩模块每周期计算的选择;第二选择器和寄存器I0-I7用于每一个512bit的消息块的选择。每一个周期迭代压缩计算后,通过第三选择器进行选择,而每一个消息块的迭代压缩计算后,通过第二选择器选择。
消息扩展和迭代压缩的轮数由选择的算法决定,以64轮为例,在第1个时钟周期进行Wt扩展模块第一次消息扩展,在第2个时钟周期进行第二次消息扩展,同时进行第一轮(以每个周期一轮)的压缩迭代,第一个时钟周期消息扩展的值作为第一轮压缩迭代的输入。所以迭代压缩比消息扩展晚一个时钟周期,这样需要65个时钟周期完成消息扩展和压缩迭代。
如图3所示,提供一种迭代压缩模块的具体可重构结构实施例。本实施例中,迭代压缩模块包括三个计算通路。
第一计算通路,用于根据寄存器A、寄存器E和Kt的值,计算中间值SS1和SS2。具体包括第七CSA、第二加法器和第五异或门,第七CSA和第二加法器完成(A<<<12)+E+(Kt<<<t)的计算,计算结果循环左移7位后得到SS1。SS1,A循环左移12位后的结果经过第五异或门得到所述SS2。
第三计算通路,用于根据选择的算法对应的Kt、Wt,以及寄存器B、寄存器C、寄存器D、寄存器E、寄存器F、寄存器G、寄存器H和中间值SS1,计算中间值Y1、中间值Y2和中间值TT2。第三计算通路包括第八选择器、第九选择器、第十选择器、第十一选择器、第十二选择器、第四加法器、第三CSA、第四CSA、第五CSA和第六CSA。第八选择器的输入与Kt连接,第三CSA的输入与Wt连接,第八选择器和第九选择器的输出与第三CSA的输入相连,第三CSA的输出与第十选择器的输出均连接第四CSA的输入,第四CSA的输出与第十一选择器的输出均连接第五CSA的输入,第五CSA输出中间值Y1(部分和)和Y2(进位);第五CSA的输出和第十二选择器的输出连接第六CSA,第六CSA的输出连接第四加法器,第四加法器输出中间值TT2。
第二计算通路包括第十三选择器、第十四选择器、第十五选择器、第八CSA、第九CSA和第三加法器,第九CSA与上述第五异或门通过第十六选择器连接;第九CSA的输出连接第三加法器的输入,第三加法器输出中间值TT1。
迭代压缩模块还包括第十七选择器、第十八选择器和第十九选择器,根据上述TT1、TT2以及寄存器A-H的原值,更新下一周期寄存器A-H的值。为了更清楚的表明,图3左边的表示当前寄存器A-H;图3右边的表示一轮计算后更新的寄存器A-H。
如图4所示,提供一种SM3算法的压缩函数路径实施例。计算的关键路径为:
SS1=((A<<<12)+E+(Kt<<<t))<<<7
TT1=FF(A,B,C)+D+SS2+Wt'
TT2=GG(E,F,G)+H+SS1+Wt
更新后的寄存值为:
E=P0(TT2)
A=TT1
Kt循环左移t位、寄存器E和寄存器A循环左移12位的结果作为第七CSA的输入,第七CSA的输出经过第二加法器,再经过循环左移7位得到中间值SS1,中间值SS1与寄存器A循环左移12位的结果经过第五异或门得到中间值SS2;具体计算的伪代码如下:
第七CSA←[A<<<12,E,Kt<<<t]
第二加法器←第七CSA的两个结果
SS1←第二加法器计算的结果循环左移7位
通过第二计算通路中的三个选择器选中寄存器D的值、Wt'和函数FF作为第八CSA的输入,第八CSA的输出作为第九CSA的输入,通过第十六选择器选中SS2作为第九CSA的输入,第九CSA的输出经过第三加法器计算得到下一轮寄存器A的值TT1;具体计算的伪代码如下:
alg_sel←SM3
第八CSA←[FF(A,B,C),D,Wt']
第九CSA←[SS2,第八CSA的两个结果]
第三加法器←第九CSA的两个结果
TT1←第三加法器的结果。
通过第八选择器选中0,第九选择器选中寄存器H和Wt一起作为第三计算通路中第三CSA的输入,第十选择器选中函数GG(E,F,G)的值与第三CSA的两个输出结果一起作为第四CSA的输入,通过第十一选择器选中SS1作为第五CSA的输入,通过第十二选择器选中0连同第五CSA的输出作为第六CSA的输入,第六CSA的输出经过第四加法器计算得到TT2,再经过置换函数P0得到寄存器E的值。上述FF、GG、P0均为SM3密码杂凑算法协议中的函数,具体计算的伪代码如下:
alg_sel←SM3
第三CSA←[H,Wt,0]
第四CSA←[GG(E,F,G),第三CSA的两个结果]
第五CSA←[SS1,第四CSA的两个结果]
第六CSA←[0,第五CSA的两个结果]
第四加法器←第六CSA的两个结果
TT2←第四加法器计算的结果
SM3算法控制第十三选择器、第十四选择器、第十五选择器和第十六选择器分别选择FF(A,B,C)、D、Wt'和SS2,经过两级CSA(第八CSA和第九CSA)和第三加法器完成四个数的相加,得到更新后的A,如第二计算通路,将三级加法延时变成二级逻辑门延时和一级加法延时。
SM3算法控制第八选择器、第九选择器、第十选择器、第十一选择器和第十二选择器分别完成0、寄存器H、GG(E,F,G)、SS1和0的数据选择,通过四级CSA(第三CSA、第四CSA、第五CSA和第六CSA)和第四加法器完成GG(E,F,G)+H+SS1+Wt的计算,最后经过P0函数操作得到更新后的E值,如第三计算通路所示。四个数相加只需要三级CSA和一级加法,而图4中多使用了第四CSA是为了实现加法计算通路与SHA-1、SHA224和SHA256算法共用。SM3算法迭代压缩的关键路径是寄存器E的计算,由计算公式可知E计算需要5级加法和1级置换函数P0,采用了5级CSA(第七CSA、第三CSA、第四CSA、第五CSA和第六CSA)和2级加法器(第二加法器和第四加法器),既减小了面积又提高了时钟频率。
如图5所示,提供一种SHA-1算法的压缩函数路径实施例。计算的关键路径为:
T=(A<<<5)+ft(B,C,D)+E+Wt+Kt,
其中ft为布尔函数,出处是NIST.FIPS.180-4,A、B、C、D和E均表示对应寄存器的值。SHA-1算法中间值T的计算复用了SM3算法第二和第三通路,T正好对应于图5中的TT1,通过第三计算通路中的第八选择器和第九选择器分别选择Kt和寄存器E的值,连同Wt作为第三CSA的输入,第三CSA的输出结果加上第十选择器选择的布尔函数ft作为第四CSA的输入,第四CSA的输出结果与寄存器A的循环左移5位结果作为第五CSA的输入,第十四选择器和第十五选择器选择第五CSA的输出结果作为第八CSA的输入,再与第十六选择器选中的0一起作为第九CSA的输入,第九CSA的输出结果经过第三加法器计算得到下一轮寄存器A的值TT1。
SHA-1算法主要复用了SM3算法TT1和TT2的计算通路,即第二计算通路和第三计算通路的计算路径。SHA-1算法控制第八选择器、第九选择器和第十选择器分别选择初始值Kt、寄存器E的值和ft(B,C,D),控制第十一选择器选择寄存器A循环左移5位后的结果。Kt、Wt、E、ft(B,C,D)和(A<<<5)通过三级CSA(第三CSA、第四CSA和第五CSA)得到2个中间结果Y1和Y2。具体计算的伪代码如下:
alg_sel←SHA-1
第三CSA←[E,Wt,Kt]
第四CSA←[ft(B,C,D),第三CSA的两个结果]
第五CSA←[A<<<5,第四CSA的两个结果]
Y1,Y2←第五CSA的两个结果。
然后控制第十三选择器、第十四选择器和第十五选择器分别选择0、Y1和Y2。最后通过两级CSA(第八CSA和第九CSA)以及第三加法器完成5个数的相加,得到更新后的A值。具体计算的伪代码如下:
alg_sel←SHA-1
第八CSA←[0,Y1,Y2]
第九CSA←[0,第八CSA的两个结果]
第三加法器←第九CSA的两个结果
TT1←第三加法器的结果
SHA-1的关键计算路径由4级加法变成5级逻辑门延时和1级加法延时,相同位宽的CSA结构比加法器更节约面积。5个数相加只需要使用3级CSA和一级加法器,而SHA-1关键路径是复用了SM3算法的第三加法器,所以增加了两级CSA,减小资源占用。
如图6所示,提供SHA-224和SHA-256算法的压缩函数路径实施例,由于二者计算路径相同,其关键路径为:
T1=Kt+Wt+H+Σ1(E)+Ch(E,F,G)
T2=Σ0(A)+Ma(A,B,C)
A=T1+T2
E=D+T1
其中,Σ1、Ch、Σ0、Ma均为出自NIST.FIPS.180-4中的函数,A-H均表示对应寄存器的值,A正好对应于图6中的TT1,E正好对应于图6中的TT2,中间值Y1和Y2相加的结果是T1,第二计算通路计算了T1+T2;第三计算通路计算D+T1。A和E的计算复用了SM3算法第二和第三通路,图6中第三计算通路的中间值Y1和Y2相加结果是T1,第二计算通路计算过程是Σ0(A)+Ma(A,B,C)+T1,即T2+T1。
第三计算通路中的第八选择器、第九选择器分别选中Kt和寄存器H作为第三CSA的输入,通过第十选择器选择函数Ch作为第四CSA的输入,通过第十一选择器选中函数∑1作为第五CSA的输入,通过第十二择器选择寄存器D的值连同第五CSA的输出作为第六CSA的输入,第六CSA的的输出经过第四加法器计算得到寄存器E的值。具体计算的伪代码如下:
alg_sel←SHA-224或SHA-256
第三CSA←[H,Wt,Kt]
第四CSA←[Ch(E,F,G),第三CSA的两个结果]
第五CSA←[Σ1(E),第四CSA的两个结果]
Y1,Y2←第五CSA的两个结果
第六CSA←[D,第五CSA的两个结果]
第四加法器←第六CSA的两个结果
TT2←第四加法器的结果。
SHA-224或SHA-256算法控制第八选择器、第九选择器、第十选择器、第十一选择器分别选择数据Kt、H、Ch(E,F,G)和Σ1(E),再和Wt一起通过三级CSA结构(第三CSA、第四CSA和第五CSA)计算出两个中间结果Y1和Y2,Y1、Y2和寄存器D通过第六CSA和第四加法器相加得到更新之后的寄存器E值。
通过第二计算通路的第十三选择器选择函数Ma、以及通过第十四选择器和第十五选择器选择第三计算通路的中间值Y1和Y2,作为第八CSA的输入,第十六选择器选中函数∑0作为第九CSA的输入,第九CSA的输出经过第三加法器计算得到寄存器A的值。具体计算的伪代码如下:
alg_sel←SHA-224或SHA-256
第八CSA←[Ma(A,B,C),Y1,Y2]
第九CSA←[Σ0(A),第八CSA的两个结果]
第三加法器←第九CSA的两个结果
TT1←第三加法器的结果
A←TT1
寄存器A的计算复用了SM3算法TT1的计算通路,即第二计算通路所示,控制选择器第十三选择器、第十四选择器、第十五选择器和第十六选择器分别选择数据Ma(A,B,C)、Y1、Y2和Σ0(A)。四个加数通过两级CSA(第八CSA和第九CSA)和第三加法器完成T1+T2的运算,得到更新之后的A值。
重复上面每种算法的计算,直至完成64轮或80迭代,将所有轮迭代更新之后的A-H这8个寄存器与第一轮的初始输入A-H进行运算。其中,SHA-1算法的A-E 5个寄存器值和迭代前的初始值相加得到新的5个寄存器值;SHA-224或SHA-256算法的A-H 8个寄存器值和迭代前的初始值相加得到新的8个寄存器值;SM3算法的A-H 8个寄存器值和迭代前的初始值异或得到新的8个寄存器值。
SM3算法下寄存器A~H值更新的伪代码如下:
alg_sel←SM3
A←TT1
B←A
C←B<<<9
D←C
E←P0(TT2)
F←E
G←F<<<19
H←G
即每一轮SM3算法下寄存器A~H值更新包括:
将TT1赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值循环左移9位赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将TT2经过函数P0计算后赋值给寄存器E,将上一轮寄存器E的值赋值给寄存器F,将上一轮寄存器F的值循环左移19位赋值给寄存器G,将上一轮寄存器G的值赋值给寄存器H。
SHA-1算法下寄存器A~H值更新的伪代码如下:
alg_sel←SHA-1
A←TT1
B←A
C←B<<<30
D←C
E←D
即每一轮SHA-1算法下寄存器A~E值更新包括:
将T赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值循环左移30位值赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将上一轮寄存器D的值赋值给寄存器E。
SHA-224或SHA-256算法下寄存器A~H值更新的伪代码如下:
alg_sel←SHA-224或SHA-256
A←TT1
B←A
C←B
D←C
E←TT2
F←E
G←F
H←G
即每一轮SHA-224或SHA-256算法下寄存器A~H值更新包括:
将T1赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将T2赋值给寄存器E,将上一轮寄存器E的值赋值给寄存器F,将上一轮寄存器F的值赋值给寄存器G,将上一轮寄存器G的值赋值给寄存器H。
上述各实施例中,SHA-1算法、SHA-224和SHA-256算法中出现的符号及函数的出处是NIST.FIPS.180-4协议;SM3算法中出现的符号及函数的出处是SM3密码杂凑算法协议。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。
Claims (20)
1.一种实现多种哈希算法可重构的方法,其特征在于,包括:
接收待认证数据并分成多个512bit的消息块,存储SHA-1、SM3、SHA-224以及SHA-256四种算法的初始值,存储四种算法迭代压缩需要的常量数据Kt,t为迭代压缩的轮数;
将每个所述消息块进行扩展,SHA-1算法扩展成80个32bit的扩展数据、SHA-224或SHA-256算法扩展成64个32bit的扩展数据,得到消息扩展值Wt;SM3算法扩展成132个32bit的扩展数据,得到消息扩展值Wt和Wt';
以选择的算法对应的初始值开始,结合所述Kt、Wt和Wt',对每个消息块进行64轮或80轮迭代压缩运算,得到该消息块的中间哈希值;
以上一个消息块的中间哈希值作为下一个消息块的迭代初始值,再次计算中间哈希值,直至所有待认证数据计算完毕。
2.如权利要求1所述的实现多种哈希算法可重构的方法,其特征在于,所述接收待认证数据并分成多个512bit的消息块包括:
待认证数据按照32bit分组时,接收16组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块;
或者,待认证数据按照64bit分组时,接收8组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块。
3.如权利要求2所述的实现多种哈希算法可重构的方法,其特征在于,对待认证数据中消息块的拼接包括:
若最后拼接的数据串长度小于448bit,则在该数据串末尾填充一个1和若干个0,使数据串长度为448bit,以64bit位宽的数据填充到数据串末尾,构成最后一个512bit位宽的消息块;
若最后拼接的数据串长度大于等于448bit且小于512bit,则在该数据串末尾填充一个1和若干个0至512bit长度,构成倒数第二个512bit消息块,然后再填充448个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度等于512bit,将此数据串作为倒数第二个消息块,然后再填充一个1和447个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
所述64bit位宽的数据是将待认证数据长度通过二进制表示,若不足64bit位宽时,在高位补0,使其满足64bit位宽。
4.如权利要求1所述的实现多种哈希算法可重构的方法,其特征在于,每个所述消息块的扩展包括:
将所述消息块由高到低位依次填充到16个32bit位宽的寄存器R15-R0中;
若选择是SHA-224或SHA-256算法,每个时钟周期取出寄存器R14、R9、R1和R0的值,根据Wt=σ1(Wt-2)+Wt-7+σ0(Wt-15)+Wt-16计算Wt;
若选择的是SM3算法,每个时钟周期取出寄存器R13、R10、R7、R3和R0的值,根据
每一个时钟周期过后,寄存器R15-R0依次向右移位,消息扩展值在算法选择信号的作用下经多路选择器赋到R15中,直至完成64轮或80轮迭。
5.如权利要求1所述的实现多种哈希算法可重构的方法,其特征在于,所述对每个消息块进行64轮或80轮迭代压缩运算包括:
采用A-H共八个寄存器,初始时,对于SHA-1算法,将5个32bit的初始值赋值给A、B、C、D和E五个寄存器;对于SHA-224、SHA-256或SM3算法,将8个32bit的初始值赋值给A、B、C、D、E、F、G和H八个寄存器;
按时钟周期计算所选择算法的压缩迭代,当上一个时钟周期的消息块拓展后,进行第一个时钟周期的压缩迭代,同时,进行下一个时钟周期的消息块拓展;每个时钟周期进行n轮计算,且n被80和64整除;
所有轮数迭代压缩运算结束后,对于SM3算法,将运算结果同初始时的输入进行异或得到对应消息块的中间哈希值;对于SHA-224、SHA-256或SHA-1算法,将运算结果同初始时的输入相加得到对应消息块的中间哈希值。
6.如权利要求5所述的实现多种哈希算法可重构的方法,其特征在于,选择SM3算法时,迭代压缩运算包括:
SS1=((A<<<12)+E+(Kt<<<t))<<<7
TT1=FF(A,B,C)+D+SS2+Wt'
TT2=GG(E,F,G)+H+SS1+Wt
E=P0(TT2)
A=TT1
其中,SS1、SS2、TT1和TT2均为中间值,P0为置换函数,A-H均表示对应寄存器的值,Kt为SM3算法存储的常量数据,t为当前迭代压缩模块的轮数:
每一轮SM3算法下寄存器A~H值更新包括:
将TT1赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值循环左移9位赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将TT2经过函数P0计算后赋值给寄存器E,将上一轮寄存器E的值赋值给寄存器F,将上一轮寄存器F的值循环左移19位赋值给寄存器G,将上一轮寄存器G的值赋值给寄存器H。
7.如权利要求5所述的实现多种哈希算法可重构的方法,其特征在于,选择SHA-1算法时,迭代压缩运算包括:
T=(A<<<5)+ft(B,C,D)+E+Wt+Kt
其中,T表示计算得到的中间值,ft为布尔函数,A、B、C、D和E均表示对应寄存器的值;
每一轮SHA-1算法下寄存器A~E值更新包括:
将T赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值循环左移30位值赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将上一轮寄存器D的值赋值给寄存器E。
8.如权利要求5所述的实现多种哈希算法可重构的方法,其特征在于,选择SHA-224或SHA-256算法时,迭代压缩运算包括:
T1=Kt+Wt+H+Σ1(E)+Ch(E,F,G)
T2=Σ0(A)+Ma(A,B,C)
A=T1+T2
E=D+T1
其中,T1和T2表示中间值,Σ1、Ch和Σ0均为逻辑函数,A-H均表示对应寄存器的值;
每一轮SHA-224或SHA-256算法下寄存器A~H值更新包括:
将T1和T2相加的结果赋值给寄存器A,将上一轮寄存器A的值赋值给寄存器B,将上一轮寄存器B的值赋值给寄存器C,将上一轮寄存器C的值赋值给寄存器D,将上一轮寄存器D的值和T1相加的结果赋值给寄存器E,将上一轮寄存器E的值赋值给寄存器F,将上一轮寄存器F的值赋值给寄存器G,将上一轮寄存器G的值赋值给寄存器H。
9.如权利要求1所述的实现多种哈希算法可重构的方法,其特征在于,所述存储四种算法迭代压缩需要的常量数据Kt包括:
SHA-1算法存储4个32bit常量数据,SM3算法存储2个32bit常量数据、SHA-224或SHA-256存储64个32bit常量数据。
10.一种实现多种哈希算法可重构的系统,其特征在于,包括:
填充分组模块,接收待认证数据并分成多个512bit的消息块;
初始值存储模块,存储SHA-1、SM3、SHA-224以及SHA-256四种算法的初始值;
Kt存储模块,存储四种算法迭代压缩需要的常量数据Kt,t为迭代压缩的轮数;
Wt扩展模块,对每个所述消息块进行扩展,SHA-1算法扩展成80个32bit的扩展数据、SHA-224或SHA-256算法扩展成64个32bit的扩展数据,得到消息扩展值Wt;SM3算法扩展成132个32bit的扩展数据,得到消息扩展值Wt和Wt';
迭代压缩模块,以选择的算法对应的初始值开始,结合所述Kt、Wt和Wt',对每个消息块进行64轮或80轮迭代压缩运算,得到该消息块的中间哈希值;
轮数控制模块,用于控制Wt扩展模块的16个32bit的寄存器周期性依次向右移位,完成消息块的扩展;还用于驱动迭代压缩模块,以上一个消息块的值作为下一个消息块的迭代初始值,完成每个消息块的64轮或80轮迭代压缩运算,直至所有待认证数据计算完毕。
11.如权利要求10所述的实现多种哈希算法可重构的系统,其特征在于:所述填充分组模块分别连接轮数控制模块、Wt扩展模块、迭代压缩模块和第二选择器;所述初始值存储模块通过第一选择器连接第二选择器,第二选择器连接I0-I7八个寄存器,八个寄存器的输出通过第三选择器连接A-H八个寄存器,A-H八个寄存器均连接至迭代压缩模块;所述迭代压缩模块的输出分别连接第二选择器和第三选择器;所述Kt存储模块通过第四选择器连接迭代压缩模块;所述轮数控制模块分别连接Wt扩展模块、Kt存储模块和迭代压缩模块。
12.如权利要求11所述的实现多种哈希算法可重构的系统,其特征在于:所述填充分组模块将待认证数据并分成多个512bit的消息块,如果是第一个消息块,则控制所述第二选择器从初始值存储模块中提取所选择算法的初始值对I0-I7八个寄存器赋值;
如果是最后一个消息块,通知所述迭代压缩模块所有轮数迭代压缩运算完毕后输出结果。
13.如权利要求12所述的实现多种哈希算法可重构的系统,其特征在于:待认证数据按照32bit分组时,填充分组模块接收16组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块;
或者,待认证数据按照64bit分组时,填充分组模块接收8组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块。
14.如权利要求13所述的实现多种哈希算法可重构的系统,其特征在于,对待认证数据中消息块的拼接包括:
若最后拼接的数据串长度小于448bit,则在该数据串末尾填充一个1和若干个0,使数据串长度为448bit,以64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度大于等于448bit且小于512bit,则在该数据串末尾填充一个1和若干个0至512bit长度,构成倒数第二个512bit消息块,然后再填充448个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度等于512bit,将此数据串作为倒数第二个消息块,然后再填充一个1和447个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块。
15.如权利要求12所述的实现多种哈希算法可重构的系统,其特征在于,所述Wt扩展模块包括第五选择器、第六选择器和16个寄存器R15-R0,第五选择器和第六选择器相连,第五选择器接收算法选择信号,第六选择器接收轮数控制模块输出的控制信号,并为R15赋值;
每个消息块拆分为16个32bit,通过第六选择器由高到低位依次填充到16个寄存器R15-R0中,最低32bit填在R0;每个时钟周期,R15-R0依次向右移,计算得到的值通过第五选择器、第六选择器赋值给R15;
寄存器R0、R2、R8和R13的值作为第一异或门的输入,第一异或门的输出结果经过循环左移1位输出,完成SHA-1算法的扩展函数;
R1的值经过函数σ0计算,连同R0和R9的值作为第二CSA的输入,R14的值经函数σ1处理后以及第二CSA的输出结果作为第一CSA的输入值,第一CSA的输出值送往第一加法器,第一加法器与第五选择器的输入相连,加法器的输出结果即为SHA-224或SHA-256算法的扩展函数值;
寄存器R0、R7和R13的值经循环左移15位的结果作为第三异或门的输入值,第三异或门的输出值经过函数P1计算后,连同R3循环左移7位的结果和R10的值送往第二异或门,第二异或门的输出值即为SM3算法的扩展函数值。
16.如权利要求12所述的实现多种哈希算法可重构的系统,其特征在于,所述迭代压缩模块包括:
第一计算通路,用于根据寄存器A、寄存器E和Kt的值,计算中间值SS1和SS2;
第三计算通路,若使用SM3算法,则根据寄存器Wt、寄存器H、寄存器E、寄存器F、寄存器G和中间值SS1,计算得到中间值TT2和下一轮寄存器E的值;若使用SHA-1算法,则根据Kt和Wt的值、寄存器E、寄存器B、寄存器C、寄存器D和寄存器A的值,计算得到中间值Y1和中间值Y2,供给第二计算通路使用;若使用SHA-224或SHA-256算法,则根据Kt和Wt的值、寄存器H、寄存器E、寄存器F、寄存器G和寄存器D的值,计算得到中间值Y1、中间值Y2中间值TT2和下一轮寄存器E的值;
第二计算通路,用于根据选择的算法对应的Wt'、寄存器A、寄存器B、寄存器C、寄存器D、中间值Y1、中间值Y2和SS2,计算中间值TT1;
所述迭代压缩模块根据所述TT1、TT2以及寄存器A-H的原值,更新下一周期寄存器A-H的值。
17.如权利要求16所述的实现多种哈希算法可重构的系统,其特征在于:
所述第一计算通路包括第七CSA、第二加法器和第五异或门,第七CSA和第二加法器完成(A<<<12)+E+(Kt<<<t)的计算,计算结果循环左移7位后得到SS1,SS1,A循环左移12位后的结果经过第五异或门得到所述SS2;
所述第二计算通路包括多个选择器、第八CSA、第九CSA和第三加法器,所述第九CSA与所述第五异或门通过第十六选择器连接;
所述第三计算通路包括多个选择器、第四加法器和多个CSA,其中第五CSA输出所述Y1和Y2。
18.如权利要求17所述的实现多种哈希算法可重构的系统,其特征在于,所述迭代压缩模块中,SM3算法的压缩函数路径包括:Kt循环左移t位、寄存器E和寄存器A循环左移12位的结果作为第七CSA的输入,第七CSA的输出经过第二加法器,再经过循环左移7位得到中间值SS1,中间值SS1与寄存器A循环左移12位的结果经过第五异或门得到中间值SS2;
通过第二计算通路中的三个选择器选中寄存器D的值、Wt'和函数FF作为第八CSA的输入,第八CSA的输出作为第九CSA的输入,通过第十六选择器选中所述SS2作为第九CSA的输入,第九CSA的输出经过第三加法器计算得到下一轮寄存器A的值TT1;
通过第八选择器选中0,第九选择器选中寄存器H和Wt的值作为第三计算通路中第三CSA的输入,通过第十选择器选中函数GG和第三CSA的输出作为第四CSA的输入,通过第十一选择器选中所述SS1和第四CSA的输出作为第五CSA的输入,通过第十二选择器选中0连同第五CSA的输出作为第六CSA的输入,第六CSA的输出经过第四加法器计算得到TT2,再经过置换函数P0得到下一轮寄存器E的值。
19.如权利要求17所述的实现多种哈希算法可重构的系统,其特征在于,所述迭代压缩模块中,SHA-1算法的压缩路径包括:
通过第三计算通路中的两个选择器选择Kt和寄存器E的值,连同Wt作为第三计算通路中第三CSA的输入,第三CSA的输出结果加上第三计算通路中选择的布尔函数ft作为第三计算通路中第四CSA的输入,第四CSA的输出结果与寄存器A的循环左移5位结果作为第五CSA的输入,第五CSA的输出结果与所述第二计算通路中的两个选择器作为所述第八CSA的输入,再与第十六选择器选中的0一起作为第九CSA的输入,第九CSA的输出结果经过第三加法器计算得到下一轮寄存器A的值。
20.如权利要求17所述的实现多种哈希算法可重构的系统,其特征在于,所述迭代压缩模块中,SHA-224或SHA-256算法的压缩路径包括:
第三计算通路中的两个选择器选中Kt和寄存器H作为第三计算通路中第三CSA的输入,通过第十选择器选择函数Ch作为第三计算通路中第四CSA的输入,通过第十一选择器选中函数∑1作为第五CSA的输入,通过第十二选择器选择寄存器D的值连同第五CSA的输出作为第六CSA的输入,第六CSA的的输出经过第四加法器计算得到下一轮寄存器E的值;
通过第二计算通路的第十三选择器选择函数Ma、以及通过第十四选择器和第十五选择器选择第三计算通路的中间值Y1和Y2,作为第八CSA的输入,第十六选择器选中函数∑0作为第九CSA的输入,第九CSA的输出经过第三加法器计算得到下一轮寄存器A的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010174565.7A CN111464308B (zh) | 2020-03-12 | 2020-03-12 | 一种实现多种哈希算法可重构的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010174565.7A CN111464308B (zh) | 2020-03-12 | 2020-03-12 | 一种实现多种哈希算法可重构的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111464308A true CN111464308A (zh) | 2020-07-28 |
CN111464308B CN111464308B (zh) | 2022-07-01 |
Family
ID=71680783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010174565.7A Active CN111464308B (zh) | 2020-03-12 | 2020-03-12 | 一种实现多种哈希算法可重构的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111464308B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112104449A (zh) * | 2020-08-20 | 2020-12-18 | 郑州信大捷安信息技术股份有限公司 | 一种用于哈希算法的sdk |
CN113204771A (zh) * | 2021-04-21 | 2021-08-03 | 北京连山科技股份有限公司 | 一种利用国密sm3改进分组密码cbc模式缺点的高效方法 |
CN113342530A (zh) * | 2021-06-23 | 2021-09-03 | 海光信息技术股份有限公司 | 数据杂凑处理方法、装置、cpu、系统及电子设备 |
CN115442026A (zh) * | 2022-11-07 | 2022-12-06 | 苏州浪潮智能科技有限公司 | 一种hmac算法处理系统、方法、设备及介质 |
WO2023000577A1 (zh) * | 2021-07-23 | 2023-01-26 | 浪潮电子信息产业股份有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
CN115765975A (zh) * | 2023-01-09 | 2023-03-07 | 苏州浪潮智能科技有限公司 | Sha-256算法的低功耗实现方法、芯片、服务器及存储介质 |
CN116775544A (zh) * | 2023-08-23 | 2023-09-19 | 上海芯联芯智能科技有限公司 | 一种协处理器和计算机设备 |
WO2024007506A1 (zh) * | 2022-07-04 | 2024-01-11 | 广西伯汉科技有限公司 | 一种通用轻量哈希处理方法、系统及可储存介质 |
CN117880172A (zh) * | 2024-03-12 | 2024-04-12 | 南京邮电大学 | 一种基于sha-256哈希算法简化sr节点数的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335331A (zh) * | 2015-12-04 | 2016-02-17 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
-
2020
- 2020-03-12 CN CN202010174565.7A patent/CN111464308B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335331A (zh) * | 2015-12-04 | 2016-02-17 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
Non-Patent Citations (2)
Title |
---|
LI MIAO ETAL: "《Design and Implementation of Reconfigurable Security Hash Algorithms Based on FPGA》", 《2009 WASE INTERNATIONAL CONFERENCE ON INFORMATION ENGINEERING》 * |
朱宁龙 等: "《SM3及SHA-2系列算法硬件可重构设计与实现》", 《微电子学》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112104449A (zh) * | 2020-08-20 | 2020-12-18 | 郑州信大捷安信息技术股份有限公司 | 一种用于哈希算法的sdk |
CN112104449B (zh) * | 2020-08-20 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种用于哈希算法的sdk |
CN113204771A (zh) * | 2021-04-21 | 2021-08-03 | 北京连山科技股份有限公司 | 一种利用国密sm3改进分组密码cbc模式缺点的高效方法 |
CN113204771B (zh) * | 2021-04-21 | 2022-02-22 | 北京连山科技股份有限公司 | 一种利用国密sm3改进分组密码cbc模式缺点的高效方法 |
CN113342530A (zh) * | 2021-06-23 | 2021-09-03 | 海光信息技术股份有限公司 | 数据杂凑处理方法、装置、cpu、系统及电子设备 |
WO2023000577A1 (zh) * | 2021-07-23 | 2023-01-26 | 浪潮电子信息产业股份有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
WO2024007506A1 (zh) * | 2022-07-04 | 2024-01-11 | 广西伯汉科技有限公司 | 一种通用轻量哈希处理方法、系统及可储存介质 |
CN115442026A (zh) * | 2022-11-07 | 2022-12-06 | 苏州浪潮智能科技有限公司 | 一种hmac算法处理系统、方法、设备及介质 |
CN115442026B (zh) * | 2022-11-07 | 2023-03-24 | 苏州浪潮智能科技有限公司 | 一种hmac算法处理系统、方法、设备及介质 |
CN115765975A (zh) * | 2023-01-09 | 2023-03-07 | 苏州浪潮智能科技有限公司 | Sha-256算法的低功耗实现方法、芯片、服务器及存储介质 |
CN115765975B (zh) * | 2023-01-09 | 2023-04-07 | 苏州浪潮智能科技有限公司 | Sha-256算法的低功耗实现方法、芯片、服务器及存储介质 |
CN116775544A (zh) * | 2023-08-23 | 2023-09-19 | 上海芯联芯智能科技有限公司 | 一种协处理器和计算机设备 |
CN116775544B (zh) * | 2023-08-23 | 2023-11-28 | 上海芯联芯智能科技有限公司 | 一种协处理器和计算机设备 |
CN117880172A (zh) * | 2024-03-12 | 2024-04-12 | 南京邮电大学 | 一种基于sha-256哈希算法简化sr节点数的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111464308B (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111464308B (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
KR102137956B1 (ko) | 블록 마이닝 방법 및 장치 | |
Satoh et al. | ASIC-hardware-focused comparison for hash functions MD5, RIPEMD-160, and SHS | |
Zhou et al. | Efficient and high-throughput implementations of AES-GCM on FPGAs | |
KR20190039850A (ko) | 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법 | |
KR100800468B1 (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
JP4612680B2 (ja) | Md5ダイジェスティングを実行する装置および方法 | |
Gligoroski et al. | The stream cipher Edon80 | |
Wang et al. | Evaluating optimized implementations of stream cipher ZUC algorithm on FPGA | |
Shahzad et al. | CoARX: a coprocessor for ARX-based cryptographic algorithms | |
Wong et al. | Circuit and system design for optimal lightweight AES encryption on FPGA | |
Gielata et al. | AES hardware implementation in FPGA for algorithm acceleration purpose | |
Pirzada et al. | Implementation of CMAC Authentication Algorithm on FPGA for Satellite Communication | |
Chaves et al. | Secure hashing: Sha-1, sha-2, and sha-3 | |
Van Hieu et al. | Hardware implementation for fast block generator of Litecoin blockchain system | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
Dogan et al. | Analyzing and comparing the AES architectures for their power consumption | |
Sireesha et al. | A novel approach of area optimized and pipelined FPGA implementation of AES encryption and decryption | |
CN114553424A (zh) | Zuc-256流密码轻量级硬件系统 | |
Abdulwahed | Chaos-Based Advanced Encryption Standard | |
Sumathi et al. | Study of Data Security Algorithms using Verilog HDL. | |
Mohanraj et al. | High performance GCM architecture for the security of high speed network | |
Noura et al. | DKEMA: GPU-based and dynamic key-dependent efficient message authentication algorithm | |
Abbas et al. | Dictionary Attack on TRUECRYPT with RIVYERA S3-5000 | |
Raval et al. | Implementation of efficient bit permutation box for embedded security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |