CN108768615B - 散列算法在同一框架下的asic芯片实现方法 - Google Patents
散列算法在同一框架下的asic芯片实现方法 Download PDFInfo
- 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
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/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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芯片实现方法。
背景技术
散列算法(以下简称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种,分别为:
FC2(a,b,c)=(a∧b)∨(a∧c)∨(b∧c);
其中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时,
(2)当i=16,...,31时,
其中
j=i mod 16;
(3)当i=32,...,47时,
其中k=i mod 4,n=i/4,
j=i mod 16;
(4)当i=48,...,63时,
其中
j=i mod 16;
(5)当i=64,...,79时,SHA1算法,
然后对轮函数进行归一化,令:
其中,
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],
(2)
(3)寄存器组运行一拍,即循环赋值,后一寄存器的值等于前一寄存器值,首寄存器值等于尾寄存器值;
其中压缩函数FCx的选取如下:
本发明所述散列算法在同一框架下的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四种算法在轮函数中使用的压缩函数共有五种,分别如下:
FC2(a,b,c)=(a∧b)∨(a∧c)∨(b∧c);
其中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时,
(2)当i=16,...,31时,
其中
j=i mod 16;
(3)当i=32,...,47时,
其中k=i mod 4,n=i/4,
j=i mod 16;
(4)当i=48,...,63时,
其中
j=i mod 16;
(5)当i=64,...,79时,SHA1算法,
然后对轮函数进行归一化,令:
其中,
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],
(2)
(3)寄存器组运行一拍,即循环赋值:后一寄存器的值等于前一寄存器值,首寄存器值等于尾寄存器值。
其中压缩函数FCx的选取如下:
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;
(6)j=j+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种,分别为:
FC2(a,b,c)=(a∧b)∨(a∧c)∨(b∧c);
其中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时,
(2)当i=16,...,31时,
其中
j=i mod 16;
(3)当i=32,...,47时,
其中k=i mod 4,n=i/4,
j=i mod 16;
(4)当i=48,...,63时,
其中
j=i mod 16;
(5)当i=64,...,79时,SHA1算法,
然后对轮函数进行归一化,令:
其中,
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],
(2)
(3)寄存器组运行一拍,
其中压缩函数FCx的选取如下:
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},根据算法编号选择调度轮数和迭代次数。
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)
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)
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)
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 |
-
2018
- 2018-05-16 CN CN201810470911.9A patent/CN108768615B/zh active Active
Patent Citations (3)
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)
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 |