CN108768615B - 散列算法在同一框架下的asic芯片实现方法 - Google Patents

散列算法在同一框架下的asic芯片实现方法 Download PDF

Info

Publication number
CN108768615B
CN108768615B CN201810470911.9A CN201810470911A CN108768615B CN 108768615 B CN108768615 B CN 108768615B CN 201810470911 A CN201810470911 A CN 201810470911A CN 108768615 B CN108768615 B CN 108768615B
Authority
CN
China
Prior art keywords
sha
algorithm
algorithms
round
message
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.)
Active
Application number
CN201810470911.9A
Other languages
English (en)
Other versions
CN108768615A (zh
Inventor
李磊
刘志雷
洪泽勤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinan Lanjian Junxin New Information Technology Co ltd
Original Assignee
Jinan Lanjian Junxin New Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jinan Lanjian Junxin New Information Technology Co ltd filed Critical Jinan Lanjian Junxin New Information Technology Co ltd
Priority to CN201810470911.9A priority Critical patent/CN108768615B/zh
Publication of CN108768615A publication Critical patent/CN108768615A/zh
Application granted granted Critical
Publication of CN108768615B publication Critical patent/CN108768615B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开一种散列算法在同一框架下的ASIC芯片实现方法,通过提取多种散列算法的共同特征和相互之间的差别,将四种HASH算法的共同特征构造成同一框架,该框架可使用共享资源实现不同HASH算法的相似部分,针对不同HASH算法的差别,设计相应的功能模块及参数,可在ASIC上同时实现多种HASH算法并达到高效率、高集成度、低功耗、模块化的目的。

Description

散列算法在同一框架下的ASIC芯片实现方法
技术领域
本发明涉及一种散列算法在同一框架下的ASIC芯片实现方法。
背景技术
散列算法(以下简称HASH算法)广泛应用于信息技术的各个领域,HASH算法是密码学的一个重要分支,在数字签名、身份认证、防篡改等许多领域有着广泛的应用。其基本思想是将任意长度的消息看作HASH算法的输入值,输出被称为HASH值。输入的任何1比特变化都会带来完全不同的HASH值,并且由密码学原理保证运算的单向性,即不可能从HASH值反向计算出输入信息。
如何快速高效的实现HASH算法一直是信息安全领域和工业化应用研究的热门课题,HASH算法效率的高低直接影响信息安全产品的性能。使用ASIC芯片专门实现HASH算法可将其性能最大化,现有技术是在ASIC芯片中单独为每种HASH算法设计一套逻辑电路,随之而来的问题就是ASIC芯片中实现的算法越多,占用的芯片资源越多,造成芯片面积和功耗增大,而单位面积下的性能却降低了。要在ASIC芯片上同时高效率的实现多种HASH算法就需要特别的设计——HASH算法同一框架下的ASIC芯片实现方法。
发明内容
本发明要解决的技术问题是提供一种散列算法在同一框架下的ASIC芯片实现方法,可在ASIC上同时实现多种HASH算法并达到高效率、高集成度、低功耗、模块化的目的。
为了解决所述技术问题,本发明采用的技术方案是:1、散列算法在同一框架下的ASIC芯片实现方法,其特征在于:包括以下步骤:
S01)、对MD4、MD5、SHA-1、SHA-256四种散列算法进行相似性研究,提取共同特征和相互之间的差别;
S02)、将四种散列算法的共同特征构造成同一框架,该框架可使用共享资源实现不同散列算法的相似部分;
S03)、针对不同散列算法之间的差别,在同一框架下设计相应的参数;
S04)、使用参数选取控制方法,使不同的散列算法在同一框架下高效执行。
本发明所述散列算法在同一框架下的ASIC芯片实现方法,MD4、MD5、SHA-1、SHA-256四种散列算法的相同点是:1、消息分组长度是相同的,一个分组长度都是512比特;2、消息填充规则是相同的,都是一个1比特后跟若干0,最后是8字节的消息比特长度;3、具有相同的算法部件,四个散列算法都包括移动寄存器组,非线性逻辑函数;4、具有相同的算法结构,四个散列算法都是多轮迭代,每轮迭代由多步操作组成;5、移动寄存器反馈逻辑的结构是相同的,四个散列算法的移动寄存器的反馈值都是由移动寄存器值、非线性逻辑函数、消息字、常数经移位和算术加运算得来;四种散列算法的差别是:1、MD4是3轮迭代,MD5、SHA-1、SHA-256是4轮迭代;2、MD4、MD5、SHA-256每轮迭代中都是16步操作,SHA-1每轮迭代中都是20步操作;3、MD4和MD5的移动寄存器都是4级,SHA-1的移动寄存器级数是5级,SHA-256的移动寄存器级数是8级。
本发明所述散列算法在同一框架下的ASIC芯片实现方法,基于四种散列算法构造的散列算法同一框架包括消息分组处理模块、移动寄存器运行模块、轮函数模块和轮函数调度模块。
本发明所述散列算法在同一框架下的ASIC芯片实现方法,消息分组处理模块的处理方式为:将输入消息填充到长度的比特数模512余448随后附加输入消息的长度,随后附加输入消息的长度,不同算法附加输入消息长度时,字节顺序和位置稍有不同,消息分组处理模块在附加消息长度时针对不同算法进行不同处理,其他处理过程都相同,具体处理流程为:对N字节长度的输入消息M,作如下处理,
(1)在消息M后补充1字节的0x80;
(2)计算k=56-((N+1)mod 64);
(3)继续在消息后补充k个全零字节;
(4)计算输入消息的比特数i=N×8;
(5)如果算法为MD4或MD5,将i按照Bigend方式补充到消息后;
(6)如果算法为SHA1或SHA256,将i按照Littleend方式补充到消息后;
在该模块中,前4步是四种散列算法复用的。
本发明所述散列算法在同一框架下的ASIC芯片实现方法,移动寄存器运行模块设计8级移动寄存器,运算时根据算法的不同选用对应的级数,实现了移动寄存器资源的复用;
移动寄存器运行模块的具体流程为:
(1)设归一化的寄存器组为R[8],则MD4、MD5使用的寄存器为R[0]、R[1]、R[2]、R[3];SHA-1在此基础上增加一个寄存器R[4];SHA-256再增加三个寄存器R[5]、R[6]、R[7];
(2)移动寄存器的初始化如下:对算法MD4、MD5、SHA-1,令R[0]=0x67452301,R[1]=0xefcdab89,R[2]=0x98badcfe,R[3]=0x10325476;
对算法SHA-1,令R[4]=0xc3d2e1f0;
对算法SHA-256,令R[0]=0x6a09e667,R[1]=0xbb67ae85,R[2]=0xc6ef372,R[3]=0xa54ff53a,R[4]=0x510e527f,R[5]=0x9b05688c,R[6]=0x1f83d9ab,R[7]=0x5be0cd19;
(3)对于MD4、MD5算法,其运行路径为:由R[0]依次运行至R[3],并由R[3]返回至R[0];对于SHA-1算法,其运行路径为:由R[0]依次运行至R[4],并由R[4]返回至R[0];对于SHA-256算法,其运行路径为:由R[0]依次运行至R[7],并由R[7]返回至R[0]。
本发明所述散列算法在同一框架下的ASIC芯片实现方法,轮函数模块集成了四种散列算法需要的所有压缩函数,根据算法的不同来选择相应的压缩函数,并调用移动寄存器运行模块实现移动寄存器资源的复用;轮函数模块中集成的压缩函数有5种,分别为:
Figure BDA0001661954100000031
FC2(a,b,c)=(a∧b)∨(a∧c)∨(b∧c);
Figure BDA0001661954100000032
Figure BDA0001661954100000033
Figure BDA0001661954100000034
其中MD4、SHA-1算法使用了压缩函数FC1、FC2、FC3;MD5算法使用了压缩函数FC1、FC3、FC4和FC5;SHA-256算法使用了压缩函数FC2和FC3;
在所有算法中,将64字节输入消息按4字节分组,共16组,记为X[i],i=0,...,15,在轮函数中,在每步操作前对X进行变换操作,设变换函数为X[i]=Trans(X,i),变换方法如下:
(1)当i=0,...,15时,
Figure BDA0001661954100000035
(2)当i=16,...,31时,
Figure BDA0001661954100000036
其中
Figure BDA0001661954100000037
Figure BDA0001661954100000038
j=i mod 16;
(3)当i=32,...,47时,
Figure BDA0001661954100000041
其中k=i mod 4,n=i/4,
Figure BDA0001661954100000042
Figure BDA0001661954100000043
j=i mod 16;
(4)当i=48,...,63时,
Figure BDA0001661954100000044
其中
Figure BDA0001661954100000045
Figure BDA0001661954100000046
j=i mod 16;
(5)当i=64,...,79时,SHA1算法,
Figure BDA0001661954100000047
然后对轮函数进行归一化,令:
Figure BDA0001661954100000048
Figure BDA0001661954100000051
其中,
sh0[16]={3,7,11,19,03,5,9,13,3,9,11,15},
sh1[16]={7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21}
则归一化的轮函数核心FKer如下:
(1)
t=Trans(X,i)+FCx(R[s+1],R[s+2],R[s+3])+S1(R[s+1])+K[i],
其中
Figure BDA0001661954100000052
K[i]为轮函数密钥,不同算法预置了相应的常数数组,
(2)
Figure BDA0001661954100000053
(3)寄存器组运行一拍,即循环赋值,后一寄存器的值等于前一寄存器值,首寄存器值等于尾寄存器值;
其中压缩函数FCx的选取如下:
Figure BDA0001661954100000061
本发明所述散列算法在同一框架下的ASIC芯片实现方法,轮函数调度模块根据不同散列算法对轮函数模块进行调度,MD4算法调度3轮,每轮迭代16次;MD5、SHA-256算法调度4轮,每轮迭代16次;SHA-1算法调度4轮,每轮迭代20次;
设轮函数核心函数为FKer(R,X,i)则整个调度模块如下。
本发明所述散列算法在同一框架下的ASIC芯片实现方法,步骤S04中,参数选取控制方法具体为:首先设置算法编号:令MD4、MD5、SHA1、SHA256算法编号分别为0、1、2、3,对于消息分组处理模块,设置比特长度排序方式数组BitSeq[4]={Bigend,Bigend,Littleend,Littleend},根据算法编号选择比特长度排序方式;对于移动寄存器运行模块,设置移位寄存器级数数组:RegLevel[4]={4,4,5,8},根据算法编号选择需要的移动寄存器级数;对于轮函数模块,设置轮函数指针二维数组,设置轮函数指针二维数组:RoundFunction[4][4]={{FC1,FC2,FC3,NULL},{FC1,FC5,FC3,FC4},{FC1,FC3,FC2,FC3},{FC3,FC3,FC3,FC3}},其中NULL表示空函数,根据算法编号及调度的轮数选择轮函数;对于轮函数调度模块,设置调度论数数组Round[4]={3,4,4,4}以及迭代次数数组Iterate[4]={16,16,20,16},根据算法编号选择调度轮数和迭代次数。
本发明的有益效果:本发明通过提取多种散列算法的共同特征和相互之间的差别,将四种HASH算法的共同特征构造成同一框架,该框架可使用共享资源实现不同HASH算法的相似部分,针对不同HASH算法的差别,设计相应的功能模块及参数,可在ASIC上同时实现多种HASH算法并达到高效率、高集成度、低功耗、模块化的目的。
附图说明
图1为四种散列算法的轮函数示意图;
图2为移动寄存器组的运行示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的说明。
本实施例中涉及到一些术语和符号,下面先对实施例中使用的术语和符号进行解释。
字节:8个连续比特组成的数据元;
双字:由4个字节组成的数据元,数据宽度是32比特;
∧:逻辑与运算符;
∨:逻辑或运算符;
ˉ:逻辑非运算符;
⊕:逻辑异或运算符;
mod:取模运算符;
<<:逻辑左移位运算符;
>>:逻辑右移位运算符;
X:算法轮函数输入消息缓存;
FC:压缩函数;
Trans:消息变换函数;
K:轮函数密钥;
R:操作使用的寄存器组;
FKer:轮函数核心运算。
本实施例所述散列算法在同一框架下的ASIC芯片实现方法包括以下步骤:
S01)对MD4、MD5、SHA-1、SHA-256四种散列算法进行相似性研究,提取共同特征和相互之间的差别;
S02)、将四种散列算法的共同特征构造成同一框架,该框架可使用共享资源实现不同散列算法的相似部分;
S03)、针对不同散列算法之间的差别,在同一框架下设计相应的参数;
S04)、使用参数选取控制方法,使不同的散列算法在同一框架下高效执行。
该方法的具体步骤为:
(一)研究分析MD4、MD5、SHA-1和SHA-256四种HASH算法的结构
目前主要使用的HASH算法使用迭代HASH函数,包括压缩函数和迭代结构两个部分。比如广泛使用的MD4、MD5、SHA-1、SHA-256等的函数结构被称为Merkle-Damgard结构,也被成为MDx结构。MDx结构HASH算法一般步骤如下:
1、对输入消息附加填充位
将输入消息填充到长度的比特数模512余448。随后附加输入消息的长度。
2、多轮迭代
使用相同的压缩函数,进行多轮迭代。所不同的是对于不同的HASH函数具体使用的压缩函数比物数不同、压缩函数不同、轮数不同,但结构相似。
如图1所述,为MD4、MD5、SHA-1、SHA-256四种散列算法的轮函数示意图,从图1可以看出,尽管在具体的参数使用上存在一定的差别,但是整体结构大致相同。
对上述四个HASH算法进行分析,其异同点如下:
1、消息分组长度是相同的,一个分组长度都是512比特;
2、消息填充规则是相同的,都是一个1比特后跟若干0,最后是8字节的消息比特长度。
3、具有相同的算法部件,四个HASH算法都是由移存器组,非线性逻辑函数组成。
4、具有相同的算法结构,四个HASH算法都是多轮迭代,每轮迭代由多步操作组成。
5、移存器反馈逻辑的结构是相同的,四个HASH算法的移存器的反馈值都是由移存器值、非线性逻辑函数、消息字、常数经移位和算术加运算得来。
另外,四种HASH算法有如下差别:
1、MD4是3轮迭代,MD5、SHA-1、SHA-256是4轮迭代。
2、MD4、MD5、SHA-256每轮迭代中都是16步操作,SHA-1每轮迭代中都是20步操作。
3、MD4和MD5的移存器有相同级数,都是4级,SHA-1的移存器级数是5级,SHA-256的移存器级数是8级。
(二)构造HASH算法同一框架
HASH算法同一框架包含以下几个模块:消息分组处理模块、移动寄存器运行模块、轮函数模块、轮函数调度模块。
1、消息分组处理模块
四种HASH算法的消息分组处理方式基本一致,即将输入消息填充到长度的比特数模512余448,随后附加输入消息的长度,只是不同算法附加输入消息长度时,字节顺序和位置稍有不同,该模块在附加消息长度时针对不同算法进行不同处理,其它处理过程都相同。具体处理流程如下:
对N字节长度的输入消息M,作如下处理,
(1)在消息M后补充1字节的0x80;
(2)计算k=56-((N+1)mod64;
(3)继续在消息后补充k个全零字节;
(4)计算输入消息的比特数i=N×8;
(5)如果算法为MD4或MD5,将i(64比特即8字节)按照Bigend方式补充到消息后。
(6)如果算法为SHA1或SHA256,将i按照Littleend方式补充到消息后。
在该模块中,前4步被四种散列算法复用。
2、移动寄存器运行模块
四种HASH算法全部使用移动寄存器来进行轮函数的运算,每个寄存器都是双字(32比特),其中MD4、MD5使用4级移存器,SHA-1使用5级,SHA-256使用8级。该模块设计成8级移存器,运算时根据算法的不同选用对应的级数,实现了移存器资源的复用。
设归一化的寄存器组为R[8],则MD4、MD5使用的寄存器为R[0]、R[1]、R[2]、R[3];SHA-1在此基础上增加一个寄存器R[4];SHA-256再增加三个寄存器R[5]、R[6]、R[7]。
移动寄存器的初始化如下:
对算法MD4、MD5、SHA-1,令R[0]=0x67452301,R[0]=0xefcdab89,R[2]=0x98badcfe,R[3]=0x10325476;
对算法SHA-1,令R[4]=0xc3d2e1f0;
对算法SHA-256,令R[0]=0x6a09e667,R[1]=0xbb67ae85,R[2]=0xc6ef372,R[3]=0xa54ff53a,R[4]=0x510e527f,R[5]=0x9b05688c,R[6]=0x1f83d9ab,R[7]=0x5be0cd19。
如图2所示,为移动寄存器组的运行示意图。对于MD4、MD5算法,其运行路径为:由R[0]依次运行至R[3],并由R[3]返回至R[0];对于SHA-1算法,其运行路径为:由R[0]依次运行至R[4],并由R[4]返回至R[0];对于SHA-256算法,其运行路径为:由R[0]依次运行至R[7],并由R[7]返回至R[0]。
3、轮函数模块
四种HASH算法都是以轮函数为最小的运算单元的,所有的轮函数都是由输入消息缓存、移存器和对应的压缩函数组成,不同之处是压缩函数不同,使用的移存器级数不同。该模块中集成了四种HASH算法需要的所有压缩函数,根据算法的不同来选择相应的压缩函数,并调用移动寄存器运行模块实现移存器资源的复用。
在函数中,输入为寄存器值、经过处理的消息段(每段512比特即64字节),输出是经过计算后的寄存器值。在每轮处理过程中,所有算法都使用了压缩函数,SHA-1和SHA-256算法还使用了消息变换函数。
通过分析,MD4、MD5、SHA-1、SHA-256四种算法在轮函数中使用的压缩函数共有五种,分别如下:
Figure BDA0001661954100000091
FC2(a,b,c)=(a∧b)∨(a∧c)∨(b∧c);
Figure BDA0001661954100000092
Figure BDA0001661954100000093
Figure BDA0001661954100000094
其中MD4、SHA-1算法使用了压缩函数FC1、FC2、FC3;MD5算法使用了压缩函数FC1、FC3、FC4和FC5;SHA-256算法使用了压缩函数FC2和FC3。
在所有算法中,将64字节输入消息按4字节双字分组,共16组,记为X[i],i=0,...,15,在轮函数中,在每步操作前对X进行变换操作,设变换函数为X[i]=Trans(X,i),变换方法如下:
(1)当i=0,...,15时,
Figure BDA0001661954100000095
(2)当i=16,...,31时,
Figure BDA0001661954100000101
其中
Figure BDA0001661954100000102
Figure BDA0001661954100000103
j=i mod 16;
(3)当i=32,...,47时,
Figure BDA0001661954100000104
其中k=i mod 4,n=i/4,
Figure BDA0001661954100000105
Figure BDA0001661954100000106
j=i mod 16;
(4)当i=48,...,63时,
Figure BDA0001661954100000107
其中
Figure BDA0001661954100000108
Figure BDA0001661954100000109
j=i mod 16;
(5)当i=64,...,79时,SHA1算法,
Figure BDA0001661954100000111
然后对轮函数进行归一化,令:
Figure BDA0001661954100000112
Figure BDA0001661954100000113
其中,
sh0[16]={3,7,11,19,03,5,9,13,3,9,11,15},
sh1[16]={7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21},
则归一化的轮函数核心FKer如下:
(1)
t=Trans(X,i)+FCx(R[s+1],R[s+2],R[s+3])+S1(R[s+1])+K[i],
其中
Figure BDA0001661954100000114
K[i]为轮函数密钥,不同算法预置了相应的常数数组。
(2)
Figure BDA0001661954100000115
(3)寄存器组运行一拍,即循环赋值:后一寄存器的值等于前一寄存器值,首寄存器值等于尾寄存器值。
其中压缩函数FCx的选取如下:
Figure BDA0001661954100000121
4、轮函数调度模块
该模块根据不同HASH算法对轮函数模块进行调度,MD4算法调度3轮,每轮迭代16次;MD5、SHA-256算法调度4轮,每轮迭代16次;SHA-1算法调度4轮,每轮迭代20次。
设轮函数核心函数为FKer(R,X,i)则整个调度模块如下:
(1)j=0;
(2)i=0;
(3)FKer(R,X,i);
(4)i=i+1;
(5)如果
Figure BDA0001661954100000122
则跳转到第(2)步;
(6)j=j+1;
(7)如果
Figure BDA0001661954100000123
则跳转到第(1)步。
(三)HASH算法的参数选择
针对不同HASH算法之间的差别,设计相应的参数。
1、MD4算法,
(1)消息分组处理模块,消息的比特长度按Bigend方式填充到消息后;
(2)移动寄存器运行模块,选择4级移位态寄存器;
(3)轮函数模块,第1轮使用FC1函数,第2轮使用FC2函数,第3轮使用FC3函数;
(4)轮函数调度模块,调度3轮,每轮迭代16次。
2、MD5算法
(1)消息分组处理模块,消息的比特长度按Bigend方式填充到消息后;
(2)移动寄存器运行模块,选择4级移动寄存器;
(3)轮函数模块,第1轮使用FC1函数,第2轮使用FC5函数,第3轮使用FC3函数,第4轮使用FC4函数;
(4)轮函数调度模块,调度4轮,每轮迭代16次。
3、SHA1算法
(1)消息分组处理模块,消息的比特长度按Littleend方式填充到消息后;
(2)移动寄存器运行模块,选择5级移动寄存器;
(3)轮函数模块,第1轮使用FC1函数,第2、4轮使用FC3函数,第3轮使用FC2函数;
(4)轮函数调度模块,调度4轮,每轮迭代20次。
4、SHA256算法
(1)消息分组处理模块,消息的比特长度按Littleend方式填充到消息后;
(2)移动寄存器运行模块,选择8级移动寄存器;
(3)轮函数模块,所有轮都调用FC3函数;
(4)轮函数调度模块,调度4轮,每轮迭代16次。
(四)参数选取控制方法
首先设置算法编号:令MD4、MD5、SHA1、SHA256算法编号分别为0、1、2、3。
1、消息分组处理模块
设置比特长度排序方式数组
BitSeq[4]={Bigend,Bigend,Littleend,Littleend},
根据算法编号选择比特长度排序方式。
2、移动寄存器运行模块
设置移位寄存器级数数组:RegLevel[4]={4,4,5,8}
根据算法编号选择需要的移位寄存器级数。
3、轮函数模块
设置轮函数指针二维数组:
RoundFunction[4][4]={{FC1,FC2,FC3,NULL},{FC1,FC5,FC3,FC4},{FC1,FC3,FC2,FC3},{FC3,FC3,FC3,FC3}}
其中NULL表示空函数,
根据算法编号及调度的轮数选择轮函数;
4、轮函数调度模块
设置调度轮数数组Round[4]={3,4,4,4}
及迭代次数数组Iterate[4]={16,16,20,16}
根据算法编号选择调度轮数和迭代次数。
通过算法编号确定HASH函数运行参数,在同一框架下调用指定函数等资源,使得ASIC芯片上用于框架执行的资源减少到接近1/4,相对在芯片上可规划的并行资源大大提高,即提高了算法的并行度。
以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。

Claims (4)

1.散列算法在同一框架下的ASIC芯片实现方法,其特征在于:包括以下步骤:
S01)、对MD4、MD5、SHA-1、SHA-256四种散列算法进行相似性研究,提取共同特征和相互之间的差别;
S02)、将四种散列算法的共同特征构造成同一框架,该框架可使用共享资源实现不同散列算法的相似部分;
S03)、针对不同散列算法之间的差别,在同一框架下设计相应的参数;
S04)、使用参数选取控制方法,使不同的散列算法在同一框架下高效执行;
MD4、MD5、SHA-1、SHA-256四种散列算法的相同点是:1、消息分组长度是相同的,一个分组长度都是512比特;2、消息填充规则是相同的,都是一个1比特后跟若干0,最后是8字节的消息比特长度;3、具有相同的算法部件,四个散列算法都包括移动寄存器组,非线性逻辑函数;4、具有相同的算法结构,四个散列算法都是多轮迭代,每轮迭代由多步操作组成;5、移动寄存器反馈逻辑的结构是相同的,四个散列算法的移动寄存器的反馈值都是由移动寄存器值、非线性逻辑函数、消息字、常数经移位和算术加运算得来;四种散列算法的差别是:1、MD4是3轮迭代,MD5、SHA-1、SHA-256是4轮迭代;2、MD4、MD5、SHA-256每轮迭代中都是16步操作,SHA-1每轮迭代中都是20步操作;3、MD4和MD5的移动寄存器都是4级,SHA-1的移动寄存器级数是5级,SHA-256的移动寄存器级数是8级;
基于四种散列算法构造的散列算法同一框架包括消息分组处理模块、移动寄存器运行模块、轮函数模块和轮函数调度模块;
消息分组处理模块的处理方式为:将输入消息填充到长度的比特数模512余448,随后附加输入消息的长度,不同算法附加输入消息长度时,字节顺序和位置稍有不同,消息分组处理模块在附加消息长度时针对不同算法进行不同处理,其他处理过程都相同,具体处理流程为:对N字节长度的输入消息M,作如下处理,(1)在消息M后补充1字节的0x80;
k=56-((N+1)mod 64);
(2)计算
(3)继续在消息后补充k个全零字节;
(4)计算输入消息的比特数i=N×B;
(5)如果算法为MD4或MD5,将i按照Bigend方式补充到消息后;
(6)如果算法为SHA1或SHA256,将i按照Littleend方式补充到消息后;
在该模块中,前4步是四种散列算法复用的;
移动寄存器运行模块设计8级移动寄存器,运算时根据算法的不同选用对应的级数,实现了移动寄存器资源的复用,设归一化的寄存器组为R[8],则MD4、MD5使用的寄存器为R[0]、R[1]、R[2]、R[3];SHA-1在此基础上增加一个寄存器R[4];SHA-256再增加三个寄存器R[5]、R[6]、R[7];
轮函数模块集成了四种散列算法需要的所有压缩函数,根据算法的不同来选择相应的压缩函数,并调用移动寄存器运行模块实现移动寄存器资源的复用;轮函数模块中集成的压缩函数有5种,分别为:
Figure FDA0002961999220000021
FC2(a,b,c)=(a∧b)∨(a∧c)∨(b∧c);
Figure FDA0002961999220000022
Figure FDA0002961999220000023
Figure FDA0002961999220000024
其中MD4、SHA-1算法使用了压缩函数FC1、FC2、FC3;MD5算法使用了压缩函数FC1、FC3、FC4和FC5;SHA-256算法使用了压缩函数FC2和FC3;
轮函数调度模块根据不同散列算法对轮函数模块进行调度,MD4算法调度3轮,每轮迭代16次;MD5、SHA-256算法调度4轮,每轮迭代16次;SHA-1算法调度4轮,每轮迭代20次。
2.根据权利要求1所述的散列算法在同一框架下的ASIC芯片实现方法,其特征在于:
移动寄存器运行模块的具体流程为:
(1)设归一化的寄存器组为R[8],则MD4、MD5使用的寄存器为R[0]、R[1]、R[2]、R[3];SHA-1在此基础上增加一个寄存器R[4];SHA-256再增加三个寄存器R[5]、R[6]、R[7];
(2)移动寄存器的初始化如下:对算法MD4、MD5、SHA-1,令R[0]=0x67452301,R[1]=0xefcdab89,R[2]=0x98badcfe,R[3]=0x10325476;
对算法SHA-1,令R[4]=0xc3d2e1f0;
对算法SHA-256,令R[0]=0x6a09e667,R[1]=0xbb67ae85,R[2]=0xc6ef372,R[3]=0xa54ff53a,R[4]=0x510e527f,R[5]=0x9b05688c,R[6]=0x1f83d9ab,R[7]=0x5be0cd19;
(3)对于MD4、MD5算法,其运行路径为:由R[0]依次运行至R[3],并由R[3]返回至R[0];对于SHA-1算法,其运行路径为:由R[0]依次运行至R[4],并由R[4]返回至R[0];对于SHA-256算法,其运行路径为:由R[0]依次运行至R[7],并由R[7]返回至R[0]。
3.根据权利要求1所述的散列算法在同一框架下的ASIC芯片实现方法,其特征在于:
在轮函数模块的所有算法中,将64字节输入消息按4字节分组,共16组,记为X[i],i=0,...,15,在轮函数中,在每步操作前对X进行变换操作,设变换函数为X[i]=Trans(X,i),变换方法如下:
(1)当i=0,...,15时,
Figure FDA0002961999220000025
(2)当i=16,...,31时,
Figure FDA0002961999220000031
其中
Figure FDA0002961999220000032
Figure FDA0002961999220000033
j=i mod 16;
(3)当i=32,...,47时,
Figure FDA0002961999220000034
其中k=i mod 4,n=i/4,
Figure FDA0002961999220000035
Figure FDA0002961999220000036
j=i mod 16;
(4)当i=48,...,63时,
Figure FDA0002961999220000037
其中
Figure FDA0002961999220000038
Figure FDA0002961999220000039
j=i mod 16;
(5)当i=64,...,79时,SHA1算法,
Figure FDA0002961999220000041
然后对轮函数进行归一化,令:
Figure FDA0002961999220000042
Figure FDA0002961999220000043
其中,
sh0[16]={3,7,11,19,03,5,9,13,3,9,11,15},
sh1[16]={7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21};
则归一化的轮函数核心FKer如下:
(1)
t=Trans(X,i)+FCx(R[s+1],R[s+2],R[s+3])+S1(R[s+1])+K[i],
其中
Figure FDA0002961999220000044
K[i]为轮函数密钥,不同算法预置了相应的常数数组,
(2)
Figure FDA0002961999220000045
(3)寄存器组运行一拍,
其中压缩函数FCx的选取如下:
Figure FDA0002961999220000051
4.根据权利要求1所述的散列算法在同一框架下的ASIC芯片实现方法,其特征在于:步骤S04中,参数选取控制方法具体为:首先设置算法编号:令MD4、MD5、SHA1、SHA256算法编号分别为0、1、2、3,对于消息分组处理模块,设置比特长度排序方式数组BitSeq[4]={Bigend,Bigend,Littleend,Littleend},根据算法编号选择比特长度排序方式;对于移动寄存器运行模块,设置移位寄存器级数数组:RegLevel[4]={4,4,5,8},根据算法编号选择需要的移动寄存器级数;对于轮函数模块,设置轮函数指针二维数组:RoundFunction[4][4]={{FC1,FC2,FC3,NULL},{FC1,FC5,FC3,FC4},{FC1,FC3,FC2,FC3},{FC3,FC3,FC3,FC3}},其中NULL表示空函数,根据算法编号及调度的轮数选择轮函数;对于轮函数调度模块,设置调度论数数组Round[4]={3,4,4,4}以及迭代次数数组Iterate[4]={16,16,20,16},根据算法编号选择调度轮数和迭代次数。
CN201810470911.9A 2018-05-16 2018-05-16 散列算法在同一框架下的asic芯片实现方法 Active CN108768615B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810470911.9A CN108768615B (zh) 2018-05-16 2018-05-16 散列算法在同一框架下的asic芯片实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810470911.9A CN108768615B (zh) 2018-05-16 2018-05-16 散列算法在同一框架下的asic芯片实现方法

