This application claims priority based on a Japanese patent application, No. 2008-208635 filed on Aug. 13, 2008, the entire contents of which are incorporated herein by reference.
The invention relates to techniques for generating hash values.
Hash functions are functions that take messages of any length as their inputs and generate hash values of specific length.
Generally, hash functions are configured with block ciphers that take fixed-length message blocks as their inputs. The functions shuffle the input messages by repeatedly performing block encryption of the messages, and finally output the result as a hash value. Representative examples of hash functions include the SHA-1, as well as members of the SHA-2 hash family such as the SHA-256 (see NIST FIPS 180-2, “Secure Hash Standard”, Aug. 1, 2002 pp. 9-23, http://csrc.nist.gov/publications /fips/fips180-2/fips180-2.pdf, herein referred to as Literature 1).
It is known that the SHA-1 described in Literature 1 has certain problems in its collision resistance property, i.e., a safety property which is required nature of hash function. Since the SHA-2 hash family has a structure similar to that of the SHA-1, similar problems related to the safety property as a required nature of hash function might also occur with the SHA-2 family.
Consequently, the present invention provides a hash function whose safety can be evaluated.
To solve the problems described above, the present invention generates hash values using a block cipher that includes a F function which performs nonlinear conversion more than once.
For example, the disclosed system provides hash value generation device which splits the message into blocks of predetermined data length, transforms specific split data by a F function, among a plurality of split data which are generated by splitting the blocks, and generates a hash value of the message by using a block cipher having a shuffling process that calculates an exclusive disjunction between the transformed specific split data and other specific split data, having:
a control unit performing a transformation including at least a nonlinear transformation more than once by the F function.
As described above, the disclosed system can provide a hash function whose safety can be evaluated.
These and other benefits are described throughout the present specification. A further understanding of the nature and advantages of the invention may be realized by reference to the remaining portions of the specification and the attached drawings.
Note here that in this embodiment, a 512-bit hash value is generated.
As illustrated in
The storage unit 110 includes an initial-value storage area 111, a constant-round-value storage area 112, a key-round-value storage area 113, a plain-text-round-value storage area 114, a calculated-value storage area 115, and a hash-value storage area 116.
The initial-value storage area 111 stores information specifying an initial value for generating a hash value.
In this embodiment, an initial value of a constant round value and an initial value of a calculated value are stored as initial values for generating a hash value.
Here, as the initial value of the constant round value, a value such as c(−1)=0xffffffffffffffffffffffffffffffff is stored.
Also, the initial value of the calculated value is H−1=(H−1.0,H−1.1, . . . ,H−1.7), and constants such as:
Note that the constants used for the initial value of the constant round value and calculated value are not limited to the above, and that it is possible to use random numbers generated by, for example, a pseudorandom number generator or the like.
The constant-round-value storage area 112 stores information identifying a constant round value per round in each message block.
Note that in this embodiment the constant round value is generated in a round-constant generation unit 123 described below.
The key-round-value storage area 113 stores information identifying a key round value per round in each message block.
Note that in this embodiment the key round value is generated in a first round-key generation unit 124 or a second round-key generation unit 125 described below.
The plain-text-round-value storage area 114 stores information identifying a plain-text round value per round in each message block.
Note that in this embodiment the plain-text round value is generated in a shuffling unit 126 described below.
The calculated-value storage area 115 stores information identifying the calculated value which is calculated through all rounds in each message block.
Note that in this embodiment the calculated value is generated in a master control unit 121 described below.
The hash-value storage area stores the hash value calculated through all rounds in all message blocks.
Note that in this embodiment the hash value is generated in the master control unit 121 described below.
The control unit 120 includes the master control unit 121, a message blocking unit 122, the round-constant generation unit 123, the first round-key generation unit 124, the second round-key generation unit 125, and the shuffling unit 126.
The master control unit 121 controls all processes in the hash value generation device 100.
Specifically, in this embodiment, the master control unit 121 conducts a process that manages message blocks obtained by blocking a message for calculating a hash value, and a process that manages rounds in the round-constant generation unit 123, the first round-key generation unit 124, the second round-key generation unit 125, and the shuffling unit 126.
Additionally, the master control unit 121 obtains a calculated value by calculating an exclusive disjunction of a plain-text round value calculated in the shuffling unit 126 through all the rounds and a message block processed in a given round.
Furthermore, the master unit 121 calculates a hash value by calculating an exclusive disjunction of the last message block and a plain-text round value calculated in the shuffling unit 126 through all the message blocks and all the rounds.
The message blocking unit 122 splits a message directed to hash value calculation into blocks of predetermined length and performs padding for the resulting blocks.
Note that although in this embodiment the message directed to hash value calculation is split into 512-bit blocks, the present invention is not limited to such an embodiment.
The padding in this embodiment is performed as described by way of example below.
First, if the number of bits in the message directed to the hash value calculation is divisible by 512 bits, the message blocking unit 122 creates each message block by dividing the message by 512 bits, and adds a message block to create the last message block.
Then, within this last message block, the message blocking unit 122 stores information for specifying “1” in the first bit, “0” in the bits from a bit next to the first bit, the second bit, to the 383rd bit counting from the second bit and the bit length of the message in the last remaining 128 bits.
If the number of bits in the message directed to the hash value calculation is not divisible by 512 bits, the message blocking unit 122 creates each message block by dividing the message by 512 bits, stores information for specifying “0” in all remaining bits in the last split message block to make the length of the block be 512 bits, and further adds a message block to the last split message block to create the last message block.
Then, within this last message block, the message blocking unit 122 stores information for specifying “0” in the bits from the first bit to the 384th bit counting from the first bit, and the bit length of the message in the last 128 bits.
Note that in this embodiment, a message for calculating a hash value is set as M, a message expanded to a length divisible by 512 bits by padding is set as M′, the number of message blocks is set as k+1 (k is an integer greater than or equal to 1), and each message block is set as M′i (i is an integer where 0=<i=<k).
The round-constant generation unit 123 calculates a constant round value and a round constant in each round.
In this embodiment, the round-constant generation unit 123 uses the linear transformation function ƒc to calculate the constant round value in each round from the initial value of the constant round value stored in the initial-value storage area 111 in the case of a first round, or from the constant round value of the preceding round stored in the constant-round-value storage area 112 in the cases other than the first round.
For example, as illustrated in
That is, the constant round value c(r) of the current round (r) is calculated from the constant round value c(r−1) (in the case of r=0, the initial value of the constant round value) of the preceding round (r−1) as shown in the following formulas (1) and (2).
t
H
∥t
L
=ƒ
L(c(r−1)) (1)
c
(r)
=t
L
∥t
H (2)
In the formulas (1) and (2), each of tH and tL is the higher-order bits and the lower bits of the value calculated by inputting the constant round value c(r−1) of the preceding round (r−1) (in the case of r=0, the initial value of the constant round value) into the function ƒL.
Additionally, the function ƒL uses a linear feedback shift register (LFSR).
Although the LFSR is typically determined by a polynomial, a polynomial g(x) which determines the LFSR is defined here in the following formula (3).
In the formule, g(x) is a polynomial defined in a finite field GF (2).
Meanwhile, pseudo-codes of the function ƒL are shown in the following formula (4).
In the formula, “<<X” means an X-bit left shift operation, “>>Y” means a Y-bit right shift operation, “̂” means an exclusive disjunction per bit, “&” means a conjunction per bit, and “|” means a disjunction per bit. Also, “h” means the higher-order bits (top 64 bits) in the constant round value c(r−1), and “l” means the lower-order bits (bottom 64 bits) in the constant round value c(r−1).
Then, the round-constant generation unit 123 outputs the lower-order 64 bits of the constant round value c(r) at the calculated round (r) to the first round-key generation unit 124 or the second round-key generation unit 125 as the round constant C(r) in the r th round.
An example of C(r) in the case of r=96 will be presented below.
The first round-key generation unit 124 calculates key round values and round keys in each round.
For example, the key round values will be calculated by the first round-key generation unit 124 using the first key-round-value transformation function ƒK illustrated in
As illustrated, the first key-round-value transformation function ƒK is a function which creates a key round value k(r) of the rth round by transforming split data k0(r−1), k1(r−1), k2(r−1), k3(r−1), k4(r−1), k5(r−1), k6(r−1), k7(r−1) into k0(r), k1(r), k2(r), k3(r), k4(r), k5(r), k6(r), k7(r) respectively, and then combining those transformed values. The split data k0(r−1), k1(r−1), k2(r−1), k3(r−1), k4(r−1), k5(r−1), k6(r−1), k7(r−1) are created by dividing a key round value k(r−1) of the (r−1) round (in the case of r=0, the calculated value stored in the calculated-value storage area 115, or the initial value of the calculated value stored in the initial-value storage area 111) into 8 values (here, the size of each split data is 64 bits).
Specifically, using the first key-round-value transformation function ƒK, the first round-key generation unit 124 splits a key round value of the (r−1) round stored in the key-round-value storage area 113 (in the case of r=0, the calculated value stored in the calculated-value storage area 115, or the initial value of the calculated value stored in the initial-value storage area 111) into 8 values k0(r−1), k1(r−1), k2(r−1), k3(r−1), k4(r−1), k5(r−1), k6(r−1), k7(r−1).
Next, the first round-key generation unit 124 applies k0(r−1), k1(r−1), k2(r−1), k3(r−1) in the key round value of the (r−1) round to k2(r), k3(r), k4(r), k5(r) in the key round value of the rth round respectively.
Then, the first round-key generation unit 124 calculates a higher-order bits (here, 64 bits) value bH (bH=FK(k4(r−1)XOR C(r), k5(r−1))H) and a lower bits (here, 64 bits) value bL (bL=FK(k4(r−1)XOR C(r), k5(r−1))L) of the value output by inputting a value a which is generated by combining a value aH of the exclusive disjunction of the round constant C(r) generated at the round-constant generation unit 123 and k4(r−1) in the round key of the (r−1) round, and a value aL of k5(r−1) in the round key of the (r−1) round into the function FK which is one of the F functions.
Then, the first round-key generation unit 124 calculates an exclusive disjunction of the values bH and k6(r−1) in the key round value of the (r−1) round, and takes the calculated value to be the key round value k0(r) of the rth round.
Additionally, the first round-key generation unit 124 calculates an exclusive disjunction of the values bL and k7(r−1) in the key round value of the (r−1) round, and takes the calculated value to be the key round value k1(r) of the rth round.
Then, the first round-key generation unit 124 takes k4(r−1) and k5(r−1) in the key round value of the (r−1) round to be the key round values k6(r) and k7(r) of the rth round respectively.
Then, the first round-key generation unit 124 combines k0(r), k1(r), k2(r), k3(r), k4(r), k5(r), k6(r), and k7(r) calculated as described above together to generate the key round value of the rth round, replaces the key round value of the (r−1) round with it, and stores it in the key-round-value storage area 113.
Besides, the first round-key generation unit 124 outputs to the shuffling unit 126 k3(r) in the key round value of the rth round as the round key K(r) of the rth round.
Next, a function FK which is one of the F functions used in the first round-key generation unit 124 will be described.
The function FK is a function which performs a combined transformation of a nonlinear transformation γK and a linear transformation λK as expressed in the following formula (5).
F
K=(λK∘γL) (5)
where the linear transformation λK is another combined transformation of a byte permutation πK and a matrix multiplication θK.
In the following, input into the function FK will be described as X, and output from the function FK will be described as Y.
In this embodiment, both X and Y are 128-bit data.
First, the nonlinear transformation γK splits the value X into sub-data (s0, s1, . . . , s15) in which the size of each element is 8 bits, and as expressed in the following formula (6), a nonlinear transformation is performed for each of the split data using a substitution table, S-box, where the transformed sub-data is represented as s′0, s′1, . . . , s′15.
s′
i
=S(si), i=0,1, . . . ,15 (6)
Here, the substitution table S-box is defined by way of example in the following formula (7).
Sbox[256]={0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x5, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16}; (7)
Next, the matrix multiplication θK performs a transformation by converting the transformed sub-data (s′0, s′1, . . . , s′15) from the above nonlinear transformation γK into a matrix with 8 rows and 2 columns, and by multiplying the matrix with a transformation matrix A as expressed in the following formula (10). The transformed sub-data is represented as s″0, s″1, . . . , s″15. The multiplication is done over a finite field GF (28). The finite field GF (28) satisfies the following formulas (8) and (9).
Note that any transformation matrix may be used as the transformation matrix A if, defining output columns as the columns of values output by transforming the input columns by the transformation matrix A, there exist 9 or more cells whose value is not “0” in the input columns and output columns.
Next, the byte permutation πK replaces half of the sub-data (s″0, s″1, . . . , s″15) transformed by the matrix multiplication θK as expressed in the following formula (11), where the transformed sub-data is represented as y0, y1, . . . , y15.
Then, the sub-data (y0, y1, . . . , y15) calculated as described above is combined as expressed in the following formula (12) to generate the output Y of the function FK.
Y=y0∥y1∥y2∥y3∥y4∥y5∥y6∥y7∥y8∥y9∥y10∥y11∥y12∥y13∥y14∥y15 (12)
Compared with a function FR described below, the function FK described above produces output in a single process with respect to one input, and thus the complexity of the function FK is relatively low and its implementation can be light-weight.
Back to
For example, the key round values will be calculated by the second round-key generation unit 125 using the second key-round-value transformation function ƒ′K illustrated in
As illustrated in
Specifically, using the second key-round-value transformation function ƒ′K, the second round-key generation unit 125 splits a key round value of the (r−1) round stored in the key-round-value storage area 113 (in the case of r=0, the calculated value stored in the calculated-value storage area 115) into 8 values k0(r−1), k1(r−1), k2(r−1), k3(r−1), k4(r−1), k5(r−1), k6(r−1), k7(r−1).
Next, the second round-key generation unit 125 applies k0(r−1), k1(r−1), k2(r−1), k3(r−1) in the key round value of the (r−1) round to k2(r), k3(r), k4(r), k5(r) in the key round value of the rth round respectively.
Then, the second round-key generation unit 125 calculates a higher-order bits (here, 64 bits) value b′H(b′H=FR(k4(r−1)XOR C(r), k5(r−1))H) and a lower bits (here, 64 bits) value b′L(b′L=FR(k4(r−1)XOR C(r), k5(r−1))H) of the value output by inputting an value a′ which is generated by combining a value a′H of the exclusive disjunction of the round constant C(r) generated at the round-constant generation unit 123 and k4(r−1) in the round key of the (r−1) round, and a value a′L of k5(r−1) in the round key of the (r−1) round into the function FR which is one of the F functions.
Then, the second round-key generation unit 125 calculates an exclusive disjunction of the values b′H and k6(r−1) in the key round value of the (r−1) round (in the case of r=0, the calculated value), and takes the calculated value to be the key round value k0(r) of the rth round.
Additionally, the second round-key generation unit 125 calculates an exclusive disjunction of the values b′L and k7(r−1) in the key round value of the (r−1) round (in the case of =0, the calculated value), and takes the calculated value to be the key round value k1(r) of the rth round.
Then, the second round-key generation unit 125 takes k4(r−1) and k5(r−1) in the key round value of the (r−1) round (in the case of r=0, the calculated value) to be the key round values k6(r) and k7(r) of the rth round respectively.
Then, the second round-key generation unit 125 combines k0(r), k1(r), k2(r), k3(r), k4(r), k5(r), k6(r), and k7(r) calculated as described above together to generate the key round value of the rth round, replaces the key round value of the (r−1) round with it, and stores it in the key-round-value storage area 113.
Besides, the second round-key generation unit 125 outputs k3(r) in the key round value of the rth round to the shuffling unit 126 as the round key K(r) of the rth round.
Next, a function FR which is one of the F functions used in the second round-key generation unit 125 will be described.
The function FR is a function which performs a combined transformation of a nonlinear transformation γR, a byte permutation πR, and a matrix multiplication θR for four times (four stages) as expressed in the following formula (13).
F
R=(θR∘πR∘γR)4 (13)
In the following, input into the function FR will be described as X, and output from the function will be described as Y. In this embodiment, both X and Y are 128-bit data.
First, the nonlinear transformation γR splits the value X into sub-data (s0, s1, . . . , s15) in which the size of each element is 8 bits, and as expressed in the following formula (14), a nonlinear transformation is performed for each of the split data using a substitution table, S-box, where the transformed sub-data is represented as s′0, s′1, . . . , s′15.
s
i
=S(si), i=0,1, . . . ,15 (14)
Here, the table expressed in the above formula (7) may be used, for example, as the substitution table S-box.
Next, as expressed in the following formula (15), the byte permutation πR performs a transformation by converting the transformed sub-data (s′0, s′1, . . . , s′15) from the above nonlinear transformation γR into a matrix with 4 rows and 4 columns, and replaces the data such that each row's data contained in each column are placed in different columns respectively. Note that the formula (15) is merely an example, and other replacement schemes may be employed if each row's data contained in each column are placed in different columns in that scheme.
Here, the transformed sub-data is represented as s″0, s″1, . . . ,s″15.
Next, as expressed in the following formula (16), the matrix multiplication θR performs a transformation by multiplying a matrix with 4 rows and 4 columns whose elements are the sub-data (s″0, s″1, . . . , s″15) transformed by the above byte permutation πR with a transformation matrix B over a finite field GF(28), where the transformed sub-data is represented as y0, y1, . . . , y15.
Note that any transformation matrix may be used as the transformation matrix B if, defining output columns as the columns of values output by transforming the input columns by the transformation matrix B, there exist 5 or more cells whose value is not “0” in the input columns and output columns.
Then, the transformation achieved as a result of the nonlinear transformation γR, the byte permutation πR, and the matrix multiplication θR is performed 3 more times (for a total of 4 times), with each iteration using the sub-data (y0, y1, . . . ,y15) calculated as described above for the sub-data (s0, s1, . . . , s15). The sub-data (y0, y1, . . . , y15) calculated in this manner is then combined as expressed in the following formula (17) to generate the output Y of the function FR.
Y=y0∥y1∥y2∥y3∥y4∥y5∥y6∥y7∥y8∥y9∥y10∥y11∥y12∥y13∥y14∥y15 (17)
Compared with the function FK described earlier, the function FR above produces output in four processes with respect to one input, and thus safety can be improved. Note that the number of processes may be arbitrarily modified.
Now, back to
For example, the plain-text round values will be calculated by the shuffling unit 126 using the plain-text-round-value transformation function ƒR illustrated in
As illustrated, the plain-text-round-value transformation function ƒR is a function which creates the plain-text round value x(r) of the rth round by transforming split data x0(r−1), x1(r−1), x2(r−1), x3(r−1), x4(r−1), x5(r−1), x6(r−1), x7(r−1) into x0(r), x1(r), x2(r), x3(r), x4(r), x5(r), x6(r), x7(r) respectively, and then combining those transformed values. The split data x0(r−1), x1(r−1), x2(r−1), x3(r−1), x4(r−1), x2(r−1), x6(r−1), x7(r−1) are created by dividing a plain text value x(r−1) (in the case of r=0, the message block M blocked by the message blocking unit 122) of the (r−1) round into 8 values (here, the size of each split data is 64 bits).
Specifically, using the plain-text-round-value transformation function ƒR, the shuffling unit 126 first splits a plain-text round value (in the case of r=0, the message block M′ blocked by the message blocking unit 122) of the (r−1) round stored in the plain-text round value storage area 114 into 8 values x0(r−1), x1(r−1), x2(r−1), x3(r−1), x4(r−1), x5(r−1), x6(r−1), x7(r−1).
Next, the shuffling unit 126 applies x0(r−1), x1(r−1), x2(r−1), x3(r−1) in the plain-text round value of the (r−1) round (in the case of r=0, the message block M) to x2(r), x3(r), x4(r), x5(r) in the plain-text round value of the rth round respectively.
Then, the shuffling unit 126 calculates a higher-order bits (here, 64 bits) value qH(qH=FR(x4(r−1)XOR K(r), x5(r−1))H) and a lower bits (here, 64 bits) value qL(qL=FR(x4(r−1)XOR K(r), x5(r−1))L) are calculated from the output value obtained by inputting a value p into the function FR which is one of the F functions. The value p is generated by combining a value pH, the exclusive disjunction of the round constant K(r) generated at the first round-key generation unit 124 or the second round-key generation unit 125 and x4(r−1) in the plain-text round value of the (r−1) round (in the case of r=0, the message block M′i), and a value pL of x5(r−1) in the plain-text round value of the (r−1) round (in the case of r=0, the message block M′i).
Then, the shuffling unit 126 calculates an exclusive disjunction of qH and x6(r−1) in the plain-text round value of the (r−1) round (in the case of r=0, the message block M′i), and takes the calculated value to be the plain-text round value x0(r) of the rth round.
Additionally, the shuffling unit 126 calculates an exclusive disjunction of a value qL and x7(r−1) in the plain-text round value of the (r−1) round (in the case of r=0, the message block M′i), and takes the calculated value to be the plain-text round value x1(r) of the rth round.
Then, the shuffling unit 126 takes x4(r−1) and x5(r−1) in the plain-text round value of the (r−1) round (in the case of r=0, the message block M′i) to be the plain-text round value x6(r) and x7(r) of the rth round respectively.
Then, the shuffling unit 126 combines x0(r−1), x1(r), x2(r), x3(r), x4(r), x5(r), x6(r), and x7(r) calculated as described above together to generate the plain-text round value of the rth round, and replaces the key round value of the (r−1) round with it, and stores it in the plain-text round value storage area 114.
Description of the function FR that is one of the F functions used in the shuffling unit 126 will be omitted, as the definition of the function is similar to the one which is expressed in the above formula (13).
The input unit 130 accepts information input.
The output unit 140 outputs information.
As illustrated in
For example, the storage unit 10 can be implemented by the CPU 901 utilizing the memory 902 or the external storage device 903, the control unit 120 can be implemented by loading a predetermined program stored in the external storage device 903 into the memory 902 to be executed by the CPU 901, the input unit 130 can be implemented by the CPU 901 utilizing the input device 906, and the output unit 140 can be implemented by the CPU 901 utilizing the output device 907.
The predetermined program may be downloaded into the external storage device 903 from the storage medium 904 via the read/write device 905 or from network via the communication device 908, then loaded into the memory 902 to be executed by the CPU 910. Alternatively, the program may be loaded directly into the memory 902 from the storage medium 904 via the read/write device 905 or from network via the communication device 908 and then executed by the CPU 901.
Next, with reference to
First, the hash value generation device 100 accepts input of the message M for generating a hash value via the input unit 130, and the master control unit 121 of the hash value generation device 100 inputs the message M to the message blocking unit 122.
Then, the message blocking unit 122 performs padding for the message M to split the message into message blocks (M′0, . . . ,M′k: k is an integer greater than or equal to 1) every 512 bits.
Then, the master control unit 121 calculates a plain-text round value h0 by inputting an initial value H−1 of a calculated value stored in the initial-value storage area 111, and a first message block M′0 of a message block M′i blocked by the message blocking unit 122 into a first block cipher ƒE.
Note here that the process using the first block cipher ƒE is performed at the round-constant generation unit 123, the first round-key generation unit 124, and the shuffling unit 126, as described below.
Then, the master control unit 121 obtains a calculated value by calculating an exclusive disjunction of the calculated plain-text round value h0 and the message block M′0, and calculates the plain-text round value h1 by inputting the calculated value and the next message block M′1 into the first block cipher ƒE. Additionally, the calculated value is stored in the calculated-value storage area 115.
These processes are repeated until the message block M′k−1 preceding the last message block M′k is used to calculate the plain-text round value hk−1.
Then, the master control unit 121 calculates the plain-text round value hk by inputting the value calculated from an exclusive disjunction of the plain-text round value hk−1 and the message block M′k−1, and the last message block M′k into a second block cipher f′E.
Note here that the process using the second block cipher ƒ′E is performed at the round-constant generation unit 123, the second round-key generation unit 125, and the shuffling unit 126, as described below.
Then, the master control unit 121 calculates a hash value Hk from an exclusive disjunction of the plain-text round value hk and the last message block M′k.
The hash value Hk is stored in the hash-value storage area 116.
Note that the hash value calculation process (method) of the present invention is not limited to the process (method) illustrated in
First, the round-constant generation unit 123 calculates a constant round value c(0) of the round r=0 by obtaining an initial value of a constant round value stored in the initial-value storage area 111, and performing a process using a linear transformation function ƒc such as the one illustrated in
Then, the round-constant generation unit 123 stores the calculated constant round value c(0) in the constant-round-value storage area 112, and outputs the round constant C(0) to the first round-key generation unit 124.
Next, if the message block M′i input into the first block cipher ƒE is the message block M′0, the first round-key generation unit 124 obtains the initial value of the calculated value stored in the initial-value storage area 111, while if the message block M′i input into the first block cipher ƒE is not the message block M′0, the first round-key generation unit 124 obtains the calculated value of the preceding message block M′i stored in the calculated-value storage area 115, calculates a key round value k(0) in the round r=0 by performing a process using the first key-round-value transformation function ƒK such as illustrated in
Then, the first round-key generation unit 124 stores the key round value k(0) in the key-round-value storage area 113, and outputs the round key K(0) to the shuffling unit 126.
Next, the shuffling unit 126 obtains the message block M′i input into the first block cipher ƒE, calculates a plain-text round value x(0) in the round r=0 by performing a process using the plain-text-round-value transformation function ƒR such as illustrated in
With that, the process in the zero round is completed.
Next, the round-constant generation unit 123 calculates a constant round value c(1) of the round r=1 by obtaining the constant round value c(0) stored in the constant-round-value storage area 112, and performing a process using a linear transformation function ƒc such as the one illustrated in
Then, the round-constant generation unit 123 replaces (i.e., overwrites) the calculated round value c(0) with the constant round value c(1), stores it in the constant-round-value storage area 112, and outputs the round constant C(1) to the first round-key generation unit 124.
Next, the first round-key generation unit 124 calculates a key round value k(1) in the round r=1 by obtaining the key round value k(0) stored in the key-round-value storage area 113, and performing a process using a first key-round-value transformation function ƒK such as the one illustrated in
Then, the first round-key generation unit 124 replaces (i.e., overwrites) the calculated key round value k(0) with the key round value k(1), stores it in the key-round-value storage area 113, and outputs the round key K(1) to the shuffling unit 126.
Next, the shuffling unit 126 calculates a plain round value x(1) in the round r−1 by obtaining the plain round value x(0) stored in the plain-text round value storage area 114, and performing a process using a plain-text-round-value transformation function ƒR such as the one illustrated in
With that, the process in the first round is completed.
By repeating processes similar to those in the first round described above until the predetermined round (31st round herein), the whole process for the first block cipher ƒE is completed.
First, the round-constant generation unit 123 calculates a constant round value c(0) of the round r=0 by obtaining an initial value of a constant round value stored in the initial-value storage area 111, and performing a process using a linear transformation function ƒc such as the one illustrated in
Then, the round-constant generation unit 123 stores the calculated constant round value c(0) in the constant-round-value storage area 112, and outputs the round constant C(0) to the second round-key generation unit 125.
Next, the second round-key generation unit 125 calculates a constant round value k(0) of the round r=0 by obtaining a calculated value stored in the preceding message block M′k−1 stored in the calculated-value storage area 115, and performing a process using a second key-round-value transformation function ƒ′K such as the one illustrated in
Then, the second round-key generation unit 125 stores the key round value k(0) in the key-round-value storage area 113, and outputs the round key K(0) to the shuffling unit 126.
Next, the shuffling unit 126 obtains the message block M′k input into the second block cipher ƒ′E, calculates a plain-text round value x(0) in the round r=0 by performing a process using a plain-text-round-value transformation function ƒR such as the one illustrated in
With that, the process in the zero round is completed.
Next, the round-constant generation unit 123 calculates a constant round value c(1) of the round r=1 by obtaining the constant round value c(0) stored in the constant-round-value storage area 112, and performing a process using a linear transformation function ƒc such as the one illustrated in
Then, the round-constant generation unit 123 replaces (i.e., overwrites) the calculated round value c(0) with the constant round value c(1), stores it in the constant-round-value storage area 112, and outputs the round constant C(1) to the second round-key generation unit 125.
Next, the second round-key generation unit 125 calculates a key round value k(1) in the round r=1 by obtaining the key round value k(0) stored in the key-round-value storage area 113, and performing a process using a first key-round-value transformation function ƒ′K such as the one illustrated in
Then, the second round-key generation unit 125 replaces (i.e., overwrites) the calculated key round value k(0) with the key round value k(1), stores it in the key-round-value storage area 113, and outputs the round key K(1) to the shuffling unit 126.
Next, the shuffling unit 126 calculates a plain round value x(1) in the round r=1 by obtaining the plain round value x(0) stored in the plain-text round value storage area 114, and performing a process using a plain-text-round-value transformation function ƒR such as the one illustrated in
With that, the process in the first round is completed.
By repeating processes similar to those in the first round described above until the predetermined round (31st round herein), the whole process for the second block cipher ƒ′E is completed.
First, the hash value generation device 100 obtains a message M, which is a source for generating a hash value, via the input unit 130 (S10).
Next, the message blocking unit 122 generates k+1 message blocks M′i by splitting the message obtained via the input unit 130 into blocks of predetermined data length (S11). Note that in this embodiment the message is split into 512-bit data.
Then, the master control unit 121 resets information stored in the constant-round-value storage area 112, the key-round-value storage area 113, the plain-text-round-value storage area 114, the calculated-value storage area 115 and the hash-value storage area 116 (S12). Specifically, all bit values of the information will be reset to “0”.
Next, the master control unit 121 initializes a message counter i that is a counter of the message blocks (S13). At this point, “0” will be assigned as the value of the message counter i.
Then, the master control unit 121 determines whether the value of message counter i satisfies i=k (S14).
In step S14, if i does not equal k (No at step S14), then the process proceeds to step S15, otherwise (Yes at step S14) the process proceeds to step S21.
In step S15, the master control unit 121 assigns an initial value “0” to a round counter r that is a counter of the rounds.
Next, the master control unit 121 determines whether the value of the round counter r has a relationship of r=(ROUND NUM)+1 with the predetermined number of the first round (ROUND NUM=31, herein) (S16). In step S16, if the relationship is satisfied the process proceeds to step S19, otherwise the process proceeds to step S17.
In step S17, a constant round value, a key round value and a plain-text round value are calculated in the round-constant generation unit 123, the first round-key generation unit 124 and the shuffling unit 126 using the first block cipher ƒE. Additionally, information stored in the constant-round-value storage area 112, the key-round-value storage area 113 and the plain-text-round-value storage area 114 is updated.
Then, the master control unit 121 adds “1” to the value of the round counter r, and goes back to step 16 to repeat the process.
Additionally, in step S19, the master control unit 121 calculates the calculated value by calculating an exclusive disjunction of a plain-text round value stored in the plain-text round value storage area 114 and the message block M′i, and updates information stored in the calculated-value storage area 115 with the calculated value.
Then, the master control unit 121 adds “1” to the value of the message counter i (S20), and goes back to step 14 to repeat the process.
On the other hand, in step S14, if i=k (Yes at step S14), then in step S21, the master control unit 121 assigns an initial value “0” to the round counter r that is a counter of the rounds.
Next, the master control unit 121 determines whether the value of the round counter r has a relationship of r=(ROUND NUM)+1 with the predetermined number of the second round (ROUND NUM=31, herein) (S22).
Then, in step S22, if the relationship is satisfied (Yes at step S22) the process proceeds to step S25, otherwise (No at step S22) the process proceeds to step S23.
In step S23, a constant round value, a key round value and a plain-text round value are calculated in the round-constant generation unit 123, the second round-key generation unit 125 and the shuffling unit 126 using the second block cipher ƒ′E. Additionally, information stored in the constant-round-value storage area 112, the key-round-value storage area 113 and the plain-text-round-value storage area 114 is updated.
Then, the master control unit 121 adds “1” to the value of the round counter r (S24), and goes back to step 22 to repeat the process.
Additionally, in step S25, the master control unit 121 calculates the calculated value by calculating an exclusive disjunction of a plain-text round value stored in the plain-text round value storage area 114 and the message block M′k, and updates information stored in the calculated-value storage area 116 with the calculated value.
As described above, in this embodiment, a 512-bit block cipher is used so that hash functions can be provided in which theoretical safety and actual safety are ensured.
Note here that in this embodiment a 256-bit hash value is generated.
As illustrated, the hash value generation device 200 includes a storage unit 210, a control unit 220, an input unit 230, and an output unit 240. As compared with the first embodiment, only the configuration of the storage unit 210 and the control unit 220 is different, so aspects associated with the differences will be described below.
The storage unit 210 includes an initial-value storage area 211, a constant-round-value storage area 112, a key-round-value storage area 113, a plain-text-round-value storage area 114, a calculated-value storage area 115 and a hash-value storage area 116. As compared with the first embodiment, information stored in the initial-value storage area 211 is different, so aspects associated with the differences will be described below.
The initial-value storage area 211 stores information which specifies an initial value for generating a hash value.
In this embodiment, an initial value of a constant round value and an initial value of a calculated value are stored as initial values for generating a hash value.
Here, a value such as c(−1)=0xffffffffffffffff is stored as the initial value of the constant round value.
Also, the initial value of the calculated value is H−1=(H−1.0,H−1.1, . . . ,H−1.7), and constants such as H−1.0=0x00000000, H−1.1=0x00000000, H−1.2=0x00000000, H−1.3=0x00000000, H−1.4=0x00000000, H−1.5=0x00000000, H−1.6=0x00000000, H−1.7=0x00000000 are stored in the value.
Note that the constants used for the initial value of the constant round value and calculated value are not limited to the above, and that it is possible to use random numbers generated by, for example, a pseudorandom number generator etc.
The control unit 220 includes the master control unit 221, a message blocking unit 222, the round-constant generation unit 223, the first round-key generation unit 224, the second round-key generation unit 225, and the shuffling unit 226.
The master control unit 221 controls all processes in the hash value generation device 200.
Particularly, in this embodiment, the master control unit 221 conducts a process that manages message blocks constructed by blocking a message for calculating a hash value, and a process that manages rounds in the round-constant generation unit 223, the first round-key generation unit 224, the second round-key generation unit 225 and the shuffling unit 226.
Additionally, the master control unit 221 calculates a calculated value by calculating an exclusive disjunction of a plain-text round value calculated in the shuffling unit 226 through all the rounds and a message block processed in a given round.
Furthermore, the master unit 221 calculates a hash value by calculating an exclusive disjunction of the last message block and a plain-text round value calculated in the shuffling unit 226 through all the message blocks and all the rounds.
The message blocking unit 222 splits a message directed to hash value calculation into blocks of predetermined length and performs padding for the resulting blocks.
Note that although in this embodiment the message directed to hash value calculation is split into 256-bit blocks, the present invention is not limited to such an embodiment.
The padding in this embodiment is performed as described by way of example below.
First, if the number of bits in the message directed to the hash value calculation is divisible by 256 bits, the message blocking unit 222 creates each message block by dividing the message by 256 bits, and adds a message block to create the last message block.
Then, within this last message block, the message blocking unit 222 stores “1” in the first bit, “0” in the bits from the second bit to the 191st bit counting from the second bit, and the bit length of the message in the last remaining 64 bits.
If the number of bits in the message directed to the hash value calculation is not divisible by 256 bits, the message blocking unit 222 creates each message block by dividing the message by 256 bits, stores “0” in all remaining bits in the last split message block to make the length of the block be 256 bits, and further adds a message block to the last split message block to create the last message block.
Then, within this last message block, the message blocking unit 222 stores “0” in the bits from the first bit to the 192nd bit counting from the first bit, and the bit length of the message in the last 64 bits.
Note that in this embodiment, we let a message for calculating a hash value be M, a message expanded to a length divisible by 256 bits by padding be M′, the number of message blocks be k+1 (k is an integer greater than or equal to 1), and each message block be M′i (i is an integer where 0=<i=<k).
The round-constant generation unit 223 calculates a constant round value and a round constant in each round.
Also in this embodiment, the round-constant generation unit 223 uses the linear transformation function ƒc to calculate the constant round value in each round from the initial value of the constant round value stored in the initial-value storage area 211 in the case of a first round, or from the constant round value of the preceding round stored in the constant-round-value storage area 212 in the cases other than the first round.
For example, as illustrated in
That is, the constant round value c(r) of the current round (r) is calculated from the constant round value c(r−1) (in the case of r=0, the initial value of the constant round value) of the preceding round (r−1) as expressed in the above formulas (1) and (2).
Additionally, the function ƒs uses a linear feedback shift register (LFSR). 20 Although the LFSR is typically determined by a polynomial, a polynomial g(x) which determines the LFSR is defined here in the following formula (18).
g(x)=x63+x62+x58+x55+x54+x52+x50+x49+x46+x43+x40+x38+x37+x35+x34+x30+x28+x26+x24+x23+x22+x18+x17+x12+x11+x10+x7+x3+x2+x1 (18)
where g(x) is a polynomial defined in a finite field GF (2).
Meanwhile, pseudo-codes of the function ƒL are expressed in the following formula (19).
where “<<X” means an X-bit left shift operation, “>>Y” means a Y-bit right shift operation, “̂” means an exclusive disjunction per bit, “&” means a conjunction per bit, and “|” means a disjunction per bit. Also, “h” means the higher-order bits (32 bits) in the constant round value c(r−1), and “l” means the lower bits (32 bits) in the constant round value c(r−1).
Then, the round-constant generation unit 223 outputs the lower 32 bits of the constant round value c(r) at the calculated round (r) to the first round-key generation unit 224 or the second round-key generation unit 225 as the round constant C(r) in the r th round.
An example of C(r) in the case of r=96 will be presented below.
C(0)=0x3b29b693, C(1)=0x90a58f8a, C(2)=0x472ae357, C(3)=0x42963e28, C(4)=0xd87dc430, C(6)=0x650288d7, C(6)=0x0ead60b6, C(7)=0xfb50532a, C(8)=0x9139bbc3, C(9)=0x299705c5, C(10)=0xef6ad616, C(11)=0xa65c1715, C(12)=0x797d1135, C(13)=0x32fc654e, C(14)=0x21220db8, C(15)=0x607dac22, C(16)=0x848836e0, C(17)=0x4520f9e5, C(18)=0xb9ace29a, C(19)=0xd055aef9, C(20)=0x4d3fb373, C(21)=0x8580f288, C(22)=0x5ba4bdbb, C(23)=0xbd8ff33a, C(24)=0xaa44bf81, C(25)=0x5db3f5f3, C(26)=0xa912fe04, C(27)=0xb2199ea1, C(28)=0x0fc7c10b, C(29)=0xc8667a84, C(30)=0x3f1f042d, C(31)=0xe54fa37c, C(32)=0x57f029af, C(33)=0x51e8c49c, C(34)=0x309ad6ca, C(35)=0x28f96206, C(36)=0x69e76232, C(37)=0xa3e58818, C(38)=0x634bc1a5, C(39)=0x241a197a, C(40)=0x49f94ff8, C(41)=0x3be45cf2, C(42)=0xe333768c, C(43)=0x441d4ad3, C(44)=0x481b935c, C(45)=0x7f2f5b3a, C(46)=0x4f343d06, C(47)=0x93e71c9e, C(48)=0x538a846f, C(49)→0xe4104b62, C(50)=0x8afc58d1, C(51)=0xff1b5dff, C(52)=0x807d5a5f, C(53)=0x38bb3e91, C(54)=0xaa795066, C(55)=0xe2ecfa45, C(56)=0xa9e54199, C(57)=0x4f65a079, C(58)=0x0c193f7e, C(59)=0xf940c888, C(60)=0x9be8c4e3, C(61)=0x21d56b4d, C(62)=0xc42f2a96, C(63)=0x8755ad35, C(64)=0xd46ae335, C(65)=0xb6da8dcf, C(66)=0x957dc5b9, C(67)=0x70e60e27, C(68)=0x55f716e4, C(69)=0x074e71f0, C(70)=0x38862be6, C(71)=0xb6b5feda, C(72)=0xe218af99, C(73)=0xdad7fb69, C(74)=0x4cb4f709, C(75)=0x04059dd2, C(76)=0x5d89ac52, C(77)=0xbb9a4e52, C(78)=0xb2f0f825, C(79)=0x45e50053, C(80)=0xcbc3e094, C(81)=0xd3424821, C(82)=0x4055f227, C(83)=0x225350f2, C(84)=0x6e0db8ea, C(85)=0x22c17ad2, C(86)=0x7ce0aac4, C(87)=0x2089d252, C(88)=0x3754e27c, C(89)=0x29ab7052, C(90)=0xdd5389f0, C(91)=0xa6adc149, C(92)=0xb1986ead, C(93)=0x313b3c3f, C(94)=0xc661bab4, C(95)=0x4ecf0fd.
The first round-key generation unit 224 calculates key round values and round keys in each round.
For example, the key round values will be calculated by the first round-key generation unit 224 using the first key-round-value transformation function ƒK illustrated above in
As illustrated in
Note that as the process using the first key-round-value transformation function ƒK is same as those of the first embodiment except that the bit counts in each process is different, the detailed description thereof will be omitted.
Next, a function FK which is one of the F functions used in the first round-key generation unit 224 will be described.
The function FK in this embodiment is also a function which performs a combined transformation of a nonlinear transformation γK and a linear transformation λK as expressed in the above formula (5). The linear transformation λK is composed of a byte permutation πK and a matrix multiplication θK.
In the following, input into the function FK will be described as X, and output from the function will be described as Y.
In this embodiment, both X and Y are 64-bit data.
First, the nonlinear transformation γK splits the value X into sub-data (s0, s1, . . . , s7) in which the size of each element is 8 bits, and as expressed in the following formula (20), a nonlinear transformation is performed for each of the split data using a substitution table, S-box, where the transformed sub-data is represented as s′0, s′1, . . . s′7.
s′
i
=S(si), i=0,1, . . . ,7 (20)
Here, the substitution table S-box is defined by way of example in the above formula (7).
Next, the matrix multiplication θK performs a transformation by converting the transformed sub-data (s′0, s′1, . . . , s′7) from the above nonlinear transformation γK into a matrix with 4 rows and 2 columns, and by multiplying the matrix with a transformation matrix A over a finite field GF (28) as expressed in the following formula (21). The transformed sub-data is represented as s″0, s″1, . . . , s″7.
Note that any transformation matrix may be used as the transformation matrix A if, defining output columns as the columns of values output by transforming the input columns by the transformation matrix A, there exist 5 or more cells whose value is not “0” n the input columns and output columns.
Next, the byte permutation πK replaces half of the sub-data (s″0, s″1, . . . , s″7) transformed by the matrix multiplication θK as expressed in the following formula (22), where the transformed sub-data is represented as y0, y1, . . . , y7.
Then, the sub-data (y0, y1, . . . , y7) calculated as described above is combined as expressed in the following formula (23) to generate the output Y of the function FK.
Y=y0∥y1∥y2∥y3∥y4∥y5∥y6∥y7 (23)
Compared with a function FR described below, the function FK described above produces output in a single process with respect to one input, and thus the complexity of the function FK is relatively low and its implementation can be light-weight.
Back to
For example, the key round values will be calculated by the second round-key generation unit 225 using a second key-round-value transformation function ƒ′K such as the one illustrated in
As illustrated in
Note that as the process using the second key-round-value transformation function ƒ′K is same as those of the first embodiment except that the bit counts in each process are different, the detailed description thereof will be omitted.
Next, a function FR which is one of the F functions used in the second round-key generation unit 225 will be described.
The function FR is a function which performs a combined transformation of a nonlinear transformation γR, a byte permutation πR, and a matrix multiplication θR for four times (four stages) as expressed in the above formula (13).
In the following, input into the function FR will be described as X, and output from the function will be described as Y.
In this embodiment, both X and Y are 64-bit data.
First, the nonlinear transformation γR splits the value X into sub-data (s0, s1, . . . , s7) in which the size of each element is 8 bits, and as expressed in the following formula (24), a nonlinear transformation is performed for each of the split data using a substitution table, S-box, where the transformed sub-data is represented as s′0, s′1, . . . , s′7.
s′
i
=S(si), i=0,1, . . . ,7 (24)
Here, the table expressed in the above formula (7) may be used, for example, as the substitution table S-box.
Next, as expressed in the following formula (25), the byte permutation πR performs a transformation by converting the transformed sub-data (s′0, s′1, . . . , s′7) from the above nonlinear transformation γR into a matrix with 2 rows and 4 columns, and replaces the data such that each row's data contained in each column are placed in different columns respectively. Note that the formula (25) is merely an example, and other replacement schemes may be employed if each row's data contained in each column are placed in different columns in that scheme.
Here, the transformed sub-data is represented as s″0, s″1, . . . , s″7.
Next, as expressed in the following formula (26), the matrix multiplication θR performs a transformation by multiplying a matrix with 2 rows and 4 columns whose elements are the sub-data (s″0, s″1, . . . , s″7) transformed by the above byte permutation πR with a transformation matrix B over a finite field GF(28), where the transformed sub-data is represented y0, y1, . . . , y7.
Note that any transformation matrix may be used as the transformation matrix B if, defining output columns as the columns of values output by transforming the input columns by the transformation matrix B, there exist 3 or more cells whose value is not “0” in the input columns and output columns.
Then, the transformation achieved as a result of the nonlinear transformation γR, the byte permutation πR, and the matrix multiplication θR is performed 3 more times (for a total of 4 times), with each iteration using the sub-data (y0, y1, . . . ,y7) calculated as described above for the sub-data (s0, s1, . . . , s7). The sub-data (y0, y1, . . . ,y7) calculated in this manner is then combined as expressed in the following formula (27) to generate the output Y of the function FR.
Y=y0∥y1∥y2∥y3∥y4∥y5∥y6∥y7 (27)
Compared with the function FK described earlier, the function FR above produces output in four processes with respect to one input, and thus safety can be improved. Note that the number of processes may be arbitrarily modified.
Now, back to
For example, the plain-text round values will be calculated by the shuffling unit 226 using the plain-text-round-value transformation function ƒr illustrated in
As illustrated in
Note that as the processes using the plain-text-round-value transformation function FR are the same as those of the first embodiment except that the bit counts in each process is different, the detailed description thereof will be omitted.
Also, as the function FR that is one of the F functions used in the shuffling unit 226 is same as the function FR used in the second round-key generation unit 225 described above, the detailed description thereof will be omitted.
The hash value calculation process in this embodiment can be performed in the same way as the one shown in
First, the hash value generation device 200 accepts input of the message M for generating a hash value via the input unit 130, and the master control unit 221 of the hash value generation device 200 inputs the message M to the message blocking unit 222.
Then, the message blocking unit 222 performs padding for the message M to split the message into message blocks (M′0, . . . ,M′k: k is an integer greater than or equal to 1) every 256 bits.
Then, the master control unit 221 calculates a plain-text round value h0 by inputting an initial value H−1 of a calculated value stored in the initial-value storage area 211, and a first message block M′0 of a message block M′i blocked by the message blocking unit 222 into a first block cipher ƒE.
Note here that the process using the first block cipher ƒE is performed at the round-constant generation unit 223, the first round-key generation unit 224, and the shuffling unit 226.
Then, the master control unit 221 obtains a calculated value by calculating an exclusive disjunction of the calculated plain-text round value h0 and the message block M′0, and calculates the plain-text round value h1 by inputting the calculated value and the next message block M′1 into the first block cipher ƒE. Additionally, the calculated value is stored in the calculated-value storage area 115.
These processes are repeated until the message block M′k−1 preceding the last message block M′k is used to calculate the plain-text round value hk−1.
Then, the master control unit 221 calculates the plain-text round value hk by inputting the value calculated from an exclusive disjunction of the plain-text round value hk−1 and the message block M′k−1, and the last message block M′k into a second block cipher f′E.
Note here that the process using the second block cipher ƒ′E is performed at the round-constant generation unit 223, the second round-key generation unit 225, and the shuffling unit 226.
Then, the master control unit 221 calculates a hash value Hk from an exclusive disjunction of the plain-text round value hk and the last message block M′k.
The hash value Hk is stored in the hash-value storage area 216.
Here, as processes using the first block cipher ƒE and those using the second block cipher ƒ′E are the same as those shown in
As described above, it can be understood that a 256-bit hash value can be calculated in accordance with this embodiment.
Here, a tolerance indicator using the minimum active S-box number as shown in the following formula (28) can be used against differential attacks and linear attacks.
(Minimum active S-box)*(Differential characteristics of S-box)>block length (28)
In this respect, for the Advanced Encryption Standard (AES) type of F function, letting B be an active S-box number for two stages, the active S-box number for four stages will be B2. This method that enhances safety by overlaying S-boxes for four stages in this manner is referred to as the Wide Trail Strategy (WTS).
In contrast, for example, a Feistel structure such as the one illustrated in
In that respect, the present invention ensures hash safety by performing a combined transformation of a nonlinear transformation γR, a byte permutation πR, and a matrix multiplication θR for four times (four stages) in a plain-text-round-value transformation function ƒR.
For example, for the hash value generation device 100 generating a 512-bit hash value in the first embodiment of the present invention, the minimum active S-box number for two stages is B=5, so the minimum active S-box number per one F function will be B2=25.
Additionally, as there exist at least five active F functions for twelve stages, the minimum value of the active S-box number will be 5*25=125.
Therefore, as the maximum differential propagation probability is 125*6(=750)>512, it can be understood that the formula (28) is satisfied and the embodiment has tolerance against differential attacks.
Additionally, for the hash value generation device 200 generating a 256-bit hash value in the second embodiment of the present invention, the minimum active S-box number for two stages is B=3, so the minimum active S-box number per one F function will be B2=9.
In addition, as there exist at least five active F functions for twelve stages, the minimum value of the active S-box number will be 5*9=45.
Therefore, as the maximum differential propagation probability is 45*6(=270)>256, it can be understood that the formula (28) is satisfied and the embodiment has tolerance against differential attacks.
Note that the WTS is described in detail in J. Daemen and V. Rijmen, Springer, February, 2002, “The Design of Rijndael”, pp. 123-147 (Literature 2).
Also, although 512-bit and 256-bit hash values are calculated in the first embodiment and the second embodiment described above respectively, the present invention is not limited to these aspects, and hash values of other bit lengths such as 224-bit, 384-bit etc. may be calculated by changing the bit length appropriately.
Furthermore, in the embodiments described above, although the hash value generation device 100 and 200 can be implemented with the computer 900 illustrated in
Additionally, the hash value generation device 100 and 200 need not be implemented by a computer executing programs. For example, the devices may be executed as hardware by integrated logic arrays such as an Application Specific Integrated Circuit (ASIC) or a Field Programmable Gate Array (FPGA), or executed as software by processors such as a Digital Signal Processor (DSP) etc.
In the embodiments described above, although the plain-text-round-value transformation function ƒR is used, the present invention is not limited to such aspects, and any function which utilizes the function FR as an F function may be used. For example, a plain-text-round-value transformation function ƒR such as the one illustrated in
In the plain-text-round-value transformation function ƒR illustrated in
Then, an exclusive disjunction of an exclusive disjunction of the value pH and the value qH, and x6(r−1) in the plain-text round value of the (r−1) round (in the case of r=0, the message block M′i) is calculated, and the calculated value is set to be x0(r) of the plain-text round value of the rth round.
Additionally, an exclusive disjunction of an exclusive disjunction of the value pL and the value qL, and x7(r−1) in the plain-text round value of the (r−1) round (in the case of r=0, the message block M′i) is calculated, and the calculated value is set to be x1(r) of the plain-text round value of the rth round.
By using a plain-text-round-value transformation function ƒR such as the one illustrated in
Furthermore, in place of a plain-text-round-value transformation function ƒR such as the one illustrated in
In the plain-text-round-value transformation function ƒR illustrated in
Note that the round key K0(r) uses the k2(r) in the key round value of the rth round, and that the round key K1(r) uses the k3(r) in the key round value of the rth round.
By using the plain-text-round-value transformation function ƒR illustrated in
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereto without departing from the spirit and scope of the invention as set forth in the claims.
Number | Date | Country | Kind |
---|---|---|---|
2008-208635 | Aug 2008 | JP | national |