WO2023095249A1 - 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体 - Google Patents

認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体 Download PDF

Info

Publication number
WO2023095249A1
WO2023095249A1 PCT/JP2021/043216 JP2021043216W WO2023095249A1 WO 2023095249 A1 WO2023095249 A1 WO 2023095249A1 JP 2021043216 W JP2021043216 W JP 2021043216W WO 2023095249 A1 WO2023095249 A1 WO 2023095249A1
Authority
WO
WIPO (PCT)
Prior art keywords
random number
encryption
unit
tag
authentication
Prior art date
Application number
PCT/JP2021/043216
Other languages
English (en)
French (fr)
Inventor
明子 向井
Original Assignee
日本電気株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2023563415A priority Critical patent/JPWO2023095249A5/ja
Priority to PCT/JP2021/043216 priority patent/WO2023095249A1/ja
Publication of WO2023095249A1 publication Critical patent/WO2023095249A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Definitions

  • the present invention relates to an authenticated encryption device, an authenticated decryption device, an authenticated encryption system, a method, and a computer-readable medium.
  • AE Authenticated Encryption
  • Non-Patent Document 1 the technique disclosed in Non-Patent Document 1 is known.
  • the maximum security is generally b bits.
  • a security level of ⁇ b bits higher than bits can be realized.
  • Non-Patent Document 1 limits the number of plaintext blocks that can be processed in one authentication encryption. Therefore, although the technique according to Non-Patent Document 1 can improve security, it is difficult to encrypt a long plaintext at once due to the limitation on the number of plaintext blocks that can be processed.
  • An object is to provide an apparatus, an authenticated decryption apparatus, an authenticated encryption system, a method, and a computer-readable medium.
  • the authentication encryption device uses tweakable block cipher using a nonce as a tweak to encrypt plaintext divided into plaintext blocks of a predetermined length for each area of a predetermined length.
  • a random number calculation means for generating a set of random numbers for each section, and a set of random numbers generated in each section is encrypted using a Tweakable block cipher, and each encrypted random number is used as an initial value for processing in the next section.
  • a random number encryption means and a tag generation means for encrypting the set of random numbers generated in the final zone using a Tweakable block cipher to generate a tag for authentication.
  • the authentication/decryption device decrypts a ciphertext divided into ciphertext blocks of a predetermined length by using a tweakable block cipher using a nonce as a tweak for each section of a predetermined length.
  • decryption means first data derived from at least one of the input and output of a function related to the Tweakable block cipher in each area in the decryption, and a predetermined matrix having predetermined values as elements, A random number calculation means for generating a set of random numbers for each section, and a set of random numbers generated in each section is encrypted using a Tweakable block cipher, and each encrypted random number is used as an initial value for processing in the next section.
  • tag generation means for generating a tag for inspection by encrypting the set of random numbers generated in the last zone using a Tweakable block cipher; said tag for inspection; a tag inspection means for inspecting the presence or absence of tampering by comparing the tag with the tag for use, and performing control for outputting the inspection result.
  • an authenticated encryption system includes an authenticated encryption device and an authentication decryption device that communicates with the authenticated encryption device, and the authenticated encryption device uses a nonce as a Tweak.
  • encryption means for encrypting a plaintext divided into plaintext blocks of a predetermined length using a Tweakable block cipher, for each section of a predetermined length;
  • a first random number calculation means for generating a set of random numbers for each area using data derived from at least one of the input and output of the function related to and a predetermined matrix having predetermined values as elements;
  • a first random number encryption means for encrypting the set of random numbers generated by using a Tweakable block cipher and using each encrypted random number as an initial value for processing in the next section;
  • a first tag generating means for encrypting the set of random numbers obtained by using a Tweakable block cipher to generate a tag for authentication, wherein the authentication/decryption device uses the Tweakable block cipher using the
  • the authentication encryption method uses a tweakable block cipher using a nonce as a tweak to encrypt plaintext divided into plaintext blocks of a predetermined length for each area of a predetermined length,
  • a random number A set of random numbers generated in each section is encrypted using a Tweakable block cipher, each encrypted random number is used as an initial value for processing in the next section, and the set of random numbers generated in the last section is The set of random numbers is encrypted using a Tweakable block cipher to generate a tag for authentication.
  • the authentication/decryption method decrypts a ciphertext divided into ciphertext blocks of a predetermined length by using a tweakable block cipher using a nonce as a tweak for each section of a predetermined length.
  • a random number is generated for each area
  • a set of random numbers generated in each section is encrypted using a Tweakable block cipher, each encrypted random number is used as an initial value for processing in the next section, and the set of random numbers generated in the last section is
  • a set of random numbers is encrypted using a Tweakable block cipher to generate an inspection tag, and the inspection tag is compared with the input authentication tag to inspect for tampering, It controls the output of inspection results.
  • the program according to the present disclosure uses a tweakable block cipher using a nonce as a tweak to encrypt plaintext divided into plaintext blocks of a predetermined length for each section of a predetermined length;
  • a random number encrypting the set of random numbers generated in each zone using a Tweakable block cipher, and using each encrypted random number as an initial value for processing in the next zone; and encrypting the set of random numbers generated in the zone using a Tweakable block cipher to generate a tag for authentication.
  • the program according to the present disclosure uses a tweakable block cipher using a nonce as a tweak to decrypt a ciphertext divided into ciphertext blocks of a predetermined length for each section of a predetermined length.
  • a random number is generated for each area encrypting the set of random numbers generated in each zone using a Tweakable block cipher, and using each encrypted random number as an initial value for processing in the next zone; encrypting a set of random numbers generated in the zone using a Tweakable block cipher to generate a tag for inspection; and comparing the tag for inspection with an input tag for authentication, and a step of inspecting the presence or absence of falsification and performing control for outputting the inspection result.
  • an authenticated encryption device an authenticated decryption device, an authenticated encryption system, a method, and a computer-readable medium that can increase the number of plaintext blocks that can be processed in one authenticated encryption while realizing high security.
  • FIG. 10 is a diagram showing the configuration of an authentication encryption device according to a comparative example
  • 1 is a diagram showing a configuration of an authenticated encryption system according to Embodiment 1
  • FIG. 1 is a diagram showing a configuration of an authentication encryption device according to Embodiment 1
  • FIG. 4 is a diagram for explaining processing of a random number encryption unit and a tag generation unit of the authentication encryption device according to the first exemplary embodiment
  • FIG. 4 is a diagram showing an outline of computation in authentication encryption processing according to the first embodiment
  • FIG. 4 is a diagram showing an outline of computation in authentication encryption processing according to the first embodiment
  • FIG. 4 is a diagram showing an outline of computation in authentication encryption processing according to the first embodiment
  • FIG. 4 is a diagram showing an outline of computation in authentication encryption processing according to the first embodiment
  • FIG. 10 is a diagram showing the configuration of an authentication encryption device according to a comparative example
  • 1 is a diagram showing a configuration of an authenticated encryption system according to Embodiment 1
  • FIG. 1 is
  • FIG. 4 is a diagram showing an outline of computation in authentication encryption processing according to the first embodiment;
  • FIG. 4 is a diagram showing an outline of computation in authentication encryption processing according to the first embodiment;
  • FIG. 1 is a diagram showing a configuration of an authentication/decryption device according to Embodiment 1;
  • FIG. 4 is a diagram for explaining processing of a random number encryption unit and a tag generation unit of the authentication/decryption device according to the first exemplary embodiment;
  • FIG. FIG. 4 is a diagram showing an outline of computation in the authentication decryption process according to the first embodiment;
  • FIG. FIG. 4 is a diagram showing an outline of computation in the authentication decryption process according to the first embodiment;
  • FIG. 4 is a diagram showing an outline of computation in the authentication decryption process according to the first embodiment;
  • FIG. 4 is a flow chart showing an authentication encryption method executed by the authentication encryption device according to the first exemplary embodiment; 4 is a flow chart showing an authentication-decryption method executed by the authentication-decryption device according to the first embodiment;
  • FIG. 9 is a diagram showing the configuration of an authentication encryption device according to a second embodiment;
  • FIG. 10 is a diagram for explaining processing of a random number encryption unit and a tag generation unit of the authentication encryption device according to the second embodiment;
  • FIG. 10 is a diagram showing an outline of computation in authentication encryption processing according to the second embodiment;
  • FIG. FIG. 10 is a diagram showing an outline of computation in authentication encryption processing according to the second embodiment;
  • FIG. FIG. 10 is a diagram showing an outline of computation in authentication encryption processing according to the second embodiment;
  • FIG. 10 is a diagram showing an outline of computation in authentication encryption processing according to the second embodiment;
  • FIG. FIG. 10 is a diagram showing an outline of computation in authentication encryption processing according to the second embodiment;
  • FIG. FIG. 10 is a
  • FIG. 9 is a diagram showing the configuration of an authentication/decryption device according to a second exemplary embodiment
  • FIG. FIG. 10 is a diagram showing the configuration of an authentication encryption device according to a third embodiment
  • FIG. FIG. 11 is a diagram showing the configuration of an authentication-decryption device according to a third exemplary embodiment
  • FIG. It is a figure for demonstrating the 2nd comparative example. It is a figure for demonstrating the 2nd comparative example.
  • 1 is a block diagram schematically showing a hardware configuration example of a computing device capable of realizing the device and system according to each embodiment
  • Enc be the encryption function of the authentication cipher, and Dec be the decryption function.
  • M be a plaintext to be encrypted, and introduce a variable N (initial vector) called a nonce.
  • A be Associated Data (AD).
  • AD Associated Data
  • the related data A header is a value that is not encrypted but is tampered with.
  • Enc_K is an encryption function with a key K, which is a secret key, as a parameter
  • C is a ciphertext.
  • T is a fixed-length tampering detection variable called a tag (authentication tag). Alice sends the set (N,A,C,T) of nonce N, associated data A, ciphertext C and tag T to Bob.
  • Dec_K is a decryption function with the key K as a parameter. If there is tampering by a third party Eve in the middle of communication and (N', A', C', T') ⁇ (N, A, C, T), Dec_K(N', A', C' , T′), an error message (error symbol ⁇ ) indicating that there has been tampering is output. In other words, falsification is detected in this case.
  • the encryption side uses some state variable, such as a counter, to prevent nonce matching. That is, typically, by storing the last used N as a state variable and incrementing N each time, it is possible to prevent the nonce N from duplicating past values.
  • Non-Patent Document 1 uses a block cipher called Tweakable Block Cipher (TBC) that introduces a public adjustment value (auxiliary variable) called Tweak during encryption and decryption. . That is, in TBC, key permutation including Tweak is performed on the input of the block cipher. TBCs with different Tweaks can be regarded as independent block ciphers.
  • TBC Tweakable Block Cipher
  • Equation 1 the TBC function is represented by Equation 1 below. ... (1)
  • TBC function the left side (TBC function) of Equation 1 is expressed as "E_K ⁇ Tw ⁇ (M)", “E K Tw ⁇ (M)”, or simply “E K ⁇ " or “E_K ⁇ " and so on.
  • FIG. 1 is a diagram showing the configuration of an authentication encryption device 80 according to a comparative example.
  • FIG. 1 shows the configuration of an authentication encryption device 80 implemented using the encryption method in PFB ⁇ according to Non-Patent Document 1.
  • FIG. 1 is a diagram showing an outline of computation of the authentication encryption device 80 according to the comparative example.
  • the authentication encryption device 80 has an AD processing unit 82, an encryption unit 84, a calculation unit 86, and a tag generation unit 88.
  • the calculation unit 86 is depicted as being separated into a front-stage portion 86a and a rear-stage portion 86b, but the calculation unit 86 may be integrated.
  • the calculation section 86 may be configured such that the front-stage section 86a and the rear-stage section 86b are continuously formed.
  • the AD processing unit 82 processes related data (AD). Related data A is input to the AD processing unit 82 .
  • the AD processing unit 82 divides the input related data A into blocks (A_1, . . . , A_a) each having a length of b bits. That is, the data length of each associated data (AD) block A_1, . . . , A_a is b bits. Note that a indicates the number of AD blocks.
  • the AD processing unit 82 processes each AD block using the TBC function to which the key K and Tweak are input.
  • the AD processing unit 82 sets 0 ⁇ b(0 b ) as the initial value Z_0(Z 0 ).
  • 0 ⁇ b indicates all zeros of b bits.
  • a random number Z_1 is output from the TBC function E K ⁇ as the encryption result.
  • the AD processing unit 82 encrypts the value obtained by the exclusive OR of the output encryption result Z_1 and the AD block A_2 of the second block using the TBC function E K .
  • a random number Z_2 is output as the encryption result from the TBC function E K .
  • the AD processing unit 82 uses the value obtained by the exclusive OR of the output encryption result Z_i and the next (i+1)-th block AD block A_(i+1) as the TBC function E K Repeat the process of encrypting with Note that 1 ⁇ i ⁇ a.
  • the AD processing unit 82 outputs the value obtained by the exclusive OR of the last AD block A_a and the encryption result Z_(a-1) to the encryption unit 84 as H_1.
  • H_1 is a b-bit value.
  • the AD processing unit 82 outputs the result of encryption by the TBC function, that is, the random numbers Z_1, .
  • Z is a value generated in the middle of generating H_1, so it can be said to be an intermediate value.
  • the Tweak input to the TBC function is (0 ⁇ n, i, 0,0). Note that "0 ⁇ n(0 n )" indicates all zeros of n bits. Also, n indicates the data length (number of bits) of the nonce N.
  • Tweaks input to a plurality of TBC functions are different from each other, Tweaks input to each TBC function can be the same even when different plaintexts are encrypted. That is, each Tweak input to each TBC function can be a constant. For example, Tweak (0 n , 1, 0, 0) input to the first E k ⁇ is the same regardless of whether a certain plaintext Ma is encrypted or another plaintext Mb is encrypted. can be The same applies to the Tweak input to the TBC function in the encryption unit 84 and the tag generation unit 88, which will be described later, except for the nonce value.
  • the data length of related data A is a multiple of b bits.
  • AD processing can be performed on associated data of arbitrary length (that is, a length that is not a multiple of b bits).
  • the associated data (AD) may not be included (empty) as an input for the AE.
  • the AD processing section 82 is not required.
  • H_1 in the encryption unit 84 in FIG. 1 should be set to 0 ⁇ b.
  • the encryption unit 84 encrypts plaintext.
  • the nonce N, plaintext M, and H_1 output from the AD processing unit 82 are input to the encryption unit 84 .
  • the encryption unit 84 divides the input plaintext M into blocks (M_1, . . . , M_m) each having a length of b bits. That is, the data length of each of the plaintext blocks M_1, . . . , M_m is b bits. Note that m indicates the number of plaintext blocks.
  • the encryption unit 84 processes each plaintext block using the TBC function to which the key K, nonce N and Tweak are input.
  • the encryption unit 84 sets H_1 as the initial value.
  • the encryption unit 84 encrypts the initial value H_1 with the TBC function E K .
  • a random number Z_a is output from the TBC function E K ⁇ as the encryption result.
  • the encryption unit 84 obtains a ciphertext block C_1 by XORing the output encryption result Z_a and the first plaintext block M_1.
  • Z is a value generated in the course of generating a ciphertext block, so it can also be said to be an intermediate value.
  • the encryption unit 84 encrypts the plaintext block M_1 with the TBC function E K .
  • Z_(a+1) which is a random number, is output as the encryption result.
  • the encryption unit 84 obtains a ciphertext block C_2 by XORing the encryption result Z_(a+1) and the second plaintext block M_2.
  • the encryption unit 84 obtains the ciphertext by XORing the encryption result Z_(a+i) of the i-th block M_i and the next (i+1)-th block M_(i+1). Repeat the process of obtaining block C_(i+1). Note that 0 ⁇ i ⁇ m.
  • the encryption unit 84 outputs the encryption result Z_(a+m) to the tag generation unit 88 as T_1.
  • T_1 is a b-bit value and is part of the tag.
  • " indicates concatenation of bit strings.
  • the ciphertext C has the same length (bit length) as the plaintext M.
  • the encryption unit 84 also outputs the encryption result, that is, random numbers Z_a, .
  • the encryption unit 84 uses the encryption result of the TBC function in which (N, a, i, 0) is input as Tweak for the block index i (1 ⁇ i ⁇ m) of the plaintext M to convert M_i Encrypt to get C_i.
  • the Tweak input to the TBC function (which inputs M_m and obtains T_1) used at the end of the encryption unit 84 is (N, a, m, 1).
  • Tweaks input to a plurality of TBC functions are different from each other. can be the same. That is, each Tweak input to each TBC function can be a constant, except for the value of the nonce N. Note that this also applies to embodiments described later.
  • the data length of plaintext M is assumed to be a multiple of b bits.
  • Tweak By increasing Tweak, it becomes possible to process a plaintext of arbitrary length (that is, a length that is not a multiple of b bits).
  • H_1 when the related data (AD) is not included in the AE input, H_1 may be set to 0 ⁇ b.
  • the predetermined matrix AM is a matrix having a size of ( ⁇ 1) ⁇ (a+m) and having predetermined values ⁇ _(i, j) as elements.
  • is a value indicating a predetermined security level and is an integer of 3 or more.
  • i here is the index of the number of rows in the matrix AM and corresponds to the index of the line. Note that 2 ⁇ i ⁇ .
  • j is the index of the number of columns in the matrix AM and corresponds to the index of the input random number Z, that is, the block index. Note that 1 ⁇ j ⁇ a+m. ... (2)
  • Equation 4 the following Equation 4 holds for each line i (2 ⁇ i ⁇ ). ... (4)
  • the element ⁇ _(i, j) of the matrix AM is an element of the finite field GF(2 ⁇ b). Also, the element ⁇ _(i,j) of the matrix AM is a specific value of b bits. Also, " ⁇ " of ⁇ _(i, j) ⁇ Z_j means multiplication on the finite field GF(2 ⁇ b), and in FIG. ing. A symbol with a "+" drawn in a circle indicates an exclusive OR (XOR).
  • the calculation unit 86 calculates H_i by performing an exclusive OR of the multiplied values of the random number Z_j and ⁇ _(i, j) for each of ⁇ 1 lines i (2 ⁇ i ⁇ ). do.
  • the number of random numbers Z_j is increased from 1 to ⁇ -1 in order to obtain high security. Therefore, ⁇ can also be said to mean an expansion number.
  • the calculator 86 outputs the obtained H_2, . . . , H_ ⁇ to the tag generator 88 .
  • the predetermined matrix AM shown in Equation 2 must satisfy certain conditions for security reasons. Details will be described later.
  • the tag generation unit 88 generates a tag T.
  • the tag generation unit 88 receives T_1 from the encryption unit 84 and H_2, . . . , H_ ⁇ from the calculation unit 86 . Further, a nonce N is input to the tag generator 88 .
  • the tag generator 88 outputs T_1 as it is as part of the tag.
  • the tag generation unit 88 encrypts H_2, .
  • T_2, . . . , T_ ⁇ are obtained as encryption results.
  • the Tweak input to the TBC function must be in the format shown in Fig. 1 for security reasons. That is, the tag generation unit 88 encrypts H_i using the encryption result of the TBC function in which (N, a, m, i) is input as Tweak for index i (2 ⁇ i ⁇ ) of H. to obtain T_i. Also, as described above, Tweaks input to a plurality of TBC functions are different from each other. can be the same. That is, each Tweak input to each TBC function can be a constant, except for the value of the nonce N.
  • the total number of AD blocks and plaintext blocks that can be processed at one time must be (2 ⁇ b ⁇ 1) or less.
  • the number of plaintext blocks that can be processed at one time must be (2 ⁇ b ⁇ 2) or less due to security restrictions. That is, due to security restrictions, if the sum of the number of AD blocks and the number of plaintext blocks or the sum of the number of plaintext blocks does not satisfy the above conditions, the ⁇ _ij matrix AM shown in Equation 2 may be changed under the conditions described below. This is because it becomes impossible to satisfy
  • the matrix AM must be an MDS (Maximum Distance Separable) matrix. That is, all submatrices of the matrix AM that are square matrices must be nonsingular.
  • a "submatrix” is a matrix formed by removing a specific row (singular or plural) and a specific column (singular or plural) from the matrix. And the safety when the matrix AM does not satisfy the above condition is currently unknown. Therefore, matrix AM needs to be an MDS matrix.
  • the AD block can be processed before and after the TBC function, as shown in FIG. That is, the first AD block A_1 is processed before the processing of the first TBC function, and the second AD block A_2 is processed after the TBC function. Also, the second AD block A_2 is processed before the processing of the second TBC function, and the third AD block A_3 is processed after the TBC function.
  • the a-1th AD block A_(a-1) is processed before the a-1th TBC function is processed, and the ath AD block A_(a-1) is processed after the TBC function.
  • the last AD block A_a is processed.
  • Non-Patent Document 1 if a+m ⁇ 2 ⁇ b ⁇ 1 in the matrix AM of Equation 2, AE processing is possible even in PFB ⁇ according to the comparative example (Non-Patent Document 1).
  • the associated data is empty, then m+1 ⁇ 2 ⁇ b-1, or m ⁇ 2 ⁇ b-2. That is, if m ⁇ 2 ⁇ b ⁇ 2 in the matrix AM of Equation 2, AE processing is possible even in PFB ⁇ according to the comparative example (Non-Patent Document 1).
  • Non-Patent Document 1 there is a limit to the number of blocks that can be processed at once (the number of plaintext blocks, or the sum of the number of AD blocks and the number of plaintext blocks).
  • the plaintext length that can be processed for the input in one AE process is preferably about 2 ⁇ ( ⁇ b) blocks.
  • the restriction on the number of input blocks is the same as in the case of b-bit security AE, which is inefficient.
  • the authenticated encryption according to the present embodiment as described below, it is possible to increase the number of plaintext blocks that can be processed in one authenticated encryption while achieving high security. That is, in the authenticated encryption according to the present embodiment, the b-bit input/output TBC function is used to achieve greater security than b-bits and to process (2 ⁇ b-1) or more blocks. It is possible. In this embodiment, a security level higher than 2b-bit security can be targeted.
  • FIG. 2 is a diagram showing the configuration of the authenticated encryption system 1 according to the first embodiment.
  • the authentication cryptosystem 1 has an authentication encryption device 10 and an authentication decryption device 20 .
  • the authentication encryption device 10 and the authentication decryption device 20 may be physically integrated or separate.
  • the authentication encryption device 10 and the authentication decryption device 20 are communicably connected via a wire or radio.
  • the constituent elements of the authentication encryption device 10, which will be described later may be realized by separate devices.
  • each component of the authentication/decryption device 20, which will be described later may be realized by a device different from each other.
  • the length of one block out of a plurality of blocks obtained by dividing related data A, plaintext M, ciphertext C, etc. is a predetermined length of b bits.
  • FIG. 3 is a diagram showing the configuration of the authentication encryption device 10 according to the first embodiment.
  • the authentication encryption device 10 includes an input unit 100, a division unit 102, a nonce generation unit 104, an AD processing unit 110, an encryption unit 120, a random number calculation unit 130, and a random number encryption unit. It has a conversion unit 140 , a tag generation unit 150 and an output unit 160 .
  • the authentication encryption device 10 can be realized by an information processing device such as a computer, for example. That is, the authentication encryption device 10 has an arithmetic device such as a CPU (Central Processing Unit) and a storage device such as a memory or a disk. The authentication encryption device 10 implements each of the components described above, for example, by having the arithmetic device execute a program stored in the storage device. This also applies to other embodiments described later.
  • an arithmetic device such as a CPU (Central Processing Unit)
  • a storage device such as a memory or a disk.
  • the authentication encryption device 10 implements each of the components described above, for example, by having the arithmetic device execute a program stored in the storage device. This also applies to other embodiments described later.
  • the input unit 100 has a function as input means.
  • the dividing unit 102 functions as dividing means.
  • the nonce generation unit 104 has a function as nonce generation means.
  • the AD processing unit 110 has a function as related data processing means.
  • the encryption unit 120 has a function as encryption means.
  • the random number calculator 130 has a function as a random number calculator (calculator).
  • the random number encryption unit 140 has a function as random number encryption means.
  • the tag generator 150 has a function as tag generator.
  • the output unit 160 has a function as output means.
  • the input unit 100 accepts input of plaintext M to be encrypted and related data A.
  • the input unit 100 may be realized by, for example, an input device such as a keyboard.
  • the input unit 100 may receive input of plaintext M and related data A from, for example, an external device connected via a network. In some cases, the related data A does not exist, and in this case, the related data A is not input.
  • the input unit 100 outputs the plaintext M and related data A to the dividing unit 102 .
  • the dividing unit 102 divides each of the plaintext M and related data A into blocks of a predetermined length. Specifically, the dividing unit 102 divides the plaintext M into b-bit plaintext blocks M_1, . . . , M_m. Note that m is the number of plaintext blocks. Division section 102 outputs plaintext blocks M_1, . . . , M_m to encryption section 120 . Further, the dividing unit 102 divides the related data A into AD blocks A_1, . . . , A_a each having a length of b bits. Note that a is the number of AD blocks. The dividing unit 102 outputs the AD blocks A_1, . . . , A_a to the AD processing unit 110 .
  • the dividing unit 102 divides the divided AD blocks A_1, . . . , A_a and the plaintext blocks M_1, . . That is, one area contains (2 ⁇ b ⁇ 2) blocks.
  • each zone is defined as zone #1, . . . , zone # ⁇ .
  • is the number of zones.
  • Section #k indicates the k-th section. Note that 1 ⁇ k ⁇ .
  • the dividing unit 102 performs division so that all AD blocks A_1, . . . , A_a are included in the area #1. Then, if a ⁇ 2 ⁇ b ⁇ 2, the dividing unit 102 performs division so that m′ plaintext blocks are included in the area #1.
  • the (2 ⁇ b-2) blocks divided into the area #1 are all AD blocks.
  • the remaining AD blocks are then partitioned into zone #2.
  • all AD blocks A_1 .
  • the plaintext block is partitioned into area #2 so that there are .
  • Divide each area so that it is divided in order. At this time, assuming that the number of plaintext blocks divided into the area #1 is m', m' 2 ⁇ b-2.
  • the number of plaintext blocks included in area plaintext block M[k] other than at least M[1] and M[ ⁇ ] is (2 ⁇ b ⁇ 2).
  • the number of plaintext blocks included in the area plaintext block M[1] is also (2 ⁇ b ⁇ 2).
  • each region can perform encryption and random number calculations. This makes it possible to achieve safety in PFB ⁇ without being limited by the number of blocks, which poses a problem in PFB ⁇ .
  • the nonce generation unit 104 generates a nonce N so that there is no overlap with past values. That is, the nonce generation unit 104 generates a nonce N that is different from values generated in the past. Specifically, for example, the nonce generator 104 first outputs an arbitrary fixed value. The nonce generation unit 104 also stores the value of the nonce generated immediately before. Then, the nonce generation unit 104 outputs a value obtained by adding 1 to the previous stored value when generating a nonce N for the second time and thereafter. In this way, the nonce generation unit 104 may generate a nonce N different from the value generated in the past by outputting a value obtained by adding 1 to the value already output one before.
  • the nonce generation unit 104 may generate a nonce by a method different from the above-described example, as long as it can generate a value different from the value generated in the past.
  • the nonce generation unit 104 outputs the generated nonce N to the encryption unit 120 , the random number encryption unit 140 and the tag generation unit 150 . Further, the nonce generating section 104 may output the generated nonce N to the output section 160 .
  • the AD processing unit 110 processes the related data A in the same manner as the AD processing unit 82 shown in FIG. That is, the AD processing unit 110 processes the AD blocks A_1, . . . , A_a using the TBC function to which the key K and Tweak are input. At this time, the AD processing unit 110 processes the AD blocks for each of the areas described above. If a ⁇ 2 ⁇ b ⁇ 2, the processing of the AD processing unit 110 is substantially the same as the processing of the AD processing unit 82.
  • FIG. AD processing section 110 outputs H_1 to encryption section 120 .
  • AD processing unit 110 also outputs random numbers Z_1, .
  • Tweak input to each TBC function used in the AD processing unit 110 can be different from the Tweak input to each TBC function used in the AD processing unit 82. Details will be described later.
  • the encryption unit 120 processes the plaintext M in the same manner as the encryption unit 84 shown in FIG. That is, the encryption unit 120 processes the plaintext blocks M_1, . . . , M_m using the TBC function to which the key K and Tweak are input. Then, the encryption unit 120 generates a ciphertext block by XORing the plaintext block and the encryption result obtained by encrypting the plaintext block preceding this plaintext block using the TBC function. At this time, the encryption unit 120 encrypts the plaintext block (plaintext) for each zone described above. In other words, the encryption unit 120 encrypts the plaintext blocks included in the zone #1 in the same way as the encryption unit 84 does.
  • the encryption unit 120 encrypts the plaintext blocks included in the zone #2 in the same manner as the encryption unit 84 does. After that, the encryption unit 120 encrypts the plaintext blocks included in the area #k in the same manner as the encryption unit 84 does. That is, the encryption unit 120 encrypts the area plaintext block M[k] included in the area #k.
  • the encryption unit 120 also encrypts the area plaintext block M[k] included in the area #k to obtain the area ciphertext block C[k].
  • the area ciphertext block C[k] is composed of the same number of ciphertext blocks as the area plaintext block M[k].
  • the encryption unit 120 outputs the random number Z (output value of the TBC function) obtained in each zone to the random number calculation unit 130 .
  • the encryption unit 120 outputs the encryption result Z obtained by processing the last plaintext block with the TBC function in each area other than the last area # ⁇ to the random number encryption unit 140 as the random number S_1. do.
  • This random number S_1 is encrypted by the random number encryption unit 140 and becomes the initial value for the processing of the encryption unit 120 in the next zone.
  • the encryption unit 120 also outputs the encryption result Z obtained by processing the last plaintext block with the TBC function in the last section # ⁇ to the tag generation unit 150 as the random number S_1. Details of the processing of the encryption unit 120 will be described later.
  • the Tweak input to each TBC function used in the encryption unit 120 can be different from the Tweak input to each TBC function used in the encryption unit 84. Details will be described later.
  • the number of digits of Tweak according to the first embodiment is the number of digits of Tweak according to the comparative example. more than That is, in the comparative example, only one section is processed, whereas in the first embodiment, processing is executed for a plurality of sections. There is a need to.
  • the random number calculation unit 130 uses the random number Z generated by the AD processing unit 110 and the encryption unit 120 and the predetermined matrix AM to generate a tag, similar to the calculation unit 86 shown in FIG. Calculate a value (random number).
  • the matrix AM according to the first embodiment is shown in Equation 5 below.
  • the matrix AM is a matrix having a size of ( ⁇ 1) ⁇ (2 ⁇ b ⁇ 1) and having predetermined values ⁇ _(i, j) as elements. ... (5)
  • the random number calculation unit 130 calculates a random number S for each zone. Specifically, the random number calculation unit 130 uses the random number Z generated by the AD processing unit 110 and the encryption unit 120 and a predetermined matrix AM for each zone to obtain a set of ⁇ 1 random numbers S (S_2, . . . , S_ ⁇ ). Here, the set of random numbers S is used to generate initial values for processing in the next section, as described below. Also, the set of random numbers S generated in the processing in the last section is used to generate the tag T. Random number calculation unit 130 performs an exclusive OR of multiplied values of random number Z_j and ⁇ _(i, j) for each of ⁇ 1 lines i (2 ⁇ i ⁇ ) in each section, Calculate S_i.
  • random number calculation section 130 generates a set of random numbers using the same matrix AM shown in Equation 5 for each section #k. where k is the index of the number of zones. ... (6)
  • Equation 7 Equation 7 below holds for i (2 ⁇ i ⁇ ). ... (7)
  • the random number calculator 130 converts the initial value of each line of the exclusive OR of the multiplied values of Z and ⁇ into the previous section encrypted by the random number encryption unit 140 described later. Let be a set of generated random numbers. Details will be described later.
  • Random number calculation unit 130 outputs a set of random numbers S — 1 ⁇ (k), .
  • Random number calculation unit 130 also outputs a set of random numbers S — 1 ⁇ ( ⁇ ), .
  • the random number S — 1 ⁇ (k) in each zone #k is generated by the encryption section 120 and output to the random number encryption section 140 or the tag generation section 150 . Details of the processing of the random number calculation unit 130 will be described later.
  • the random number encryption unit 140 uses the nonce N to encrypt the set of random numbers S_1 ⁇ (k), . . Specifically, random number encryption section 140 receives nonce N from nonce generation section 104 . The random number encryption unit 140 converts the set of random numbers S — 1 ⁇ (k), . encrypted using
  • the random number encryption unit 140 encrypts the encryption result obtained by encrypting the set of random numbers S_1 ⁇ (k), . value (initial state). That is, the encrypted random number S_1 ⁇ (k) becomes the initial value for the processing of the encryption unit 120 in the next section #(k+1). Also, the encrypted random numbers S_2 ⁇ (k), . Initial value. Specific processing of the random number encryption unit 140 will be described later.
  • the tag generation unit 150 generates a tag T for authentication using the set of random numbers S_1 ⁇ ( ⁇ ), . .
  • the nonce N is input from the nonce generation unit 104 to the tag generation unit 150 .
  • the tag generator 150 uses the nonce N to encrypt the random number set S_1 ⁇ ( ⁇ ), . That is, the tag generation unit 150 converts the set of random numbers S_1 ⁇ ( ⁇ ), . encrypted using The tag generation unit 150 encrypts the set of random numbers S_1 ⁇ ( ⁇ ), . get Specific processing of the tag generation unit 150 will be described later.
  • FIG. 4 is a diagram for explaining the processing of the random number encryption unit 140 and the tag generation unit 150 of the authentication encryption device 10 according to the first embodiment. Note that related data is empty in FIG. 4 for clarity of explanation.
  • the authentication encryption device 10 converts plaintext blocks of plaintext M into area plaintext blocks M[1], M[2], M[2], M[1], M[2], . . . , M[ ⁇ ].
  • each regional plaintext block M[k] includes (2 ⁇ b ⁇ 2) plaintext blocks.
  • encryption section 120 and random number calculation section 130 use input nonce N and area plaintext block M[1] to generate area ciphertext block C[1] and random number set S_1 for area #1. Generate ⁇ (1), . . . , S_ ⁇ (1).
  • the random number encryption unit 140 encrypts the random number set S_1 ⁇ (1), . . . , S_ ⁇ (1) generated for the area #1.
  • the random number encryption unit 140 sets the encrypted random number set S — 1 ⁇ (1), . That is, the encrypted random number S_1 ⁇ (1) becomes the initial value for the processing of the encryption unit 120 in the next section #2. Also, the encrypted random numbers S — 2 ⁇ (1), .
  • the encryption unit 120 and the random number calculation unit 130 use the input nonce N and the area plaintext block M[2] to generate the area ciphertext block C[2] and the random number set S_1 for the area #2. Generate ⁇ (2), . . . , S_ ⁇ (2). At this time, the encryption unit 120 and the random number calculation unit 130 use the encryption result of S_1 ⁇ (1), . 140 encrypts the set of random numbers S_1 ⁇ (2), ..., S_ ⁇ (2) generated for area #2. Then, the random number encryption unit 140 sets the encrypted random number set S — 1 ⁇ (2), . That is, the encrypted random number S_1 ⁇ (2) becomes the initial value for the processing of the encryption unit 120 in the next section #3. Also, the encrypted random numbers S — 2 ⁇ (2), .
  • the encryption unit 120 and the random number calculation unit 130 use the input nonce N and the area plaintext block M[k] for each area #k to obtain the area ciphertext block C[k] and Generate a set of random numbers S_1 ⁇ (k), . . . , S_ ⁇ (k). At this time, the encryption unit 120 and the random number calculation unit 130 use the encryption result of S_1 ⁇ (k ⁇ 1), .
  • the random number encryption unit 140 encrypts a set of random numbers S — 1 ⁇ (k), . Then, the random number encryption unit 140 converts the set of random numbers S — 1 ⁇ (k), . ).
  • the encryption unit 120 can perform processing for each zone using, as a subroutine, substantially the same calculation as that of the encryption unit 84 according to the comparative example. Note that Tweak must be set appropriately at this time. Further, the random number calculation unit 130 can call the matrix AM shown in Equation 5 for each area, and perform processing using substantially the same calculation as the calculation of the calculation unit 86 according to the comparative example as a subroutine. can. These are the same for the decryption processing in the authentication decryption device 20, which will be described later.
  • the tag generation unit 150 uses the set of random numbers S_1 ⁇ ( ⁇ ), . 1], . . . , T[ ⁇ ].
  • the tag T for authentication is an encryption result obtained by encrypting a set of random numbers with a TBC function that inputs Tweak including a nonce N and the number m of plaintext blocks (plaintext length). be. Therefore, the security of the set of tags T is ensured.
  • FIG. 5 to 9 are diagrams showing outlines of calculations in the authentication encryption process according to the first embodiment.
  • FIG. 5 is a diagram showing an outline of calculations of the AD processing unit 110 and the random number calculation unit 130 for the first section, that is, section #1.
  • FIG. 6 is a diagram showing an outline of calculations of the encryption unit 120 and the random number calculation unit 130 for the first section, that is, section #1.
  • FIG. 7 is a diagram showing an outline of the calculation of the random number encryption unit 140.
  • FIG. 8 is a diagram showing an outline of calculations of the encryption section 120 and the random number calculation section 130 for the second section, that is, section #2.
  • FIG. 9 is a diagram showing an outline of the calculation of the tag generation unit 150. As shown in FIG.
  • the random number calculation section 130 is shown separately in the front stage section 130a and the rear stage section 130b, but the random number calculation section 130 may be integrated.
  • the random number calculation unit 130 may be configured such that the front-stage section 130a and the rear-stage section 130b are continuously configured.
  • the random number calculation unit 130 is depicted as one unit.
  • the AD processing unit 110 performs substantially the same processing as the AD processing unit 82 shown in FIG. 1 on the AD blocks A_1, . Then, the AD processing unit 110 outputs the encryption result, that is, the random numbers Z_1 ⁇ (1), . .
  • k in Z_ ⁇ (k) is the index of the number of zones, as described above. That is, "(1)" in random number Z_1 ⁇ (1) indicates that it is a random number generated in section #1 (first section).
  • AD processing unit 110 also outputs the value obtained by XORing last AD block A_a and encryption result Z_(a ⁇ 1) ⁇ (1) to encryption unit 120 as H_1. .
  • the AD processing unit 110 since a ⁇ 2 ⁇ b-2, the AD processing unit 110 processes only the area #1.
  • encryption section 120 encrypts M_1, . . . , M_m′ of plaintext blocks M_1, . Substantially the same processing as that of the transforming unit 84 is performed. Then, the encryption unit 120 obtains ciphertext blocks C_1, . . . , C_m' respectively corresponding to M_1, . The encryption unit 120 also outputs the encryption result, that is, the random numbers Z_â(1), . Note that the encryption unit 120 encrypts the last plaintext block M_m′ in the area #1 with the last TBC function in the area #1, thereby obtaining the final random number Z_(a+m′) ⁇ (1) in the area #1. get Further, when the final plaintext block M_m′ is encrypted by the TBC function, the encryption unit 120 sends the encryption result Z_(a+m′) ⁇ (1) to the random number calculation unit 130 as S_1 ⁇ (1). Output.
  • the Tweaks input to the TBC functions used in the AD processing unit 110 and the encryption unit 120 are the Tweaks input to the TBC functions used in the AD processing unit 82 and the encryption unit 84, respectively.
  • different from Tweak input to the TBC function used in AD processing unit 110 is (0 ⁇ n, i, 0, 0, 0) for block index i (1 ⁇ i ⁇ a) of related data A.
  • the Tweak input to the TBC function used in the encryption unit 120 is (N, a, i, 0, 0) for the block index i (1 ⁇ i ⁇ m') of the plaintext M. .
  • the Tweak input to the TBC function (input M_m' to obtain S_1 ⁇ (1)) used at the end of encryption section 120 is (N, a, m', 1, 0). By setting Tweaks in this manner, one Tweak will not match another Tweak.
  • the random number calculation unit 130 calculates the random numbers Z_1 ⁇ (1), . -1) ⁇ (1), Z_a ⁇ (1), ..., Z_(a+m') ⁇ (1). , Z_(a-1) ⁇ (1), Z_a ⁇ ( 1), . . . , Z_(a+m′) ⁇ (1). Thereby, the random number calculation unit 130 generates a set of random numbers S_2 ⁇ (1), . . . , S_ ⁇ (1) for the area #1. In other words, the random number calculation unit 130 calculates the exclusive OR of the multiplication values of the random numbers Z_1 ⁇ (1), ..., Z_(a+m') ⁇ (1) and the corresponding elements of the matrix AM. generates a set of random numbers S_2 ⁇ (1), . . . , S_ ⁇ (1). Random number calculation unit 130 outputs a set of random numbers S — 1 ⁇ (1), .
  • the random number encryption unit 140 sets the random number sets S_1 ⁇ (k), .
  • the Tweak is encrypted using the input TBC function E K ⁇ '.
  • a Tweak that is used only once is input to the TBC function used in the random number encryption unit 140 .
  • An example of Tweak input to the function E K ⁇ ' is shown on the upper right of "E K ⁇ '" in FIG.
  • the Tweak input to the TBC function E K ⁇ ′ that encrypts the random number S_î(k) includes the nonce N, the index k of region #k, and the line index i.
  • the Tweak input to the TBC function E K ⁇ ' that encrypts the random number S — 2 ⁇ (1) includes the nonce N, the index '1' for region #1, and the line index '2'.
  • the random number encryption unit 140 encrypts the set of random numbers S — 1 ⁇ (k), . become Then, the obtained encryption result is input to the encryption section 120 and the random number calculation section 130 during the processing in section #2.
  • the TBC function E K ⁇ ' is a TBC function to which a Tweak different from the Tweaks input to any of the TBC functions E K ⁇ described in FIGS. 5 to 6 and FIGS. .
  • the Tweaks input to the TBC functions E K ⁇ ' do not include the number of AD blocks a and the number m of plaintext blocks, and are set to be different from the Tweaks input to other TBC functions E K ⁇ .
  • the format of the Tweaks input to the TBC functions E K ⁇ ' may be different from or the same as the format of the Tweaks input to the TBC functions E K ⁇ .
  • Tweak input to the TBC function E K ⁇ ' that encrypts S_i ⁇ ( k ) is (N, k, i, 0 , 0, 1).
  • the Tweak input to the TBC function E K used in the AD processing unit 110 and the encryption unit 120 may be (N, a, m', 0, 0, 0). That is, while the final value of Tweak input to TBC function E K ⁇ ' is "1", Tweak input to TBC function E K ⁇ used in AD processing unit 110 and encryption unit 120 is The last value may be '0'.
  • the TBC function E K ⁇ and the TBC function E K ⁇ ' may differ in the final value of the input Tweak. Therefore, duplication of Tweaks can be avoided.
  • encryption section 120 encrypts (2 ⁇ b-2) M_(m'+1) pieces of plaintext blocks M_1, . ), .
  • the encryption unit 120 inputs the encryption result obtained by encrypting the random number S_1 ⁇ (1) in the random number encryption unit 140 as an initial value to the first TBC function for the area #2. That is, the random number S_1 ⁇ (1) generated in the area #1 is encrypted by the TBC function E K ⁇ ' to which the Tweak containing the nonce N, the index "1" of the area #1 and the line index "1" is input.
  • the encryption result obtained by the above corresponds to the initial value.
  • C_(m) corresponding to M_(m'+1), . '+2 ⁇ b-2) is obtained.
  • the encryption unit 120 sends the encryption result, that is, the random numbers Z_1 ⁇ (2), . Output.
  • the encryption unit 120 encrypts the last plaintext block M_(m′+2 ⁇ b ⁇ 2) in the area #2 with the last TBC function in the area #2, thereby obtaining the final random number Z_ in the area #2.
  • the encryption unit 120 converts the encryption result Z_(2 ⁇ b ⁇ 1) ⁇ (2) into S_1 ⁇ (2) is output to the random number calculation unit 130 .
  • the random number calculation unit 130 calculates the random numbers Z_1 ⁇ (2), . ). That is, the random number calculation unit 130 processes the random numbers Z_1 ⁇ (2), . do. Thereby, the random number calculator 130 generates a set of random numbers S_2 ⁇ (2), . . . , S_ ⁇ (2) for the area #2. In other words, the random number calculation unit 130 calculates the exclusive OR of the multiplied values of the random numbers Z_1 ⁇ (2), ..., Z_(2 ⁇ b-1) ⁇ (2) and the corresponding elements of the matrix AM. The calculation generates a set of random numbers S_2 ⁇ (2), . . . , S_ ⁇ (2).
  • the random number calculation unit 130 inputs the encryption result obtained by encrypting the random number S_i ⁇ (1) in the random number encryption unit 140 to each line i as an initial value. That is, the random number S_2 ⁇ (1) generated in the area #1 is encrypted by the TBC function E K ⁇ ' to which the Tweak including the nonce N, the index "1" of the area #1 and the line index "2" is input. , corresponds to the initial value of line "2". Similarly, the random number S_ ⁇ (1) generated in area #1 is encrypted by the TBC function E K ⁇ ' input with a Tweak containing the nonce N, the index '1' of area #1, and the line index ' ⁇ '. The encrypted result obtained by converting corresponds to the initial value of the line " ⁇ ". Random number calculation unit 130 outputs a set of random numbers S — 1 ⁇ (2), .
  • Tweak input to each TBC function used in the encryption unit 120 is different from the Tweak input to each TBC function used in the encryption unit 84.
  • Tweak input to the TBC function used in encryption unit 120 is (N, a, i, 0, 0).
  • the Tweak input to the TBC function (M_(m′+2 ⁇ b ⁇ 2) is input to obtain S_1 ⁇ (2)) used at the end of encryption unit 120 is (N , a, m′+2 ⁇ b ⁇ 2,1,0).
  • the Tweak input to each TBC function in area #2 is different from the Tweak input to each TBC function in area #1.
  • the encryption unit 120 repeatedly calls the TBC function to encrypt the plaintext block each time a certain area is processed.
  • the random number calculator 130 uses the encryption result obtained by encrypting the random number obtained for the previous area as the initial value of each line, and the same matrix shown in Equation 5 Repeatedly call AM (ie, the same element ⁇ ) to generate a set of random numbers.
  • the Tweak input to each TBC function used in the encryption unit 120 is set according to the rules described above using FIG. That is, in each area #k, the Tweak input to the 1st to (2 ⁇ b-2)th TBC functions is (N, a, i, 0, 0) for block index i of plaintext M. becomes. Note that the Tweak input to the TBC function used last (2 ⁇ b ⁇ 1) in the encryption unit 120 is (N, a, i, 1, 0). Note that here, since i is the index of the plaintext block number m, the Tweak input to each TBC function in a certain area #k is different from the Tweak input to each TBC function in another area. .
  • the tag generation unit 150 generates a set of random numbers S_1 ⁇ ( ⁇ ), .
  • a tag T for authentication is generated using Tweak including a and the number of plaintext blocks m.
  • a Tweak that is used only once is input to the TBC function used in the tag generator 150 .
  • An example of Tweak input to the function E K ⁇ is shown on the upper right of "E K ⁇ " in FIG.
  • the Tweak input to the TBC function E K that encrypts the random number S_i ⁇ ( ⁇ ) is the nonce N, the number of AD blocks a, the number of plaintext blocks m, the index “ ⁇ ” of the area # ⁇ , and line index i.
  • the tag T[i] is generated by encrypting the random number S_î( ⁇ ) using this TBC function E K ⁇ .
  • the Tweak input to the TBC function E K that encrypts the random number S_1 ⁇ ( ⁇ ) is the nonce N, the number of AD blocks a, the number of plaintext blocks m, the index " ⁇ " of the area # ⁇ , and the line index " 1”.
  • the random number encryption unit 140 uses the TBC function E K ⁇ ′
  • the tag generation unit 150 uses the TBC function E K ⁇ . Therefore, the Tweak input to the TBC function E K used in the tag generator 150 is different from the Tweak input to the TBC function used in the random number encryption unit 140 .
  • the Tweak input to the TBC function E K used in the tag generation unit 150 is the number of regions ⁇ and line index i. Therefore, the Tweaks input to the TBC functions E K used in the tag generation unit 150 are different from the Tweaks input to the TBC functions used in the AD processing unit 110 and encryption unit 120 . Therefore, duplication of Tweaks can be avoided. These are the same for the decryption processing in the authentication decryption device 20, which will be described later.
  • the Tweak input to the TBC function E K used in the tag generator 150 includes the AD block number a and the plaintext block number m. Therefore, the safety of the tag T can be ensured. That is, even if an attacker inputs tampered information with a different AD block count a or plaintext block count m, the tampered information can be immediately rejected (tampering can be detected). Therefore, it is clear that tag T is not easily tampered with. In other words, since this Tweak includes AD block number a and plaintext block number m, the security of tag T can be easily proved. In other words, the tag T can be safely generated from the random number S. These are the same for the decryption processing in the authentication decryption device 20, which will be described later. Moreover, these things are the same also in Embodiment 2 mentioned later.
  • the output unit 160 performs control for outputting the ciphertext C and the tag T.
  • the output unit 160 may concatenate the ciphertext C and the tag T and output them.
  • the output unit 160 may, for example, perform control for displaying the ciphertext C and the tag T on an output device such as a display.
  • the output unit 160 may also control, for example, an external device connected via a network to output the ciphertext C and the tag T.
  • the output unit 160 may perform control so as to output the nonce N and the related data A.
  • FIG. For example, the output unit 160 transmits (N, A, C, T) to the authentication/decryption device 20 .
  • FIG. 10 is a diagram showing the configuration of the authentication/decryption device 20 according to the first embodiment.
  • the authentication/decryption device 20 includes an input unit 200, a division unit 202, an AD processing unit 210, a decryption unit 220, a random number calculation unit 230, a random number encryption unit 240, and a tag generation unit. 250 and a tag inspection unit 260 .
  • the authentication/decryption device 20 can be realized by an information processing device such as a computer, for example. That is, the authentication/decryption device 20 has an arithmetic device such as a CPU and a storage device such as a memory or disk. The authentication/decryption device 20 implements each of the components described above, for example, by having the arithmetic device execute a program stored in the storage device. This also applies to other embodiments described later.
  • the input unit 200 has a function as input means.
  • the dividing unit 202 has a function as dividing means.
  • the AD processing unit 210 has a function as related data processing means.
  • the decoding unit 220 has a function as decoding means.
  • the random number calculator 230 functions as a random number calculator (calculator).
  • the random number encryption unit 240 has a function as random number encryption means.
  • the tag generator 250 has a function as tag generator.
  • the tag inspection unit 260 has a function as tag inspection means.
  • the input unit 200 receives inputs of the nonce N, the related data A, the ciphertext C to be decrypted, and the tag T output from the authentication encryption device 10 .
  • the input unit 200 may be implemented by, for example, an input device such as a keyboard.
  • the input unit 200 may receive inputs of the nonce N, the related data A, the ciphertext C, and the tag T from, for example, an external device connected via a network. In some cases, the related data A does not exist, and in this case, the related data A is not input.
  • the input unit 200 outputs the nonce N to the decryption unit 220 , the random number encryption unit 240 and the tag generation unit 250 .
  • the input unit 200 also outputs the ciphertext C and the related data A to the dividing unit 202 .
  • the input section 200 also outputs the tag T to the tag inspection section 260 .
  • the dividing unit 202 divides each of the ciphertext C and the related data A into blocks of a predetermined length. Specifically, the dividing unit 202 divides the ciphertext C into ciphertext blocks C_1, . . . , C_m of b bits each. Note that m is the number of ciphertext blocks (that is, plaintext blocks). The division unit 202 outputs the ciphertext blocks C_1, . . . , C_m to the decryption unit 220 . Further, the dividing unit 202 divides the related data A into AD blocks A_1, . . . , A_a each having a length of b bits. The dividing unit 202 outputs the AD blocks A_1, . . . , A_a to the AD processing unit 210 .
  • the bit string of the ciphertext block divided into the area #k is "area ciphertext block C[k]"
  • the number of ciphertext blocks included in at least area ciphertext blocks C[k] other than C[1] and C[ ⁇ ] is (2 ⁇ b ⁇ 2).
  • the number of ciphertext blocks included in the area ciphertext block C[1] is also (2 ⁇ b ⁇ 2).
  • the AD processing unit 210 performs substantially the same processing as the AD processing unit 110 described above. That is, the AD processing unit 210 processes the AD blocks A_1, . . . , A_a using the TBC function to which the key K and Tweak are input. At this time, the AD processing section 210 processes AD blocks for each of the above-described areas. The AD processing section 210 outputs H_1 to the decoding section 220 . AD processing unit 210 also outputs random numbers Z_1, . Note that the Tweak input to each TBC function used in AD processing section 210 may be set substantially the same as the Tweak input to each TBC function used in AD processing section 110 described above.
  • the decryption unit 220 performs decryption processing corresponding to the encryption processing in the encryption unit 120 described above.
  • the decryption unit 220 processes the ciphertext blocks C_1, . . . , C_m using the TBC function to which the key K and Tweak are input.
  • the decryption unit 220 decrypts the ciphertext block (ciphertext) for each zone described above. That is, the decryption unit 220 performs decryption processing corresponding to the encryption processing in the encryption unit 120 described above for the ciphertext blocks included in the zone #1.
  • the decryption unit 220 performs decryption processing corresponding to the above-described encryption processing in the encryption unit 120 for the ciphertext blocks included in the zone #2. After that, the decryption unit 220 performs decryption processing corresponding to the above-described encryption processing in the encryption unit 120 for the ciphertext blocks included in the zone #k. That is, the decryption unit 220 decrypts the area ciphertext block C[k] included in the area #k.
  • the decryption unit 220 also decrypts the area ciphertext block C[k] included in the area #k to obtain the area plaintext block M[k].
  • the decoding unit 220 also outputs the random number Z (output value of the TBC function) obtained in each area to the random number calculation unit 230 .
  • the decryption unit 220 outputs the encryption result Z obtained by processing the last ciphertext block with the TBC function in each area other than the last area # ⁇ to the random number encryption unit 240 as the random number S_1. do.
  • This random number S_1 is encrypted by the random number encryption unit 240 and becomes the initial value for the processing of the decryption unit 220 in the next section.
  • the decryption unit 220 outputs the encryption result Z obtained by processing the last ciphertext block with the TBC function in the last section # ⁇ to the tag generation unit 250 as the random number S_1. Details of the processing of the decoding unit 220 will be described later.
  • the Tweak input to each TBC function used in decryption section 220 may be set substantially the same as the Tweak input to each TBC function used in encryption section 120 described above.
  • the random number calculation unit 230 generates a tag using the random number Z generated by the AD processing unit 210 and the decoding unit 220 and the predetermined matrix AM shown in Equation 5, similarly to the random number calculation unit 130 described above. Calculate a random number S for At this time, the random number calculator 230 calculates the random number S for each zone. Specifically, the random number calculation unit 230 uses the random number Z generated by the AD processing unit 210 and the decoding unit 220 and a predetermined matrix AM for each zone to obtain a set of ⁇ 1 random numbers S ( S_2, . . . , S_ ⁇ ). Here, the set of random numbers S is used to generate initial values for processing in the next section, as described below.
  • Random number calculation unit 230 multiplies random number Z_j and ⁇ _(i, j) for each of ⁇ 1 lines i (2 ⁇ i ⁇ ) in each section.
  • S_i is calculated by performing exclusive OR of . That is, the random number calculation unit 230 calculates random numbers Z_1 ⁇ (k), ..., Z_(2 ⁇ b-1) ⁇ (k ) to generate a set of random numbers S_2 ⁇ (k), . . . , S_ ⁇ (k).
  • the random number calculator 230 converts the initial value of each line of the exclusive OR of the product of Z and ⁇ into the previous section encrypted by the random number encryption section 240, which will be described later. Let be a set of generated random numbers. Details will be described later.
  • the random number calculation unit 230 outputs to the random number encryption unit 240 a set of random numbers S — 1 ⁇ (k), . Random number calculation unit 230 also outputs a set of random numbers S — 1 ⁇ ( ⁇ ), . As described above, the random number S — 1 ⁇ (k) in each section #k is generated by the decryption section 220 and output to the random number encryption section 240 or the tag generation section 250 . Details of the processing of the random number calculation unit 230 will be described later.
  • the random number encryption unit 240 uses a nonce N to generate a random number set S_1 ⁇ (k), . . . , S_ ⁇ (k) are encrypted.
  • the calculation contents of the random number encryption unit 240 are substantially the same as those shown in FIG. Therefore, the random number encryption unit 240 converts the set of random numbers S_1 ⁇ (k), . Encrypt using a function. Then, the random number encryption unit 240 encrypts the encryption result obtained by encrypting the set of random numbers S_1 ⁇ (k), . value (initial state). Therefore, the encrypted random number S_1 ⁇ (k) becomes the initial value for the processing of the decryption unit 220 in the next section #(k+1). Also, the encrypted random numbers S_2 ⁇ (k), . Initial value.
  • the tag generation unit 250 uses the set of random numbers S_1 ⁇ ( ⁇ ), . to generate a tag T * for inspection.
  • FIG. 11 is a diagram for explaining the processing of the random number encryption unit 240 and the tag generation unit 250 of the authentication/decryption device 20 according to the first embodiment.
  • related data is empty in FIG. 11 .
  • the authentication/decryption device 20 converts the ciphertext blocks of the ciphertext C into area ciphertext blocks C[1] and C[2 corresponding to area #1, area #2, . . . area # ⁇ , respectively. ], . . . , C[ ⁇ ].
  • each area ciphertext block C[k] includes (2 ⁇ b ⁇ 2) ciphertext blocks.
  • the decryption unit 220 and the random number calculation unit 230 use the input nonce N and the area ciphertext block C[1] for the area #1 to generate the area plaintext block M[1] and the random number set S_1 ⁇ (1), . . . , S_ ⁇ (1) are generated.
  • Random number encryption unit 240 encrypts a set of random numbers S_1 ⁇ (1), . . . , S_ ⁇ (1) generated for area #1. Then, the random number encryption unit 240 sets the encrypted random number set S — 1 ⁇ (1), . That is, the encrypted random number S_1 ⁇ (1) becomes the initial value for the processing of the decryption unit 220 in the next section #2. Also, the encrypted random numbers S — 2 ⁇ (1), .
  • the decryption unit 220 and the random number calculation unit 230 use the input nonce N and the area ciphertext block C[2] to generate the area plaintext block M[2] and the random number set S_1 ⁇ for the area #2. (2), . . . , S_ ⁇ (2) are generated. At this time, the decryption unit 220 and the random number calculation unit 230 set the encryption result of S_1 ⁇ (1), . encrypts the set of random numbers S_1(2), . . . , S_ ⁇ (2) generated for area #2. Then, the random number encryption unit 240 sets the encrypted random number set S — 1 ⁇ (2), . That is, the encrypted random number S_1 ⁇ (2) becomes the initial value for the processing of the decryption unit 220 in the next section #3. Also, the encrypted random numbers S — 2 ⁇ (2), .
  • decryption unit 220 and random number calculation unit 230 generate area plaintext block M[k] and random number , S_ ⁇ (k). At this time, the decryption unit 220 and the random number calculation unit 230 use the encryption result of S_1 ⁇ (k ⁇ 1), .
  • the random number encryption unit 240 encrypts a set of random numbers S — 1 ⁇ (k), . Then, the random number encryption unit 240 converts the set of random numbers S — 1 ⁇ (k), . (initial state). Then, the tag generation unit 250 uses the set of random numbers S_1 ⁇ ( ⁇ ), . Obtain [1], . . . , T * [ ⁇ ].
  • the tag inspection unit 260 compares the authentication tag T generated by the authentication encryption device 10 with the inspection tag T * generated by the tag generation unit 250 to inspect whether or not there has been falsification. Then, the tag inspection section 260 performs control for outputting information based on the inspection result. Note that the tag inspection unit 260 may, for example, perform control for displaying information on an output device such as a display. Also, the tag inspection unit 260 may control, for example, an external device connected via a network so as to output information.
  • the tag inspection unit 260 determines that the authentication has failed, and issues an error message ⁇ indicating that the tag T and the tag T * do not match. Control for output.
  • FIG. 12 and 13 are diagrams showing the outline of calculations in the authentication decryption process according to the first embodiment.
  • FIG. 12 is a diagram showing an outline of calculations of the decoding unit 220 and the random number calculation unit 230 for the first section, that is, section #1. Note that the outline of the calculation of the AD processing unit 210 for the area #1 is substantially the same as that described in FIG. 5, so illustration is omitted.
  • FIG. 13 is a diagram showing an outline of calculations of the decoding unit 220 and the random number calculation unit 230 for the second section, that is, section #2.
  • the decryption unit 220 decrypts C_1, . . . , C_m′ of the ciphertext blocks C_1, . Specifically, the decoding unit 220 sets H_1 as the initial value. The decryption unit 220 encrypts the initial value H_1 with the TBC function E K . As a result, a random number Z_â(1) is output from the TBC function E K ⁇ as the encryption result. Then, the decryption unit 220 obtains the plaintext block M_1 by XORing the output encryption result Z_a and the first ciphertext block C_1.
  • the decryption unit 220 encrypts the plaintext block M_1 with the TBC function E K .
  • Z_(a+1) ⁇ (1) which is a random number, is output as the encryption result.
  • the decryption unit 220 obtains a plaintext block M_2 by XORing the encryption result Z_(a+1) ⁇ (1) and the second ciphertext block C_2.
  • the decryption unit 220 obtains the plaintext block M_(i+1) by XORing the encryption result Z_(a+i) of the plaintext block M_i decrypted using the ciphertext block C_i and the ciphertext block C_(i+1). Repeat the process of obtaining
  • the decoding unit 220 obtains plaintext blocks M_1, . . . , M_m' respectively corresponding to C_1, .
  • the decryption unit 220 also outputs the encryption result, that is, the random numbers Z_â(1), .
  • the decrypting unit 220 encrypts the last plaintext block M_m′ in the area #1 with the last TBC function in the area #1, thereby obtaining the last random number Z_(a+m′) ⁇ (1) in the area #1 as obtain.
  • the decryption unit 220 outputs the encryption result Z_(a+m′) ⁇ (1) to the random number calculation unit 230 as S_1 ⁇ (1). do.
  • the random number calculation unit 230 processes Z_a ⁇ (1), ..., Z_(a+m') ⁇ (1) generated by the decoding unit 220 for the area #1.
  • the AD processing unit 210 is not shown in FIG. 12, the random number calculation unit 230 calculates the random number Z_1 ⁇ (1 ), . . . , Z_(a ⁇ 1) ⁇ (1). , Z_(a-1) ⁇ (1), Z_a ⁇ ( 1), . . . , Z_(a+m′) ⁇ (1).
  • the random number calculation unit 230 generates a set of random numbers S_2 ⁇ (1), ..., S_ ⁇ (1) for the area #1.
  • the random number calculation unit 230 calculates the exclusive OR of the product of each of the random numbers Z_1 ⁇ (1), ..., Z_(a+m') ⁇ (1) and the corresponding elements of the matrix AM. generates a set of random numbers S_2 ⁇ (1), . . . , S_ ⁇ (1). Random number calculation unit 230 outputs a set of random numbers S — 1 ⁇ (1), .
  • Random number encryption unit 240 receives a set of random numbers S_1 ⁇ (1), . Encrypt using the modified TBC function E K ⁇ '. A set of random numbers S_1 ⁇ (1), ..., S_ ⁇ (1) encrypted using the TBC function E K ' is entered.
  • the decryption unit 220 decrypts (2 ⁇ b-2) C_(m'+1) pieces of ciphertext blocks C_1, . ), .
  • the decryption unit 220 inputs the encryption result obtained by encrypting the random number S_1 ⁇ (1) in the random number encryption unit 240 as an initial value to the first TBC function for the area #2. That is, the random number S_1 ⁇ (1) generated in the area #1 is encrypted by the TBC function E K ⁇ ' to which the Tweak containing the nonce N, the index "1" of the area #1 and the line index "1" is input.
  • the encryption result obtained by the above corresponds to the initial value.
  • M_(m'+2) corresponding to C_(m'+1), . . . , C_(m'+2 ⁇ b-2) respectively. ⁇ b-2) is obtained.
  • the decryption unit 220 outputs the encryption result, that is, the random numbers Z_1 ⁇ (2), . do. Note that the decrypting unit 220 encrypts the last plaintext block M_(m′+2 ⁇ b ⁇ 2) in the area #2 with the last TBC function in the area #2 to obtain the final random number Z_( 2 ⁇ b-1) ⁇ (2) is obtained.
  • the decryption unit 220 converts the encryption result Z_(2 ⁇ b-1) ⁇ (2) to S_1 ⁇ As (2), it is output to the random number calculation unit 230 .
  • the random number calculation unit 230 calculates the random numbers Z_1 ⁇ (2), . Process Z_(2 ⁇ b ⁇ 1) ⁇ (2). That is, the random number calculation unit 230 processes the random numbers Z_1 ⁇ (2), . do. Thereby, the random number calculation unit 230 generates a set of random numbers S_2 ⁇ (2), . . . , S_ ⁇ (2) for the area #2. In other words, the random number calculation unit 230 calculates the exclusive OR of the product of the random numbers Z_1 ⁇ (2), ..., Z_(2 ⁇ b-1) ⁇ (2) and the corresponding elements of the matrix AM. The calculation generates a set of random numbers S_2 ⁇ (2), . . . , S_ ⁇ (2).
  • the random number calculation unit 230 uses the encryption result obtained by encrypting the random number S_î(1) in the random number encryption unit 240 as an initial value for the area #2, and uses each line as an initial value.
  • the random number S_2 ⁇ (1) generated in the area #1 is encrypted by the TBC function E K ⁇ ' to which the Tweak including the nonce N, the index "1" of the area #1 and the line index "2" is input. , corresponds to the initial value of line "2".
  • the random number S_ ⁇ (1) generated in area #1 is encrypted by the TBC function E K ⁇ ' input with a Tweak containing the nonce N, the index '1' of area #1, and the line index ' ⁇ '.
  • the encrypted result obtained by converting corresponds to the initial value of the line " ⁇ ".
  • Random number calculation section 230 outputs a set of random numbers S — 1 ⁇ (2), .
  • the random number calculation unit 230 repeatedly calls the same matrix AM (that is, the same element ⁇ ) shown in Equation 5 each time a certain area is processed to generate a set of random numbers. .
  • FIG. 13 is a flow chart showing an authentication encryption method executed by the authentication encryption device 10 according to the first embodiment.
  • the input unit 100 inputs the plaintext M and the related data A as described above (step S102).
  • the dividing unit 102 divides each of the plaintext M and the related data A into blocks (plaintext blocks and AD blocks) of predetermined lengths (step S104). Further, as described above, the dividing unit 102 divides the divided AD blocks and plaintext blocks into sections (step S106).
  • the nonce generator 104 generates a nonce N as described above (step S108).
  • step S118 the random number encryption unit 140 encrypts the set of random numbers S as described above (step S120). Then, the random number encryption unit 140 uses the encrypted random number as the initial value for processing in the area #(k+1), that is, the area #2 (step S122). Then, the authentication encryption device 10 increments k by 1 (step S124) and advances the area to be processed by one. Then, the processing of S114 to S124 is repeated.
  • the tag generation unit 150 uses the set of random numbers S generated in the area # ⁇ to A tag T is generated (step S132).
  • the output unit 160 then outputs the nonce N, the related data A, the ciphertext C, and the tag T (step S134).
  • FIG. 15 is a flowchart showing an authentication-decryption method executed by the authentication-decryption device 20 according to the first embodiment.
  • the input unit 200 inputs the nonce N, the related data A, the ciphertext C, and the tag T (step S202).
  • the dividing unit 202 divides each of the ciphertext C and the related data A into blocks (ciphertext blocks and AD blocks) of predetermined lengths (step S204). Further, as described above, the dividing unit 202 divides the divided AD blocks and ciphertext blocks into sections (step S206).
  • the random number encryption unit 240 encrypts the set of random numbers S as described above (step S220). Then, the random number encryption unit 240 uses the encrypted random number as the initial value for processing in area #(k+1), that is, area #2 (step S222). Then, the authentication/decryption device 20 increments k by one (step S224) and advances the area to be processed by one. Then, the processing of S214 to S224 is repeated.
  • the tag generator 250 uses the set of random numbers S generated in the area # ⁇ to A tag T * is generated (step S232). As described above, the tag inspection unit 260 determines whether or not the authentication tag T and the inspection tag T * match (step S240). If the authentication tag T and the inspection tag T * match (YES in S240), the tag inspection unit 260 outputs the plaintext M (step S242). On the other hand, if the authentication tag T and the inspection tag T * do not match (NO in S240), the tag inspection unit 260 outputs an error message ⁇ (step S244).
  • the authentication encryption device 10 according to the first embodiment has a size (2 ⁇ b-2) that can process input blocks (AD blocks and plaintext blocks) by the method of PFB ⁇ according to the comparative example. subdivide into areas containing blocks.
  • the authentication encryption device 10 according to the first embodiment is configured to appropriately derive the tag T from a set of random numbers S generated in each zone.
  • the authenticated encryption system 1 according to the first embodiment can process (2 ⁇ b ⁇ 1) or more input blocks, which was impossible in terms of security with the method of PFB ⁇ according to the comparative example. becomes.
  • the limit on the number of input blocks is the same as in the case of b-bit security AE. Therefore, in the comparative example, if an attempt is made to transmit a plaintext of a size exceeding the limit of the number of input blocks (a size exceeding b ⁇ (2 ⁇ b ⁇ 2) bits), it is necessary to divide the plaintext into blocks that can be processed in advance. be. Then, it is necessary to encrypt each divided plaintext and transmit the obtained ciphertext. That is, in the comparative example, it is necessary to transmit a plurality of (N, A, C, T) for one plaintext.
  • the authenticated cryptosystem 1 since there is no limit on the number of blocks that can be processed, it is possible to transmit the ciphertext at once regardless of the size of the plaintext. That is, in Embodiment 1, only a single (N, A, C, T) transmission needs to be performed. Therefore, it is possible to suppress the communication load.
  • Embodiment 2 Next, Embodiment 2 will be described. For clarity of explanation, the following descriptions and drawings are omitted and simplified as appropriate. Moreover, in each drawing, the same elements are denoted by the same reference numerals, and redundant description is omitted as necessary. Note that the system configuration according to the second embodiment is substantially the same as the system configuration according to the first embodiment, so description thereof will be omitted. That is, the authentication cryptosystem 1 according to the second embodiment has an authentication encryption device 10A corresponding to the authentication encryption device 10 and an authentication decryption device 20A corresponding to the authentication decryption device 20. FIG.
  • Embodiment 2 corresponds to ⁇ CB ⁇ , which is an improvement when the PFB ⁇ method according to the comparative example described above is extended to the ⁇ CB method referred to in the comparative example. That is, in the second embodiment, processing (encryption or decryption and AD processing) using the TBC function of blocks in PFB ⁇ can be executed in parallel. Furthermore, in the second embodiment, as in the first embodiment, the plaintext block (and AD block) is divided into sections of a predetermined length, and processing is performed for each section.
  • FIG. 16 is a diagram showing the configuration of an authentication encryption device 10A according to the second embodiment.
  • the authentication encryption device 10A includes an input unit 100, a division unit 102A, a nonce generation unit 104, an AD processing unit 110A, an encryption unit 120A, a random number calculation unit 130A, and a random number encryption unit. 140A, a tag generation unit 150A, and an output unit 160.
  • FIG. 16 is a diagram showing the configuration of an authentication encryption device 10A according to the second embodiment.
  • the authentication encryption device 10A includes an input unit 100, a division unit 102A, a nonce generation unit 104, an AD processing unit 110A, an encryption unit 120A, a random number calculation unit 130A, and a random number encryption unit. 140A, a tag generation unit 150A, and an output unit 160.
  • the authentication encryption device 10A corresponds to the authentication encryption device 10 shown in FIGS.
  • a dividing unit 102A corresponds to the dividing unit 102 according to the first embodiment.
  • the AD processing section 110A corresponds to the AD processing section 110 according to the first embodiment.
  • the encryption unit 120A corresponds to the encryption unit 120 according to the first embodiment.
  • a random number calculation unit 130A corresponds to the random number calculation unit 130 according to the first embodiment.
  • a random number encryption unit 140A corresponds to the random number encryption unit 140 according to the first embodiment.
  • a tag generator 150A corresponds to the tag generator 150 according to the first embodiment.
  • the configuration of the authentication/encryption device 10A will be mainly described with respect to the portions that differ from the configuration of the authentication/encryption device 10A.
  • the division unit 102A divides each of the plaintext M and the related data A into blocks of a predetermined length, similar to the division unit 102 according to the first embodiment. Specifically, the dividing unit 102A divides the plaintext M into b-bit plaintext blocks M_1, . . . , M_m. Division unit 102A outputs plaintext blocks M_1, . . . , M_m to encryption unit 120A. Further, the dividing unit 102A divides the related data A into AD blocks A_1, . . . , A_a each having a length of b bits. The dividing unit 102A outputs the AD blocks A_1, . . . , A_a to the AD processing unit 110A.
  • the dividing unit 102A performs division so that all AD blocks A_1, . Then, when a ⁇ 2 ⁇ b ⁇ 1, the dividing unit 102A performs division so that m′ plaintext blocks are included in the area #1.
  • a ⁇ 2 ⁇ b ⁇ 1 is assumed to be satisfied.
  • Divide into each section so that it is divided in the order of At this time, assuming that the number of plaintext blocks divided into the area #1 is m', m' 2 ⁇ b-1.
  • the number of plaintext blocks included in area plaintext block M[k] other than at least M[1] and M[ ⁇ ] is (2 ⁇ b ⁇ 1).
  • the number of plaintext blocks included in the area plaintext block M[1] is also (2 ⁇ b ⁇ 1).
  • the AD processing unit 110A processes the related data A in the same manner as the AD processing unit 110 according to the first embodiment.
  • the AD processing unit 110A processes the AD blocks A_1, .
  • the AD processing section 110A processes AD blocks for each of the above-described areas.
  • the AD processing unit 110A obtains a random number Z by inputting each AD block into the TBC function to which the key K and Tweak are input.
  • the AD processing unit 110A outputs intermediate values Z_1, . Details of the processing of the AD processing unit 110A will be described later.
  • the encryption unit 120A processes the plaintext M in the same manner as the encryption unit 120 according to the first embodiment.
  • the encryption unit 120A parallelly processes the plaintext blocks M_1, .
  • the encryption unit 120A encrypts plaintext blocks (plaintext) in parallel using the TBC function for each of the areas described above. That is, the encryption unit 120A encrypts the plaintext blocks included in the area #1 in parallel using the TBC function. Then, the encryption unit 120A encrypts the plaintext blocks included in the area #2 in parallel using the TBC function. Thereafter, the encryption unit 120A encrypts plaintext blocks included in the area #k in parallel using the TBC function.
  • the encryption unit 120A encrypts the area plaintext blocks M[k] included in the area #k in parallel for each plaintext block.
  • the encryption unit 120A obtains a ciphertext block as an output value of the TBC function by inputting each plaintext block into the TBC function to which the key K and Tweak are input. That is, the encryption unit 120A generates a ciphertext block by encrypting a plurality of plaintext blocks in parallel using the TBC function for each area.
  • the encryption unit 120A also encrypts the area plaintext block M[k] included in the area #k to obtain the area ciphertext block C[k].
  • the area ciphertext block C[k] is composed of the same number of ciphertext blocks as the area plaintext block M[k].
  • the encryption unit 120A also outputs the plaintext block (the input value of the TBC function) input to the TBC function in each zone as the intermediate value Z to the random number calculation unit 130A. Details of the processing of the encryption unit 120A will be described later.
  • the Tweak input to each TBC function used in the encryption unit 120A can be different from the Tweak input to each TBC function used in the encryption unit 84. Details will be described later.
  • the number of digits of Tweaks according to Embodiment 2 is the same as in Embodiment 1.
  • the number of digits of Tweak according to the comparative example is larger. That is, in the comparative example, only one segment is processed, whereas in the second embodiment, multiple segments are processed. There is a need to.
  • the random number calculation unit 130A calculates random numbers for generating tags, similarly to the random number calculation unit 130 according to the first embodiment.
  • the random number calculation unit 130A uses the random number (intermediate value) Z generated by the AD processing unit 110A, the plaintext block output from the encryption unit 120A, and a predetermined matrix AM to calculate a value for generating a tag. calculate.
  • the matrix AM according to the second embodiment is shown in Equation 8 below.
  • the matrix AM is a matrix of size ⁇ (2 ⁇ b ⁇ 1) whose elements are predetermined values ⁇ _(i, j). ... (8)
  • the random number calculation unit 130A calculates a random number S for each zone. Random number calculator 130A performs substantially the same processing as random number calculator 130 to generate a set of random numbers S for each zone. Specifically, for each zone, the random number calculation unit 130A generates a random number (intermediate value) Z generated by the AD processing unit 110A, a plaintext block (intermediate value Z) output from the encryption unit 120A, and a predetermined A set of ⁇ random numbers S (S_1, . . . , S_ ⁇ ) is generated using the matrix AM.
  • the set of random numbers S is used to generate initial values for processing in the next section, as described below.
  • the set of random numbers S generated in the processing in the last section is used to generate the tag T.
  • the random number calculation unit 130A calculates the exclusive OR of the product of the median value Z_j and ⁇ _(i, j) for each of the ⁇ lines i (1 ⁇ i ⁇ ) in each section. Calculate S_i. Details will be described later.
  • Random number calculation unit 130A uses matrix AM to obtain intermediate values Z_1 ⁇ (k), . to generate a set of random numbers S_1 ⁇ (k), . . . , S_ ⁇ (k). That is, random number calculation section 130A generates a set of random numbers using the same matrix AM shown in Equation 8 for each area #k. ... (9)
  • Equation 10 Equation 10 below holds for i (1 ⁇ i ⁇ ).
  • the random number calculator 130A encrypts the initial value of each line of the exclusive OR of the product of Z and ⁇ by the random number encrypter 140A, which will be described later. Let the set of random numbers generated in the previous section be transformed into Details will be described later.
  • the random number calculator 130A outputs a set of random numbers S_1 ⁇ (k), . Also, the random number calculation unit 130A outputs a set of random numbers S_1 ⁇ ( ⁇ ), . The details of the processing of the random number calculator 130A will be described later.
  • Random number encryption unit 140A uses nonce N to generate a random number set S_1 ⁇ (k), . , S_ ⁇ (k) are encrypted.
  • the contents of the calculation of the random number encryption unit 140A are substantially the same as those shown in FIG. Therefore, the random number encryption unit 140A converts the set of random numbers S_1 ⁇ (k), . Encrypt using a function. Then, the random number encryption unit 140A encrypts the encryption result obtained by encrypting the set of random numbers S_1 ⁇ (k), . value (initial state). That is, the encrypted random numbers S_1 ⁇ (k), . Initial value.
  • the tag generation unit 150A uses the set of random numbers S_1 ⁇ ( ⁇ ), . to generate a tag T for authentication. Note that the method of generating the tag T is substantially the same as the method of generating the tag T in the tag generation unit 150 . Therefore, the tag generator 150A performs the calculations shown in FIG. That is, the tag generation unit 150A converts the set of random numbers S_1 ⁇ ( ⁇ ), . encrypted using The tag generation unit 150A encrypts the set of random numbers S_1 ⁇ ( ⁇ ), . get
  • FIG. 17 is a diagram for explaining the processing of the random number encryption unit 140A and the tag generation unit 150A of the authentication encryption device 10A according to the second embodiment.
  • related data is empty in FIG. 17 .
  • the authentication encryption device 10 converts plaintext blocks of plaintext M into area plaintext blocks M[1], M[2], M[2], M[1], M[2], . . . , M[ ⁇ ].
  • each regional plaintext block M[k] includes (2 ⁇ b ⁇ 1) plaintext blocks.
  • the encryption unit 120A and the random number calculation unit 130A generate an area ciphertext block C[1] and a random number set S_1 for the area #1 using the input nonce N and area plaintext block M[1]. Generate ⁇ (1), . . . , S_ ⁇ (1).
  • the random number encryption unit 140A encrypts the set of random numbers S_1 ⁇ (1), ..., S_ ⁇ (1) generated for the area #1. Then, the random number encryption unit 140 sets the encrypted random number set S — 1 ⁇ (1), . That is, the encrypted random numbers S — 1 ⁇ (1), .
  • the encryption unit 120A and the random number calculation unit 130A generate an area ciphertext block C[2] and a random number set S_1 for the area #2 using the input nonce N and area plaintext block M[2]. Generate ⁇ (2), . . . , S_ ⁇ (2). At this time, the random number calculation unit 130A uses the encryption result of S_1 ⁇ (1), . The random number encryption unit 140A encrypts the set of random numbers S_1 ⁇ (2), ..., S_ ⁇ (2) generated for the area #2. Then, the random number encryption unit 140A sets the encrypted random number set S_1 ⁇ (2), . That is, the encrypted random numbers S — 1 ⁇ (2), .
  • the encryption unit 120A and the random number calculation unit 130A use the input nonce N and the area plaintext block M[k] for each area #k to generate the area ciphertext block C[k] and Generate a set of random numbers S_1 ⁇ (k), . . . , S_ ⁇ (k).
  • the encryption unit 120A and the random number calculation unit 130A use the encryption result of S_1 ⁇ (k ⁇ 1), .
  • the random number encryption unit 140A encrypts a set of random numbers S_1 ⁇ (k), .
  • the random number encryption unit 140A converts the random number set S_1 ⁇ (k), . ).
  • the encryption unit 120A can perform processing for each zone using the calculations shown in FIGS. 19 and 20, which will be described later, as subroutines. Further, the random number calculation unit 130A can call the matrix AM shown in Equation 8 for each area, and perform processing using the calculations shown in FIGS. 18 to 20 described later as subroutines. These are the same in the decryption processing in the authentication decryption device 20A, which will be described later.
  • the tag generating unit 150A uses the set of random numbers S_1 ⁇ ( ⁇ ), . 1], . . . , T[ ⁇ ].
  • the tag T for authentication is an encryption result obtained by encrypting a set of random numbers with the TBC function that inputs Tweak including a nonce N and the number m of plaintext blocks (plaintext length). be. Therefore, the security of the set of tags T is ensured.
  • FIG. 18 to 20 are diagrams showing the outline of calculations in the authentication encryption process according to the second embodiment.
  • FIG. 18 is a diagram showing an outline of calculations of the AD processing section 110A and the random number calculation section 130A for the first section, that is, section #1.
  • FIG. 19 is a diagram showing an outline of calculations of the encryption section 120A and the random number calculation section 130A for the first section, that is, section #1.
  • FIG. 20 is a diagram showing an outline of calculations of the encryption section 120A and the random number calculation section 130A for the second section, that is, section #2.
  • the AD processing unit 110A processes AD blocks A_1, . Specifically, the AD processing unit 110A encrypts the AD block A_1 using the TBC function. As a result, an intermediate value (random number) Z — 1 ⁇ (1) is output from the TBC function as an encryption result. Similarly, AD processing unit 110A encrypts AD block A_2 with the TBC function. As a result, the TBC function outputs Z — 2 ⁇ (1), which is an intermediate value (random number), as an encryption result. Similarly, the AD processing unit 110A encrypts the AD block A_a with the TBC function. As a result, the TBC function outputs Z_â(1), which is an intermediate value (random number), as an encryption result. The AD processing unit 110A outputs the encryption result, that is, the intermediate values Z_1 ⁇ (1), .
  • the number of random numbers Z, which are output values from the TBC function is one less than the number of AD blocks.
  • AD blocks can be processed in parallel, so the number of intermediate values Z, which are output values from the TBC function, is the same as the number of AD blocks.
  • the AD processing unit 110A processes only the section #1.
  • the encryption unit 120A inputs the key K and Tweak to M_1, . . . , M_m′ of the plaintext blocks M_1, .
  • Encryption processing is performed in parallel using the TBC function that has been designed. Specifically, the encryption unit 120A encrypts the plaintext block M_1 using the TBC function. As a result, the TBC function outputs a ciphertext block C_1 as an encryption result. Similarly, the encryption unit 120A encrypts the plaintext block M_2 with the TBC function. As a result, the TBC function outputs a ciphertext block C_2 as an encryption result. Similarly, the encryption unit 120A encrypts the plaintext block M_m' using the TBC function.
  • the TBC function outputs a ciphertext block C_m' as the encryption result.
  • the encryption unit 120A obtains ciphertext blocks C_1, . . . , C_m' respectively corresponding to M_1, .
  • the encryption unit 120A converts the plaintext blocks M_1, . 1) is output to the random number calculation unit 130A.
  • the Tweaks input to the TBC functions used in the AD processing section 110A and the encryption section 120A can be set according to substantially the same rules as in the AD processing section 110 and the encryption section 120. That is, the Tweak input to the TBC function used in the AD processing unit 110A is (0 ⁇ n, i, 0, 0, 0) for the block index i (1 ⁇ i ⁇ a) of the related data A. becomes. Also, the Tweak input to the TBC function used in the encryption unit 120A is (N, a, i, 0, 0) for the block index i (1 ⁇ i ⁇ m') of the plaintext M. .
  • the Tweak input to the last TBC function used in encryption section 120A is (N, a, m', 1, 0). That is, x in (N, a, i, x, 0) is set to "1" for the Tweak input to the TBC function used at the end of the segment. By setting Tweaks in this manner, one Tweak will not match another Tweak.
  • the random number calculation unit 130A calculates the intermediate values Z_1 ⁇ (1), . (1), Z_(a+1) ⁇ (1), . . . , Z_(a+m′) ⁇ (1). That is, the random number calculation unit 130A calculates the intermediate values Z_1 ⁇ (1), . . . , Z_a ⁇ (1), Z_(a+1) ⁇ (1 ), . . . , Z_(a+m′) ⁇ (1). Thereby, the random number calculation unit 130A generates a set of random numbers S_1 ⁇ (1), ..., S_ ⁇ (1) for the area #1. The random number calculation unit 130A outputs the set of random numbers S_1 ⁇ (1), .
  • Random number encryption unit 140A receives a set of random numbers S_1 ⁇ (k), . Encrypt using the modified TBC function E K ⁇ '. Then, the obtained encryption result is input to the random number calculation unit 130A during the processing in the area #2.
  • the TBC function E K ⁇ ' is a TBC function to which a Tweak different from the Tweaks input to any of the TBC functions E K ⁇ described in FIGS. 18 to 20 is input. .
  • the Tweaks input to the TBC functions E K ⁇ ' do not include the number of AD blocks a and the number m of plaintext blocks, and are set to be different from the Tweaks input to other TBC functions E K ⁇ .
  • Tweak input to the TBC function E K ⁇ ' for encrypting S_i ⁇ (k) is assumed to describe this TBC function in the form of the TBC function E K ⁇ , (N, k, i, 0, 0, 1). That is, the last value of Tweak input to the TBC function E K ⁇ ' may be "1".
  • the Tweak input to the TBC function E K may have a final value of "0", such as (N, a, m', 0, 0, 0). Therefore, duplication of Tweaks can be avoided.
  • the encryption unit 120A encrypts (2 ⁇ b-1) M_(m'+1) pieces of plaintext blocks M_1, . ), . That is, the encryption unit 120A performs the TBC function with the key K and Tweak input for the plaintext blocks M_(m′+1), . are used to perform encryption processing in parallel. , ciphertext blocks C_(m'+1), . Obtain C_(m'+2 ⁇ b-1). Further, the encryption unit 120A converts the plaintext blocks M_(m′+1), . . . , Z_(2 ⁇ b ⁇ 1) ⁇ (2) to the random number calculation unit 130A.
  • the random number calculation unit 130A calculates intermediate values Z_1 ⁇ (2), . b-1) Process ⁇ (2). That is, random number calculation unit 130A calculates intermediate values Z_1 ⁇ (2), ..., Z_(2 ⁇ b-1) ⁇ (2) using matrix AM shown in formula 8 according to formula 9 above. process. Thereby, the random number calculation unit 130A generates a set of random numbers S_1 ⁇ (2), ..., S_ ⁇ (2) for the area #2.
  • the random number calculator 130A inputs the encryption result obtained by encrypting the random number S_î(1) in the random number encrypter 140A to each line i as an initial value. That is, the random number S_1 ⁇ (1) generated in the area #1 is encrypted by the TBC function E K ⁇ ' to which the Tweak containing the nonce N, the index "1" of the area #1 and the line index "1" is input. , corresponds to the initial value of line "1". Similarly, the random number S_ ⁇ (1) generated in area #1 is encrypted by the TBC function E K ⁇ ' input with a Tweak containing the nonce N, the index '1' of area #1, and the line index ' ⁇ '. The encrypted result obtained by converting corresponds to the initial value of the line " ⁇ ". The random number calculator 130A outputs the set of random numbers S_1 ⁇ (2), .
  • Tweaks input to each TBC function used in encryption section 120A can be set according to substantially the same rules as in encryption section 120. That is, the Tweak input to the TBC function used in the encryption unit 120A is (N, a, i , 0, 0). For zone #2, the Tweak input to the final TBC function of encryption section 120A is (N, a, m'+2 ⁇ b-1, 1, 0). That is, x in (N, a, i, x, 0) is set to "1" for the Tweak input to the TBC function used at the end of the segment. By setting Tweaks in this manner, one Tweak will not match another Tweak.
  • the number of columns of the matrix AM must not exceed 2 ⁇ b-1. Therefore, in the second embodiment, as in the first embodiment, the number of columns of the matrix AM is (2 ⁇ b ⁇ 1) as shown in Equation 8.
  • each block is encrypted in parallel. Therefore, in the second embodiment, as shown in FIG. 18, in order to process a pieces of AD blocks, a matrix AM having a number of columns should be prepared.
  • a matrix AM having m'' columns is prepared in the second embodiment, as shown in FIGS. 19 and 20, in order to process m'' plaintext blocks. That is, in Embodiment 2, the number of blocks to be processed and the number of columns of the corresponding matrix AM match.
  • the encryption unit 120A repeatedly calls the TBC function to encrypt the plaintext block each time a certain area is processed.
  • the random number calculation unit 130A uses the encrypted result obtained by encrypting the random number obtained for the previous area as the initial value of each line each time it processes a certain area, and the same matrix shown in Equation 8 Repeatedly call AM (ie, the same element ⁇ ) to generate a set of random numbers.
  • the Tweak input to each TBC function used in the encryption unit 120A is set according to the rules described above using FIG. That is, in each area #k, the Tweak input to the 1st to (2 ⁇ b-2)th TBC functions is (N, a, i, 0, 0) for block index i of plaintext M. becomes. Also, in each section #k, the Tweak input to the (2 ⁇ b ⁇ 1)th TBC function is (N, a, i, 1, 0) with respect to block index i of plaintext M. FIG. Note that here, since i is the index of the plaintext block number m, the Tweak input to each TBC function in a certain area #k is different from the Tweak input to each TBC function in another area. .
  • the intermediate value Z_(j) ⁇ ( ⁇ ) for the less than 2 ⁇ b ⁇ 1 is zero.
  • the tag generation unit 150A converts the set of random numbers S_1 ⁇ ( ⁇ ), .
  • a tag T for authentication is generated using Tweak including a and the number of plaintext blocks m.
  • the Tweak that is used only once is input to the TBC function used in tag generator 150A.
  • the TBC function E K ⁇ ' is used in the random number encryption unit 140A, whereas the TBC function E K ⁇ is used in the tag generation unit 150A. Therefore, the Tweak input to the TBC function E K used in the tag generation unit 150A is different from the Tweak input to the TBC function used in the random number encryption unit 140A. Also, unlike the Tweak input to the TBC function E K used in the AD processing unit 110A and the encryption unit 120A, the Tweak input to the TBC function E K used in the tag generation unit 150A is the area contains the number ⁇ and the line index i.
  • the Tweak input to the TBC function E K used in the tag generation unit 150A is different from the Tweak input to the TBC function used in the AD processing unit 110A and the encryption unit 120A. Therefore, duplication of Tweaks can be avoided. These are the same in the decryption processing in the authentication decryption device 20A, which will be described later.
  • FIG. 21 is a diagram showing the configuration of an authentication/decryption device 20A according to the second embodiment.
  • the authentication/decryption device 20A includes an input unit 200, a division unit 202A, an AD processing unit 210A, a decryption unit 220A, a random number calculation unit 230A, a random number encryption unit 240A, and a tag generation unit. 250A and a tag inspection unit 260.
  • FIG. 21 is a diagram showing the configuration of an authentication/decryption device 20A according to the second embodiment.
  • the authentication/decryption device 20A includes an input unit 200, a division unit 202A, an AD processing unit 210A, a decryption unit 220A, a random number calculation unit 230A, a random number encryption unit 240A, and a tag generation unit. 250A and a tag inspection unit 260.
  • the authentication/decryption device 20A corresponds to the authentication/decryption device 20 shown in FIGS.
  • a dividing unit 202A corresponds to the dividing unit 202 according to the first embodiment.
  • the AD processing section 210A corresponds to the AD processing section 210 according to the first embodiment.
  • a decoding unit 220A corresponds to the decoding unit 220 according to the first embodiment.
  • a random number calculation unit 230A corresponds to the random number calculation unit 230 according to the first embodiment.
  • a random number encryption unit 240A corresponds to the random number encryption unit 240 according to the first embodiment.
  • a tag generator 250A corresponds to the tag generator 250 according to the first embodiment. It should be noted that the configuration of the authentication/decryption device 20A will be described below mainly with respect to the portions that differ from the configuration of the authentication/decryption device 20A.
  • the division unit 202A divides each of the ciphertext C and the related data A into blocks of a predetermined length, similar to the division unit 102A. Specifically, the dividing unit 202A divides the ciphertext C into ciphertext blocks C_1, . . . , C_m of b bits each. Further, the dividing unit 202A divides the related data A into AD blocks A_1, . . . , A_a each having a length of b bits. The dividing unit 202A outputs the AD blocks A_1, . . . , A_a to the AD processing unit 210A.
  • the bit string of the ciphertext block divided into the area #k is "area ciphertext block C[k]"
  • the number of ciphertext blocks included in area ciphertext block C[k] other than at least C[1] and C[ ⁇ ] is (2 ⁇ b ⁇ 1).
  • the number of ciphertext blocks included in the area ciphertext block C[1] is also (2 ⁇ b ⁇ 1).
  • the AD processing section 210A performs substantially the same processing as the AD processing section 110A described above. That is, the AD processing unit 210A processes the AD blocks A_1, . . . , A_a using the TBC function to which the key K and Tweak are input. At this time, the AD processing section 210A processes AD blocks for each of the above-described areas. The AD processing unit 210A outputs intermediate values Z_1, . Note that the Tweak input to each TBC function used in AD processing section 210A may be set substantially the same as the Tweak input to each TBC function used in AD processing section 110A described above.
  • the decryption unit 220A performs decryption processing corresponding to the encryption processing in the encryption unit 120A described above.
  • the decryption unit 220A parallelly processes the ciphertext blocks C_1, . . . , C_m using the TBC function to which the key K and Tweak are input.
  • the decryption unit 220A decrypts the ciphertext blocks (ciphertext) in parallel for each of the areas described above. That is, the decryption unit 220A performs decryption processing corresponding to the above-described encryption processing in the encryption unit 120A for the ciphertext blocks included in the zone #1.
  • the decryption unit 220A performs decryption processing corresponding to the above-described encryption processing in the encryption unit 120A for the ciphertext blocks included in the zone #2. Thereafter, the decryption unit 220A performs decryption processing corresponding to the above-described encryption processing in the encryption unit 120A for the ciphertext blocks included in the zone #k. That is, the decryption unit 220A decrypts the area ciphertext block C[k] included in the area #k.
  • the decryption unit 220A obtains a plaintext block as an output value of the TBC function by inputting each ciphertext block into the TBC function (decryption function) to which the key K and Tweak are input.
  • This decryption function is configured to perform decryption processing corresponding to the encryption processing performed by the TBC functions E K ⁇ used in the encryption unit 120A described above.
  • Decryption section 220A also decrypts area ciphertext block C[k] included in area #k to obtain area plaintext block M[k].
  • the decryption unit 220A also outputs the plaintext block (the output value of the TBC function) output from the TBC function (decryption function) in each area as the intermediate value Z to the random number calculation unit 230A.
  • the TBC function which is the encryption function, is replaced with the decryption function
  • the ciphertext block is input to the decryption function (TBC function)
  • the plaintext block Corresponds to what is replaced so that is output.
  • TBC function decryption function
  • the Tweak input to each TBC function used in decryption section 220A may be set substantially the same as the Tweak input to each TBC function used in encryption section 120A described above.
  • the random number calculation unit 230A uses the random number Z generated by the AD processing unit 210A and the decoding unit 220A and the predetermined matrix AM shown in Equation 8 to generate tags. Compute a random number for At this time, the random number calculator 230A calculates a random number for each zone. Specifically, the random number calculation unit 230A uses the intermediate value Z generated by the AD processing unit 210A and the decoding unit 220A and a predetermined matrix AM for each area to generate a set of ⁇ random numbers S (S_1 , . . . , S_ ⁇ ). Here, as with the random number calculator 130A described above, the set of random numbers S is used to generate initial values for processing in the next section.
  • the set of random numbers S generated in the processing in the last section is used to generate the tag T * for inspection.
  • the random number calculation unit 230A calculates the multiplied value of the intermediate value Z_j and ⁇ _(i, j) for each of the ⁇ lines i (1 ⁇ i ⁇ ) in each section.
  • S_i is calculated by performing exclusive OR. , Z_(2 ⁇ b ⁇ 1) ⁇ (k) using the matrix AM in each zone #k, as shown in Equation 9 above. ) to generate a set of random numbers S_1 ⁇ (k), . . . , S_ ⁇ (k).
  • the random number calculator 230A encrypts the initial value of each line of the exclusive OR of the product of Z and ⁇ by the random number encrypter 240A, which will be described later. Let the set of random numbers generated in the previous section be transformed into The random number calculator 230A outputs a set of random numbers S — 1 ⁇ (k), . Random number calculation unit 230A also outputs a set of random numbers S_1 ⁇ ( ⁇ ), .
  • Random number encryption unit 240A uses nonce N to generate a random number set S_1 ⁇ (k), . . . , S_ ⁇ (k) are encrypted.
  • the contents of the calculation of the random number encryption unit 240A are substantially the same as those shown in FIG. Therefore, the random number encryption unit 240A converts the set of random numbers S_1 ⁇ (k), . Encrypt using a function. Then, the random number encryption unit 240A encrypts the encryption result obtained by encrypting the set of random numbers S_1 ⁇ (k), . value (initial state). That is, the encrypted random numbers S_1 ⁇ (k), . Initial value.
  • the authenticated cryptosystem 1 according to the second embodiment can have substantially the same effect as the authenticated cryptosystem 1 according to the first embodiment described above. That is, as described above, the authentication encryption device 10A according to the second embodiment has a size (2 ⁇ b-1) that allows processing of the input block (AD block and plaintext block) by the method according to the comparative example. subdivide into areas containing blocks.
  • the authentication encryption device 10A according to the second embodiment is configured to appropriately derive the tag T from a set of random numbers S generated in each zone. As a result, the authenticated cryptographic system 1 according to the second embodiment can process (2 ⁇ b ⁇ 1) or more input blocks, which was impossible in terms of security with the method according to the comparative example. .
  • the authenticated encryption system 1 there is no restriction on the number of blocks that can be processed, so it is possible to transmit the ciphertext at once regardless of the size of the plaintext. In other words, even in the second embodiment, it is sufficient to transmit only a single (N, A, C, T). Therefore, it is possible to suppress the communication load.
  • Embodiment 3 shows the outline of the configuration according to the embodiment described above.
  • FIG. 22 is a diagram showing the configuration of the authentication encryption device 30 according to the third embodiment.
  • the authentication encryption device 30 according to the third embodiment corresponds to the authentication encryption device 10 according to the first embodiment and the authentication encryption device 10A according to the second embodiment.
  • the authentication encryption device 30 according to the third embodiment has an encryption unit 320 , a random number calculation unit 330 , a random number encryption unit 340 and a tag generation unit 350 .
  • the encryption unit 320 has a function as encryption means.
  • the random number calculator 330 functions as a random number calculator (first random number calculator).
  • the random number encryption unit 340 has a function as random number encryption means (first random number encryption means).
  • the tag generation unit 350 has a function as tag generation means (first tag generation means).
  • the encryption unit 320 can be realized by functions substantially similar to those of the encryption unit 120 shown in FIG. 3 or the encryption unit 120A shown in FIG.
  • the encryption unit 320 uses a Tweakable block cipher (TBC function) using a nonce as a Tweak to divide the plaintext into plaintext blocks of a predetermined length (for example, b bits), and divides the plaintext into blocks of a predetermined length. Encrypt.
  • TBC function Tweakable block cipher
  • the "predetermined length area” includes (2 ⁇ b-2) blocks in the first embodiment when the bit length of the plaintext block is b bits. corresponds to an area that can be obtained, and corresponds to an area that can contain (2 ⁇ b ⁇ 1) blocks in the second embodiment.
  • a "predetermined length area” is not limited to areas that may contain these number of blocks. Note that, as mentioned above, the last zone need not have (2 ⁇ b ⁇ 2) (or (2 ⁇ b ⁇ 1)) blocks. Also, when related data is input, (2 ⁇ b ⁇ 2) (or (2 ⁇ b ⁇ 1)) plaintext blocks may not be included, at least in the first section. The same applies to the authentication/decryption device 40 according to the third embodiment, which will be described later.
  • the random number calculation unit 330 can be realized by functions substantially similar to those of the random number calculation unit 130 shown in FIG. 3 or the random number calculation unit 130A shown in FIG. In encryption, the random number calculator 330 uses first data derived from at least one of the input and output of a function related to the Tweakable block cipher in each area, and a predetermined matrix having predetermined values as elements, Generate a set of random numbers for each zone.
  • the "function related to the Tweakable block cipher” corresponds to the TBC function in the embodiment described above.
  • first data corresponds to the random number Z output from the TBC function in the first embodiment.
  • first data corresponds to a plaintext block (intermediate value Z) input to the TBC function.
  • the first data is not limited to data input to the TBC function or data output from the TBC function. The first data may be derived using both the input data and the output data of the TBC function.
  • the "function related to the Tweakable block cipher” is not limited to the TBC function in the embodiment described above. The same applies to the authentication/decryption device 40 according to the third embodiment, which will be described later.
  • the "predetermined matrix” corresponds to the matrix AM described above, but is not limited to this.
  • the “predetermined matrix” corresponds to the matrix AM shown in Equation (5).
  • the “predetermined matrix” corresponds to the matrix AM shown in Equation (8).
  • the “predetermined value” corresponds to ⁇ , which is an element in the matrix AM described above, but is not limited to this.
  • the random number generated by the random number calculation unit 330 corresponds to the random number S described above, but is not limited thereto. The same applies to the authentication/decryption device 40 according to the third embodiment, which will be described later.
  • the random number encryption unit 340 can be realized by substantially the same functions as those of the random number encryption unit 140 shown in FIG. 3 or the random number encryption unit 140A shown in FIG.
  • the random number encryption unit 340 encrypts a set of random numbers generated in each zone using Tweakable block cipher, and uses each encrypted random number as an initial value for processing in the next zone.
  • the tag generation unit 350 can be realized by substantially the same functions as those of the tag generation unit 150 shown in FIG. 3 or the tag generation unit 150A shown in FIG.
  • the tag generator 350 encrypts the set of random numbers generated in the last section using a Tweakable block cipher to generate a tag for authentication.
  • the generated tag corresponds to the tag T described above.
  • the random number calculator 330 may generate a set of random numbers using the same predetermined matrix for each area. Further, as in the above-described embodiment, the random number calculation unit 330 may generate a set of random numbers composed of random numbers corresponding to the value ⁇ indicating the predetermined security level for each of the ⁇ areas. At this time, the random number encryption unit 340 encrypts each of the generated ⁇ random numbers using the Tweakable block cipher for each of the first to ( ⁇ 1)th areas, and encrypts the encrypted ⁇ random numbers. , may be used as initial values for processing in the next section.
  • the tag generation unit 350 may encrypt each of the ⁇ random numbers generated in the ⁇ -th area using the Tweakable block cipher to generate a set of ⁇ tags. The same applies to the authentication/decryption device 40 according to the third embodiment, which will be described later.
  • FIG. 23 is a diagram showing the configuration of the authentication/decryption device 40 according to the third embodiment.
  • An authentication-decryption device 40 according to the third embodiment corresponds to the authentication-decryption device 20 according to the first embodiment and the authentication-decryption device 20A according to the second embodiment.
  • the authentication/decryption device 40 according to the third embodiment has a decryption section 420 , a random number calculation section 430 , a random number encryption section 440 , a tag generation section 450 and a tag inspection section 460 .
  • the decoding unit 420 has a function as decoding means.
  • the random number calculator 430 functions as a random number calculator (second random number calculator).
  • the random number encryption unit 440 has a function as random number calculation means (second random number encryption means).
  • the tag generation unit 450 has a function as tag generation means (second tag generation means).
  • the tag inspection unit 460 has a function as tag inspection means.
  • the decoding unit 420 can be realized by functions substantially similar to those of the decoding unit 220 shown in FIG. 10 or the decoding unit 220A shown in FIG.
  • the decryption unit 420 uses a Tweakable block cipher (TBC function) using a nonce as a tweak, and divides the ciphertext into ciphertext blocks of a predetermined length (for example, b bits) for each section of a predetermined length. decrypt to
  • the random number calculation unit 430 can be realized by functions substantially similar to those of the random number calculation unit 230 shown in FIG. 10 or the random number calculation unit 230A shown in FIG. In decryption, the random number calculation unit 430 uses the first data derived from at least one of the input and output of the function related to the Tweakable block cipher in each area and a predetermined matrix having predetermined values as elements to determine the area Generate a set of random numbers for each
  • the random number encryption unit 440 can be realized by substantially the same functions as those of the random number encryption unit 240 shown in FIG. 10 or the random number encryption unit 240A shown in FIG. Random number encryption unit 440 encrypts the set of random numbers generated in each zone using Tweakable block cipher, and uses each encrypted random number as an initial value for processing in the next zone.
  • the tag generator 450 can be realized by substantially the same function as the tag generator 250 shown in FIG. 10 or the tag generator 250A shown in FIG.
  • the tag generator 450 encrypts the set of random numbers generated in the final zone using the Tweakable block cipher to generate tags for inspection.
  • the generated tag corresponds to the tag T * described above.
  • the tag inspection unit 460 can be implemented with substantially the same functions as those of the tag inspection unit 260 shown in FIG. 10 or FIG.
  • the tag inspection unit 460 inspects whether or not there is falsification by comparing the inspection tag with the input authentication tag, and controls the output of the inspection result.
  • the authentication encryption device 30 and the authentication decryption device 40 can increase the number of plaintext blocks that can be processed in one authentication encryption while achieving high security.
  • the authenticated encryption system including the authenticated encryption device 30 and the authenticated decryption device 40 can also increase the number of plaintext blocks that can be processed in one authenticated encryption while realizing high security.
  • the authentication encryption method and the program for executing the authentication encryption method executed by the authentication encryption device 30 can increase the number of plaintext blocks that can be processed in one authentication encryption while realizing high security. It becomes possible. Also, delays in encryption and decryption can be suppressed.
  • the authentication-decryption method and the program for executing the authentication-decryption method executed by the authentication-decryption device 40 can increase the number of plaintext blocks that can be processed in one authentication encryption while realizing high security. .
  • the authentication encryption device 90 according to the second comparative example does not have the random number encryption unit 140, which is a component of the authentication encryption device 10 according to the first embodiment, and instead of the tag generation unit 150, the tag generation unit 940 have.
  • the initial value for the processing in section #(k+1) is the encryption result obtained by encrypting the set of random numbers generated in the processing for section #k.
  • the initial value is reset for each zone. That is, the initial value is 0 ⁇ b for each area.
  • encryption section 120 encrypts plaintext blocks for each zone using the reset initial values in substantially the same manner as in the first embodiment.
  • random number calculation unit 130 uses the reset initial values for each section to generate random number set S in substantially the same manner as in the first embodiment described above. .
  • the tag generation unit 950 uses a set of random numbers S generated by the random number calculation unit 130 for each area and a nonce N to generate a message authentication code using a Tweakable block cipher. Generate a tag T for authentication.
  • the tag generator 950 uses a nonce-based MAC (Message Authentication Code) to integrate random number sets and generate a tag T.
  • a nonce-based MAC is a MAC input that includes a nonce.
  • the nonce N is input from the nonce generation unit 104 to the tag generation unit 950 .
  • a set of random numbers is input from the random number calculation unit 130 to the tag generation unit 950 .
  • the random number calculation unit 130 performs the above-described processing for each zone, whereby the tag generation unit 950 obtains a set of random numbers as shown by the matrix of Equation 11 below.
  • Equation 11 represents a random number matrix having a size of ⁇ and having the random number S as an element.
  • the tag generation unit 950 processes the random numbers S_î(1), . i].
  • the tag generator 950 generates tags T[1], . . . , T[ ⁇ ] using ⁇ MACs. That is, with 1 ⁇ i ⁇ , the tag generation unit 950 generates the tag T[i] using the i-th MAC_i.
  • FIG. 25 is a diagram showing an outline of calculation of the tag generation unit 950 according to the second comparative example.
  • FIG. 25 shows the tag derivation function used in the tag generator 950.
  • FIG. 25 shows the nonce base MAC used in the tag generator 950.
  • FIG. 25 the tag generator 950 processes the random numbers S_i ⁇ (1), . ] is shown.
  • the tag generator 950 encrypts the constant fix with the TBC function E K to which the key K, nonce N and Tweak are input.
  • the tag generation unit 950 inputs (N, a, m, i, 1) as Tweak for the index i (1 ⁇ i ⁇ ) of each row (each line) of Equation 11.
  • the encrypted result obtained by encrypting the constant fix is generated using the TBC function to which the Tweak including the nonce is input, and can be said to be a random number derived from the nonce.
  • the tag generator 950 encrypts the random numbers S_i ⁇ (1), ..., S_i ⁇ ( ⁇ ) with the TBC function E K ⁇ '.
  • the TBC function E K ⁇ ' is a TBC function to which a Tweak different from the Tweak input to any TBC function E K ⁇ is input. Therefore, duplication of Tweaks can be avoided.
  • the tag generation unit 950 generates the encryption result obtained by encrypting the constant fix using the TBC function E K ⁇ and the random numbers S_i ⁇ ( 1 ), ..., S_i ⁇ ( The exclusive OR (sum) of the encryption result obtained by encrypting ⁇ ) is generated as the tag T[i].
  • the tag generator 950 generates the tag T using all the random numbers S generated in each section.
  • all elements of the random number matrix (equation 11) must be held in memory. Therefore, a storage area is required to store sets of random numbers S generated for all areas.
  • the tag generation unit 950 first generates a random number derived from a nonce and uses it as a temporary tag. Then, when the random number S_i ⁇ (1) is generated for the first area, the tag generation unit 950 encrypts the random number S_i ⁇ (1) with the TBC function, and XORs the random number S_i ⁇ (1) with the temporary tag. is calculated and the temporary tag is updated. The tag generation unit 950 generates the tag T by repeating this process each time the random number S is generated for each area. By performing such processing, it becomes unnecessary to hold all the elements of the random number matrix in memory. However, even in this case, memory is required to hold the temporary tags.
  • the method according to this embodiment can save storage capacity. Specifically, it is possible to increase the number of plaintext blocks that can be processed in one authentication encryption while realizing high security with a storage capacity substantially equivalent to the technology of PFB ⁇ according to Non-Patent Document 1 described above. .
  • the device (authentication encryption device and authentication decryption device) according to each embodiment may be physically or functionally realized using at least two computing devices.
  • the device according to each embodiment may be implemented as a dedicated device, or may be implemented as a general-purpose information processing device.
  • FIG. 26 is a block diagram schematically showing a hardware configuration example of a computing device capable of realizing the device and system according to each embodiment.
  • the calculation processing device 1000 has a CPU 1001, a volatile storage device 1002, a disk 1003, a nonvolatile recording medium 1004, and a communication IF 1007 (IF: Interface). Therefore, it can be said that the device according to each embodiment has a CPU 1001 , a volatile storage device 1002 , a disk 1003 , a nonvolatile recording medium 1004 and a communication IF 1007 .
  • Computing device 1000 may be connectable to input device 1005 and output device 1006 .
  • Computing device 1000 may include input device 1005 and output device 1006 . Further, the computational processing device 1000 can transmit and receive information to and from other computational processing devices and communication devices via the communication IF 1007 .
  • the non-volatile recording medium 1004 is a computer-readable, for example, Compact Disc or Digital Versatile Disc. Also, the non-volatile recording medium 1004 may be a USB (Universal Serial Bus) memory, a Solid State Drive, or the like. The non-volatile recording medium 1004 retains such programs without supplying power, making it portable. Note that the nonvolatile recording medium 1004 is not limited to the medium described above. Also, such a program may be supplied via the communication IF 1007 and communication network instead of the non-volatile recording medium 1004 .
  • the volatile storage device 1002 is computer readable and can temporarily store data.
  • the volatile memory device 1002 is a memory such as DRAM (dynamic random access memory), SRAM (static random access memory), or the like.
  • the CPU 1001 copies a software program (computer program: hereinafter simply referred to as "program") stored in the disk 1003 to the volatile storage device 1002 when executing it, and executes arithmetic processing.
  • the CPU 1001 reads data necessary for program execution from the volatile storage device 1002 . If display is required, the CPU 1001 displays the output result on the output device 1006 .
  • the CPU 1001 acquires the program from the input device 1005 .
  • the CPU 1001 interprets and executes a program corresponding to the function (processing) of each component shown in FIGS. 3, 10, 16, and 21-23.
  • the CPU 1001 executes the processing described in each of the above embodiments. In other words, the functions of the components shown in FIGS. can be realized.
  • each embodiment can be regarded as being achievable by the above-described program. Furthermore, it can be considered that each of the above-described embodiments can also be realized by a computer-readable non-volatile recording medium in which the above-described program is recorded.
  • the process of S108 may be executed before the process of S104 or S106. Furthermore, the process of S108 can be executed in parallel with the processes of S104 and S106. This also applies to the flow chart of FIG.
  • the division of the related data A and the plaintext M is performed by the division unit 102, but the configuration is not limited to this.
  • the division of the related data A may be performed by the AD processing unit 110 .
  • the division of the plaintext M may be performed by the encryption unit 120 .
  • the AD processing unit 110 may also divide the AD blocks into respective areas.
  • the encryption unit 120 may also divide the plaintext block into sections. In these cases, the dividing unit 102 may be omitted.
  • blocks are divided into sections, but the configuration is not limited to this.
  • the number of blocks included in each area ((2 ⁇ b-1) in the first embodiment, (2 ⁇ b-1) in the second embodiment) blocks are divided and encrypted ( or decryption) and random number generation.
  • the blocks may be divided for the second section, and the encryption (or decryption) and random number generation processing may be performed. The same applies to subsequent areas.
  • the program includes instructions (or software code) that, when read into a computer, cause the computer to perform one or more of the functions described in the embodiments.
  • the program may be stored in a non-transitory computer-readable medium or tangible storage medium.
  • computer readable media or tangible storage media may include random-access memory (RAM), read-only memory (ROM), flash memory, solid-state drives (SSD) or other memory technology, CDs - ROM, digital versatile disk (DVD), Blu-ray disc or other optical disc storage, magnetic cassette, magnetic tape, magnetic disc storage or other magnetic storage device.
  • the program may be transmitted on a transitory computer-readable medium or communication medium.
  • transitory computer readable media or communication media include electrical, optical, acoustic, or other forms of propagated signals.
  • a random number a random number calculation means for generating a set of random number encryption means for encrypting a set of random numbers generated in each zone using a Tweakable block cipher and using each encrypted random number as an initial value for processing in the next zone;
  • a tag generation means for encrypting the set of random numbers generated in the final zone using a Tweakable block cipher to generate a tag for authentication;
  • An authenticated cryptographic device having a (Appendix 2) The authentication encryption device according to appendix 1, wherein the random number calculation means generates the set of random numbers using the same predetermined matrix for each area.
  • the random number calculation means generates a set of random numbers consisting of a number of random numbers corresponding to a value ⁇ indicating a predetermined security level for each of the ⁇ areas;
  • the random number encryption means encrypts each of the generated ⁇ random numbers for each of the first to ( ⁇ 1)th areas using a Tweakable block cipher, and encrypts each of the encrypted ⁇ random numbers Let be the initial value for processing in the next section, and
  • the tag generation means encrypts each of the ⁇ random numbers generated in the ⁇ -th area using a Tweakable block cipher to generate a set of ⁇ tags. 3.
  • the authentication encryption device according to appendix 1 or 2.
  • the encryption means performs, for each area, the exclusive OR of the plaintext block and the encryption result obtained by encrypting the plaintext block preceding the plaintext block using a function related to the Tweakable block cipher, generate a ciphertext block,
  • the random number calculation means generates the random number by performing an exclusive OR of multiplication values of the encryption result corresponding to the first data and the elements of the predetermined matrix.
  • the authentication encryption device according to any one of appendices 1 to 3.
  • the encryption means generates a ciphertext block by encrypting a plurality of the plaintext blocks in parallel using a function related to a Tweakable block cipher for each of the zones;
  • the random number calculation means generates the random number by performing an exclusive OR of multiplied values of the plaintext block corresponding to the first data and the elements of the predetermined matrix.
  • the authentication encryption device according to any one of appendices 1 to 3.
  • (Appendix 6) decryption means for decrypting a ciphertext divided into ciphertext blocks of a predetermined length for each section of a predetermined length using a tweakable block cipher using a nonce as a tweak;
  • a random number a random number calculation means for generating a set; random number encryption means for encrypting a set of random numbers generated in each zone using a Tweakable block cipher and using each encrypted random number as an initial value for processing in the next zone;
  • a tag generation means for encrypting the set of random numbers generated in the final zone using a Tweakable block cipher to generate a tag for inspection; tag inspection means for inspecting the presence or absence of tampering by comparing the inspection tag with the input authentication tag, and performing control for outputting inspection results; authentication decryption device.
  • the authentication/decryption device according to appendix 6, wherein the random number calculation means generates the set of random numbers using the same predetermined matrix for each area.
  • the random number calculation means generates a set of random numbers consisting of a number of random numbers corresponding to a value ⁇ indicating a predetermined security level for each of the ⁇ areas;
  • the random number encryption means encrypts each of the generated ⁇ random numbers for each of the first to ( ⁇ 1)th areas using a Tweakable block cipher, and encrypts each of the encrypted ⁇ random numbers Let be the initial value for processing in the next section, and
  • the tag generation means encrypts each of the ⁇ random numbers generated in the ⁇ -th area using a Tweakable block cipher to generate a set of ⁇ tags.
  • the authentication/decryption device according to appendix 6 or 7.
  • the decryption means encrypts a plaintext block obtained by using the ciphertext block and a ciphertext block preceding the ciphertext block for each of the zones, using a function related to Tweakable block cipher. Generate a plaintext block by exclusive ORing with the transformation result, The random number calculation means generates the random number by performing an exclusive OR of multiplication values of the encryption result corresponding to the first data and the elements of the predetermined matrix.
  • the authentication/decryption device according to any one of Appendices 6 to 8.
  • the decryption means generates a plaintext block by decrypting a plurality of the ciphertext blocks in parallel using a function related to a Tweakable block cipher for each of the zones,
  • the random number calculation means generates the random number by performing an exclusive OR of multiplied values of the plaintext block corresponding to the first data and the elements of the predetermined matrix.
  • the encryption using data derived from at least one of the input and output of a function related to the Tweakable block cipher in each area and a predetermined matrix having predetermined values as elements, a set of random numbers is generated for each area a first random number calculation means for generating; a first random number encryption means for encrypting a set of random numbers generated in each zone using a Tweakable block cipher and using each encrypted random number as an initial value for processing in the next zone; a first tag generation means for generating a tag for authentication by encrypting the set of random numbers generated in the final zone using a Tweakable block cipher; has The authentication decrypti
  • a second random number calculation means for second random number encryption means for encrypting a set of random numbers generated in each zone using a Tweakable block cipher and using each encrypted random number as an initial value for processing in the next zone; a second tag generation means for encrypting the set of random numbers generated in the final zone using a Tweakable block cipher to generate a tag for inspection; tag inspection means for inspecting the presence or absence of falsification by comparing the inspection tag with the input authentication tag, and performing control for outputting inspection results; having authenticated cryptosystem.
  • Authentication decryption method (Appendix 14) encrypting the plaintext divided into plaintext blocks of a predetermined length for each section of a predetermined length using a Tweakable block cipher using a nonce as a tweak; In the encryption, a random number generating a set of encrypting a set of random numbers generated in each zone using a Tweakable block cipher, and using each encrypted random number as an initial value for processing in the next zone; encrypting the set of random numbers generated in the final zone using a Tweakable block cipher to generate a tag for authentication;
  • a non-transitory computer-readable medium that stores a program that causes a computer to execute (Appendix 15) a step of decrypting a ciphertext divided into ciphertext blocks of a predetermined length for each section of a predetermined length using a Tweakable block cipher using a nonce as a tweak; In the decryption, a random number generating a set
  • authentication encryption system 10 authentication encryption device 20 authentication decryption device 30 authentication encryption device 40 authentication decryption device 100 input unit 102 division unit 104 nonce generation unit 110 AD processing unit 120 encryption unit 130 random number calculation unit 140 random number encryption unit 150 Tag generation unit 160 Output unit 200 Input unit 202 Division unit 210 AD processing unit 220 Decryption unit 230 Random number calculation unit 240 Random number encryption unit 250 Tag generation unit 260 Tag inspection unit 320 Encryption unit 330 Random number calculation unit 340 Random number encryption unit 350 Tag generation unit 420 Decryption unit 430 Random number calculation unit 440 Random number encryption unit 450 Tag generation unit 460 Tag inspection unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

暗号化部(320)は、ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化する。乱数計算部(330)は、暗号化において、各区域におけるTweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する。乱数暗号化部(340)は、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化する。暗号化された乱数それぞれは次の区域における処理の初期値となる。タグ生成部(350)は、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成する。

Description

認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体
 本発明は、認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体に関する。
 事前に共有された秘密鍵を用いて、平文メッセージに対して暗号化と改ざん検知用の認証タグ計算とを同時に適用する認証暗号(Authenticated Encryption;AE)という技術が知られている。通信路に認証暗号AEを適用することにより、盗聴に対する内容の秘匿と、不正な改ざんに対する検知とが可能となり、結果として通信内容に対する強力な保護が実現される。認証暗号技術としては、例えば、非特許文献1に開示された技術が知られている。bビット入出力(平文ブロックの長さがbビット)のプリミティブ(暗号部品)を用いる場合、一般的に、安全性は最大でbビットであるが、非特許文献1にかかるアルゴリズムPFBωでは、bビットよりも高いωbビットの安全性(セキュリティレベル)を実現可能である。
Yusuke Naito, Yu Sasaki, and Takeshi Sugawara、"Lightweight Authenticated Encryption Mode Suitable for Threshold Implementation"、IACR Cryptology ePrint Archive: Report 2020/542、https://eprint.iacr.org/2020/542.pdf
 非特許文献1にかかる技術では、安全性上の理由により、一度の認証暗号において処理できる平文ブロックの数に制限がある。したがって、非特許文献1にかかる技術では、安全性を高めることはできるものの、処理できる平文ブロックの数の制限により、長い平文を一度に暗号化することが困難である。
 本開示の目的は、このような課題を解決するためになされたものであり、高い安全性を実現しつつ、一度の認証暗号において処理できる平文ブロックの数を増やすことが可能な、認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体を提供することにある。
 本開示にかかる認証暗号化装置は、ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化する暗号化手段と、前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する乱数計算手段と、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする乱数暗号化手段と、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成するタグ生成手段と、を有する。
 また、本開示にかかる認証復号装置は、ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号する復号手段と、前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する乱数計算手段と、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする乱数暗号化手段と、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成するタグ生成手段と、前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うタグ検査手段と、を有する。
 また、本開示にかかる認証暗号システムは、認証暗号化装置と、前記認証暗号化装置との間で通信を行う認証復号装置と、を有し、前記認証暗号化装置は、ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化する暗号化手段と、前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出されるデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する第1の乱数計算手段と、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする第1の乱数暗号化手段と、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成する第1のタグ生成手段と、を有し、前記認証復号装置は、前記ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号する復号手段と、前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出されるデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する第2の乱数計算手段と、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする第2の乱数暗号化手段と、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成する第2のタグ生成手段と、前記検査用のタグと、入力された前記認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うタグ検査手段と、を有する。
 また、本開示にかかる認証暗号化方法は、ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化し、前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成し、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とし、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成する。
 また、本開示にかかる認証復号方法は、ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号し、前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成し、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とし、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成し、前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行う。
 また、本開示にかかるプログラムは、ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化するステップと、前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成するステップと、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とするステップと、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成するステップと、をコンピュータに実行させる。
 また、本開示にかかるプログラムは、ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号するステップと、前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成するステップと、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とするステップと、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成するステップと、前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うステップと、をコンピュータに実行させる。
 本開示によれば、高い安全性を実現しつつ、一度の認証暗号において処理できる平文ブロックの数を増やすことが可能な、認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体を提供できる。
比較例にかかる認証暗号化装置の構成を示す図である。 実施の形態1にかかる認証暗号システムの構成を示す図である。 実施の形態1にかかる認証暗号化装置の構成を示す図である。 実施の形態1にかかる認証暗号化装置の乱数暗号化部及びタグ生成部の処理を説明するための図である。 実施の形態1にかかる認証暗号処理における演算の概略を示す図である。 実施の形態1にかかる認証暗号処理における演算の概略を示す図である。 実施の形態1にかかる認証暗号処理における演算の概略を示す図である。 実施の形態1にかかる認証暗号処理における演算の概略を示す図である。 実施の形態1にかかる認証暗号処理における演算の概略を示す図である。 実施の形態1にかかる認証復号装置の構成を示す図である。 実施の形態1にかかる認証復号装置の乱数暗号化部及びタグ生成部の処理を説明するための図である。 実施の形態1にかかる認証復号処理における演算の概略を示す図である。 実施の形態1にかかる認証復号処理における演算の概略を示す図である。 実施の形態1にかかる認証暗号化装置で実行される認証暗号化方法を示すフローチャートである。 実施の形態1にかかる認証復号装置で実行される認証復号方法を示すフローチャートである。 実施の形態2にかかる認証暗号化装置の構成を示す図である。 実施の形態2にかかる認証暗号化装置の乱数暗号化部及びタグ生成部の処理を説明するための図である。 実施の形態2にかかる認証暗号処理における演算の概略を示す図である。 実施の形態2にかかる認証暗号処理における演算の概略を示す図である。 実施の形態2にかかる認証暗号処理における演算の概略を示す図である。 実施の形態2にかかる認証復号装置の構成を示す図である。 実施の形態3にかかる認証暗号化装置の構成を示す図である。 実施の形態3にかかる認証復号装置の構成を示す図である。 第2の比較例を説明するための図である。 第2の比較例を説明するための図である。 各実施形態に係る装置およびシステムを実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。
(本開示にかかる実施形態の概要)
 本開示の実施の形態の説明に先立って、本開示にかかる実施の形態の概要について説明する。なお、以下、本開示の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。また、以下の説明において、使用されるインデックス(英文字)は、本明細書全体で共通のものとは限らない。例えば、インデックスiは、ある文脈と別の文脈とにおいて、異なるものを意味することがある。
 まず、認証暗号(AE)の基本的な入出力について説明する。なお、以下の説明では、秘密鍵Kを共有する2者としてAliceとBobとの間の通信を考え、AliceからBobへ認証暗号による暗号化を行ったメッセージを通信するものとする。
 認証暗号の暗号化関数をEncとし、復号関数をDecとする。また、暗号化したい平文をMとし、さらにナンス(Nonce(ノンス))と呼ばれる変数N(初期ベクトル)を導入する。また、関連データ(Associated Data;AD)をAとする。ここで、関連データA(ヘッダ)は、暗号化は行われないが改ざん検知は行われる値である。
 まず、Alice側の暗号化処理について説明する。Aliceは、ナンスNを生成後、(C,T)=Enc_K(N,A,M)で表される処理を実行する。ここで、Enc_Kは、秘密鍵である鍵Kをパラメータとした暗号化関数であり、Cは暗号文である。また、Tは、タグ(認証タグ)と呼ばれる、固定長の改ざん検出用の変数である。Aliceは、ナンスN、関連データA、暗号文C及びタグTの組(N,A,C,T)を、Bobに送信する。
 次に、Bob側の復号処理について説明する。Bobが受信した情報を(N’,A’,C’,T’)とする。この場合、Bobは、復号処理としてDec_K(N’,A’,C’,T’)を実行する。なお、Dec_Kは、鍵Kをパラメータとした復号関数である。通信の途中で第三者Eveによる改ざんがあり、(N’,A’,C’,T’)≠(N,A,C,T)である場合、Dec_K(N’,A’,C’,T’)について、改ざんがあったことを示すエラーメッセージ(エラーシンボル⊥)が出力される。つまり、この場合、改ざんが検出される。一方、通信の途中で改ざんがなく、(N’,A’,C’,T’)=(N,A,C,T)である場合、Dec_K(N’,A’,C’,T’)について、Aliceが暗号化した平文Mが正しく復号される。
 また、上記の処理においては、通常、暗号化においてナンスNが過去の値と偶然一致してしまわないようにすることが重要である。このために、暗号化側では、カウンタなどの何らかの状態変数を用いて、ナンスの一致を防ぐ。すなわち、典型的には、状態変数として直前に使ったNを記憶しておき、毎回Nをインクリメントすることで、ナンスNが過去の値と重複しないことが、実現される。
 また、非特許文献1では、暗号化と復号の際に、Tweak(トウィーク)と呼ばれる公開調整値(補助変数)を導入するTweakableブロック暗号(Tweakable Block Cipher;TBC)と呼ばれるブロック暗号を用いている。つまり、TBCでは、ブロック暗号の入力にTweakを含めた鍵付き置換を行っている。そして、Tweakが異なるTBCは、それぞれ独立なブロック暗号とみなすことができる。
 ここで、TweakをTwとすると、TBC関数は、以下の式1のように表される。
Figure JPOXMLDOC01-appb-M000001
・・・(1)
 なお、以降の説明において、式1の左辺(TBC関数)を、「E_K^Tw(M)」、「E Tw~(M)」、又は、単に「E 」又は「E_K」などと表記することがある。
 図1は、比較例にかかる認証暗号化装置80の構成を示す図である。図1は、非特許文献1にかかるPFBωにおける暗号化方式を用いて実現された認証暗号化装置80の構成を示している。また、図1は、比較例にかかる認証暗号化装置80の演算の概略を示す図である。
 比較例にかかる認証暗号化装置80は、AD処理部82と、暗号化部84と、計算部86と、タグ生成部88とを有する。なお、便宜上、図1において、計算部86は、前段部86aと後段部86bとに分離して描かれているが、計算部86は、一体であってもよい。つまり、計算部86は、前段部86aと後段部86bとが連続して構成されてもよい。
 AD処理部82は、関連データ(AD)を処理する。AD処理部82には、関連データAが入力される。AD処理部82は、入力された関連データAを、それぞれbビットの長さのブロック(A_1,・・・,A_a)に分割する。つまり、関連データ(AD)ブロックA_1,・・・,A_aそれぞれのデータ長はbビットである。なお、aはADブロックの数を示す。AD処理部82は、各ADブロックを、鍵K及びTweakが入力されたTBC関数を用いて処理する。
 具体的には、AD処理部82は、初期値Z_0(Z)として0^b(0)を設定する。ここで、0^bは、bビットのオールゼロを示す。AD処理部82は、初期値0^b(=Z_0)と1ブロック目のADブロックA_1との排他的論理和(XOR)により得られた値を、TBC関数E で暗号化する。これにより、TBC関数E から、暗号化結果として、乱数であるZ_1が出力される。AD処理部82は、この出力された暗号化結果Z_1と2ブロック目のADブロックA_2との排他的論理和により得られた値を、TBC関数E で暗号化する。これにより、TBC関数E から、暗号化結果として、乱数であるZ_2が出力される。このように、AD処理部82は、出力された暗号化結果Z_iと次の(i+1)ブロック目のADブロックA_(i+1)との排他的論理和により得られた値を、TBC関数E で暗号化する、という処理を繰り返す。なお、1≦i≦aである。
 そして、AD処理部82は、最後のADブロックA_aと暗号化結果Z_(a-1)との排他的論理和により得られた値を、H_1として、暗号化部84に出力する。ここで、H_1は、bビットの値である。また、AD処理部82は、TBC関数による暗号化結果、つまりTBC関数の出力値である乱数Z_1,・・・,Z_(a-1)を、計算部86に出力する。なお、Zは、H_1を生成する際の途中で生成された値であるので、中間値であるとも言える。
 なお、TBC関数に入力されるTweakは、安全性上の理由により、図1に示すように、関連データAのブロックインデックスi(1≦i≦a)に対して、(0^n,i,0,0)のような形式である必要がある。なお、「0^n(0)」は、nビットのオールゼロを示す。また、nはナンスNのデータ長(ビット数)を示す。なお、複数のTBC関数に入力されるTweakは互いに異なるが、各TBC関数に入力されるTweakそれぞれは、異なる平文が暗号化処理される場合でも同じであり得る。つまり、各TBC関数に入力されるTweakそれぞれは定数であり得る。例えば、1番目のE に入力されるTweak(0,1,0,0)は、ある平文Maが暗号化処理される場合でも別の平文Mbが暗号化処理される場合でも、同じであり得る。また、これらのことは、後述する暗号化部84及びタグ生成部88におけるTBC関数に入力されるTweakについても、ナンスの値を除き、同様である。
 また、関連データAのデータ長は、bビットの倍数であるとする。なお、Tweakを増やせば、任意長(つまりbビットの倍数とならないような長さ)の関連データについてAD処理が可能となる。しかしながら、このことはこの分野の研究者にとっては自明なことなので、説明を省略する。このことは、後述する本実施の形態においても同様である。また、AEの入力として、関連データ(AD)が含まれない(空である)場合がある。その場合は、AD処理部82は必要ない。その場合は、図1の暗号化部84におけるH_1を0^bとすればよい。
 暗号化部84は、平文の暗号化を行う。暗号化部84には、ナンスN、平文M、及び、AD処理部82から出力されたH_1が入力される。暗号化部84は、入力された平文Mを、それぞれbビットの長さのブロック(M_1,・・・,M_m)に分割する。つまり、平文ブロックM_1,・・・,M_mそれぞれのデータ長はbビットである。なお、mは平文ブロックの数を示す。暗号化部84は、各平文ブロックを、鍵K、ナンスN及びTweakが入力されたTBC関数を用いて処理する。
 具体的には、暗号化部84は、初期値としてH_1を設定する。暗号化部84は、初期値H_1をTBC関数E で暗号化する。これにより、TBC関数E から、暗号化結果として、乱数であるZ_aが出力される。そして、暗号化部84は、この出力された暗号化結果Z_aと1つ目の平文ブロックM_1との排他的論理和により、暗号文ブロックC_1を得る。なお、Zは、暗号文ブロックを生成する際の途中で生成される値であるので、中間値であるとも言える。
 次に、暗号化部84は、平文ブロックM_1をTBC関数E で暗号化する。これにより、暗号化結果として、乱数であるZ_(a+1)が出力される。暗号化部84は、暗号化結果Z_(a+1)と2つ目の平文ブロックM_2との排他的論理和により、暗号文ブロックC_2を得る。このように、暗号化部84は、iブロック目の平文ブロックM_iの暗号化結果Z_(a+i)と次の(i+1)ブロック目の平文ブロックM_(i+1)との排他的論理和により、暗号文ブロックC_(i+1)を得る、という処理を繰り返す。なお、0≦i≦mである。
 そして、暗号化部84は、最後の平文ブロックM_mがTBC関数E で暗号化されたら、その暗号化結果Z_(a+m)を、T_1として、タグ生成部88に出力する。なお、T_1は、bビットの値であり、タグの一部となる。また、暗号化部84は、生成された暗号文ブロックC_1,・・・,C_mを、暗号文C=C_1||・・・||C_mとして出力する。ここで、「||」は、ビット列の連結を示す。また、暗号文Cは、平文Mと同じ長さ(ビット長)である。また、暗号化部84は、暗号化結果、つまりTBC関数の出力値である乱数Z_a,・・・,Z_(a+m)を、計算部86に出力する。
 なお、TBC関数に入力されるTweakは、安全性上の理由により、図1に示すような形式である必要がある。つまり、暗号化部84は、平文Mのブロックインデックスi(1≦i≦m)に対して、(N,a,i,0)をTweakとして入力するTBC関数の暗号化結果を用いてM_iを暗号化して、C_iを得る。なお、暗号化部84の最後に用いられるTBC関数(M_mを入力しT_1を得るもの)に入力されるTweakは、(N,a,m,1)である。また、上述したように、複数のTBC関数に入力されるTweakは互いに異なるが、各TBC関数に入力されるTweakそれぞれは、異なる平文が暗号化処理される場合でも、ナンスNの値を除き、同じであり得る。つまり、各TBC関数に入力されるTweakそれぞれは、ナンスNの値を除き、定数であり得る。なお、このことは、後述する実施の形態においても同様である。
 また、関連データと同様に、平文Mのデータ長は、bビットの倍数であるとする。なお、Tweakを増やせば、任意長(つまりbビットの倍数とならないような長さ)の平文について平文処理が可能となる。しかしながら、このことはこの分野の研究者にとって自明なことなので、説明を省略する。また、上述したように、関連データ(AD)がAEの入力に含まれない場合は、H_1を0^bとすればよい。
 計算部86は、AD処理部82及び暗号化部84で生成される乱数Z_1,・・・,Z_(a-1),Z_a,・・・,Z_(a+m)を受け付ける。つまり、AD処理部82及び暗号化部84におけるTBC関数の出力値は、全て、計算部86に入力される。そして、そして、計算部86は、これらの乱数と、所定の行列AM(Alpha Matrix)とを用いて、ω-1個の値を生成する。
 ここで、以下の式2に示すように、所定の行列AMは、所定の値α_(i,j)を要素とする、(ω-1)×(a+m)のサイズの行列である。ここで、ωは、所定のセキュリティレベルを示す値であり、3以上の整数である。また、ここでいうiは、行列AMの行数のインデックスであり、ラインのインデックスに対応する。なお、2≦i≦ωである。また、jは、行列AMの列数のインデックスであり、入力される乱数Zのインデックス、つまりブロックインデックスに対応する。なお、1≦j≦a+mである。
Figure JPOXMLDOC01-appb-M000002
・・・(2)
 計算部86は、以下の式3に示すようにして、行列AMを用いて乱数Z_1,・・・,Z_(a-1),Z_a,・・・,Z_(a+m)を処理して、H_2,・・・,H_ωを生成する。
Figure JPOXMLDOC01-appb-M000003
・・・(3)
 また、式3から、各ラインi(2≦i≦ω)に対して、以下の式4が成り立つ。
Figure JPOXMLDOC01-appb-M000004
・・・(4)
 ここで、行列AMの要素α_(i,j)は、有限体GF(2^b)の元である。また、行列AMの要素α_(i,j)は、bビットの特定の値である。また、α_(i,j)・Z_jの「・」は、有限体GF(2^b)上の乗算を意味し、図1では、円の中に「×」が描かれた記号で示されている。また、円の中に「+」が描かれた記号は、排他的論理和(XOR)を示す。
 つまり、計算部86は、ω-1個のラインi(2≦i≦ω)それぞれについて、乱数Z_jとα_(i,j)との乗算値の排他的論理和を行うことによって、H_iを算出する。なお、比較例(非特許文献1)では、高い安全性を得るため、乱数Z_jを1個からω-1個に拡大している。したがって、ωは、拡大数を意味するとも言える。ここで、H_2,・・・,H_ωは、それぞれbビットの値であり、タグ生成処理に用いられる。そして、計算部86は、得られたH_2,・・・,H_ωを、タグ生成部88に出力する。なお、式2に示した所定の行列AMは、安全性上の理由により、特定の条件を満たす必要がある。詳しくは後述する。
 タグ生成部88は、タグTを生成する。タグ生成部88には、暗号化部84からT_1が入力され、計算部86からH_2,・・・,H_ωが入力される。さらに、タグ生成部88には、ナンスNが入力される。タグ生成部88は、T_1を、そのままタグの一部として出力する。また、タグ生成部88は、H_2,・・・,H_ωを、それぞれ、鍵K、ナンスN及び定数であるTweakが入力されたTBC関数を用いて暗号化する。これにより、暗号化結果として、T_2,・・・,T_ωが得られる。そして、タグ生成部88は、それらの暗号化結果をタグとして出力する。つまり、タグ生成部88は、T_1,・・・,T_ωを、タグT=T_1||・・・||T_ωとして出力する。
 なお、TBC関数に入力されるTweakは、安全性上の理由により、図1に示すような形式である必要がある。つまり、タグ生成部88は、Hのインデックスi(2≦i≦ω)に対して、(N,a,m,i)をTweakとして入力するTBC関数の暗号化結果を用いてH_iを暗号化して、T_iを得る。また、上述したように、複数のTBC関数に入力されるTweakは互いに異なるが、各TBC関数に入力されるTweakそれぞれは、異なる平文が暗号化処理される場合でも、ナンスNの値を除き、同じであり得る。つまり、各TBC関数に入力されるTweakそれぞれは、ナンスNの値を除き、定数であり得る。
 ここで、比較例にかかる問題点について説明する。比較例にかかる認証暗号処理(AE)では、安全性上の制限により、一度に処理できるADブロック数と平文ブロック数との合計が(2^b-1)個以下である必要がある。なお、関連データの入力がない場合、安全性上の制限により、一度に処理できる平文ブロック数は、(2^b-2)個以下である必要がある。すなわち、安全性上の制限により、ADブロック数と平文ブロック数との合計又は平文ブロック数の合計が上記の条件を満たさないと、式2に示したα_ijの行列AMの、以下に説明する条件を満たすことができなくなるからである。
 すなわち、行列AMは、MDS(Maximum Distance Separable)行列でなければならない。つまり、行列AMの小行列で正方行列となるものが、全て正則である必要がある。ここで、「小行列」とは、行列から特定の行(単数でも複数でもよい)及び特定の列(単数でも複数でもよい)を取り除くことでできる行列のことである。そして、行列AMが上記条件を満たさない場合の安全性は、現在、知られていない。したがって、行列AMは、MDS行列であることが必要である。
 なお、行列AMについて、列数が2^b-1を超えるとき、上記条件を満たすような行列は存在しないことが数学的に証明できる。ここで、「2^b-1」というのは、有限体GF(2^b)の乗法群の元の個数(つまり0以外のbビット値の個数)である。したがって、a+m≦2^b-1でなければならない。なお、関連データ(AD)が空の場合、AD処理と暗号化処理との違いのため、以下に説明するように、m≦2^b-2である必要がある。
 すなわち、関連データが空でない場合、a個のADブロックの関連データAを処理するためには、式2の行列AMについて、列数をa-1とする行列AMを準備する必要がある。なぜならば、図1に示すように、TBC関数の前後で、ADブロックを処理できるからである。つまり、1つ目のTBC関数の処理の前で1つ目のADブロックA_1が処理され、そのTBC関数の後で2つ目のADブロックA_2が処理される。また、2つ目のTBC関数の処理の前で2つ目のADブロックA_2が処理され、そのTBC関数の後で3つ目のADブロックA_3が処理される。以後、これを繰り返して、最終的には、a-1番目のTBC関数の処理の前でa-1番目のADブロックA_(a-1)が処理され、そのTBC関数の後でa番目つまり最後のADブロックA_aが処理される。
 また、m個の平文ブロックの平文Mを処理するためには、図1に示すように、式2の行列AMについて、列数をm+1とする行列AMを準備する必要がある。なぜならば、図1に示すように、m番目のTBC関数とm番目(つまり最後)の平文ブロックM_mとを用いて暗号文ブロックC_mを生成して、さらにそのm番目の平文ブロックM_mをm+1番目のTBC関数で処理する必要があるからである。これより、関連データが空でない場合は、(a-1)+(m+1)≦2^b-1、つまりa+m≦2^b-1である必要がある。つまり、式2の行列AMにおいて、a+m≦2^b-1であれば、比較例(非特許文献1)にかかるPFBωにおいても、AE処理が可能である。一方、関連データが空である場合、m+1≦2^b-1、つまりm≦2^b-2である必要がある。つまり、式2の行列AMにおいて、m≦2^b-2であれば、比較例(非特許文献1)にかかるPFBωにおいても、AE処理が可能である。
 このように、比較例(非特許文献1)にかかるPFBωでは、一度に処理できるブロック数(平文ブロック数、又はADブロック数と平文ブロック数との合計)に制限がある。ここで、PFBωでは、上述したように、ωbビットという比較的高い安全性を実現できる。したがって、理想的には、1回のAE処理における入力について、処理可能な平文長は、2^(ωb)ブロック程度の長さであることが望ましい。しかしながら、PFBωでは、入力ブロック数の制限が、bビット安全性のAEの場合と同じとなってしまっており、効率が悪い。
 これに対し、本実施の形態にかかる認証暗号では、以下に説明するように、高い安全性を実現しつつ、一度の認証暗号において処理できる平文ブロックの数を増やすことが可能である。つまり、本実施の形態にかかる認証暗号では、bビット入出力TBC関数を用いて、bビットより大きな安全性を実現し、かつ(2^b-1)個以上のブロック数を処理することが可能である。なお、本実施の形態では、2bビット安全性より大きな安全性レベルを対象とできる。
(実施の形態1)
 以下、実施の形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。なお、実施の形態1にかかる認証暗号方法は、上述した比較例(非特許文献1)にかかるPFBωを改良した構成に対応する。
 図2は、実施の形態1にかかる認証暗号システム1の構成を示す図である。認証暗号システム1は、認証暗号化装置10と、認証復号装置20とを有する。認証暗号化装置10及び認証復号装置20は、物理的に一体であってもよいし、別個であってもよい。認証暗号化装置10及び認証復号装置20が物理的に互いに別個である場合、認証暗号化装置10及び認証復号装置20は、有線又は無線を介して通信可能に接続されている。また、後述する認証暗号化装置10の構成要素が、互いに別の装置で実現されてもよい。同様に、後述する認証復号装置20それぞれの構成要素が、互いに別の装置で実現されてもよい。
 なお、以下の説明では、特に断りのない限り、関連データA、平文M又は暗号文C等を分割して得られた複数のブロックのうちの1ブロックの長さを、所定長であるbビットとする。また、上述したAliceとBobとの間の通信の例において、認証暗号化装置10はAliceに対応し、認証復号装置20はBobに対応する。つまり、認証暗号化装置10及び認証復号装置20との間で通信が行われる。
<認証暗号化装置>
 図3は、実施の形態1にかかる認証暗号化装置10の構成を示す図である。図3に示すように、認証暗号化装置10は、入力部100と、分割部102と、ナンス生成部104と、AD処理部110と、暗号化部120と、乱数計算部130と、乱数暗号化部140と、タグ生成部150と、出力部160とを有する。
 認証暗号化装置10は、例えばコンピュータ等の情報処理装置によって実現可能である。つまり、認証暗号化装置10は、CPU(Central Processing Unit)などの演算装置と、メモリ又はディスクなどの記憶装置とを有している。認証暗号化装置10は、例えば、記憶装置に格納されたプログラムを演算装置が実行することで、上記の各構成要素を実現する。このことは、後述する他の実施の形態においても同様である。
 入力部100は、入力手段としての機能を有する。分割部102は、分割手段としての機能を有する。ナンス生成部104は、ナンス生成手段としての機能を有する。AD処理部110は、関連データ処理手段としての機能を有する。暗号化部120は、暗号化手段としての機能を有する。乱数計算部130は、乱数計算手段(計算手段)としての機能を有する。乱数暗号化部140は、乱数暗号化手段としての機能を有する。タグ生成部150は、タグ生成手段としての機能を有する。出力部160は、出力手段としての機能を有する。
 入力部100は、暗号化の対象となる平文M、及び関連データAの入力を受け付ける。入力部100は、例えば、キーボードなどの入力装置により実現されてもよい。入力部100は、例えば、ネットワークを介して接続された外部装置などから、平文M及び関連データAの入力を受け付けてもよい。なお、関連データAが存在しない場合もあり、この場合は、関連データAは入力されない。入力部100は、平文M及び関連データAを、分割部102に出力する。
 分割部102は、平文M及び関連データAそれぞれを、所定長のブロックに分割する。具体的には、分割部102は、平文Mを、それぞれbビットの平文ブロックM_1,・・・,M_mに分割する。なお、mは、平文ブロックの数である。分割部102は、平文ブロックM_1,・・・,M_mを、暗号化部120に出力する。また、分割部102は、関連データAを、それぞれbビットの長さのADブロックA_1,・・・,A_aに分割する。なお、aは、ADブロックの数である。分割部102は、ADブロックA_1,・・・,A_aを、AD処理部110に出力する。
 また、分割部102は、分割されたADブロックA_1,・・・,A_a及び平文ブロックM_1,・・・,M_mを、それぞれブロック数(2^b-2)個の区域(グループ)に区分けする。つまり、1つの区域には、(2^b-2)個のブロックが含まれることとなる。ここで、各区域を、区域#1,・・・,区域#βとする。ここで、βは、区域数である。区域#kは、k番目の区域を示す。なお、1≦k≦βである。このとき、分割部102は、データ列D=A_1||・・・||A_a||M_1||・・・||M_mを、データ列の先頭のブロックから、区域#1,区域#2,・・・,区域#βの順に区分けされるように、各区域に区分けしてもよい。
 具体的には、分割部102は、区域#1に全てのADブロックA_1,・・・,A_aが含まれるように、区分けを行う。そして、a<2^b-2の場合、分割部102は、m’個の平文ブロックが区域#1に含まれるように、区分けを行う。ここで、m’は区域#1(1区域目)に含まれる平文ブロックの数である。そして、m’は、a+m’=2^b-2を満たす。そして、実施の形態1では、m>m’であることに留意されたい。
 そして、分割部102は、残りの(m-m’)個の平文ブロックを、区域#2~区域#βに区分けする。以後、特に言及しない限り、a<2^b-2であるとして説明する。なお、βは、ADブロックの数a及び平文ブロックの数m、及び、2^b-2の値(つまりbの値)に応じて決まる値である。すなわち、(a+m)mod(2^b-2)=0である場合、βは、除算(a+m)/(2^b-2)の商に対応する。一方、(a+m)mod(2^b-2)≠0である場合、βは、除算(a+m)/(2^b-2)の商に1を加算した値に対応する。
 なお、a=2^b-2の場合、区域#1に区分けされる(2^b-2)個のブロックは、全て、ADブロックとなる。そして、分割部102は、区域#2に、データ列D=M_1||・・・||M_mの先頭のブロックから(2^b-2)個の平文ブロックを区分けする。
 また、a>2^b-2の場合、区域#1に区分けされる(2^b-2)個のブロックは、全て、ADブロックとなる。そして、残りのADブロックが、区域#2に区分けされる。そして、全てのADブロックA_1,・・・,A_aが区域#1及び区域#2に区分けされた場合、区域#2に区分けされたADブロックと平文ブロックとの合計が(2^b-2)個となるように、区域#2に平文ブロックが区分けされる。ここで、区域#2に区分けされる平文ブロックの数をm’’とすると、a+m’’=2×(2^b-2)である。なお、区域#1及び区域#2にADブロックが区分けされてもなお全てのADブロックの区分けが完了しない場合、さらに、同様にして、区域#3に、ADブロックが区分けされる。
 なお、関連データが空の場合、分割部102は、データ列D=M_1||・・・||M_mを、データ列の先頭から区域#1,区域#2,・・・,区域#βの順に区分けされるように、各区域に区分けする。このとき、区域#1に区分けされた平文ブロックの数をm’とすると、m’=2^b-2となる。
 なお、区域#kに区分けされた平文ブロックのビット列を「区域平文ブロックM[k]」とすると、平文Mは、M=M[1]||M[2]||・・・||M[β]とも表記され得る。このとき、少なくともM[1]及びM[β]以外の区域平文ブロックM[k]に含まれる平文ブロックの数は、(2^b-2)個となる。また、関連データが空の場合、区域平文ブロックM[1]に含まれる平文ブロックの数も、(2^b-2)個となる。
 ここで、ブロック数(2^b-2)個の区域にブロック(ADブロック及び平文ブロック)を区分けすることによって、後述するように、比較例にかかるPFBωの手法を用いて、1つの区域ごとに暗号化及び乱数計算を行うことができる。これにより、PFBωにおいて問題となるブロック数の制限によらないで、PFBωにおける安全性を実現することが可能となる。
 なお、上記では、関連データが空でない場合はa+m≦2^b-1である必要があり、関連データが空である場合はm≦2^b-2である必要があると述べた。しかしながら、処理の複雑さを抑制するため、実施の形態1では、1つの区域ごとのブロック数を(2^b-2)個とする。したがって、実施の形態1では、後述するように、(2^b-2)個のブロック(区域)ごとに暗号化及び乱数計算を行う。これにより、実施の形態1では、a+m>2^b-1であっても、平文Mに対して一度に認証暗号を行うことができる。詳しくは後述する。
 ナンス生成部104は、過去の値と重複がないようにナンスNを生成する。つまり、ナンス生成部104は、過去に生成された値とは異なるナンスNを生成する。具体的には、例えば、ナンス生成部104は、最初に任意の固定値を出力する。また、ナンス生成部104は、直前に生成したナンスの値を記憶している。そして、ナンス生成部104は、2回目以降にナンスNを生成する際に、記憶された直前の値に1を加えた値を出力する。このように、ナンス生成部104は、1つ前に既に出力した値に1を加えた値を出力することで、過去に生成した値とは異なるナンスNを生成してもよい。なお、ナンス生成部104は、過去に生成した値とは異なる値を生成可能ならば、上述した例とは異なる方法でナンスを生成してもよい。ナンス生成部104は、生成されたナンスNを、暗号化部120、乱数暗号化部140及びタグ生成部150に出力する。また、ナンス生成部104は、生成されたナンスNを、出力部160に出力してもよい。
 AD処理部110は、図1に示したAD処理部82と同様に、関連データAを処理する。つまり、AD処理部110は、ADブロックA_1,・・・,A_aを、鍵K及びTweakが入力されたTBC関数を用いて処理する。このとき、AD処理部110は、上述した区域ごとに、ADブロックを処理する。なお、a<2^b-2であれば、AD処理部110の処理は、AD処理部82の処理と実質的に同様となる。AD処理部110は、H_1を暗号化部120に出力する。また、AD処理部110は、TBC関数の出力値である乱数Z_1,・・・,Z_(a-1)を乱数計算部130に出力する。
 なお、AD処理部110において用いられるTBC関数それぞれに入力されるTweakは、AD処理部82において用いられるTBC関数それぞれに入力されるTweakと異なり得る。詳しくは後述する。
 暗号化部120は、図1に示した暗号化部84と同様に、平文Mを処理する。つまり、暗号化部120は、平文ブロックM_1,・・・,M_mを、鍵K及びTweakが入力されたTBC関数を用いて処理する。そして、暗号化部120は、平文ブロックと、この平文ブロックの前の平文ブロックをTBC関数を用いて暗号化して得られた暗号化結果との排他的論理和によって、暗号文ブロックを生成する。このとき、暗号化部120は、上述した区域ごとに、平文ブロック(平文)を暗号化する。つまり、暗号化部120は、区域#1に含まれる平文ブロックについて、暗号化部84と同様に暗号化を行う。そして、暗号化部120は、区域#2に含まれる平文ブロックについて、暗号化部84と同様に暗号化を行う。以降、暗号化部120は、区域#kに含まれる平文ブロックについて、暗号化部84と同様に暗号化を行う。つまり、暗号化部120は、区域#kに含まれる区域平文ブロックM[k]について、暗号化を行う。
 暗号化部120は、生成された暗号文ブロックC_1,・・・,C_mを、暗号文C=C_1||・・・||C_mとして、出力部160に出力する。また、暗号化部120は、区域#kに含まれる区域平文ブロックM[k]について暗号化を行って、区域暗号文ブロックC[k]を得る。ここで、区域暗号文ブロックC[k]は、区域平文ブロックM[k]と同じブロック数の暗号文ブロックから構成される。暗号化部120は、各区域で得られた乱数Z(TBC関数の出力値)を、乱数計算部130に出力する。
 また、暗号化部120は、最後の区域#β以外の各区域において、最後の平文ブロックがTBC関数で処理されて得られた暗号化結果Zを、乱数S_1として、乱数暗号化部140に出力する。なお、この乱数S_1は、乱数暗号化部140で暗号化され、次の区域における暗号化部120の処理の初期値となる。また、暗号化部120は、最後の区域#βにおいて、最後の平文ブロックがTBC関数で処理されて得られた暗号化結果Zを、乱数S_1として、タグ生成部150に出力する。暗号化部120の処理の詳細については、後述する。
 なお、暗号化部120において用いられるTBC関数それぞれに入力されるTweakは、暗号化部84において用いられるTBC関数それぞれに入力されるTweakと異なり得る。詳しくは後述する。なお、区域ごとに行われるAD処理及び暗号化処理等で用いられるTBC関数に入力されるTweakを互いに区別するため、実施の形態1にかかるTweakの桁数は、比較例にかかるTweakの桁数よりも多くなっている。つまり、比較例では、1つの区域のみの処理が実行されるのに対し、実施の形態1では、複数の区域について処理が実行されるので、その分、Tweakを区別するために桁数を多くする必要がある。
 乱数計算部130は、図1に示した計算部86と同様に、AD処理部110及び暗号化部120で生成される乱数Zと、所定の行列AMとを用いて、タグを生成するための値(乱数)を計算する。なお、実施の形態1にかかる行列AMを、以下の式5に示す。ここで、行列AMは、所定の値α_(i,j)を要素とする、(ω-1)×(2^b-1)のサイズの行列である。
Figure JPOXMLDOC01-appb-M000005
・・・(5)
 乱数計算部130は、区域ごとに、乱数Sを計算する。具体的には、乱数計算部130は、区域ごとに、AD処理部110及び暗号化部120で生成される乱数Zと、所定の行列AMとを用いて、ω-1個の乱数Sの組(S_2,・・・,S_ω)を生成する。ここで、後述するように、乱数Sの組は、次の区域における処理の初期値を生成するために使用される。また、最後の区域における処理で生成された乱数Sの組は、タグTを生成するために使用される。乱数計算部130は、各区域において、ω-1個のラインi(2≦i≦ω)それぞれについて、乱数Z_jとα_(i,j)との乗算値の排他的論理和を行うことによって、S_iを算出する。
 つまり、乱数計算部130は、各区域#kにおいて、以下の式6に示すように、行列AMを用いて乱数Z_1^(k),・・・,Z_(2^b-1)^(k)を処理して、乱数の組S_2^(k),・・・,S_ω^(k)を生成する。つまり、乱数計算部130は、各区域#kについて、式5に示した同じ行列AMを用いて、乱数の組を生成する。ここで、kは、区域数のインデックスである。
Figure JPOXMLDOC01-appb-M000006
・・・(6)
 なお、式6から、i(2≦i≦ω)に対して、以下の式7が成り立つ。
Figure JPOXMLDOC01-appb-M000007
・・・(7)
 ここで、乱数計算部130は、区域ごとに、Zとαとの乗算値の排他的論理和の各ラインの初期値を、後述する乱数暗号化部140で暗号化された、前の区域で生成された乱数の組とする。詳しくは後述する。乱数計算部130は、最後の区域#β以外の各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、乱数暗号化部140に出力する。また、乱数計算部130は、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、タグ生成部150に出力する。なお、上述したように、各区域#kにおける乱数S_1^(k)については、暗号化部120によって生成され、乱数暗号化部140又はタグ生成部150に出力される。乱数計算部130の処理の詳細については後述する。
 乱数暗号化部140は、ナンスNを用いて、最後の区域#β以外の各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を暗号化する。具体的には、乱数暗号化部140には、ナンス生成部104からナンスNが入力される。乱数暗号化部140は、各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、ナンスNを含むTweak及び鍵Kが入力されたTBC関数を用いて暗号化する。
 そして、乱数暗号化部140は、乱数の組S_1^(k),・・・,S_ω^(k)を暗号化して得られた暗号化結果を、次の区域#(k+1)における処理の初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(k)は、次の区域#(k+1)において暗号化部120の処理の初期値となる。また、暗号化された乱数S_2^(k),・・・,S_ω^(k)は、次の区域#(k+1)において乱数計算部130の処理における各ラインi(2≦i≦ω)の初期値となる。乱数暗号化部140の具体的な処理については後述する。
 タグ生成部150は、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)と、ナンスNとを用いて、認証用のタグTを生成する。具体的には、タグ生成部150には、ナンス生成部104からナンスNが入力される。タグ生成部150は、ナンスNを用いて、区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を暗号化する。つまり、タグ生成部150は、区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、ナンスNを含むTweak及び鍵Kが入力されたTBC関数を用いて暗号化する。タグ生成部150は、乱数の組S_1^(β),・・・,S_ω^(β)を暗号化することによって、暗号化結果であるタグT[1],・・・,T[ω]を得る。タグ生成部150の具体的な処理については後述する。
 図4は、実施の形態1にかかる認証暗号化装置10の乱数暗号化部140及びタグ生成部150の処理を説明するための図である。なお、説明の明確化のため、図4では、関連データを空としている。上述したように、認証暗号化装置10は、平文Mの平文ブロックを、区域#1,区域#2,・・・区域#βにそれぞれ対応する区域平文ブロックM[1],M[2],・・・,M[β]に区分けする。なお、上述したように、区域平文ブロックM[k]それぞれには、(2^b-2)個の平文ブロックが含まれる。
 そして、暗号化部120及び乱数計算部130は、区域#1について、入力されたナンスN及び区域平文ブロックM[1]を用いて、区域暗号文ブロックC[1]、及び、乱数の組S_1^(1),・・・,S_ω^(1)を生成する。乱数暗号化部140は、区域#1について生成された乱数の組S_1^(1),・・・,S_ω^(1)を暗号化する。そして、乱数暗号化部140は、暗号化された乱数の組S_1^(1),・・・,S_ω^(1)を、次の区域#2における初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(1)は、次の区域#2において暗号化部120の処理の初期値となる。また、暗号化された乱数S_2^(1),・・・,S_ω^(1)は、次の区域#2において乱数計算部130の処理における各ラインの初期値となる。
 また、暗号化部120及び乱数計算部130は、区域#2について、入力されたナンスN及び区域平文ブロックM[2]を用いて、区域暗号文ブロックC[2]、及び、乱数の組S_1^(2),・・・,S_ω^(2)を生成する。このとき、暗号化部120及び乱数計算部130は、区域#2に対する処理において、S_1^(1),・・・,S_ω^(1)の暗号化結果を初期ステートとしている、乱数暗号化部140は、区域#2について生成された乱数の組S_1^(2),・・・,S_ω^(2)を暗号化する。そして、乱数暗号化部140は、暗号化された乱数の組S_1^(2),・・・,S_ω^(2)を、次の区域#3における初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(2)は、次の区域#3において暗号化部120の処理の初期値となる。また、暗号化された乱数S_2^(2),・・・,S_ω^(2)は、次の区域#3において乱数計算部130の処理における各ラインの初期値となる。
 以下同様にして、暗号化部120及び乱数計算部130は、区域#kそれぞれについて、入力されたナンスN及び区域平文ブロックM[k]を用いて、区域暗号文ブロックC[k]、及び、乱数の組S_1^(k),・・・,S_ω^(k)を生成する。このとき、暗号化部120及び乱数計算部130は、区域#kに対する処理において、S_1^(k-1),・・・,S_ω^(k-1)の暗号化結果を初期ステートとしている。乱数暗号化部140は、最後の区域#β以外の区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を暗号化する。そして、乱数暗号化部140は、区域#kにおいて暗号化された乱数の組S_1^(k),・・・,S_ω^(k)を、次の区域#(k+1)における初期値(初期ステート)とする。
 このとき、暗号化部120は、各区域それぞれについて、比較例にかかる暗号化部84の演算と実質的に同様の演算をサブルーチンとして用いて、処理を行うことができる。なお、このとき、Tweakを適切に設定する必要があることに留意されたい。また、乱数計算部130は、各区域それぞれについて、式5に示す行列AMを呼び出して、比較例にかかる計算部86の演算と実質的に同様の演算をサブルーチンとして用いて、処理を行うことができる。これらのことは、後述する認証復号装置20における復号処理においても同様である。
 そして、タグ生成部150は、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)と、ナンスNとを用いて、認証用のタグT[1],・・・,T[ω]を得る。ここで、後述するように、認証用のタグTは、乱数の組を、ナンスN及び平文ブロックの数m(平文長)を含むTweakを入力とするTBC関数で暗号化された暗号化結果である。したがって、タグTの組の安全性が確保されている。
 図5~図9は、実施の形態1にかかる認証暗号処理における演算の概略を示す図である。図5は、1区域目つまり区域#1についての、AD処理部110及び乱数計算部130の演算の概略を示す図である。また、図6は、1区域目つまり区域#1についての、暗号化部120及び乱数計算部130の演算の概略を示す図である。また、図7は、乱数暗号化部140の演算の概略を示す図である。また、図8は、2区域目つまり区域#2についての、暗号化部120及び乱数計算部130の演算の概略を示す図である。また、図9は、タグ生成部150の演算の概略を示す図である。なお、便宜上、図5及び図6において、乱数計算部130は、前段部130aと後段部130bとに分離して描かれているが、乱数計算部130は、一体であってもよい。つまり、乱数計算部130は、前段部130aと後段部130bとが連続して構成されてもよい。実際に、図8では、乱数計算部130は、一体に描かれている。
 図5に示すように、AD処理部110は、区域#1について、ADブロックA_1,・・・,A_aに対して、図1に示したAD処理部82と実質的に同様の処理を行う。そして、AD処理部110は、暗号化結果、つまりTBC関数の出力値である乱数Z_1^(1),・・・,Z_(a-1)^(1)を、乱数計算部130に出力する。なお、上述したように、Z_j^(k)のkは、区域数のインデックスである。つまり、乱数Z_1^(1)の「(1)」は、区域#1(1区域目)において生成された乱数であることを示す。また、AD処理部110は、最後のADブロックA_aと暗号化結果Z_(a-1)^(1)との排他的論理和により得られた値を、H_1として、暗号化部120に出力する。なお、図5~図9の例では、a<2^b-2であるので、AD処理部110は、区域#1についてのみ、処理を行う。
 また、図6に示すように、暗号化部120は、区域#1について、平文ブロックM_1,・・・,M_mのうちのM_1,・・・,M_m’に対して、図1に示した暗号化部84と実質的に同様の処理を行う。そして、暗号化部120は、M_1,・・・,M_m’にそれぞれ対応する暗号文ブロックC_1,・・・,C_m’を得る。また、暗号化部120は、暗号化結果、つまりTBC関数の出力値である乱数Z_a^(1),・・・,Z_(a+m’)^(1)を、乱数計算部130に出力する。なお、暗号化部120は、区域#1における最後の平文ブロックM_m’を区域#1における最後のTBC関数で暗号化することにより、区域#1における最後の乱数Z_(a+m’)^(1)を得る。また、暗号化部120は、最後の平文ブロックM_m’がTBC関数で暗号化されたら、その暗号化結果Z_(a+m’)^(1)を、S_1^(1)として、乱数計算部130に出力する。
 ここで、上述したように、AD処理部110及び暗号化部120において用いられるTBC関数それぞれに入力されるTweakは、AD処理部82及び暗号化部84において用いられるTBC関数それぞれに入力されるTweakと異なる。AD処理部110において使用されるTBC関数に入力されるTweakは、関連データAのブロックインデックスi(1≦i≦a)に対して、(0^n,i,0,0,0)となる。また、暗号化部120において使用されるTBC関数に入力されるTweakは、平文Mのブロックインデックスi(1≦i≦m’)に対して、(N,a,i,0,0)となる。なお、区域#1について、暗号化部120の最後に用いられるTBC関数(M_m’を入力しS_1^(1)を得るもの)に入力されるTweakは、(N,a,m’,1,0)である。このようにTweakを設定することによって、あるTweakが他のTweakと一致することがなくなる。
 また、図5及び図6に示すように、乱数計算部130は、区域#1について、AD処理部110及び暗号化部120で生成される乱数Z_1^(1),・・・,Z_(a-1)^(1),Z_a^(1),・・・,Z_(a+m’)^(1)を処理する。つまり、乱数計算部130は、上記の式6により、式5に示した行列AMを用いて、乱数Z_1^(1),・・・,Z_(a-1)^(1),Z_a^(1),・・・,Z_(a+m’)^(1)を処理する。これにより、乱数計算部130は、区域#1についての乱数の組S_2^(1),・・・,S_ω^(1)を生成する。言い換えると、乱数計算部130は、乱数Z_1^(1),・・・,Z_(a+m’)^(1)それぞれと行列AMの対応する要素との乗算値の排他的論理和を計算することによって、乱数の組S_2^(1),・・・,S_ω^(1)を生成する。乱数計算部130は、区域#1について生成された乱数の組S_1^(1),・・・,S_ω^(1)を、乱数暗号化部140に出力する。
 ここで、上述したように、a+m’=2^b-2である。つまり、区域#1の最後の乱数Z_(a+m’)^(1)は、Z_(2^b-2)^(1)に対応する。したがって、区域#1については、上記の式6において、Z_(2^b-1)^(1)=0である。つまり、区域#1については、上記の式5に示す行列AMの最後の列(α_(2,2^b-1),・・・α_(ω,2^b-1))は、用いられない。つまり、区域#1においては、上記の式7の最後の排他的論理和では、0(=α_(i,2^b-1)・Z_(2^b-1)^(1))が排他的論理和される。このことは、後述する認証復号装置20における復号処理においても同様である。
 また、図7に示すように、乱数暗号化部140は、各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、それぞれ、ナンスNを含むTweakが入力されたTBC関数E ’を用いて暗号化する。乱数暗号化部140で用いられるTBC関数には、一度のみ用いられるTweakが入力される。図7において「E ’」の右上に、その関数E ’に入力されるTweakの例が示されている。図7の例では、乱数S_i^(k)を暗号化するTBC関数E ’に入力されるTweakは、ナンスN、区域#kのインデックスk、及びラインインデックスiを含む。例えば、乱数S_2^(1)を暗号化するTBC関数E ’に入力されるTweakは、ナンスN、区域#1のインデックス「1」、及びラインインデックス「2」を含む。TBC関数E ’を用いて暗号化された乱数の組S_1^(k),・・・,S_ω^(k)は、区域#(k+1)における処理の際に暗号化部120及び乱数計算部130に入力される。
 図8に示すように、乱数暗号化部140は、区域#1について生成された乱数の組S_1^(k),・・・,S_ω^(k)をTBC関数E ’を用いて暗号化する。そして、得られた暗号化結果は、区域#2における処理の際に暗号化部120及び乱数計算部130に入力される。
 ここで、TBC関数E ’は、図5~図6及び後述する図8~図9に記載されるどのTBC関数E に入力されるTweakとも異なるTweakが入力されるTBC関数である。また、TBC関数E ’に入力されるTweakは、ADブロック数a及び平文ブロック数mを含まないで、他のTBC関数E に入力されるTweakと異なるように設定される。なお、TBC関数E ’に入力されるTweakの形式は、TBC関数E に入力されるTweakの形式と異なってもよいし、同じであってもよい。例えば、S_i^(k)を暗号化するTBC関数E ’に入力されるTweakは、このTBC関数をTBC関数E の形式で記述すると仮定した場合、(N,k,i,0,0,1)としてもよい。一方、この場合、AD処理部110及び暗号化部120で用いられるTBC関数E に入力されるTweakは、(N,a,m’,0,0,0)のようにしてもよい。つまり、TBC関数E ’に入力されるTweakの最後の値が「1」であるのに対し、AD処理部110及び暗号化部120で用いられるTBC関数E に入力されるTweakの最後の値は「0」であってもよい。言い換えると、TBC関数E とTBC関数E ’とでは、入力されるTweakの最後の値が異なってもよい。したがって、Tweakの重複を避けることができる。
 また、図8に示すように、暗号化部120は、区域#2について、平文ブロックM_1,・・・,M_mのうち、M_m’から続く(2^b-2)個のM_(m’+1),・・・,M_(m’+2^b-2)に対して、区域#1と同様の処理を行う。ここで、暗号化部120は、区域#2については、乱数S_1^(1)を乱数暗号化部140で暗号化して得られた暗号化結果を初期値として、最初のTBC関数に入力する。つまり、区域#1で生成された乱数S_1^(1)を、ナンスN、区域#1のインデックス「1」及びラインインデックス「1」を含むTweakが入力されたTBC関数E ’によって暗号化して得られた暗号化結果が、初期値に対応する。
 そして、暗号化部120は、M_(m’+1),・・・,M_(m’+2^b-2)にそれぞれ対応する暗号文ブロックC_(m’+1),・・・,C_(m’+2^b-2)を得る。また、暗号化部120は、暗号化結果、つまりTBC関数の出力値である乱数Z_1^(2),・・・,Z_(2^b-1)^(2)を、乱数計算部130に出力する。なお、暗号化部120は、区域#2における最後の平文ブロックM_(m’+2^b-2)を区域#2における最後のTBC関数で暗号化することにより、区域#2における最後の乱数Z_(2^b-1)^(2)を得る。また、暗号化部120は、最後の平文ブロックM_(m’+2^b-2)がTBC関数で暗号化されたら、その暗号化結果Z_(2^b-1)^(2)を、S_1^(2)として、乱数計算部130に出力する。
 また、図8に示すように、乱数計算部130は、区域#2について、暗号化部120で生成される乱数Z_1^(2),・・・,Z_(2^b-1)^(2)を処理する。つまり、乱数計算部130は、上記の式6により、式5に示した行列AMを用いて、乱数Z_1^(2),・・・,Z_(2^b-1)^(2)を処理する。これにより、乱数計算部130は、区域#2についての乱数の組S_2^(2),・・・,S_ω^(2)を生成する。言い換えると、乱数計算部130は、乱数Z_1^(2),・・・,Z_(2^b-1)^(2)それぞれと行列AMの対応する要素との乗算値の排他的論理和を計算することによって、乱数の組S_2^(2),・・・,S_ω^(2)を生成する。
 ここで、乱数計算部130は、区域#2については、乱数S_i^(1)を乱数暗号化部140で暗号化して得られた暗号化結果を初期値として、各ラインiに入力する。つまり、区域#1で生成された乱数S_2^(1)を、ナンスN、区域#1のインデックス「1」及びラインインデックス「2」を含むTweakが入力されたTBC関数E ’によって暗号化して得られた暗号化結果が、ライン「2」の初期値に対応する。同様に、区域#1で生成された乱数S_ω^(1)を、ナンスN、区域#1のインデックス「1」及びラインインデックス「ω」を含むTweakが入力されたTBC関数E ’によって暗号化して得られた暗号化結果が、ライン「ω」の初期値に対応する。乱数計算部130は、区域#2について生成された乱数の組S_1^(2),・・・,S_ω^(2)を、乱数暗号化部140に出力する。
 ここで、上述したように、暗号化部120において用いられるTBC関数それぞれに入力されるTweakは、暗号化部84において用いられるTBC関数それぞれに入力されるTweakと異なる。区域#2において、暗号化部120において使用されるTBC関数に入力されるTweakは、平文Mのブロックインデックスi(m’+1≦i≦m’+2^b-2)に対して、(N,a,i,0,0)となる。なお、区域#2について、暗号化部120の最後に用いられるTBC関数(M_(m’+2^b-2)を入力しS_1^(2)を得るもの)に入力されるTweakは、(N,a,m’+2^b-2,1,0)である。これにより、区域#2におけるTBC関数それぞれに入力されるTweakは、区域#1におけるTBC関数それぞれに入力されるTweakとは異なることとなる。これらのことは、後述する認証復号装置20における復号処理においても同様である。
 なお、図5,図6,図8には、区域#1及び区域#2についての演算の概略が示されているが、区域#3以降についても、図8に示した区域#2と実質的に同様の演算がなされる。したがって、区域#3以降の具体的な処理の説明については省略する。なお、暗号化部120は、ある区域について処理を行うごとに、TBC関数を繰り返し呼び出して、平文ブロックを暗号化する。また、乱数計算部130は、ある区域について処理を行うごとに、前の区域について得られた乱数を暗号化して得られた暗号化結果を各ラインの初期値とし、式5に示した同じ行列AM(つまり同じ要素α)を繰り返し呼び出して、乱数の組を生成する。
 なお、暗号化部120において用いられるTBC関数それぞれに入力されるTweakは、図8を用いて上述した規則に従って設定される。つまり、各区域#kにおいて、1番目から(2^b-2)番目のTBC関数に入力されるTweakは、平文Mのブロックインデックスiに対して、(N,a,i,0,0)となる。なお、暗号化部120の最後(2^b-1番目)に用いられるTBC関数に入力されるTweakは、(N,a,i,1,0)である。なお、ここでは、iは平文ブロック数mのインデックスであるので、ある区域#kにおけるTBC関数それぞれに入力されるTweakは、別の区域におけるTBC関数それぞれに入力されるTweakとは異なることとなる。なお、最終の区域#βにおいて、平文ブロック数が2^b-2に満たない場合、その満たない分の乱数Z_(j)^(β)の値が0となる。これらのことは、後述する認証復号装置20における復号処理においても同様である。
 図9に示すように、タグ生成部150は、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、それぞれ、ナンスNとADブロック数aと平文ブロック数mとを含むTweakを用いて、認証用のタグTを生成する。ここで、タグ生成部150で用いられるTBC関数には、一度のみ用いられるTweakが入力される。図9において「E 」の右上に、その関数E に入力されるTweakの例が示されている。図9の例では、乱数S_i^(β)を暗号化するTBC関数E に入力されるTweakは、ナンスN、ADブロック数a、平文ブロック数m、区域#βのインデックス「β」、及びラインインデックスiを含む。このTBC関数E を用いて乱数S_i^(β)を暗号化することによって、タグT[i]が生成される。例えば、乱数S_1^(β)を暗号化するTBC関数E に入力されるTweakは、ナンスN、ADブロック数a、平文ブロック数m、区域#βのインデックス「β」、及びラインインデックス「1」を含む。このTBC関数E を用いて乱数S_1^(β)を暗号化することによって、タグT[1]が生成される。そして、タグ生成部150は、T[1],・・・,T[ω]を、タグT=T[1]||・・・||T[ω]として出力する。
 ここで、乱数暗号化部140ではTBC関数E ’が用いられているのに対し、タグ生成部150ではTBC関数E が用いられている。したがって、タグ生成部150において用いられるTBC関数E に入力されるTweakは、乱数暗号化部140で用いられるTBC関数に入力されるTweakとは異なることとなる。また、AD処理部110及び暗号化部120で用いられるTBC関数E に入力されるTweakとは異なり、タグ生成部150において用いられるTBC関数E に入力されるTweakは、区域数β及びラインインデックスiを含む。したがって、タグ生成部150において用いられるTBC関数E に入力されるTweakは、AD処理部110及び暗号化部120で用いられるTBC関数に入力されるTweakとは異なることとなる。したがって、Tweakの重複を避けることができる。これらのことは、後述する認証復号装置20における復号処理においても同様である。
 さらに、タグ生成部150において用いられるTBC関数E に入力されるTweakは、ADブロック数a及び平文ブロック数mを含んでいる。したがって、タグTの安全性を確保することができる。すなわち、ADブロック数a又は平文ブロック数mが異なる改ざん情報が攻撃者によって入力されたとしても、その改ざん情報を即座に却下できる(改ざんの検知を行うことができる)こととなる。したがって、タグTの改ざんが容易でないことは、明らかである。言い換えると、このTweakがADブロック数a及び平文ブロック数mを含むことによって、タグTの安全性の証明が容易となる。さらに言い換えると、乱数Sから安全にタグTを生成することができる。これらのことは、後述する認証復号装置20における復号処理においても同様である。また、これらのことは、後述する実施の形態2においても同様である。
 出力部160は、暗号文CとタグTとを出力するための制御を行う。このとき、出力部160は、暗号文CとタグTとを連結して出力するようにしてもよい。出力部160は、例えば、ディスプレイなどの出力装置に暗号文CとタグTとを表示させるための制御を行ってもよい。また、出力部160は、例えば、ネットワークを介して接続された外部装置などに対して、暗号文C及びタグTを出力するように制御を行ってもよい。また、出力部160は、ナンスN及び関連データAを出力するように制御を行ってもよい。例えば、出力部160は、(N,A,C,T)を、認証復号装置20に送信する。
<認証復号装置>
 図10は、実施の形態1にかかる認証復号装置20の構成を示す図である。図10に示すように、認証復号装置20は、入力部200と、分割部202と、AD処理部210と、復号部220と、乱数計算部230と、乱数暗号化部240と、タグ生成部250と、タグ検査部260とを有する。
 認証復号装置20は、例えばコンピュータ等の情報処理装置によって実現可能である。つまり、認証復号装置20は、CPUなどの演算装置と、メモリ又はディスクなどの記憶装置とを有している。認証復号装置20は、例えば、記憶装置に格納されたプログラムを演算装置が実行することで、上記の各構成要素を実現する。このことは、後述する他の実施の形態においても同様である。
 入力部200は、入力手段としての機能を有する。分割部202は、分割手段としての機能を有する。AD処理部210は、関連データ処理手段としての機能を有する。復号部220は、復号手段としての機能を有する。乱数計算部230は、乱数計算手段(計算手段)としての機能を有する。乱数暗号化部240は、乱数暗号化手段としての機能を有する。タグ生成部250は、タグ生成手段としての機能を有する。タグ検査部260は、タグ検査手段としての機能を有する。
 入力部200は、認証暗号化装置10から出力された、ナンスN、関連データA、復号の対象となる暗号文C、及びタグTの入力を受け付ける。入力部200は、例えば、キーボードなどの入力装置により実現されてもよい。入力部200は、例えば、ネットワークを介して接続された外部装置などから、ナンスN、関連データA、暗号文C及びタグTの入力を受け付けてもよい。なお、関連データAが存在しない場合もあり、この場合は、関連データAは入力されない。入力部200は、ナンスNを、復号部220、乱数暗号化部240及びタグ生成部250に出力する。また、入力部200は、暗号文C及び関連データAを、分割部202に出力する。また、入力部200は、タグTを、タグ検査部260に出力する。
 分割部202は、暗号文C及び関連データAそれぞれを、所定長のブロックに分割する。具体的には、分割部202は、暗号文Cを、それぞれbビットの暗号文ブロックC_1,・・・,C_mに分割する。なお、mは、暗号文ブロック(つまり平文ブロック)の数である。分割部202は、暗号文ブロックC_1,・・・,C_mを、復号部220に出力する。また、分割部202は、関連データAを、それぞれbビットの長さのADブロックA_1,・・・,A_aに分割する。分割部202は、ADブロックA_1,・・・,A_aを、AD処理部210に出力する。
 また、上述した分割部102と同様に、分割部202は、分割されたADブロックA_1,・・・,A_a及び暗号文ブロックC_1,・・・,C_mを、それぞれブロック数(2^b-2)個の区域(グループ)に区分けする。つまり、1つの区域には、(2^b-2)個のブロックが含まれることとなる。このとき、分割部202は、データ列D=A_1||・・・||A_a||C_1||・・・||C_mを、データ列の先頭のブロックから、区域#1,区域#2,・・・,区域#βの順に区分けされるように、各区域に区分けする。なお、区分けの方法は、上述した分割部102の場合と同様であってもよい。
 なお、区域#kに区分けされた暗号文ブロックのビット列を「区域暗号文ブロックC[k]」とすると、暗号文Cは、C=C[1]||C[2]||・・・||C[β]とも表記され得る。このとき、少なくともC[1]及びC[β]以外の区域暗号文ブロックC[k]に含まれる暗号文ブロックの数は、(2^b-2)個となる。また、関連データが空の場合、区域暗号文ブロックC[1]に含まれる暗号文ブロックの数も、(2^b-2)個となる。
 AD処理部210は、上述したAD処理部110と実質的に同様の処理を行う。つまり、AD処理部210は、ADブロックA_1,・・・,A_aを、鍵K及びTweakが入力されたTBC関数を用いて処理する。このとき、AD処理部210は、上述した区域ごとに、ADブロックを処理する。AD処理部210は、H_1を復号部220に出力する。また、AD処理部210は、TBC関数の出力値である乱数Z_1,・・・,Z_(a-1)を乱数計算部230に出力する。なお、AD処理部210において用いられるTBC関数それぞれに入力されるTweakは、上述したAD処理部110において用いられるTBC関数それぞれに入力されるTweakと、実質的に同様に設定されてもよい。
 復号部220は、上述した暗号化部120における暗号化処理に対応した復号処理を行う。復号部220は、暗号文ブロックC_1,・・・,C_mを、鍵K及びTweakが入力されたTBC関数を用いて処理する。このとき、復号部220は、上述した区域ごとに、暗号文ブロック(暗号文)を復号する。つまり、復号部220は、区域#1に含まれる暗号文ブロックについて、上述した暗号化部120における暗号化処理に対応した復号処理を行う。そして、復号部220は、区域#2に含まれる暗号文ブロックについて、上述した暗号化部120における暗号化処理に対応した復号処理を行う。以降、復号部220は、区域#kに含まれる暗号文ブロックについて、上述した暗号化部120における暗号化処理に対応した復号処理を行う。つまり、復号部220は、区域#kに含まれる区域暗号文ブロックC[k]について、復号を行う。
 復号部220は、生成された平文ブロックM_1,・・・,M_mを、平文M=M_1||・・・||M_mとして、タグ検査部260に出力する。また、復号部220は、区域#kに含まれる区域暗号文ブロックC[k]について復号を行って、区域平文ブロックM[k]を得る。なお、復号部220は、得られた平文を、平文M=M[1]||M[2]||・・・||M[β]として、タグ検査部260に出力してもよい。また、復号部220は、各区域で得られた乱数Z(TBC関数の出力値)を、乱数計算部230に出力する。
 また、復号部220は、最後の区域#β以外の各区域において、最後の暗号文ブロックがTBC関数で処理されて得られた暗号化結果Zを、乱数S_1として、乱数暗号化部240に出力する。なお、この乱数S_1は、乱数暗号化部240で暗号化され、次の区域における復号部220の処理の初期値となる。また、復号部220は、最後の区域#βにおいて、最後の暗号文ブロックがTBC関数で処理されて得られた暗号化結果Zを、乱数S_1として、タグ生成部250に出力する。復号部220の処理の詳細については、後述する。なお、復号部220において用いられるTBC関数それぞれに入力されるTweakは、上述した暗号化部120において用いられるTBC関数それぞれに入力されるTweakと、実質的に同様に設定されてもよい。
 乱数計算部230は、上述した乱数計算部130と同様に、AD処理部210及び復号部220で生成される乱数Zと、式5に示した所定の行列AMとを用いて、タグを生成するための乱数Sを計算する。このとき、乱数計算部230は、区域ごとに、乱数Sを計算する。具体的には、乱数計算部230は、区域ごとに、AD処理部210及び復号部220で生成される乱数Zと、所定の行列AMとを用いて、ω-1個の乱数Sの組(S_2,・・・,S_ω)を生成する。ここで、後述するように、乱数Sの組は、次の区域における処理の初期値を生成するために使用される。また、最後の区域における処理で生成された乱数Sの組は、検査用のタグTを生成するために使用される。乱数計算部230は、上述した乱数計算部130と同様に、各区域において、ω-1個のラインi(2≦i≦ω)それぞれについて、乱数Z_jとα_(i,j)との乗算値の排他的論理和を行うことによって、S_iを算出する。つまり、乱数計算部230は、各区域#kにおいて、上記の式6に示すように、行列AMを用いて乱数Z_1^(k),・・・,Z_(2^b-1)^(k)を処理して、乱数の組S_2^(k),・・・,S_ω^(k)を生成する。
 ここで、乱数計算部230は、区域ごとに、Zとαとの乗算値の排他的論理和の各ラインの初期値を、後述する乱数暗号化部240で暗号化された、前の区域で生成された乱数の組とする。詳しくは後述する。乱数計算部230は、最後の区域#β以外の各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、乱数暗号化部240に出力する。また、乱数計算部230は、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、タグ生成部250に出力する。なお、上述したように、各区域#kにおける乱数S_1^(k)については、復号部220によって生成され、乱数暗号化部240又はタグ生成部250に出力される。乱数計算部230の処理の詳細については後述する。
 乱数暗号化部240は、上述した乱数暗号化部140と同様に、ナンスNを用いて、最後の区域#β以外の各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を暗号化する。ここで、乱数暗号化部240の演算の内容は、図7に示したものと実質的に同様である。したがって、乱数暗号化部240は、各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、ナンスNを含むTweak及び鍵Kが入力されたTBC関数を用いて暗号化する。そして、乱数暗号化部240は、乱数の組S_1^(k),・・・,S_ω^(k)を暗号化して得られた暗号化結果を、次の区域#(k+1)における処理の初期値(初期ステート)とする。したがって、暗号化された乱数S_1^(k)は、次の区域#(k+1)において復号部220の処理の初期値となる。また、暗号化された乱数S_2^(k),・・・,S_ω^(k)は、次の区域#(k+1)において乱数計算部230の処理における各ラインi(2≦i≦ω)の初期値となる。
 タグ生成部250は、上述したタグ生成部150と同様に、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)と、ナンスNとを用いて、検査用のタグTを生成する。なお、タグTの生成方法については、タグ生成部150におけるタグTの生成方法と実質的に同様である。したがって、タグ生成部250は、図9に示した演算を行う。つまり、タグ生成部250は、区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、ナンスNを含むTweak及び鍵Kが入力されたTBC関数を用いて暗号化する。タグ生成部250は、乱数の組S_1^(β),・・・,S_ω^(β)を暗号化することによって、暗号化結果であるタグT[1],・・・,T[ω]を得る。そして、タグ生成部250は、T[1],・・・,T[ω]を、タグT=T[1]||・・・||T[ω]として、タグ検査部260に出力する。
 図11は、実施の形態1にかかる認証復号装置20の乱数暗号化部240及びタグ生成部250の処理を説明するための図である。なお、説明の明確化のため、図11では、関連データを空としている。上述したように、認証復号装置20は、暗号文Cの暗号文ブロックを、区域#1,区域#2,・・・区域#βにそれぞれ対応する区域暗号文ブロックC[1],C[2],・・・,C[β]に区分けする。なお、上述したように、区域暗号文ブロックC[k]それぞれには、(2^b-2)個の暗号文ブロックが含まれる。
 そして、復号部220及び乱数計算部230は、区域#1について、入力されたナンスN及び区域暗号文ブロックC[1]を用いて、区域平文ブロックM[1]、及び、乱数の組S_1^(1),・・・,S_ω^(1)を生成する。乱数暗号化部240は、区域#1について生成された乱数の組S_1^(1),・・・,S_ω^(1)を暗号化する。そして、乱数暗号化部240は、暗号化された乱数の組S_1^(1),・・・,S_ω^(1)を、次の区域#2に対する処理における初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(1)は、次の区域#2において復号部220の処理の初期値となる。また、暗号化された乱数S_2^(1),・・・,S_ω^(1)は、次の区域#2において乱数計算部230の処理における各ラインの初期値となる。
 また、復号部220及び乱数計算部230は、区域#2について、入力されたナンスN及び区域暗号文ブロックC[2]を用いて、区域平文ブロックM[2]、及び、乱数の組S_1^(2),・・・,S_ω^(2)を生成する。このとき、復号部220及び乱数計算部230は、区域#2に対する処理において、S_1^(1),・・・,S_ω^(1)の暗号化結果を初期ステートとしている、乱数暗号化部240は、区域#2について生成された乱数の組S_1^(2),・・・,S_ω^(2)を暗号化する。そして、乱数暗号化部240は、暗号化された乱数の組S_1^(2),・・・,S_ω^(2)を、次の区域#3に対する処理における初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(2)は、次の区域#3において復号部220の処理の初期値となる。また、暗号化された乱数S_2^(2),・・・,S_ω^(2)は、次の区域#3において乱数計算部230の処理における各ラインの初期値となる。
 以下同様にして、復号部220及び乱数計算部230は、区域#kそれぞれについて、入力されたナンスN及び区域暗号文ブロックC[k]を用いて、区域平文ブロックM[k]、及び、乱数の組S_1^(k),・・・,S_ω^(k)を生成する。このとき、復号部220及び乱数計算部230は、区域#kに対する処理において、S_1^(k-1),・・・,S_ω^(k-1)の暗号化結果を初期ステートとしている。乱数暗号化部240は、最後の区域#β以外の区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を暗号化する。そして、乱数暗号化部240は、区域#kにおいて暗号化された乱数の組S_1^(k),・・・,S_ω^(k)を、次の区域#(k+1)の対する処理における初期値(初期ステート)とする。そして、タグ生成部250は、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)と、ナンスNとを用いて、検査用のタグT[1],・・・,T[ω]を得る。
 タグ検査部260は、認証暗号化装置10によって生成された認証用のタグTと、タグ生成部250によって生成された検査用のタグTとを比較して、改ざんの有無を検査する。そして、タグ検査部260は、検査結果に基づいて、情報を出力するための制御を行う。なお、タグ検査部260は、例えば、ディスプレイなどの出力装置に情報を表示させるための制御を行ってもよい。また、タグ検査部260は、例えば、ネットワークを介して接続された外部装置などに対して、情報を出力するように制御を行ってもよい。
 具体的には、タグ検査部260は、認証用のタグTと検査用のタグTとが一致する場合に、認証が成功したとして、復号部220によって生成された平文M=M[1]||・・・||M[β]を出力するための制御を行う。一方、タグ検査部260は、認証用のタグTと検査用のタグTとが一致しない場合に、認証が失敗したとして、タグTとタグTとが一致しないことを示すエラーメッセージ⊥を出力するための制御を行う。
 図12~図13は、実施の形態1にかかる認証復号処理における演算の概略を示す図である。図12は、1区域目つまり区域#1についての、復号部220及び乱数計算部230の演算の概略を示す図である。なお、区域#1についてのAD処理部210の演算の概略については、図5記載されたものと実質的に同様であるので、図示を省略している。また、図13は、2区域目つまり区域#2についての、復号部220及び乱数計算部230の演算の概略を示す図である。
 図12に示すように、復号部220は、区域#1について、暗号文ブロックC_1,・・・,C_mのうちのC_1,・・・,C_m’に対して、復号処理を行う。具体的には、復号部220は、初期値としてH_1を設定する。復号部220は、初期値H_1をTBC関数E で暗号化する。これにより、TBC関数E から、暗号化結果として、乱数であるZ_a^(1)が出力される。そして、復号部220は、この出力された暗号化結果Z_aと1つ目の暗号文ブロックC_1との排他的論理和により、平文ブロックM_1を得る。
 次に、復号部220は、平文ブロックM_1をTBC関数E で暗号化する。これにより、暗号化結果として、乱数であるZ_(a+1)^(1)が出力される。復号部220は、暗号化結果Z_(a+1)^(1)と2つ目の暗号文ブロックC_2との排他的論理和により、平文ブロックM_2を得る。以降、復号部220は、暗号文ブロックC_iを用いて復号された平文ブロックM_iの暗号化結果Z_(a+i)と暗号文ブロックC_(i+1)との排他的論理和により、平文ブロックM_(i+1)を得る、という処理を繰り返す。
 そして、復号部220は、C_1,・・・,C_m’にそれぞれ対応する平文ブロックM_1,・・・,M_m’を得る。また、復号部220は、暗号化結果、つまりTBC関数の出力値である乱数Z_a^(1),・・・,Z_(a+m’)^(1)を、乱数計算部230に出力する。なお、復号部220は、区域#1における最後の平文ブロックM_m’を区域#1における最後のTBC関数で暗号化することにより、区域#1における最後の乱数Z_(a+m’)^(1)を得る。また、復号部220は、最後の平文ブロックM_m’がTBC関数で暗号化されたら、その暗号化結果Z_(a+m’)^(1)を、S_1^(1)として、乱数計算部230に出力する。
 また、図12に示すように、乱数計算部230は、区域#1について、復号部220で生成されるZ_a^(1),・・・,Z_(a+m’)^(1)を処理する。なお、図12には、AD処理部210については図示されていないが、図5と同様にして、乱数計算部230は、区域#1について、AD処理部210で生成される乱数Z_1^(1),・・・,Z_(a-1)^(1)を処理する。つまり、乱数計算部230は、上記の式6により、式5に示した行列AMを用いて、乱数Z_1^(1),・・・,Z_(a-1)^(1),Z_a^(1),・・・,Z_(a+m’)^(1)を処理する。これにより、乱数計算部230は、区域#1についての乱数の組S_2^(1),・・・,S_ω^(1)を生成する。言い換えると、乱数計算部230は、乱数Z_1^(1),・・・,Z_(a+m’)^(1)それぞれと行列AMの対応する要素との乗算値の排他的論理和を計算することによって、乱数の組S_2^(1),・・・,S_ω^(1)を生成する。乱数計算部230は、区域#1について生成された乱数の組S_1^(1),・・・,S_ω^(1)を、乱数暗号化部240に出力する。
 乱数暗号化部240は、図13に示すように、区域#1について生成された乱数の組S_1^(1),・・・,S_ω^(1)を、それぞれ、ナンスNを含むTweakが入力されたTBC関数E ’を用いて暗号化する。TBC関数E ’を用いて暗号化された乱数の組S_1^(1),・・・,S_ω^(1)は、区域#2における処理の際に復号部220及び乱数計算部230に入力される。
 また、図13に示すように、復号部220は、区域#2について、暗号文ブロックC_1,・・・,C_mのうち、C_m’から続く(2^b-2)個のC_(m’+1),・・・,C_(m’+2^b-2)に対して、区域#1と同様の処理を行う。ここで、復号部220は、区域#2については、乱数S_1^(1)を乱数暗号化部240で暗号化して得られた暗号化結果を初期値として、最初のTBC関数に入力する。つまり、区域#1で生成された乱数S_1^(1)を、ナンスN、区域#1のインデックス「1」及びラインインデックス「1」を含むTweakが入力されたTBC関数E ’によって暗号化して得られた暗号化結果が、初期値に対応する。
 そして、復号部220は、C_(m’+1),・・・,C_(m’+2^b-2)にそれぞれ対応する平文ブロックM_(m’+1),・・・,M_(m’+2^b-2)を得る。また、復号部220は、暗号化結果、つまりTBC関数の出力値である乱数Z_1^(2),・・・,Z_(2^b-1)^(2)を、乱数計算部230に出力する。なお、復号部220は、区域#2における最後の平文ブロックM_(m’+2^b-2)を区域#2における最後のTBC関数で暗号化することにより、区域#2における最後の乱数Z_(2^b-1)^(2)を得る。また、復号部220は、最後の平文ブロックM_(m’+2^b-2)がTBC関数で暗号化されたら、その暗号化結果Z_(2^b-1)^(2)を、S_1^(2)として、乱数計算部230に出力する。
 また、図13に示すように、乱数計算部230は、乱数計算部130と実質的に同様にして、区域#2について、復号部220で生成される乱数Z_1^(2),・・・,Z_(2^b-1)^(2)を処理する。つまり、乱数計算部230は、上記の式6により、式5に示した行列AMを用いて、乱数Z_1^(2),・・・,Z_(2^b-1)^(2)を処理する。これにより、乱数計算部230は、区域#2についての乱数の組S_2^(2),・・・,S_ω^(2)を生成する。言い換えると、乱数計算部230は、乱数Z_1^(2),・・・,Z_(2^b-1)^(2)それぞれと行列AMの対応する要素との乗算値の排他的論理和を計算することによって、乱数の組S_2^(2),・・・,S_ω^(2)を生成する。
 ここで、図8と同様に、乱数計算部230は、区域#2については、乱数S_i^(1)を乱数暗号化部240で暗号化して得られた暗号化結果を初期値として、各ラインiに入力する。つまり、区域#1で生成された乱数S_2^(1)を、ナンスN、区域#1のインデックス「1」及びラインインデックス「2」を含むTweakが入力されたTBC関数E ’によって暗号化して得られた暗号化結果が、ライン「2」の初期値に対応する。同様に、区域#1で生成された乱数S_ω^(1)を、ナンスN、区域#1のインデックス「1」及びラインインデックス「ω」を含むTweakが入力されたTBC関数E ’によって暗号化して得られた暗号化結果が、ライン「ω」の初期値に対応する。乱数計算部230は、区域#2について生成された乱数の組S_1^(2),・・・,S_ω^(2)を、乱数暗号化部240に出力する。
 なお、図12~図13には、区域#1及び区域#2についての演算の概略が示されているが、区域#3以降についても、図13に示した区域#2と実質的に同様の演算がなされる。したがって、区域#3以降の具体的な処理の説明については省略する。なお、乱数計算部230は、乱数計算部130と同様に、ある区域について処理を行うごとに、式5に示した同じ行列AM(つまり同じ要素α)を繰り返し呼び出して、乱数の組を生成する。
<認証暗号化方法及び認証復号方法>
 次に、図14及び図15を用いて、実施の形態1にかかる認証暗号システム1にかかる動作について説明する。図13は、実施の形態1にかかる認証暗号化装置10で実行される認証暗号化方法を示すフローチャートである。
 入力部100は、上述したように、平文M及び関連データAを入力する(ステップS102)。分割部102は、上述したように、平文M及び関連データAそれぞれを、所定長のブロック(平文ブロック及びADブロック)に分割する(ステップS104)。また、分割部102は、上述したように、分割されたADブロック及び平文ブロックを、区域ごとに区分けする(ステップS106)。ナンス生成部104は、上述したように、ナンスNを生成する(ステップS108)。
 次に、認証暗号化装置10は、k=1として、区域#1を処理対象とする(ステップS110)。そして、AD処理部110は、上述したように、ADブロックを処理する(ステップS112)。暗号化部120は、上述したように、平文ブロックを暗号化し、暗号文ブロックを取得する(ステップS114)。乱数計算部130は、上述したように、乱数Sの組を取得する(ステップS116)。
 そして、k=βでない場合(ステップS118のNO)、つまり処理対象の区域が最後の区域#βでない場合、乱数暗号化部140は、上述したように、乱数Sの組を暗号化する(ステップS120)。そして、乱数暗号化部140は、暗号化された乱数を、区域#(k+1)、つまり区域#2における処理の初期値とする(ステップS122)。そして、認証暗号化装置10は、kを1つインクリメントして(ステップS124)、処理対象の区域を1つ進める。そして、S114~S124の処理が繰り返される。
 そして、k=βである場合(S118のYES)、つまり処理対象の区域が最後の区域#βである場合、タグ生成部150は、区域#βにおいて生成された乱数Sの組を用いて、タグTを生成する(ステップS132)。そして、出力部160は、ナンスN、関連データA、暗号文C、及びタグTを出力する(ステップS134)。
 図15は、実施の形態1にかかる認証復号装置20で実行される認証復号方法を示すフローチャートである。入力部200は、ナンスN、関連データA、暗号文C及びタグTを入力する(ステップS202)。分割部202は、上述したように、暗号文C及び関連データAそれぞれを、所定長のブロック(暗号文ブロック及びADブロック)に分割する(ステップS204)。また、分割部202は、上述したように、分割されたADブロック及び暗号文ブロックを、区域ごとに区分けする(ステップS206)。
 次に、認証復号装置20は、k=1として、区域#1を処理対象とする(ステップS210)。そして、AD処理部210は、上述したように、ADブロックを処理する(ステップS212)。復号部220は、上述したように、暗号文ブロックを復号し、平文ブロックを取得する(ステップS214)。乱数計算部230は、上述したように、乱数Sの組を取得する(ステップS216)。
 そして、k=βでない場合(ステップS218のNO)、つまり処理対象の区域が最後の区域#βでない場合、乱数暗号化部240は、上述したように、乱数Sの組を暗号化する(ステップS220)。そして、乱数暗号化部240は、暗号化された乱数を、区域#(k+1)、つまり区域#2における処理の初期値とする(ステップS222)。そして、認証復号装置20は、kを1つインクリメントして(ステップS224)、処理対象の区域を1つ進める。そして、S214~S224の処理が繰り返される。
 そして、k=βである場合(S218のYES)、つまり処理対象の区域が最後の区域#βである場合、タグ生成部250は、区域#βにおいて生成された乱数Sの組を用いて、タグTを生成する(ステップS232)。タグ検査部260は、上述したように、認証用のタグTと検査用のタグTとが一致するか否かを判定する(ステップS240)。認証用のタグTと検査用のタグTとが一致する場合(S240のYES)、タグ検査部260は、平文Mを出力する(ステップS242)。一方、認証用のタグTと検査用のタグTとが一致しない場合(S240のNO)、タグ検査部260は、エラーメッセージ⊥を出力する(ステップS244)。
<効果>
 上述したように、実施の形態1にかかる認証暗号化装置10は、入力ブロック(ADブロック及び平文ブロック)を、比較例にかかるPFBωの手法で処理可能なサイズである(2^b-2)個のブロックを含む区域に区分けする。そして、実施の形態1にかかる認証暗号化装置10は、各区域で生成される乱数Sの組から、タグTを適切に導出するように構成されている。これにより、実施の形態1にかかる認証暗号システム1は、比較例にかかるPFBωの手法では安全性上不可能であった、(2^b-1)個以上の入力ブロックを処理することが可能となる。
 そして、上述したように、比較例では、ωbビットの安全性を実現できるにも関わらず、入力ブロック数の制限が、bビット安全性のAEの場合と同じとなっている。したがって、比較例において入力ブロック数の制限を超えるサイズ(b×(2^b-2)ビットを超えるサイズ)の平文を送信しようとすると、前もって処理可能なブロック数ごとに平文を分割する必要がある。そして、分割された平文ごとに暗号化を行って、得られた暗号文の送信を行う必要がある。つまり、比較例では、1つの平文に対して、複数の(N,A,C,T)を送信する必要がある。これに対し、実施の形態1にかかる認証暗号システム1では、処理可能なブロック数の制限がなくなるので、平文のサイズによらないで、一度で、暗号文を送信することが可能となる。つまり、実施の形態1では、単一の(N,A,C,T)のみの送信を行うだけでよい。したがって、通信の負荷を抑制することが可能となる。
(実施の形態2)
 次に、実施の形態2について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。なお、実施の形態2にかかるシステム構成については、実施の形態1のシステム構成と実質的に同様であるので、説明を省略する。つまり、実施の形態2にかかる認証暗号システム1は、認証暗号化装置10に対応する認証暗号化装置10Aと、認証復号装置20に対応する認証復号装置20Aとを有する。
 実施の形態2は、上述した比較例にかかるPFBωの方式を、比較例で言及されたΘCBの方式に拡張した場合の改良であるΘCBωに対応する。つまり、実施の形態2では、PFBωにおけるブロックのTBC関数を用いた処理(暗号化又は復号、及びAD処理)を、並列に実行することができる。さらに、実施の形態2では、実施の形態1と同様に、平文ブロック(及びADブロック)を所定の長さの区域に区分けして、区域ごとに、処理が行われる。
<認証暗号化装置>
 図16は、実施の形態2にかかる認証暗号化装置10Aの構成を示す図である。図16に示すように、認証暗号化装置10Aは、入力部100と、分割部102Aと、ナンス生成部104と、AD処理部110Aと、暗号化部120Aと、乱数計算部130Aと、乱数暗号化部140Aと、タグ生成部150Aと、出力部160とを有する。
 認証暗号化装置10Aは、図2及び図3に示した認証暗号化装置10に対応する。分割部102Aは、実施の形態1にかかる分割部102に対応する。AD処理部110Aは、実施の形態1にかかるAD処理部110に対応する。暗号化部120Aは、実施の形態1にかかる暗号化部120に対応する。乱数計算部130Aは、実施の形態1にかかる乱数計算部130に対応する。乱数暗号化部140Aは、実施の形態1にかかる乱数暗号化部140に対応する。タグ生成部150Aは、実施の形態1にかかるタグ生成部150に対応する。なお、以下、認証暗号化装置10Aの構成について、主に、認証暗号化装置10の構成と異なる部分について説明する。
 分割部102Aは、実施の形態1にかかる分割部102と同様に、平文M及び関連データAそれぞれを、所定長のブロックに分割する。具体的には、分割部102Aは、平文Mを、それぞれbビットの平文ブロックM_1,・・・,M_mに分割する。分割部102Aは、平文ブロックM_1,・・・,M_mを、暗号化部120Aに出力する。また、分割部102Aは、関連データAを、それぞれbビットの長さのADブロックA_1,・・・,A_aに分割する。分割部102Aは、ADブロックA_1,・・・,A_aを、AD処理部110Aに出力する。
 また、分割部102Aは、分割されたADブロックA_1,・・・,A_a及び平文ブロックM_1,・・・,M_mを、それぞれブロック数(2^b-1)個の区域(グループ)に区分けする。つまり、実施の形態2では、1つの区域には、(2^b-1)個のブロックが含まれることとなる。このとき、分割部102Aは、データ列D=A_1||・・・||A_a||M_1||・・・||M_mを、データ列の先頭のブロックから、区域#1,区域#2,・・・,区域#βの順に区分けされるように、各区域に区分けする。なお、実施の形態1の場合と異なり、1つの区域に含まれるブロック数が(2^b-1)個であるのは、実施の形態2では、ブロックの並列処理が可能であるからである。詳しくは後述する。
 分割部102Aは、区域#1に全てのADブロックA_1,・・・,A_aが含まれるように、区分けを行う。そして、a<2^b-1の場合、分割部102Aは、m’個の平文ブロックが区域#1に含まれるように、区分けを行う。ここで、m’は区域#1(1区域目)に含まれる平文ブロックの数である。そして、m’は、a+m’=2^b-1を満たす。そして、分割部102Aは、残りの(m-m’)個の平文ブロックを、区域#2~区域#βに区分けする。以後、特に言及しない限り、a<2^b-1であるとして説明する。なお、a=2^b-1又はa>2^b-1である場合の処理については、実施の形態1においてa=2^b-2又はa>2^b-2であるの場合の処理と実質的に同様である。
 なお、関連データが空の場合、分割部102Aは、データ列D=M_1||・・・||M_mを、データ列の先頭から、区域#1,区域#2,・・・,区域#βの順に区分けされるように、各区域に区分けする。このとき、区域#1に区分けされた平文ブロックの数をm’とすると、m’=2^b-1となる。
 なお、区域#kに区分けされた平文ブロックのビット列を「区域平文ブロックM[k]」とすると、平文Mは、M=M[1]||M[2]||・・・||M[β]とも表記され得る。このとき、少なくともM[1]及びM[β]以外の区域平文ブロックM[k]に含まれる平文ブロックの数は、(2^b-1)個となる。また、関連データが空の場合、区域平文ブロックM[1]に含まれる平文ブロックの数も、(2^b-1)個となる。
 AD処理部110Aは、実施の形態1にかかるAD処理部110と同様に、関連データAを処理する。ここで、AD処理部110Aは、ADブロックA_1,・・・,A_aを、鍵K及びTweakが入力されたTBC関数を用いて、並列に処理する。このとき、AD処理部110Aは、上述した区域ごとに、ADブロックを処理する。AD処理部110Aは、鍵K及びTweakが入力されたTBC関数に各ADブロックを入力することで、乱数Zを得る。AD処理部110Aは、各TBC関数の出力値(乱数)である中間値Z_1,・・・,Z_aを乱数計算部130Aに出力する。AD処理部110Aの処理の詳細については後述する。
 暗号化部120Aは、実施の形態1にかかる暗号化部120と同様に、平文Mを処理する。ここで、暗号化部120Aは、平文ブロックM_1,・・・,M_mを、鍵K及びTweakが入力されたTBC関数を用いて、並列に処理する。このとき、暗号化部120Aは、上述した区域ごとに、TBC関数を用いて、平文ブロック(平文)を並列に暗号化する。つまり、暗号化部120Aは、区域#1に含まれる平文ブロックについて、TBC関数を用いて、並列に暗号化を行う。そして、暗号化部120Aは、区域#2に含まれる平文ブロックについて、TBC関数を用いて、並列に暗号化を行う。以降、暗号化部120Aは、区域#kに含まれる平文ブロックを、TBC関数を用いて、並列に暗号化する。つまり、暗号化部120Aは、区域#kに含まれる区域平文ブロックM[k]について、平文ブロックごとに並列に暗号化を行う。暗号化部120Aは、鍵K及びTweakが入力されたTBC関数に各平文ブロックを入力することで、TBC関数の出力値として、暗号文ブロックを得る。つまり、暗号化部120Aは、区域ごとに、複数の平文ブロックをTBC関数を用いて並列に暗号化することによって、暗号文ブロックを生成する。
 暗号化部120Aは、生成された暗号文ブロックC_1,・・・,C_mを、暗号文C=C_1||・・・||C_mとして、出力部160に出力する。また、暗号化部120Aは、区域#kに含まれる区域平文ブロックM[k]について暗号化を行って、区域暗号文ブロックC[k]を得る。ここで、区域暗号文ブロックC[k]は、区域平文ブロックM[k]と同じブロック数の暗号文ブロックから構成される。また、暗号化部120Aは、各区域においてTBC関数に入力される平文ブロック(TBC関数の入力値)を、中間値Zとして、乱数計算部130Aに出力する。暗号化部120Aの処理の詳細については、後述する。
 なお、暗号化部120Aにおいて用いられるTBC関数それぞれに入力されるTweakは、暗号化部84において用いられるTBC関数それぞれに入力されるTweakと異なり得る。詳しくは後述する。なお、区域ごとに行われるAD処理及び暗号化処理等で用いられるTBC関数に入力されるTweakを互いに区別するため、実施の形態2にかかるTweakの桁数は、実施の形態1と同様に、比較例にかかるTweakの桁数よりも多くなっている。つまり、比較例では、1つの区域のみの処理が実行されるのに対し、実施の形態2では、複数の区域について処理が実行されるので、その分、Tweakを区別するために桁数を多くする必要がある。
 乱数計算部130Aは、実施の形態1にかかる乱数計算部130と同様に、タグを生成するための乱数を計算する。乱数計算部130Aは、AD処理部110Aで生成される乱数(中間値)Z及び暗号化部120Aから出力された平文ブロックと、所定の行列AMとを用いて、タグを生成するための値を計算する。なお、実施の形態2にかかる行列AMを、以下の式8に示す。ここで、行列AMは、所定の値α_(i,j)を要素とする、ω×(2^b-1)のサイズの行列である。
Figure JPOXMLDOC01-appb-M000008
・・・(8)
 乱数計算部130Aは、区域ごとに、乱数Sを計算する。乱数計算部130Aは、乱数計算部130と実質的に同様の処理を行って、区域ごとに乱数Sの組を生成する。具体的には、乱数計算部130Aは、区域ごとに、AD処理部110Aで生成される乱数(中間値)Zと、暗号化部120Aから出力される平文ブロック(中間値Z)と、所定の行列AMとを用いて、ω個の乱数Sの組(S_1,・・・,S_ω)を生成する。ここで、後述するように、乱数Sの組は、次の区域における処理の初期値を生成するために使用される。また、最後の区域における処理で生成された乱数Sの組は、タグTを生成するために使用される。乱数計算部130Aは、各区域において、ω個のラインi(1≦i≦ω)それぞれについて、中間値Z_jとα_(i,j)との乗算値の排他的論理和を計算することによって、S_iを算出する。詳しくは後述する。
 乱数計算部130Aは、各区域#kにおいて、以下の式9に示すように、行列AMを用いて中間値Z_1^(k),・・・,Z_(2^b-1)^(k)を処理して、乱数の組S_1^(k),・・・,S_ω^(k)を生成する。つまり、乱数計算部130Aは、各区域#kについて、式8に示した同じ行列AMを用いて、乱数の組を生成する。
Figure JPOXMLDOC01-appb-M000009
・・・(9)
 なお、式9から、i(1≦i≦ω)に対して、以下の式10が成り立つ。
Figure JPOXMLDOC01-appb-M000010
・・・(10)
 ここで、乱数計算部130と同様に、乱数計算部130Aは、区域ごとに、Zとαとの乗算値の排他的論理和の各ラインの初期値を、後述する乱数暗号化部140Aで暗号化された、前の区域で生成された乱数の組とする。詳しくは後述する。乱数計算部130Aは、最後の区域#β以外の各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、乱数暗号化部140Aに出力する。また、乱数計算部130Aは、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、タグ生成部150Aに出力する。乱数計算部130Aの処理の詳細については後述する。
 乱数暗号化部140Aは、上述した乱数暗号化部140と同様に、ナンスNを用いて、最後の区域#β以外の各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を暗号化する。ここで、乱数暗号化部140Aの演算の内容は、図7に示したものと実質的に同様である。したがって、乱数暗号化部140Aは、各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、ナンスNを含むTweak及び鍵Kが入力されたTBC関数を用いて暗号化する。そして、乱数暗号化部140Aは、乱数の組S_1^(k),・・・,S_ω^(k)を暗号化して得られた暗号化結果を、次の区域#(k+1)における処理の初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(k),・・・,S_ω^(k)は、次の区域#(k+1)において乱数計算部130Aの処理における各ラインi(1≦i≦ω)の初期値となる。
 タグ生成部150Aは、上述したタグ生成部150と同様に、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)と、ナンスNとを用いて、認証用のタグTを生成する。なお、タグTの生成方法については、タグ生成部150におけるタグTの生成方法と実質的に同様である。したがって、タグ生成部150Aは、図9に示した演算を行う。つまり、タグ生成部150Aは、区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、ナンスNを含むTweak及び鍵Kが入力されたTBC関数を用いて暗号化する。タグ生成部150Aは、乱数の組S_1^(β),・・・,S_ω^(β)を暗号化することによって、暗号化結果であるタグT[1],・・・,T[ω]を得る。
 図17は、実施の形態2にかかる認証暗号化装置10Aの乱数暗号化部140A及びタグ生成部150Aの処理を説明するための図である。なお、説明の明確化のため、図17では、関連データを空としている。上述したように、認証暗号化装置10は、平文Mの平文ブロックを、区域#1,区域#2,・・・区域#βにそれぞれ対応する区域平文ブロックM[1],M[2],・・・,M[β]に区分けする。なお、上述したように、区域平文ブロックM[k]それぞれには、(2^b-1)個の平文ブロックが含まれる。
 そして、暗号化部120A及び乱数計算部130Aは、区域#1について、入力されたナンスN及び区域平文ブロックM[1]を用いて、区域暗号文ブロックC[1]、及び、乱数の組S_1^(1),・・・,S_ω^(1)を生成する。乱数暗号化部140Aは、区域#1について生成された乱数の組S_1^(1),・・・,S_ω^(1)を暗号化する。そして、乱数暗号化部140は、暗号化された乱数の組S_1^(1),・・・,S_ω^(1)を、次の区域#2に対する処理における初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(1),・・・,S_ω^(1)は、次の区域#2において乱数計算部130Aの処理における各ラインの初期値となる。
 また、暗号化部120A及び乱数計算部130Aは、区域#2について、入力されたナンスN及び区域平文ブロックM[2]を用いて、区域暗号文ブロックC[2]、及び、乱数の組S_1^(2),・・・,S_ω^(2)を生成する。このとき、乱数計算部130Aは、区域#2に対する処理において、S_1^(1),・・・,S_ω^(1)の暗号化結果を初期ステートとしている。乱数暗号化部140Aは、区域#2について生成された乱数の組S_1^(2),・・・,S_ω^(2)を暗号化する。そして、乱数暗号化部140Aは、暗号化された乱数の組S_1^(2),・・・,S_ω^(2)を、次の区域#3に対する処理における初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(2),・・・,S_ω^(2)は、次の区域#3において乱数計算部130Aの処理における各ラインの初期値となる。
 以下同様にして、暗号化部120A及び乱数計算部130Aは、区域#kそれぞれについて、入力されたナンスN及び区域平文ブロックM[k]を用いて、区域暗号文ブロックC[k]、及び、乱数の組S_1^(k),・・・,S_ω^(k)を生成する。このとき、暗号化部120A及び乱数計算部130Aは、区域#kに対する処理において、S_1^(k-1),・・・,S_ω^(k-1)の暗号化結果を初期ステートとしている。乱数暗号化部140Aは、最後の区域#β以外の区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を暗号化する。そして、乱数暗号化部140Aは、区域#kにおいて暗号化された乱数の組S_1^(k),・・・,S_ω^(k)を、次の区域#(k+1)における初期値(初期ステート)とする。
 このとき、暗号化部120Aは、各区域それぞれについて、後述する図19及び図20に示す演算をサブルーチンとして用いて、処理を行うことができる。また、乱数計算部130Aは、各区域それぞれについて、式8に示す行列AMを呼び出して、後述する図18~図20に示す演算をサブルーチンとして用いて、処理を行うことができる。これらのことは、後述する認証復号装置20Aにおける復号処理においても同様である。
 そして、タグ生成部150Aは、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)と、ナンスNとを用いて、認証用のタグT[1],・・・,T[ω]を得る。ここで、上述したように、認証用のタグTは、乱数の組を、ナンスN及び平文ブロックの数m(平文長)を含むTweakを入力とするTBC関数で暗号化された暗号化結果である。したがって、タグTの組の安全性が確保されている。
 図18~図20は、実施の形態2にかかる認証暗号処理における演算の概略を示す図である。図18は、1区域目つまり区域#1についての、AD処理部110A及び乱数計算部130Aの演算の概略を示す図である。また、図19は、1区域目つまり区域#1についての、暗号化部120A及び乱数計算部130Aの演算の概略を示す図である。また、図20は、2区域目つまり区域#2についての、暗号化部120A及び乱数計算部130Aの演算の概略を示す図である。
 図18に示すように、AD処理部110Aは、区域#1について、ADブロックA_1,・・・,A_aを、鍵K及びTweakが入力されたTBC関数を用いて、並列に処理する。具体的には、AD処理部110Aは、ADブロックA_1をTBC関数で暗号化する。これにより、TBC関数から、暗号化結果として、中間値(乱数)であるZ_1^(1)が出力される。同様に、AD処理部110Aは、ADブロックA_2を、TBC関数で暗号化する。これにより、TBC関数から、暗号化結果として、中間値(乱数)であるZ_2^(1)が出力される。同様に、AD処理部110Aは、ADブロックA_aを、TBC関数で暗号化する。これにより、TBC関数から、暗号化結果として、中間値(乱数)であるZ_a^(1)が出力される。AD処理部110Aは、暗号化結果、つまりTBC関数の出力値である中間値Z_1^(1),・・・,Z_a^(1)を、乱数計算部130Aに出力する。
 ここで、実施の形態1では、TBC関数からの出力値である乱数Zの数は、ADブロックの数よりも1つ少ない。これに対し、実施の形態2では、ADブロックの並列処理が可能であることから、TBC関数からの出力値である中間値Zの数は、ADブロックの数と同じとなる。なお、図18~図20の例では、a<2^b-1であるので、AD処理部110Aは、区域#1についてのみ、処理を行う。
 また、図19に示すように、暗号化部120Aは、区域#1について、平文ブロックM_1,・・・,M_mのうちのM_1,・・・,M_m’に対して、鍵K及びTweakが入力されたTBC関数を用いて、並列に暗号化処理を行う。具体的には、暗号化部120Aは、平文ブロックM_1を、TBC関数で暗号化する。これにより、TBC関数から、暗号化結果として、暗号文ブロックC_1が出力される。同様に、暗号化部120Aは、平文ブロックM_2を、TBC関数で暗号化する。これにより、TBC関数から、暗号化結果として、暗号文ブロックC_2が出力される。同様に、暗号化部120Aは、平文ブロックM_m’を、TBC関数で暗号化する。これにより、TBC関数から、暗号化結果として、暗号文ブロックC_m’が出力される。このようにして、暗号化部120Aは、M_1,・・・,M_m’にそれぞれ対応する暗号文ブロックC_1,・・・,C_m’を得る。また、暗号化部120Aは、TBC関数の入力である平文ブロックM_1,・・・,M_m’を、それぞれ、中間値Z_(a+1)^(1),・・・,Z_(a+m’)^(1)として、乱数計算部130Aに出力する。
 なお、AD処理部110A及び暗号化部120Aにおいて用いられるTBC関数それぞれに入力されるTweakは、AD処理部110及び暗号化部120におけるものと実質的に同様の規則によって設定され得る。すなわち、AD処理部110Aにおいて使用されるTBC関数に入力されるTweakは、関連データAのブロックインデックスi(1≦i≦a)に対して、(0^n,i,0,0,0)となる。また、暗号化部120Aにおいて使用されるTBC関数に入力されるTweakは、平文Mのブロックインデックスi(1≦i≦m’)に対して、(N,a,i,0,0)となる。なお、区域#1について、暗号化部120Aの最後に用いられるTBC関数に入力されるTweakは、(N,a,m’,1,0)である。つまり、区域の最後に用いられるTBC関数に入力されるTweakについては、(N,a,i,x,0)のxを、「1」とする。このようにTweakを設定することによって、あるTweakが他のTweakと一致することがなくなる。
 また、図18及び図19に示すように、乱数計算部130Aは、区域#1について、AD処理部110A及び暗号化部120Aから出力される中間値Z_1^(1),・・・,Z_a^(1),Z_(a+1)^(1),・・・,Z_(a+m’)^(1)を処理する。つまり、乱数計算部130Aは、上記の式9により、式8に示した行列AMを用いて、中間値Z_1^(1),・・・,Z_a^(1),Z_(a+1)^(1),・・・,Z_(a+m’)^(1)を処理する。これにより、乱数計算部130Aは、区域#1についての乱数の組S_1^(1),・・・,S_ω^(1)を生成する。乱数計算部130Aは、区域#1について生成された乱数の組S_1^(1),・・・,S_ω^(1)を、乱数暗号化部140Aに出力する。
 乱数暗号化部140Aは、図20に示すように、区域#1について生成された乱数の組S_1^(k),・・・,S_ω^(k)を、それぞれ、ナンスNを含むTweakが入力されたTBC関数E ’を用いて暗号化する。そして、得られた暗号化結果は、区域#2における処理の際に乱数計算部130Aに入力される。ここで、実施の形態1と同様に、TBC関数E ’は、図18~図20に記載されるどのTBC関数E に入力されるTweakとも異なるTweakが入力されるTBC関数である。また、TBC関数E ’に入力されるTweakは、ADブロック数a及び平文ブロック数mを含まないで、他のTBC関数E に入力されるTweakと異なるように設定される。また、上述したように、S_i^(k)を暗号化するTBC関数E ’に入力されるTweakは、このTBC関数をTBC関数E の形式で記述すると仮定した場合、(N,k,i,0,0,1)としてもよい。つまり、TBC関数E ’に入力されるTweakの最後の値を「1」としてもよい。一方、この場合、TBC関数E に入力されるTweakは、(N,a,m’,0,0,0)のように、最後の値を「0」にしてもよい。したがって、Tweakの重複を避けることができる。
 また、図20に示すように、暗号化部120Aは、区域#2について、平文ブロックM_1,・・・,M_mのうち、M_m’から続く(2^b-1)個のM_(m’+1),・・・,M_(m’+2^b-1)に対して、区域#1と同様の処理を行う。すなわち、暗号化部120Aは、区域#2について、平文ブロックM_(m’+1),・・・,M_(m’+2^b-1)に対して、鍵K及びTweakが入力されたTBC関数を用いて、並列に暗号化処理を行う。これにより、暗号化部120Aは、平文ブロックM_(m’+1),・・・,M_(m’+2^b-1)にそれぞれ対応する暗号文ブロックC_(m’+1),・・・,C_(m’+2^b-1)を得る。また、暗号化部120Aは、TBC関数の入力である平文ブロックM_(m’+1),・・・,M_(m’+2^b-1)を、それぞれ、中間値Z_1^(2),・・・,Z_(2^b-1)^(2)として、乱数計算部130Aに出力する。
 また、図20に示すように、乱数計算部130Aは、区域#2について、暗号化部120Aから出力される、平文ブロックに対応する中間値Z_1^(2),・・・,Z_(2^b-1)^(2)を処理する。つまり、乱数計算部130Aは、上記の式9により、式8に示した行列AMを用いて、中間値Z_1^(2),・・・,Z_(2^b-1)^(2)を処理する。これにより、乱数計算部130Aは、区域#2についての乱数の組S_1^(2),・・・,S_ω^(2)を生成する。
 ここで、乱数計算部130Aは、区域#2については、乱数S_i^(1)を乱数暗号化部140Aで暗号化して得られた暗号化結果を初期値として、各ラインiに入力する。つまり、区域#1で生成された乱数S_1^(1)を、ナンスN、区域#1のインデックス「1」及びラインインデックス「1」を含むTweakが入力されたTBC関数E ’によって暗号化して得られた暗号化結果が、ライン「1」の初期値に対応する。同様に、区域#1で生成された乱数S_ω^(1)を、ナンスN、区域#1のインデックス「1」及びラインインデックス「ω」を含むTweakが入力されたTBC関数E ’によって暗号化して得られた暗号化結果が、ライン「ω」の初期値に対応する。乱数計算部130Aは、区域#2について生成された乱数の組S_1^(2),・・・,S_ω^(2)を、乱数暗号化部140Aに出力する。
 なお、区域#2について、暗号化部120Aにおいて用いられるTBC関数それぞれに入力されるTweakは、暗号化部120におけるものと実質的に同様の規則によって設定され得る。すなわち、暗号化部120Aにおいて使用されるTBC関数に入力されるTweakは、平文Mのブロックインデックスi(m’+1≦i≦m’+2^b-1)に対して、(N,a,i,0,0)となる。なお、区域#2について、暗号化部120Aの最後に用いられるTBC関数に入力されるTweakは、(N,a,m’+2^b-1,1,0)である。つまり、区域の最後に用いられるTBC関数に入力されるTweakについては、(N,a,i,x,0)のxを、「1」とする。このようにTweakを設定することによって、あるTweakが他のTweakと一致することがなくなる。
 ここで、上述した比較例にかかる問題点で述べたように、行列AMの列数は、2^b-1を超えてはならない。したがって、実施の形態1と同様に、実施の形態2においても、式8で示したように、行列AMの列数は、(2^b-1)個である。ここで、実施の形態2にかかる認証暗号では、各ブロックに並列に暗号化する。したがって、実施の形態2では、図18で示すように、a個のADブロックを処理するためには、列数をaとする行列AMを準備すればよい。また、実施の形態2では、図19及び図20で示すように、m”個の平文ブロックを処理するためには、列数をm”とする行列AMを準備すればよい。すなわち、実施の形態2では、処理すべきブロックの数と、対応する行列AMの列数とが、一致している。したがって、上述した比較例にかかる問題点で述べた行列AMの条件を満たすためには、a+m”≦2^b-1であればよい。したがって、実施の形態2では、1つの区域に含まれるブロック(ADブロック又は平文ブロック)の数を、(2^b-1)個としている。また、区域#1について、a+m’=2^b-1である。したがって、実施の形態2において1つの区域で処理できるブロックの数は、実施の形態1において1つの区域で処理できるブロックの数よりも、1つ多くてもよい。なお、a+m’=2^b-1であるので、図19のα_(1,a+m’)は、式8のα_(1,2^b-1)に対応する。
 なお、図18~図20には、区域#1及び区域#2についての演算の概略が示されているが、区域#3以降についても、図20に示した区域#2と実質的に同様の演算がなされる。したがって、区域#3以降の具体的な処理の説明については省略する。なお、暗号化部120Aは、ある区域について処理を行うごとに、TBC関数を繰り返し呼び出して、平文ブロックを暗号化する。また、乱数計算部130Aは、ある区域について処理を行うごとに、前の区域について得られた乱数を暗号化して得られた暗号化結果を各ラインの初期値とし、式8に示した同じ行列AM(つまり同じ要素α)を繰り返し呼び出して、乱数の組を生成する。
 なお、暗号化部120Aにおいて用いられるTBC関数それぞれに入力されるTweakは、図20を用いて上述した規則に従って設定される。つまり、各区域#kにおいて、1番目から(2^b-2)番目のTBC関数に入力されるTweakは、平文Mのブロックインデックスiに対して、(N,a,i,0,0)となる。また、各区域#kにおいて、(2^b-1)番目のTBC関数に入力されるTweakは、平文Mのブロックインデックスiに対して、(N,a,i,1,0)となる。なお、ここでは、iは平文ブロック数mのインデックスであるので、ある区域#kにおけるTBC関数それぞれに入力されるTweakは、別の区域におけるTBC関数それぞれに入力されるTweakとは異なることとなる。なお、最終の区域#βにおいて、平文ブロック数が2^b-1に満たない場合、その満たない分の中間値Z_(j)^(β)の値が0となる。これらのことは、後述する認証復号装置20Aにおける復号処理においても同様である。
 タグ生成部150Aは、図9に示すように、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、それぞれ、ナンスNとADブロック数aと平文ブロック数mとを含むTweakを用いて、認証用のタグTを生成する。ここで、実施の形態1と同様に、タグ生成部150Aで用いられるTBC関数には、一度のみ用いられるTweakが入力される。そして、タグ生成部150Aは、T[1],・・・,T[ω]を、タグT=T[1]||・・・||T[ω]として出力する。
 ここで、乱数暗号化部140AではTBC関数E ’が用いられているのに対し、タグ生成部150AではTBC関数E が用いられている。したがって、タグ生成部150Aにおいて用いられるTBC関数E に入力されるTweakは、乱数暗号化部140Aで用いられるTBC関数に入力されるTweakとは異なることとなる。また、AD処理部110A及び暗号化部120Aで用いられるTBC関数E に入力されるTweakとは異なり、タグ生成部150Aにおいて用いられるTBC関数E に入力されるTweakは、は、区域数β及びラインインデックスiを含む。したがって、タグ生成部150Aにおいて用いられるTBC関数E に入力されるTweakは、AD処理部110A及び暗号化部120Aで用いられるTBC関数に入力されるTweakとは異なることとなる。したがって、Tweakの重複を避けることができる。これらのことは、後述する認証復号装置20Aにおける復号処理においても同様である。
