CN105009186A - 哈希值生成装置 - Google Patents
哈希值生成装置 Download PDFInfo
- Publication number
- CN105009186A CN105009186A CN201480012039.3A CN201480012039A CN105009186A CN 105009186 A CN105009186 A CN 105009186A CN 201480012039 A CN201480012039 A CN 201480012039A CN 105009186 A CN105009186 A CN 105009186A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- cryptographic hash
- data
- generating apparatus
- axis direction
- 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
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
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- 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/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种哈希值生成装置,其用于基于KECCAK算法生成哈希值,所述哈希值生成装置包括用于执行所述KECCAK算法的循环处理中包括的五个步骤θ、ρ、π、χ和ι的处理的θ处理单元、ρ处理单元、π处理单元,χ处理单元以及ι处理单元。所述π处理单元以plane为单位接收数据的输入并且以sheet为单位输出数据。
Description
技术领域
本发明涉及用于生成哈希(hash)值的技术。
背景技术
使用通过利用加密哈希算法计算出的哈希值来检查数据改动。已经证实作为加密哈希算法(加密哈希)的安全哈希算法1(SHA-1)不能确保安全性。已经指出SHA-2家族(SHA-224、SHA-256、SHA-384和SHA-512)可能缺乏安全性。因此,美国国家标准与技术研究院(NationalInstitute of Standards and Technology,NIST)公开募集一种新的算法以建立下一代加密哈希算法(SHA-3)。然后,KECCAK算法(“KECCAK参考”,版本3.0,2011年1月14日,(http://keccak.noekeon.org/Keccak-reference-3.0.pdf))于2012年12月被指定为安全哈希算法3(SHA-3算法)。
SHA-3根据任意长度的输入消息(数据)输出固定长度的加密哈希值。在KECCAK算法中,使用置换函数(permutation function),并且在该置换函数中,五个顺序步骤(θ、ρ、π、χ和ι)的循环处理被重复24次。对具有1600位长度的、被称为“state”(“态”)数据段的数据执行循环处理。
对于循环处理的五个步骤中的θ处理和π处理,先前处理的大量结果必须一次存储在存储器中。因此,在一次循环处理内,先前处理的大量结果必须一度存储在存储器中两次,从而难以加速。
发明内容
本发明旨在一种提高用于生成哈希值的吞吐量的技术。
根据本发明的一方面,提供了一种哈希值生成装置,其基于KECCAK算法生成哈希值,所述哈希值生成装置包括用于执行KECCAK算法的循环处理中包括的五个步骤θ、ρ、π、χ和ι的处理的θ处理单元、ρ处理单元、π处理单元、χ处理单元以及ι处理单元,其中,π处理单元以plane(面)为单位接收数据的输入并且以sheet(片)为单位输出数据。
通过以下参照附图对示例性实施例的描述,本发明的其他特征将变得清楚。
附图说明
[图1A、1B和1C]图1A、1B和1C是例示KECCAK算法的图。
[图2A、2B、2C、2D、2E和2F]图2A、2B、2C、2D、2E和2F是例示数据结构的图。
[图3A和3B]图3A和3B是例示步骤θ中的处理的图。
[图4A、4B和4C]图4A、4B和4C是例示步骤ρ中的处理的图。
[图5A和5B]图5A和5B是例示步骤π中的处理的图。
[图6]图6是例示步骤χ中的处理的图。
[图7]图7是例示步骤ι中的处理的图。
[图8]图8是例示步骤ι中的循环常量的图。
[图9A、9B和9C]图9A、9B和9C是例示循环处理R'的概述的图。
[图10A、10B和10C]图10A、10B和10C是例示步骤ρ'中的处理的图。
[图11]图11是例示步骤θ1中的处理的图。
[图12]图12是例示步骤θ2中的处理的图。
[图13A、13B和13C]图13A、13B和13C是例示步骤θ2'中的处理的图。
[图14A、14B和14C]图14A、14B和14C是操作时序图。
[图15]图15是例示当由KECCAK算法以lane(条)为单位执行处理时的实施例的示意性构造的图。
[图16]图16是例示根据第一示例性实施例的KECCAK算法的实施例的示意性构造的图。
[图17]图17是例示图16中所示的构造的更详细的图。
[图18]图18是例示寄存器的实施例的图。
[图19]图19是例示θ2&ρ&π电路的实施例的图。
[图20]图20是例示χ&ι电路的实施例的图。
[图21]图21是例示根据第二示例性实施例的KECCAK算法的实施例的示意性构造的图。
[图22]图22是例示θ2&ρ'&χ&ι电路的实施例的图。
[图23A和23B]图23A和23B是例示步骤π中的处理的特征的图。
[图24A、24B、24C、24D和24E]图24A、24B、24C、24D和24E是例示由寄存器执行的sheet-plane单位转换的图。
[图25]图25是例示π电路的实施例的图。
具体实施方式
下面将参照附图详细描述本发明的各种示例性实施例、特征以及方面。
作为根据本发明的第一示例性实施例的哈希值生成装置,以下将描述被构造为生成SHA-3(KECCAK算法)的哈希值的装置作为示例。在以下的描述中,可以提供具体的数据长度或具体的位值,但本发明并不限于具体长度或值。
首先,将描述KECCAK算法。注意,更详细的规格记载在“KECCAK参考”,版本3.0,2011年1月14日,(http://keccak.noekeon.org/Keccak-reference-3.0.pdf)中。
图1A是例示整个KECCAK算法的图。在图1A中,例示了消息块101(m1至mt)。通过将生成哈希值的输入消息划分成1024位块的单元来生成消息块101(m1至mt)。
如图1A所示,在本实施例中,初始值102和103的所有位均为零。在此,作为示例描述初始值的所有位均为零的示例,但本发明并不限于该示例。初始值102的长度是1024位,与上述消息块的长度相同,并且初始值102和103的总长度是1600位。还例示了按位异或(XOR)运算器104。即,XOR运算器104对于两个1024位输入数据段的各个位计算异或,并输出作为1024位数据段的结果。
作为置换函数的KECCAK-f 105接收两个输入数据段并输出两个数据段。下面将参照图1B说明KECCAK-f 105的详情。切出部106从1024位输入数据段切出必要的尺寸,并输出该切出数据。加密哈希值(即,哈希值)107为该算法的计算结果。
图1B是例示作为置换函数的KECCAK-f 105的概述的图。执行24次循环处理R 201。下面将描述循环处理R的详情。例示了输入数据段202和203。输入数据段202的长度为1024位。输入数据段202和203的总长度为1600位。将这两个输入数据段202和203耦合然后输入到循环处理R 201。例示了输出数据段204和205。输出数据段204的长度为1024位。输出数据段204和205的总长度为1600位。
图1C是例示循环处理R 201的概述的图。如上所述,对于该循环处理R 201,输入数据段和输出数据段的长度二者都为1600位。在循环处理R 201中,对输入数据段顺序执行稍后要描述的五个步骤(θ处理单元301、ρ处理单元302、π处理单元303、χ处理单元304以及ι处理单元305)的处理,以生成输出数据段。
下面将详细描述用在KECCAK算法的循环处理中使用的数据结构和上述五个步骤。
图2A是例示作为在循环处理R 201的输入/输出时的数据结构的“state”的图。如上所述,输入数据段和输出数据段二者都具有1600位的长度。将这些1600位数据段中的各个表示成在三维布置上具有5位宽度(x轴方向)、5位高度(y轴方向)以及64位深度(z轴方向)的长方体。该长方体数据结构被称为“state”。将1600位数据段以z轴方向、x轴方向和y轴方向的顺序分配给被表示成长方体的state结构。下面将参照图2F描述详情。
图2B是例示数据结构“plane”的图。将该plane结构表示成平行于x-z平面并且具有5位宽度、1位高度以及64位深度的平面结构。也就是说,可以认为上述“state”结构是在y轴方向上堆叠的5个plane结构。
图2C是例示数据结构“sheet”的图。将该sheet结构表示成平行于y-z平面并且具有1位宽度、5位高度以及64位深度的平面结构。也就是说,可以认为上述“state”结构是在x轴方向上水平地成行布置的5个sheet结构。
图2D是例示数据结构“lane”的图。将该lane结构表示成平行于z轴并且具有1位宽度、1位高度以及64位深度的线型结构。也就是说,可以认为上述“state”结构是沿x-y平面聚集的25个lane结构。图2F是例示1个state结构中包括的25个lane的顺序的图。
图2E是例示数据结构“column”(“栏”)的图。将该column结构表示成平行于y轴并且具有1位宽度、5位高度以及1位深度的线型结构。也就是说,可以认为上述“sheet”结构是在z轴方向上成行布置的64个column结构。
在第一示例性实施例中,描述输入数据段是1600位的情况,但是本发明不限于该情况。此外,将描述将state结构的数据作为具有5位宽度(x轴方向)、5位高度(y轴方向)以及64位深度(z轴方向)的长方体数据结构来处理的示例,但本发明不限于此。例如,输入数据段可以具有800位,并且可以将state结构数据作为具有5位宽度、5位高度以及32位深度的长方体数据结构来处理。
此外,可以根据state结构在宽度(x轴方向)、高度(y轴方向)以及深度(z轴方向)上各自的位数,来修改plane结构、sheet结构、lane结构以及column结构。具体而言,当state结构数据在x轴方向上有m位、在y轴方向上有n位以及在z轴方向上有s位时,plane结构是在x轴方向上有m位、在y轴方向上有1位以及在z轴方向上有s位的平面结构。sheet结构是在x轴方向上有1位、在y轴方向上有n位以及在z轴方向上有s位的平面结构。lane结构是在x轴方向上有1位、在y轴方向上有1位以及在z轴方向上有s位的线型结构。column结构是在x轴方向上有1位、在y轴方向上有n位以及在z轴方向上有1位的线型结构。
接着,将描述从被输入到KECCAK-f 105的输入数据段202和203形成用于第一循环处理R 201的输入数据段的方法。首先,将输入数据段202和203以这种顺序耦合以形成1600位数据块。然后,将1600位数据块划分成64位的单元以形成25个lane。最后,将25个lane沿x-y平面以图2F所示的顺序布置以建立1个state。将该由此生成的state结构输入到循环处理R 201。根据24次循环处理R 201的输出数据段形成输出数据段204和205的方法是类似的,因此不提供其描述。
接着,将描述在循环处理R 201中包括的五个步骤(步骤θ、ρ、π、χ和ι)。在各个步骤中,输入数据段和输出数据段的数据结构是state结构。
图3A是例示在步骤θ(θ处理单元301)中的处理的图。步骤θ是将与各个位邻近的两个column的和与各个位相加的处理。θ处理单元计算输出state的各个位作为从输入state获得的三个值(“在同一位置的位的值”;“在x轴方向上-1位置的column的位的和”;以及“在x轴方向上+1位置和z轴方向上-1位置的column的位的和”)的和。在此,该和是指在GF(2)上的和,并且结果与异或操作的结果相同。该处理可以由以下表达式来表示。
在该表达式中,x是0至4,y是0至4,z是0至63。
图3B是在计算端部(例如x=0)的位的情况下在步骤θ中的处理的图。为了计算在x=0的位,“在x轴方向上-1位置的column”对应于state中的相反的column,即“在x=4的位置的column”。如上所述,超出state的坐标被视为在state中相反的位置。也就是说,坐标值在同一state中被循环移位。此规则同样适用于x坐标、y坐标和z坐标以及其他四个步骤。
图4A、4B和4C是例示步骤ρ(ρ处理单元302)中的处理的图。步骤ρ是在z轴方向上移位各个位的值的处理。具体而言,如图4A所示,ρ处理单元302通过指定的位数在z方向上循环移位state的各lane中的值,并且输出移位后的值。将在各lane中使值移位的位数预先确定为如图4B所示的数字。注意,为了执行ρ处理,保持部预先保持如图4C所示的列出移位量的表格,并且ρ处理单元302使用被保持的表格来执行ρ处理。
图5A和5B是例示在步骤π(π处理单元303)中的处理的图。步骤π是在x-y平面内重新布置各个位中的值的处理,即,重新布置在单个state中的25个lane的处理。注意,x-y平面也可以被称为“切片”(“slice”)。具体而言,当对输入state中的各lane如图5A上部所示进行编号时,输出state如其下部所示。注意,为了执行π处理,保持部预先保持如图5B所示的列出重新布置目的地的表格,并且π处理单元303使用被保持的表格来执行π处理。
图6是例示在步骤χ(χ处理单元304)中的处理的图。步骤χ是使用在x轴方向上的线(line)(也称为“行”(“row”))中的位来转换位的处理,并且基于在同一输入行中的三个位来导出在输出行中的各个位。具体而言,进行设定使得当来自输入行的各个位的、在x轴方向上+1位置的位是0并且来自该位的、在x轴方向上+2位置的位是1时,χ处理单元304反转输出行的各个对应位的值。
图7是例示在步骤ι(ι处理单元305)中的处理的图。步骤ι是将循环常量与各个位相加的处理。图8是例示在步骤ι中使用的循环常量的图。在步骤ι中,ι处理单元305利用为各个循环预定的循环常量(64位值),对在x=y=0处的lane的位线执行异或(XOR)。具体而言,ι处理单元305按位计算在x=y=0(在z=63的位是MSB并且在z=0的位是LSB时)处的lane的64位值与如图8所示的循环常量的异或。然后,ι处理单元305将结果作为在x=y=0处的lane的位线设置在输出state中。
从以上各个步骤(步骤θ,ρ,π,χ和ι)的处理内容,可以理解,关于各个步骤的处理的开始存在以下限制。
·在步骤θ中,θ处理单元301使用在x轴方向上-1处的sheet数据段和+1处的sheet数据段以计算state中的各lane。因此,在完成前三个sheet时,也就是说,在θ处理单元301从前段接收25个lane当中的23个lane时,θ处理单元301可以开始步骤θ中的处理。
·步骤ρ是对于彼此独立的lane中的各个的计算。因此,在输出前段(步骤θ)的计算结果的1个lane时,ρ处理单元302可以开始步骤ρ中的处理。
·在步骤π中,重新布置state中的各lane。因此,在输出前段(步骤ρ)的计算结果的1个完整的state时,即,在输出25个lane时,π处理单元303可以开始步骤π中的处理。
·在步骤χ中,在state中的各lane的计算中,χ处理单元304使用在x轴方向上+1处的lane和在x轴方向上+2处的lane。因此,在接收3个lane数据段时,χ处理单元304可以开始步骤χ中的处理。
·步骤ι是对于彼此独立的lane中的各个的计算。因此,在输出前段(步骤χ)的计算结果的1个lane时,ι处理单元305可以开始步骤ι中的处理。
换言之,在步骤θ、π和χ中,处理的开始必须进行等待直到在各自前段的步骤分别输出23个lane、25个lane以及3个lane的计算结果为止。如上所述,特别地,在步骤θ和π两个步骤的前段的处理开始之后经过很长时间时,才开始步骤θ和步骤π的处理。
这意味着如能加快步骤θ或步骤π的开始时间,则能够改善吞吐量。此外,在各个步骤中,通过以plane为单位或以sheet为单位代替以lane单位来执行处理,能够提高吞吐量。
接着,将描述循环处理R'801。循环处理R'801是在本实施例使用的处理,并且被设计为使得结果与循环处理R 201的结果相同。
图9A是例示循环处理R'801的概述的图。循环处理R'801被设计为使得处理结果与循环处理R 201的处理结果的相同。在循环处理R'801中,对输入数据段执行六个步骤的处理(由θ1处理单元802、θ2处理单元803、ρ处理单元804、π处理单元805、χ处理单元806以及ι处理单元807执行的)以生成输出数据段。
在此,ρ处理单元804、π处理单元805、χ处理单元806以及ι处理单元807分别类似于在循环处理R 201中的ρ处理单元302、π处理单元303、χ处理单元304以及ι处理单元305。通过划分循环处理R 201中的θ处理单元301来获得θ1处理单元802和θ2处理单元803。
由于在循环处理R'801中的ρ处理、χ处理以及ι处理与在循环处理R201中的那些处理类似,因此不提供其描述。
π处理单元805与循环处理R 201中的π处理单元303类似。然而,π处理单元805在保持state数据段之后不执行该处理,但是由输入了plane数据段输出sheet数据段。下面将描述详情。
下面将描述θ1处理和θ2处理。
图11是例示步骤θ1中的处理的图。步骤θ1对应于步骤θ的前半操作。在该步骤中,执行column和计算处理。具体而言,该处理用于为各个column计算两个值(“在x轴方向上-1位置处的column的位的和”与“在x轴方向上+1位置和在z轴方向上-1位置处的column的位的和”)的和(被称为θ中间值)。在接收了5个sheet数据段之后,θ1处理单元802对于总计达5×64位的θ中间值的各column输出1位的θ中间值。将所有θ中间值的结构表示为平行于x-z平面并且具有5位宽度、1位高度以及64位深度的平面结构。
图12是例示步骤θ2中的处理的图。步骤θ2对应于步骤θ的后半操作,并且为执行column和加法处理的步骤。也就是说,在步骤θ2中,θ2处理单元803将在步骤θ1中计算出的θ中间值与各个位相加。
从上述各个步骤(步骤θ1和步骤θ2)的处理内容,可以理解,关于各个步骤的处理的开始存在以下限制。
·步骤θ1是和的计算,因此,θ1处理单元802在每次输入state中的各个sheet时,更新计算过程中的θ中间值。因此,在输出前段的计算结果的1个sheet数据段时,θ1处理单元802可以开始步骤θ1中的处理。
·在步骤θ2中,θ2处理单元803将在步骤θ1中计算出的θ中间值与state中的各plane的计算相加。由于在开始步骤θ2时完成了步骤θ1,因此θ2处理单元803在从前段(寄存器)输出1个plane数据段时,可以开始输出步骤θ2的处理结果。
·步骤ρ是用于彼此独立的各lane的计算。因此,在θ2处理单元803输出前段(步骤θ2)的计算结果的1个plane数据段时,ρ处理单元804可以开始步骤ρ中的处理。
·在步骤π中,π处理单元805重新布置state中的各lane。然而,从1个plane的输入可以获得1个sheet的输出。因此,在ρ处理单元804输出前段(步骤ρ)的计算结果的1个plane数据段时,π处理单元805可以开始步骤π中的处理。
·在步骤χ中,在state中的各lane的计算中,χ处理单元806使用在x轴方向上+1处的lane和在x轴方向上+2处的lane。因此,χ处理单元806可以在接收了3个sheet数据段之后开始步骤χ中的处理。
·步骤ι是用于彼此独立的各lane的计算。因此,在χ处理单元806输出前段(步骤χ)的计算结果的1个sheet数据段时,ι处理单元807能够开始步骤ι中的处理。
由于π处理单元805接收plane数据段的输入并且输出步骤π中的sheet数据段,因此能够消除保持state数据段的需要并且能够提高吞吐量。
此外,由于在步骤θ2、ρ和π中以plane为单位并且在步骤χ和ι中以sheet为单位执行处理,因此能够提高吞吐量。
下面将描述以下构造:π处理单元805接收plane数据段的输入并输出sheet数据段、并且在步骤θ2、ρ和π中以plane为单位执行循环处理,而在步骤χ和ι中以sheet为单位执行循环处理。
图16是例示根据第一实施例的KECCAK算法的实施例的示意性构造的图。在本示例中,以单位对输入数据段1901中的lane结构进行输入。然而,将输入数据段的顺序预先在y方向上顺次确定为:(x,y)=(0,0),(0,1),(0,2),...。寄存器1908保持作为输入数据段1901的4个lane结构数据段,并且在寄存器1908接收第五个lane结构数据段时,以sheet结构为单位输出数据段。注意,寄存器1908可以被构造为在寄存器1908保持能够生成至少第一个sheet结构数据段的数据时,输出第一个sheet结构数据段。当完成计算时,以sheet结构数据段为单位对输出数据段1907进行输出。
异或(XOR)运算器1902在每次执行24次循环处理时计算消息块与内部数据的异或。寄存器1903保持整个内部数据。寄存器1903保持输入的sheet结构的输入数据段并且输出plane结构的输出数据段。电路1904用于步骤θ2、ρ和π中的处理。输入到电路1904的数据是plane结构的数据,并且从电路1904输出的数据是sheet结构的数据。下面将描述详情。提供电路1905用于步骤χ和ι中的处理。提供电路1906用于步骤θ1中的处理。
图17是更详细地例示图16的构造的图。输入数据段2001与图16中的输入数据段1901相同。寄存器2009至少保持输入数据段2001当中的第一个sheet结构数据段,并且以单位输出sheet结构数据段。寄存器2009与图16中的寄存器1908相同。寄存器2009在每个时钟(clock)中以sheet结构为单位输出1个数据段,并且以x坐标的升序输出sheet结构数据段。多路转换器(multiplexer)2002在计算输入数据段与内部state的异或时按原样对输入数据段进行输出,而在其他情况下多路转换器(multiplexer)2002输出0。
类似于图16中例示的寄存器1903的寄存器2004保持整个内部数据。电路2005在步骤θ2、ρ和π中进行计算(以下,称为θ2&ρ&π电路2005)。如上所述,对于θ2&ρ&π电路2005,以y坐标升序(以y=0,1,2,3,和4的顺序)输入plane结构数据段,并且θ2&ρ&π电路2005以x坐标升序(以x=0,1,2,3,和4的顺序)输出sheet结构数据段。
电路2006用于步骤χ和ι中的处理(以下,称为χ&ι电路2006)并且以sheet结构为单位输出计算结果的1个数据段。多路转换器2007在哈希值计算出的开始时输出用于初始化的0,在其他情况下输出计算过程中的数据。
电路2008用于步骤θ1中的处理(以下,称为θ1电路2008),并且在电路2008接收5个sheet数据段的输入时,输出5×64位的中间值(θ中间值)。
图18是例示寄存器2004的实施例的图。组合电路2102将作为输入数据段2101的1个sheet数据段划分成5个lane数据段,并且输出5个lane数据段。多路转换器2103针对循环的偶数次和循环的奇数次,将移位方向交替地切换至垂直方向和水平方向(在图18中,与多路转换器2103相同形状的所有符号类似地执行)。寄存器2104是用于在一个阶段中存储1个lane的信息的、5×5个阶段的网状构造。寄存器2104接收5个lane数据段的输入,并且在每个时钟输出5个lane数据段(1个sheet或1个plane的数据)。将组合电路2105输出从寄存器2104的最后阶段输出的5个lane(包括R0、R1、R2、R3和R4的5个lane或包括R0、R5、R10、R15和R20的5个lane)的数据,作为1个plane数据段输出。例示了输出数据段2106。
图23A和23B是例示步骤π中的处理的特征的图。
图23A例示了在执行步骤π中的处理之前的数据的示例。为便于理解由π处理将各lane重新布置到的位置,将顺序号分配给各lane。图23B例示了在执行了步骤π中的处理之后的数据的示例。在该图中,可以看出,将在y=0处的1个plane数据段(图23A中的数据段231)的位全部重新布置到在x=0处的1个sheet数据段(图23B中的数据段232)的位置。类似地重新布置在y=1、2、3和4处的数据段。也就是说,在执行步骤π中的处理时,将在y=i(i=0、1、2、3和4)处的各plane数据段输出为在x=i处的1个sheet数据段。
通过利用如上所述步骤π中的处理的特性,消除在用于步骤π中的处理的寄存器中保持所有数据段(即,5个plane结构数据段)的需要,因此从1个plane的输入能够获得1个sheet的输出。
图24A、24B、24C、24D和24E是例示由寄存器2004执行的sheet-plane单位转换的图。对于如上所述的1个时钟,用于寄存器2004的输入数据段是1个sheet数据段。图24A、24B和24C分别是当在第一时钟输入sheet数据段时、当在第二时钟输入sheet数据段时和当在第五时钟输入sheet数据段时的寄存器2004的说明图。如图24A、24B和24C所示,寄存器2004在y方向(x方向)对5个时钟接收5个sheet数据段(1个state数据段)的输入。图24D是当寄存器2004在接收5个sheet数据段的输入之后输出第一个plane数据段时的寄存器2004的说明图。图24E是当寄存器2004输出第二个plane数据段时的寄存器2004的说明图。寄存器在接收5个sheet数据段的输入之后,在x方向(y方向)于每个时钟输出5个lane数据段的各个,以提供1个plane数据段。寄存器2004执行上述流程图中的sheet-plane的转换。
注意,在交替地在x轴方向和y轴方向之间切换输入方向的同时,将数据输入到寄存器2004。例如,在y轴方向输入5个plane数据段,然后在x轴方向输入5个sheet数据段。
图19是例示θ2&ρ&π电路2005的实施例的图。θ2&ρ&π电路2005使用电路2008为目标plane预先计算的θ中间值,来计算输出数据段。由于该处理包括步骤π中的处理,因此输出数据段具有sheet结构。
如上所述,θ2&ρ&π电路2005在每个时钟接收1个plane数据段的输入,作为输入数据段2201。输入数据段2202被从θ1电路2008输入并且对应于θ中间值。
异或(XOR)运算器2203的处理对应于如上所述的步骤θ2的操作。逻辑电路(ρ电路)2204执行步骤ρ的操作。逻辑电路(π电路)2205执行步骤π的操作并且可以由1个plane的输入来输出1个sheet。输出数据段2206是在每个时钟输出的1个sheet数据段。
图25是例示π电路2205的实施例的图。如上所述,π电路2205在每个时钟接收1个plane数据段的输入作为输入数据段2601。组合电路2602将作为输入数据段2601的1个plane数据段划分成5个lane数据段,并且输出这5个lane数据段。
组合电路2603在步骤π中进行重新布置。组合电路2603根据图5B的表格将在x轴方向上对齐的5个lane数据段重新布置为在y轴方向上对齐的5个lane数据段,并且输出这5个lane数据段。
组合电路2604将5个lane数据段输出作为1个sheet数据段。输出数据段2605是在每个时钟输出的1个sheet数据段。
图20是例示χ&ι电路2006的实施例的图。χ&ι电路2006通过使用目标sheet数据段和相对于目标sheet数据段在x轴方向+1和+2位置处的两个sheet数据段,来计算输出数据段。
如上所述,χ&ι电路2006在每个时钟接收1个sheet数据段的输入作为输入数据段2301。多路转换器2302按原样在从处理开始时的前5个时钟期间对输入数据段2301进行输出,并且在接下来的两个时钟期间输出来自寄存器2304的数据。
具有2段构造的寄存器2303在1段中存储1个sheet的信息。具有2段构造的寄存器2304在1段中存储1个sheet的信息。寄存器2304存储在x=0和x=1处的sheet的信息。
组合电路2305是被构造为执行上述步骤χ和ι的操作的逻辑电路。以sheet为单位输出1个输出数据段2306。
如上所述,θ2&ρ&π电路2005用于以plane为单位的处理,χ&ι电路2006用于以sheet为单位的处理。因此,从θ2&ρ&π电路2005的输出至χ&ι电路2006的输入的路径上,仅连接组合电路。具体而言,在路径上不包含锁存电路。因此,数据段能够在1个时钟内通过该路径。
如上所述,根据第一示例性实施例,π处理单元805接收plane的输入并输出sheet,并且使用plane和sheet作为单位执行循环中的处理。因此,在循环中的处理可以是流水线。
此外,如上所述,根据第一示例性实施例,在循环的开始时的输入处理的单位是plane,并且在循环的结束时的输出处理的单位是sheet。然而,由于从寄存器2004的输入至输出来执行plane-sheet单位转换,因此在下一个循环的开始时的输入处理的单位可以是以plane为单位。
注意,在第一实例性实施例中,到θ1电路2008的输入单位是sheet结构,但是输入单位可以是plane结构。在这种情况下,在接收了5个plane数据段之后,θ1电路2008输出5×64位的θ中间值。然而,在到θ1电路2008的输入单位是sheet结构的情况下,θ1电路2008能够在每次输入时顺次地计算θ中间值,这是有益的效果。
图14A是根据第一示例性实施例的实施例的各个模块的操作时序图。θ2&ρ&π电路2005和χ&ι电路2006被构造为流水线处理。由于θ1电路2008能够从5个sheet数据段的输入计算θ中间值,因此需要5个时钟。在θ2&ρ&π电路2005输出1个sheet数据段之后的两个时钟,χ&ι电路能够输出1个sheet数据段。也就是说,χ&ι电路2006可以在接收到3个sheet数据段时开始处理。因此,θ2&ρ&π电路2005和χ&ι电路2006可以并行操作。此外,1次循环需要花费7个时钟。
在下文中,为了与上述第一示例性实施例的实施例比较,将描述由根据规格(specification)的算法在以lane数据段为单位执行处理的实施例。
图15是例示由根据规格的KECCAK算法在以lane为单位执行处理时的实施例的示意性构造的图。五个步骤(θ、ρ、π、χ和ι)的处理与上面描述的类似,因此不提供其描述。
KECCAK-f在每个时钟从输入数据段1801接收1个lane数据段(具有64位长度的数据)。KECCAK-f以图2F所示的顺序接收1个state数据段中的lane数据段。
异或处理单元1802是每次在执行24次循环处理时,计算消息块与内部数据段的异或的运算器。
寄存器1803保持整个表示为state数据段的内部数据。处理块(π电路)1804执行步骤π。然而,如上所述,仅在完成了步骤ρ中的处理之后,才能够执行步骤π中的处理。处理块(θ电路)1805执行步骤θ,处理块(ρ电路)1806执行步骤ρ。
处理块(χ电路)1807执行步骤χ,处理块(ι电路)1808执行步骤ι。多路转换器1809在循环处理的前半处理中,输出从处理块1806输入的数据,并且在循环处理的后半处理中,输出来自处理块1808的数据。KECCAK-f在完成计算时,输出1个lane的输出数据段1810。
图14B是在由根据规格的算法以lane为单位执行处理时的各个模块的操作时序图。θ电路1805和ρ电路1806对与χ电路1807和ι电路1808对在不同的时间段进行操作,并且不同时进行操作。对于1次循环处理花费51个时钟。
从图14A和图14C的比较可以看出,通过使用根据第一示例性实施例的实施例的构造能够提高处理的吞吐量。
具体而言,可以说:
·两个处理电路:θ2&ρ&π电路2005和χ&ι电路2006并行进行操作,因此能够提高电路的利用效率。
·能够在更小数量的时钟(更短时间)内执行1次循环处理。
作为根据本发明的第二示例性实施例的哈希值生成装置,以下将描述被构造为生成SHA-3(KECCAK算法)的哈希值的装置作为示例。在下面的说明中,可能提供具体的数据长度或具体的位值,但本发明不限于这些具体值。KECCAK算法和数据结构与第一示例性实施例的类似,因此,将描述与第一示例性实施例的不同点。
将描述循环处理R'901。循环处理R'901是本实施例中使用的、并且被设计为使得结果与循环处理R 201的结果相同的处理。然而,循环处理R'901的处理内容与KECCAK算法的规格不同。
图9B是例示循环处理R'901的概述的图。循环处理R'901被设计为使得处理结果与循环处理R 201的处理结果相同。在循环处理R'901中,对输入数据段执行6个步骤的处理(θ1处理单元902、π处理单元903、θ2'处理单元904、ρ'处理单元905、χ处理单元906以及ι处理单元907)以生成输出数据段。
注意,π处理单元903、χ处理单元906和ι处理单元907执行的处理类似于由循环处理R 201的π处理单元303、χ处理单元304和ι处理单元305执行的处理。ρ'处理单元905类似于循环处理R 201的ρ处理单元302,执行在z轴方向移位各个位的值的处理,但是使值移位的位数不同。通过在循环处理R 201中划分θ处理单元301来获得θ1处理单元902和θ2'处理单元904。
由于循环处理R'901中的χ处理和ι处理与循环处理R 201中的类似,因此,不提供其描述。
π处理单元903与循环处理R 201中的π处理单元303类似。然而,π处理单元903在保持state数据段之后不执行处理,而是接收plane数据段然后输出sheet数据段。详情类似于第一示例性实施例。
循环处理R'901的θ1处理类似于循环处理R'801的θ1处理,因此不提供其描述。下面将描述ρ'处理和θ2'处理。
图10A是例示步骤ρ'(ρ'处理单元905)中的处理的图。在步骤ρ'中,ρ'处理单元905执行类似于步骤ρ的、在z轴方向上循环移位各个位的值的处理。然而,在各lane中使值循环移位的位数与步骤ρ中的不同,如图10B所示。注意,为了执行ρ'处理,保持部预先保持如图10C所示的列出移位量的表格,并且ρ'处理单元905使用该保持的表格来执行ρ处理。在考虑到π处理的情况下来确定该表格。下面将描述详情。
为了描述循环处理R'901的处理结果与循环处理R 201的处理结果相同,首先,将描述循环处理R 201的处理结果与循环处理R”911的处理结果相同。
图9C是循环处理R”911的图。在循环处理R”911中,对输入数据段执行五个步骤的处理(θ处理单元912、π处理单元913、ρ'处理单元915、χ处理单元916和ι处理单元917)以生成输出数据段。在此,θ处理单元912、π处理单元913、χ处理单元916和ι处理单元917分别类似于循环处理R 201的θ处理单元301、π处理单元303、χ处理单元304和ι处理单元305。ρ'处理单元915类似于循环处理R'901的ρ'处理单元905。
当将循环处理R 201与循环处理R”911相比较时,它们的不同点在于:在以循环处理R”911中以π处理单元913和ρ'处理单元915的顺序执行处理,而在循环处理R 201中以ρ处理单元302和π处理单元303的顺序执行处理。
在此,在循环处理R 201的步骤ρ中,ρ处理单元根据为各lane确定的规则在z轴方向使值移位,并且π处理单元303重新布置各lane。另一方面,在循环处理R”911中,π处理单元913重新布置各lane(在步骤π中的处理),此后ρ'处理单元915考虑到重新布置处理(步骤ρ'中的处理)根据为各lane确定的规则在z轴方向使值移位。具体而言,在循环处理R”911中,在步骤ρ'之前执行步骤π,但是考虑到步骤π中的处理,来改变通过ρ'处理单元915使值在z轴方向上移位的移位量,由此循环处理R”911的处理结果变得与循环处理R 201的处理结果相同。
图10C是列出在步骤ρ'中使用的各lane的移位量的表格。
将具体描述生成如图10C所示的表格的方法。首先,将考虑循环处理R 201。在循环处理R 201中,以ρ处理单元302和π处理单元303的顺序执行处理。图4B中的数字是在步骤ρ中的移位量。例如,在x=0且y=4位置处的lane的移位量是18位。接着,使用图5A和5B确认由π处理进行的lane重新布置。由此可见,π处理单元303将在x=0且y=4的位置的lane移动至x=4,y=2的位置。
接着,将考虑循环处理R”911。在循环处理R”911中,以π处理单元913和ρ'处理单元915的顺序执行处理。由于在ρ'处理之前执行π处理,因此ρ'处理单元915应当使值移位18位的lane是在x=4,y=2位置处的lane。因此,在图10B中x=4,y=2位置处的数字是18。对于图10B中的其他数字可以类似地获得其他lane的移位量。
也就是说,针对图10C中所示的步骤ρ'中使用的各lane的移位量的表格是考虑到π处理的重新布置处理的情况下确定的表格。
接下来,将描述循环处理R”911的处理结果与循环处理R'901的处理结果相同。
注意,π处理单元903、ρ'处理单元905、χ处理部906和ι处理单元907分别执行类似于循环处理R”911的π处理单元913、ρ'处理单元915、χ处理单元916以及ι处理单元917的处理。通过划分θ处理单元912来获得θ1处理单元902和θ2'处理单元904。
在将在将循环处理R”911与循环处理R'901相比较时,它们的不同点在于:在循环处理R”911中以θ处理单元912和π处理单元913的顺序执行处理,而在循环处理R'901中以θ1处理单元902、π处理单元903和θ2'处理单元904的顺序执行处理。
这里,在循环处理R”911中,步骤θ是将与各个位邻近的两个column的和与各个位相加的步骤,并且步骤π是重新布置各lane的步骤。另一方面,在循环处理R'901中,θ1处理单元902计算与各个位邻近的两个column的和(在步骤θ1中的处理)。然后,π处理单元913重新布置各lane(在步骤π中的处理),并且θ2'处理单元904考虑到各lane的重新布置的情况下将column的和与位相加(步骤θ2'中的处理)。
图13A是例示步骤θ2'中的处理的图。步骤θ2'对应于步骤θ的后半的操作并且是执行column和加法处理的步骤。即,步骤θ2'是将在步骤θ1中计算出的θ中间值与各个位相加的步骤。
然而,应该注意的是,在步骤θ2'之前已经执行了步骤π。具体而言,在循环处理R”911的步骤θ(即,循环处理R 201的步骤θ)中,各个位的x坐标与用于位的计算的θ中间值的x坐标相同。然而,在循环处理R'901的步骤θ2'中,各个位的x坐标与用于位的计算的θ中间值的x坐标不同,并且在考虑到步骤π中的各lane的重新布置的情况下来确定x坐标。用于各个位的计算的θ中间值的x坐标如图13B所示。注意,保持部预先保持图13C中的表格,该表格提供在θ2'处理中用于各个位的计算的θ中间值的x坐标,并且θ2'处理单元904使用该保持的表格来执行θ2'处理。
将具体描述生成图13C中所示的表格的方法。首先,将考虑循环处理R”911。在步骤θ中计算各个位需要的θ中间值的x坐标与各个位的x坐标相同。例如,在步骤θ中,使用在x=0位置处的θ中间值来计算在x=0,y=4位置处的位。接着,使用图5A和5B来确认在步骤π中的lane重新布置。由此可见,π处理单元913将在x=0,y=4位置处的位移位动到x=4,y=2的位置。
接着,将考虑循环处理R'901。由于π处理单元903在θ2'处理单元904执行步骤θ2'时已经执行了步骤π,因此可以看出,在步骤θ2'中x=4,y=2位置处的位的计算所需的θ中间值的x坐标为x=0。因此,图13B中提供的数字中的x=4,y=2位置处的数字变为0。对于图13B中的其他数字可以类似地获得其他位的θ中间值的x坐标。
也就是说,在θ2'处理单元904执行步骤θ2'时提供θ中间值的x坐标的图13C中的表格,是考虑到π处理的重新布置处理的情况下确定的表格。
如上所述,循环处理R 201的处理结果与循环处理R”911的处理结果相同。此外,循环处理R”911的处理结果与循环处理R'901的处理结果相同。因此,循环处理R'901的处理结果与循环处理R 201的处理结果相同。
从以上各个步骤(步骤θ1、θ2'和ρ')的处理内容,可以理解,关于各个步骤的处理的开始存在以下限制。
·在步骤θ1中,θ1处理单元902计算和,因此,θ1处理单元902每次在输入state中的各plane时,更新在计算过程中的θ中间值。因此,当输出前段的计算结果的1个plane数据段时,θ1处理单元902可以开始步骤θ1中的处理。
·在步骤θ2'中,θ2'处理单元904将步骤θ1中计算出的θ中间值与state中的各lane的计算相加。由于在步骤θ2'开始时完成了步骤θ1,因此θ2'处理单元904可以在输出前段(步骤π)的计算结果的1个plane数据段时,开始输出步骤θ2'的处理结果。
·步骤ρ'是用于彼此独立的各lane的计算。因此,当θ2'处理单元904输出前段(步骤θ2')的计算结果的1个plane数据段时,ρ'处理单元905可以开始步骤ρ'中的处理。
也就是说,在步骤θ1、θ2'和ρ'中,当输出前段的步骤的计算结果的1个plane数据段时,可以开始处理。
此外,第二示例性实施例的步骤π、χ和ι的处理内容与第一示例性实施例中描述的内容相同。因此,可以理解,关于各个步骤的处理的开始存在以下限制。
·在步骤π中,重新布置state中的各lane。然而,π处理单元903能够从1个plane数据段的输入来输出1个sheet数据段。因此,当前段(步骤θ1)输出计算结果的1个plane时,π处理单元903可以开始步骤π中的处理。
·在步骤χ中,在state中的各lane的计算中,χ处理单元906使用在x轴方向上+1处的lane和+2处的lane。因此,当ρ'处理单元905输出前段(步骤ρ')的计算结果的1个plane数据段时,χ处理单元906可以开始步骤χ中的处理。
·步骤ι是用于彼此独立的各lane的计算。因此,当输出前段(步骤χ)的计算结果的1个plane数据段时,ι处理单元907可以开始步骤ι中的处理。
由于在步骤π中输入plane数据段并且输出sheet数据段,因此能够消除保持state数据段的需要,并且能够提高吞吐量。
此外,π处理单元903以plane为单位执行处理,并且使用循环处理R'901来代替循环处理R 201。因此,能够提高吞吐量。下文中将描述如下构造,将plane数据段输入到步骤π并从中输出sheet数据段,并且以plane为单位执行循环处理。
图21是例示根据第二示例性实施例的KECCAK算法的实施例的构造的图。这里,将输入数据段2401的顺序预先在x方向上顺次确定为:(x,y)=(0,0),(1,0),(2,0),...。寄存器2409保持作为输入数据段2401的4个lane结构数据段,并且在寄存器2409接收到第五个lane结构数据段时,以plane结构为单位输出数据段。注意,寄存器2409可以被构造为在寄存器2409保持能够生成至少第一个plane结构数据段的情况下,输出第一个plane结构数据段。当完成计算时,以sheet结构为单位对输出数据段2410进行输出。
多路转换器2402在其计算输入数据段与内部state的异或时,按原样对输入数据段进行输出,而在其他情况下多路转换器2402输出零。
电路2404在步骤π(以下称为π电路2404)中进行计算。类似于图19中所示的π电路2205的π电路2404,接收plane结构数据段的输入并且输出sheet结构数据段。具体而言,以y坐标的升序(以y=0,1,2,3和4的顺序)输入plane结构数据段,并且以x坐标升序(以x=0,1,2,3和4的顺序)输出sheet结构数据段。
寄存器2405保持整个内部数据。由于寄存器2405类似于第一示例性实施例的寄存器2004,因此不提供其描述。
电路2406执行步骤θ2'、ρ'、χ和ι中的计算(以下,称为θ2'&ρ'&χ&ι电路2406),并且以plane结构为单位输出计算结果的1个数据段。多路转换器2407在哈希值的计算开始时输出用于初始化的0,而在其他情况下的计算过程中输出数据。
电路2408用于步骤θ1中的处理(以下,称为θ1电路2408),并且在电路2408接收5个plane数据段时,输出5×64位的中间值(θ中间值)。
图22是例示θ2'&ρ'&χ&ι电路2406的实施例的图。θ2'&ρ'&χ&ι电路2406使用电路2408为目标plane预先计算出的θ中间值,来计算输出数据段。
θ2'&ρ'&χ&ι电路2406在每个时钟接收1个plane数据段的输入,作为输入数据段2501。输入数据段2502被从θ1电路2408输入并且对应于θ中间值。
异或(XOR)运算器2503进行的处理对应于上述的步骤θ2'的操作。组合电路2504是被构造为实际执行上述步骤ρ'、χ和ι的操作并且在每个时钟输出1个plane数据段的逻辑电路。输出数据段2505是在每个时钟输出的1个plane数据段。
如上所述,π电路2404以plane为单位执行处理并且输出sheet结构数据段,寄存器2405将sheet结构数据段转换为plane结构,并且θ2'&ρ'&χ&ι电路2406以plane为单位执行处理。从θ2'&ρ'&χ&ι电路2406的输出至π电路2404的输入的路径上,仅连接组合电路。具体而言,在路径上不包含锁存电路。因此,数据段能够在1个时钟内通过该路径。
注意,在第二示例性实施例中,到θ1电路2408的输入单位是plane结构,但是输入单位可以是sheet结构。在这种情况下,在接收五个sheet数据段的输入之后,θ1电路2408输出5×64位的θ中间值。
图14B是根据第二示例性实施例的实施例的各个模块的操作时序图。从θ2'&ρ'&χ&ι电路2406到π电路2404的输出被构造为流水线处理。可以在输入1个plane数据段时开始循环处理的所有步骤中的各个的处理。也就是说,可以并行执行循环处理中的所有步骤。此外,1次循环处理需要花费5个时钟。
在下文中,为了与上述第二示例性实施例的实施例比较,将描述由根据规格的算法在以lane数据段为单位执行处理的实施例。由根据规格的算法以lane数据段为单位执行处理的实施例类似于在第一示例性实施例中描述的内容,因此,不提供其描述。
图14C是实施例的各个模块的操作时序图,在该实施例中,根据规格以lane数据段为单位执行处理。
从图14B和图14C的比较可以看出,通过使用根据第二示例性实施例的实施例的构造能够提高处理的吞吐量。
具体而言,可以说:
·两个处理电路:π电路2404和θ2'&ρ'&χ&ι电路2406并行进行操作,因此能够提高电路的利用效率。
·能够在更小数量的时钟(更短时间)内执行1次循环处理。
如在以上本实施例中所述,在θ1处理期间的处理单位的转换可以减少用于保持数据的时间。
根据本示例性实施例,可以提供一种能够提高用于生成哈希值的吞吐量的技术。
通过读出并执行记录在存储介质(即非暂时性计算机可读存储介质)上的计算机可执行指令以执行本发明的上述实施例中的一个或更多个功能的系统或装置的计算机,并且通过由系统或装置的计算机执行的例如读出并执行来自存储介质的计算机可执行指令以执行上述实施例中的一个或更多个功能的方法,也可以实现本发明的实施例。计算机可以包括一个或更多个中央处理单元(CPU)、微处理单元(MPU)或其他电路,并且可以包括分开的计算机或分开的计算机处理器的网络。计算机可执行指令可以例如从网络或存储介质被提供给计算机。存储介质可以包括例如硬盘、随机存取存储器(RAM)、只读存储器(ROM)、分布式计算系统的存储器、光盘(诸如压缩光盘(CD)、数字通用光盘(DVD)或蓝光光盘(BD)TM)、闪存设备以及存储卡等中的一个或更多个。
虽然参照示例性实施例对本发明执行了描述,但是应当理解,本发明并不限定于所公开的示例性实施例。所附权利要求的范围应当被赋予最宽的解释,以便涵盖所有这些变型例以及等同的结构和功能。
本申请要求2013年3月7日提交的日本专利申请第2013-045574号和2014年1月31日提交的日本专利申请第2014-017413号的优先权,其全部内容通过引用并入本文。
Claims (19)
1.一种哈希值生成装置,所述哈希值生成装置包括:
θ处理单元,其用于执行安全哈希算法3的循环处理中包括的θ处理;
ρ处理单元,其用于执行所述循环处理中包括的ρ处理;
π处理单元,其用于执行所述循环处理中包括的π处理;
χ处理单元,其用于执行所述循环处理中包括的χ处理;以及
ι处理单元,其用于执行所述循环处理中包括的ι处理;
其中,所述π处理单元以plane为单位接收数据的输入,并且以sheet为单位输出数据。
2.根据权利要求1所述的哈希值生成装置,所述哈希值生成装置还包括用于保持经受了处理的数据的保持单元,
其中,所述保持单元以sheet为单位接收数据的输入,并且以plane为单位输出数据。
3.根据权利要求2所述的哈希值生成装置,其中,所述保持单元在保持了5个sheet之后,输出1个plane。
4.根据权利要求3所述的哈希值生成装置,其中,所述θ处理单元包括用于执行column和计算处理的θ1处理单元和用于执行column和加法处理的θ2处理单元。
5.根据权利要求4所述的哈希值生成装置,其中,所述θ1处理单元在将5个sheet输入到所述保持单元的期间执行所述θ1处理。
6.根据权利要求2所述的哈希值生成装置,其中,所述保持单元保持由所述π处理单元处理的数据。
7.根据权利要求4所述的哈希值生成装置,其中,在所述循环处理中,所述π处理单元在所述θ2处理单元和所述ρ处理单元执行处理之前执行处理。
8.根据权利要求7所述的哈希值生成装置,其中,所述θ2处理单元、所述ρ处理单元、所述χ处理单元和所述ι处理单元以plane为单位执行处理。
9.根据权利要求2所述的哈希值生成装置,其中,所述保持单元保持由所述ι处理单元处理的数据。
10.根据权利要求4所述的哈希值生成装置,其中,所述θ2处理单元和所述ρ处理单元以plane为单位执行处理,并且
其中,所述χ处理单元和所述ι处理单元以sheet为单位执行处理。
11.根据权利要求1所述的哈希值生成装置,所述哈希值生成装置还包括用于输出通过利用所述θ单元、所述ρ单元、所述π单元、所述χ单元和所述ι单元执行所述循环处理而获得的哈希值的输出单元。
12.根据权利要求1所述的哈希值生成装置,其中,所述plane是在x轴方向上有m位、在y轴方向上有1位以及在z轴方向上有s位的结构的数据,所述sheet是在x轴方向上有1位、在y轴方向上有n位以及在z轴方向上有s位的结构的数据。
13.根据权利要求1所述的哈希值生成装置,其中,
所述θ处理单元计算沿x轴方向的位的和,并将该计算出的和与预定位相加,
其中,所述ρ处理单元在z轴方向上移位各个位的值,
其中,所述π处理单元在x-y平面内重新布置各个位的值,
其中,所述χ处理单元使用在x轴方向上的行中的位来转换位,并且
其中,所述ι处理单元将预定值与各个位相加。
14.一种哈希值生成装置,所述哈希值生成装置执行哈希算法的循环处理,在所述哈希算法中,对在x轴方向上有m位、在y轴方向上有n位以及在z轴方向上有s位的结构的数据段执行处理,所述哈希值生成装置包括:
第一处理单元,其用于计算在x轴方向上的位的和,并将该计算出的和与预定位相加;
第二处理单元,其用于在z轴方向上对位进行移位;
第三处理单元,其用于在x-y平面内重新布置各个位;
第四处理单元,其用于使用在x轴方向上的行中的位来转换位;以及
第五处理单元,用于将预定值与各个位相加;
其中,所述第三处理单元以各自在x轴方向上有m位、在y轴方向上有1位以及在z轴方向上有s位的结构为单位接收数据的输入,并且以各自在x轴方向上有1位、在y轴方向上有n位以及在z轴方向上有s位的结构为单位输出数据。
15.根据权利要求14所述的哈希值生成装置,所述哈希值生成装置还包括用于保持经受了处理的数据的保持单元,
其中,所述保持单元以各自在x轴方向上有1位、在y轴方向上有n位以及在z轴方向上有s位的结构为单位接收数据的输入,并且以各自在x轴方向上有m位、在y轴方向上有1位以及在z轴方向上有s位的结构为单位输出数据。
16.根据权利要求15所述的哈希值生成装置,其中,所述保持单元在保持在x轴方向上有1位、在y轴方向上有n位以及在z轴方向上有s位的结构的、5个单位的数据之后,输出在x轴方向上有m位、在y轴方向上有1位以及在z轴方向上有s位的结构的、1个单位的数据。
17.根据权利要求16所述的哈希值生成装置,其中,所述第一处理单元包括用于计算在x轴方向上的位的和的第六处理单元和用于将该计算出的和与预定位相加的第七处理单元。
18.根据权利要求17所述的哈希值生成装置,其中,所述第六处理单元在所述保持单元接收在x轴方向上有1位、在y轴方向上有n位以及在z轴方向上有s位的结构的、5个单位的数据的期间,执行处理。
19.根据权利要求14所述的哈希值生成装置,所述哈希值生成装置还包括用于输出通过使用所述第一处理单元、所述第二处理单元、所述第三处理单元、所述第四处理单元以及所述第五处理单元执行所述循环处理而获得的哈希值的输出单元。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013-045574 | 2013-03-07 | ||
JP2013045574 | 2013-03-07 | ||
JP2014017413A JP6113091B2 (ja) | 2013-03-07 | 2014-01-31 | ハッシュ値生成装置 |
JP2014-017413 | 2014-01-31 | ||
PCT/JP2014/054246 WO2014136594A1 (en) | 2013-03-07 | 2014-02-17 | Hash value generating device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105009186A true CN105009186A (zh) | 2015-10-28 |
CN105009186B CN105009186B (zh) | 2018-03-02 |
Family
ID=51491116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480012039.3A Active CN105009186B (zh) | 2013-03-07 | 2014-02-17 | 哈希值生成装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9973336B2 (zh) |
EP (1) | EP2965305B1 (zh) |
JP (1) | JP6113091B2 (zh) |
KR (1) | KR101964495B1 (zh) |
CN (1) | CN105009186B (zh) |
WO (1) | WO2014136594A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112005288A (zh) * | 2018-04-26 | 2020-11-27 | 日本电信电话株式会社 | 秘密聚合中值系统、秘密计算装置、秘密聚合中值方法、以及程序 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6238774B2 (ja) | 2013-02-21 | 2017-11-29 | キヤノン株式会社 | ハッシュ値生成装置 |
US9800403B1 (en) * | 2016-09-30 | 2017-10-24 | International Business Machines Corporation | Message processing using extended output functions |
GB2582900A (en) * | 2019-03-18 | 2020-10-14 | Pqshield Ltd | Cryptography using a cryptographic state |
RU2747517C1 (ru) * | 2020-03-05 | 2021-05-06 | федеральное государственное автономное образовательное учреждение высшего образования "Национальный исследовательский ядерный университет МИФИ" (НИЯУ МИФИ) | Способ хеширования информации |
GB2608999A (en) | 2021-07-15 | 2023-01-25 | Pqshield Ltd | Cryptographic system for post-quantum cryptographic operations |
KR102696204B1 (ko) * | 2021-12-03 | 2024-08-19 | 국민대학교산학협력단 | Sha-3 처리를 위한 그래픽 처리 장치 및 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04148372A (ja) * | 1990-10-11 | 1992-05-21 | Fujitsu Ltd | ハッシュ値算出処理方式 |
CN101872338A (zh) * | 2010-06-04 | 2010-10-27 | 杭州电子科技大学 | 一种改进的sha-1哈希算法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4148372B2 (ja) * | 1998-03-06 | 2008-09-10 | 財団法人鉄道総合技術研究所 | 鉄道用および舗装用の速硬性セメント系の注入材とコンクリート |
WO2001029776A1 (en) * | 1999-10-18 | 2001-04-26 | Stamps.Com | Cryptographic module for secure processing of value-bearing items |
US7489779B2 (en) * | 2001-03-22 | 2009-02-10 | Qstholdings, Llc | Hardware implementation of the secure hash standard |
US7249255B2 (en) * | 2001-06-13 | 2007-07-24 | Corrent Corporation | Apparatus and method for a hash processing system using multiple hash storage areas |
JP5055993B2 (ja) | 2006-12-11 | 2012-10-24 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
US8290146B2 (en) | 2007-01-19 | 2012-10-16 | Mitsubishi Electric Corporation | Ciphertext generating apparatus, cryptographic communication system, and group parameter generating apparatus |
US8275125B2 (en) * | 2008-04-21 | 2012-09-25 | Tata Consultancy Services Ltd | Method for designing a secure hash function and a system thereof |
JP5414346B2 (ja) | 2009-04-28 | 2014-02-12 | 三菱電機株式会社 | データ処理装置 |
JP5447510B2 (ja) * | 2009-05-11 | 2014-03-19 | 日本電気株式会社 | タグ生成装置、タグ検証装置、通信システム、タグ生成方法、タグ検証方法および記録媒体 |
US20110040977A1 (en) * | 2009-08-11 | 2011-02-17 | Apple Inc. | Sponge and hash functions using a rubik's cube puzzle process |
EP2507708B1 (en) * | 2009-12-04 | 2019-03-27 | Cryptography Research, Inc. | Verifiable, leak-resistant encryption and decryption |
US8441391B2 (en) * | 2010-05-05 | 2013-05-14 | Roundtrip Llc | Ultra-secure communication methods and apparatus |
JP5269137B2 (ja) | 2011-04-07 | 2013-08-21 | 三菱電機株式会社 | 演算装置 |
US9772845B2 (en) * | 2011-12-13 | 2017-09-26 | Intel Corporation | Method and apparatus to process KECCAK secure hashing algorithm |
US9100184B2 (en) * | 2011-12-22 | 2015-08-04 | Intel Corporation | Instructions processors, methods, and systems to process BLAKE secure hashing algorithm |
JP6238774B2 (ja) | 2013-02-21 | 2017-11-29 | キヤノン株式会社 | ハッシュ値生成装置 |
-
2014
- 2014-01-31 JP JP2014017413A patent/JP6113091B2/ja active Active
- 2014-02-17 WO PCT/JP2014/054246 patent/WO2014136594A1/en active Application Filing
- 2014-02-17 KR KR1020157027625A patent/KR101964495B1/ko active IP Right Grant
- 2014-02-17 CN CN201480012039.3A patent/CN105009186B/zh active Active
- 2014-02-17 US US14/773,272 patent/US9973336B2/en active Active
- 2014-02-17 EP EP14761031.5A patent/EP2965305B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04148372A (ja) * | 1990-10-11 | 1992-05-21 | Fujitsu Ltd | ハッシュ値算出処理方式 |
CN101872338A (zh) * | 2010-06-04 | 2010-10-27 | 杭州电子科技大学 | 一种改进的sha-1哈希算法 |
Non-Patent Citations (2)
Title |
---|
BERNHARD JUNGK ,JURGEN APFELBECK: "Area-dfficient FPGA Implementations of the SHA-3 Finalists", 《2011 INTERNATIONAL CONFERENCE ON RECONFIGURABLE COMPUTING AND FPGAS》 * |
GUIDE BERTONI,JOAN DAEMEN,MICHAEL PEETERS,GILLES VAN ASSCHE: "the Keccak reference", 《HTTP://KECCAK.NOEKEON.ORG/》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112005288A (zh) * | 2018-04-26 | 2020-11-27 | 日本电信电话株式会社 | 秘密聚合中值系统、秘密计算装置、秘密聚合中值方法、以及程序 |
CN112005288B (zh) * | 2018-04-26 | 2023-08-04 | 日本电信电话株式会社 | 秘密聚合中值系统、秘密计算装置、秘密聚合中值方法、以及记录介质 |
Also Published As
Publication number | Publication date |
---|---|
KR101964495B1 (ko) | 2019-04-01 |
US9973336B2 (en) | 2018-05-15 |
KR20150128836A (ko) | 2015-11-18 |
EP2965305A1 (en) | 2016-01-13 |
CN105009186B (zh) | 2018-03-02 |
EP2965305B1 (en) | 2020-10-28 |
JP6113091B2 (ja) | 2017-04-12 |
JP2014197169A (ja) | 2014-10-16 |
US20160013932A1 (en) | 2016-01-14 |
WO2014136594A1 (en) | 2014-09-12 |
EP2965305A4 (en) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105009186A (zh) | 哈希值生成装置 | |
KR101749528B1 (ko) | 해시 값 생성 장치 | |
JP6139859B2 (ja) | ハッシュ値生成装置およびハッシュ値生成方法 | |
Poroshenko | Bases for partially commutative Lie algebras | |
Bernstein et al. | Faster 2-regular information-set decoding | |
Smith | Perfect Zero-Divisor Graphs of 𝕫ₙ | |
Ilić et al. | Generalized lucas cubes | |
Yunus et al. | Gröbner-Shirshov basis of quantum group of type | |
CN103765493A (zh) | 数字平方计算机实现的方法和设备 | |
Duchin et al. | A sharper threshold for random groups at density one-half | |
Laitinen et al. | Simulating parity reasoning | |
Promislow et al. | Supermodular functions on finite lattices | |
JP2015114429A (ja) | ハッシュ値生成装置およびその制御方法 | |
Zhang et al. | A new one-bit difference collision attack on HAVAL-128 | |
CN102222204A (zh) | 基于容错的md5全流水硬件加密方法 | |
Suppakitpaisarn et al. | Fast elliptic curve cryptography using minimal weight conversion of d integers | |
Ahmed et al. | A new approach to speed up combinatorial search strategies using stack and hash table | |
Worsch et al. | Real-time sorting of binary numbers on one-dimensional CA | |
Heij | Solving the 5x5x5 Rubik’s cube: heuristic approach | |
Bright | Isomorph-Free Exhaustive Generation in SAT Solving | |
Chen et al. | Faculty of Mathematics and Statistics, Hubei Key Laboratory of Applied Mathematics, Hubei University, Wuhan, China {xiangzejun, xzeng}@ hubu. edu. cn | |
Kuzmin et al. | Algorithms for the boundedness problem for Minsky counter machines | |
Vascimini | Extremal Graph Theory: Turán’s Theorem | |
Umeo | Recent developments in firing squad synchronization algorithms: Smaller solutions | |
Okiyoshi | Generating functions of Box and Ball System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |