CN102138170A - 数据转换器、数据转换方法和程序 - Google Patents
数据转换器、数据转换方法和程序 Download PDFInfo
- Publication number
- CN102138170A CN102138170A CN200980132296XA CN200980132296A CN102138170A CN 102138170 A CN102138170 A CN 102138170A CN 200980132296X A CN200980132296X A CN 200980132296XA CN 200980132296 A CN200980132296 A CN 200980132296A CN 102138170 A CN102138170 A CN 102138170A
- Authority
- CN
- China
- Prior art keywords
- data
- output
- function
- transposition
- compression
- 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
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
-
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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/122—Hardware reduction or efficient architectures
-
- 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
-
- 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/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- 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/30—Compression, e.g. Merkle-Damgard construction
Abstract
实现一种具有改进的压缩函数执行部的构造。在并行地处理构成所述消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理。多个压缩函数执行部中的各压缩函数执行部进行利用消息调度部的处理和利用链接变量处理部的处理,该消息调度部接收消息数据的对应分割数据块以进行消息调度处理,该链接变量处理部接收来自消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与中间值的位数相同的输出数据。分别进行并行处理的多个压缩函数执行部共同地使用消息调度部和链接变量处理部中的一个或者两个并且允许利用单个消息调度部或者单个链接变量处理部。通过这样的构造实现硬件配置尺寸的减少和处理步骤的简化。
Description
技术领域
本发明涉及数据转换器、数据转换方法和程序。更具体地,本发明涉及例如对输入消息数据进行哈希值生成处理的数据转换器、数据转换方法和程序。
背景技术
在数据转换处理如加密处理中经常使用对输入数据执行哈希处理的哈希(Hash)函数。哈希函数是用于根据供应的消息来计算定长压缩值(摘要)的函数。已知的哈希函数包括具有128位输出值的MD5、具有160位输出值的SHA-1、具有256位输出值的SHA-256等。
例如基于对增加抗分析性的请求,哈希函数需要以下抗性:
抗前像性(Preimage resistance)
抗第2前像性(Second preimage resistance)
抗冲突性(Collision resistance)
下文将简述这些抗性。
在生成y=h(x)作为输出的哈希函数(其中输入是x而哈希函数是h)中,抗前像性对应于计算输入x使得输出y为y=h(x)的难度。
抗第2前像性对应于在一个输入值x已知的情况下发现满足h(x’)=h(x)的另一输入值x’的难度。
抗冲突性对应于发现满足h(x’)=h(x)的两个不同输入值x和x’的难度。
认为这些抗性越高、哈希函数具有的安全特性就越高。
在前级使用的哈希函数中,分析方法的最新发展发现了上述抗性的弱点。例如已经变得清楚,在经常用作哈希函数的MD5、SHA-1等中,抗冲突性不满足大量系统请求级。另外作为现有哈希函数,包括输出长度相对长的SHA-256;然而仍有安全特性之忧,因为SHA-256遵循SHA-1的设计原理,因此期望有基于其它设计原理的具有更高安全特性的哈希函数。
发明内容
做出本发明以解决上述问题,并且本发明的目的在于提供一种实现具有高安全特性和高处理效率的哈希函数的数据转换器、数据转换方法和程序。
本发明的第一方面提供一种数据转换器,该数据转换器包括:数据转换部,接收消息数据以生成哈希值,该数据转换部被配置成在并行地处理构成消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理,其中多个压缩函数执行部中的各压缩函数执行部被配置成进行以下处理:利用消息调度部的处理,该消息调度部接收消息数据的对应分割数据块以进行消息调度处理;以及利用链接变量处理部的处理,该链接变量处理部接收来自消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与中间值的位数相同的输出数据,并且在多个处理序列中分别进行并行处理的多个压缩函数执行部被配置成共同地使用消息调度部和链接变量处理部中的一个或者两个并且允许利用单个消息调度部或者单个链接变量处理部。
另外,在本发明的数据转换器的一个实施例中,在多个处理序列中分别进行并行处理的多个压缩函数执行部包括由多个压缩函数执行部共同地使用的单个共同消息调度部,共同消息调度部被配置成接收构成消息数据的分割数据块、通过对分割数据块进行消息调度处理来生成输出数据并且将所生成的输出数据输出到多个链接变量处理部,并且多个链接变量处理部中的各链接变量处理部被配置成并行执行如下处理,在各处理中对应的链接变量处理部接收来自共同消息调度部的输出和作为来自前级压缩函数执行部的输出的中间值来对接收的数据进行压缩,以由此生成位数与中间值的位数相同的输出数据。
另外,在本发明的数据转换器的一个实施例中,在多个处理序列中分别进行并行处理的多个压缩函数执行部包括由多个压缩函数执行部共同地使用的单个共同链接变量处理部,在进行并行处理的多个压缩函数执行部中的各压缩函数执行部中提供的多个消息调度部被配置成接收消息数据的相同的分割数据块、通过消息调度处理来生成输出数据并且将所生成的输出数据输出到共同链接变量处理部,并且共同链接变量处理部被配置成接收多个消息调度部的输出和作为来自前级压缩函数执行部的输出的中间值来对接收的数据进行压缩以由此生成位数与中间值的位数相同的输出数据。
另外,在本发明的数据转换器的一个实施例中,在进行并行处理的多个压缩函数执行部中的各压缩函数执行部中提供的多个消息调度部被配置成接收消息数据的相同分割数据块、通过消息调度处理来生成输出数据并且将所生成的输出数据的异或运算输出到共同链接变量处理部。
另外,在本发明的数据转换器的一个实施例中,消息调度部由具有中间输出的转置函数执行部配置,转置函数执行部重复地执行转置处理以输出作为各转置处理的结果的中间值,并且链接变量处理部被配置成包括具有附加输入的转置函数执行部,转置函数执行部利用从具有中间输出的转置函数执行部输出的中间值作为附加输入来重复地执行转置处理。
另外,在本发明的数据转换器的一个实施例中,链接变量处理部被配置成利用XOR结果作为用于随后的转置处理的输入数据,XOR结果是在从具有中间输出的转置函数执行部输出的中间值与前级中的转置处理的结果之间的异或运算的逻辑值。
另外,在本发明的数据转换器的一个实施例中,转置函数执行部执行的各转置处理包括对输入数据的部分或者全部进行的非线性转换处理和作为数据互换处理的交换处理。
另外,在本发明的数据转换器的一个实施例中,非线性转换处理是包括使用常数的异或运算、非线性转换和使用线性转换矩阵的线性转换的处理。
另外,在本发明的数据转换器的一个实施例中,在转置函数执行部执行的各转置处理中进行的线性转换处理是利用多个不同矩阵根据DSM(扩散切换机制)执行的处理。
另外,在本发明的数据转换器的一个实施例中,转置函数执行部执行的转置处理被配置成分别利用互不相同的多个常数组来进行数据处理,并且通过对基本组进行的数据转换处理来生成的互不相同的多个常数组分别使用于转置处理中,基本组定义为将在一个转置处理中使用的常数组。
另外,在本发明的数据转换器的一个实施例中,将作为基本组利用的常数组由通过向互不相同的多个初始值S和T应用转换规则来生成的多个常数配置,并且转换规则被配置成包括对初始值进行的更新处理,更新处理由以下表达式代表:
S←S·xa,T←T·x
其中a≠b。
另外,在本发明的数据转换器的一个实施例中,对基本组进行的数据转换处理是允许对构成基本组的各常数的位旋转操作的处理或者允许在构成基本组的各常数与预定掩码数据之间的逻辑运算的处理。
另外,在本发明的数据转换器的一个实施例中,数据转换部被配置成进行允许最终输出的哈希值在位数上减少的减少处理,并且根据预定计算表达式来计算在构成数据转换部的输出的多个输出数据级数中的各级数的输出位中的将减少的位数,然后根据计算的结果来执行减少处理。
另外,在本发明的数据转换器的一个实施例中,数据转换部还包括对输入数据执行数据加扰处理的加扰处理部,多个压缩函数执行部被配置为被允许接收消息数据的所有分割数据块的多级压缩部,多级压缩部中的一些压缩部被配置成接收加扰处理部的输出和消息数据的分割数据块这两者以基于接收的数据来执行数据压缩处理,多级压缩部中的一些压缩部被配置成接收前级压缩部的输出和消息数据的分割数据块这两者以基于接收的数据来执行数据压缩处理,并且位于多级压缩部的最后一级中的压缩部被配置成输出消息数据的哈希值。
另外,本发明的第二方面提供一种数据转换方法,该方法是由数据转换器执行的数据转换处理方法,该数据转换方法包括:数据转换步骤,通过数据转换部接收消息数据以生成哈希值,数据转换步骤是在并行地处理构成消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理的步骤,其中多个压缩函数执行部中的各压缩函数执行部进行:利用消息调度部的处理,消息调度部接收消息数据的对应分割数据块以进行消息调度处理;以及利用链接变量处理部的处理,链接变量处理部接收来自消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与中间值的位数相同的输出数据,并且在多个处理序列中分别进行并行处理的多个压缩函数执行部共同地使用消息调度部和链接变量处理部中的一个或者两个并且进行利用单个消息调度部或者单个链接变量处理部的处理。
另外,本发明提供一种在数据转换器中执行数据转换处理的程序,该程序包括:数据转换步骤,通过数据转换部接收消息数据以生成哈希值,数据转换步骤是在并行地处理构成消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理的步骤,其中该程序允许多个压缩函数执行部中的各执行部执行:利用消息调度部的处理,消息调度部接收消息数据的对应分割数据块以进行消息调度处理;以及利用链接变量处理部的处理,链接变量处理部接收来自消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与中间值的位数相同的输出数据,并且该程序允许在多个处理序列中分别进行并行处理的多个压缩函数执行部共同地使用消息调度部和链接变量处理部中的一个或者两个并且进行利用单个消息调度部或者单个链接变量处理部的处理。
此外,本发明的程序例如是被允许以计算机可读格式通过存储介质或者通信介质向能够执行各种程序代码的通用系统提供的程序。以计算机可读格式提供程序;因此根据程序的处理在计算机系统上实施。
本发明的更多目的、特征或者优点根据基于附图对本发明一个示例性实施例的下文描述或者更多具体描述将变得清楚。此外,在本说明书中,“系统”是指多个设备的逻辑集合配置、无论个别组成设备是否容纳于一个罩中。
本发明的一个示例性实施例具有如下构造,在该构造中在并行地处理构成所述消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理。多个压缩函数执行部中的各压缩函数执行部进行利用消息调度部的处理和利用链接变量处理部的处理,该消息调度部接收消息数据的对应分割数据块以进行消息调度处理,该链接变量处理部接收来自消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与中间值的位数相同的输出数据。在多个处理序列中分别进行并行处理的多个压缩函数执行部共同地使用消息调度部和链接变量处理部中的一个或者两个并且允许利用单个消息调度部或者单个链接变量处理部。这样的构造实现了硬件配置尺寸的减少和处理步骤的简化。
附图说明
图1是将压缩函数(f)描述为数据压缩部的图示。
图2是描述具有消息填充(一种典型的域扩展方法)的MD(Merkle-Damgard)构造的图示。
图3是描述级联哈希构造的图示,该构造利用具有很小输出位大小的压缩函数来实现具有很大输出位大小的哈希值。
图4是描述具有增强安全特性的压缩部(压缩函数)的构造的图示。
图5是描述哈希函数构造示例的图示,在该示例中,图4中所示压缩函数单元50连接为MD构造。
图6是将哈希函数构造示例描述为图5中所示构造使用压缩函数单元55的修改示例的图示,在该示例中,各压缩函数中的加扰函数F以及压缩函数f1和f2的顺序改变。
图7是描述通过从图6中所示构造中去除最后一个压缩函数单元中的加扰函数F来配置的构造示例的图示。
图8是描述设置每两个压缩函数处理插入加扰函数F的构造示例的图示。
图9是描述推广的哈希函数执行部的构造示例的图示,在该示例中设置每k个压缩函数插入加扰函数F。
图10是描述利用两个压缩函数来实现加扰函数F的构造示例的图示。
图11是描述在序列中有m个压缩函数的哈希函数的推广的构造示例的图示,其中m是2或者更大的整数。
图12是描述具有mb位输入/输出的加扰函数F的构造示例的图示。
图13是描述压缩函数f的内部构造示例的图示。
图14是描述为具有MD构造的哈希函数提供由消息调度部(MS部)和链接变量(CV)处理部构成的压缩函数构造示例的图示。
图15是描述一般使用消息调度部的哈希函数的构造示例的图示。
图16是描述压缩函数的构造示例的图示,该示例扩展压缩函数中的输入消息大小。
图17是描述具有如下构造的压缩函数的构造示例的图示,在该构造中,消息调度部分割成两个部分。
图18是描述具有如下构造的压缩函数的构造示例的图示,在该构造中,消息调度部分割成两个部分并且包括异或运算(XOR)部。
图19是描述压缩函数的构造示例的图示,该函数被设置成通过推广图17中所示的压缩函数的构造来响应于na位输入。
图20是描述压缩函数的构造示例的图示,该函数被设置成通过推广图18中所示的压缩函数的构造来响应于na位输入。
图21是描述具有附加输入的转置函数的示例的图示。
图22是描述具有中间输出的转置函数的示例的图示。
图23是描述使用现有转置函数的压缩函数的构造示例的图示。
图24是描述扩展向压缩函数施加的数据大小的压缩函数的构造示例的图示。
图25是描述将输入位长度扩展为3a位的压缩函数的构造示例的图示。
图26是描述将输入位长度扩展为3a位的压缩函数的构造示例的图示。
图27是描述在序列中的两个压缩函数共同地使用消息调度部的构造示例的图示。
图28是描述扩展向压缩函数施加的数据大小的压缩函数的构造示例的图示。
图29是描述由具有中间输出的两个转置函数与具有附加输入的两个转置函数的组合构成的加扰函数F的构造示例的图示。
图30是描述被允许用作内部转置的转置函数的具体构造示例的图示。
图31是描述在内部转置部(转置函数)中配置的非线性转换部的内部构造的示例的图示。
图32是描述为了使用多个不同矩阵作为在内部转置部(转置函数)的非线性转换部中使用的线性转换矩阵[M]而设置的内部转置部的重复回合的构造示例的图示。
图33是描述为了使用多个不同矩阵作为线性转换矩阵[M]而设置的内部转置部的重复回合的构造示例的图示。
图34是描述一种为总转置生成常数Cij(2)、Cij(3)、…Cij(m)的技术的图示。
图35是描述一种减少哈希函数的输出位长度的技术的示例的图示。
图36是描述一种减少哈希函数的输出位长度的技术的示例的图示。
图37是IC模块的配置示例的图示,该模块作为执行根据本发明的处理的数据转换器。
具体实施方式
下文将参照附图具体描述本发明的数据转换器、数据转换方法和程序。
将按以下顺序给出描述。
1.域扩展方法
2.用于扩展输出大小的新颖域扩展方法
3.提高新颖域扩展方法的处理效率的方法
4.实现加扰函数F的方法
5.域扩展方法的推广
6.加扰函数的F的构造的推广
7.使用不同压缩函数
8.实现压缩函数的内部处理的高效方法
9.扩展输入消息长度的方法
10.在CV处理部和MS部中使用重复转置来实现哈希函数的方法
11.扩展MS部大小的方法
12.扩展CV处理部大小的方法
13.扩展CV处理部和MS部大小的方法
14.为域扩展方法构造加扰函数F的方法
15.实现扩散能力高的转置处理的方法
16.生成输出高度独立的转置函数的方法
17.生成向转置函数施加的常数的处理
18.为多个总转置生成常数的方法
19.减少哈希函数的输出值的技术
20.数据转换器的配置示例
[1.域扩展方法]
如上文所述,希望哈希函数执行部具有上述各种抗性、也就是抗前像性、抗第2前像性和抗冲突性。
注意本发明的数据转换器包括下文将描述的各种函数执行部,比如哈希函数执行部和压缩函数执行部。在下文描述中,在本发明的数据转换器中执行各函数的函数执行部中执行这里简单表达的术语“函数”。注意利用硬件或者软件或者二者来实现函数执行部。
哈希函数将压缩函数用于根据施加的消息来计算定长压缩值(摘要)。当构造由执行哈希函数的硬件或者软件构成的哈希部时,有必要让哈希部具有一种考虑到上述各种抗性的构造。允许哈希部的构造广泛地分割成两个以下等级:
(1)作为第一等级的域扩展部,以及
(2)作为第二等级的压缩函数的内部构造。
域是作为哈希函数的输入值的最大可允许位大小(输入大小)。一个压缩函数执行部进行将定长输入值转换成定长输出值的处理;然而一般而言,一个压缩函数执行部具有很小的最大可允许输入位大小并且不被允许处理具有很大位大小的输入值;因此通过连接多个压缩函数来扩展域,从而处置任意长度的消息输入。通过这样的处理允许对具有很长位长度的输入数据进行哈希。进行这样的处理作为域扩展处理。
上述抗性的级别取决于作为第一等级的域扩展构造或者作为第二等级的压缩函数的内部构造。
下文将首先描述前者(即域扩展处理)的一种新颖方案。压缩函数是用于将作为输入值的位串转换成比输入位长度更短的位串的函数。图1图示了作为压缩部的压缩函数(f)。
图1中所示的压缩函数10是用于接收具有a位的输入值X和具有b位的初始值Y(也就是说,共计a+b位)以生成具有b位的输出Z的函数。作为压缩函数的输入值的最大可允许位大小称为域(输入大小)。不允许仅由一个压缩函数10处理长输入消息;因此适当地连接压缩函数以扩展域(输入大小),从而允许扩展输入消息大小。换而言之,允许输入具有很长位长度的数据。
图2图示了具有消息填充(一种典型的域扩展方法)的MD(Merkle-Damgard)构造。注意例如在R.Merkle的″One way hash functions and des″(见Proceedings of Crypto(密码学报)′89(G.Brassard编辑),LNCS中的no.435,第428-446页,Springer-Verlag(施普林格出版社),1989)和I.Damgard的″A design principle for hash functions″(见Proceedings of Crypto(密码学报)′89(G.Brassard编辑),LNCS中的no.435,第417-427页,Springer-Verlag(施普林格出版社),1989)。
如图2中所示,MD构造是一种允许通过串联布置压缩函数(f)来扩展输入大小的构造。通过填充(padding)将输入消息校正为位数为a位的整数倍(压缩函数的消息输入部大小)的值,填充是作为用于位长度调节的位数据添加处理而进行的。M0、M1、M2、…、Mn-2、Mn-1|填充是受到填充的输入消息分割成的a位块。[Mn-1|填充]是通过向作为输入消息最后一块的数据[Mn-1]添加作为附加位块的填充数据来获得的输入位大小为a位的数据。
为了生成消息的摘要,在MD构造中利用多个压缩函数来重复如下操作:在该操作中向压缩函数11施加并且在压缩函数11中压缩具有b位的预定初始值IV和第一分割消息M0以生成具有b位的值作为中间值、然后向压缩函数12施加并且在压缩函数12中压缩中间值和后继消息,以最终获得哈希值(H),。这时的中间值称为链接变量。
已知只要各压缩函数具有抗冲突性,就允许MD构造表明整个哈希函数具有抗冲突性,并且MD构造经常用于实际的哈希函数。使用MD构造的典型哈希函数包括MD5和SHA-1。
[2.用于扩展输出大小的新颖域扩展方法]
在上述构造中描述了b位输出的情况,现在下文将考虑生成具有很长的位长度为2b位的哈希值的哈希函数的构造。
在原样使用上述MD构造的情况下,有必要准备具有2b位输出的压缩函数。然而一般而言,难以重新构造具有很大输出和高安全特性的压缩函数。有必要设计新颖压缩函数并且评估该压缩函数的安全特性,并且输出大小越大,就越难以设计和评估压缩函数。因此希望利用已经评估的具有b位输出的压缩函数来构造具有2b位输出的哈希函数。
作为一种利用具有很小输出位大小的压缩函数来实现具有很大输出位大小的哈希值的相关技术,已知一种级联(cascading)哈希构造。将参照图3描述级联哈希构造。
级联哈希构造是被允许利用并联布置的两个压缩函数来生成具有很大输出大小的哈希值的构造。如图3中所示,通过简单地并联布置两个压缩函数f1和f2来构造级联哈希构造。
然而通过布置这样的两个具有b位输出的压缩函数来执行2b位的输出的哈希函数的安全特性未达到输出大小为2b位的哈希函数的希望水平。已知哈希函数具有与输出大小为b位的哈希函数近似相等的安全特性。例如在A.Joux的″Multicollisions in iterated hash functions.application to cascaded constructions″(见Proceedings of Crypto′04(M.Franklin,ed.),no.3152in LNCS,p.306-316,Springer-Verlag,2004)中描述了这一点。
接着下文将参照图4描述根据本发明一个示例实施例的具有增强安全特性的压缩部(压缩函数)的构造。图4图示了压缩函数单元50,该单元是具有a位输入和2b位输出的压缩部。图4中所示压缩函数单元50包括压缩函数f1和f2(具有a+b位输入和b位输出的两个独立数据压缩部)以及加扰函数F(作为具有2b位输入/输出的数据加扰部)。换而言之,函数单元50包括一个加扰函数F以及两个压缩函数f1和f2的序列。
压缩函数单元50接收a位数据[X]和2b位数据[Y]作为输入、也就是共计2b+a位的输入。在输入中,2b位数据[Y]穿过具有2b位输入/输出的加扰函数F并且被加扰。接着,来自加扰函数F的2b位输出被分割成b位数据块,并且b位数据块之一和作为压缩函数单元50的另一输入的a-位数据X由单元中的压缩函数f1处理。另一b位数据块和a位数据X同时由单元中的压缩函数f2处理。最终,通过组合f1和f2的输出来生成的2b位是压缩函数50的输出。注意加扰函数F是用于对接收的2b位数据进行加扰并且输出2b位数据的函数并且是与两个压缩函数f1和f2不同的压缩函数。
图5图示了哈希函数构造示例,在该示例中连接图4中所示压缩函数单元50作为用于域扩展的MD构造从而允许处理具有很长位长度的输入。图5中所示数据转换器包括由MD构造构成的数据转换部。图5中所示构造是一种由包括n个参照图4描述的压缩函数单元50的数据转换部构成的构造。换而言之,数据转换器是作为由n个如下压缩函数单元50构成的哈希函数执行部的数据转换器,该压缩函数单元包括具有2b位输入/输出的一个加扰函数F以及具有a+b位输入和b位输出的两个压缩函数f1和f2的序列。
在图5中所示哈希函数中,压缩函数单元50-0至50-(n-1)用作n级的序列,并且从最后一级中的压缩函数单元50-(n-1)生成2b位哈希值(H1|H2)。
第一级中的压缩函数单元50-0接收位输入M0至Mn-1中的第一a位输入M0以及两个b位初始值IV1和IV2,并且压缩函数f1和f2分别生成b位输出、也就是共计2b位的输出。后继级中的压缩函数单元接收从前级中的压缩函数单元中的压缩函数f1和f2施加的2b位以及作为M0至Mn-1中的每个的组成位的a位以生成2b位的输出。在以后级中的压缩函数单元中重复地执行相同处理,并且最后一级中的压缩函数单元接收从前级中的压缩函数单元施加的2b位的输出和来自Mn-1的a位以及填充数据以生成b位输出H1和H2、也就是具有共计2b位的哈希值(H1|H2)。
如果构成压缩函数单元50的压缩函数f1和f2以及加扰函数F满足所谓随机启示(oracle)的性质,则表明这种构造具有充分的安全特性。随机启示是一种在向其施加输入时在其中生成随机数并且在向其施加以前已经施加过的输入时再次生成以往生成的随机数的函数。在实践中,通过设计一种用于通过判决程序而无需与随机启示的行为近似的随机数生成来计算输出的函数并且将函数转置成设计的函数来实现该构造。该构造允许在压缩函数中使用具有容易评估的安全特性和轻负荷的处理的部分;因此可实现一种容易设计并且具有高效率的哈希函数。
在示例实施例中,在由多个回合(round)构成的压缩处理回合中至少按照固定间隔执行加扰处理,因而实现一种生成具有增强抗分析性和高安全特性的哈希值的数据转换器。
另外作为图5中所示构造的修改示例,如图6中所示,也在使用压缩函数单元55(其中改变加扰函数F以及压缩函数f1和f2的顺序)的情况下允许使用该构造作为具有相同效果的哈希函数。
另外作为图5和图6中所示构造的修改示例,甚至允许使用通过从图6中所示构造中去除最后一级中的加扰函数F来形成的构造作为在安全特性上具有相同效果的哈希函数。由于通过重新定义图5中所示构造中作为IV1和IV2的第一加扰函数的输出来获得这一构造,所以得到相同效果。
因此允许用具有更小b位输出的压缩函数以及加扰函数F来构造具有2b位输出和高安全特性的哈希函数而不是仅构造用于2b位输出的压缩函数。
另外,在图5、图6和图7的构造中,压缩函数单元中的各压缩函数f1和f2的输出位数为b位,并且中间值、也就是内部压缩函数f1和f2中的链接变量彼此相等。
然而并不一定让内部压缩函数f1和f2的链接变量(CV)的位大小彼此相等。例如通过设置内部压缩函数f1和内部压缩函数f2以分别生成b位链接变量(CV)和c位链接变量(CV),总的链接变量(CV)可以具有b+c位。甚至在这样的构造中,通过更小函数的构造可实现压缩函数单元,因而具有确认安全特性的针对小的位大小的压缩函数适用作为内部压缩函数。
[3.提高新颖域扩展方法的处理效率的方法]
接着将参照图8描述使参照图5和图6描述的域扩展方法的处理效率提高的哈希函数的构造示例。图8是哈希函数构造示例,在该示例中每两个压缩函数处理插入加扰函数F。
压缩函数单元60由加扰函数F、两个内部压缩函数f1和f3的序列以及两个内部压缩函数f2和f4的序列构成。压缩函数单元60中包括的四个内部压缩函数是不同和独立的压缩函数。换而言之,夹入于两个加扰函数F之间的区域中包括的四个压缩函数是独立的压缩函数。
第一级中的压缩函数单元60接收两个b位初始值IV1和IV2,并且加扰函数F对接收的2b位数据进行加扰以向各压缩函数f1和f2施加b位。压缩函数f1和f2接收位输入M0至Mn-1中的第一a位输入M0和来自加扰函数F的b位的输出以生成b位输出,然后分别向后继序列中的压缩函数f3和f4施加b位输出。
压缩函数f3和f4接收位输入M0至Mn-1中的a位输入M1以及分别来自前级序列中的压缩函数f1和f2的b位输出以生成b位输出,然后向后继级中的压缩函数单元的加扰函数施加b位输出。
后继级中的压缩函数单元接收从前级中的压缩函数单元的压缩函数施加的2b位和作为M0至Mn-1的组成位的2a位以生成2b位的输出。在以后级中的压缩函数单元中重复地执行相同处理,并且最后一级中的压缩函数单元接收从前级中的压缩函数单元施加的2b位、Mn-2的a位和Mn-1的a位以及填充数据并且生成b位输出H1和H2、也就是具有共计2b位的哈希值(H1|H2)。
在该构造中,与图5中所示构造相比,减少加扰函数F在处理具有相同长度的消息时的调用次数,因而提高了处理效率。更具体地,在图5中所示构造中,需要两个加扰函数F和四个压缩函数以处理两个a位消息,而在图8中所示方案中,仅由一个加扰函数F和四个压缩函数来处理消息,因而允许去除一个加扰函数,由此实现更高的处理效率。
设置图8中所示构造以重复地执行加扰函数F和压缩函数的两个序列。可以应用如下构造,在该构造中进一步减少加扰函数数目并且压缩函数的每三个或者更多序列插入加扰函数F。在图9中图示了推广哈希函数执行部的构造示例,在该示例中每k个压缩函数插入加扰函数F。在图9中所示构造中,压缩函数单元70包括具有2b位输入/输出的一个加扰函数F和各包括具有a+b位输入和b位输出的两个压缩函数的k个序列。
第一级中的压缩函数单元70接收两个b位初始值IV1和IV2,并且加扰函数F对接收的2b位数据进行加扰以向一个序列中的各压缩函数f1和f2生成b位的输出。压缩函数f1和f2接收位输入M0至Mn-1中的第一a位输入M0和来自加扰函数F的b位的输出以生成b位输出,然后分别向后继序列中的压缩函数f3和f4施加b位输出。
压缩函数f3和f4接收位输入M0至Mn-1中的a位输入M1以及分别来自先级序列中的压缩函数f1和f2的b位输出以生成b位输出,然后分别向后继序列中的压缩函数施加b位输出。重复以下处理k次,在该处理中向后继序列中的各压缩函数施加来自前级序列中的各压缩函数的输出和构成各位输入M0至Mn-1的a位并且各压缩函数生成b位输出,并且向后继压缩函数单元71的加扰函数F施加来自第k个序列中的两个压缩函数的输出。
压缩函数单元71的处理与压缩函数单元70的处理相同。然而向压缩函数单元71施加位输入M0至Mn-1中的后一半的位数据和填充数据。压缩函数单元71的最后一个序列中的两个压缩函数分别生成b位输出H1和H2、也就是具有共计2b位的哈希值(H1|H2)。
注意按照在无损于安全特性的范围内根据哈希值的2b位的输出长度来确定的间隔来插入加扰函数F。例如在b=256的情况下,值k为8。值k越大,处理效率就提高越多。
图9中所示构造是如下构造,在该构造中,加扰函数F接收初始值并且各自包括两个压缩函数的序列如图5中所示构造的情况那样跟随加扰函数F,但是可以使用如下压缩函数单元,在该单元中,参照图6等描述的序列中的两个压缩函数接收初始值并且执行各自包括两个压缩函数的多个序列,然后最终执行加扰函数F。
[4.实现加扰函数F的方法]
加扰函数F是用于对输入位进行加扰以生成位数与输入位相同的数据的函数。下文将参照图10描述用于实现加扰函数的具体构造。图10是其中利用两个压缩函数来实现加扰函数F的构造。
图10(1)中所示加扰函数F80是如下示例,在该示例中利用具有b位输入和a位输出的两个转换部81和82以及具有a+b位输入和b位输出的两个压缩函数83和84来实现具有2b位输入/输出的加扰函数F80。供应将向加扰函数F80施加的两个分割的b位数据块分别作为用于压缩函数83和84的b位输入。
另外分别向转换部81和82同时施加两个b位数据块以转换成a位数据,然后供应a位数据分别作为用于压缩函数83和84的a位输入数据。仅有必要让转换部81和82进行用于调节位长度的简单处理,并且例如用简单的逻辑运算(比如通过复制位进行扩展或者XOR)可实现转换部81和82。
优选地设置转换部81和82以满足以下条件。具体而言,设置转换部81和82,从而用于加扰函数F80的输入的所有2b位对用于压缩函数83和84的a+b位的输入有影响。允许通过图10中所示构造来构造加扰函数F,因而加扰函数F可仅由与两个压缩函数对应的处理来实现。
图10(2)中所示加扰函数F85是其中用于转化部86和87的输入各自具有2b位的示例。在例如a>b的情况下,用如下函数构造转换部86和87,该函数用于连接两个b位数据、然后减少位数以通过简单的运算如XOR来生成a位。优选地设置转换部86和87以满足以下条件。具体而言,设置转换部86和87,从而用于加扰函数F85的输入的所有2b位对用于压缩函数88和89的a+b位的输入有影响。在该构造中,加扰函数F也可仅由与两个压缩函数对应的处理来实现。
允许使用图10中所示加扰函数F的构造作为参照图5至图9的哈希函数的构造中的加扰函数F。当使用这样的构造时,通过重用最初为图5至图9中所示压缩函数单元提供的压缩函数可实现加扰函数F。共享这样的部件在硬件实施时有效减少门规模,并且允许器件尺寸减少和成本减少。
[5.域扩展方法的推广]
参照图5至图9描述的具有MD构造的哈希函数具有向包括两个压缩函数的序列施加来自一个加扰函数F的输出这样的构造或者向一个加扰函数F施加来自包括两个压缩函数的序列的输出这样的构造。换而言之,设置哈希函数以使用包括两个压缩函数的序列。
序列中的压缩函数数目并不限于两个,并且可以使用其中在序列中包括三个或者更多压缩函数的构造。在图11中图示了在序列中有m个压缩函数的哈希函数的推广构造示例,其中m为2或者更大的整数。
图11中的构造基于图9中所示构造并且在序列中包括m个压缩函数而不是两个压缩函数。压缩函数单元90包括具有mb位输入/输出的加扰函数F和各自包括m个压缩函数的多个序列。第一序列中的m个压缩函数f1至fm接收来自F函数的mb位的位数据中的b位和位输入M0至Mn-1中的第一a位输入M0以生成b位的输出并且分别向后继序列中的压缩函数施加b位的输出。第k个序列中的m个压缩函数接收分别来自前级序列中的压缩函数的输出和位输入M0至Mn-1中的a位以生成b位的输出。在第k个序列中的压缩函数的处理之后,向后继压缩函数单元的加扰函数F施加来自压缩函数单元90的最后一个序列中的压缩函数的mb位的输出。
生成来自最后一级中的压缩函数单元91的最后一个序列中的m个压缩函数的b位的输出H1至Hm,即共计2mb位,作为哈希值(H1|H2|…|Hm)。获得的哈希值H1、H2、…、Hm具有最多mb位。通过该技术容易实现具有更长长度的输出的哈希函数。
[6.加扰函数F的构造推广]
接着下文将描述加扰函数F的推广构造。上文参照图10描述了加扰函数F的具体构造。参照图10描述的加扰函数F具有使用包括两个压缩函数的序列的构造。
在图12中图示了通过推广参照图10描述的加扰函数F来形成的具有mb位输入/输出的加扰函数F的构造示例。图12中所示加扰函数F100由如下序列构成,该序列包括具有c位输入和b位输出的m个压缩函数f1至fm以及分别布置于压缩函数f1至fm前面的m个转换部。
在图12中所示示例中,m种不同和独立的压缩函数f1至fm各自具有c位的输入大小。向各转换部暂时施加所有mb位,从而对压缩函数f1至fm施加所有输入位的影响,并且减少输入大小以便对应于各压缩函数的输入大小。在转换部中,例如通过异或(XOR)或者位大小扩展处理根据mb位输入生成c位输出。
转换部必需的条件是作为用于加扰函数F100的输入位的所有mb位对c位输出中的任何位施加影响。该条件可通过简单的操作实现。例如在c=mb的情况下,各转换部可以不变地连接输入并且生成连接的输入。
[7.不同压缩函数的使用]
在上文描述中,在包括分割成多个序列的多个压缩函数f1、f2、…、fm的压缩函数单元中,压缩函数单元中的压缩函数f1至fm具有不同构造。这一构造客观地表明最高安全特性,并且即使使用单个压缩函数,仍然没有立即损害安全特性。在一些情况下,其中重复使用单个压缩函数的构造具有实施上的优点;因此作为一个不同实施例,可以使用其中所有压缩函数相同的构造。类似地,可以应用其中重复地使用较少种类而不是相同种类的压缩函数的构造。
[8.实现压缩函数的内部处理的高效方法]
下文将描述为上述压缩函数单元提供的压缩函数fi的具体构造示例。在图13中图示了压缩函数f的内部构造示例。图13是如下压缩函数f1的构造示例,允许使用该压缩函数作为为参照图5至图12描述的压缩函数单元提供的压缩函数fi并且也作为加扰函数F的组成要素。
如图13中所示,压缩单元120包括消息调度部(MS部)121和链接变量(CV)处理部122。在向压缩函数120施加的a+b位中,向消息调度部(MS部)121施加作为[X]的a位,而向链接变量(CV)处理部122施加作为[Y]的其余b位。
消息调度部(MS部)121基于a位输入通过消息调度处理来生成c位输出并且向链接变量(CV)处理部122施加c位输出。链接变量(CV)处理部122接收用于压缩函数120的b位的输入和从消息调度部(MS部)121施加的c位的输入,也就是b+c位,以生成b位输出[Z]作为从压缩函数120的输出。
图14图示了如下构造示例,在该示例中,为上文参照图5描述的具有MD构造的哈希函数提供图13中所示压缩函数、也就是由消息调度部(MS部)和链接变量(CV)处理部构成的压缩函数。
图14中所示压缩函数单元130如上文参照图5描述的情况那样由加扰函数F以及两个压缩函数f1和f2的序列构成。各压缩函数f1和f2具有参照图13描述的构造。换而言之,各压缩函数f1和f2是由消息调度部(MS部)和链接变量(CV)处理部构成的压缩函数。
在图14中所示示例中,分别由MS1和MS2代表两种压缩函数f1和f2中的消息调度部(MS部),而分别由CV1和CV2代表链接变量(CV)处理部。通过该构造可实现哈希函数。下文将描述一种实现进一步提高处理效率的构造。
在图14中所示各压缩函数单元130-0至130-(n-1)中,向两个压缩函数中的消息调度部MS1和MS2同时施加消息Mi。因此,当相互叠加布置的两个压缩函数共同地使用消息调度部时,允许减少处理。
图15图示了哈希函数的构造示例,在该示例中共同地使用消息调度部。提供了如下压缩函数142,在该压缩函数中,链接变量(CV)处理部CV1和CV2共同地使用一个消息调度部(MS部)141而不是相互叠加布置并且包括在各压缩函数单元130-0至130-(n-1)中的两个压缩函数中的消息调度部。当应用包括一个消息调度部(MS部)141的压缩函数142的构造时,仅有必要在一个压缩函数单元140中让消息调度部(MS部)执行逻辑运算仅一次,并且允许减少逻辑运算的必需次数。例如实现硬件配置尺寸的减少和处理步骤的简化。
参照图15描述的其中多个压缩函数共同地使用消息调度部的构造适用于上述多个哈希构造。换而言之,该构造适用于参照图5至图12描述的包括多个压缩函数的序列和在加扰函数F中的压缩函数的压缩函数单元。
[9.扩展输入消息长度的方法]
接着将研究一种扩展压缩函数中的输入消息长度的方法。图16中所示压缩函数150如参照图13描述的压缩函数120的情况那样由消息调度部(MS部)151和链接变量(CV)处理部152构成。在上述图13中所示的压缩函数120中,用于消息调度部(MS)部121的消息输入具有a位。另一方面,图16中所示压缩函数150包括响应于2a位输入的消息调度部151。
一般而言,响应于a位输入的函数和响应于2a位输入的函数互不相同,并且有必要基于不同安全评估标准来评估它们。因此如果有可能则希望通过组合已经评估其安全特性和性能的响应于a位输入的函数来构造响应于2a位输入的消息调度部。另外,通过这样做来允许再使用响应于a位输入的另一现有函数。后文将描述函数的具体构造示例,而现在将描述一种利用响应于a位输入的函数来构造响应于2a位输入或者更多位输入的压缩函数的方法。
图17图示了具有如下构造的压缩函数160的构造示例,在该构造中,消息调度部分割成两个部分。消息输入(即用于压缩函数160的2a位数据)分割成两个a位数据块,然后消息调度部161和162分别进行根据a位数据块生成c位输出的处理。向一个链接变量(CV)处理部163供应来自两个消息调度部161和162的c位输出。
链接变量(CV)处理部163接收来自两个消息调度部161和162的c位输出和用于压缩函数160的b位输入并且生成b位输出[Z]作为压缩函数的输出。该构造的一个优点在于允许构造如下压缩函数,该压缩函数利用响应于长度比2a短的a位输入的函数(消息调度函数)来实现2a位消息输入。
图18中所示压缩函数170是具有如下构造的压缩函数170的构造示例,在该构造中,消息调度部如图17中所示压缩函数160的情况那样分割成两个部分。压缩函数170包括异或运算(XOR)部174。
消息输入(即用于压缩函数170的2a位数据)分割成两个a位数据块,然后消息调度部171和172分别进行根据a位数据块生成c位输出的处理。异或运算(XOR)部174进行在来自两个消息调度部171和172的c位输出之间的异或运算,然后向一个链接变量(CV)处理部173施加c位输出。
压缩函数170具有如下构造,在该构造中,异或运算部174暂时处理来自两个消息调度部的输出,然后向链接变量(CV)处理部173施加输出。该构造的优点在于,由于没有增加链接变量(CV)处理部173接收的消息的大小,所以允许简化链接变量(CV)处理部173的内部构造。注意异或运算可以用模加法处理代替。
图19图示了通过推广图17中所示压缩函数160的构造来设置成响应于na位输入的压缩函数210的构造示例。向压缩函数210施加的na位消息分割成n个a位消息,并且消息调度部(MS部)211-1至211-n分别独立处理a位消息,而且消息调度部(MS部)211-1至211-n分别生成c位输出。
向链接变量(CV)处理部212施加来自消息调度部(MS部)211-1至211-n的c位输出。链接变量(CV)处理部212接收从n个消息调度部(MS部)211-1至211-n施加的nc位和用于压缩函数210的b位输入并且生成b位输出[Z]作为压缩函数的输出。
这一构造也具有与上文参照图17描述的优点相同的优点。换而言之,允许构造如下压缩函数,该函数利用响应于长度比na位短的a位输入的函数(消息调度部)来实现na位消息输入。
图20图示了通过推广图18中所示压缩函数170的构造来设置成响应于na位输入的压缩函数220的构造示例。向压缩函数220施加的na位消息分割成n个a位消息,并且响应于a位输入的消息调度部(MS部)221-1至221-n分别独立处理a位消息,并且消息调度部(MS部)221-1至221-n分别生成c位输出。
异或运算部(XOR)223-1至223-n分别进行在来自消息调度部(MS部)221-1至221-n的c位输出之间的异或运算,然后向一个链接变量(CV)处理部222施加c位输出。链接变量(CV)处理部222接收来自异或运算部(XOR)223-n的c位输出和作为用于压缩函数220的输入的b位以生成b位输出[Z]作为压缩函数的输出。在这一构造中也允许构造如下压缩函数,该压缩函数利用响应于长度比na位短的a位输入的函数(消息调度部)来实现na位消息输入。注意可以使用通过将异或运算部替换为模加法处理部而形成的构造。
因此,根据本发明示例实施例的数据转换器包括向其同时施加消息数据的分割数据块的多个处理序列并且被配置成利用多个压缩函数执行部(f)来执行数据转换处理。
多个压缩函数执行部(f)中的各压缩函数执行部被配置成进行利用消息调度部(MS)的处理,其中消息调度部(MS)接收消息数据的分割数据块以对数据块进行消息调度处理,和利用链接变量(CV)处理部的处理,其中链接变量(CV)处理部接收来自消息调度部(MS部)的输出和作为来自前级处理部的输出的中间值(链接变量)以通过对接收的数据进行压缩来生成位数与中间值的位数相同的输出数据。
在多个处理序列中分别进行并行处理的多个压缩函数执行部共同地使用消息调度部(MS部)和链接变量(CV)处理部中的一个或者两个并且进行利用单个消息调度部或者单个链接变量处理部的处理。这样的构造实现硬件配置尺寸的减少和处理步骤的简化。
[10.在CV处理部和MS部中使用重复的转置来实现哈希函数的方法]
如上文所述,利用消息调度部(MS部)和链接变量(CV)处理部作为组成要素可实现压缩函数。下文将描述消息调度部(MS部)和链接变量(CV)处理部的具体构造示例。
一般已知基于转置函数的消息调度部(MS部)或者链接变量(CV)处理部。例如已知为哈希函数的SHA-1或者Whirlpool具有基于转置函数的构造。
向消息调度部(MS部)或者链接变量(CV)处理部施加的转置函数优选为具有高加扰能力的转置函数。
下文将描述通过重复地使用相对简单的转置函数来增强加扰能力的转置函数的构造示例。在下文描述中,在转置函数中重复的相对简单的转置称为“内部转置”,而由此实现的转置称为“总转置”。
注意转置函数是用于基于输入值生成输出值、使得输入大小和输出大小彼此相同并且一个输入值对应于一个输出值的函数。此外,转置函数由于它的性质而具有反函数。
在总转置中,可以从外部向两个内部转置处理之间的中间数据添加数据,或者可以向函数的外部施加中间数据。在压缩函数中,利用中间数据,可以向除了总转置的原输入部分和原输出部分之外的部分施加数据的输入或者附加数据的输出。向除了原输入部分之外的部分施加的数据称为附加输入,而向除了原输出之外的部分施加的中间数据称为中间输出。
图21中所示转置函数(转置部)310是具有附加输入311的转置函数的示例。另外,图22中所示转置函数(转置部)320是具有中间输出321的转置函数的示例。
图21和图22中所示转置函数基于响应于a位输入/输出的总转置。在转置函数中依次施加内部转置1至k。图21中所示转置函数310具有如下构造,在该构造中对附加输入311与中间数据进行异或,该中间数据是将向后继内部转置部或者外部施加的内部转置的输出值。在图22中所示转置函数320中,向外部施加作为内部转置的输出值的中间数据作为中间输出321。下文为了区别这种类型的总转置与一般的总转置,图21中所示类型的转置函数称为具有附加输入的转置函数,而图22中所示类型的转置函数称为具有中间输出的转置函数。
注意具有附加输入的转置函数继承转置的以下固有性质。
*当附加数据固定时,一个输入对应于一个输出。
另外,具有中间输出的转置函数具有从转置函数导出的以下性质。
*一个输入对应于一个中间输出。
形成哈希函数的压缩函数如上文参照图13至图20所述由消息调度部(MS)部和链接变量(CV)处理部构成。已经已知具有附加输入的转置函数用于链接变量(CV)处理部而具有中间输出的转置函数用于消息调度部(MS部),并且它们相互连接以构造压缩函数(Whirlpool)。
图23图示了使用现有转置函数的压缩函数330的构造示例。图23中所示压缩函数330具有如下构造,在该构造中提供消息调度部(MS部)331作为具有中间输出的a位转置函数并且中间输出连接到具有用于链接变量(CV)处理部332的附加输入的a位转置函数的附加输入。
在图23中所示构造中,为了简化描述,a位转置函数使用于消息调度部(MS部)331和链接变量(CV)处理部332两者之中;然而消息调度部(MS部)331和链接变量(CV)处理部332的转置大小并不一定彼此相等。在消息调度部(MS部)331和链接变量(CV)处理部332的长度互不相同的情况下,可以通过适当地进行扩展和压缩运算来调节长度。另外,不同于图23中所示情况,所有中间输出并不一定连接于消息调度部(MS部)331与链接变量(CV)处理部332之间,并且可以考虑安全特性或者处理效率来执行比如适当地减少中间输出的处理以选择连接于消息调度部(MS部)331与链接变量(CV)处理部332之间的中间数据。
[11.扩展MS部的大小的方法]
图24图示了压缩函数的构造示例,在该示例中对要向压缩函数施加的数据大小进行扩展。图24中所示压缩函数340是其中将输入位长度扩展成3a位的压缩函数。图24中所示压缩函数340具有与上文参照图18描述的构造相同的构造并且包括两个消息调度部(MS部)341和342以及接收来自两个消息调度部(MS部)341和342的输出的异或运算结果的一个链接变量(CV)处理部343。
两个消息调度部(MS部)341和342各由具有中间输出的转置函数构成。一个链接变量(CV)处理部343由具有附加输入的转置函数构成。
图24中所示转置函数340具有如下构造,在该构造中,2a位输入X分割成a位块,并且分别向两个消息调度部(MS部)341和342施加a位块,而且向一个链接变量(CV)处理部343施加来自两个消息调度部(MS部)341和342的中间输出。当以这样的方式使用具有附加输入的转置函数和具有中间输出的转置函数时,允许容易地增加输入长度。
另外,在图24中所示转置函数340的构造中,不允许用作消息调度部(MS部)的两个转置函数彼此相同,因为在转置函数彼此相同的情况下,当向两个转置函数施加相同a位数据块时,对应的中间输出彼此相同,并且抵消了异或运算(XOR)的结果。因此有必要为消息调度部(MS)准备不同的转置函数。通过使用内部转置的不同构造可实现这一点。
允许通过推广图24中所示压缩函数的构造来将输入X的长度扩展为3a位或者更多。例如通过添加消息调度部(MS部)可实现这一点。
在图24中所示构造中使用一种减少吞吐量以实现加速的方法。在例如如参照图4、图5等描述的构成哈希函数的具有多级构造的压缩函数中,要向压缩函数施加的值是作为数据[X]的消息和作为数据Y的中间值、也就是链接变量(CV)。
这时,用于消息处理的转置的重复次数并不一定等于用于链接变量(CV)序列的转置的重复次数。例如下文将考虑在无损于安全特性的范围内将用于消息的转置的重复次数减半的情况。
图25图示了压缩函数350,在该函数中如图24中所示情况那样将输入位长度扩展为3a位。用于压缩函数350的2a位输入X分割成a位块,并且分别向两个消息调度部(MS部)351和352施加a位块,而且向一个链接变量(CV)处理部353施加两个消息调度部(MS部)351和352的中间输出。
图25中所示两个消息调度部(MS部)351和352中的各消息调度部中的内部转置的重复次数设置成等于链接变量(CV)处理部353中的内部转置的重复次数的一半。
在消息调度部(MS部)351中,去除偶数编号的转置,而在消息调度部(MS部)352中,去除奇数编号的转置;因此将两个消息调度部(MS部)351和352中的各消息调度部中的内部转置的重复次数减半。通过这种构造允许将消息处理必需的运算减半。
在图25中所示压缩函数350中,与图24中所示压缩函数340的构造相比较,处理被减少。因此预期对软件处理进行改进。当在消息调度部(MS部)351和352中交替地去除函数时,作为一个优点,允许将在硬件实施时同时被允许进行的转置次数设置成两次以实现电路规模小的处理、也就是说,可实现硬件尺寸的减少。
另外,如图25中所示情况那样,图26中所示压缩函数360是其中输入位长度扩展成3a位的压缩函数360。用于压缩函数360的2a位输入X分割成a位块,并且分别向两个消息调度部(MS部)361和362施加a位块,而且向一个链接变量(CV)处理部363施加两个消息调度部(MS部)361和362的中间输出。
图26中所示压缩函数360中的链接变量(CV)处理部363具有如下构造,在该构造中,在图25中所示压缩函数350中的链接变量(CV)处理部353前面添加一个内部转置部364,并且内部转置的重复次数加1。
在图26中所示压缩函数360中,在用于链接变量(CV)处理部363的总转置前面添加一个内部转置。根据这一改变,压缩函数360具有如下构造,在该构造中,上消息调度部(MS部)361的输入值与链接变量(CV)处理部363的输入值进行异或。
作为这种构造的一个特性,当关注消息调度部(MS部)之一时,链接变量(CV)处理部363的每两个转置函数施加向链接变量(CV)处理部363施加的中间数据而无例外。通过这种构造,对链接变量(CV)处理部363的序列同等地施加相互叠加布置的消息调度部(MS部)361和362的影响以便实现平衡的加扰。因而有安全评估更容易的优点。
[12.扩展CV处理部的大小的方法]
图27中所示压缩函数370示出了如下构造,其中上文参照图15描述的形成序列的两个压缩函数共同地使用消息调度部。当图15中呈现的域扩展方法应用于b=a的情况时扩展了链接变量(CV)处理部的大小。
在图27中所示压缩函数370中,向消息调度部(MS部)371施加作为消息[X]的组成位的a位的输入,并且分别向链接变量(CV)处理部372和373施加作为两个链接变量(CV)(中间值)的a位的输入。
消息调度部(MS部)371由具有中间输出的转置函数构成。两个链接变量(CV)处理部372和373各由具有附加输入的转置函数构成。设置消息调度部(MS部)371的中间输出作为两个链接变量(CV)处理部372和373的附加输入。在两个链接变量(CV)处理部372和373中的各处理部中对消息调度部(MS部)371的中间输出与输入或者中间值进行异或以向内部转置部施加。可替换地,中间输入用来生成输出值。
[13.扩展CV处理部和MS部的大小的方法]
图28中所示压缩函数380是图27中所示压缩函数370的修改示例并且是如下压缩函数的构造示例,其中通过与上文参照图24描述的压缩函数340的技术相同的技术来扩展要向压缩函数施加的数据大小。图28中所示压缩函数380是其中输入位长度扩展成3a位的压缩函数。图28中所示压缩函数380包括两个消息调度部(MS部)381和382以及接收两个消息调度部(MS部)381和382的输出的异或(XOR)运算结果的一个链接变量(CV)处理部383和384。
两个消息调度部(MS部)381和382各由具有中间输出的转置函数构成。两个链接变量(CV)处理部383和384各由具有附加输入的转置函数构成。提供消息调度部(MS部)381的中间输出作为链接变量(CV)处理部383的附加输入。提供消息调度部(MS)部382的中间输出作为链接变量(CV)处理部384的附加输入。两个链接变量(CV)处理部383和384使用附加输入以与输入或者中间值进行异或、然后向内部转置部施加或者生成输出值。
[14.为域扩展方法构造加扰函数F的方法]
加扰函数F可以由具有中间输出的转置函数与具有附加输入的转置函数构成。图29是由具有中间输出的两个转置函数与具有附加输入的两个转置函数的组合构成的加扰函数F390的构造示例。
加扰函数F390包括两个消息调度部(MS部)391和392以及接收来自两个消息调度部(MS部)391和392的输出的异或运算(XOR)结果的一个链接变量(CV)处理部393和394。
两个消息调度部(MS部)391和392各由具有中间输出的转置函数构成。两个链接变量(CV)处理部393和394各由具有附加输入的转置函数构成。
提供消息调度部(MS部)391的中间输出作为链接变量(CV)处理部393的附加输入。提供消息调度部(MS部)392的中间输出作为链接变量(CV)处理部394的附加输入。两个链接变量(CV)处理部393和394使用附加输入以与输入或者中间值进行异或,然后向内部转置部施加或者生成输出值。
加扰函数F390接收2a位作为输入[Y]并且生成2a位输出[Z]。注意本发明的数据转换器中的转置可以具有如下构造,在该构造中如上述图25和图26中的构造的情况那样去除一些部分。
[15.实现具有高扩散能力的转置处理的方法]
通过如上文所述重复地施加内部转置作为相对简单的转置函数可实现向消息调度部(MS部)或者链接变量(CV)处理部施加的转置函数。当重复地应用这样的相对简单的转置函数时,允许构造具有增强加扰能力的转置函数。
下文将参照图30描述适用作为内部转置的转置函数的具体构造示例。图30是用于构造具有高加扰能力的重复型转置函数、作为在执行总转置的转置函数中使用的内部转置的转置函数的构造示例。通过重复和依次地施加内部转置来构成总转置。图30中的内部转置部(转置函数)410具有其中进行256位输入/输出转置的构造。
向内部转置部(转置函数)410施加的256位数据由32字节数据代表。各字节对应于附图中所示一条输入数据线。
首先将数据分割成4字节(32位)数据块、也就是从左侧起的八组(G1至G8)。在相应的对应非线性转换部411中对从左侧起的奇数编号组(G1、G3、G5和G7)中包括的4字节的数据进行非线性转换处理。
当从非线性转换部411生成四组(G1、G3、G5和G7)中的各组中的4字节(32位)数据时,异或(XOR)运算部412执行4字节(32位)数据与其右侧上的一组中的4字节数据的异或运算以更新四个偶数编号组(G2、G4、G6和G8)中的各组中的4字节(32位)数据。
换而言之,通过以下处理更新四个偶数编号组(G2、G4、G6和G8)中的各组中的4字节(32位)数据:
执行在对组(G1)中的4字节数据的非线性转换结果的数据与组(G2)中的输入数据之间的异或运算,
执行在对组(G3)中的4字节数据的非线性转换结果的数据与组(G4)中的输入数据之间的异或运算,
执行在对组(G5)中的4字节数据的非线性转换结果的数据与组(G6)中的输入数据之间的异或运算,并且
执行在对组(G7)中的4字节数据的非线性转换结果的数据与组(G8)中的输入数据之间的异或运算。
接着在互换部413中进行对各1字节数据的互换处理。移动包括从非线性转换部411生成的数据的四组(G1、G3、G5和G7),使得最左组移向最右组的位置,并且其它组分别移向其紧接左侧上的组的位置。
换而言之,用以下方式执行互换处理以生成数据:
向输出组(Gout8)的位置施加组(G1),
向输出组(Gout2)的位置施加组(G3),
向输出组(Gout4)的位置施加组(G5),并且
向输出组(Gout6)的位置施加组(G7),
另一方面,异或(XOR)运算部412进行如下互换处理,该处理将通过执行异或运算来更新的四个偶数编号组(G2、G4、G6和G8)中的各组中的4字节(32位)数据分割成1字节数据块并且分别将1字节数据块移向不同组。
对组(G2)中的4字节数据进行以下互换处理。将组(G2)的4字节数据分割成来自第一1字节数据块的由A、B、C和D代表的1字节数据块。
用以下方式执行互换处理以生成数据:
生成组(G2)中的第一1字节数据块A作为输出组(Gout1)中的第一1字节数据块,
生成组(G2)中的第二1字节数据块B作为输出组(Gout3)中的第二1字节数据块,
生成组(G2)中的第三1字节数据块C作为输出组(Gout5)中的第三1字节数据块,并且
生成组(G2)中的第四1字节数据块D作为输出组(Gout7)中的第四1字节数据块,
对组(G4)中的4字节数据进行以下互换处理。
组(G4)的4字节数据分割成来自第一1字节数据块的由E、F、G和H代表的1字节数据块。
用以下方式执行互换处理以生成数据:
生成组(G4)中的第一1字节数据块E作为输出组(Gout3)中的第一1字节数据块,
生成组(G4)中的第二1字节数据块F作为输出组(Gout5)中的第二1字节数据块,
生成组(G4)中的第三1字节数据块G作为输出组(Gout7)中的第三1字节数据块,并且
生成组(G4)中的第四1字节数据块H作为输出组(Gout1)中的第四1字节数据块,
对组(G6)中的4字节数据进行以下互换处理。
组(G6)的4字节数据分割成来自第一1字节数据块的由I、J、K和L代表的1字节数据块。
用以下方式执行互换处理以生成数据:
生成组(G6)中的第一1字节数据块I作为输出组(Gout5)中的第一1字节数据块,
生成组(G6)中的第二1字节数据块J作为输出组(Gout7)中的第二1字节数据块,
生成组(G6)中的第三1字节数据块K作为输出组(Gout1)中的第三1字节数据块,并且
生成组(G6)中的第四1字节数据块L作为输出组(Gout3)中的第四1字节数据块。
对组(G8)中的4字节数据进行以下互换处理。
组(G8)的4字节数据分割成来自第一1字节数据块的由M、N、O和P代表的1字节数据块。
用以下方式执行互换处理以生成数据:
生成组(G8)中的第一1字节数据块M作为输出组(Gout7)中的第一1字节数据块,
生成组(G8)中的第二1字节数据块N作为输出组(Gout1)中的第二1字节数据块,
生成组(G8)中的第三1字节数据块O作为输出组(Gout3)中的第三1字节数据块,并且
生成组(G8)中的第四1字节数据块P作为输出组(Gout5)中的第四1字节数据块。
注意在后继回合中的内部转置部(转置函数)中向非线性转换施加输出组(Gout1、Gout3、Gout5和Gout7)。
因此,当执行互换输入和输出的互换处理时,保证在各回合中执行对各字节数据的不同种类的转换处理。
如图30中的内部转置部(转置函数)410的输出部中所示,32字节输出分别由x1至x32代表。例如,图22中所示具有中间输出的转置函数中的中间输出对应于这些输出。换而言之,参照图23至27描述的压缩函数和加扰函数F的各构造中的消息调度部(MS部)由具有中间输出的转置函数构成,并且这些输出对应于从消息调度部(MS部)生成的中间输出。
在图21中所示具有附加输入的转置函数中施加中间输出作为附加输入。例如参照图23至27描述的压缩函数和加扰函数F的各构造中的链接变量(CV)处理部由具有附加输入的转置函数构成,并且施加来自图30中所示内部转置部(转置函数)410的输出部的32字节输出x1至x32作为链接变量(CV)处理部的附加输入。
注意向如参照图23至图27描述的压缩函数或者加扰函数F的内部提供大量图30中所示内部转置部(转置函数)410的构造。可以使用由内部转置部(转置函数)生成的中间数据的所有输出值x1至x32,或者可以使用输出值x1至x32中的仅一些输出值。
例如在图30中所示内部转置部(转置函数)410的构造中,可以仅使用来自非线性转换部411的输出值x5至x8、x13至x16、x21至x24和x29至x32作为中间输出。可替换地,可以仅使用要向后继转置函数中的非线性转换部施加的输出值x1至x4、x9至x12、x17至x20和x25至x28作为中间值。
接着下文将参照图31描述参照图30描述的内部转置部(转置函数)410中的非线性转换部411的内部构造的示例。允许将非线性转换部411构造作为接收4字节数据并且生成4字节数据的转置函数。
图31中所示非线性转换部411接收4字节数据。图31中所示一条线对应于1字节数据块。在异或(XOR)运算部421中,接收的数据分别与非线性转换部411中预定的四个常值(常数)C1、C2、C3和C4进行异或。注意在参照图30描述的内部转置部(转置函数)410中包括四个非线性转换部411,并且这四个非线性转换部具有不同的常值(常数)。后文将描述一种设置常值(常数)的处理。
接着,小型非线性转换部422对在异或(XOR)运算部421中分别与非线性转换部411中预定的四个常值(常数)C1、C2、C3和C4异或的数据执行1字节输入/输出非线性转换处理。
向线性转换部423施加小型非线性转换部422的输出,并且对输出进行线性转换以生成输出。注意这里描述的小型非线性转换部422有时称为S框(S-box)并且可以表示为用于256条1字节数据的转换表。另外执行线性转换部423作为一种通过利用线性转换矩阵(M)对输入数据的转换处理来计算输出数据的处理。线性转换矩阵(M)也称为扩散矩阵并且有时表示为具有GF(28)个元素的4×4矩阵。
在转置函数中希望在施加某些数据对尽可能多的数据的影响之时只要有可能就防止输入/输出中包括的非零元素总数达到低水平。这对提高抗分析性和消除弱点是有效的。具体而言,这是一种防范差分攻击或者线性攻击的措施。
如参照图23至图27所述,为压缩函数或者加扰函数F提供大量图30中所示内部转置部(转置函数)410的构造。换而言之,一种将图30中所示内部转置部(转置函数)410重复多个回合的处理。
大量加密算法具有执行如下回合操作的构造,在该操作中将相同转置处理重复多个回合,并且已知作为一种防范弱点的措施,使用如下所谓DSM(扩散切换机制)是有效的,在该机制中使用多个不同矩阵如两个矩阵[M1]和[M2]而不是一个固定矩阵作为应用于每个回合中的线性转换矩阵[M]。注意例如在本发明申请人的第2007-199156号日本未审查专利申请公开中描述了一种使用DSM的加密算法。
认为DMS克服弱点的效果在哈希函数中也有效。换而言之,当使用多个不同矩阵而不是一个固定矩阵作为应用于所有回合的线性转换矩阵[M]时,哈希函数更加不可区别于随机函数,并且也允许增强各种分析处理的难度。
图32图示了为了使用多个不同矩阵作为在为压缩函数或者加扰函数F提供的多个图30中所示内部转置部(转置函数)410的非线性转换部411中使用的线性转换矩阵[M]而设置的内部转置部的重复回合的构造示例。
图32是为压缩函数或者加扰函数F提供的多个图30中所示内部转置部(转置函数)的两个回合的组合构造的简化图示。内部转置部(转置函数)440具有与图30中所示内部转置部(转置函数)410相同的构造。内部转置部(转置函数)450表示执行后继内部转置的一个回合。各输入线对应于4字节数据。
如图30中所示内部转置部(转置函数)410的情况那样,内部转置部(转置函数)440包括非线性转换部441、异或运算(XOR)部442和互换部443。非线性转换部441具有参照图31描述的构造。
如参照图31所述,非线性转换部441包括异或运算部、小型非线性转换部和线性转换部。线性转换部利用线性转换矩阵M来执行线性转换处理。
在图32中图示了作为非线性转换部441提供的用于4字节数据的四个非线性转换处理部,并且各处理部具有参照图31描述的构造。在图32中,在四个非线性转换部的线性转换部中使用的线性转换矩阵M从左侧起分别由M1、M2、M3和M4代表。线性转换矩阵M1、M2、M3和M4互不相同。
回合中的内部转置部(转置函数)440和450具有相同构造。换而言之,在两个内部转置部(转置函数)440和450中,在四个非线性转换部的线性转换部中使用的线性转换矩阵M从左侧起是M1、M2、M3和M4。因此,相同矩阵使用于内部转置中的相同位置。
根据在图32中所示回合之间连接的线(粗线)理解,在上回合中的内部转置部(转置函数)440中的非线性转换的输出与在下回合中的转置部(转置函数)450的一个非线性转换的输出进行异或。
例如来自上回合中的内部转置部(转置函数)440的非线性转换部441中的最左侧上、具有线性转换矩阵M1的非线性转换部441的输出(附图中的输出A)在异或运算部452中与来自下回合中的内部转置部(转置函数)450的非线性转换部451中最右侧上的具有线性转换矩阵M4的非线性转换部451d的输出(附图中的输出B)进行异或。该结果的输出是附图中所示输出C。
来自上回合中的内部转置部(转置函数)440的非线性转换部441的四个非线性转换部的各输出与来自下回合中的内部转置部(转置函数)450中的非线性转换部451的四个非线性转换部的输出之一进行异或。
进行异或的来自上回合中的非线性转换部441的输出与来自下回合中的非线性转换部451的输出的组合作为各非线性转换部中的线性转换矩阵[M]的组合示出如下。
(1)M1和M4(非线性转换部441a和451d)
(2)M2和M1(非线性转换部441b和451a)
(3)M3和M2(非线性转换部441c和451b)
(4)M4和M3(非线性转换部441d和451c)
当使用不同线性转换矩阵来执行线性转换处理的结果相互作用时,可设想一种使用上述DSM(扩散切换机制)的构造以便增加抗分析性。
注意两个矩阵的连接由符号“|”代表,并且当选择和使用为了增加分支数目(至例如3个或者更多)而设置的矩阵作为上述矩阵对(1)至(4)(即M1|M4、M2|M1、M3|M2和M4|M3)时,允许进一步增加抗分析性。可替换地,使用如下构造,在该构造中通过对准将其逆矩阵反转而获得的矩阵来获得的矩阵tM1-1|tM4-1、tM2-1|tM1-1、tM3-1|tM2-1和tM4-1|tM3-1的分支数目为3个或者更多。
允许这样的增加分支数目的构造来提高对差分攻击或者线性攻击抗性。
因此,为作为重复的回合操作而执行的内部转置部(转置函数)中的非线性转换部提供的线性转换部优选地具有一种利用DSM构造来使用不同矩阵的构造。另外,优选地设置要使用的矩阵使得增加包括相互作用的成对矩阵的组合矩阵的分支数目。
在参照图32的描述中使用四个矩阵;然而可以用两个矩阵满足用于分支数目的相同条件。例如,如图33中所示,可以使用如下构造,在该构造中,布置矩阵使得M1|M2的分支数目是3或者更多,或者通过对准将逆矩阵反转而获得的矩阵来获得的矩阵tM1-1|tM2-1的分支数目是3或者更多。
在图33中所示构造中,异或的来自上回合中的非线性转换部441的输出与来自下回合的非线性转换部451的输出的组合作为各非线性转换部中的线性转换矩阵[M]的组合示出如下。
(1)M1和M2(非线性转换部461a和471d)
(2)M2和M1(非线性转换部461b和471a)
(3)M1和M2(非线性转换部461c和471b)
(4)M2和M1(非线性转换部461d和471c)
图33中所示构造在实施方面被视为更优选的构造,因为允许减少矩阵所必需的硬件电路和存储器上的表大小。
当使用不同线性转换矩阵来执行线性转换处理的结果相互作用时,可实现一种使用上述DSM(扩散切换机制)的构造,并且允许增加抗分析性。
上文描述了用于实现具有增强加扰能力的总函数的内部转置的构造示例。描述上述处理示例作为其中使用256位输入的示例;然而这仅为示例并且可以不同地设置数据大小并且可以提供视数据大小而定的构造。在这种情况下,设置该构造以根据小型非线性转换部的输入/输出大小和线性转换部的大小来进行处理。
[16.生成具有高度独立输出的转置函数的方法]
在上述处理示例中,描述为压缩函数或者加扰函数F提供的多个内部转置处理构造作为如下处理示例,在该示例中使用图30中所示内部转置处理构造并且设置该构造以重复多次。允许例如通过以上述方式在内部转置处理的非线性转换部中构造线性转换处理矩阵来增加抗分析性。
在一种需要多个总转置函数的构造中,在一些情况下,通过使用独立作用的多个总转置来增加抗分析性。在这种情况下有一种通过使用总转置中包括的不同内部转置来实现该构造的方法。下文将描述构造示例。
为了实现多个不同总转置处理,一种改变总转置中的内部转置中包括的部分的技术是有效的。然而在安全评估处理的实施效率或者容易方面,并不一定希望使用大量不同部分。优选利用尽可能少的部分来实现各种处理。
作为一种用于分别对总转置进行不同内部转置处理的构造,例如考虑以下构造。
*用随着总转置而不同的常值转置要使用(使用于图31中的异或运算部中)的常值。
*S框(图31中的小型非线性转换部422)或者线性转换矩阵(图31中的线性转换部423)(这些S框或者线性转换矩阵是包括在总转置中的内部转置处理的部分)随着总转置而不同,并且重复地使用它们以实现总转置。
注意常值是向参照图30和图31描述的内部转置部410的非线性转换部411的异或(XOR)运算部421供应的常数。
然而为了随着总转置而彻底改变常值或者改变S框或者矩阵,有必要供应不同数据或者不同部分构造,因而有必要增加电路或者存储器容量。这样的电路或者存储器容量增加引起比如实施上的缺点和安全再评估的成本增加这样的问题。
因此,在本发明中,根据以下构造来将用于总转置的内部转置处理构造设置为互不相同。
(a)在使用多个不同小型非线性运算(S框)(图31中的小型非线性转换部422)的情况下,随着总转置而改变内部转置的小型非线性运算(S框)。
(b)将线性转换部(图31中的线性转换部423)中使用的矩阵设置成由一个矩阵生成的多个不同矩阵,并且将内部转置的矩阵设置成随着总转置而不同的矩阵。例如通过转置行或者列由一个矩阵生成多个不同矩阵。
(c)在使用多种矩阵作为线性转换部(图31中的线性转换部423)中使用的矩阵的情况下,随着总转置而对内部转置的矩阵进行转置。(例如在使用上述DSM的情况下,在不脱离DSM条件的范围内改变。)
(d)上述构造(a)至(c)中的两个或者更多构造的组合。
允许高效地改变设置成任何上述构造并且重复地执行的内部转置处理中的转置处理构造。换而言之,允许执行不同转置处理而不增加电路规模或者存储器容量。
具体而言,通过上述构造(c)与(b)的组合可高效地实现不同总转置。换而言之,在利用上述DSM构造在存储器中存储两种或者更多种线性转换矩阵的情况下,转置这些矩阵的行和列以生成和使用新矩阵作为线性转换矩阵。在这样的构造中,允许基于少量数据来高效地进行不同线性转换处理。
在一种使用DSM并且包括多个不同线性转换矩阵的构造中,在对矩阵的行和列进行转置的情况下的安全评估是一个问题,但是已知当使用具有预定规则的矩阵如循环矩阵或者Hadamard(哈达马)矩阵时,使用通过转置行和列来生成的矩阵不影响安全评估。因此认为安全评估是容易的并且该构造是用于通过简单的改变来生成不同转置函数的有效手段。
[17.生成向转置函数施加的常数的处理]
如上文所述,作为一种随着回合改变转置处理构造的技术,每个回合或者每两个或者更多回合将常数(在图31中的异或运算部421中使用的[C])转置成不同常数的技术是有效的。
然而需要有大存储器容量以维持与大量回合对应的常数。下文将描述如下构造示例,在该示例中允许由少量常数高效地生成并且在转置函数中使用大量不同常数。
首先定义转置函数所需要的常数。这里4个字节统称为1个字。例如图30中所示内部转置部(转置函数)410包括四个非线性转换部,并且各非线性转换部具有图31中所示构造。如图31中所示,四个常数用于一个非线性转换部411。各常数用于与1字节输入数据的异或运算,因而一个常数Cn为1字节数据。一个非线性转换部411使用四个常数,因此每个非线性转换需要1个字的常数。
图30图示的内部转置部(转置函数)410包括四个非线性转换部,因此对于一个内部转换处理,需要4个字的常数。在通过重复k次该基本转置来构造总转置的情况下,需要共计4k字的常数。
在k个内部转置中,在从输入侧起的第i个内部转置中包括的第j个常值由Ci,j代表。因此允许将一次总转置所需的常数表示如下。
(一次总转置所需的成组常数的示例)
第一内部转置:C1,1,C1,2,C1,3,C1,4
第二内部转置:C2,1,C2,2,C2,3,C2,4
第三内部转置:C3,1,C3,2,C3,3,C3,4
第四内部转置:C4,1,C4,2,C4,3,C4,4
:
第k-1内部转置:Ck-1,1,Ck-1,2,Ck-1,3,Ck-1,4
第k内部转置:Ck,1,Ck,2,Ck,3,Ck,4
作为公开常数生成技术的有关技术,例如在第2008-58827号日本未审查专利申请公开中描述了一种技术。在该有关技术中,作为一种生成64位常数的方法,使用8位变量中存储的值8次来生成常数,并且通过对该变量中的视为GF(28)的元素的值进行x或者x-1倍乘以依次地增加数据种类来生成后继常数。注意在定义要使用的有限场GF(2n)的不可约分多项式由多项式f(x)代表时,这里使用的x是变量x。
下文将描述一种基于通过对用于生成常数的数据的x倍乘而获得的级数来生成一些常数并且基于通过x-1倍乘x而获得的级数来生成其余常数的方法作为一种常数生成处理构造。允许局部地干扰常数之间的简单关系而不增加通过该方法生成常数的工作量。结果,允许增加常数的随机性。将利用由一个16位值生成与两个字对应的64位的示例来描述该示例。
将与在上述有关技术(第2008-58827号日本未审查专利申请公开)中公开的常数生成处理相比较来描述根据本发明的常数生成处理。
首先下文将描述有关技术中的常数生成步骤。有关技术中的常数生成步骤如下:
[1]在16位变量S中存储初始值。
[2]对i=1…k进行以下处理。
(2.1)Ci,1=(S XOR掩码1)<<<Rot1|(S XOR掩码2)<<<Rot2
Ci,2=(S XOR掩码3)<<<Rot3|(S XOR掩码4)<<<Rot4
Ci,3=(S XOR掩码5)<<<Rot5|(S XOR掩码6)<<<Rot6
Ci,4=(S XOR掩码7)<<<Rot7|(S XOR掩码8)<<<Rot8
(2.2)S←S·x
注意掩码n和Rotn是单独确定的常数。这里符号“|”代表位的连接。(AXOR B)代表A与B的异或运算(XOR)处理。
在一些情况下,以这样的方式生成的四个常数(Ci,1至Ci,4)看似随机数;然而仅通过掩码运算和旋转移位运算来改变常数,因而常数具有如下特性:即使S为任何值,常数仍然一致地保持由具体线性运算代表的关系。通过作为示例的块加密清楚的是仅通过线性转换来增加随机性经常是不够的,而且希望让常数具有尽可能非线性的性质。
接着下文将描述一种根据本发明通过在常数之间引入非线性关系来生成常数而不增加实施成本和降低性能的技术。
[1]在各16位变量S和T中存储初始值
[2]对i=1…k进行以下处理。
(2.1)Ci,1=(S XOR掩码1)<<<Rot1|(S XOR掩码2)<<<Rot2
Ci,2=(S XOR掩码3)<<<Rot3|(S XOR掩码4)<<<Rot4
Ci,3=(T XOR掩码5)<<<Rot5|(T XOR掩码6)<<<Rot6
Ci,4=(T XOR掩码7)<<<Rot7|(T XOR掩码8)<<<Rot8
(2.2)S←S·x,T←T·x-1
当根据上述处理利用16位变量S和T来生成四个常数(Ci,1至Ci,4)时,在各内部转置中包括的四个常数的一半属于x倍乘级数,而另一半属于x-1倍乘级数。
通过这样的构造,没有保持在由S生成的常数与由T构成的常数之间的固定线性关系,并且获得提高独立性的效果。
当一般地描述上述常数生成处理时,常数生成处理是一种用具有不同指数如Xa和Xb的值来更新初始值S和T的处理。当利用这样的变量S和T来生成多个常数时,生成的常数的一半属于xa倍乘级数,而另一半属于xb倍乘级数。
注意除了基于S和T的两个级数之外,当可接受增加初始值的数目时,可以使用一种利用三个或者更多级数来生成常数的构造。
[18.为多个总转置生成常数的方法]
压缩函数包括多个总转置,并且需要准备由用于相应总转置的多个常数构成的成组常值。当总转置的数目为m时,总转置分别由P1、P2…、Pm代表。当使用上述常数生成技术时,一种根据总转置的数目m随着总转置而改变m组初始值以生成向总转置中的内部转置应用的常值是适用的。然而使用这样的技术,使得用于生成常值的工作量增加了m倍,因而它并不高效。
下文将描述一种简化用于施加多个总转置的常数组的生成处理的技术。例如在压缩函数中包括m个总转置的情况下,通过上述使用多个初始值S和T的方法来生成第一总转置所需的常数,并且通过对为第一总转置生成的常数的简单运算来生成要向第二和后面的总转置应用的常数。
在一种数据转换处理构造(例如在构造中为压缩函数提供m个总转置的构造)中,在从第x总转置的输入侧起的第i内部转置中包括的第j常值(字)由Cij(x)代表。通过上述使用多个初始值S和T的方法来生成用于第一总转置的常数Cij(1)。
这时生成用于第二和后面的总转置的常数Cij(2)、Cij(3)、…、Cij(m)。下文将参照图34描述一种生成用于第二和后面的总转置的常数Cij(2)、Cij(3)、…、Cij(m)的技术。
图34图示了通过上述使用多个初始值S和T的方法来生成的第一常数组480以及通过对第一常数组480的转换处理来生成的第二常数组481、第三常数组482和第m常数组483作为m个总转置所需的常数组。
设置所有m个总转置为如下示例,在该示例中,在各总转置中包括k个内部转置并且对于各内部转置需要四个常数字。
通过对第一常数组480的转换处理来生成第二至第m常数组。下文将描述转换处理的具体示例。
作为转换处理,以下三种转换处理中的任一种可适用。
(转换处理示例1)
生成常数为Ci,j(x)=Ci,j(1)<<<Rx,其中在各总转置中确定的不同旋转量为Rx。Ci,j(1)是如下常数,该常数作为通过上述使用多个初始值S和T的方法生成的第一常数组480中的元素。另外,x是常数组的标识号并且具有2至m的值。
(转换处理示例2)
生成常数为Ci,j(x)=Ci,j(1)XOR Mx,其中在各总转置中确定的不同掩码值(字)为Mx。Ci,j(1)是如下常数,该常数作为通过上述使用多个初始值S和T的方法生成的第一常数组480中的元素。另外,x是常数组的标识号并且具有2至m的值。
(转换处理示例3)
该方法组合上述转换处理示例1与示例2。
生成常数为Ci,j(x)=(Ci,j(1)<<<Rx)XOR Mx或者Ci,j(x)=(Ci,j(1)XOR Mx)<<<Rx。Ci,j(1)是如下常数,该常数作为通过上述使用多个初始值S和T的方法生成的第一常数组480中的元素。另外,x是常数组的标识号并且具有2至m的值。
允许利用上述转换处理示例1至示例3中的任何示例、由一个常数组生成多个不同常数组,并且设置常数组作为向相应总转置应用的常数。
注意在上述转换处理示例1的情况下可保证除非Ci,j(1)具有特殊位模式,否则在用于任意x和y的Ci,j(x)与Ci,j(y)之间的异或运算的结果非0;因此允许构造不同总转置。另外在上述转换处理示例2的情况下也可保证异或运算的结果非0;因此该处理示例也适合于生成不同总转置。
此外,在上述转换处理示例中表明的旋转量和掩码值使用各总转置中确定的值;然而在如下构造中预期有相同效果,在该构造中为旋转量和掩码值提供多个值并且使用这些值作为旋转量和掩码值以生成一个总转置所需的多个常值。
当提供用于第一旋转函数的成组常值时,通过使用这些方法来允许以少量处理成本生成用于不同转置函数的成组常值;因此预期有更快的处理。
具体而言,在程序执行功能(也就是软件)安装于数据转换器中的情况下适用如下编程模式,在该模式中在必要时动态地生成而不在存储器上暂时地解压用于所有总转置的成组常值,因而预期提高存储器使用效率。
在上述示例中描述其中随着字进行旋转运算的示例;然而可以修改旋转操作以每两个或者更多字进行该操作并且预计与上述效果相同的效果。
[19.减少哈希函数的输出值的技术]
接着将描述数据转换器的配置示例,在该示例中,在哈希值生成处理构造中准备用于生成n位哈希值的函数并且将输出的位数减少k位,从而允许生成n-k位哈希值。
例如准备具有256位输出的哈希函数并且将输出的位数减少32位以生成224位哈希函数。
图35图示了与图30中所示内部转置部(转置函数)410的构造相同的构造并且图示了总转置的最后一级中的内部转置处理构造。输出y1至y8是来自总转置的输出并且代表作为哈希函数的输出的哈希值。在图35中简化1个字(4个字节)的数据线并图示为一条数据线。所有输出y1至y8合计为4×8=32字节=256位的输出。
为了简化描述,在输出之前没有立即进行在异或运算之后转置数据的处理。另外在输出之前立即要与数据级数异或的数据Xi代表前馈的数据并且由作为向压缩函数施加的中间值的链接变量或者消息构成。
考虑一种从作为输出的n位数据中删除作为删除数据的k位数据以减少输出数据的长度的方法。有必要从附图中的输出级数y1至y8中选择位长度要减少的数据级数。作为一种方法,有一种从左侧起将位长度依次地减少k位的方案。在这种情况下考虑以下问题。在k位超过从左侧起的两条数据线的总大小的情况下,当校验作为长度减少结果的输出数据时,对最左侧的线性转换处理的结果对其余输出的任何位没有影响。这表明对这一部分的计算是不必要的。
作为为了消除这样的不必要处理而没有大量地减少具体数据级数的长度的技术,下文将描述以下两个处理技术。
(数据长度减少技术1)
输出数据级数的数目为m,而要减少的位数(删除的位数)为k。为了尽可能均匀地将k位划分为m个,通过以下数学表达式来计算参数a和b。
[数学表达式1]
通过上述表达式计算a和b,其中a+b=m。
来自作为输出而获得的m个级数y1至ym中的a个输出级数的各输出数据的长度减少f(k/m)位。另外,b个剩余输出级数的各输出数据的长度减少f(k/m)+1位。换而言之,如图36中所示,对各输出级数执行减少数据长度的处理。
可保证在使用转置的情况下,通过从各位串中删除位而不是删除连续的位串,所有非线性转换结果对任何输出有影响。因而在输出值生成处理中不包括不必要的处理。
在上述减少输出的位长度的处理中,对作为要受到数据长度减少的目标的所有输出数据级数进行该处理,但是可以仅对一些选择的输出级数执行数据长度减少处理。
例如在图33中所示内部转置处理构造中,相同非线性转换的输出对从左侧起的每两条输出数据线有影响,例如可以仅选择从左侧起的奇数编号(或者偶数编号)的数据级数作为要受到数据长度减少的目标。即使进行这样的处理,仍然预期有不包括不必要处理的相同效果,并且允许通过减少要受到数据长度减少的级数的数目来减少进行该处理的工作量。注意这种级数选择构造适用于要减少的位长度不超过n/2的情况,其中输出级数的数目为n。
(数据长度减少技术2)
输出数据级数的数目为m,而要减少的位数(删除的位数)为k。为了尽可能均匀地将k位划分为m个,通过以下数学表达式计算参数a和b。
[数学表达式2]
下文由f(k/m)代表。
通过上述表达式计算a和b,其中a+b=m。
来自作为输出而获得的m个输出级数y1至ym中的m/2个奇数编号的输出级数y1、y3、y5、…、y2m-1的a个输出级数的输出数据的长度各自减少f(2k/m)位。另外,来自m/2个奇数编号的输出级数中的b个其余输出级数的输出数据的长度各自减少f(2k/m)+1位。
因此可以通过选择仅一些输出级数来执行数据长度减少处理。在这个处理示例中,允许通过减少要受到数据长度减少的级数的数目来减少进行该处理的工作量。
[20.数据转换器的配置示例]
最后,在图37中图示了IC(集成电路)模块700的配置示例,该模块作为执行根据上述示例性实施例的处理的器件。允许例如由PC、IC卡、读取器/写入器或者任何其它信息处理设备执行上述处理。另外,允许由形成逻辑电路的硬件电路或者程序或者二者执行各处理。执行处理的示例是图37中所示IC模块700,并且允许这样的IC模块700并入于各种设备中。
图37中所示CPU(中央处理单元)701是如下处理器,该处理器用于执行数据转换处理如加密处理或者哈希处理的开始和停止、数据发送/接收的控制、在部件之间的数据传送和任何其它各种程序。存储器702由ROM(只读存储器)(存储CPU 701执行的程序或者固定数据如运算参数)、RAM(随机存取存储器)(用作为用于在CPU 701的处理中执行的程序和在程序处理中按照需要改变的参数的存储区或者工作区)构成。另外允许使用存储器702作为用于数据转换处理如加密处理或者哈希处理所必需的密钥数据、在数据转换处理中使用的转换表(转置表)或者在转换矩阵中使用的数据的存储区。注意数据存储区优选地配置为具有防篡改配置的存储区。
数据转换部703例如执行上述各种处理、也就是响应于各函数如哈希函数、压缩函数、转置函数或者加扰函数的数据转换处理、常数计算和输出数据长度减少处理。在各函数的执行中,根据预定序列执行在各函数的执行中指定的线性转换、非线性转换、异或运算等。这些处理由硬件或者软件或者其组合实现。
这里图示了其中数据转换部为单独模块的示例;然而例如加密处理或者哈希处理存储于ROM中,并且CPU 701可以读取和执行ROM中存储的程序。CPU 701可以根据程序执行各种处理、比如执行各函数、常数计算和输出数据长度减少处理。
随机数生成器704执行用于生成加密处理或者哈希处理所需要的密钥或者参数的必要的随机数生成处理。
发送器/接收器705是执行与外部设备的数据通信的数据通信处理部并且执行与IC模块如读取器/写入器的数据通信并且执行对IC模块中生成的密文或者从外部设备如读取器/写入器输入的数据的输出。
已经参照具体示例性实施例具体描述了本发明。然而清楚的是本领域技术人员可以对示例性实施例进行修改或者变更而不脱离本发明的范围。换而言之,本发明已经用说明性示例的形式加以公开而不应以限制意义加以理解。应当参照权利要求来确定本发明的范围。
另外,在说明书中描述的处理可以由硬件或者软件或者其组合配置执行。在处理由软件执行的情况下,允许向并入于专用硬件中的计算机中的存储器中安装和执行处理序列记录于其上的程序,或者允许向能够执行各种处理的通用计算机上安装和执行程序。例如程序可以预先记录在记录介质上。除了从记录介质将程序安装在计算机中之外,还可以通过网络如LAN(局域网)或者因特网接收并在记录介质如内置式硬盘中安装程序。
此外,不仅可以根据说明书按时间顺序执行而且可以根据执行处理的设备的处理性能或者在需要时并行或者单独地执行在说明书中描述的各种处理。另外,在本说明书中“系统”是指多个设备的逻辑集合配置、无论个别组成设备是否容纳于一个罩中。
工业适用性
如上文所述,本发明的示例性实施例具有如下构造,在该构造中在并行地处理构成所述消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理。多个压缩函数执行部中的各压缩函数执行部进行利用消息调度部的处理和利用链接变量处理部的,该消息调度部接收消息数据的对应分割数据块以进行消息调度处理,该链接变量处理部接收来自消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与中间值的位数相同的输出数据。在多个处理序列中分别进行并行处理的多个压缩函数执行部共同地使用消息调度部和链接变量处理部中的一个或者两个并且允许利用单个消息调度部或者单个链接变量处理部。这样的构造实现硬件配置尺寸的减少和处理步骤的简化。
Claims (16)
1.一种数据转换器,包括:
数据转换部,接收消息数据以生成哈希值,所述数据转换部被配置成在并行地处理构成所述消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理,
其中所述多个压缩函数执行部中的各压缩函数执行部被配置成进行以下处理:
利用消息调度部的处理,所述消息调度部接收所述消息数据的对应分割数据块以进行消息调度处理;以及
利用链接变量处理部的处理,所述链接变量处理部接收来自所述消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与所述中间值的位数相同的输出数据,并且
在所述多个处理序列中分别进行并行处理的所述多个压缩函数执行部被配置成共同地使用所述消息调度部和所述链接变量处理部中的一个或者两个并且允许利用单个消息调度部或者单个链接变量处理部。
2.根据权利要求1所述的数据转换器,其中:
在所述多个处理序列中分别进行并行处理的所述多个压缩函数执行部包括由所述多个压缩函数执行部共同地使用的单个共同消息调度部,
所述共同消息调度部被配置成接收构成所述消息数据的所述分割数据块、通过对所述分割数据块进行所述消息调度处理来生成输出数据并且将所生成的输出数据输出到多个链接变量处理部,并且
所述多个链接变量处理部中的各链接变量处理部被配置成并行执行如下处理,在各所述处理中对应的链接变量处理部接收来自所述共同消息调度部的输出和作为来自前级压缩函数执行部的输出的中间值来对接收的数据进行压缩,以由此生成位数与所述中间值的位数相同的输出数据。
3.根据权利要求1所述的数据转换器,其中:
在所述多个处理序列中分别进行并行处理的所述多个压缩函数执行部包括由所述多个压缩函数执行部共同地使用的单个共同链接变量处理部,
在进行并行处理的所述多个压缩函数执行部中的各压缩函数执行部中提供的多个消息调度部被配置成接收所述消息数据的相同的分割数据块、通过消息调度处理来生成输出数据并且将所生成的输出数据输出到所述共同链接变量处理部,并且
所述共同链接变量处理部被配置成接收所述多个消息调度部的输出和作为来自前级压缩函数执行部的输出的中间值来对接收的数据进行压缩,以由此生成位数与所述中间值的位数相同的输出数据。
4.根据权利要求3所述的数据转换器,其中:
在进行并行处理的所述多个压缩函数执行部中的各压缩函数执行部中提供的所述多个消息调度部被配置成接收所述消息数据的相同的分割数据块、通过消息调度处理来生成输出数据并且将所生成的输出数据的异或运算输出到所述共同链接变量处理部。
5.根据权利要求1所述的数据转换器,其中:
所述消息调度部由具有中间输出的转置函数执行部配置,所述转置函数执行部重复地执行转置处理以输出作为各所述转置处理的结果的中间值,并且
所述链接变量处理部被配置成包括具有附加输入的转置函数执行部,所述转置函数执行部利用从具有中间输出的所述转置函数执行部输出的所述中间值作为附加输入来重复地执行转置处理。
6.根据权利要求5所述的数据转换器,其中:
所述链接变量处理部被配置成利用异或结果作为用于随后的所述转置处理的输入数据,所述异或结果是在从具有中间输出的所述转置函数执行部输出的所述中间值与前级中的转置处理的结果之间的异或运算的逻辑值。
7.根据权利要求5所述的数据转换器,其中:
所述转置函数执行部执行的各所述转置处理包括对输入数据的部分或者全部进行的非线性转换处理和作为数据互换处理的交换处理。
8.根据权利要求7所述的数据转换器,其中:
所述非线性转换处理是包括使用常数的异或运算、非线性转换和使用线性转换矩阵的线性转换的处理。
9.根据权利要求7所述的数据转换器,其中:
在所述转置函数执行部执行的各所述转置处理中进行的线性转换处理是利用多个不同矩阵根据DSM(扩散切换机制)执行的处理。
10.根据权利要求5所述的数据转换器,其中:
所述转置函数执行部执行的所述转置处理被配置成分别利用互不相同的多个常数组来进行数据处理,并且
通过对基本组进行的数据转换处理来生成的互不相同的所述多个常数组分别使用于所述转置处理中,所述基本组定义为在一个转置处理中要使用的常数组。
11.根据权利要求10所述的数据转换器,其中:
作为所述基本组利用的所述常数组由通过向互不相同的多个初始值S和T应用转换规则来生成的多个常数配置,并且
所述转换规则被配置成包括对所述初始值进行的更新处理,所述更新处理由以下表达式代表:
S←S·xa,T←T·x
其中a≠b。
12.根据权利要求10所述的数据转换器,其中:
对所述基本组进行的所述数据转换处理是允许对构成所述基本组的各常数的位旋转操作的处理或者允许在构成所述基本组的各常数与预定掩码数据之间的逻辑运算的处理。
13.根据权利要求1所述的数据转换器,其中:
所述数据转换部被配置成进行允许最终输出的哈希值在位数上减少的减少处理,并且
根据预定计算表达式来计算在构成所述数据转换部的输出的多个输出数据级数中的各级数的输出位中的将减少的位数,然后根据所述计算的结果来执行所述减少处理。
14.根据权利要求1所述的数据转换器,其中:
所述数据转换部还包括对输入数据执行数据加扰处理的加扰处理部,
所述多个压缩函数执行部被配置为被允许接收所述消息数据的所有分割数据块的多级压缩部,
所述多级压缩部中的一些压缩部被配置成接收所述加扰处理部的输出和所述消息数据的所述分割数据块这两者以基于接收的数据来执行所述数据压缩处理,
所述多级压缩部中的一些压缩部被配置成接收前级压缩部的输出和所述消息数据的所述分割数据块这两者以基于接收的数据来执行所述数据压缩处理,并且
位于所述多级压缩部的最后一级中的压缩部被配置成输出所述消息数据的哈希值。
15.一种数据转换方法,是由数据转换器执行的数据转换处理方法,所述数据转换方法包括:
数据转换步骤,通过数据转换部接收消息数据以生成哈希值,所述数据转换步骤是在并行地处理构成所述消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理的步骤,
其中所述多个压缩函数执行部中的各压缩函数执行部进行:
利用消息调度部的处理,所述消息调度部接收所述消息数据的对应分割数据块以进行消息调度处理;以及
利用链接变量处理部的处理,所述链接变量处理部接收来自所述消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与所述中间值的位数相同的输出数据,并且
在所述多个处理序列中分别进行并行处理的所述多个压缩函数执行部共同地使用所述消息调度部和所述链接变量处理部中的一个或者两个并且进行利用单个消息调度部或者单个链接变量处理部的处理。
16.一种在数据转换器中执行数据转换处理的程序,所述程序包括:
数据转换步骤,通过数据转换部接收消息数据以生成哈希值,所述数据转换步骤是在并行地处理构成所述消息数据的分割数据块的多个处理序列中,执行利用多个压缩函数执行部的数据转换处理的步骤,
其中所述程序允许所述多个压缩函数执行部中的各压缩函数执行部执行:
利用消息调度部的处理,所述消息调度部接收所述消息数据的对应分割数据块以进行消息调度处理;以及
利用链接变量处理部的处理,所述链接变量处理部接收来自所述消息调度部的输出和作为来自前级处理部的输出的中间值以通过对接收的数据进行压缩来生成位数与所述中间值的位数相同的输出数据,并且
所述程序允许在所述多个处理序列中分别进行并行处理的所述多个压缩函数执行部共同地使用所述消息调度部和所述链接变量处理部中的一个或者两个并且进行利用单个消息调度部或者单个链接变量处理部的处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008214811A JP5532560B2 (ja) | 2008-08-25 | 2008-08-25 | データ変換装置、およびデータ変換方法、並びにプログラム |
JP2008-214811 | 2008-08-25 | ||
PCT/JP2009/064783 WO2010024248A1 (ja) | 2008-08-25 | 2009-08-25 | データ変換装置、およびデータ変換方法、並びにプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102138170A true CN102138170A (zh) | 2011-07-27 |
CN102138170B CN102138170B (zh) | 2013-12-18 |
Family
ID=41721416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980132296XA Expired - Fee Related CN102138170B (zh) | 2008-08-25 | 2009-08-25 | 数据转换器、数据转换方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8787563B2 (zh) |
EP (1) | EP2325828A4 (zh) |
JP (1) | JP5532560B2 (zh) |
CN (1) | CN102138170B (zh) |
WO (1) | WO2010024248A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014089753A1 (zh) * | 2012-12-11 | 2014-06-19 | 华为技术有限公司 | 一种文件压缩方法,文件解压缩方法、装置及服务器 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4882598B2 (ja) * | 2006-07-28 | 2012-02-22 | ソニー株式会社 | 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム |
US8369515B2 (en) * | 2010-03-18 | 2013-02-05 | Chiou-Haun Lee | Cryptographic method of multilayer diffusion in multidimension |
JP5528281B2 (ja) * | 2010-09-24 | 2014-06-25 | 三菱電機株式会社 | ハッシュ値演算装置 |
JP5929757B2 (ja) * | 2010-11-15 | 2016-06-08 | 日本電気株式会社 | 暗号処理装置および暗号処理方法 |
JP5682525B2 (ja) * | 2011-03-28 | 2015-03-11 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにプログラム |
JP5682526B2 (ja) * | 2011-03-28 | 2015-03-11 | ソニー株式会社 | データ処理装置、およびデータ処理方法、並びにプログラム |
JP5884412B2 (ja) * | 2011-11-04 | 2016-03-15 | 富士通株式会社 | 変換プログラム、変換装置、変換方法、および変換システム |
US9419791B2 (en) | 2012-09-21 | 2016-08-16 | Mitsubishi Electric Corporation | Hash value calculation device, hash value calculation method, and non-transitory computer-readable storage medium including computer executable instruction |
KR101516573B1 (ko) * | 2013-07-26 | 2015-05-04 | 한국전자통신연구원 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
KR101688636B1 (ko) * | 2015-01-22 | 2016-12-21 | 한국전자통신연구원 | 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치 |
SG10201502401XA (en) * | 2015-03-26 | 2016-10-28 | Huawei Internat Pte Ltd | Method of obfuscating data |
US9942046B2 (en) | 2015-05-06 | 2018-04-10 | 21, Inc. | Digital currency mining circuitry with adaptable difficulty compare capabilities |
JP6187624B1 (ja) * | 2016-03-17 | 2017-08-30 | 富士電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
US9853810B1 (en) * | 2016-09-30 | 2017-12-26 | International Business Machines Corporation | Message padding for bit-oriented and bit-reversed input messages |
CN110007855B (zh) * | 2019-02-28 | 2020-04-28 | 华中科技大学 | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59220777A (ja) * | 1983-05-31 | 1984-12-12 | 富士通株式会社 | 暗号装置の鍵発生方式 |
JPH05307361A (ja) * | 1992-03-30 | 1993-11-19 | Nippon Telegr & Teleph Corp <Ntt> | データ拡散装置及びデータ拡散方法 |
JP3921424B2 (ja) * | 2002-07-17 | 2007-05-30 | 富士通株式会社 | ハッシュ関数処理回路 |
CN101118586A (zh) * | 2006-08-04 | 2008-02-06 | 佳能株式会社 | 信息处理设备和方法以及数据处理设备和方法 |
US20080063187A1 (en) * | 2006-04-27 | 2008-03-13 | Hirotaka Yoshida | Hash value generation device, program, and hash value generation method |
CN101227273A (zh) * | 2007-01-16 | 2008-07-23 | 京瓷美达株式会社 | 数据提供系统、数据接受系统和数据提供方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4908861A (en) * | 1987-08-28 | 1990-03-13 | International Business Machines Corporation | Data authentication using modification detection codes based on a public one way encryption function |
US5757913A (en) * | 1993-04-23 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for data authentication in a data communication environment |
US5664016A (en) * | 1995-06-27 | 1997-09-02 | Northern Telecom Limited | Method of building fast MACS from hash functions |
US6122375A (en) * | 1996-12-10 | 2000-09-19 | Hitachi, Ltd. | Hash value generating method and device, data encryption method and device, data decryption method and device |
US6804355B1 (en) * | 2000-01-06 | 2004-10-12 | Intel Corporation | Block cipher for small selectable block sizes |
US6973187B2 (en) * | 2000-01-31 | 2005-12-06 | Vdg, Inc. | Block encryption method and schemes for data confidentiality and integrity protection |
US7200227B2 (en) * | 2001-07-30 | 2007-04-03 | Phillip Rogaway | Method and apparatus for facilitating efficient authenticated encryption |
JP2005140823A (ja) * | 2003-11-04 | 2005-06-02 | Sony Corp | 情報処理装置、制御方法、プログラム、並びに記録媒体 |
JP2007199156A (ja) | 2006-01-24 | 2007-08-09 | Sony Corp | 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム |
US20080010463A1 (en) * | 2006-07-10 | 2008-01-10 | Motorola, Inc. | Method for producing truncated message digests |
JP4905000B2 (ja) | 2006-09-01 | 2012-03-28 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP5307361B2 (ja) * | 2007-06-19 | 2013-10-02 | サカタインクス株式会社 | 処理有機顔料及びその用途 |
-
2008
- 2008-08-25 JP JP2008214811A patent/JP5532560B2/ja not_active Expired - Fee Related
-
2009
- 2009-08-25 EP EP09809899.9A patent/EP2325828A4/en not_active Withdrawn
- 2009-08-25 US US13/059,641 patent/US8787563B2/en not_active Expired - Fee Related
- 2009-08-25 CN CN200980132296XA patent/CN102138170B/zh not_active Expired - Fee Related
- 2009-08-25 WO PCT/JP2009/064783 patent/WO2010024248A1/ja active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59220777A (ja) * | 1983-05-31 | 1984-12-12 | 富士通株式会社 | 暗号装置の鍵発生方式 |
JPH05307361A (ja) * | 1992-03-30 | 1993-11-19 | Nippon Telegr & Teleph Corp <Ntt> | データ拡散装置及びデータ拡散方法 |
JP3921424B2 (ja) * | 2002-07-17 | 2007-05-30 | 富士通株式会社 | ハッシュ関数処理回路 |
US20080063187A1 (en) * | 2006-04-27 | 2008-03-13 | Hirotaka Yoshida | Hash value generation device, program, and hash value generation method |
CN101118586A (zh) * | 2006-08-04 | 2008-02-06 | 佳能株式会社 | 信息处理设备和方法以及数据处理设备和方法 |
CN101227273A (zh) * | 2007-01-16 | 2008-07-23 | 京瓷美达株式会社 | 数据提供系统、数据接受系统和数据提供方法 |
Non-Patent Citations (2)
Title |
---|
J-S CORON: "merkle-damgard revisited: how to construct a hash function", 《COMPUTER SCIENCE》 * |
S.HIROSE: "Collision Resistance of Double-Block-Length Hash Function against Free-Start Attack", 《IEICE TRANSACTIONS ON FUNDAMENTALS》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014089753A1 (zh) * | 2012-12-11 | 2014-06-19 | 华为技术有限公司 | 一种文件压缩方法,文件解压缩方法、装置及服务器 |
Also Published As
Publication number | Publication date |
---|---|
EP2325828A1 (en) | 2011-05-25 |
CN102138170B (zh) | 2013-12-18 |
US20110211688A1 (en) | 2011-09-01 |
JP5532560B2 (ja) | 2014-06-25 |
WO2010024248A1 (ja) | 2010-03-04 |
JP2010049127A (ja) | 2010-03-04 |
US8787563B2 (en) | 2014-07-22 |
EP2325828A4 (en) | 2015-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102138170B (zh) | 数据转换器、数据转换方法 | |
US8306217B2 (en) | Cryptographic processing apparatus and cryptographic processing method, and computer program | |
RU2383934C2 (ru) | Устройство криптографической обработки, способ криптографической обработки | |
CN101908958B (zh) | 密码处理装置、方法、算法构建方法和信息处理装置 | |
JP3746098B2 (ja) | データの暗号化装置 | |
KR101245010B1 (ko) | 정보 처리 장치 | |
Aboytes-González et al. | Design of a strong S-box based on a matrix approach | |
CN101375323B (zh) | 密码处理装置、密码处理装置制造装置及方法 | |
CN102216967B (zh) | 数据转换装置和数据转换方法 | |
CN103634101A (zh) | 加密处理方法及设备 | |
CN111431697A (zh) | 一种新型轻量级分组密码corl的实现方法 | |
Zheng et al. | FFT‐based multidimensional linear attack on PRESENT using the 2‐bit‐fixed characteristic | |
Anusha et al. | Analysis and comparison of symmetric key cryptographic algorithms on FPGA | |
CN103238291A (zh) | 代码处理装置、代码处理方法和程序 | |
CN112134691B (zh) | 一种部件可重复的nlcs分组密码实现方法、装置及介质 | |
Kiryukhin | An algorithm for bounding non-minimum weight differentials in 2-round LSX-ciphers | |
JP2008046151A (ja) | 暗号処理方法 | |
Liu et al. | Analysis of the Reconfiguration Feature of Cryptographic Algorithms | |
Namburi | An Efficient VHDL Description and Hardware Implementation of the Triple DES Algorithm | |
Kumar et al. | Cryptompress: A Symmetric Cryptography algorithm to deny Bruteforce Attack | |
Koukouvinos et al. | A Bird’s-Eye View of Modern Symmetric Cryptography from Combinatorial Designs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131218 Termination date: 20150825 |
|
EXPY | Termination of patent right or utility model |