一种安全散列算法的数据压缩电路和芯片的制作方法

文档序号:34903588发布日期:2023-07-26 16:57阅读:107来源:国知局
一种安全散列算法的数据压缩电路和芯片的制作方法

本公开实施例涉及但不限于安全散列算法,更具体地,涉及一种安全散列算法的实现方法、数据压缩电路和芯片。


背景技术:

1、sha-2(security hash algorithm-2)安全散列算法一种密码散列算法,用于实现数据间的单向映射,它可以将任意长度的消息映射成固定长度的消息摘要,并且映射过程不可逆。根据不同的输出消息摘要的长度,sha-2分为sha-224、sha-256、sha-384、sha-512等算法,主要用于数字签名、指纹验证以及网络安全协议等领域。其中,sha-256是一种单向哈希算法,能够将任意长度小于264位的输入消息转换为长度为256位的消息摘要,安全性高,在芯片中应用sha-256算法时,其性能还有待提高。


技术实现思路

0、发明概述

1、以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

2、本公开实施例提供了一种安全散列算法sha-256的数据压缩电路,其中的第n级单级压缩电路为带中间变量的迭代电路,n=n1,n1+1,n1+2,…,n2,n2>n1≥3,所述迭代电路包括:

3、8个输入侧寄存器a,b,c,j,e,f,g,i,其中,a,b,c,d分别输出经n-2次迭代的变量a,b,c,j的数据,e,f,g,i分别输出经n次迭代的变量e,f,g,i的数据;

4、8个输出侧寄存器a’,b’,c’,j’,e’,f’,g’,i’,其中,a’,b’,c’,j’分别保存经n-1次迭代的变量a,b,c,j的数据,e’,f’,g’,i’分别保存经n+1次迭代的变量e,f,g,i的数据;

5、第一预处理电路,设置为基于输入的消息字和a,g的输出执行1次变量i的迭代运算,得到in+1或且满足in+1=an-2+gn+kn+1+wn+1;

6、变量e的运算电路,设置为基于i,e,f,g的输出执行1次变量e的迭代运算,得到en+1或且满足en+1=in+∑1en+ch(en,fn,gn);

7、第二预处理电路,设置为基于e,c的输出执行1次变量j的迭代运算,得到jn-1或且满足jn-1=en-cn-2;

8、变量a的运算电路,设置为基于a,b,c,j的输出执行1次变量a的迭代运算,得到an-1或且满足an-1=∑0 an-2+maj(an-2,bn-2,cn-2)+jn-2;

9、其中,a和b’、b和c’、e和f’、及f和g’之间直接连接;

10、其中,xm表示变量x经m次迭代的值,x为a,b,c,j,e,f,g,i;kn+1是第n+1个固定消息字,wn+1是对输入的消息块分组或扩展得到的第n+1个消息字。

11、本公开上述实施例sha-256算法的数据压缩电路和芯片,可以缩短sha-256运算的关键路径,无需增加寄存器,提供更高的性能,更小的功耗,且使芯片面积更小。

12、在阅读并理解了附图和详细描述后,可以明白其他方面。

13、附图概述

14、附图用来提供对本公开实施例的理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。

15、图1a是sha-256中消息填充的示意图;

16、图1b是本公开实施例的可实现sha-256的一种芯片的结构框图;

17、图2是本公开实施例的数据压缩部分和数据扩展部分的电路的结构图;

18、图3是用于实现原始的单轮迭代函数的压缩结构的逻辑框图;

19、图4是用于实现本公开实施例单轮迭代函数的压缩结构的示意图;

20、图5是用于实现本公开实施例单轮迭代函数的另一种压缩结构的示意图;

21、图6是用于实现本公开实施例单轮迭代函数的另一种压缩结构的示意图;

22、图7是本公开一实施例用于实现单轮迭代函数的一种单级压缩电路的逻辑框图;

23、图8是本公开一实施例用于实现单轮迭代函数的另一种单级压缩电路的逻辑框图;

24、图9a是本公开一实施例输出变量的按位取反值时的单级压缩电路的逻辑框图;

25、图9b是本公开一实施例输出变量的按位取反值时的两级压缩电路的逻辑框图;

26、图10是csa的示意图;

27、图11是本公开实施例csn中的fain模块的示意图;

28、图12是本公开一实施例基于csn实现的两级压缩结构的逻辑框图;

29、图13是图12中第一级压缩结构的另一种结构的逻辑框图;

30、图14是本公开一实施例第0级和第1级的压缩电路的逻辑框图;

31、图15是本公开一实施例第2级和第3级的压缩电路的逻辑框图;

32、图16是本公开一实施例第63级至第64级的压缩电路的逻辑框图;

33、图17是本公开一实施例第65级的压缩电路的逻辑框图。

34、详述

35、本公开描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本邻域的普通技术人员来说显而易见的是,在本公开所描述的实施例包含的范围内可以有更多的实施例和实现方案。

36、本公开的描述中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本公开中被描述为“示例性的”或者“例如”的任何实施例不应被解释为比其他实施例更优选或更具优势。本文中的“和/或”是对关联对象的关联关系的一种描述,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。“多个”是指两个或多于两个。另外,为了便于清楚描述本公开实施例的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本邻域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。

37、本技术的描述中,“包括以下任意一种或多种:选项一,选项二,……”或者“包括选项一、选项二、……中的任意一种或多种”,是指包括所列选项中的任意一项,或者包括所列选项中多项之间的任意组合。例如:“包括以下任意一种或多种:a、b”或者“包括a、b中的任意一种或多种”,是指仅包括a,或者仅包括b,或者包括a和b;又如:“包括以下任意一种或多种:a、b、c”或者“包括a、b、c中的任意一种或多种”时,是指仅包括a,或者仅包括b,或者仅包括c,或者包括a和b,或者包括a和c,或者包括b和c,或者包括a、b和c。选项数更多者依此类推。

38、在描述具有代表性的示例性实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本邻域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本邻域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本公开实施例的精神和范围内。

39、sha-256算法能将长度小于264比特的输入消息(也可称为输入数据)转换为256比特的消息摘要,消息分组长度为512比特,迭代压缩过程的消息字长度为32比特。sha-384和sha-512支持长度最大为2128比特的消息,消息字的长度为64比特,在迭代压缩时的运算操作基本相同,只是使用的初始值不同。

40、下面以sha-256算法为例进行说明,但本公开实施例的方法和装置也可用于实现其他的sha-2算法。

41、sha-256算法数据压缩时使用函数ch,maj,∑0和∑1,数据扩展时使用的函数σ0和σ1,这些函数定义如下:

42、

43、

44、

45、

46、

47、

48、上述函数中的符号含义如下:

49、∧        按位与操作

50、∨        按位或操作

51、        按位异或操作

52、        按位取反操作

53、rotrn(x)  循环右移操作,将x循环右移n个比特位

54、shrn(x)   右移操作\,将x右移n个比特位,左边补0

55、sha-256算法主要包括消息填充、数据扩展和数据压缩三部分。

56、消息填充

57、首先在长度为了l的消息末尾添加一个比特1,之后添加k个比特0,最后附加64比特的长度信息。如图1a的所示。例如,对输入的十六进制的明文消息“616263”填充时,按照填充规则,第一步在消息末尾添加一个比特1,第二步添加比特0,数量为:512-24-1-64=423比特。第三步添加64比特的长度信息。输入消息的长度为6x4=24比特,十进制的24用十六进制表示为18。因此64比特的长度信息为“0000 0000 0000 0018”。

58、数据扩展

59、填充后的消息可以划分为多个512比特的消息块。sha-256算法迭代压缩时使用两种消息字,一种是32比特的固定常数,也称为固定消息字,共64个,表示为k0,k1…,k63。另一种是消息块扩展生成的消息字。每个消息块扩展后生成64个32比特的消息字。消息块扩展的规则如下:

60、将消息块分割为16个消息字w0,w1…,w15;及

61、按以下公式得到余下的48个消息字w16,w17…,w63:

62、wj=σ1(wj-2)+wi-7+σ0(wj-15)+wj-16 j=16,17,…,63

63、其中使用的函数σ0,σ1如上文所述,不再赘述。

64、数据压缩

65、sha-256算法的数据压缩是一个迭代压缩的过程,一个消息块进行64级的迭代压缩,输出一个256比特的杂凑值。