<認証復号装置>
 図21は、実施の形態2にかかる認証復号装置20Aの構成を示す図である。図21に示すように、認証復号装置20Aは、入力部200と、分割部202Aと、AD処理部210Aと、復号部220Aと、乱数計算部230Aと、乱数暗号化部240Aと、タグ生成部250Aと、タグ検査部260とを有する。
 認証復号装置20Aは、図2及び図10に示した認証復号装置20に対応する。分割部202Aは、実施の形態1にかかる分割部202に対応する。AD処理部210Aは、実施の形態1にかかるAD処理部210に対応する。復号部220Aは、実施の形態1にかかる復号部220に対応する。乱数計算部230Aは、実施の形態1にかかる乱数計算部230に対応する。乱数暗号化部240Aは、実施の形態1にかかる乱数暗号化部240に対応する。タグ生成部250Aは、実施の形態1にかかるタグ生成部250に対応する。なお、以下、認証復号装置20Aの構成について、主に、認証復号装置20の構成と異なる部分について説明する。
 分割部202Aは、分割部102Aと同様に、暗号文C及び関連データAそれぞれを、所定長のブロックに分割する。具体的には、分割部202Aは、暗号文Cを、それぞれbビットの暗号文ブロックC_1,・・・,C_mに分割する。また、分割部202Aは、関連データAを、それぞれbビットの長さのADブロックA_1,・・・,A_aに分割する。分割部202Aは、ADブロックA_1,・・・,A_aを、AD処理部210Aに出力する。
 また、上述した分割部102Aと同様に、分割部202Aは、分割されたADブロックA_1,・・・,A_a及び暗号文ブロックC_1,・・・,C_mを、それぞれブロック数(2^b-1)個の区域(グループ)に区分けする。つまり、1つの区域には、(2^b-1)個のブロックが含まれることとなる。このとき、分割部202Aは、データ列D=A_1||・・・||A_a||C_1||・・・||C_mを、データ列の先頭のブロックから、区域#1,区域#2,・・・,区域#βの順に区分けされるように、各区域に区分けする。なお、区分けの方法は、上述した分割部102Aの場合と同様であってもよい。
 なお、区域#kに区分けされた暗号文ブロックのビット列を「区域暗号文ブロックC[k]」とすると、暗号文Cは、C=C[1]||C[2]||・・・||C[β]とも表記され得る。このとき、少なくともC[1]及びC[β]以外の区域暗号文ブロックC[k]に含まれる暗号文ブロックの数は、(2^b-1)個となる。また、関連データが空の場合、区域暗号文ブロックC[1]に含まれる暗号文ブロックの数も、(2^b-1)個となる。
 AD処理部210Aは、上述したAD処理部110Aと実質的に同様の処理を行う。つまり、AD処理部210Aは、ADブロックA_1,・・・,A_aを、鍵K及びTweakが入力されたTBC関数を用いて処理する。このとき、AD処理部210Aは、上述した区域ごとに、ADブロックを処理する。AD処理部210Aは、TBC関数の出力値(乱数)である中間値Z_1,・・・,Z_aを乱数計算部230Aに出力する。なお、AD処理部210Aにおいて用いられるTBC関数それぞれに入力されるTweakは、上述したAD処理部110Aにおいて用いられるTBC関数それぞれに入力されるTweakと、実質的に同様に設定されてもよい。
 復号部220Aは、上述した暗号化部120Aにおける暗号化処理に対応した復号処理を行う。復号部220Aは、暗号文ブロックC_1,・・・,C_mを、鍵K及びTweakが入力されたTBC関数を用いて、並列に処理する。このとき、復号部220Aは、上述した区域ごとに、暗号文ブロック(暗号文)を、並列に復号する。つまり、復号部220Aは、区域#1に含まれる暗号文ブロックについて、上述した暗号化部120Aにおける暗号化処理に対応した復号処理を行う。そして、復号部220Aは、区域#2に含まれる暗号文ブロックについて、上述した暗号化部120Aにおける暗号化処理に対応した復号処理を行う。以降、復号部220Aは、区域#kに含まれる暗号文ブロックについて、上述した暗号化部120Aにおける暗号化処理に対応した復号処理を行う。つまり、復号部220Aは、区域#kに含まれる区域暗号文ブロックC[k]について、復号を行う。復号部220Aは、鍵K及びTweakが入力されたTBC関数(復号関数)に各暗号文ブロックを入力することで、TBC関数の出力値として、平文ブロックを得る。この復号関数は、上述した暗号化部120Aで用いられるTBC関数E が行う暗号化処理に対応する復号処理を行うように構成されている。
 復号部220Aは、生成された平文ブロックM_1,・・・,M_mを、平文M=M_1||・・・||M_mとして、タグ検査部260に出力する。また、復号部220Aは、区域#kに含まれる区域暗号文ブロックC[k]について復号を行って、区域平文ブロックM[k]を得る。なお、復号部220Aは、得られた平文を、平文M=M[1]||M[2]||・・・||M[β]として、タグ検査部260に出力してもよい。また、復号部220Aは、各区域においてTBC関数(復号関数)から出力される平文ブロック(TBC関数の出力値)を、中間値Zとして、乱数計算部230Aに出力する。
 なお、復号部220Aにおける演算は、図19及び図20における暗号化部120Aにおいて、暗号化関数であるTBC関数を復号関数に置き換え、復号関数(TBC関数)に暗号文ブロックを入力し、平文ブロックが出力されるように置き換えたものに対応する。なお、復号部220Aにおいて用いられるTBC関数それぞれに入力されるTweakは、上述した暗号化部120Aにおいて用いられるTBC関数それぞれに入力されるTweakと、実質的に同様に設定されてもよい。
 乱数計算部230Aは、上述した乱数計算部130Aと同様に、AD処理部210A及び復号部220Aで生成される乱数Zと、式8に示した所定の行列AMとを用いて、タグを生成するための乱数を計算する。このとき、乱数計算部230Aは、区域ごとに、乱数を計算する。具体的には、乱数計算部230Aは、区域ごとに、AD処理部210A及び復号部220Aで生成される中間値Zと、所定の行列AMとを用いて、ω個の乱数Sの組(S_1,・・・,S_ω)を生成する。ここで、上述した乱数計算部130Aの場合と同様に、乱数Sの組は、次の区域における処理の初期値を生成するために使用される。また、最後の区域における処理で生成された乱数Sの組は、検査用のタグTを生成するために使用される。乱数計算部230Aは、上述した乱数計算部130Aと同様に、各区域において、ω個のラインi(1≦i≦ω)それぞれについて、中間値Z_jとα_(i,j)との乗算値の排他的論理和を行うことによって、S_iを算出する。つまり、乱数計算部230Aは、各区域#kにおいて、上記の式9に示すように、行列AMを用いて乱数Z_1^(k),・・・,Z_(2^b-1)^(k)を処理して、乱数の組S_1^(k),・・・,S_ω^(k)を生成する。
 ここで、乱数計算部130Aと同様に、乱数計算部230Aは、区域ごとに、Zとαとの乗算値の排他的論理和の各ラインの初期値を、後述する乱数暗号化部240Aで暗号化された、前の区域で生成された乱数の組とする。乱数計算部230Aは、最後の区域#β以外の各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、乱数暗号化部240Aに出力する。また、乱数計算部230Aは、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、タグ生成部250Aに出力する。
 乱数暗号化部240Aは、上述した乱数暗号化部140と同様に、ナンスNを用いて、最後の区域#β以外の各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を暗号化する。ここで、乱数暗号化部240Aの演算の内容は、図7に示したものと実質的に同様である。したがって、乱数暗号化部240Aは、各区域#kについて生成された乱数の組S_1^(k),・・・,S_ω^(k)を、ナンスNを含むTweak及び鍵Kが入力されたTBC関数を用いて暗号化する。そして、乱数暗号化部240Aは、乱数の組S_1^(k),・・・,S_ω^(k)を暗号化して得られた暗号化結果を、次の区域#(k+1)における処理の初期値(初期ステート)とする。つまり、暗号化された乱数S_1^(k),・・・,S_ω^(k)は、次の区域#(k+1)において乱数計算部230Aの処理における各ラインi(1≦i≦ω)の初期値となる。
 タグ生成部250Aは、上述したタグ生成部250と同様に、最後の区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)と、ナンスNとを用いて、検査用のタグTを生成する。なお、タグTの生成方法については、タグ生成部150におけるタグTの生成方法と実質的に同様である。したがって、タグ生成部250Aは、図9に示した演算を行う。つまり、タグ生成部250Aは、区域#βについて生成された乱数の組S_1^(β),・・・,S_ω^(β)を、ナンスNを含むTweak及び鍵Kが入力されたTBC関数を用いて暗号化する。タグ生成部250Aは、乱数の組S_1^(β),・・・,S_ω^(β)を暗号化することによって、暗号化結果であるタグT[1],・・・,T[ω]を得る。そして、タグ生成部250Aは、T[1],・・・,T[ω]を、タグT=T[1]||・・・||T[ω]として、タグ検査部260に出力する。
<効果>
 実施の形態2にかかる認証暗号システム1は、上述した実施の形態1にかかる認証暗号システム1と実質的に同様の効果を奏し得る。つまり、上述したように、実施の形態2にかかる認証暗号化装置10Aは、入力ブロック(ADブロック及び平文ブロック)を、比較例にかかる手法で処理可能なサイズである(2^b-1)個のブロックを含む区域に区分けする。そして、実施の形態2にかかる認証暗号化装置10Aは、各区域で生成される乱数Sの組から、タグTを適切に導出するように構成されている。これにより、実施の形態2にかかる認証暗号システム1は、比較例にかかる手法では安全性上不可能であった、(2^b-1)個以上の入力ブロックを処理することが可能となる。また、実施の形態2にかかる認証暗号システム1においても、処理可能なブロック数の制限がなくなるので、平文のサイズによらないで、一度で、暗号文を送信することが可能となる。つまり、実施の形態2においても、単一の(N,A,C,T)のみの送信を行うだけでよい。したがって、通信の負荷を抑制することが可能となる。
(実施の形態3)
 次に、実施の形態3について説明する。実施の形態3は、上述した実施の形態にかかる構成の概要を示している。
 図22は、実施の形態3にかかる認証暗号化装置30の構成を示す図である。実施の形態3にかかる認証暗号化装置30は、実施の形態1にかかる認証暗号化装置10及び実施の形態2にかかる認証暗号化装置10Aに対応する。実施の形態3にかかる認証暗号化装置30は、暗号化部320と、乱数計算部330と、乱数暗号化部340と、タグ生成部350とを有する。暗号化部320は、暗号化手段としての機能を有する。乱数計算部330は、乱数計算手段(第1の乱数計算手段)としての機能を有する。乱数暗号化部340は、乱数暗号化手段(第1の乱数暗号化手段)としての機能を有する。タグ生成部350は、タグ生成手段(第1のタグ生成手段)としての機能を有する。
 暗号化部320は、図3に示した暗号化部120又は図16に示した暗号化部120Aが有している機能と実質的に同様の機能によって実現できる。暗号化部320は、ナンスをTweakとして用いたTweakableブロック暗号(TBC関数)を用いて、所定の長さ(例えばbビット)の平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化する。
 ここで、上述した実施の形態では、「所定の長さの区域」は、平文ブロックのビット長をbビットとした場合に、実施の形態1では(2^b-2)個のブロックを含み得る区域に対応し、実施の形態2では(2^b-1)個のブロックを含み得る区域に対応する。しかしながら、「所定の長さの区域」は、これらの数のブロックを含み得る区域に限られない。なお、上述したように、最後の区域では、(2^b-2)個(又は(2^b-1)個)のブロックを有する必要はない。また、関連データが入力される場合、少なくとも最初の区域では、(2^b-2)個(又は(2^b-1)個)の平文ブロックが含まれていないことがある。これらのことは、後述する実施の形態3にかかる認証復号装置40においても同様である。
 乱数計算部330は、図3に示した乱数計算部130又は図16に示した乱数計算部130Aが有している機能と実質的に同様の機能によって実現できる。乱数計算部330は、暗号化において、各区域におけるTweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する。
 ここで、「Tweakableブロック暗号に関する関数」は、上述した実施の形態では、TBC関数に対応する。また、「第1のデータ」は、実施の形態1では、TBC関数から出力された乱数Zに対応する。一方、実施の形態2では、「第1のデータ」は、TBC関数に入力される平文ブロック(中間値Z)に対応する。なお、第1のデータは、TBC関数に入力されるデータ、又は、TBC関数から出力されるデータに限られない。第1のデータは、TBC関数の入力データ及び出力データの両方を用いて導出されてもよい。また、「Tweakableブロック暗号に関する関数」は、上述した実施の形態におけるTBC関数に限られない。これらのことは、後述する実施の形態3にかかる認証復号装置40においても同様である。
 また、「所定の行列」は、上述した行列AMに対応するが、これに限られない。なお、上述した実施の形態1では、「所定の行列」は、式5に示した行列AMに対応する。また、上述した実施の形態2では、「所定の行列」は、式8に示した行列AMに対応する。また、「所定の値」とは、上述した行列AMにおける要素であるαに対応するが、これに限られない。また、乱数計算部330によって生成される乱数は、上述した乱数Sに対応するが、これに限られない。これらのことは、後述する実施の形態3にかかる認証復号装置40においても同様である。
 乱数暗号化部340は、図3に示した乱数暗号化部140又は図16に示した乱数暗号化部140Aが有している機能と実質的に同様の機能によって実現できる。乱数暗号化部340は、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする。
 タグ生成部350は、図3に示したタグ生成部150又は図16に示したタグ生成部150Aが有している機能と実質的に同様の機能によって実現できる。タグ生成部350は、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成する。ここで、生成されるタグは、上述したタグTに対応する。
 また、上述した実施の形態のように、乱数計算部330は、各区域について同じ所定の行列を用いて、乱数の組を生成してもよい。また、上述した実施の形態のように、乱数計算部330は、β個の区域それぞれについて、所定のセキュリティレベルを示す値ωに対応する数の乱数からなる乱数の組を生成してもよい。このとき、乱数暗号化部340は、1番目から(β-1)番目までの各区域それぞれについて、生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化し、暗号化されたω個の乱数それぞれを次の区域における処理の初期値としてもよい。また、このとき、タグ生成部350は、β番目の区域で生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化して、ω個のタグの組を生成してもよい。これらのことは、後述する実施の形態3にかかる認証復号装置40においても同様である。
 図23は、実施の形態3にかかる認証復号装置40の構成を示す図である。実施の形態3にかかる認証復号装置40は、実施の形態1にかかる認証復号装置20及び実施の形態2にかかる認証復号装置20Aに対応する。実施の形態3にかかる認証復号装置40は、復号部420と、乱数計算部430と、乱数暗号化部440と、タグ生成部450と、タグ検査部460とを有する。復号部420は、復号手段としての機能を有する。乱数計算部430は、乱数計算手段(第2の乱数計算手段)としての機能を有する。乱数暗号化部440は、乱数計算手段(第2の乱数暗号化手段)としての機能を有する。タグ生成部450は、タグ生成手段(第2のタグ生成手段)としての機能を有する。タグ検査部460は、タグ検査手段としての機能を有する。
 復号部420は、図10に示した復号部220又は図21に示した復号部220Aが有している機能と実質的に同様の機能によって実現できる。復号部420は、ナンスをTweakとして用いたTweakableブロック暗号(TBC関数)を用いて、所定の長さ(例えばbビット)の暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号する。
 乱数計算部430は、図10に示した乱数計算部230又は図21に示した乱数計算部230Aが有している機能と実質的に同様の機能によって実現できる。乱数計算部430は、復号において、各区域におけるTweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する。
 乱数暗号化部440は、図10に示した乱数暗号化部240又は図21に示した乱数暗号化部240Aが有している機能と実質的に同様の機能によって実現できる。乱数暗号化部440は、各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする。
 タグ生成部450は、図10に示したタグ生成部250又は図21に示したタグ生成部250Aが有している機能と実質的に同様の機能によって実現できる。タグ生成部450は、最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成する。ここで、生成されるタグは、上述したタグTに対応する。
 タグ検査部460は、図10又は図21に示したタグ検査部260が有している機能と実質的に同様の機能によって実現できる。タグ検査部460は、検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行う。
 実施の形態3にかかる認証暗号化装置30及び認証復号装置40は、上述した構成によって、高い安全性を実現しつつ、一度の認証暗号において処理できる平文ブロックの数を増やすことが可能となる。なお、認証暗号化装置30及び認証復号装置40を有する認証暗号システムによっても、高い安全性を実現しつつ、一度の認証暗号において処理できる平文ブロックの数を増やすことが可能となる。また、認証暗号化装置30によって実行される認証暗号化方法及び認証暗号化方法を実行するプログラムによっても、高い安全性を実現しつつ、一度の認証暗号において処理できる平文ブロックの数を増やすことが可能となる。また、暗号化及び復号における遅延を抑制することが可能である。また、認証復号装置40によって実行される認証復号方法及び認証復号方法を実行するプログラムによっても、高い安全性を実現しつつ、一度の認証暗号において処理できる平文ブロックの数を増やすことが可能となる。