Publications (2)

Publication Number Publication Date
CN108768615A CN108768615A (zh) 2018-11-06
CN108768615B true CN108768615B (zh) 2021-04-13

Family

ID=64008074

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810470911.9A Active CN108768615B (zh) 2018-05-16 2018-05-16 散列算法在同一框架下的asic芯片实现方法

Country Status (1)

Country Link
CN (1) CN108768615B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109687972B (zh) * 2018-12-21 2021-08-10 天津国芯科技有限公司 一种支持多种Hash算法的电路
CN113300831B (zh) * 2021-07-26 2021-10-29 苏州浪潮智能科技有限公司 一种安全散列算法的实现方法、系统、介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1716848A (zh) * 2004-06-14 2006-01-04 上海安创信息科技有限公司 一种硬件快速实现杂凑算法的方法
CN101938351B (zh) * 2010-09-16 2012-07-04 北京航空航天大学 一种实现分组密码加密的密钥扩展方法
CN105099672A (zh) * 2015-08-04 2015-11-25 东南大学 混合加密方法及实现该方法的装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140577A1 (en) * 2006-12-07 2008-06-12 Shahriar Rahman search and comparison shopping engine
US9658854B2 (en) * 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US10142103B2 (en) * 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation
US10970404B2 (en) * 2016-05-23 2021-04-06 Informatica Llc Method, apparatus, and computer-readable medium for automated construction of data masks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1716848A (zh) * 2004-06-14 2006-01-04 上海安创信息科技有限公司 一种硬件快速实现杂凑算法的方法
CN101938351B (zh) * 2010-09-16 2012-07-04 北京航空航天大学 一种实现分组密码加密的密钥扩展方法
CN105099672A (zh) * 2015-08-04 2015-11-25 东南大学 混合加密方法及实现该方法的装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
张晓妹."哈希函数的迭代结构与压缩函数研究".《中国优秀硕士学位论文全文数据库 信息科技辑》.2017,I136-122. *
郭伟,钱进,王新军."一种基于分组密码的hash函数的安全性分析及构造".《计算机科学》.2008, *
钟旭,洪泽勤,陆浪如."一种自安全Ad Hoc网络新成员子秘密分发协议".《信息工程大学学报》.2005, *