66、迭代压缩过程使用8个变量a,b,c,d,e,f,g,h、64个固定常数消息字kn,及扩展生成的64个消息字wn,n=0,1,…,63,变量和消息字均为32比特。

67、sha-256算法中,每一级迭代压缩执行的压缩运算相同,单级迭代函数表示如下:

68、hn+1=gn

69、gn+1=fn

70、fn+1=en

71、en+1=dn+hn+∑1en+ch(en,fn,gn)+kn+wn

72、dn+1=cn

73、cn+1=bn

74、bn+1=an

75、an+1=∑0an+maj(an,bn,cn)+hn+∑1en+ch(en,fn,gn)+kn+wn

76、文中,将上述单级迭代函数称为原始的单级迭代函数。文中,a和a,b和b,c和c,d和d,e和e,f和f,g和g,h和h,i和i,j和j,n和n等,表示的是同一变量。

77、将输入消息划分为多个消息块后,对第一个消息块进行压缩时,8个变量的初始值a0,b0,c0,d0,e0,f0,g0,h0是固定设置的,经64级迭代压缩后,将8个变量的输出值a63,b63,c63,d63,e63,f63,g63,h63与各自的初始值做模232加法后拼接,即得到第一个消息块经压缩后的输出,该输出是一个256比特的杂凑值。从第二个消息块开始,对每一个消息块压缩时,以前一消息块的输出作为8个变量的初始值,按相同方式进行压缩,直到所有消息块压缩完成,输出该输入消息转换成的256比特的消息摘要。

78、图1b示出了一种可以实现上述sha-256算法的芯片。该芯片包括:

79、消息填充电路,设置为实现对输入消息的填充;

80、消息扩展电路,设置为对填充后的消息块分组,得到16个消息字;及,基于分组得到的16个消息字扩展生成48个消息字;

81、数据压缩电路,设置为基于消息分组模块和消息字生成模块输出的64个消息字进行64级迭代压缩,生成所述输入消息转换成的消息摘要;

82、控制电路。设置为根据控制消息填充电路、消息扩展电路和数据压缩电路协同工作,按照sha-256算法实现对输入消息的转换。

83、图中所示芯片的输入信号中,rst是复位信号,clk是时钟信号,last_byte是结束信号,data_in是输入消息的数据,data_en=1表示输入数据有效,vbit。last_byte是结束信号,表示输入最后一组有效数据。输出信号中,digest是输入消息最终转换成的消息摘要,bingo_buf是消息摘要值的有效标志位,fifo_read是外部fifo数据读取控制位。上述信号仅是示例性的,可以增加其他信号,也可以减少其他的部分信号。

84、上述芯片可以为专用集成电路(asic,application specific integratedcircuit)芯片但不局限于此。

85、高吞吐率sha-256通常采用流水结构的硬件实现,一种示例性的sha-256全流水电路结构如图2所示,包括流水结构的数据压缩电路和消息扩展电路。以一个消息块的处理为例,当每个时钟触发沿到来时,消息扩展电路进入一个新的消息块m,将m分割成消息字w0~w15并存入数据扩展电路的第一级寄存器组wt reg,其中w0将输入至第0级压缩电路(compressor)进行压缩。然后,随着时钟触发沿的不断到来,消息块不断往前进行流水传输,并通过扩展电路(expander)逐级进行扩展,以产生消息字w16~w63,同时逐步将消息字w1~w63输入至相应的压缩电路进行逐级压缩,直至完成64级压缩,得到该消息块经压缩后的输出数据。对该消息块处理完成后,与该消息块相关的信息将全部移出流水结构。数据压缩电路采用64级的变量寄存器a-h reg暂存变量的值。数据扩展电路采用64级的消息字寄存器wt reg暂存扩展生成的消息字。

86、上述流水结构中,单级压缩电路与sha256算法的单级迭代函数对应,一个示例性的单级压缩电路如图3所示。图中的矩形框为变量寄存器,左侧的8个变量寄存器称为输入侧寄存器,分别用于存储经n次迭代的变量a,b,c,d,e,f,g,h的值an,bn,cn,dn,en,fn,gn,hn;右侧的8个变量寄存器称为输出侧寄存器,分别用于保存经n+1次迭代的变量a,b,c,d,e,f,g,h的值an+1,bn+1,c n+1,d n+1,e n+1,f n+1,g n+1,hn+1的数据。第n级压缩电路的输出侧寄存器即第n+1级压缩电路的输入侧寄存器,n=0,1,2,…,63,a0,b0,c0,d0,e0,f0,g0,h0表示没有经过迭代的变量a,b,c,d,e,f,g,h的值也即变量a,b,c,d,e,f,g,h的初始值。

87、文中,为了表述方便,xm表示变量x经m次迭代的值,x可以是任意的变量,除了a,b,c,j,e,f,g,i外,还可以是中间变量,例如下文实施例中的i,j。

88、文中,为了表述方便,将输入侧寄存器和输出侧寄存器用所保存变量的相应符号来表示,例如,输入侧寄存器中,用于存储变量a的数据寄存器称为寄存器a,简写为a;用于存储变量b数据的寄存器称为寄存器b,简写为b;用于存储变量c数据的寄存器称为寄存器c,简写为c;依此类推。而在输出侧寄存器中,用于存储变量a的数据寄存器称为寄存器a’,简写为a’;用于存储变量b数据的寄存器称为寄存器b’,简写为b’;用于存储变量c数据的寄存器称为寄存器c’,简写为c’;依此类推。

89、在一些实施例中,在不同的级,输入侧寄存器和输出侧寄存器保存的变量可能有所差别,例如,第0级至第2级的压缩电路有保存变量d,h数据的寄存器,称为寄存器d,h,第3级至第62级的压缩电路没有保存变量d,h数据的寄存器,而是有保存变量i,j数据的寄存器,此时称为寄存器i,j。但寄存器i,j和寄存器d,h在硬件上可以相同。

90、图3中的方框表示各种算子,带箭头的线表示数据流向。其中标志有“+”的方框表示模232的加法器;标记有“ch”的方框表示用于实现函数ch运算的电路,称为ch算子;标记有“maj”的方框表示用于实现函数maj运算的电路,称为maj算子;标记有“∑0”的方框表示用于实现函数∑0运算的电路,称为∑0算子;标记有“∑1”的方框表示用于实现函数∑1运算的电路,称为∑1算子。

91、上文已给出函数ch,maj,∑0和∑1的表达式如下:

92、

93、

94、

95、

96、根据上述表达式,可以用多种门级电路来实现ch算子、maj算子、∑0算子和∑1算子本公开实施例不限于某种特定的实现方式。

97、单级压缩电路的关键路径是an+1和en+1的计算路径。图3所示的单级压缩电路中,为了得到an+1和en+1,均需要执行6次加法运算,路径较长,会影响芯片的工作频率,影响芯片的性能和功耗。

98、本公开实施例对sha256算法的压缩结构进行优化。将加法运算尽量平摊到多个变量的迭代运算中,以缩短关键路径。

99、为此,本公开实施例将wn,kn,dn,hn提前相加,引入变量i,令:

100、in=dn+hn+kn+wn=cn-1+gn-1+kn+wn

101、有:in+1=cn+gn+kn+1+wn+1

102、由于:en+1=dn+hn+∑1en+ch(en,fn,gn)+kn+wn

103、有:en+1=in+∑1en+ch(en,fn,gn)

104、由于:an+1=∑0an+maj(an,bn,cn)+hn+∑1en+ch(en,fn,gn)+kn+wn

105、有:an+1=∑0an+maj(an,bn,cn)+in+∑1en+ch(en,fn,gn)-dn

106、有:an+1=∑0an+maj(an,bn,cn)+en+1-dn

107、提前计算en+1-dn,引入变量j,令:

108、jn=en+1-dn=en+1-cn-1

109、有:jn+1=en+2-cn

110、由于:an+1=∑0an+maj(an,bn,cn)+en+1-dn

111、有:an+1=∑0an+maj(an,bn,cn)+jn

112、得到本公开实施例改进后的单级迭代函数:

113、jn+1=en+2-cn

114、in+1=cn+gn+kn+1+wn+1

115、hn+1=gn

116、gn+1=fn

117、fn+1=en

118、en+1=in+∑1en+ch(en,fn,gn)

119、dn+1=cn

120、cn+1=bn

121、bn+1=an

122、an+1=∑0an+maj(an,bn,cn)+jn

123、改进后的上述算式中,变量h和d没有作为中间变量参与其他变量的运算,单纯由变量g和c打一拍获得,因此在中间的运算过程可以暂时去掉。最后一级压缩时根据g62得到h63,根据c62得到d63即可。

124、根据上述改进后的单级迭代函数,得到优化后的压缩电路如图4所示。计算an+1和en+1的关键路径上只需要执行2次加法运算,相比之前的6次,路径大大缩短,

125、图4的压缩结构需要用en+2生成jn+1,为了使数据流更加合理,可以将变量e相对变量j提前进行2次迭代运算,使得en+2可以在jn+1之前得到,但变量e,f,g,i相互关联较强,本实施例将e,f,g,i的迭代运算一起提前,改后的压缩结构如图5所示。

126、但是,移动后生成in+1需要用到cn,而cn比in+1后得到,为了使数据流更合理,由:

127、cn+1=bn

128、bn+1=an

129、可得cn=an-2,所以:

130、in+1=an-2+gn+kn+1+wn+1

131、相应压缩结构如图6所示。

132、将图6所示的压缩结构对应到单级,可以得到如图7所示的单级压缩电路。该单级压缩电路对应的单级迭代函数如下:

133、jn+1=en+2-cn

134、in+1=an-2+gn+kn+1+wn+1

135、gn+1=fn

136、fn+1=en

137、en+1=in+∑1en+ch(en,fn,gn)

138、cn+1=bn

139、bn+1=an

140、an+1=∑0an+maj(an,bn,cn)+jn

141、上述单级迭代函数也可以加上变量h和d的表达式:hn+1=gn,dn+1=cn,但如前所述,在一些单级压缩电路中可以不进行变量d,f的迭代运算。

142、上述单级迭代函数基于的变量的数据是变量的值,如果变量的数据是变量的按位取反值时,上述单级迭代函数的表达式会有适应性的变化。而在图7所示压缩电路的基础上也可以进行硬件结构的改型,用多种硬件结构来实现上述单级迭代函数。

143、文中,变量的按位取反值是对变量的值如an,bn,cn进行按位取反得到的值,记为

144、基于上述单级迭代函数,本公开一实施例提供了一种安全散列算法sha-256的数据压缩电路,其中的第n级单级压缩电路为带中间变量(指变量i,j)的迭代电路,n=n1,n1+1,n1+2,…,n2,n2>n1≥3,所述迭代电路包括:

145、8个输入侧寄存器a,b,c,j,e,f,g,i,其中,a,b,c,d分别输出经n-2次迭代的变量a,b,c,j的数据,e,f,g,i分别输出经n次迭代的变量e,f,g,i的数据;

146、8个输出侧寄存器a’,b’,c’,j’,e’,f’,g’,i’,其中,a’,b’,c’,j’分别保存经n-1次迭代的变量a,b,c,j的数据,e’,f’,g’,i’分别保存经n+1次迭代的变量e,f,g,i的数据;

147、第一预处理电路,设置为基于输入的消息字和a,g的输出执行1次变量i的迭代运算,得到in+1或且满足in+1=an-2+gn+kn+1+wn+1;

148、变量e的运算电路,设置为基于i,e,f,g的输出执行1次变量e的迭代运算,得到en+1或且满足en+1=in+∑1en+ch(en,fn,gn);

149、第二预处理电路,设置为基于e,c的输出执行1次变量j的迭代运算,得到jn-1或且满足jn-1=en-cn-2;

150、变量a的运算电路,设置为基于a,b,c,j的输出执行1次变量a的迭代运算,得到an-1或且满足an-1=∑0an-2+maj(an-2,bn-2,cn-2)+jn-2;

151、其中,a和b’、b和c’、e和f’、及f和g’之间直接连接;

152、其中,xm表示变量x经m次迭代的值,x为a,b,c,j,e,f,g,i;kn+1是第n+1个固定消息字,wn+1是对输入的消息块分组或扩展得到的第n+1个消息字。

153、文中,变量的数据,可以是变量的值如an-2,bn-2,cn-2,也可以是变量的按位取反值如依此类推。“按位取反”简称为“取反”。

154、本实施例中,在迭代运算得到的变量的数据是变量的按位取反值时如要求满足en+1=in+∑1en+ch(en,fn,gn),是指对按位取反得到的en+1满足该表达式。本实施例对压缩电路进行了优化,但经m次迭代的任一变量的值仍是sha-256算法经m次迭代的该变量的值,并不会改变,m=0,1,2,…,63。

155、本实施例中,将变量a,e的计算路径简化为2个加法运算,而增加的2个中间变量中,i的计算路径有3个加法,但没有a,e计算路径上的maj,ch,∑0,∑1相对复杂的算子,j的计算路径上有1个减法运算,因此通过对变量i,j的迭代运算,实现了对变量a,e的计算的预处理,将2个变量的迭代运算尽量平衡到4个变量的迭代运算来实现,相对原始的单级迭代函数中a,e的6个加法的迭代计算,显著地缩短了关键路径。

156、而且,由于压缩电路可以在中间的第n压缩电路中,将用于保存变量h,d数据的寄存器改为保存变量i,j的数据,并没有增加寄存器的数量。因此,用芯片实现该改进的压缩电路时,可以提供更高的性能,更小的功耗,并且使芯片面积更小。

157、在本公开一示例性的实施例中,所述数据压缩电路包括第0级至第65级共66级压缩电路,所述66级压缩电路为流水结构,n1大于或等于3,n2小于或等于62;

158、所述66级压缩电路中的每一级压缩电路均包括8个输入侧寄存器和8个输出侧寄存器,每一级压缩电路的输出侧寄存器组即下一级压缩电路的输入侧寄存器组。

159、在本实施例的一示例中,n1=3,n2=62,也即从第3级至第62级的压缩电路均为本实施例的迭代电路(带中间变量),但本公开不局限于此。在从第4级、第5级或者更后一级或多级开始使用本实施例的迭代电路也是可以的,此时采用本实施例迭代电路之前的多个单级压缩电路可以基于图3所示的压缩电路,但需要将变量a,b,c,d相对变量e,f,g,h拖后2拍(即少进行2次迭代),并在采用本实施例迭代电路的前一级通过本实施例单级迭代函数中变量i,j的迭代公式得到相应的变量i,j的数据即可。同样地,本实施例的迭代电路也可以在第61级、第60级或者更前一级或多级结束,结束后可以使用变量a,b,c,d,e,f,g,h来完成后续的迭代运算,具体的压缩电路本公开不做局限。

160、在本公开一示例性的实施例中,所述迭代电路包括第一迭代电路;所述第一迭代电路的a,b,c,j,e,f,g,i分别输出an-2,bn-2,cn-2,jn-2,en,fn,gn,in;所述第一迭代电路的a’,b’,c’,j’,e’,f’,g’,i’分别保存an-1,bn-1,cn-1,jn-1,en+1,fn+1,gn+1in+1。

161、本实施例的一示例如图7所示,该第一迭代电路中:

162、所述第一预处理电路包括输入端与a和g的输出端连接并接收wn+1,输出端连接到i’的第一加法电路;所述第一预处理电路设置为执行1次变量i的迭代运算in+1=an-2+gn+kn+1+wn+1得到in+1;kn+1为常数,可以作为输入,也可以如csk那样通过电路的内部逻辑来实现kn+1作为输入时同样的运算结果。

163、所述第二预处理电路包括输入端与c和e的输出端连接,输出端连接到j’的第一减法电路;所述第二预处理电路设置为执行1次变量j的迭代运算jn-1=en-cn-2得到jn-1;

164、所述变量e的运算电路包括输入端与e的输出端连接的∑1算子,输入端与e,f和g的输出端连接的ch算子,及输入端与∑1算子、ch算子和i的输出端连接的第二加法电路,所述第二加法电路的输出端连接到e’的输入端;所述变量e的运算电路设置为执行1次变量e的迭代运算en+1=in+∑1en+ch(en,fn,gn)得到en+1;

165、所述变量a的运算电路包括输入端与a,b和c的输出端连接的maj算子,输入端与a的输出端连接的∑0算子,及输入端与maj算子、∑0算子和j的输出端连接的第三加法电路,所述第三加法电路的输出端连接到a’的输入端;所述变量a的运算电路设置为执行1次变量a的迭代运算an-1=∑0an-2+maj(an-2,bn-2,cn-2)+jn-2得到an-1。

166、所述a和b’、b和c’、e和f’、及f和g’之间的直接连接设置为分别将an-2,bn-2,en,fn打一拍得到bn-1,cn-1,fn+1,gn+1。

167、在图7所示第n级压缩电路的基础上,对于输入超过两个的加法,可以采用进位保存加法器(carry save adder,csa)来完成3-2化简,即将3个数的加法转换为2个数的加法。而对于只有两个输入的加法,可采用带进位加法器(carry propagate adder,cpa),cpa接受a1,a2两个输入,并产生输出b。csa(carry save adder)的两个输出一个是进位(cout),一个是和(sum)。csa在多个数据相加时可以将进位保留下来,只做一次进位传递,可以有效减少计算延迟。

168、本实施例的一示例使用csa后,相应的第n级压缩电路如图8所示。图中标记有“csa”的方框即表示csa。其中,第一加法电路包括依次串联的第一csa、第二csa和用于2个数相加的加法器,该2个数相加的加法器在图中用带“+”的方框表示,以cpa为例;所述第二加法电路和第三加法电路均包括串联的csa和cpa。

169、本实施例中,第n级压缩电路中的输入侧寄存器和输出侧寄存器是输出与输入相同的寄存器,所述第n级压缩电路中的迭代电路采用如图7或图8所示的第一迭代电路。

170、图7或图8所示的实施例所用的单级压缩电路中,使用的输入侧寄存器和输出侧寄存器可以是输入和输出相同的寄存器,即q输出的寄存器。但在本公开另一实施例中,也可以使用输出为输入取反的寄存器,即qn输出的寄存器。qn输出的寄存器相比q输出的寄存器在结构上少一个非门(inv),面积更小且延迟更低。

171、在数据压缩电路中使用qn输出的寄存器作为输入侧寄存器和输出侧寄存器时,如果输入侧寄存器保存的变量的数据为变量的值,例如a0,b0,c0,d0,e0,f0,g0,h0,a2,b2,c2,d2,e2,f2,g2,h2等,则从输入侧寄存器输出后会变为变量的按位取反值。

172、按位取反后,单个函数变化如下:

173、

174、

175、

176、

177、对多个变量相加后按位取反,有:

178、

179、基于变量的数据为变量的值时的单级迭代函数,可以推算出变量的数据为变量的按位取反值时的单级迭代函数,下面对两者进行一下对比:

180、基于变量的值:jn+1=en+2-cn

181、基于变量的按位取反值:

182、基于变量的值:in+1=an-2+gn+kn+1+wn+1

183、基于变量的按位取反值:

184、基于变量的值:en+1=in+∑1en+ch(en,fn,gn)

185、基于变量的按位取反值:

186、基于变量的值:an+1=∑0an+maj(an,bn,cn)+jn

187、基于变量的按位取反值:

188、上述表达式中,也可表示为kn+1,也可表示为wn+1。

189、考虑到在第n级压缩结构中,变量e,f,g,i相对a,b,c,j多经过了2次迭代,基于变量的按位取反值的单级迭代函数可表示如下:

190、

191、

192、

193、

194、

195、

196、

197、

198、该基于变量的按位取反值的单级迭代函数是基于变量的值的单级迭代函数的变形,均满足sha-256算法。对于得到的变量的按位取反值,保存到一个qn输出的寄存器,其输出即可转换为变量的值,或者通过一个非门,也可以转换为变量的值。

199、本公开一示例性的实施例中,第n级压缩电路中的输入侧寄存器和输出侧寄存器是输出为输入取反的寄存器的情况下,采用本实施例的迭代电路,则相邻的两个迭代电路中,如果第一个迭代电路的输入侧寄存器输出的是变量的按位取反值,则第二个迭代电路的输入侧寄存器输出的是变量的值。因为经过第一个迭代电路的迭代运算后保存在第二个迭代电路的输入侧寄存器的是变量的按位取反位,而输入侧寄存器是qn输出的寄存器,因此第二个迭代电路的输入侧寄存器输出的是变量的值。参见图9b。

200、因此本公开实施例中,作为第n级压缩电路的迭代电路包括第一迭代电路和第二迭代电路,n=n1,n1+1,n1+2,…,n2,n2>n1≥3,其中,所述第二迭代电路的a,b,c,j,e,f,g,i分别输出所述第二迭代电路的a’,b’,c’,j’,e’,f’,g’,i’分别保存为

201、本实施例的一示例中,可参见图9a和图9b的左侧电路,所述第二迭代电路中:

202、所述第一预处理电路包括输入端与a的输出端连接的第一非门,输入端与g和第一非门的输出端连接并接收wn+1的第一减法电路,所述第一减法电路的输出端与i’的输入端连接;所述第一预处理电路设置为执行1次变量i的迭代运算得到kn+1为常数可作为输入也可用电路的内部逻辑实现相应的逻辑运算。

203、所述第二预处理电路包括输入端与c输出端连接的第二非门,输入端与第二非门和e的输出端连接的加法电路,所述加法电路的输出端与j’的输入端连接;所述第二预处理电路设置为执行1次变量j的迭代运算得到

204、所述变量e的运算电路包括输入端与i输出端连接的第三非门,输入端与e的输出端连接的∑1算子,输入端与e,f和g的输出端连接的ch算子,输入端与∑1算子的输出端连接的第四非门,及输入端与ch算子、第三非门和第四非门的输出端连接的第二减法电路,所述第二减法电路的输出端与e’的输入端连接;所述变量e的运算电路设置为执行1次变量e的迭代运算得到

205、所述变量a的运算电路包括所述第一非门,输入端与j的输出端连接的第五非门,输入端与a,b和c的输出端连接的maj算子,输入端与第一非门的输出端连接的∑0算子,及输入端与maj算子、∑0算子和第五非门的输出端连接的第三减法电路,所述第三减法电路的输出端与a’的输入端连接;所述变量a的运算电路设置为执行1次变量a的迭代运算得到

206、所述a和b’、b和c’、e和f’、及f和g’之间的直接连接设置为分别将打一拍后得到

207、上述第一预处理电路和变量a的运算电路均包括第一非门,也即第一非门为该两个电路所共用。

208、对应于将三个数相加合并为两个数相加的csa,可以设计一个新的器件:进位保留减法器(css:carry save subtracter),css的表达式结构如下:x-y-z=css(x,y,z)=s-c。即css设置为将3个输入操作数x,y,z的减法运算x-y-z简化为2个输出操作数的减法运算s-c,其中,

209、如图9a所示,所述第二迭代电路中的第一减法电路、第二减法电路和第三减法电路中的部分或全部使用进位保留减法器css实现3个操作数减法到2个操作数减法的化简。因为第一预处理电路中有4个操作数,因此先使用了两个css来实现两次3-2化简,得到2个操作数,再用一个普通的减法器实现该2个操作数的减法运算。

210、本实施例的一示例中,所述第n级压缩电路中的输入侧寄存器和输出侧寄存器是输出为输入取反的寄存器;相邻的两个所述迭代电路中,一个为所述第一迭代电路,另一个为所述第二迭代电路。如图9b所示,图9b左侧的压缩电路是第二迭代电路,右侧的压缩电路是第一迭代电路。

211、本公开一示例性的实施例中,对csa进行改进,设计了一个新的器件,文中称为进位保留加法器取反电路,简写为csn电路或csn。

212、fa1模块是1位全加器,是csa的基本单元。全加器是能够计算低位进位的二进制加法电路。与半加器相比,全加器不只考虑本位计算结果是否有进位,也考虑上一位对本位的进位。其输入输出如图10所示,其输入包括a,b,ci,其中a,b是要相加的数,ci是进位输入;输出包括s和co,其中s是和,co是进位输出,文中简称为进位。fa1模块的真值表如下:

213、 a b ci s co 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1

214、fa1模块中,s和co的输出在实际的物理实现上内部有一个反相器,将这个反相器去掉可以减小面积、功耗和延迟。修改后的器件命名为全加器取反电路,简称fa1n,如图11所示,真值表与fa1相反,如下:

215、

216、

217、fain的表达式结构为:fa1n(con,sn)=a+b+ci

218、容易推出:

219、

220、

221、本公开实施例是对32位的数据进行操作,使用32个fain可以组成csn。容易理解,基于fain的csn设置为对输入的3个操作数进行逻辑运算,输出con和sn,sn是所述3个操作数相加的和的按位取反值,con是所述3个操作数相加的进位的按位取反值。文中,3个操作数相加的和是指将所述3个数输入csa得到的输出s,3个操作数相加的进位是指将3个数输入csa得到的进位co。sn也记为con也记为将a,b,c三个数按位取反后输入csn,输出的2个数与将a,b,c输入csa时csa输出的2个数相同。

222、因此,本公开一实施例提供了一种逻辑运算电路即csn,所述逻辑运算电路设置对输入的3个操作数进行逻辑运算,输出两个操作数,该两个操作数中的一个是所述3个操作数相加的和的按位取反值,另一个是所述3个操作数相加的进位的按位取反值。csn包括一个或多个1位全加器取反电路,所述1位全加器取反电路通过取消1位全加器中的一个反相器而得到。

223、在使用qn输出的寄存器的基础上,再结合本公开实施例的csn,重新对sha-256的数据压缩电路做推导如下:

224、首先定义sha256中的几个函数表达式的变种,如下:

225、

226、

227、

228、

229、也即,在输入相同的情况下,chn算子,majn算子、∑n0算子和∑n1算子的输出分别是ch算子,maj算子、∑0算子和∑1算子的输出的按位取反值。以chn算子为例,输入为x,y,z时,输出为而如果输入为则chn算子的输出与将x,y,z输入ch算子的输出相同,majn算子、∑n0算子和∑n1算子也类似,不再赘述。在实际的物理实现时,上述chn算子,majn算子、∑n0算子和∑n1算子和ch算子,maj算子、∑0算子和∑1算子的大小相当。

230、使用上述chn算子,majn算子、∑n0算子和∑n1算子,并且选用qn输出的寄存器,本公开实施例相邻两级的压缩电路如图12所示。

231、图12中第一级电路的8个输入侧寄存器中,用于保存变量a,b,c,i的4个寄存器a,b,c,i输出的是a,b,c,i的值an-2,bn-2,cn-2,in,用于保存变量j,e,f,g的4个寄存器j,e,f,g输出的是j,e,f,g的按位取反值相应地,8个输出侧寄存器a’,b’,c’,j’,e’,f’,g’,i’分别保存迭代后的an-1,bn-1,cn-1,in+1。而在第二级电路中,由于使用的是输出为输入取反的寄存器,用于保存变量a,b,c,i的4个寄存器a,b,c,i输出的是a,b,c,i的按位取反值用于保存变量j,e,f,g的4个寄存器j,e,f,g输出的是j,e,f,g的值jn-1,en+1,fn+1,gn+1。相应地,8个输出侧寄存器中,a’,b’,c’,j’,e’,f’,g’,i’分别保存迭代后的jn-1,en+1,fn+1,gn+1,

232、与按位取反相关的公式有:

233、

234、

235、

236、以图12中第一级压缩电路中变量a的迭代运算为例,此处变量a的迭代运算使用了majn算子、∑n0算子、csn和一个加法器。majn算子的输入为an-2,bn-2,cn-2,输出为∑n0算子的输入为an-2,输出为因此,csn的输入分别为和则csn的输出与将maj(an-2,bn-2,cn-2),σ0(an-2)和jn-2输入csa时csa的输出相同,记为s和co。再通过一个加法器将s和co相加得到an-1。因此an-1=∑0an-2+maj(an-2,bn-2,cn-2)+jn-2。

237、再以图12中第一级压缩电路中变量e的迭代运算为例,此处变量e的迭代运算使用了chn算子、∑n1算子、csn和一个将2个输入数与1相加的加法器。chn算子的输入为输出可记为ch(en,fn,gn);∑n1算子的输入为输出可记为∑1en;则csn的输入为ch(en,fn,gn)、∑1en和in,输出可记为和在加法器中将和1相加,输出为即等于根据公式可知根据公式可知因此故en+1=s+co;这里s,co是将ch(en,fn,gn)、∑1en和in输入csa得到的和及进位,因此可知变量en+1的值满足:en+1=in+∑1en+ch(en,fn,gn)。

238、再以图12中第一级压缩电路中变量j的迭代运算为例,此处变量j的迭代运算使用了一个加法器,该加法器的输入为和cn-2,输出为即根据公式可知可知满足jn-1=en-cn-2。

239、图12中第一级压缩电路中变量i的迭代运算使用了一个新的器件,该新器件是在csn的基础上,针对一个输入为常数k,另一个输入需要进行取反操作的情况,基于2个输入和2个输出之间的真值表设计出相应的逻辑电路,文中简称为csk。

240、参见图13,该csk的原始结构如图13所示的最下一行中的一个非门和第一个csn,该第一个csn以该非门的输出gn和an-2为两个输入,另一个输入是固定消息字kn+1,由于kn+1是常数,因此该结构只有两个输入即变量a,g的值。因此该csn的两个输出和中,等于gn,an-2和kn+1相加的进位的按位取反值,等于gn,an-2和kn+1相加的和的按位取反值。

241、csk的两个输入和两个输出均为32位数据,对32位数据中的每一个bit,根据上述要求可推导两个输入和输出之间的真值表:

242、当k=0时,输入和输出之间的真值表如下:

243、

244、即:

245、当k=1时,输入和输出之间的真值表如下:

246、

247、即:

248、对32位中的每一位,根据该真值表构建相应的逻辑电路,即得到csk。

249、因此本公开一实施例还提供了一种逻辑运算电路即csk,该逻辑运算电路设置为基于输入的两个操作数g,a和常数k执行逻辑运算,输出两个操作数s,c,其中,s等于和k相加的和的按位取反值,c等于和k相加的进位的按位取反值。csk可以包括一个或多个1位的运算电路,所述1位的运算电路满足:在k=0时,两个输出s,c满足:在k=1时,两个输出s,c满足:

250、在数据压缩电路中,csk使用的常数为不同的固定消息字kn+1,因此每个csk会由于kn+1的不同而不同,但使用csk可以减小模块面积,功耗,提高性能。

251、再以图12中第一级压缩电路中变量i的迭代运算为例,结合图13,验证一下对变量i的迭代运算是否满足:in+1=an-2+gn+kn+1+wn+1。此处变量i的迭代运算使用了csk,csn和加法器(未加其他限定时,本文中的加法器是输入2个操作数,输出一个和的加法器)。如前所述,csk相当于使用非门将变为gn,再将gn,an-2和kn+1输入一个csn,该csk的两个输出记为和其中,是gn,an-2和kn+1相加的和的按位取反值,是gn,an-2和kn+1相加的进位的按位取反值。csn接收csk的两个输出及对和进行逻辑运算,输出co2和s2,其中,s2是和相加的和的按位取反值,co2是和相加的进位的按位取反值。之后在加法器中将co2和s2相加得到in+1。根据上文中的公式,in+1是等于co1,s1和wn+1相加的,而co1和s1相加又等于an-2+gn+kn+1,因此可知,in+1=an-2+gn+kn+1+wn+1。

252、由此可知,图12中的第一级压缩电路(即第三迭代电路)可以实现本公开实施例的单轮迭代函数,对于图12中的第二级压缩电路(即第四迭代电路),各个变量的迭代电路与第三迭代电路类似,不再赘述。其中的csk是基于gn+1,和进行逻辑运算,输出co1和s1,其中,s1是和相加的和的按位取反值,co1是和相加的进位的按位取反值。csk连接的csn的输入为csk的两个输出及wn+2,csn连接的加法器将csn的两个输出和1相加,得到in+2。可以依照同样的方式验证,第四迭代电路也可以实现本公开实施例的单轮迭代函数。此外,图13所示的两级压缩电路,也可以分别实现本公开实施例的单轮迭代函数。

253、本公开实施例中,所述迭代电路包括第三迭代电路;所述第三迭代电路的a,b,c,j,e,f,g,i分别输出an-2,bn-2,cn-2,in;所述第三迭代电路的a’,b’,c’,j’,e’,f’,g’,i’分别保存an-1,bn-1,cn-1,in+1。

254、本公开的一示例中,参见图12的第一级压缩电路,所述第三迭代电路中:

255、所述第一预处理电路包括输入端与a和g的输出端连接并接收,wn+1的数据的第一运算电路,所述第一运算电路的输出端与i’的输入端连接;所述第一预处理电路设置为基于an-2,以及kn+1,wn+1的数据执行1次变量i的迭代运算得到in+1;kn+1为常数,可作为输入,也可以如csk那样通过电路的内部逻辑来实现kn+1作为输入时同样的运算结果。

256、所述第二预处理电路的输入端与c和e的输出端连接,输出端连接到j’;所述第二预处理电路设置为执行1次变量j的迭代运算得到

257、所述变量e的运算电路包括输入端与e的输出端连接的∑n1算子,输入端与e,f和g的输出端连接的chn算子,及输入端与∑n1算子、chn算子和i的输出端连接的第二运算电路,所述第二运算电路的输出端与e’的输入端连接;所述变量e的运算电路设置为基于和in为执行1次变量e的迭代运算得到

258、所述变量a的运算电路包括输入端与a,b和c的输出端连接的majn算子,输入端与a的输出端连接的∑n0算子,及输入端与majn算子、∑n0算子和j的输出端连接的第三运算电路,所述第三运算电路的输出端与a’的输入端连接;所述变量a的运算电路设置为基于an-2,bn-2,cn-2,执行1次变量a的迭代运算得到an-1;

259、所述a和b’、b和c’、e和f’、及f和g’之间的直接连接设置为分别将an-2,bn-2,打一拍得到bn-1,cn-1,

260、本公开实施例中,所述迭代电路还包括第四迭代电路;所述第四迭代电路的a,b,c,j,e,f,g,i分别输出jn-2,en,fn,gn,所述第四迭代电路的a’,b’,c’,j’,e’,f’,g’,i’分别保存jn-1,en+1,fn+1,gn+1,

261、本实施例的一示例中,参见图12的第二级压缩电路,所述第四迭代电路中:

262、所述第一预处理电路包括输入端与a和g的输出端连接并接收wn+1的数据的第四运算电路,所述第四运算电路的输出端与i’的输入端连接;所述第一预处理电路设置为基于gn以及kn+1,wn+1的数据执行1次变量i的迭代运算得到

263、所述第二预处理电路的输入端与c和e的输出端连接,输出端连接到j’;所述第二预处理电路设置为执行1次变量j的迭代运算得到jn-1;

264、所述变量e的运算电路包括输入端与e的输出端连接的∑n1算子,输入端与e,f和g的输出端连接的chn算子,及输入端与∑n1算子、chn算子和i的输出端连接的第三运算电路,所述第三运算电路的输出端与e’的输入端连接;所述变量e的运算电路设置为基于en,fn,gn和为执行1次变量e的迭代运算得到en+1;

265、所述变量a的运算电路包括输入端与a,b和c的输出端连接的majn算子,输入端与a的输出端连接的∑n0算子,及输入端与majn算子、∑n0算子和j的输出端连接的第二运算电路,所述第二运算电路的输出端与a’的输入端连接;所述变量a的运算电路设置为基于jn-2执行1次变量a的迭代运算得到

266、所述a和b’、b和c’、e和f’、及f和g’之间的直接连接设置为分别将en,fn打一拍得到fn+1,gn+1。

267、需要说明的是,本公开实施例的示例仍以第n级压缩电路为例描述第四迭代电路,而图12的第二级压缩电路是以第n+1级压缩电路为例,因此两者变量的下标不同。

268、本公开实施例一示例中,上述第三迭代电路和第四迭代电路中:

269、所述第二运算电路包括csn电路和与所述csn电路连接的第四加法电路,所述csn电路的输入端即所述第二运算电路的输入端,其中:

270、所述csn电路设置为对输入的3个操作数进行逻辑运算,输出和是所述3个操作数相加的和的按位取反值,是所述3个操作数相加的进位的按位取反值;

271、所述第四加法电路设置为将和1相加,得到的和从所述第四加法电路的输出端输出,所述第四加法电路的输出端即所述第二运算电路的输出端。

272、在图12中,第四加法电路用一个箭头表示加1,但并不需要接收输入,将加1的逻辑在电路内部实现即可。

273、本公开实施例一示例中,上述第三迭代电路和第四迭代电路中:

274、所述第三运算电路包括相互连接的csn电路和第五加法电路,所述csn电路的输入端即所述第三运算电路的输入端,其中:

275、所述csn电路设置为对输入的3个操作数进行逻辑运算,输出和是所述3个操作数相加的和的按位取反值,是所述3个操作数相加的进位的按位取反值;

276、所述第五加法电路设置为将和相加,得到的和从所述第五加法电路的输出端输出,所述第五加法电路的输出端即所述第三运算电路的输出端。

277、本公开实施例一示例中,上述第三迭代电路中:

278、所述第一运算电路包括第一电路、第一csn电路和第六加法电路,其中:

279、所述第一电路的输入端与a,g的输出端连接,设置为基于an-2和kn+1进行逻辑运算,输出和其中,是gn,an-2和kn+1相加的和的按位取反值,是gn,an-2和kn+1相加的进位的按位取反值;

280、所述第一csn电路的输入端与所述第一电路的输出端连接并接收设置为对输入的和进行逻辑运算,输出co2和s2,其中,s2是和相加的和的按位取反值,co2是和相加的进位的按位取反值;

281、所述第六加法电路设置为将co2和s2相加,得到的和输出到i’的输入端。

282、本示例中,参见图13,所述第一电路包括第六非门和第二csn,其中:所述第六非门的输入端与g的输出端连接,设置为对按位取反得到gn;所述第二csn电路的输入端与第六非门和a的输出端连接并接收kn+1,设置为对输入的gn,an-2和kn+1进行逻辑运算,输出和在另一示例中,所述第一电路使用csk实现,该csk基于输入的an-2,固定消息字kn+1和输出的和之间的真值表构建。

283、本公开实施例一示例中,上述第四迭代电路中:

284、所述第四运算电路包括第二电路、第三csn电路和第七加法电路,其中:

285、所述第二电路的输入端与a,g的输出端连接,设置为基于gn,和进行逻辑运算,输出co1和s1,其中,s1是和相加的和的按位取反值,co1是和相加的进位的按位取反值;

286、所述第三csn电路的输入端与所述第二电路的输出端连接并接收wn+1,设置为对输入的co1,s1和wn+1进行逻辑运算,输出和其中,是co1,s1和wn+1相加的和的按位取反值,是co1,s1和wn+1相加的进位的按位取反值;

287、所述第七加法电路设置为将和1相加,得到的和输出到i’的输入端。

288、该示例中,所述第二电路包括第七非门和第四csn电路,其中:所述第七非门的输入端与g的输出端连接,设置为对gn按位取反得到所述第四csn电路的输入端与第七非门和a的输出端连接并接收设置为对输入的和进行逻辑运算,输出co1和s1。或者,在另一示例中,所述第二电路使用csk实现,该csk基于输入的gn,固定消息字和输出的co1和s1之间的真值表构建。

289、在一个示例中,可以从整个数据压缩电路中的第4级开始使用图12和图13所示的两级压缩结构,例如有些应用关注从第4级开始的性能时。可以从第4级开始优化(也可以是第5级,第6级或更后一级)。此时,从第4级到第62级的压缩电路中,偶数级电路将使用左侧的第三迭代电路,奇数级电路将使用图中右侧的第四迭代电路。从第4级开始时,可以通过对变量寄存器类型(qn输出或q输出)的选用或者使用非门,使得第4级输入侧寄存器输出的变量的数据与图12中第一级压缩电路或者第二级压缩电路相同。

290、由于本公开实施例的单级压缩电路中,e,f,g,i相对a,b,c,j提前迭代二次,原来的64级流水结构将变为66级。而至少前三级的压缩电路结构有些不同。

291、本公开实施例在第3级对于a1,e1,e2,e3,改为采用sha256的原始算法来实现,即:

292、a1=∑0a0+maj(a0,b0,c0)+h0+∑1e0+ch(e0,f0,g0)+k0+w0

293、e1=d0+h0+∑1e0+ch(e0,f0,g0)+k0+w0

294、e2=d1+h1+∑1e1+ch(e1,f1,g1)+k1+w1

295、e3=d2+h2+∑1e2+ch(e2,f2,g2)+k2+w2

296、由于本实施例的改进方法中,a,b,c,d的计算比e,f,g,i晚二拍,在前3级,a,b,c,d需要拖二拍,只能得到a1,b1,c1,d1,计算e3时不能够使用d2,而d2=c1,因此e3改为用下式得到:

297、e3=c1+h2+∑1e2+ch(e2,f2,g2)+k2+w2

298、同样,可使用j1=e2-d1计算出经1次迭代的变量j的值,使用i3=b1+g2+k3+w3计算出经3次迭代的变量i的值。

299、文中,一个变量的值经过几次迭代,取决于该变量的值是通过哪些其他变量的值计算得以的,以i3为例,当基于i3=b1+g2+k3+w3迭代得到i3,则该i3是经3次迭代的变量i的值。

300、在本公开一示例性的实施例中,所述第0级至第2级的压缩电路设置为基于变量a,b,c,d,e,f,g,h的初始值a0,b0,c0,d0,e0,f0,g0,h0和k0,k1,k2,k3,w0,w1,w2,w3的数据执行变量的迭代运算,得到经1次迭代的变量a,b,c,j的数据及经3次迭代的e,f,g,i的数据,并传递到第3级压缩电路,其中,经1次迭代的j1的数据满足j1=e2-d1,经3次迭代的i的数据满足i3=b1+g2+k3+w3;其中,dm表示变量d经m次迭代的值,hm表示变量h经m次迭代的值,m为自然数。。

301、本实施例中:

302、所述第0级压缩电路设置为基于变量a,b,c,d,e,f,g,h的初始值a0,b0,c0,d0,e0,f0,g0,h0和k0,w0的数据执行1次变量a,b,c,d,e,f,g,h的迭代运算,得到经1次迭代的变量a,b,c,d,e,f,g,h的数据并传递到下一级压缩电路;

303、所述第1级压缩电路设置为基于经1次迭代的变量d,e,f,g的数据和k1,w1的数据执行1次变量e,f,g,h的迭代运算,得到的经2次迭代的e,f,g,h的数据和经1次迭代的a,b,c,d的数据一起传递到下一级压缩电路;

304、所述第2级压缩电路设置为基于经1次迭代的变量c的数据、经2次迭代的变量e,f,g,h的数据及k2,w2的数据,执行1次变量e,f,g的迭代运算得到经3次迭代的变量e,f,g的数据;基于经1次迭代的变量b的数据、经2次迭代的变量g的数据及k2,w2的数据,执行1次变量i的迭代运算得到经3次迭代的变量i的数据且满足i3=b1+g2+k3+w3;基于经1次迭代的变量d的数据、经2次迭代的变量e的数据,执行1次变量j的迭代运算得到经1次迭代的变量j的数据且满足j1=e2-d1。

305、上述第0级压缩电路可基于sha-256的单级迭代函数实现,这里不再赘述。

306、本实施例的一示例中,如图14所示,所述第1级压缩电路包括:

307、8个输入侧寄存器a,b,c,d,e,f,g,h-i,分别输出a1,b1,c1,d1,e1,f1,g1,h1;

308、8个输出侧寄存器a’,b’,c’,d’,e’,f’,g’,h’,分别保存a1,b1,c1,d1,e2,f2,g2,h2;

309、执行1次变量e的迭代运算e2=d1+h1+∑1e1+ch(e1,f1,g1)+k1+w1得到e2的运算电路;

310、其中,a和a’,b和b’,c和c’,d和d’,e和f’,f和g’及g和h’之间直接连接,将a1,b1,c1,d1直接传递到输出侧,将e1,f1,g1打一拍得到f2,g2,h2。

311、本实施例的一示例中,如图15所示,所述第2级压缩电路包括:

312、8个输入侧的寄存器a,b,c,d,e,f,g,h,分别输出a1,b1,c1,d1,e2,f2,g2,h2;

313、8个输出侧的寄存器a’,b’,c’,j’,e’,f’,g’,i’,分别保存a1,b1,c1,j1,e3,f3,g3,i3;

314、执行1次变量e的迭代运算e3=c1+h2+∑1en+ch(e2,f2,g2)+k2+w2得到e3的运算电路;

315、执行1次变量j的迭代运算j1=e2-d1得到j1的运算电路;

316、执行变量i的迭代运算i3=b1+g2+k3+w3得到i3的运算电路;

317、其中,a和a’、b和b’、c和c’、e和f’、及f和g’之间直接连接,分别将a1,b1,c1直接传递到输出侧,及将e2,f2打一拍得到f3,g3;

318、本示例中,所述第0级至第2级的压缩电路中的输入侧寄存器和输出侧寄存器均为输出与输入相同的寄存器,但并不局限于此。

319、本实施例的另一示例中,在输入侧寄存器输出的是变量的按位取反值时,所述第2级压缩电路包括:

320、8个输入侧的寄存器a,b,c,d,e,f,g,h,分别输出

321、8个输出侧的寄存器a’,b’,c’,j’,e’,f’,g’,i’,分别保存

322、执行1次变量e的迭代运算得到的运算电路;

323、执行1次变量j的迭代运算得到的运算电路;

324、执行1次变量i的迭代运算得到的运算电路;

325、其中,a和a’、b和b’、c和c’、e和f’、及f和g’之间直接连接,分别将直接传递到输出侧,及将打一拍得到

326、本示例中,所述第0级至第2级的压缩电路中的输入侧寄存器和输出侧寄存器均为输出为输入取反的寄存器,但并不局限于此。

327、在有些应用中,对于前面几级的迭代并不是关注的重点,因此前面几级的实现可以基于各种方式,只要能够得到本实施例第n级单级压缩电路的输入侧寄存器的变量值即可。在第n级单级压缩电路采用图12所示的第三迭代电路和第四迭代电路时,输入侧寄存器中保存的是部分变量的值和部分变量的按位取反值。此时也可以通过如图14和图15所示的压缩电路来实现,在最后一级通过非门对部分变量按位取反,或者在采用本实施例第n级单级压缩电路中的第一级压缩电路,对输入侧寄存器作特殊设计,部分采用qn输出的寄存器,部分采用q输出的寄存器也可以实现。

328、本实施例的数据压缩电路中的第63级至第65级的压缩电路,需要将两个中间变量替换为d,h,且有部分变量已经迭代完成,其结构与上述的第n级压缩结构也有所不同。但用于变量迭代计算的运算电路均可以采用第n级压缩结构相同变量的运算电路。

329、本公开一示例性的实施例中,第63级至第65级的压缩电路设置为基于第62级输出的经63次迭代的变量e,f,g,i的数据及经61次迭代的变量a,b,c,j的数据,执行变量的迭代运算,得到经64次迭代的变量a,b,c,d的数据及经64次迭代的e,f,g,h的数据。

330、本实施例中,

331、第63级压缩电路设置为基于经63次迭代的变量e,f,g,i的数据执行1次变量e,f,g的迭代运算得到经64次迭代的变量e,f,g的数据,对经63次迭代的变量g的数据打一拍得到经64次迭代的变量h的数据;基于经61次迭代的变量a,b,c,j和经63次迭代的变量e的数据执行1次变量a,b,c,j的迭代运算,得到经62次迭代的变量a,b,c,j的数据;将所述得到的数据传递到下一级压缩电路;

332、第64级压缩电路设置为基于经62次迭代的变量a,b,c,j的数据和经64次迭代的变量e的数据执行1次变量a,b,c,j的迭代运算,得到经63次迭代的变量a,b,c,j的数据;将所述得到的数据和经64次迭代的变量e,f,g,h的数据传递到下一级压缩电路;

333、第65级压缩电路设置为基于经63次迭代的变量a,b,c,j的数据执行1次变量a,b,c的迭代运算,得到经64次迭代的变量a,b,c的数据;对经63次迭代的变量c的数据打一拍得到经64次迭代的变量d的数据;将经64次迭代的变量a,b,c,d,e,f,g,h输出。

334、本实施例的一示例中,请参见图16,所述第63级压缩电路包括:

335、8个输入侧寄存器a,b,c,j,e,f,g,h,分别输出经61次迭代的变量a,b,c,j的数据和经63次迭代的变量e,f,g,i的数据;

336、8个输出侧寄存器a’,b’,c’,j’,e’,f’,g’,h’,分别保存经62次迭代的变量a,b,c,j的数据和经64次迭代的变量e,f,g,h的数据;

337、变量e的运算电路,采用所述第一迭代电路或第二迭代电路或第三迭代电路或第四迭代电路中的所述变量e的运算电路,设置为基于经63次迭代的变量e,f,g,i的数据执行1次变量e,f,g的迭代运算得到经64次迭代的变量e的数据;

338、变量a的运算电路,采用所述第一迭代电路或第二迭代电路或第三迭代电路或第四迭代电路中的所述变量a的运算电路,设置为基于经61次迭代的变量a,b,c,j的数据执行1次变量a的迭代运算,得到经62次迭代的变量a的数据;

339、第二预处理电路,采用所述第一迭代电路或第二迭代电路或第三迭代电路或第四迭代电路中的所述第二预处理电路,基于经61次迭代的变量c的数据和经63次迭代的变量e的数据执行1次变量j的迭代运算,得到经62次迭代的变量j的数据;

340、其中,a和b’、b和c’、e和f’、f和g’及g和h’之间直接连接,分别将经61次迭代的变量a,b的数据和经63次迭代的变量e,f,g的数据打一拍,得到经62次迭代的变量b,c的数据和经64次迭代的变量f,g,h的数据。

341、图16中的第63级压缩电路,其输入侧寄存器a,b,c,j,e,f,g,i分别输出j61,e63,f63,g63,输出侧寄存器a’,b’,c’,j’,e’,f’,g’,h’分别保存j62,e64,f64,g64,h64,变量a,e,j迭代的运算电路采用的是第四迭代电路中变量a,e,j的运算电路。但相对于图12中的第四迭代电路(即图右侧的第二级压缩电路),第63级压缩电路不需要进行变量i的迭代运算,没相应的运算电路。

342、本实施例的一示例中,请参见图16,所述第64级压缩电路包括:

343、8个输入侧寄存器a,b,c,j,e,f,g,h,分别输出经62次迭代的变量a,b,c,j的数据和经64次迭代的变量e,f,g,h的数据;

344、8个输出侧寄存器a’,b’,c’,j’,e’,f’,g’,h’,分别保存经63次迭代的变量a,b,c,j的数据和经64次迭代的变量e,f,g,h的数据;

345、变量a的运算电路,采用所述第一迭代电路或第二迭代电路或第三迭代电路或第四迭代电路中的所述变量a的运算电路,设置为基于经62次迭代的变量a,b,c,j的数据执行1次变量a的迭代运算,得到经63次迭代的变量a的数据;

346、第二预处理电路,采用所述第一迭代电路或第二迭代电路或第三迭代电路或第四迭代电路中的所述第二预处理电路,基于经62次迭代的变量c的数据和经64次迭代的变量e的数据执行1次变量j的迭代运算,得到经63次迭代的变量j的数据;

347、其中,a和b’、b和c’之间直接连接,分别将经62次迭代的变量a,b的数据打一拍,得到经63次迭代的变量b,c的数据;e和e’、f和f’、g和g’及h和h’之间直接连接,分别将经64次迭代的变量e,f,g,h的数据直接传递到下一级。

348、图16中的第64级压缩电路,其输入侧寄存器a,b,c,j,e,f,g,h分别输出a62,b62,c62,输出侧寄存器a’,b’,c’,j’,e’,f’,g’,h’分别保存a63,b63,c63,变量a,e迭代的运算电路可以采用第三迭代电路中变量a的运算电路。相对于图12中的第三迭代电路(即图左侧的第一级压缩电路),第64级压缩电路不需要进行变量e,i的迭代运算,因此没相应的运算电路。

349、图16中变量j的第二预处理电路和预加h0的电路集成在一起,变成了一个csa和一个加法器,该csa的输入为和c62。将c62以及变量a的初值数据即常数做加法的3-2化简,输出的和及进位再通过加法器相加,得到变量j的数据保存在j’。此处得到的变量j的数据不是而是这样处理原因是将a64提前加上h0,使得在第65级压缩电路中变量a的路径缩短。常数可以内化在csa的电路中,类似于csk的设计。

350、本实施例的一示例中,所述第65级压缩电路包括:

351、8个输入侧寄存器a,b,c,j,e,f,g,h,分别输出经63次迭代的变量a,b,c,j的数据和经64次迭代的变量e,f,g,h的数据;

352、8个输出侧寄存器a’,b’,c’,j’,e’,f’,g’,h’,分别保存经64次迭代的变量a,b,c,d,e,f,g,h的数据;

353、变量a的运算电路,采用所述第一迭代电路或第二迭代电路或第三迭代电路或第四迭代电路中的所述变量a的运算电路,设置为基于经63次迭代的变量a,b,c,j的数据执行1次变量a的迭代运算,得到经64次迭代的变量a的数据;

354、其中,a,b,c分别输出的变量a,b,c的数据与变量b,c,d的初始数据分别相加后,保存在b’,c’,d’中;e,f,g,h分别输出的变量e,f,g,h的数据与变量e,f,g,h的初始数据相加后,保存在e’,f’,g’,h’中;或者,a和b’、b和c’、c’和d’之间直接连接,分别将经63次迭代的变量a,,b,c的数据打一拍得到经64次迭代的变量a,b,c的数据;e和e’、f和f’、g和g’及h和h’之间直接连接,分别将经64次迭代的变量e,f,g,h的数据直接传递到输出侧。

355、图17中的第65级压缩电路,其输入侧寄存器a,b,c,j,e,f,g,h分别输出j62,e64,f64g64,h64;变量a迭代的运算电路可以采用第四迭代电路中变量的运算电路,可参见图12。图示的示例在第65级提高将变量b,c,d,e,f,g,h的迭代值加上各自的初始数据,输入侧寄存器a,b,c输出变量a,b,c的按位取反值,通过将在加法器中分别加上常数和可以得到变量b,c,d的数据并保存在输出侧寄存器b,c,d中。而对于e,f,g,h输出的变量e,f,g,h的值,则分别加上h4,h5,h6,h7后得到变量e,f,g,h的数据e+h4,f+h5,g+h6,h+h7并保存在输出侧寄存器e’,f’,g’,h’中。h0至h7分别是变量a,b,c,d,e,f,g,h的初始值。

356、图17的示例是提前将变量的迭代结果与变量的初始数据相加,但在其他示例中,也可以不提高将变量的迭代结果与变量的初始数据相加,此时,可以将a和b’、b和c’、c’和d’之间直接连接,分别将经63次迭代的变量a,,b,c的数据打一拍得到经64次迭代的变量a,b,c的数据;e和e’、f和f’、g和g’及h和h’之间直接连接,分别将经64次迭代的变量e,f,g,h的数据直接传递到输出侧。

357、图17的示例在第65级的输出侧寄存器之后,即得到输入消息块压缩完成后的杂凑值,在应用时,如果需要使用的是变量的按位取反值,可通过设置相应的非门来实现。

358、图16和图17示出了基于图12所示的第三迭代电路和第四迭代电路实现第n级压缩电路(n=n1,n1+1,n1+2,…,n2,n2>n1≥3)时,最后3级压缩电路的一种实现方式。如果是图于图8所述的第一迭代电路,或图9b所示的第一迭代电路和第二迭代电路实现第n级压缩电路,最后3级压缩电路中变量迭代的运算电路则可以采用第一迭代电路和/或第二迭代电路中相应变量的运算电路。此外,也可以提前相变量的迭代值与变量的初始数据相加,这样第65级压缩电路输出的即为对消息块压缩得到的杂凑值。

359、本公开一实施例还提供了一种芯片,包括消息扩展电路和数据压缩电路,所述数据压缩电路采用本公开任一实施例所述的安全散列算法sha-256的数据压缩电路。

360、在以上一个或多个示例性实施例中,所描述的功能可以硬件、软件、固件或其任一组合来实施。如果以软件实施,那么功能可作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质传输,且由基于硬件的处理单元执行。计算机可读介质可包含对应于例如数据存储介质等有形介质的计算机可读存储介质,或包含促进计算机程序例如根据通信协议从一处传送到另一处的任何介质的通信介质。以此方式,计算机可读介质通常可对应于非暂时性的有形计算机可读存储介质或例如信号或载波等通信介质。数据存储介质可为可由一个或多个计算机或者一个或多个处理器存取以检索用于实施本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可包含计算机可读介质。

361、在一些方面中,本文描述的功能性可提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或并入在组合式编解码器中。并且,可将所述技术完全实施于一个或多个电路或逻辑元件中。

362、本公开实施例的技术方案可在广泛多种装置或设备中实施,包含无线手机、集成电路(ic)或一组ic(例如,芯片组)。本公开实施例中描各种组件、模块或单元以强调经配置以执行所描述的技术的装置的功能方面,但不一定需要通过不同硬件单元来实现。而是,如上所述,各种单元可在编解码器硬件单元中组合或由互操作硬件单元(包含如上所述的一个或多个处理器)的集合结合合适软件和/或固件来提供。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1