(第2の比較例)
 ここで、第2の比較例について説明する。
 図24及び図25は、第2の比較例を説明するための図である。第2の比較例にかかる認証暗号化装置90は、実施の形態1にかかる認証暗号化装置10の構成要素の乱数暗号化部140を有さず、タグ生成部150の代わりにタグ生成部940を有している。
 実施の形態1では、区域#(k+1)における処理の初期値は、区域#kにおける処理で生成された乱数の組を暗号化した暗号化結果である。これに対し、第2の比較例では、区域ごとに、初期値がリセットされる。つまり、区域ごとに、初期値が0^bとなる。第2の比較例では、暗号化部120は、各区域について、このリセットされた初期値を用いて、上述した実施の形態1と実質的に同様にして、平文ブロックを暗号化する。また、第2の比較例では、乱数計算部130は、各区域について、このリセットされた初期値を用いて、上述した実施の形態1と実質的に同様にして、乱数の組Sを生成する。
 一方、第2の比較例にかかるタグ生成部950は、各区域について乱数計算部130によって生成された乱数Sの組と、ナンスNとを用いて、Tweakableブロック暗号を用いたメッセージ認証コードにより、認証用のタグTを生成する。タグ生成部950は、乱数Sから安全にタグTを生成するために、ナンスベースMAC(Message Authentication Code)を用いて、乱数の組を統合して、タグTを生成する。ここで、ナンスベースMACとは、MACの入力にナンスが含まれたものである。
 タグ生成部950には、ナンス生成部104からナンスNが入力される。また、タグ生成部950には、乱数計算部130から乱数の組が入力される。乱数計算部130が各区域について上述した処理を行うことによって、タグ生成部950は、以下の式11の行列で示されるような乱数の組を得る。ここで、式11は、乱数Sを要素とするω×βの大きさの乱数行列を示す。
Figure JPOXMLDOC01-appb-M000011
・・・(11)
 そして、タグ生成部950は、式11に示す乱数行列の各行に含まれる乱数S_i^(1),・・・,S_i^(β)を、ナンスベースMACを用いて処理して、タグT[i]を生成する。ここで、タグ生成部950は、ω個のMACを用いてタグT[1],・・・,T[ω]を生成する。つまり、1≦i≦ωとして、タグ生成部950は、i番目のMAC_iを用いて、タグT[i]を生成する。
 図25は、第2の比較例にかかるタグ生成部950の演算の概略を示す図である。図25は、タグ生成部950で用いられるタグ導出関数を示す。つまり、図25は、タグ生成部950で用いられるナンスベースMACを示す。ここで、図25は、タグ生成部950が、式11におけるi番目の行に対応する乱数S_i^(1),・・・,S_i^(β)をMAC_iで処理して、タグT[i]を生成する例を示している。
 タグ生成部950は、定数fixを、鍵K、ナンスN及びTweakが入力されたTBC関数E で暗号化する。タグ生成部950は、式11の各行(各ライン)のインデックスi(1≦i≦ω)に対して、(N,a,m,i,1)をTweakとして入力するTBC関数の暗号化結果を用いて、定数fixを暗号化する。この、定数fixを暗号化して得られた暗号化結果は、ナンスを含むTweakが入力されたTBC関数を用いて生成されるので、ナンス由来の乱数と言える。
 また、タグ生成部950は、乱数S_i^(1),・・・,S_i^(β)を、TBC関数E ’で暗号化する。ここで、TBC関数E ’は、どのTBC関数E に入力されるTweakとも異なるTweakが入力されるTBC関数である。したがって、Tweakの重複を避けることができる。
 そして、タグ生成部950は、TBC関数E を用いて定数fixを暗号化した暗号化結果と、TBC関数E ’を用いて乱数S_i^(1),・・・,S_i^(β)を暗号化した暗号化結果との排他的論理和(総和)を、タグT[i]として生成する。タグ生成部950は、i=1~ωについて上記の処理を行い、タグT[1],・・・,T[ω]を生成する。そして、タグ生成部950は、T[1],・・・,T[ω]を、タグT=T[1]||・・・||T[ω]として出力する。第2の比較例では、このような処理により、MACの安全性を確保することができる。
 ここで、第2の比較例にかかるタグ生成部950は、各区域で生成された乱数Sの全てを用いて、タグTを生成している。この場合、乱数行列(式11)の全ての要素をメモリに保持する必要がある。したがって、全ての区域について生成された乱数Sの組を格納しておく記憶領域が必要となる。
 なお、各区域において乱数Sが生成されるたびに、タグ生成処理を進めることにより、記憶領域の容量を節約することができる。すなわち、具体的には、図25において、タグ生成部950は、先に、ナンス由来の乱数を生成し、仮のタグとしておく。そして、1番目の区域について乱数S_i^(1)が生成されたら、タグ生成部950は、その乱数S_i^(1)をTBC関数で暗号化して、上記の仮のタグとの排他的論理和を算出し、仮のタグを更新する。タグ生成部950は、この処理を、各区域について乱数Sが生成されるごとに繰り返すことで、タグTを生成する。このような処理が行われることによって、乱数行列の全ての要素をメモリに保持することが不要となる。しかしながら、この場合であっても、仮のタグを保持するためのメモリが必要となる。
 これに対し、本実施の形態では、上述したように、乱数Sの組は、暗号化されて初期値(又はタグ生成の元)として使用されるので、乱数Sの組を記憶しておく必要はない。したがって、本実施の形態にかかる方法は、記憶容量を節約することができる。具体的には、上述した非特許文献1にかかるPFBωの技術と略同等の記憶容量で、高い安全性を実現しつつ、一度の認証暗号において処理できる平文ブロックの数を増やすことが可能となる。