Also Published As

Publication number Publication date
CN108768615A (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
US7299355B2 (en) Fast SHA1 implementation
CN109639428B (zh) 从位混合器构造安全散列函数的方法
US20150055776A1 (en) Method and System for High Throughput Blockwise Independent Encryption/Decryption
Ting et al. An FPGA based SHA-256 processor
Rohde et al. Fast hash-based signatures on constrained devices
WO2001076129A2 (en) Scalable cryptographic engine
CN108768615B (zh) 散列算法在同一框架下的asic芯片实现方法
CN112152782A (zh) 用于可重配置电路装置的后量子公钥签名操作
EP1766854A1 (en) Apparatus and method for performing md5 digesting
CN108183790B (zh) 一种aes加密装置、芯片及系统
CN112367158A (zh) 一种加速sm3算法的方法、处理器、芯片及电子设备
Kahri et al. Efficient FPGA hardware implementation of secure hash function SHA-256/Blake-256
De Oliveira et al. High performance of hash-based signature schemes
WO2007129197A1 (en) Cryptographic apparatus and process
CN114553424B (zh) Zuc-256流密码轻量级硬件系统
Khan et al. Area–Time Efficient Implementation of NIST Lightweight Hash Functions Targeting IoT Applications
Kahri et al. An FPGA implementation and comparison of the SHA-256 and Blake-256
CN110493003B (zh) 一种基于四基二进制底层模运算的快速加密系统
CN114615069A (zh) 一种Quartet轻量级加密算法的实现装置及方法
Sreekanth et al. Implementation of area-efficient AES using FPGA for IOT applications
CN111342951B (zh) 流密码系统的生成方法、装置及终端设备
Xiao et al. Optimization and Design of Eaglesong Hash Based on FPGA
Fritzmann Towards Secure Coprocessors and Instruction Set Extensions for Acceleration of Post-Quantum Cryptography
Bernal Gutiérrez Implementation of cryptographic algorithms for high-speed and constrained devices= Implementación de algoritmos criptográficos para dispositivos de alta velocidad y dispositivos restringidos
Chou Accelerating pre-and post-quantum cryptography

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
CP02 Change in the address of a patent holder

Address after: 250101 room a508, 5 / F, building 5, Qilu Software Park (Block E, entrepreneurship Plaza), No. 1000, Shunhua Road, high tech Zone, Jinan, Shandong Province

Patentee after: JINAN LANJIAN JUNXIN NEW INFORMATION TECHNOLOGY Co.,Ltd.

Address before: Room 209, 2nd floor, 253 nanxinzhuang West Road, Shizhong District, Jinan City, Shandong Province

Patentee before: JINAN LANJIAN JUNXIN NEW INFORMATION TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder