Sha运算方法及sha运算装置的制作方法

文档序号:2403726阅读:294来源:国知局
专利名称:Sha运算方法及sha运算装置的制作方法
技术领域
本发明涉及一种根据数据运算散列值的SHA(Secure HashAlgorithm,安全散列算法)运算方法及SHA运算装置。

背景技术
近年来具有将安全算法硬件化而使安全处理快速化的倾向。因此,在散列中,散列算法利用数字运算电路构成的情况居多。SHA用于认证和数字署名、数据的篡改检测等,规定有SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。
在这种情况下,在以往的SHA运算的快速运算电路中,通过流水线化快速进行散列运算(例如参照专利文献1)。
专利文献1 日本特开2002-287635号公报 但是,在上述的现有例中,虽然可以使散列运算快速化,但是不能降低在散列运算中使用的硬件电路自身的功耗。因此,期望降低在SHA运算中使用的硬件电路的功耗。


发明内容
本发明为了解决前述问题,提供一种散列运算方法,其包括执行如下处理的步骤将在基于SHA-1算法的散列运算中使用的第1至第5变量分别存储在第1至第5存储部中;以及将所存储的第1至第5变量分别重读为第1至第5中间值。另外,该散列运算方法包括执行如下处理的步骤使用重读的第1至第5中间值运算基于SHA-1算法的临时变量;以及从第1至第5存储部中选择要存储所运算的临时变量的存储部。并且,该散列运算方法包括执行如下处理的步骤按照基于时钟周期的定时,依次将所运算的临时变量保持为所选择的存储部的变量,并对被保持为其他一个存储部的变量的值进行变换而将其保持为该其他一个存储部的变量,且将被保持为剩余存储部的变量的值分别直接保持为该剩余各个存储部的变量;以及使用所保持的各个存储部的变量运算散列值。
本发明的散列运算方法不移动多个存储部之间的值,即可运算散列值。
并且,本发明的散列运算电路包括重读部,其将在基于SHA-1算法的散列运算中使用、且存储在第1至第5存储部中的第1至第5变量分别重读为第1至第5中间值;运算部,其使用重读的第1至第5中间值,运算基于SHA-1算法的临时变量;以及选择部,其从第1至第5存储部中选择要存储所运算的临时变量的存储部。另外,该散列电路包括第1至第5存储部,其按照基于时钟周期的定时,依次将根据选择所述运算出的临时变量保持为一个所述变量,并对被保持为其他一个变量的值进行变换而将其保持为该其他一个变量,且将被保持为剩余变量的值分别直接保持为该剩余各个变量。并且,该散列电路包括散列保持部,该散列保持部使用所保持的第1至第5存储部的变量运算散列值。
根据本发明,可以降低在SHA运算中使用的包括存储部在内的硬件电路的功耗。



图1是表示一般的SHA-1的步骤处理的说明图。
图2是表示一般的SHA-1的SHA运算电路的结构示例的图。
图3是表示本发明的实施方式1涉及的SHA-1的步骤处理的说明图。
图4是表示本发明的实施方式1涉及的SHA-1的SHA运算电路的结构示例的图。
图5是表示图4中的第1存储部的结构示例的电路图。
图6是表示图3中的SHA-1的步骤处理的变形的说明图。
图7是表示一般的SHA-2的步骤处理的说明图。
图8是表示本发明的实施方式2涉及的SHA-2的步骤处理的说明图。
图9是表示本发明的实施方式2涉及的SHA-2的SHA运算电路的结构示例的图。
符号说明 10 SHA运算电路;11散列保持部;121A~121E存储部;131运算部;14第1常数设定部;15第2常数设定部;16选择部;17重读部。

具体实施例方式 (实施方式1) 在实施方式1中说明SHA-1的散列运算处理。另外,以下对相同部分赋予相同的符号(包括用词),并适当省略重复说明。
首先,说明一般的SHA-1的散列运算处理。
首先,按照512bit分割比特长度小于264bit的消息(散列运算的对象数据)。并且,把分割后的消息分别设为块M(1)、M(2)、...、M(N)(N为整数)。
然后,按照M(1)、M(2)、...、M(N)的顺序,重复后面的步骤1和2的处理。
在步骤1,按照32bit分割块M(i)(i=1~N),并设为16个字W0、W1、...、W15(Wtt=0~15)。然后,在步骤2,使用32bit长度的变量a、b、c、d,求出块M(i)(i=1~N)的中间散列值H0(i)~H4(i)(i=1~N)。
在此,参照图1说明步骤2的处理。
图1是表示一般的SHA-1的步骤处理的说明图。
根据图1(a),首先在Initialize(初始化)步骤,a~e被赋予了预先规定的散列初始值H0(0)~H4(0)(i=1)。
然后,在t=0~79的各个步骤(按照基于时钟周期的定时进行处理),按照式1赋予a~e。
[式1] e=d d=c c=ROTL30(b) b=a a=TEMP 另外,式1中的ROTL30(b)表示将b向左变换30比特。并且,TEMP表示按照式2赋予的临时变量。
[式2] TEMP=ROTL5(a)+ft(b,c,d)+e+Kt+Wt 另外,式2中的ROTL5(a)表示将a向左变换5比特,ft(b,c,d)表示具有3个32比特长度的自变量的算式。Kt表示固有值。Wt(t=16~79)根据Wt(t=0~15)依次算出。
并且,中间散列值H0(i)~H4(i)如图1(b)中的compute(计算)步骤所示,按照式3赋予(其中,i=1~N)。
[式3] H0(i)=H0(i-1)+a H1(i)=H1(i-1)+b H2(i)=H2(i-1)+c H3(i)=H3(i-1)+d H4(i)=H4(i-1)+e 这样,最终得到式4的消息要略。另外,||表示比特连接。
[式4] H0(N)||H1(N)||H2(N)||H3(N)||H4(N) 此外,关于公知的SHA-1的散列运算方法,规定为由美国国立标准技术研究所(National Institute of Standards and Technology)发布的FIPSPUB(Federal Information Processing Standards Publication)180-2的“SECUREHASH STANDARD”。
下面,参照图2说明进行上述一般的SHA-1的散列运算处理的SHA运算电路的结构。
图2是表示一般的SHA-1的SHA运算电路的结构示例的图。
在图2中,SHA运算电路100包括散列保持部11和5个(第1至第5)存储部12A、12B、12C、12D、12E。另外,SHA运算电路100包括运算部13、第1常数设定部(Wt设定部)14和第2常数设定部(Kt设定部)15。
散列保持部11保持分别对应于5个存储部12A~12E的散列值H0、H1、H2、H3、H4。具体地讲,散列保持部11预先保持散列初始值H0(0)~H4(0)。另外,散列保持部11保持散列值H0(i)~H4(i)。
各个存储部12A~12E例如利用触发器构成,存储图1(a)中的a~e(参照式1)。
运算部13取出存储在各个存储部12A~12E中的a~e,根据这些值运算式2的TEMP。
第1常数设定部14设定Wt,第2常数设定部15设定Kt。
以上说明了SHA-1的一般步骤处理和SHA运算电路,以下说明本发明的实施方式1的SHA-1的步骤处理和SHA运算电路。
图3是表示本发明的实施方式1涉及的SHA-1的步骤处理的说明图。
图3所示的实施方式1的步骤处理的特征在于,使用后述的32比特的中间值(1次中间值)v~z求出TEMP。由此,与图1所示的步骤处理相比,可以减少a~e的值的变化次数。因此,以下主要说明与图1所示的步骤处理的不同之处。
根据图3(a),在Initialize(初始化)步骤,a~e被赋予了预先规定的散列初始值H0(0)~H4(0)(i=1)。
然后,在t=0~79的各个步骤,a~e中的任一个保持TEMP,其他一个保持ROTL30的运算值。并且,剩余3个直接保持前一个步骤的值。
例如,在t=1时,d保持TEMP,a保持ROTL30(a)的运算值。并且,各个b、c、e直接保持前一个步骤t=0的值(b、c、e)。这样,图3(a)中的a~e与图1(a)所示的步骤处理相比,值的变化次数减少。
图3(a)中的TEMP使用第1至第5中间值v~z,按照式5赋予。
[式5] TEMP=ROTL5(v)+ft(w,x,y)+z+Kt+Wt 式5中的ROTL5(v)表示将v向左变换5比特。其中,中间值v~z是重读a~e中任一个的值后的值。
例如,在t=0时,初始化步骤的a~e被重读,式5中的v~z成为v=a、w=b、x=c、y=d、z=e。并且,例如,在t=1时,t=0步骤的a~e被重读,式5中的v~z成为v=e、w=a、x=b、y=c、z=d(参照图3(a))。
并且,在t=0~79的步骤之后,在图3(b)的计算步骤中,得到与图1(b)等效的中间散列值H0(i)~H4(i)。图3(b)利用与图1(b)所示的式3相同的运算式表示。
这在例如t=0、5、...、70、75时,v=a、w=b、x=c、y=d、z=e(参照图3(a)),对中间值v~z的重读相同。即,对中间值v~z的重读每5个步骤循环一次,由于80步骤(t=0~79)为5的倍数,所以不需要计算步骤中的重读。
如上所述,根据图3(a)的步骤处理,a~e中的任一个保持TEMP,其他一个保持ROTL30的运算值,但是其中3个直接保持前一个步骤的值。因此,与图1(a)的情况相比,所有步骤中的a~e的值的变化次数减少。
下面,参照图4说明进行上述图3所示的SHA-1的散列运算处理的SHA运算电路(SHA运算装置)的结构。
图4是表示本发明的实施方式1涉及的SHA运算电路10的结构示例的方框图。
在图4中,SHA运算电路10包括散列保持部11、第1至第5存储部121A~121E、运算部131、第1常数设定部14和第2常数设定部15。另外,SHA运算电路10还包括选择部16和重读部17。此外,散列保持部11、第1常数设定部14和第2常数设定部15的结构与图2所示的情况相同。
选择部16按照图3(a)的步骤选择一个存储TEMP的存储部,同时,选择部16选择一个存储ROTL30的运算值的存储部。在进行该选择时,选择部16生成预定的选择信号ENa~ENe,向要选择的存储部输出该选择信号。例如,在图3(a)中的t=0时,选择部16向存储部121E输出选择信号ENe,存储部121E存储TEMP。另一方面,选择部16向存储部121B输出选择信号ENb,存储部121B存储ROTL30运算结果、即ROTL30(b)。
重读部17例如利用多个5to1选择器构成,按照图3(a)的步骤,将从各个存储部121A~121E获取的a~e重读为中间值v~z。例如,在图3(a)中的t=0时,重读部17将从各个存储部121A~121E获取的a~e直接重读为中间值v~z。
运算部131按照图3(a)的步骤,根据从重读部17获取的中间值v~z、由第1常数设定部14设定的Wt、以及由第2常数设定部15设定的Kt,运算TEMP。此时的运算式为式5。
各个存储部121A~121E例如利用触发器构成,根据来自选择部16的选择信号存储预定的值(a~e、TEMP、ROTL30)。并且,各个存储部121A~121E在t=79的步骤之后,向散列保持部11输出a~e。接收到该输出,散列保持部11执行图3(b)的计算步骤,根据所输出的a~e和前次的散列值H0(i-1)~H4(i-1)获得中间散列值H0(i)~H4(i)。
例如,在t=1时,存储部121D保持d=TEMP,存储部121A保持a=ROTL30(a)的运算值。并且,3个存储部121B、121C、121E直接保持前一个步骤的值(b、c、e)。由此,图4中的各个存储部121A~121E与使值在各个存储部之间移动(转换动作)的图2中的各个存储部12A~12E不同,不进行各个存储部121A~121E之间的值的移动。因此,各个存储部121A~121E的硬件的驱动率减少,SHA运算电路10的功耗降低。
在此,参照图5说明第1存储部121A的结构示例。另外,其他各个存储部121B~121E的结构与存储部121A相同。
在图5中,第1存储部121A构成为包括选择器121、触发器122(32比特的触发器)和ROTL运算部123。
选择器121在选择信号ENa指示了保持TEMP时(例如图3(a)中的t=4、9、...、79时),将来自运算部131的TEMP输出给触发器122。在选择信号ENa指示了ROTL运算时(例如图3(a)中的t=1、6、...、71、76时),将在ROTL运算部123运算的ROTL30(a)输出给触发器122。另一方面,在选择信号ENa指示了保持前次值时(例如图3(a)中的t=0、2、3、...、75、77、78时),选择器121直接保持触发器122的输出。
如上所述,图4中的SHA运算电路10包括将预定的a~e重读为中间值v~z的重读部17;使用v~z运算TEMP的运算部131;保持TEMP的存储部;和选择保持ROTL运算值的存储部的选择部16。因此,第1~第5存储部121A~121E中的任一个保持TEMP,其他一个保持ROTL30的运算值,但是其中3个直接保持前一个步骤的值。因此,与图2的情况不同,不需要各个存储部之间的值的移动(转换动作)。因此,各个存储部121A~121E的硬件的驱动率减少,SHA运算电路10的功耗降低。
尤其在手机和便携式设备、高速公路交通系统(Intelligent TransportSystems)等中,由于包括许多电池驱动的电路,所以对它们适用SHA运算电路10(图3所示的SHA运算方法)比较有益。
另外,在各个存储部121A~121E中,例如可以应用门控时钟(gatedclock),停止向直接持续保持前次步骤的值的存储部提供时钟。该情况时,功耗进一步降低。
[SHA-1的步骤处理的变形] 下面,说明SHA-1的步骤处理的变形。
图6是表示实施方式1的SHA-1的步骤处理的变形的说明图。
在图6中,与图3所示的步骤处理的情况不同,其特征在于,还导入32比特的中间值(二次中间值)x temp、y temp、z temp,求出TEMP。由此,在所有步骤中,所有a~e不保持ROTL30的运算值,可以进一步减少a~e的值的变化次数。因此,以下主要说明与图3所示的步骤处理的不同之处。
根据图6(a),在初始化步骤中,两个a、b与图3(a)的情况相同,分别被赋予了预先规定的散列初始值H0(0)、H1(0)(i=1)。对此,剩余3个c~e与图3(a)的情况不同,被赋予ROTR30(H2(0))~ROTR30(H4(0))(i=1)。其中,ROTR30表示向右变换30比特。
然后,在t=0~79的各个步骤,a~e中任一个保持TEMP,剩余4个直接保持前一个步骤的值。
例如,在t=1时,d保持TEMP,剩余的a~c、e直接保持t=0时的值(a~c、e)。这样,图6(a)中的a~e与图3所示的步骤处理相比,值的变化次数进一步减少。
该情况时,图6(a)中的TEMP使用中间值v、w和x temp~z temp,按照式6被赋予。其中,中间值v、w、x temp~z temp是重读a~e中任一个值后的值。
[式6] TEMP=ROTR5(v)+ft(w,x,y)+z+Kt+Wt x=ROTR30(x temp) y=ROTR30(y temp) z=ROTR30(z temp) 例如,在t=0时,初始化步骤的a~e被重读,式6中的v、w、x temp、y tmep、z temp成为v=a、w=b、x temp=c、y tmep=d、z temp=e。并且,例如在t=1时,t=0的步骤的a~e被重读,成为v=e、w=a、x temp=b、y tmep=c、z temp=d(参照图6(a))。
并且,在图6(b)的计算步骤中,两个中间散列值H0(i)、H1(i)按照与图3(b)相同的运算式被赋予。对此,剩余3个中间散列值H2(i)~H4(i)与图3(b)的情况不同,被加上了ROTL30(c)~ROTL30(e)。由此,图6(b)的中间散列值H0(i)~H4(i)具有与图3(b)的中间散列值H0(i)~H4(i)等效的值。
另外,剩余3个中间散列值H2(i)~H4(i)被加上ROTL30的运算值的理由如下所述。即,在图6(a)中的t=77~79时(粗框部分),尽管原本需要ROTL30运算,但是不进行ROTL30运算,所以在计算步骤中一并进行ROTL30运算。
并且,在初始化步骤中,与图3(a)的情况不同,3个c~e被赋予ROTR30(H2(i-1))~ROTR30(H4(i-1)),其理由如下所述。即,在图6(a)中的t=0~2时(粗框部分),尽管原本不需要ROTR30运算,但是进行ROTL30运算。这是因为在将向右变换30比特后的值再向左变换30比特时又恢复为原始值。
如上所述,根据图6(a)的步骤处理,通过导入新的3个中间值xtemp~z temp并求出TEMP,a~e中的4个将直接保持前一个步骤的值。因此,与a~e中的1个保持ROTL30的运算值的图3(a)所示情况相比,可以进一步减少所有步骤中的a~e的值的变化次数。
下面,参照图4说明进行上述图6所示的SHA-1的散列运算处理的SHA运算电路的结构。
该情况时,重读部17按照图6(a)的步骤,从各个存储部121A~121E获取a~e中任一个,重读为x temp、y temp、z temp。另外,重读部17按照图6(a)的步骤处理,从各个存储部121A~121E获取a~e中任一个,重读为各个中间值v、w。
例如,在t=0时,重读部17从各个存储部121C~121E获取初始化步骤的c~e,将它们重读为x temp~z temp。由此,x temp=c,y temp=d,z temp=e。另外,重读部17从各个存储部121A、121B获取初始化步骤的a、b,将它们重读为各个中间值v、w。
并且,重读部17按照图6(a)的步骤,使用x temp~z temp进行ROTL30运算。该运算式如式6所示。
运算部131按照图6(a)的步骤,根据从重读部17获取的中间值v~z、由第1常数设定部14设定的Wt、和由第2常数设定部15设定的Kt,运算TEMP。此时的运算式如式6所示。
各个存储部121A~121E根据来自选择部16的选择信号,存储预定的值(a~e、TEMP)。
例如,在图6(a)中的t=1时,存储部121D保持d=TEMP,剩余4个存储部121A~121C、121E直接保持前一个步骤的值(a~c、e)。由此,各个存储部121A~121E与图3(a)的情况不同,不保持ROTL30的运算值(不需要图5中ROTL运算部123)。因此,各个存储部121A~121E的硬件的驱动率进一步减少,SHA运算电路10的功耗进一步降低。
而且,该情况时,不会扩大SHA运算电路10的规模,可以期望功耗进一步降低,所以是非常有用的。
在此,在0.15μm的半导体工艺中,进行了图6所示情况的电力验证仿真,以下进行说明。另外,在该仿真中适用了上述门控时钟。
例如,在第1条件下(电源电压1.65v、周围温度-40℃),在SHA运算电路100中(参照图1、图2),功耗达到7.1mW,相对于此,在散列运算电路10中(参照图4、图6)为5.5mW。由此得知获得约23%的削减效果。
另外,在第2条件下(电源电压1.35v、周围温度125℃),在SHA运算电路100中(参照图1、图2),功耗达到5.3mW,相对于此,在散列运算电路10中(参照图4、图6)为3.6mW。由此得知获得约32%的削减效果。
(实施方式2) 在实施方式2中,适当简化说明SHA-2(SHA-224、256、384、512)的散列运算处理。
首先,说明一般的SHA-2的散列运算处理。
最先,分割消息(散列运算的对象数据)。例如,SHA-224、256按照512bit分割,SHA-384、512按照1024bit分割。
并且,把分割后的消息分别设为块M(1)、M(2)、...、M(N)(N为整数)。
然后,按照M(1)、M(2)、...、M(N)的顺序,重复后面的步骤1和2的处理。
在步骤1,按照各个预定的比特长度分割块M(i)(i=1~N),并设为16个字W0、W1、...、W15(Wtt=0~15)。例如,SHA-224、256按照32bit分割,SHA-384、512按照64bit分割。
然后,在步骤2,使用预定比特长度的变量a、b、c、d、e、f、g、h,求出块M(i)(i=1~N)的中间散列值H0(i)~H7(i)(i=1~N)。a~h的比特长度分别如下,SHA-224、256为32比特长度、SHA-384、512为64比特长度。
在此,参照图7说明步骤2的处理。
图7是表示一般的SHA-2的步骤处理的说明图。
根据图7(a),首先在初始化步骤,a~h被赋予了预先规定的散列初始值H0(0)~H7(0)(i=1)。
然后,在t=0~79的各个步骤中,按照式7赋予a~h。另外,图7(a)的步骤记载了t=0~79的80步骤的情况,例如,SHA-224、256为t=0~63的64步骤。
[式7] h=g g=f f=e e=T1+d d=c c=b b=a a=T1+T2 另外,式7中的T1、T2按照式8赋予。关于T3,为了方便而设为T3=T1+d。
[式8] T1=∑1(e)+Ch(e,f,g)+h+Kt+Wt T2=∑0(a)+Maj(a,b,c) 另外,式8中的∑0、∑1、Ch、Maj、Kt、Wt基于上述“SECURE HASHSTANDARD”的规定赋予。
并且,中间散列值H0(i)~H7(i)如图7(b)中的计算步骤所示,按照式9赋予(其中,i=1~N)。
[式9] H0(i)=H0(i-1)+a H1(i)=H1(i-1)+b H2(i)=H2(i-1)+c H3(i)=H3(i-1)+d H4(i)=H4(i-1)+e H5(i)=H5(i-1)+f H6(i)=H6(i-1)+g H7(i)=H7(i-1)+h 这样,最终获得式10的消息要略。另外,||表示比特连接。
[式10] H0(N)||H1(N)||H2(N)||H3(N)||H4(N)||H5(N)||H6(N)||H7(N) 此外,关于公知的SHA-2的散列运算方法,规定为上述FIPSPUB(Federal Information Processing Standards Publication)180-2(+ChangeNotice to include SHA-224)的“SECURE HASH STANDARD”。
以上说明了SHA-2的一般的步骤处理,以下说明本发明的实施方式2的SHA-2的步骤处理和SHA运算电路。
图8是表示本发明的实施方式2涉及的SHA-2的步骤处理的说明图。在此,假定为SHA-384、512,所以说明t=0~79的80步骤,但是例如SHA-224、256为t=0~63的64步骤。
图8所示的实施方式2的步骤处理的特征在于,使用后述的中间值(3次中间值)w0~z0、w1~z1求出T1、T2、T3。由此,与图7所示的步骤处理相比,可以减少a~h的值的变化次数。因此,以下主要说明与图7所示的步骤处理的不同之处。
根据图8(a),在初始化步骤,a~h被赋予了预先规定的散列初始值H0(0)~H7(0)(i=1)。
然后,在t=0~79的各个步骤,a~h中的任一个保持T1+T2,其他一个保持T3。并且,剩余6个直接保持前一个步骤的值。
例如,在t=1时,c保持T1+T2,g保持T3。并且,6个a、b、d、e、f、h分别直接保持前一个步骤t=0的值(a、b、d、e、f、h)。这样,图8(a)中的a~h与图7所示的步骤处理相比,值的变化次数减少。
图8(a)中的T1~T3使用第1~第8中间值w0~z0、w1~z1,按照式11赋予。
[式11] T1=∑1(W1)+Ch(w1,x1,y1)+z1+Kt+Wt T2=∑0(W0)+Maj(w0,x0,y0) T3=T1+z0 其中,中间值w0~z0是a~d中任一个的值被重读后的值,中间值w1~z1是e~h中任一个的值被重读后的值。例如,在t=0时,初始化步骤的a~h被重读,式11中的w0~z0、w1~z1成为w0=a、x0=b、y0=c、z0=d、w1=e、x1=f、y1=g、z1=h。并且,例如,在t=1时,t=0步骤的a~h被重读,式11中的w0~z0、w1~z1成为w0=d、x0=a、y0=b、z0=c、w1=h、x1=e、y1=f、z1=g。
并且,在t=0~79的步骤之后,在图8(b)的计算步骤中,得到与图7(b)等效的中间散列值H0(i)~H7(i)。图8(b)利用与图7(b)所示的式9相同的运算式表示。
这在例如t=0、4、...、76时,w0=a、x0=b、y0=c、z0=d、w1=e、x1=f、y1=g、z1=h(参照图8(a)),对中间值w0~z0、w1~z1的重读相同。即,对中间值w0~z0、w1~z1的重读每4个步骤循环一次,由于80步骤(t=0~79)为4的倍数,所以不需要计算步骤的重读。
另外,这对于SHA-224、256时的t=0~63的64步骤也相同。因为64步骤也以4的倍数的步骤结束。并且,最终获得式10的消息要略。
如上所述,根据图8(a)的步骤处理,使用中间值w0~z0、w1~z1求出T1、T2、T3,由此a~h分别针对每4个步骤保持T1+T2或T3。并且,在除此以外的步骤中,a~h直接保持前次的值。因此,与图7(a)的情况相比,所有步骤中的a~h的值的变化次数减少。
下面,参照图9说明进行上述图8所示的SHA-2的散列运算处理的SHA运算电路(SHA运算装置)的结构。
图9是表示本发明的实施方式2涉及的SHA运算电路20的结构示例的方框图。
在图9中,SHA运算电路20包括散列保持部21、第1至第8存储部22A~22H、运算部23、第1常数设定部(Wt设定部)24和第2常数设定部(Kt设定部)25。另外,SHA运算电路20还包括选择部26和两个重读部27A、27B。此外,两个重读部27A、27B也可以构成为一个。
选择部26按照图8(a)的步骤选择存储T1+T2或T3的各个存储部。在进行该选择时,选择部26生成预定的选择信号ENa~ENh,向要选择的存储部输出该选择信号。另外,满足关系ENa=ENe、ENb=ENf、ENc=ENg、ENd=ENh。
例如,在图8(a)中的t=0时,选择部26向存储部22D输出选择信号ENd,使存储部22D保持T1+T2。另外,选择部26向存储部22H输出选择信号ENh,使存储部22H保持T3。
各个重读部27A、27B例如利用多个4to1选择器构成,按照图8(a)的步骤,将从各个存储部22A~22H获取的a~h重读为中间值w0~z0、w1~z1。
例如,在图8(a)中的t=0时,重读部27A将从各个存储部22A~22D获取的a~d直接重读为w0~z0。并且,重读部27B将从各个存储部22E~22H获取的e~h直接重读为w1~z1。
运算部23按照图8(a)的步骤,根据从重读部27A获取的中间值w0~z0、从重读部27B获取的中间值w2~z2、由第1常数设定部24设定的Wt、以及由第2常数设定部25设定的Kt,运算T1+T2和T3。此时的运算式如式11所示。
各个存储部22A~22H(各个存储部22A~22D属于第1组,各个存储部22E~22H属于第2组)例如利用触发器构成,根据来自选择部26的选择信号,存储预定的值(a~h、T1+T2、T3)。并且,各个存储部22A~22H在t=79(或t=63)的步骤之后,向散列保持部21输出a~h。接收到该输出,散列保持部21执行图8(b)的计算步骤,根据所输出的a~h和前次的散列值H0(i-1)~H7(i-1)获得中间散列值H0(i)~H7(i)。
例如,在t=1时,存储部22C保持c=T1+T2,存储部22G保持g=T3。并且,剩余的存储部22A、22B、22D~22F、22H直接保持前一个步骤t=0的值(a、b、d~f、h)。由此,图8(a)所示的步骤处理时的各个存储部22A~22H与使值在各个存储部之间移动(转换动作)的图7(a)的情况不同,不进行各个存储部22A~22H之间的值的移动。
并且,各个存储部22A~22H针对每4个步骤保持T1+T2或T3。
因此,各个存储部22A~22H的硬件的驱动率减少,SHA运算电路20的功耗降低。
另外,本发明不限于实施方式1、2,可以进行各种变形。例如,说明了存储部利用触发器构成的情况,但也可以使用RAM(Random AccessMemory)等存储器构成。
并且,在实施方式2中说明了将存储部划分为两组的情况,但也可以不分组而进行适用。
权利要求
1.一种SHA运算方法,该SHA运算方法包括执行如下处理的步骤
将在基于SHA-1算法的散列运算中使用的第1至第5变量分别存储在第1至第5存储部中;
将所述存储的第1至第5变量分别重读为第1至第5中间值;
使用所述重读的第1至第5中间值,运算基于SHA-1算法的临时变量;
从所述第1至第5存储部中选择要存储所述运算的临时变量的存储部;
按照基于时钟周期的定时,依次将所述运算的临时变量保持为所述选择的存储部的变量,并对被保持为其他一个存储部的变量的值进行变换而将其保持为该其他一个存储部的变量,且将被保持为剩余存储部的变量的值分别直接保持为该剩余各个存储部的变量;以及
使用所述保持的各个存储部的变量运算散列值。
2.根据权利要求1所述的SHA运算方法,其中,
在对对应的变量进行变换而重读了所述重读的第1至第5中间值中的一部分中间值的情况下,
在所述运算的步骤中,使用进行所述变换而重读的中间值运算所述临时变量,
在所述保持的步骤中,按照基于时钟周期的定时,依次将使用进行所述变换而重读的中间值运算的临时变量保持为所述选择的存储部的变量,并且不变换所述保持为其他一个存储部的变量的值,而将被保持为剩余所有存储部的变量的值分别直接保持为该剩余各个存储部的变量。
3.一种SHA运算方法,该SHA运算方法包括执行如下处理的步骤
将在基于SHA-2算法的散列运算中使用的第1至第8变量分别存储在第1至第8存储部中;
将所述存储的第1至第8变量分别重读为第1至第8中间值;
使用所述重读的第1至第8中间值,运算基于SHA-2算法的第1和第2临时变量;
从所述第1至第8存储部中选择要存储所述运算的第1和第2临时变量的存储部;
按照基于时钟周期的定时,依次将第1和第2临时变量分别保持为所述选择的存储部的变量,而且将被保持为剩余存储部的变量的值分别直接保持为该剩余各个存储部的变量;以及
使用所述保持的各个存储部的变量运算散列值。
4.根据权利要求3所述的SHA运算方法,其中,所述SHA-2算法是SHA-224、SHA-256、SHA-384或SHA-512算法。
5.一种SHA运算电路,该SHA运算电路包括
重读部,其将在基于SHA-1算法的散列运算中使用、且存储在第1至第5存储部中的第1至第5变量分别重读为第1至第5中间值;
运算部,其使用所述重读的第1至第5中间值,运算基于SHA-1算法的临时变量;
选择部,其从所述第1至第5存储部中选择要存储所述运算的临时变量的存储部;
所述第1至第5存储部,其按照基于时钟周期的定时,依次将根据所述选择进行了所述运算的临时变量保持为一个所述变量,并对被保持为其他一个变量的值进行变换而将其保持为该其他一个变量,且将被保持为剩余变量的值分别直接保持为该剩余的各个变量;以及
散列保持部,其使用所述保持的第1至第5存储部的变量运算散列值而对其进行保持。
6.根据权利要求5所述的SHA运算电路,其中,
在所述重读部对所述第1至第5变量中的一部分变量进行变换而重读了所述中间值的情况下,
所述运算部使用进行所述变换而重读的中间值运算所述临时变量,
所述第1至第5存储部中的所述选择的存储部,按照基于所述时钟周期的定时,依次将使用进行所述变换而重读的中间值运算的临时变量保持为该变量,剩余存储部均不进行变换,而将被保持为该变量的值分别直接保持为各个变量。
7.一种SHA运算电路,该SHA运算电路包括
重读部,其将在基于SHA-2算法的散列运算中使用、且存储在第1至第8存储部中的第1至第8变量分别重读为第1至第8中间值;
运算部,其使用所述重读的第1至第8中间值,运算基于SHA-2算法的第1和第2临时变量;
选择部,其从所述第1至第8存储部中选择要分别存储所述运算的第1和第2临时变量的存储部;
所述第1至第8存储部,其按照基于时钟周期的定时,依次将根据所述选择进行了所述运算的第1和第2临时变量分别保持为对应的所述变量,且将被保持为剩余存储部的变量的值分别直接保持为该剩余各个存储部的变量;以及
散列保持部,其使用所述保持的第1至第8存储部的变量运算散列值而对其进行保持。
8.根据权利要求7所述的SHA运算电路,其中,所述SHA-2算法是SHA-224、SHA-256、SHA-384或SHA-512算法。
全文摘要
本发明获得一种降低功耗的SHA运算方法及SHA运算装置。在初始化步骤中,a=H0(i-1),b=H1(i-1),c=ROTR30(H2(i-1)),d=ROTR30(H3(i-1)),e=ROTR30(H4(i-1))。然后,在t=0~79的各个步骤中,a~e中任一个保持TEMP,剩余4个直接保持前一个步骤中的值。并且,在计算步骤中,H0(i)=H0(i-1)+a,H1(i)=H1(i-1)+b,H2(i)=H2(i-1)+ROTL30(c),H3(i)=H3(i-1)+ROTL30(d),H4(i)=H3(i-1)+ROTL30(e)。
文档编号G09C1/00GK101178861SQ20071016252
公开日2008年5月14日 申请日期2007年10月16日 优先权日2006年11月8日
发明者佐藤洋司 申请人:冲电气工业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1