(ハードウェア構成例)
 上述した各実施形態に係る装置およびシステムを、1つの計算処理装置(情報処理装置、コンピュータ)を用いて実現するハードウェア資源の構成例について説明する。但し、各実施形態に係る装置(認証暗号化装置及び認証復号装置)は、物理的または機能的に少なくとも2つの計算処理装置を用いて実現されてもよい。また、各実施形態に係る装置は、専用の装置として実現されてもよいし、汎用の情報処理装置で実現されてもよい。
 図26は、各実施形態に係る装置およびシステムを実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。計算処理装置1000は、CPU1001、揮発性記憶装置1002、ディスク1003、不揮発性記録媒体1004、及び、通信IF1007(IF:Interface)を有する。したがって、各実施形態に係る装置は、CPU1001、揮発性記憶装置1002、ディスク1003、不揮発性記録媒体1004、及び、通信IF1007を有しているといえる。計算処理装置1000は、入力装置1005及び出力装置1006に接続可能であってもよい。計算処理装置1000は、入力装置1005及び出力装置1006を備えていてもよい。また、計算処理装置1000は、通信IF1007を介して、他の計算処理装置、及び、通信装置と情報を送受信することができる。
 不揮発性記録媒体1004は、コンピュータが読み取り可能な、たとえば、コンパクトディスク(Compact Disc)、デジタルバーサタイルディスク(Digital Versatile Disc)である。また、不揮発性記録媒体1004は、USB(Universal Serial Bus)メモリ、ソリッドステートドライブ(Solid State Drive)等であってもよい。不揮発性記録媒体1004は、電源を供給しなくても係るプログラムを保持し、持ち運びを可能にする。なお、不揮発性記録媒体1004は、上述した媒体に限定されない。また、不揮発性記録媒体1004の代わりに、通信IF1007及び通信ネットワークを介して、係るプログラムが供給されてもよい。
 揮発性記憶装置1002は、コンピュータが読み取り可能であって、一時的にデータを記憶することができる。揮発性記憶装置1002は、DRAM(dynamic random Access memory)、SRAM(static random Access memory)等のメモリ等である。
 すなわち、CPU1001は、ディスク1003に格納されているソフトウェアプログラム(コンピュータ・プログラム:以下、単に「プログラム」と称する)を、実行する際に揮発性記憶装置1002にコピーし、演算処理を実行する。CPU1001は、プログラムの実行に必要なデータを揮発性記憶装置1002から読み取る。表示が必要な場合、CPU1001は、出力装置1006に出力結果を表示する。外部からプログラムを入力する場合、CPU1001は、入力装置1005からプログラムを取得する。CPU1001は、上述した図3,図10,図16,図21~図23に示される各構成要素の機能(処理)に対応するプログラムを解釈し実行する。CPU1001は、上述した各実施形態において説明した処理を実行する。言い換えると、上述した図3,図10,図16,図21~図23に示される各構成要素の機能は、ディスク1003又は揮発性記憶装置1002に格納されたプログラムを、CPU1001が実行することによって実現され得る。
 すなわち、各実施形態は、上述したプログラムによっても成し得ると捉えることができる。さらに、上述したプログラムが記録されたコンピュータが読み取り可能な不揮発性の記録媒体によっても、上述した各実施形態は成し得ると捉えることができる。
(変形例)
 なお、本発明は上記実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述したフローチャートにおいて、各処理(ステップ)の順序は、適宜、変更可能である。また、複数ある処理(ステップ)のうちの1つ以上は、省略されてもよい。
 例えば、図14に示したフローチャートにおいて、S108の処理は、S104又はS106の処理の前に実行されてもよい。さらに、S108の処理は、S104,S106の処理と、並行して実行され得る。このことは、図15のフローチャートにおいても同様である。
 また、上述した実施の形態1において、関連データA及び平文Mの分割は、分割部102によって行われるとしたが、このような構成に限られない。関連データAの分割については、AD処理部110が行ってもよい。同様に、平文Mの分割については、暗号化部120が行ってもよい。また、ADブロックの各区域への区分けについても、AD処理部110が行ってもよい。同様に、平文ブロックの各区域への区分けについても、暗号化部120が行ってもよい。これらの場合、分割部102は、なくてもよい。これらのことは、図10、図16及び図21に示した分割部についても同様である。
 また、上述した実施の形態では、先に、ブロック(ADブロック、平文ブロック又は暗号文ブロック)を各区域に区分けするとしたが、このような構成に限られない。先頭のブロックから、各区域に含まれるブロック数(実施の形態1では(2^b-1)個、実施の形態2では(2^b-1)個)のブロックを区分けして暗号化(又は復号)及び乱数の生成の処理を行ってもよい。その場合、1番目の区域についての処理が終わったら、2番目の区域についてブロックの区分けを行い、暗号化(又は復号)及び乱数の生成の処理を行ってもよい。以降の区域についても同様である。
 上述の例において、プログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、random-access memory(RAM)、read-only memory(ROM)、フラッシュメモリ、solid-state drive(SSD)又はその他のメモリ技術、CD-ROM、digital versatile disk(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
 以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
 (付記1)
 ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化する暗号化手段と、
 前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する乱数計算手段と、
 各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする乱数暗号化手段と、
 最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成するタグ生成手段と、
 を有する認証暗号化装置。
 (付記2)
 前記乱数計算手段は、各区域について同じ前記所定の行列を用いて、前記乱数の組を生成する
 付記1に記載の認証暗号化装置。
 (付記3)
 前記乱数計算手段は、β個の前記区域それぞれについて、所定のセキュリティレベルを示す値ωに対応する数の乱数からなる前記乱数の組を生成し、
 前記乱数暗号化手段は、1番目から(β-1)番目までの各区域それぞれについて、生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化し、暗号化されたω個の乱数それぞれを次の区域における処理の初期値とし、
 前記タグ生成手段は、β番目の前記区域で生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化して、ω個のタグの組を生成する、
 付記1又は2に記載の認証暗号化装置。
 (付記4)
 前記暗号化手段は、前記区域ごとに、前記平文ブロックと、当該平文ブロックの前の平文ブロックをTweakableブロック暗号に関する関数を用いて暗号化して得られた暗号化結果との排他的論理和によって、暗号文ブロックを生成し、
 前記乱数計算手段は、前記第1のデータに対応する前記暗号化結果と、前記所定の行列の要素との乗算値の排他的論理和を行うことによって、前記乱数を生成する、
 付記1から3のいずれか1項に記載の認証暗号化装置。
 (付記5)
 前記暗号化手段は、前記区域ごとに、複数の前記平文ブロックをTweakableブロック暗号に関する関数を用いて並列に暗号化することによって、暗号文ブロックを生成し、
 前記乱数計算手段は、前記第1のデータに対応する前記平文ブロックと、前記所定の行列の要素との乗算値の排他的論理和を行うことによって、前記乱数を生成する、
 付記1から3のいずれか1項に記載の認証暗号化装置。
 (付記6)
 ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号する復号手段と、
 前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する乱数計算手段と、
 各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする乱数暗号化手段と、
 最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成するタグ生成手段と、
 前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うタグ検査手段と、
 を有する認証復号装置。
 (付記7)
 前記乱数計算手段は、各区域について同じ前記所定の行列を用いて、前記乱数の組を生成する
 付記6に記載の認証復号装置。
 (付記8)
 前記乱数計算手段は、β個の前記区域それぞれについて、所定のセキュリティレベルを示す値ωに対応する数の乱数からなる前記乱数の組を生成し、
 前記乱数暗号化手段は、1番目から(β-1)番目までの各区域それぞれについて、生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化し、暗号化されたω個の乱数それぞれを次の区域における処理の初期値とし、
 前記タグ生成手段は、β番目の前記区域で生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化して、ω個のタグの組を生成する、
 付記6又は7に記載の認証復号装置。
 (付記9)
 前記復号手段は、前記区域ごとに、前記暗号文ブロックと、当該暗号文ブロックの前の暗号文ブロックを用いて得られた平文ブロックをTweakableブロック暗号に関する関数を用いて暗号化して得られた暗号化結果との排他的論理和によって、平文ブロックを生成し、
 前記乱数計算手段は、前記第1のデータに対応する前記暗号化結果と、前記所定の行列の要素との乗算値の排他的論理和を行うことによって、前記乱数を生成する、
 付記6から8のいずれか1項に記載の認証復号装置。
 (付記10)
 前記復号手段は、前記区域ごとに、複数の前記暗号文ブロックをTweakableブロック暗号に関する関数を用いて並列に復号することによって、平文ブロックを生成し、
 前記乱数計算手段は、前記第1のデータに対応する前記平文ブロックと、前記所定の行列の要素との乗算値の排他的論理和を行うことによって、前記乱数を生成する、
 付記6から8のいずれか1項に記載の認証復号装置。
 (付記11)
 認証暗号化装置と、
 前記認証暗号化装置との間で通信を行う認証復号装置と、
 を有し、
 前記認証暗号化装置は、
 ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化する暗号化手段と、
 前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出されるデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する第1の乱数計算手段と、
 各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする第1の乱数暗号化手段と、
 最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成する第1のタグ生成手段と、
 を有し、
 前記認証復号装置は、
 前記ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号する復号手段と、
 前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出されるデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する第2の乱数計算手段と、
 各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする第2の乱数暗号化手段と、
 最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成する第2のタグ生成手段と、
 前記検査用のタグと、入力された前記認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うタグ検査手段と、
 を有する、
 認証暗号システム。
 (付記12)
 ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化し、
 前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成し、
 各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とし、
 最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成する、
 認証暗号化方法。
 (付記13)
 ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号し、
 前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成し、
 各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とし、
 最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成し、
 前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行う、
 認証復号方法。
 (付記14)
 ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化するステップと、
 前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成するステップと、
 各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とするステップと、
 最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成するステップと、
 をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
 (付記15)
 ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号するステップと、
 前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成するステップと、
 各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とするステップと、
 最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成するステップと、
 前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うステップと、
 をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
1 認証暗号システム
10 認証暗号化装置
20 認証復号装置
30 認証暗号化装置
40 認証復号装置
100 入力部
102 分割部
104 ナンス生成部
110 AD処理部
120 暗号化部
130 乱数計算部
140 乱数暗号化部
150 タグ生成部
160 出力部
200 入力部
202 分割部
210 AD処理部
220 復号部
230 乱数計算部
240 乱数暗号化部
250 タグ生成部
260 タグ検査部
320 暗号化部
330 乱数計算部
340 乱数暗号化部
350 タグ生成部
420 復号部
430 乱数計算部
440 乱数暗号化部
450 タグ生成部
460 タグ検査部

Claims (15)

  1.  ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化する暗号化手段と、
     前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する乱数計算手段と、
     各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする乱数暗号化手段と、
     最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成するタグ生成手段と、
     を有する認証暗号化装置。
  2.  前記乱数計算手段は、各区域について同じ前記所定の行列を用いて、前記乱数の組を生成する
     請求項1に記載の認証暗号化装置。
  3.  前記乱数計算手段は、β個の前記区域それぞれについて、所定のセキュリティレベルを示す値ωに対応する数の乱数からなる前記乱数の組を生成し、
     前記乱数暗号化手段は、1番目から(β-1)番目までの各区域それぞれについて、生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化し、暗号化されたω個の乱数それぞれを次の区域における処理の初期値とし、
     前記タグ生成手段は、β番目の前記区域で生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化して、ω個のタグの組を生成する、
     請求項1又は2に記載の認証暗号化装置。
  4.  前記暗号化手段は、前記区域ごとに、前記平文ブロックと、当該平文ブロックの前の平文ブロックをTweakableブロック暗号に関する関数を用いて暗号化して得られた暗号化結果との排他的論理和によって、暗号文ブロックを生成し、
     前記乱数計算手段は、前記第1のデータに対応する前記暗号化結果と、前記所定の行列の要素との乗算値の排他的論理和を行うことによって、前記乱数を生成する、
     請求項1から3のいずれか1項に記載の認証暗号化装置。
  5.  前記暗号化手段は、前記区域ごとに、複数の前記平文ブロックをTweakableブロック暗号に関する関数を用いて並列に暗号化することによって、暗号文ブロックを生成し、
     前記乱数計算手段は、前記第1のデータに対応する前記平文ブロックと、前記所定の行列の要素との乗算値の排他的論理和を行うことによって、前記乱数を生成する、
     請求項1から3のいずれか1項に記載の認証暗号化装置。
  6.  ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号する復号手段と、
     前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する乱数計算手段と、
     各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする乱数暗号化手段と、
     最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成するタグ生成手段と、
     前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うタグ検査手段と、
     を有する認証復号装置。
  7.  前記乱数計算手段は、各区域について同じ前記所定の行列を用いて、前記乱数の組を生成する
     請求項6に記載の認証復号装置。
  8.  前記乱数計算手段は、β個の前記区域それぞれについて、所定のセキュリティレベルを示す値ωに対応する数の乱数からなる前記乱数の組を生成し、
     前記乱数暗号化手段は、1番目から(β-1)番目までの各区域それぞれについて、生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化し、暗号化されたω個の乱数それぞれを次の区域における処理の初期値とし、
     前記タグ生成手段は、β番目の前記区域で生成されたω個の乱数それぞれをTweakableブロック暗号を用いて暗号化して、ω個のタグの組を生成する、
     請求項6又は7に記載の認証復号装置。
  9.  前記復号手段は、前記区域ごとに、前記暗号文ブロックと、当該暗号文ブロックの前の暗号文ブロックを用いて得られた平文ブロックをTweakableブロック暗号に関する関数を用いて暗号化して得られた暗号化結果との排他的論理和によって、平文ブロックを生成し、
     前記乱数計算手段は、前記第1のデータに対応する前記暗号化結果と、前記所定の行列の要素との乗算値の排他的論理和を行うことによって、前記乱数を生成する、
     請求項6から8のいずれか1項に記載の認証復号装置。
  10.  前記復号手段は、前記区域ごとに、複数の前記暗号文ブロックをTweakableブロック暗号に関する関数を用いて並列に復号することによって、平文ブロックを生成し、
     前記乱数計算手段は、前記第1のデータに対応する前記平文ブロックと、前記所定の行列の要素との乗算値の排他的論理和を行うことによって、前記乱数を生成する、
     請求項6から8のいずれか1項に記載の認証復号装置。
  11.  認証暗号化装置と、
     前記認証暗号化装置との間で通信を行う認証復号装置と、
     を有し、
     前記認証暗号化装置は、
     ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化する暗号化手段と、
     前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出されるデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する第1の乱数計算手段と、
     各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする第1の乱数暗号化手段と、
     最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成する第1のタグ生成手段と、
     を有し、
     前記認証復号装置は、
     前記ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号する復号手段と、
     前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出されるデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成する第2の乱数計算手段と、
     各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とする第2の乱数暗号化手段と、
     最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成する第2のタグ生成手段と、
     前記検査用のタグと、入力された前記認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うタグ検査手段と、
     を有する、
     認証暗号システム。
  12.  ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化し、
     前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成し、
     各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とし、
     最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成する、
     認証暗号化方法。
  13.  ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号し、
     前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成し、
     各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とし、
     最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成し、
     前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行う、
     認証復号方法。
  14.  ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの平文ブロックに分割された平文を、所定の長さの区域ごとに暗号化するステップと、
     前記暗号化において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成するステップと、
     各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とするステップと、
     最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、認証用のタグを生成するステップと、
     をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
  15.  ナンスをTweakとして用いたTweakableブロック暗号を用いて、所定の長さの暗号文ブロックに分割された暗号文を、所定の長さの区域ごとに復号するステップと、
     前記復号において、各区域における前記Tweakableブロック暗号に関する関数の入力及び出力の少なくとも一方から導出される第1のデータと、所定の値を要素とする所定の行列とを用いて、区域ごとに乱数の組を生成するステップと、
     各区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、暗号化された乱数それぞれを次の区域における処理の初期値とするステップと、
     最後の区域で生成された乱数の組をTweakableブロック暗号を用いて暗号化して、検査用のタグを生成するステップと、
     前記検査用のタグと、入力された認証用のタグとを比較することによって、改ざんの有無を検査し、検査結果を出力するための制御を行うステップと、
     をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
PCT/JP2021/043216 2021-11-25 2021-11-25 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体 WO2023095249A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2023563415A JPWO2023095249A5 (ja) 2021-11-25 認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラム
PCT/JP2021/043216 WO2023095249A1 (ja) 2021-11-25 2021-11-25 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/043216 WO2023095249A1 (ja) 2021-11-25 2021-11-25 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体

Publications (1)

Publication Number Publication Date
WO2023095249A1 true WO2023095249A1 (ja) 2023-06-01

Family

ID=86539184

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/043216 WO2023095249A1 (ja) 2021-11-25 2021-11-25 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体

Country Status (1)

Country Link
WO (1) WO2023095249A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008151890A (ja) * 2006-12-15 2008-07-03 Konica Minolta Business Technologies Inc 暗号処理方法及び暗号処理装置
WO2021157003A1 (ja) * 2020-02-06 2021-08-12 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008151890A (ja) * 2006-12-15 2008-07-03 Konica Minolta Business Technologies Inc 暗号処理方法及び暗号処理装置
WO2021157003A1 (ja) * 2020-02-06 2021-08-12 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"16th European Conference - Computer Vision – ECCV 2020", vol. 24, 1 May 2020, CORNELL UNIVERSITY LIBRARY,, 201 Olin Library Cornell University Ithaca, NY 14853, article NAITO YUSUKE; SASAKI YU; SUGAWARA TAKESHI: "Lightweight Authenticated Encryption Mode Suitable for Threshold Implementation", pages: 705 - 735, XP047550413, DOI: 10.1007/978-3-030-45724-2_24 *

Also Published As

Publication number Publication date
JPWO2023095249A1 (ja) 2023-06-01

Similar Documents

Publication Publication Date Title
Souyah et al. An image encryption scheme combining chaos-memory cellular automata and weighted histogram
JP6934963B2 (ja) データを暗号化する方法およびシステム
JP6413598B2 (ja) 暗号処理方法、暗号処理装置、及び暗号処理プログラム
EP2922234A1 (en) Protecting a white-box implementation against attacks
US11153068B2 (en) Encryption device, encryption method, decryption device and decryption method
EP3167569B1 (en) Method and system for providing a secure update of code on a memory-constrained device
US20120314857A1 (en) Block encryption device, block decryption device, block encryption method, block decryption method and program
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
US10326589B2 (en) Message authenticator generating apparatus, message authenticator generating method, and computer readable recording medium
CN110169010B (zh) 同态运算装置、加密系统和计算机能读取的存储介质
US11463235B2 (en) Encryption device, encryption method, program, decryption device, and decryption method
US20200160755A1 (en) Encryption device, encryption method, decryption device, and decryption method
US11764945B2 (en) Data processing device, method, and computer program
Ahmad et al. Distributed text-to-image encryption algorithm
JP7136226B2 (ja) 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラム
US11500786B2 (en) System and method for protecting memory encryption against template attacks
WO2015125293A1 (ja) 暗号システム及び暗号プログラム
WO2023095249A1 (ja) 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体
WO2020044485A1 (ja) メッセージ認証装置、メッセージ認証方法及びメッセージ認証プログラム
WO2022239163A1 (ja) 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体
JP7126635B2 (ja) 再暗号化装置、暗号システム、再暗号化方法及び再暗号化プログラム
Walia et al. Multi Encryption Approach to Provide Security for Cloud Integrated Internet of Things
WO2024180612A1 (ja) 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体
Rajput et al. An improved cryptographic technique to encrypt images using extended hill cipher
KR20170005850A (ko) 암호 장치, 기억 시스템, 복호 장치, 암호 방법, 복호 방법, 암호 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 복호 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21965621

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2023563415

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE