WO2015015702A1 - 認証暗号装置、認証暗号方法および認証暗号用プログラム - Google Patents
認証暗号装置、認証暗号方法および認証暗号用プログラム Download PDFInfo
- Publication number
- WO2015015702A1 WO2015015702A1 PCT/JP2014/003382 JP2014003382W WO2015015702A1 WO 2015015702 A1 WO2015015702 A1 WO 2015015702A1 JP 2014003382 W JP2014003382 W JP 2014003382W WO 2015015702 A1 WO2015015702 A1 WO 2015015702A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- plaintext
- encryption
- block
- chunk
- final
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 182
- 238000012545 processing Methods 0.000 claims abstract description 118
- 230000006870 function Effects 0.000 claims description 292
- 238000012795 verification Methods 0.000 claims description 119
- 238000004364 calculation method Methods 0.000 claims description 99
- 238000005520 cutting process Methods 0.000 claims description 18
- 230000004913 activation Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 27
- 238000006243 chemical reaction Methods 0.000 description 13
- 230000010365 information processing Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- VIEYMVWPECAOCY-UHFFFAOYSA-N 7-amino-4-(chloromethyl)chromen-2-one Chemical compound ClCC1=CC(=O)OC2=CC(N)=CC=C21 VIEYMVWPECAOCY-UHFFFAOYSA-N 0.000 description 4
- 229910052739 hydrogen Inorganic materials 0.000 description 4
- CLVFWRBVFBUDQU-UHFFFAOYSA-N 1,4-bis(2-aminoethylamino)-5,8-dihydroxyanthracene-9,10-dione Chemical compound O=C1C2=C(O)C=CC(O)=C2C(=O)C2=C1C(NCCN)=CC=C2NCCN CLVFWRBVFBUDQU-UHFFFAOYSA-N 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- XEBWQGVWTUSTLN-UHFFFAOYSA-M phenylmercury acetate Chemical compound CC(=O)O[Hg]C1=CC=CC=C1 XEBWQGVWTUSTLN-UHFFFAOYSA-M 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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 authentication encryption device, an encryption device, a decryption device, an authentication encryption method, and an authentication encryption program that perform authentication encryption using a common key.
- Authentication encryption (Authenticated Encryption, AE) is a technology that simultaneously applies encryption and message authentication code (Message authentication code, MAC) to plaintext messages using a secret key shared in advance. .
- MAC message authentication code
- the basic input / output of authentication encryption is shown below.
- Alice and Bob are considered as two parties sharing the secret key K, and a message encrypted with authentication encryption is communicated from Alice to Bob.
- Authenticated encryption function is AEnc_K and decryption function is ADec_K.
- M be the plaintext to be encrypted, and introduce a variable N called the initial vector.
- the initial vector N is generated by Alice and is usually a short fixed-length random number or a counter.
- AEnc_K is an encryption function using the key K as a parameter
- C is a ciphertext
- T is an authentication tag, which is a fixed-length alteration detection variable.
- Alice transmits a set (N, C, T) of the initial vector N, the obtained ciphertext C, and the obtained authentication tag T to Bob.
- ADec_K is a decryption function with the key K as a parameter. If there was tampering in the middle of communication and (N ', C', T ') was different from (N, C, T), ADec_K (N', C ', T') was tampered If ⁇ bot is assumed below, ⁇ bot is output.
- ADec_K (N', C ', T') has the same content as plaintext M encrypted by Alice.
- the decrypted plaintext M ′ is output. Thereby, M is correctly decoded.
- header H is information that is not subject to encryption but is subject to message authentication.
- the header H is used to represent a protocol version.
- Alice transmits the set (N, H, C, T) of the initial vector N, the header H, the obtained ciphertext C, and the obtained authentication tag T to Bob.
- Such an authentication cipher with header H added to input / output is sometimes called an authentication cipher with header (Authenticated Encryption with Associated Data, AEAD). ".
- One of the methods for realizing authentication encryption is based on generic combination. This is a method using a combination of a secure encryption method and a secure MAC method.
- Enc_XX represents an encryption function used in the encryption method
- MAC_XX represents a MAC assignment function used in the MAC method.
- An approach to solve this problem is a one-pass authentication encryption method using block cipher.
- OCB mode an authentication encryption method called OCB mode described in Patent Document 1 (hereinafter referred to as OCB method).
- the OCB method is an extension of the block cipher called Tweakable block cipher described in Non-Patent Document 2.
- Tweakable block cipher is an authentication encryption method that introduces an auxiliary variable called Tweak during encryption and decryption.
- TE_K (Tw, *) constitutes a permutation on the n-bit space.
- Tw represents an auxiliary variable Tweak
- * represents an arbitrary variable.
- the auxiliary variable Tw is a variable necessary for decryption, but even if it is disclosed, it does not affect the security of the Tweakable block cipher.
- an ordinary block cipher encryption function is converted into a Tweakable block cipher encryption function, that is, an encryption function including Tweak, using the XEX mode described in Non-Patent Document 3.
- the initial vector N and plaintext M (M [1], M [2], ..., M [m]) are encrypted by calling the TE_K function as shown below.
- Each M [i] is an n-bit block.
- (N, i) is used as a variable corresponding to Tweak.
- N is an initial vector
- i is a block identification number.
- T TE_K ((N, m + 1), SUM)
- the conversion formula in XEX mode is expressed as follows. Hereinafter, this conversion formula may be referred to as an XEX conversion formula.
- TE_K ((N, i), M [i]) E_K (M [i] xor mask_K (N, i)) xor mask_K (N, i)
- E_K is used for mask calculation, but the OCB method allows efficient sequential processing. That is, it is possible to efficiently calculate mask_K (N, i + 1) from mask_K (N, i).
- FIG. 19 is an explanatory diagram schematically showing encryption processing in the OCB method.
- a block indicated by a broken line corresponds to TE_K ((N, i), *).
- the process of calculating the mask sequence is omitted.
- E_K is called once for calculation of L and authentication tag T for obtaining a mask sequence, but one-pass processing is possible as a whole. Further, the processing of each block can be performed in parallel except for the calculation of the mask sequence. More specifically, the number of block cipher calls for m blocks of plaintext is almost m, which is about half that of other two-pass authentication ciphers such as the CCM method and GCM (Galois / Counter Mode) method described above. The amount of processing.
- FIG. 20 is an explanatory view schematically showing a decoding process in the OCB method. While the CCM mode and GCM realize the decryption process as the authentication cipher only with the block cipher encryption function E_K, the OCB method uses the block cipher cipher to decrypt the Tweakable block cipher as shown in FIG. In addition to the encryption function E_K, a block cipher decryption function D_K is also required.
- AES which is a typical block cipher
- AES is generally known to be slow in decryption processing compared to encryption. This means that encryption processing and decryption processing in the OCB method using AES, etc. This means that there is a difference in performance.
- the present invention realizes an authentication cipher that is a one-pass and one-rate authentication cipher and that can be processed in parallel and that can execute the entire encryption and decryption processing with only one encryption function.
- An object is to provide an authentication encryption device, an encryption device, a decryption device, an authentication encryption method, and an authentication encryption program.
- the authentication cipher apparatus applies a 2-round Feistel structure using an encryption function including an auxiliary variable as a round function to an input plaintext or ciphertext every two blocks. And an authentication encryption unit for generating the plaintext.
- the encryption device applies encryption to a plaintext that is input by applying a 2-round Feistel structure using an encryption function including an auxiliary variable as a round function for every two blocks. Means are provided.
- the decryption device generates a plaintext decrypted by applying a 2-round Feistel structure using an encryption function with an auxiliary variable as a round function for each input ciphertext for each block.
- Decoding means is provided.
- the information processing apparatus applies a 2-round Feistel structure in which an encryption function including an auxiliary variable is used as a round function for every two blocks of input plaintext or ciphertext. And generating a ciphertext or a decrypted plaintext.
- the authentication encryption program according to the present invention applies a 2-round Feistel structure in which an encryption function including an auxiliary variable is used as a round function for every two blocks for input plaintext or ciphertext.
- a process for generating a ciphertext or a decrypted plaintext is executed.
- an authentication cipher that is a one-pass and one-rate authentication cipher that can be processed in parallel and that can execute the entire encryption and decryption process with only one encryption function. .
- FIG. 10 is an explanatory diagram schematically showing an example of a processing flow of the entire encryption processing in the second embodiment.
- FIG. 10 is an explanatory diagram schematically showing an example of the processing flow of the entire decoding process in the second embodiment.
- FIG. 10 is an explanatory diagram schematically showing an example of the processing flow of the entire encryption processing in the third embodiment.
- FIG. 16 is an explanatory diagram schematically showing an example of the processing flow of the entire decoding processing in the third embodiment.
- 2 is a block diagram illustrating a configuration example of an encryption device 100 that supports parallel processing.
- FIG. is a block diagram which shows the structural example of the decoding apparatus 200 corresponding to a parallel process.
- It is a block diagram which shows the minimum structural example of the authentication encryption apparatus of this invention.
- It is a block diagram which shows the other structural example of the authentication encryption apparatus of this invention.
- It is explanatory drawing which shows typically an example of the processing flow of the whole encryption process by OCB system.
- It is explanatory drawing which shows typically an example of the processing flow of the whole decoding process by OCB system.
- the present invention is an encryption method using a common secret key, and is based on a block encryption method that performs encryption for each predetermined size.
- a 2-round Feistel structure is applied every two blocks.
- an encryption function in which an auxiliary variable Tw called Tweak (adjustment value) is added to the round function of the two-round Feistel structure is used.
- Tweak adjustment value
- variable series is used as the auxiliary variable Tw introduced into the encryption function.
- a variable series used as the auxiliary variable Tw may be referred to as an “auxiliary series”.
- the auxiliary sequence is configured such that different values are input to the encryption function to be called while encryption is performed with one key.
- an auxiliary vector that combines an initial vector N that has a different value each time one plaintext is encrypted, an identifier i that identifies a chunk in units of two blocks, and j that identifies a block in the chunk and other processing.
- auxiliary variable Tw A case where a series, that is, a set of (N, i, j) is used as the auxiliary variable Tw is shown as an example, but is not limited thereto.
- an auxiliary sequence having the same value can be generated for one plaintext during encryption and decryption. For example, what value to generate the auxiliary sequence is defined in advance. The above example satisfies the above condition because the value of the auxiliary sequence is uniquely determined from the initial vector and the length of the plaintext or ciphertext.
- each block has n bits
- the number of plaintext or ciphertext blocks to be processed is 2 m
- (N, 1,1), (N , 1,2), (N, 2,1), (N, 2,2), ..., (N, m, 1), (N, m, 2) (N, m, 3) may be used as the sequence.
- the plaintext M to be encrypted is divided into chunks every two blocks.
- the auxiliary sequence N, i, 1), (N, i, 2) and the pseudorandom function F_K (*, *) with two variables and a keyed pseudorandom function
- the i-th ciphertext chunk C [2i], C [2i-1]
- the “pseudo-random function” is a name used when an encryption function is represented by its properties.
- the pseudo-random function may be, for example, a block cipher encryption function or a keyed hash function.
- FIG. 1 is an explanatory diagram schematically showing an example of the processing flow of the entire encryption processing of the present invention.
- a block surrounded by a broken line has a two-round Feistel structure, and corresponds to a processing block of encryption processing in units of two blocks.
- the first input variable is an auxiliary sequence
- F_K ((N, i, 1), *) with the auxiliary sequence (N, i, 1) as the first input variable
- Xor represents an exclusive OR for each bit.
- C [2i-1] F_K ((N, i, 1), M [2i-1]) xor M [2i]
- C [2i] F_K ((N, i, 2), C [2i-1]) xor M [2i-1] ...
- the above equation (1) is obtained by substituting the auxiliary sequence (N, i, 1) corresponding to the odd block of the i-th plaintext chunk for M [2i-1] that is the odd block of the i-th plaintext chunk.
- the result of executing the pseudo-random function F_K and the exclusive OR of M [2i], which is the even block of the i-th plaintext chunk, and the ciphertext that is the odd block of the i-th ciphertext chunk As the block C [2i-1], for the ciphertext block C [2i-1] thus obtained, the auxiliary sequence (N, i, 2) corresponding to the even block of the i-th plaintext chunk ) And the exclusive OR of the result obtained by executing the pseudo random function F_K with the odd block of the i-th plaintext chunk, M [2i-1], and the even block of the i-th ciphertext chunk Represents a ciphertext block C [2i]. Do this for all chunks.
- a block surrounded by a one-dot chain line corresponds to a processing block for authentication tag generation processing.
- the authentication tag T is obtained as follows using, for example, F_K ((N, m, 3), *) using the auxiliary sequence (N, m, 3) as the first input variable.
- F_K ((N, m, 3), *) using the auxiliary sequence (N, m, 3) as the first input variable.
- the exclusive OR in the calculation of SUM may be addition in an arbitrary group, for example, arithmetic addition.
- T F_K ((N, m, 3), SUM) ⁇ ⁇ ⁇ Formula (2)
- auxiliary sequence only needs to be configured such that different values are input to the pseudo-random function in the figure while encryption is performed with one key.
- a symbol in which an addition symbol + is written in a circle indicates that an exclusive OR is taken.
- the ciphertext C, initial vector N, and authentication tag T are sent to the decryption side.
- F_K pseudo-random function
- FIG. 2 is an explanatory diagram schematically showing an example of the processing flow of the entire decoding process of the present invention.
- a block surrounded by a broken line has a 2-round Feistel structure and corresponds to a processing block of a decoding process in units of two blocks.
- F_K ((N, i, 1), *) with auxiliary sequence (N, i, 1) as the first input variable and auxiliary sequence (N, i, 2) as the first input
- F_K ((N, i, 2), *) as variables
- plaintext blocks M ′ [2i] and M ′ [2i-1] decrypted are obtained.
- M '[2i-1] F_K ((N, i, 2), C [2i-1]) xor C [2i]
- M '[2i] F_K ((N, i, 1), M' [2i-1]) xor C [2i-1] ...
- An authentication tag T ′ for decryption verification is generated using a two-variable input pseudo-random function F_K.
- a block surrounded by a one-dot chain line corresponds to a processing block for authentication tag generation processing.
- the authentication tag T ′ for decryption verification uses, for example, F_K ((N, m, 3), *) with the auxiliary sequence (N, m, 3) as the first input variable as follows: can get.
- T ' F_K ((N, m, 3), SUM') (4)
- This decryption method can decrypt the ciphertext correctly because the 2-round Feistel structure constitutes a replacement for an arbitrary round function, so if the encryption function key and auxiliary variable are determined, the plaintext chunk and ciphertext chunk are one-to-one. This is because the correspondence and the auxiliary sequence are uniquely determined from the length of the initial vector and plaintext or ciphertext, and the same one is used for encryption and decryption.
- the 2-round Feistel structure does not require the inverse processing of the round function itself (processing to obtain the input from the output of the function) in the processing in each round, and the inverse processing of the round function as a whole is not necessary. It is.
- the encryption function is used for the round function, reverse processing of the encryption function is not required in conversion from plaintext to ciphertext.
- the authentication tag generation process simply performs the same process during encryption and decryption, this process does not require reverse processing of the encryption function.
- the security of this method can be reduced to the security of the encryption function.
- the present system is configured to generate an authentication tag from the SUM of even blocks to which the encryption function is applied twice in a 2-round Feistel structure.
- the authentication encryption can be realized only by the encryption function, so that it becomes possible to use a hash function with a key such as HMAC, for example.
- a hash function with a key such as HMAC, for example.
- various cryptographic techniques can be used as a base.
- the processing is independent in units of two blocks, and the plaintext block from which the plaintext checksum for the authentication tag is obtained can be obtained by sequential calculation processing, so online calculation is possible.
- an authentication encryption system to which an authentication encryption method for plaintext divided into even blocks is applied will be described.
- an authentication encryption system to which an authentication encryption method that can be applied even when the size of the final block is less than the block size or an odd block will be described will be described.
- FIG. 3 is a block diagram illustrating an example of an apparatus included in the authentication encryption system of the present embodiment.
- the system of this embodiment includes an information processing apparatus 50.
- the information processing apparatus 50 includes a calculation unit 51, a storage unit 52, and an input / output unit 53.
- the information processing apparatus 50 is, for example, a personal computer that operates according to a program.
- the calculation unit 51, the storage unit 52, and the input / output unit 53 are realized by a CPU, a memory, and various input / output devices (for example, a keyboard, a mouse, a network interface unit, and the like).
- FIG. 3 shows an example in which one device includes all of the calculation unit 51, the storage unit 52, and the input / output unit 53.
- the calculation unit 51, the storage unit 52, and the input / output unit 53 are included in a plurality of devices. It may be distributed.
- FIG. 4 is a block diagram illustrating an example of a functional configuration of the authentication encryption system according to the present embodiment.
- the authentication encryption system may include an encryption device 100 including an encryption unit 10 and a decryption device 200 including a decryption unit 20.
- the encryption device 100 and the decryption device 200 are realized by an information processing device 50 as shown in FIG. 3, for example.
- the encryption unit 10 includes an input unit 101, an auxiliary variable generation unit 102, a 2-round Feistel encryption unit 103, a tag calculation unit 104, and an output unit 105.
- the length of one block is n bits.
- the input means 101 inputs a plaintext M to be encrypted and an initial vector N.
- the input means 101 is realized by a character input device such as a keyboard.
- plaintext M (M [1], ..., M [2m]) having an even number of blocks is input.
- the initial vector N is assumed to be n bits from now on.
- appropriate padding is performed, or a variable length input pseudo-random function (for example, CMAC or HMAC) with n-bit output is separately provided. Possible) to reduce to n bits.
- padding means that a fixed sequence is concatenated behind a binary sequence to have a specific length. For example, there are 0 padding and 10 * padding (the first is 1 and the back is 00 ... 0). The latter has the effect of preventing the same value after padding in a sequence having a different length. In this case, 0 is sufficient.
- Auxiliary variable generation means 102 generates an auxiliary variable generally called a Tweak or an adjustment value to be given to the pseudo-random function in the encryption process based on the initial vector N and the plaintext M length information.
- auxiliary series is generated as auxiliary variables.
- One auxiliary sequence is represented by a vector having three elements of the form (N, i, j) for positive integers i and j.
- the auxiliary sequences are (N, 1,1), (N, 1,2), (N, 2,1), (N, 2,2), ..., (N, m-1,1), (N, m-1,2), (N, m, 1), (N, m, 2), (N, m, 3). Except for the last one, it is used for encryption, and only the last one is used for generating an authentication tag.
- the 2-round Feistel encryption unit 103 is a unit that executes each block process surrounded by a broken line in FIG. 1 and divides the plaintext M in units of two blocks, and a pseudo-random function F_K (* , *) Is used for encryption.
- the two-variable input pseudo-random function F_K (*, *) is an n-bit output function with a key. For any x, y, F_K (x, y) is a random number for those who do not know the key K. The output is indistinguishable.
- the first input variable of F_K (*, *) contains one of the auxiliary sequences
- the second contains an n-bit variable that is a plaintext block to be encrypted.
- MC [i] is called the i-th plaintext chunk.
- CC [i] i (C [2i-1], C [2i]), and CC [i], which is one of them, is called the i-th ciphertext chunk.
- F_K (*, *) can be realized by various cryptographic functions.
- a block cipher encryption function may be used.
- the sequence mask_K (N calculated from the secret key K is (N, i, j) and Tweak is the same as the XEX conversion formula. , i, j) can be added to the block cipher input.
- the conversion formula in this mode is expressed as follows. Hereinafter, this conversion formula may be referred to as an XE conversion formula.
- Y F ((N, i, j), X).
- FIG. 5 is an explanatory diagram schematically showing an implementation example of the two-variable input pseudo-random function used in the present embodiment using the XEX mode of block cipher.
- FIG. 5 shows an example of a two-variable input pseudo-random function realized by the above-described method.
- FIG. 6 (a) is an explanatory diagram schematically showing an example of the processing flow of the entire encryption processing of the present embodiment when the pseudorandom function with two variables is realized using the XEX mode of block cipher. It is.
- B 2 ⁇ i 3 ⁇ j L can be calculated very efficiently using past calculation results.
- various other methods using the XEX mode described in Non-Patent Document 2 are possible.
- the above XE conversion equation does not add mask_K output outside, but this requires a decoding function TD_K for TE_K in the OCB method.
- the processing is possible only with TE_K.
- a keyed hash function such as HMAC can be used for F_K (*, *).
- Y F_K ((N, i, j), ⁇ X) can be calculated by applying appropriate lossless encoding to (N, i, j) and then connecting to X as the input of HMAC. Good.
- FIG. 7 is an explanatory diagram schematically illustrating an implementation example using a keyed hash function of the two-variable input pseudo-random function used in the present embodiment.
- FIG. 7 shows an example of a two-variable input pseudo-random function realized by the above-described method.
- ” symbol in FIG. 7 represents bit concatenation.
- the output is HMAC_K (N
- F_K (*, *) can be realized by using HMAC_K instead of E_K shown in FIG.
- the tag calculation means 104 is a means for executing the block processing enclosed by the one-dot chain line in FIG. 1, and uses the auxiliary sequence output from the auxiliary variable generation means 102 and the input plaintext to perform message authentication. Calculate the authentication tag.
- the tag calculation means 104 in the present embodiment first uses a plaintext checksum SUM used for generating an authentication tag as the following by using plaintext even blocks M [2], M [4], ..., M [2m] Asking.
- SUM plaintext checksum
- the exclusive OR in the calculation of SUM may be addition in an arbitrary group, for example, arithmetic addition.
- the output unit 105 may output to a higher-level application that has requested encryption, or may output to a communication path via a communication device or the like. Further, it may be output to a computer display or a printer.
- the decoding unit 20 includes an input unit 201, an auxiliary variable generation unit 202, a 2-round Feistel decoding unit 203, a decoding verification tag calculation unit 204, a determination unit 205, and an output unit 206.
- the input unit 201 inputs the ciphertext C to be decrypted, the initial vector N, and the authentication tag T associated with the ciphertext.
- ciphertext C (C [1], ..., C [2m]) having a plurality of blocks is input.
- the initial vector N is assumed to be n bits from now on. However, if it is short, appropriate padding is performed, or a pseudo-random function with n-bit output is applied to reduce it to n bits.
- the auxiliary variable generation unit 202 generates auxiliary variables to be given to the pseudo random function in the decryption process based on the initial vector N and the length information of the ciphertext C.
- the same output as the auxiliary variable generation unit 102 of the encryption unit 10 is performed as the auxiliary variable.
- the 2-round Feistel decryption means 203 is a means corresponding to each block surrounded by a broken line in FIG. 2, and the ciphertext C is divided into two blocks, and the auxiliary sequence output from the auxiliary variable generation means 202 and the two-variable input Decoding is performed using the pseudo-random function F_K (*, *).
- the two-variable input pseudo-random function F_K (*, *) used by the two-round Feistel decryption means 203 is the same as F_K (*, *) used by the two-round Feistel encryption means 103 of the encryption means 10. is there.
- the decryption verification tag calculation unit 204 is a unit corresponding to the block surrounded by the one-dot chain line in FIG. 2, and the auxiliary sequence output from the auxiliary variable generation unit 202 and the plaintext M decrypted by the two-round Feistel decryption unit 203. Using ', calculate an authentication tag T for decryption verification for verifying the decryption result.
- the two-variable input pseudo-random function F_K (*, *) used by the decryption verification tag calculation means 204 is the same as F_K (*, *) used by the tag calculation means 104 of the encryption means 10.
- the decryption verification tag calculation means 204 first uses the decrypted plaintext M ′ to generate the decryption verification plaintext checksum SUM ′, and decrypts the plaintext even block M ′ [2], M ′ [4],. .. Using and M '[2m], calculate as follows.
- FIG. 6B is an explanatory diagram schematically showing an example of the entire decryption processing flow of the present embodiment when the pseudorandom function with two variables is realized using the XEX mode of block cipher. is there.
- the plaintext M ′ decrypted by the same process as the encryption process shown in FIG. 6 (a) can be performed only by changing the parameter given from the outside to the pseudo-random function with two variables. It can be seen that an authentication tag T ′ for decryption verification is obtained.
- the determination unit 205 compares the input authentication tag T with the decryption verification authentication tag T ′ generated by the decryption verification tag calculation unit 204, and if they match, the 2-round Feistel decryption unit 203
- the decrypted plaintext M ′ (M ′ [1],..., 'M ′ [2m]) to be output is determined to be correct, and the decryption is determined to be successful.
- T ′ and T are different, it is determined that decoding has failed because (N, C, T) input by the input means 201 has been altered.
- the input unit 101 and the input unit 201 are realized by various input devices such as a keyboard, a mouse, and a network interface unit included in the device, and a control unit thereof.
- the output unit 105 and the output unit 206 are realized by, for example, a display device included in the apparatus, a device interface unit with a printer, various output devices such as a network interface unit, and a control unit thereof.
- auxiliary variable generation means 102, auxiliary variable generation means 202, 2-round Feistel encryption means 103, 2-round Feistel decryption means 203, tag calculation means 104, decryption verification tag calculation means 204, determination means 205 are, for example, a device Is implemented by a CPU that operates according to a program.
- the encryption means 10 and the decryption means 20 each include a control means that coordinates encryption processing or decryption processing such as calling each of the above means as appropriate.
- FIG. 8 and 9 are flowcharts showing an example of the operation of the authentication encryption system of this embodiment.
- FIG. 8 is a flowchart showing an example of the encryption operation
- FIG. 9 is a flowchart showing an example of the decryption operation.
- the auxiliary variable generating means 102 generates an auxiliary sequence based on the initial vector N and the plaintext M length information (step S102).
- it can be divided into 2m blocks, and (N, 1,1), (N, 1,2), (N, 2,1), (N, 2,2), ..., ( N, m-1,1), (N, m-1,2), (N, m, 1), (N, m, 2), (N, m, 3) are output. Note that it is not necessary to generate all the auxiliary sequences at once, and if it is determined what auxiliary sequence to use, each time an encryption function is called, an auxiliary sequence corresponding to the encryption function is generated, You may make it output.
- the 2-round Feistel encryption unit 103 divides the plaintext M in units of two blocks, and uses the auxiliary sequence generated by the auxiliary variable generation unit 102 and a predetermined pseudorandom function F_K (*, *)
- the ciphertext C (C [1], ..., C [2m]) is obtained (steps S103 to S106).
- the tag calculation means 104 calculates a plaintext checksum SUM using an even block of plaintext M (step S107), and the obtained SUM and an auxiliary sequence (N, m, 3) for generating an authentication tag Is used to calculate the authentication tag T (step S108).
- the auxiliary variable generating means 202 generates an auxiliary sequence based on the initial vector N and the length information of the ciphertext C (step S202).
- it can be divided into 2m blocks, and (N, 1,1), (N, 1,2), (N, 2,1), (N, 2,2), ..., ( N, m-1,1), (N, m-1,2), (N, m, 1), (N, m, 2), (N, m, 3) are output. Note that it is not necessary to generate all the auxiliary sequences at once, and if it is determined what auxiliary sequence to use, each time an encryption function is called, an auxiliary sequence corresponding to the encryption function is generated, You may make it output.
- the two-round Feistel decryption unit 203 divides the ciphertext C into units of two blocks, and uses the auxiliary sequence generated by the auxiliary variable generation unit 202 and a predetermined pseudorandom function F_K (*, *).
- the decrypted plaintext M ′ (M ′ [1], ..., M ′ [2m]) is obtained (steps S203 to S206).
- the decryption verification tag calculation means 204 calculates a plaintext checksum SUM ′ for decryption verification using the decrypted plaintext M ′ (step S207), and the obtained SUM ′ and authentication tag generation An authentication tag T ′ for decryption verification is calculated using the auxiliary sequence (N, m, 3) (step S208).
- the determination unit 205 compares the input authentication tag T with the decryption verification authentication tag T ′ (step S209). When the two are equal, it is determined that the decoding is successful, and when they are not equal, it is determined that the decoding is unsuccessful.
- the output unit 206 outputs the decrypted plaintext M ′ or the error message based on the determination result of the determination unit 205.
- the output means 206 outputs the decrypted plaintext M ′ when the result of determination by the determination means 205 is successful (step S210), and outputs an error message when decryption fails (step S211).
- an authentication encryption means 30 including an encryption means 10 and a decryption means 20 is provided, in which the decryption means 20 is an auxiliary variable generation means 102 of the encryption means 10, a two-round Feistel cipher.
- the converting means 103 and the tag calculating means 104 can be used in place of the auxiliary variable generating means 202, the two-round Feistel decoding means 203, and the decoding verification tag calculating means 204. Even when one device includes both the encryption unit 10 and the decryption unit 20, each unit can be divided into a plurality of devices.
- the caller may be allowed to specify the initial vector and length.
- the caller inputs to the upper two-variable input pseudo-random function F_K (*, *) and the lower two-variable input pseudo-random function F_K (* , *) Can be specified.
- the tag calculation means 104 is shared, for example, the caller can specify a plaintext checksum.
- the authentication encryption method of the present invention performs encryption and decryption by calling S + 1 times the pseudorandom function F_K (*, *) with two variables for plaintext of S blocks. Because.
- the two-variable input pseudo-random function F_K (*, *) uses the encryption function E (*) of the block cipher when the encryption function E is changed to the encryption function TE (*, *) corresponding to the Tweakable block cipher.
- E-> TE conversion method encryption and decryption can be realized by calling the block cipher encryption function E (*) at most S + h times. It becomes.
- Embodiment 2 The authentication encryption system in the second embodiment corresponds to the case where the object of encryption or decryption has an even number of blocks but the last block has a length of less than n bits. Since the basic configuration is the same as that of the first embodiment, only different points will be described below.
- bit length s of the plaintext last block M [2m] having even blocks is s ⁇ n.
- a second auxiliary sequence for generating an authentication tag is newly defined.
- (N, m, 4) is newly defined.
- a two-variable input pseudorandom function F_K (*, *), which gives an auxiliary sequence (N, m, 1) to a plaintext block M [2m-1] that is an odd block of the mth plaintext chunk. *) Is applied.
- the obtained output is used as an intermediate output Z, and an s-bit binary sequence Z_s obtained by extracting s bits from an arbitrary fixed portion of the intermediate output Z, and a plaintext block M that is an even block of the mth plaintext chunk
- the ciphertext block C_s [2m] which is an even block of the mth ciphertext chunk, is obtained by taking an exclusive OR with [2m].
- C_s [*] means that the size of the corresponding ciphertext block is s bits.
- s ⁇ n-bit padding is performed on the s-bit ciphertext block C_s [2m] obtained in this manner, and an auxiliary sequence (N, m, 2) is performed on the resulting C_n [2m].
- F_K pseudo-random function
- Ciphertext block C [2m-1] which is an odd block of the m-th ciphertext chunk.
- the m-th ciphertext chunk CC [m] (C [2m ⁇ 1], C_s [2m]) is obtained in this way.
- An example of a process for obtaining the m-th ciphertext chunk in the present embodiment is expressed as follows.
- C_s [2m] cut_s (Z) xor M [2m]
- C [2m-1] F_K ((N, m, 2), pad_n (C_s [2m]))) xor M [2m-1]
- Z F_K ((N, m, 1), M [2m-1]) ...
- cut_s (A) represents a process of extracting s bits from an arbitrary fixed location in the binary sequence A.
- cut_s (A) may be msb_s (A), for example.
- msb_s (A) is processing for extracting s bits from the most significant binary sequence A.
- Pad_n (A) represents a process of performing padding using an arbitrary fixed bit string so that the binary sequence A has n bits. In this example, the padding is 10 *. By padding with 10 *, it is possible to prevent the same value after padding for sequences with different lengths.
- the sequence is not limited to the above example as long as it has a format that does not have the same value after padding in a sequence having a different length.
- the authentication tag T is obtained as follows.
- the plaintext checksum SUM is represented by the even-numbered blocks M [2], ..., M [2 (m-1)] of the plaintext chunks up to m ⁇ 1, and the intermediate output Z obtained by the above processing.
- the ciphertext block C_s [2m] which is an even-numbered block of the m-th ciphertext chunk obtained by the above process, is obtained using C_n [2m] padded to n bits. For example, as shown in the following equation (10), it is obtained by taking these exclusive ORs.
- C_n [2m] xor Z is used instead of M [2m], compared to the plaintext checksum generated in the first embodiment.
- FIG. 11 is an explanatory diagram schematically showing an example of the processing flow of the entire encryption processing in the present embodiment.
- the encryption processing in the present embodiment is different in the calculation method of the plain text checksum from the auxiliary sequence used for generating the authentication tag, the encryption processing for the chunk including the even number block whose bit size is less than n.
- the second embodiment is the same as the first embodiment.
- 10 *” represents the result of padding C_s [2m] by 10 *.
- the auxiliary variable generation unit 102 uses the auxiliary sequence (N, 1,1). ), (N, 1,2), (N, 2,1), (N, 2,2),..., (N, m, 1), (N, m, 2), (N, m, 4 ) And the above-described processing for the m-th plaintext chunk and the ciphertext chunk CC [m] and the intermediate output Z are output, and authentication is performed by the above-described processing.
- Second tag calculating means for calculating the tag T may be provided.
- the two-round Feistel encryption unit 103 and the tag calculation unit 104 are configured according to the size of the plaintext according to the first embodiment. You may switch and perform operation
- s ⁇ n-bit padding is performed on the s-bit ciphertext block C_s [2m], which is an even block of the m-th ciphertext chunk.
- a 2-variable input pseudo-random function F_K (*, *) with an auxiliary sequence (N, m, 2) is applied to the n-bit ciphertext block C_n [2m] bits obtained by padding.
- the exclusive OR of the result and the ciphertext block C [2m-1] corresponding to the odd block of the mth ciphertext chunk corresponds to the odd block of the mth decrypted plaintext chunk.
- the decrypted plaintext block M ′ [2m ⁇ 1] is obtained.
- a pseudorandom function F_K (*, *) with two variables that gives an auxiliary sequence (N, m, 1) to the decrypted plaintext block M ′ [2m ⁇ 1] thus obtained Apply.
- the obtained output is set as an intermediate output Z ′ for decryption, and an s-bit binary sequence Z_s ′ obtained by extracting s bits from an arbitrary fixed portion of the decryption intermediate output Z ′ and the m-th ciphertext chunk
- the decrypted plaintext block M_s ′ [2m] corresponding to the even block of the mth decrypted plaintext chunk is obtained by performing an exclusive OR with the ciphertext block C_s [2m] that is an even block of .
- M_s ′ [*] means that the size of the corresponding decrypted plaintext block is s bits.
- the m-th decrypted plaintext chunk MC ′ [m] (M ′ [2m ⁇ 1], M_s ′ [2m]) is obtained in this way.
- An example of the process for obtaining the m-th decrypted plaintext chunk in this embodiment is expressed as follows.
- M '[2m-1] F_K ((N, m, 2), pad_n (C_s [2m]))) xor C [2m-1]
- M_s '[2m] cut_s (Z') xor C_s [2m]
- Z ' F_K ((N, m, 1), M' [2m-1]) ...
- an authentication tag for decryption verification is obtained as follows.
- the plaintext checksum SUM ′ for decryption verification using the decrypted plaintext is converted to an even block M ′ [2], ..., M ′ [2 (m -1)], intermediate output Z ′ for decryption obtained by the above process, and ciphertext block C_s [2m], which is an even block of the input m-th ciphertext chunk, is padded to n bits C_n [ 2m].
- formula (12) it is obtained by taking these exclusive ORs.
- C_n [2m] xor Z ′ is used instead of M ′ [2m], compared to the plaintext checksum for decryption verification generated in the first embodiment.
- FIG. 12 is an explanatory view schematically showing an example of the processing flow of the entire decoding process in the present embodiment.
- the decryption process according to the present embodiment includes an authentication tag generation auxiliary sequence, a decryption process for a chunk including an even block having a bit size of less than n, and a plaintext checksum calculation method for decryption verification. Except for the difference, it may be the same as in the first embodiment.
- 10 *” represents the result of 10 * padding of C_s [2m].
- the decryption means 20 of this embodiment performs decryption by performing the above-described processing on the mth ciphertext chunk.
- a second 2-round Feistel decryption means for outputting the plaintext chunk MC ′ and the decryption intermediate output Z ′, and a second decryption verification tag calculation means for calculating the decryption verification authentication tag T ′ by the above-described processing.
- Auxiliary variable generation means 202 includes auxiliary sequences (N, 1,1), (N, 1,2), (N, 2,1), (N, 2,2),..., (N, m, 1), (N, m, 2), (N, m, 4) may be generated.
- the two-round Feistel decryption unit 203 and the decryption verification tag calculation unit 204 described above are each configured to switch between the operation of the first embodiment and the above-described operation according to the plaintext size. It may be.
- the encryption process and the decryption process for the m-th block are merely switched between the upper and lower stages. For example, if the upper and lower stages are divided into parts, the encryption process is performed. And decryption processing. Also, the generation of the authentication tag can be shared if the parameters to be given are specified by the caller, as in the first embodiment.
- the last chunk is configured so that the plaintext chunk and the ciphertext chunk correspond one-to-one if the auxiliary input and the key are determined, it can be correctly decrypted.
- the inverse process of the encryption function F_K itself is not required in the process in each round, and in this embodiment, the authentication tag for decryption verification is obtained by the same method as the encryption process. Similar to the first embodiment, it is not necessary to reverse the encryption function F_K itself as a whole.
- Embodiment 3 The authentication encryption system in the third embodiment corresponds to the case where the object of encryption or decryption has an odd number of blocks. Since the basic configuration is the same as that of the first embodiment, only different points will be described below.
- the authentication encryption is performed as follows. Do.
- the third and fourth auxiliary sequences for generating an authentication tag are newly defined.
- (N, m, 5) and (N, m, 6) are newly defined.
- the auxiliary sequence (N, m, 2) corresponding to the even block of the final chunk is not necessary.
- an n-bit binary sequence consisting of all 0s is first prepared, and a two-variable input pseudo-random function F_K (*, *) that gives an auxiliary sequence (N, m, 1) to the binary sequence Apply. Then, an s-bit binary sequence Z_s obtained by extracting s bits from an arbitrary fixed portion of the obtained output, and an s-bit plaintext block M_s [2m ⁇ 1 that is an odd block of the mth plaintext chunk and the final block of plaintext ] To obtain the ciphertext block C_s [2m-1] corresponding to the odd block in the m-th ciphertext chunk, that is, the last block of the ciphertext.
- the m-th ciphertext chunk CC [m] (C_s [2m-1]) is obtained in this way.
- An example of a process for obtaining the m-th ciphertext chunk in the present embodiment is expressed as follows.
- the authentication tag T is obtained as follows.
- the plaintext checksum SUM is set to an even block M [2], ..., M [2 (m-1) of plaintext chunks up to m ⁇ 1. ]
- the plaintext block M [2m-1] which is the final block. For example, as shown in the following formula (15), it is obtained by taking these exclusive ORs.
- the plaintext checksum SUM is set to the even blocks M [2], ..., M [2 (m-1)] of the plaintext chunks up to the m-1th
- the block is obtained using M_n [2m-1] obtained by padding an s-bit plaintext block M_s [2m-1], which is a block, to n bits. For example, as shown in the following equation (16), it is obtained by taking these exclusive ORs.
- M_n [2m-1] (M [2m-1] or M_s [2m-1] is extended to n bits instead of M [2m]. Is different).
- FIG. 13 is an explanatory diagram schematically showing an example of the processing flow of the entire encryption processing in the present embodiment.
- the encryption processing in the present embodiment is the same as that in the first embodiment except that the encryption processing for the m-th chunk is different from the generation processing of the authentication tag.
- 10 *” represents the result of padding 10 * padded plaintext block M_s [2m] of s bits.
- the 2-round Feistel encryption means 103 and the tag calculation means 104 are the operations of the first embodiment according to the plaintext size. The operation described above may be switched and executed. Note that the auxiliary variable generation unit 102, the two-round Feistel encryption unit 103, and the tag calculation unit 104 perform the operations of the first embodiment, the second embodiment, and the above-described operations according to the size of the plain text. As long as the number of blocks is an even number, the number of blocks is an odd number, and the case where the final block is less than n size can be handled.
- the m-th decrypted plaintext chunk MC ′ [m] (M_s ′ [2m ⁇ 1]) is obtained in this way.
- An example of the process for obtaining the m-th decrypted plaintext chunk in this embodiment is expressed as follows.
- M_s' [2m-1] cut_s (F_K ((N, m, 1), 0 ⁇ n)) xor C_s [2m-1] ...
- the plaintext checksum SUM ′ for decryption verification is set to an even block M ′ [2], ..., M ′ [ 2 (m ⁇ 1)] and M_n ′ [2m ⁇ 1] obtained by padding the final block s-bit plaintext block M_s ′ [2m ⁇ 1] into n bits.
- M ′ [2] ..., M ′ [ 2 (m ⁇ 1)]
- M_n ′ [2m ⁇ 1] obtained by padding the final block s-bit plaintext block M_s ′ [2m ⁇ 1] into n bits.
- M_n ′ [2m ⁇ 1] M ′ [2m ⁇ 1] or M_s ′ [2m -1] extended to n bits.
- FIG. 14 is an explanatory diagram schematically showing an example of the processing flow of the entire decoding process in the present embodiment.
- the decryption process in the present embodiment may be the same as that in the first embodiment except that the decryption process for the m-th ciphertext chunk is different from the process for generating the authentication tag for decryption verification.
- 10 *” represents the result of padding 10 * padded plaintext block M_s ′ [2m ⁇ 1] of s bits.
- the 2-round Feistel decryption means 203 and the decryption verification tag calculation means 204 are the first implementation according to the size of the ciphertext.
- the operation of the embodiment and the above-described operation may be switched and executed.
- the auxiliary variable generation unit 202, the two-round Feistel decryption unit 203, and the decryption verification tag calculation unit 204 are described above with respect to the operations of the first embodiment and the second embodiment, depending on the size of the ciphertext. As long as the operation is switched and executed, it is possible to deal with any case where the number of blocks is an even number, an odd number, or a final block of less than n size.
- the encryption process and the decryption process for the m-th block are the same in the processing contents except for the parameters to be given. Therefore, as in the first embodiment, the parameters to be given are determined by the caller. If specified, it can be shared. Also, the generation of the authentication tag can be shared if the parameters to be given are specified by the caller, as in the first embodiment.
- the last chunk is configured so that the plaintext chunk and the ciphertext chunk correspond one-to-one if the auxiliary input and the key are determined, it can be correctly decrypted.
- the inverse process of the encryption function F_K itself is not required in the process in each round, and in this embodiment, the authentication tag for decryption verification is obtained by the same method as the encryption process. Similar to the first embodiment and the second embodiment, the reverse of the encryption function F_K itself is unnecessary as a whole.
- FIG. 15 is a block diagram showing a configuration example of the encryption device 100 that supports parallel processing.
- FIG. 16 is a block diagram illustrating a configuration example of a decoding device 200 that supports parallel processing.
- FIG. 15 by providing a plurality of two-round Feistel encryption means 103, encryption processing for each plaintext chunk can be processed in parallel in units of two blocks.
- some 2-round Feistel encryption means 103 operate as second 2-round Feistel encryption means or 1-round Feistel encryption means depending on the size of plain text.
- the tag calculation means 104 operates as a second tag calculation means or a third tag calculation means according to the plaintext size. Also, as shown in FIG.
- decryption processing for each ciphertext chunk can be processed in parallel in units of two blocks.
- some 2-round Feistel decryption means 203 operate as second 2-round Feistel decryption means or 1-round Feistel decryption means depending on the size of the ciphertext.
- the decryption verification tag calculation means 204 operates as a second decryption verification tag calculation means or a third decryption verification tag calculation means according to the size of the ciphertext.
- the authentication tag T2 ′ for final decryption verification using g_K ′ (*) T ′ xor g_K ′ ( What is necessary is to find H) and see the match with the received T2.
- K ′ is a key selected independently from the key of the pseudorandom function F_K (*, *) with two variables.
- the key for the entire process is a (K, K ′) pair.
- variable length input pseudo-random function g_K ' can be realized by CMAC, HMAC, etc., for example.
- CMAC and HMAC are encryption functions that use keys to shorten any input to a fixed-length output.
- block function E_K 'with K' as a key
- chain processing called CBC_MAC for each block of header H (for example, H [1], ..., H [h]) And termination processing.
- Y [0] 00..0
- Y [i] E_K '(H [1] xor Y [i-1])
- i 1,2, ..., (h-1)
- Y [h] E_K '(H [h] xor Y [i-1] xor 2 * E_K' (00..0))
- H [h] is n-bit
- Y [h] E_K '((H [h]
- H [h] is less than n-bit I do.
- 2 * and 4 * represent multiplication processing with a constant on a finite field.
- FIG. 17 is a block diagram showing a minimum configuration example of the authentication encryption apparatus according to the present invention.
- the authentication encryption apparatus according to the present invention includes authentication encryption means 60 as a minimum component.
- the authentication encryption means 60 has a two-round Feistel structure using an encryption function including an auxiliary variable for a round function for every two blocks of input plaintext or ciphertext. Apply to generate ciphertext or decrypted plaintext.
- the encryption function is used only in one direction to perform the encryption process and the decryption process.
- An authentication cipher capable of executing the entire encryption and decryption processing with only one encryption function can be realized.
- FIG. 18 is a block diagram showing a more specific configuration example of the authentication encryption unit 60
- FIG. 18 (a) shows a configuration example of the authentication encryption unit 60 when the authentication encryption device is an encryption device
- FIG. 18B shows a configuration example of the authentication encryption unit 60 when the authentication encryption device is a decryption device.
- the authentication encryption unit 60 includes an encryption unit 61 (for example, the encryption unit 10).
- the encryption unit 61 includes a plaintext input unit 611, an auxiliary variable generation unit 612, Two-round Feistel encryption means 613 and tag calculation means 614 may be provided.
- the plaintext input means 611 (for example, the input means 101) inputs the plaintext to be encrypted and the initial vector.
- Auxiliary variable generation means 612 (for example, auxiliary variable generation means 102) generates auxiliary variables to be given to each of the encryption functions based on the initial vector and the size of the input plaintext.
- the two-round Feistel encryption unit 613 (for example, the two-round Feistel encryption unit 103) applies the two-round Feistel structure to each plaintext chunk when the plaintext is divided into two-block chunks, thereby Generate a ciphertext chunk corresponding to the chunk.
- the auxiliary variables corresponding to the two plaintext blocks included in the pair are (N, Tw_i_1) and (N, Tw_i_2) and the encryption function is F_K (*, *)
- the i-th ciphertext chunk CC [i] (C [i_1], C [i_2])
- C [i_1] F_K ((N, Tw_i_1), M [i_1]) xor M [i_2]
- C [i_2] F_K ((N, Tw_i_2), C [i_1]) xor M [i_1]
- the tag calculation means 614 calculates a plaintext checksum and applies an encryption function including an auxiliary variable to the obtained checksum to generate an authentication tag.
- the authentication encryption means 60 includes a decryption means 62 (for example, the decryption means 20).
- the decryption means 62 includes a ciphertext input means 621 and a decryption auxiliary variable generation means 622. 2 round Feistel decoding means 623, decryption verification tag calculation means 624, and determination means 625 may be included.
- the ciphertext input means 621 (for example, the input means 201) inputs the ciphertext to be decrypted, the initial vector, and the authentication tag.
- Decryption auxiliary variable generation means 622 (for example, auxiliary variable generation means 202) is an auxiliary variable given to each of the encryption functions based on the initial vector and the size of the input ciphertext, and is the same as that at the time of encryption. Generate variables.
- the two-round Feistel decryption means 623 applies the two-round Feistel structure to each ciphertext chunk when the ciphertext is divided into two-block chunks. Generate a decrypted plaintext chunk corresponding to the sentence chunk.
- the auxiliary variables corresponding to the two ciphertext blocks contained in (N, Tw_i_1) and (N, Tw_i_2) are set and the encryption function is F_K (*, *).
- M '[i] (M' [i_1], M '[i_2])
- M '[i_1] F_K ((N, Tw_i_2), C [i_1]) xor C [i_2]
- M '[i_2] F_K ((N, Tw_i_1), M' [i_1]) xor C [i_1]
- the decryption verification tag calculation means 624 calculates the checksum of the decrypted plaintext and applies the encryption function including the auxiliary variable to the obtained checksum. To generate an authentication tag for decryption verification.
- the decryption verification tag calculation means 624 calculates a checksum of the decrypted plaintext using each decrypted plaintext block M ′ [i_2] included in each decrypted plaintext chunk, and calculates the obtained checksum.
- the determination unit 625 determines the success or failure of the decryption based on the decryption verification authentication tag generated by the decryption verification tag calculation unit 624 and the input authentication tag.
- the encryption means generates an auxiliary variable to be given to each of the encryption functions based on the plaintext input means for inputting the plaintext to be encrypted and the initial vector, and the size of the input plaintext.
- a two-round Feistel that generates a ciphertext chunk corresponding to the plaintext chunk by applying the two-round Feistel structure to each plaintext chunk when the plaintext is divided into chunks of two blocks.
- auxiliary variable is a pair of (N, Tw_i_1) and (N, Tw_i_2) and the encryption function is F_K (*, *)
- the i-th ciphertext chunk CC [i] (C [i_1], C [i_2])
- C [i_1] F_K ((N, Tw_i_1), M [i_1]) xor M [i_2]
- C [i_2] F_K ((N, Tw_i_2), C [i_1]) xor M [i_1]
- the tag calculation means calculates the plaintext checksum using the plaintext block M [i_2] included in each plaintext chunk, and gives the obtained checksum to the encryption function used when generating the authentication tag.
- the auxiliary variable generation means is an encryption used when generating the authentication tag when the input plaintext size is a size divided into an even number of blocks and the final block is less than a predetermined block size.
- the auxiliary variable for the second authentication tag is generated as an auxiliary variable to be given to the function, and the encryption unit applies a predetermined two-round Feistel structure to the final plaintext chunk including the final plaintext block, and finally A second 2-round Feistel encryption means for generating a final ciphertext chunk including a ciphertext block, a plaintext checksum, an input plaintext, and an output from the second 2-round Feistel encryption means
- the auxiliary variable generation means is a code used when generating the authentication tag when the size of the input plaintext is a size that is divided into odd blocks and the final block is the same as the predetermined block size.
- a third authentication tag auxiliary variable is generated as an auxiliary variable to be given to the optimization function, and the size of the input plaintext is divided into odd blocks, and the final block is less than the predetermined block size.
- a fourth authentication tag auxiliary variable is generated as an auxiliary variable to be given to the encryption function used at the time of generating the authentication tag, and the encryption unit performs predetermined processing on the final plaintext chunk including the final plaintext block.
- the third authentication tag auxiliary variable is (N, Tw_T_3), and the encryption function is F_K (*, *),
- the authentication tag T T F_K ((N, Tw_T_3), SUM)
- the plaintext checksum is the result of padding the plaintext blocks M [i_2] and C [m_1] contained in each plaintext chunk excluding the final plaintext chunk to n size C_n [m_1] and the obtained checksum is SUM
- the fourth authentication tag auxiliary variable is (N, Tw_T_4), and the encryption function is F_K (*, *).
- T F_K ((N, Tw_T_4), SUM)
- Supplementary note 6 The encryption function according to any one of Supplementary note 1 to Supplementary note 4, which is a hash function with a key, wherein an input is a concatenation of a first variable and a second variable that are input. Encryption device.
- Decryption means for generating a plaintext decrypted by applying a 2-round Feistel structure using an encryption function including an auxiliary variable as a round function for each input ciphertext
- a decoding apparatus comprising:
- the decryption means gives each of the encryption functions based on the ciphertext input means for inputting the ciphertext to be decrypted, the initial vector, and the authentication tag, and the size of the input ciphertext.
- Auxiliary variable generation means for decryption that generates auxiliary variables that are the same as those for encryption, and a 2-round Feistel structure is applied to each ciphertext chunk when the ciphertext is divided into chunks of 2 blocks
- a 2-round Feistel decryption means for generating a decrypted plaintext chunk corresponding to the ciphertext chunk, and a checksum of the decrypted plaintext are calculated, and an auxiliary variable is inserted into the obtained checksum.
- Decryption verification tag calculation means for generating an authentication tag for decryption verification by applying the encrypted function, and a decryption verification authentication tag generated by the decryption verification tag calculation means and the input authentication
- a two-round Feistel decryption means for determining the initial vector as N, the chunk index as i, and the i-th ciphertext chunk as CC [i].
- the decryption verification tag calculation means calculates a checksum of the decrypted plaintext using each decrypted plaintext block M ′ [i_2] included in each decrypted plaintext chunk, and obtains the check If the
- the decryption auxiliary variable generation means is a size used for decryption verification when the size of the input ciphertext is divided into an even number of blocks and the final block is less than a predetermined block size.
- auxiliary variable to be given to the encryption function used at the time of generating the authentication tag the same auxiliary variable for the second authentication tag as that at the time of encryption is generated, and the decryption means performs the final ciphertext chunk including the final ciphertext block, Applying a predetermined two-round Feistel structure to generate a final decrypted plaintext chunk containing the decrypted plaintext block of the final cipher block, and a checksum of the decrypted plaintext Is calculated using the output from the 2-round Feistel decryption means, the output from the second 2-round Feistel decryption means, and the final ciphertext block, and for the obtained checksum
- the auxiliary variable generation means authenticates for decryption verification when the size of the input ciphertext is divided into odd blocks and the final block is the same as the predetermined block size.
- the same third authentication tag auxiliary variable as at the time of encryption is generated, and the size of the input ciphertext is divided into odd blocks, and the final
- the same auxiliary variable for the authentication tag as that used for encryption is generated as an auxiliary variable to be given to the encryption function used when generating the authentication tag.
- Supplementary note 12 The encryption function according to any one of Supplementary note 7 to Supplementary note 10, which is a hash function with a key, wherein the input is a concatenation of a first variable and a second variable that are input. Decoding device.
- the information processing apparatus inputs the plaintext to be encrypted and the initial vector, generates auxiliary variables to be given to each of the encryption functions based on the initial vector and the size of the input plaintext, and converts the plaintext
- a 2-round Feistel encryption process that generates a ciphertext chunk corresponding to the plaintext chunk by applying a 2-round Feistel structure to each plaintext chunk when divided into 2-block chunks
- the pair of (N, Tw_i_1) and (N, Tw_i_2) and the encryption function is F_K (*, *)
- the i-th ciphertext chunk CC [i] (C [i_1], C [i_2])
- C [i_1] F_K ((N
- the encryption function used when generating the authentication tag when the information processing apparatus is a size in which the input plaintext size is divided into even-numbered blocks and the final block is less than the predetermined block size.
- a second authentication tag auxiliary variable is generated as an auxiliary variable to be applied to and a final two-text Feistel structure is applied to the final plaintext chunk including the final plaintext block to include the final ciphertext block
- the final plaintext chunk index is m
- the final plaintext block is M [m_2]
- the auxiliary variables corresponding to the two plaintext blocks included in the final plaintext chunk MC [m] are (N, Tw_m_1) and (N, Tw_m_2) pairs, and the encryption function is F_K (*, *)
- the size of the last plaintext block is s, If the size is n,
- Auxiliary variable to be given to the encryption function used when generating the authentication tag when the size of the input plaintext is a size divided into odd blocks and the final block is the same as the predetermined block size Generate a third authentication tag auxiliary variable, and generate an authentication tag when the input plaintext size is the size that is divided into odd blocks and the final block is less than the predetermined block size.
- a supplementary variable to be given to the encryption function used at the time a supplementary variable for the fourth authentication tag is generated, and a predetermined one round Feistel structure is applied to the final plaintext chunk including the final plaintext block.
- the plaintext checksum is calculated as the plaintext block M [i_2] included in each plaintext chunk excluding the final plaintext chunk.
- the plaintext checksum is the result of padding the plaintext blocks M [i_2] and C [m_1] contained in each plaintext chunk excluding the final plaintext chunk to n size C_n [m_1] and the obtained checksum is SUM
- the fourth authentication tag auxiliary variable is (N, Tw_T_4), and the encryption function is F_K (*, *).
- T F_K ((N, Tw_T_4), SUM)
- the initial vector is N
- the chunk index is i
- the auxiliary variable corresponding to the two ciphertext blocks included in the ciphertext chunk CC [i] is a set of (N, Tw_i_1) and (N, Tw_i_2) and the encryption function is F_K (*, *)
- i The th decrypted plaintext chunk MC '[i] (M' [i_1], M '[i_2])
- M '[i_1] F_K ((N, Tw_i_2), C [i_1]) xor C [i_2], M '[i
- the auxiliary variable for the second authentication tag that is the same as that used for encryption is generated as an auxiliary variable to be applied to the final ciphertext chunk including the final ciphertext block, and the final two-round Feistel structure is applied to the final ciphertext chunk.
- the index of the final ciphertext chunk is m
- the final ciphertext block is C [m_2 ]
- the auxiliary variables corresponding to the two ciphertext blocks contained in the last ciphertext chunk CC [m] are (N , Tw_m_1) and (N, Tw_m_2)
- the function is F_K (*, *)
- the size of the final ciphertext block is s
- the block size is n
- padding processing from s size to n size is pad_n ()
- cutting processing from n size to s size is cut_s ( )
- the final decrypted plaintext chunk MC '[m] (M' [m_1], M '[m_2]) containing the final
- a one-round Feistel decoding process that applies a predetermined one-round Feistel structure to generate a final plaintext chunk including the final decoded plaintext block
- the index of the ciphertext chunk is m
- the last ciphertext block is C [m_1]
- the auxiliary variable corresponding to the last ciphertext block is (N , Tw_m_1)
- the encryption function is F_K (*, *)
- the final ciphertext block size is s
- the block size is n
- the cutting process from n size to s size is cut_s (), the final s size
- the resulting checksum is SUM '
- the third authentication tag auxiliary variable is (N, Tw_T_3)
- supplementary note 20 The encryption function according to any one of supplementary note 13 to supplementary note 18, which is a hash function with a key, wherein an input is a concatenation of a first variable and a second variable that are input. Authentication encryption method.
- the initial vector is N
- the chunk index is i
- the two plaintext blocks contained in the plaintext chunk MC [i] If the auxiliary variable corresponding to the lock is a set of (N, Tw_i_1) and (N
- the authentication tag is generated.
- a third authentication tag auxiliary variable is generated as an auxiliary variable to be given to the encryption function used at times, and the size of the input plaintext is divided into odd blocks, and the final block has a predetermined block size. If it is less than, the fourth authentication tag auxiliary variable is generated as an auxiliary variable to be given to the encryption function used when generating the authentication tag, and the final plaintext chunk index is m and the final in the 2-round Feistel encryption process.
- the plaintext block of M [m_1], the final plaintext chunk MC [m] (M [m_1]), the auxiliary variable corresponding to the final plaintext block (N, Tw_m_1), and the encryption function F_K (*, *)
- the plaintext block size of s is s
- the block size is n
- the cutting process from n size to s size is cut_s ()
- the final ciphertext chunk CC [ m] (C [m_1])
- C [m_1] cut_s (F_K ((N, Tw_m_1), 0 ⁇ n)) xor M [m_1]
- the initial vector is N
- the chunk index is i
- the auxiliary variables corresponding to the two ciphertext blocks included in the ciphertext chunk CC [i] are a set of (N, Tw_i_1) and (N, Tw_i_2)
- the encryption function is F_K (*, *)
- the i-th decrypted plaintext chunk MC '[i] (M' [i_1], M '[i_2])
- M '[i_1] F_K ((N, Tw_i_2), C [i_1]) xor C [i_2]
- M '[i_2] F_K ((N, Tw_i_1), M' [i_
- the checksum is SUM '
- the auxiliary variable given to the encryption function used when generating the authentication tag for decryption verification is (N, Tw_T_1)
- the encryption function is F_K (*, *)
- auxiliary variable generation processing When decryption auxiliary variable generation processing is performed by a computer, decryption is performed when the size of the input ciphertext is divided into even-numbered blocks and the final block is less than a predetermined block size.
- auxiliary variable to be given to the encryption function used when generating an authentication tag for verification the same auxiliary variable for the authentication tag as that at the time of encryption is generated, and the index of the final ciphertext chunk is m
- the final ciphertext block is C [m_2]
- the auxiliary variable corresponding to the block is a set of (N, Tw_m_1) and (N, Tw_m_2)
- the encryption function is F_K (*, *)
- the final ciphertext block size is s, the block
- auxiliary variable generation process when the size of the input ciphertext is divided into odd-numbered blocks and the final block is the same as the predetermined block size, decryption verification is performed As an auxiliary variable to be given to the encryption function used when generating the authentication tag for use, the same third authentication tag auxiliary variable as that used for encryption is generated, and the size of the input ciphertext is divided into odd blocks.
- the last ciphertext chunk index is m
- the last ciphertext block is C [m_1]
- the last ciphertext block N, Tw_m_1
- the encryption function is F_K (*, *)
- the size of the final ciphertext block is s
- the block size is n
- the cutting process from n size to s size is cut_s ()
- the final decrypted plaintext chunk MC ′ [m] (M ′ [m_1]) including the final decrypted plaintext block M ′ [m_1] of size s
- M '[m_1] cut_s (F_K ((N, Tw_
- supplementary note 28 The encryption function according to any one of supplementary note 21 to supplementary note 26, which is a hash function with a key, wherein an input is a concatenation of a first variable and a second variable that are input. Authentication encryption program.
- the present invention can be suitably applied to uses such as encryption and message authentication in wireless or wired data communication, and storage protection such as a database.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
C[2] = TE_K((N,2), M[2]),
... ,
C[m] = TE_K((N,m), M[m])
C[2i] = F_K((N,i,2), C[2i-1]) xor M[2i-1]
・・・式(1)
M'[2i] = F_K((N,i,1), M'[2i-1]) xor C[2i-1]
・・・式(3)
本発明による第1の実施形態に係る認証暗号システムの構成例を図3、図4、図5を参照して説明する。図3は、本実施形態の認証暗号システムが備える装置の例を示すブロック図である。図3に示すように、本実施形態のシステムは、情報処理装置50を備えている。情報処理装置50は、演算部51、記憶部52および入出力部53を含む。情報処理装置50は、例えばプログラムに従って動作するパーソナルコンピュータ等である。また、この場合、演算部51、記憶部52および入出力部53は、それぞれCPU、メモリおよび各種入出力装置(例えば、キーボード、マウス、ネットワークインタフェース部等)によって実現される。なお、図3では、1つの装置が演算部51、記憶部52および入出力部53の全てを含む例を示したが、これら演算部51、記憶部52および入出力部53は複数の装置に分散されていてもよい。
第2の実施形態における認証暗号システムは、暗号化ないし復号の対象が、偶数個のブロックを持つが最後のブロックがnビット未満の長さであるケースに対応したものである。なお、基本的な構成は第1の実施形態と同様であるので、以下異なる点についてのみ説明する。
C[2m-1] = F_K((N,m,2), pad_n(C_s[2m]))) xor M[2m-1]
ただし、Z=F_K((N,m,1), M[2m-1])
・・・式(9)
・・・式(10)
M_s'[2m] = cut_s(Z') xor C_s[2m]
ただし、Z'=F_K((N,m,1), M'[2m-1])
・・・式(11)
・・・式(12)
第3の実施形態における認証暗号システムは、暗号化ないし復号の対象が、奇数個のブロックを持つケースに対応したものである。なお、基本的な構成は第1の実施形態と同様であるので、以下異なる点についてのみ説明する。
・・・式(13)
・・・式(14)
・・・式(15)
・・・式(16)
・・・式(17)
・・・式(18)
・・・式(19)
・・・式(20)
Y[0] = 00..0,
Y[i] = E_K'(H[1] xor Y[i-1]), for i=1,2, ... , (h-1)
Y[h] = E_K'(H[h] xor Y[i-1] xor 2*E_K'(00..0)), if H[h]がn-bit
Y[h] = E_K'((H[h] || 10*) xor Y[h-1] xor 4*E_K'(00..0)), if H[h]がn-bit未満
といった処理を行う。なお、2*, 4*は有限体上の定数との乗算処理を表している。
C[i_1] = F_K((N,Tw_i_1), M[i_1]) xor M[i_2] ,
C[i_2] = F_K((N,Tw_i_2), C[i_1]) xor M[i_1]
と求めてもよい。
T = F_K((N,Tw_T_1), SUM)
と求めてもよい。
M'[i_1] = F_K((N,Tw_i_2), C[i_1]) xor C[i_2],
M'[i_2] = F_K((N,Tw_i_1), M'[i_1]) xor C[i_1]
と求めてもよい。
T' = F_K((N,Tw_T_1), SUM')
と求めてもよい。
C[i_1] = F_K((N,Tw_i_1), M[i_1]) xor M[i_2] ,
C[i_2] = F_K((N,Tw_i_2), C[i_1]) xor M[i_1]
と求め、タグ計算手段は、平文のチェックサムを、各平文チャンクに含まれる平文ブロックM[i_2]を用いて計算し、得られたチェックサムをSUM、認証タグ生成時に用いる暗号化関数に与える補助変数を(N,Tw_T_1)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_1), SUM)
と求める付記1に記載の暗号化装置。
C[m_2] = cut_s(Z) xor M[m_2],
C[m_1] = F_K((N,Tw_m_2), pad_n(C[m_2])) xor M[m_1]
ただし、Z = F_K((N,Tw_m_1), M[m_1])
と求め、第2のタグ計算手段は、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とZとC[m_2]をnサイズにパディングした結果であるC_n[m_2]とを用いて計算し、得られたチェックサムをSUM、第2の認証タグ用補助変数を(N,Tw_T_2)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_2), SUM)
と求める付記2に記載の暗号化装置。
C[m_1] = cut_s(F_K((N,Tw_m_1),0^n)) xor M[m_1]
ただし、s=nのときはcut_s()は省略可能
と求め、第3のタグ計算手段は、もしs=nであれば、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とC[m_1]とを用いて計算し、得られたチェックサムをSUM、第3の認証タグ用補助変数を(N,Tw_T_3)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_3), SUM)
と求め、もしs<nであれば、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とC[m_1]をnサイズにパディングした結果であるC_n[m_1]とを用いて計算し、得られたチェックサムをSUM、第4の認証タグ用補助変数を(N,Tw_T_4)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_4), SUM)
と求める付記2または付記3に記載の暗号化装置。
M'[i_1] = F_K((N,Tw_i_2), C[i_1]) xor C[i_2],
M'[i_2] = F_K((N,Tw_i_1), M'[i_1]) xor C[i_1]
と求め、復号検証用タグ計算手段は、復号された平文のチェックサムを、復号された各平文チャンクに含まれる復号された各平文ブロックM'[i_2]を用いて計算し、得られたチェックサムをSUM'、復号検証用の認証タグ生成時に用いる暗号化関数に与える補助変数を(N,Tw_T_1)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_1), SUM')
と求める付記7に記載の復号装置。
M'[m_1] = F_K((N,Tw_m_2), pad_n(C[m_2])) xor C[m_1],
M'[m_2] = cut_s(Z') xor C[m_2],
ただし、Z' = F_K((N,Tw_m_1), M'[m_1])
と求め、第2の復号検証用タグ計算手段は、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる復号された平文ブロックM[i_2]とZ'とM'[m_2]をnサイズにパディングした結果であるM_n'[m_2]とを用いて計算し、得られたチェックサムをSUM'、第2の認証タグ用補助変数を(N,Tw_T_2)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_2), SUM')
と求める付記8に記載の復号装置。
M'[m_1] = cut_s(F_K((N,Tw_m_1),0^n)) xor C[m_1]
ただし、s=nのときはcut_s()は省略可能
と求め、第3の復号検証用タグ計算手段は、もしs=nであれば、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる平文ブロックM'[i_2]とM'[m_1]とを用いて計算し、得られたチェックサムをSUM'、第3の認証タグ用補助変数を(N,Tw_T_3)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_3), SUM')
と求め、もしs<nであれば、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる平文ブロックM'[i_2]とM'[m_1]をnサイズにパディングした結果であるM_n'[m_1]とを用いて計算し、得られたチェックサムをSUM'、第4の認証タグ用補助変数を(N,Tw_T_4)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_4), SUM')
と求める付記8または付記9に記載の復号装置。
C[i_1] = F_K((N,Tw_i_1), M[i_1]) xor M[i_2] ,
C[i_2] = F_K((N,Tw_i_2), C[i_1]) xor M[i_1]
と求め、平文のチェックサムを、各平文チャンクに含まれる平文ブロックM[i_2]を用いて計算し、得られたチェックサムをSUM、認証タグ生成時に用いる暗号化関数に与える補助変数を(N,Tw_T_1)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_1), SUM)
と求めることを特徴とする認証暗号方法。
C[m_2] = cut_s(Z) xor M[m_2],
C[m_1] = F_K((N,Tw_m_2), pad_n(C[m_2])) xor M[m_1]
ただし、Z = F_K((N,Tw_m_1), M[m_1])
と求め、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とZとC[m_2]をnサイズにパディングした結果であるC_n[m_2]とを用いて計算し、得られたチェックサムをSUM、第2の認証タグ用補助変数を(N,Tw_T_2)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_2), SUM)
と求める付記13に記載の認証暗号方法。
C[m_1] = cut_s(F_K((N,Tw_m_1),0^n)) xor M[m_1]
ただし、s=nのときはcut_s()は省略可能
と求め、もしs=nであれば、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とC[m_1]とを用いて計算し、得られたチェックサムをSUM、第3の認証タグ用補助変数を(N,Tw_T_3)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_3), SUM)
と求め、もしs<nであれば、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とC[m_1]をnサイズにパディングした結果であるC_n[m_1]とを用いて計算し、得られたチェックサムをSUM、第4の認証タグ用補助変数を(N,Tw_T_4)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_4), SUM)
と求める付記13または付記14に記載の認証暗号方法。
M'[i_1] = F_K((N,Tw_i_2), C[i_1]) xor C[i_2],
M'[i_2] = F_K((N,Tw_i_1), M'[i_1]) xor C[i_1]
と求め、復号された平文のチェックサムを、復号された各平文チャンクに含まれる復号された各平文ブロックM'[i_2]を用いて計算し、得られたチェックサムをSUM'、復号検証用の認証タグ生成時に用いる暗号化関数に与える補助変数を(N,Tw_T_1)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_1), SUM')
と求めることを特徴とする認証暗号方法。
M'[m_1] = F_K((N,Tw_m_2), pad_n(C[m_2])) xor C[m_1],
M'[m_2] = cut_s(Z') xor C[m_2],
ただし、Z' = F_K((N,Tw_m_1), M'[m_1])
と求め、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる復号された平文ブロックM[i_2]とZ'とM'[m_2]をnサイズにパディングした結果であるM_n'[m_2]とを用いて計算し、得られたチェックサムをSUM'、第2の認証タグ用補助変数を(N,Tw_T_2)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_2), SUM')
と求める付記16に記載の認証暗号方法。
M'[m_1] = cut_s(F_K((N,Tw_m_1),0^n)) xor C[m_1]
ただし、s=nのときはcut_s()は省略可能
と求め、もしs=nであれば、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる平文ブロックM'[i_2]とM'[m_1]とを用いて計算し、得られたチェックサムをSUM'、第3の認証タグ用補助変数を(N,Tw_T_3)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_3), SUM')
と求め、もしs<nであれば、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる平文ブロックM'[i_2]とM'[m_1]をnサイズにパディングした結果であるM_n'[m_1]とを用いて計算し、得られたチェックサムをSUM'、第4の認証タグ用補助変数を(N,Tw_T_4)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_4), SUM')
と求める付記16または付記17に記載の認証暗号方法。
C[i_1] = F_K((N,Tw_i_1), M[i_1]) xor M[i_2] ,
C[i_2] = F_K((N,Tw_i_2), C[i_1]) xor M[i_1]
と求めさせ、タグ計算処理で、平文のチェックサムを、各平文チャンクに含まれる平文ブロックM[i_2]を用いて計算し、得られたチェックサムをSUM、認証タグ生成時に用いる暗号化関数に与える補助変数を(N,Tw_T_1)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_1), SUM)
と求めさせることを特徴とする認証暗号用プログラム。
C[m_2] = cut_s(Z) xor M[m_2],
C[m_1] = F_K((N,Tw_m_2), pad_n(C[m_2])) xor M[m_1]
ただし、Z = F_K((N,Tw_m_1), M[m_1])
と求めさせ、第2のタグ計算処理で、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とZとC[m_2]をnサイズにパディングした結果であるC_n[m_2]とを用いて計算し、得られたチェックサムをSUM、第2の認証タグ用補助変数を(N,Tw_T_2)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_2), SUM)
と求めさせる付記21に記載の認証暗号用プログラム。
C[m_1] = cut_s(F_K((N,Tw_m_1),0^n)) xor M[m_1]
ただし、s=nのときはcut_s()は省略可能
と求めさせ、タグ計算処理で、もしs=nであれば、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とC[m_1]とを用いて計算し、得られたチェックサムをSUM、第3の認証タグ用補助変数を(N,Tw_T_3)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_3), SUM)
と求めさせ、もしs<nであれば、平文のチェックサムを、最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]とC[m_1]をnサイズにパディングした結果であるC_n[m_1]とを用いて計算し、得られたチェックサムをSUM、第4の認証タグ用補助変数を(N,Tw_T_4)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_4), SUM)
と求めさせる付記21または付記22に記載の認証暗号用プログラム。
M'[i_1] = F_K((N,Tw_i_2), C[i_1]) xor C[i_2],
M'[i_2] = F_K((N,Tw_i_1), M'[i_1]) xor C[i_1]
と求めさせ、復号検証用タグ計算処理で、復号された平文のチェックサムを、復号された各平文チャンクに含まれる復号された各平文ブロックM'[i_2]を用いて計算し、得られたチェックサムをSUM'、復号検証用の認証タグ生成時に用いる暗号化関数に与える補助変数を(N,Tw_T_1)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_1), SUM')
と求めさせることを特徴とする認証暗号用プログラム。
M'[m_1] = F_K((N,Tw_m_2), pad_n(C[m_2])) xor C[m_1],
M'[m_2] = cut_s(Z') xor C[m_2],
ただし、Z' = F_K((N,Tw_m_1), M'[m_1])
と求めさせ、復号検証用タグ計算処理で、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる復号された平文ブロックM[i_2]とZ'とM'[m_2]をnサイズにパディングした結果であるM_n'[m_2]とを用いて計算し、得られたチェックサムをSUM'、第2の認証タグ用補助変数を(N,Tw_T_2)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_2), SUM')
と求めさせる付記24に記載の認証暗号用プログラム。
M'[m_1] = cut_s(F_K((N,Tw_m_1),0^n)) xor C[m_1]
ただし、s=nのときはcut_s()は省略可能
と求めさせ、復号検証用タグ計算処理で、もしs=nであれば、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる平文ブロックM'[i_2]とM'[m_1]とを用いて計算し、得られたチェックサムをSUM'、第3の認証タグ用補助変数を(N,Tw_T_3)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_3), SUM')
と求めさせ、もしs<nであれば、復号された平文のチェックサムを、最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる平文ブロックM'[i_2]とM'[m_1]をnサイズにパディングした結果であるM_n'[m_1]とを用いて計算し、得られたチェックサムをSUM'、第4の認証タグ用補助変数を(N,Tw_T_4)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_4), SUM')
と求めさせる付記24または付記25に記載の認証暗号用プログラム。
10,61 暗号化手段
101 入力手段
611 平文入力手段
102,612 補助変数生成手段
103,613 2ラウンドFeistel暗号化手段
104,614 タグ計算手段
105 出力手段
20,62 復号手段
201 入力手段
621 暗号文入力手段
202 補助変数生成手段
622 復号用補助変数生成手段
203,623 2ラウンドFeistel復号手段
204,624 復号検証用タグ計算手段
205,625 判定手段
206 出力手段
Claims (13)
- 入力された平文または暗号文に対して、2ブロックごとに、補助変数を入れた暗号化関数をラウンド関数に用いた2ラウンドFeistel構造を適用して暗号文または復号された平文を生成する認証暗号手段を備えた
ことを特徴とする認証暗号装置。 - 前記認証暗号手段は、暗号化手段を含み、
前記暗号化手段は、
暗号化対象の平文と初期ベクトルとを入力する平文入力手段と、
前記初期ベクトルと入力された平文のサイズとに基づき、前記暗号化関数の各々に与える補助変数を生成する補助変数生成手段と、
前記平文を2ブロックごとのチャンクに分けたときの各平文チャンクに対して2ラウンドFeistel構造を適用することにより、当該平文チャンクに対応する暗号文チャンクを生成する2ラウンドFeistel暗号化手段と、
前記平文のチェックサムを計算し、得られたチェックサムに対して、補助変数を入れた暗号化関数を適用させて認証タグを生成するタグ計算手段とを有し、
前記2ラウンドFeistel暗号化手段は、初期ベクトルをN、チャンクのインデックスをi、i番目の平文チャンクをMC[i] = (M[i_1], M[i_2])、当該平文チャンクMC[i]に含まれる2つの平文ブロックに対応する補助変数を(N,Tw_i_1)と(N,Tw_i_2)の組、暗号化関数をF_K(*,*)とすると、i番目の暗号文チャンクCC[i] = (C[i_1], C[i_2])を、
C[i_1] = F_K((N,Tw_i_1), M[i_1]) xor M[i_2] ,
C[i_2] = F_K((N,Tw_i_2), C[i_1]) xor M[i_1]
と求め、
前記タグ計算手段は、平文のチェックサムを、各平文チャンクに含まれる平文ブロックM[i_2]を用いて計算し、得られたチェックサムをSUM、認証タグ生成時に用いる暗号化関数に与える補助変数を(N,Tw_T_1)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_1), SUM)
と求める
請求項1に記載の認証暗号装置。 - 前記認証暗号手段は、復号手段を含み、
前記復号手段は、
復号対象の暗号文と初期ベクトルと認証タグとを入力する暗号文入力手段と、
前記初期ベクトルと入力された暗号文のサイズとに基づき、前記暗号化関数の各々に与える補助変数であって暗号化時と同じ補助変数を生成する復号用補助変数生成手段と、
前記暗号文を2ブロックごとのチャンクに分けたときの各暗号文チャンクに対して2ラウンドFeistel構造を適用することにより、当該暗号文チャンクに対応する、復号された平文チャンクを生成する2ラウンドFeistel復号手段と、
前記復号された平文のチェックサムを計算し、得られたチェックサムに対して、補助変数を入れた暗号化関数を適用させて復号検証用の認証タグを生成する復号検証用タグ計算手段と、
前記復号検証用タグ計算手段が生成した復号検証用の認証タグと入力された認証タグとに基づいて、復号の成功または失敗を判定する判定手段とを有し、
前記2ラウンドFeistel復号手段は、初期ベクトルをN、チャンクのインデックスをi、i番目の暗号文チャンクをCC[i] = (C[i_1], C[i_2])、当該暗号文チャンクCC[i]に含まれる2つの暗号文ブロックに対応する補助変数を(N,Tw_i_1)と(N,Tw_i_2)の組、暗号化関数をF_K(*,*)とすると、i番目の復号された平文チャンクMC'[i] = (M'[i_1], M'[i_2])を、
M'[i_1] = F_K((N,Tw_i_2), C[i_1]) xor C[i_2],
M'[i_2] = F_K((N,Tw_i_1), M'[i_1]) xor C[i_1]
と求め、
前記復号検証用タグ計算手段は、復号された平文のチェックサムを、復号された各平文チャンクに含まれる復号された各平文ブロックM'[i_2]を用いて計算し、得られたチェックサムをSUM'、復号検証用の認証タグ生成時に用いる暗号化関数に与える補助変数を(N,Tw_T_1)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_1), SUM')
と求める
請求項1に記載の認証暗号装置。 - 前記補助変数生成手段は、入力された平文のサイズが偶数のブロックに分割されるサイズであり、かつ最終のブロックが所定のブロックサイズに満たない場合に、認証タグ生成時に用いる暗号化関数に与える補助変数として、第2の認証タグ用補助変数を生成し、
前記暗号化手段は、
最終の平文ブロックを含む最終の平文チャンクに対して、所定の2ラウンドFeistel構造を適用して、最終の暗号文ブロックを含む最終の暗号文チャンクを生成する第2の2ラウンドFeistel暗号化手段と、
平文のチェックサムを、入力された平文と、前記第2の2ラウンドFeistel暗号化手段からの出力とを用いて計算し、得られたチェックサムに対して補助変数を与えた暗号化関数を適用させて、認証タグを生成する第2のタグ計算手段とを有し、
前記第2の2ラウンドFeistel暗号化手段は、最終の平文チャンクのインデックスをm、最終の平文ブロックをM[m_2]、最終の平文チャンクをMC[m] = (M[m_1], M[m_2])、最終の平文チャンクMC[m]に含まれる2つの平文ブロックに対応する補助変数を(N,Tw_m_1)と(N,Tw_m_2)の組、暗号化関数をF_K(*,*)、最終の平文ブロックのサイズをs、ブロックサイズをn、sサイズからnサイズへのパディング処理をpad_n()、nサイズからsサイズへのカッティング処理をcut_s()とすると、sサイズの最終の暗号文ブロックC[m_2]を含む最終の暗号文チャンクCC[m] = (C[m_1], C[m_2])を、
C[m_2] = cut_s(Z) xor M[m_2],
C[m_1] = F_K((N,Tw_m_2), pad_n(C[m_2])) xor M[m_1]
ただし、Z = F_K((N,Tw_m_1), M[m_1])
と求め、
前記第2のタグ計算手段は、平文のチェックサムを、前記最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]と前記Zと前記C[m_2]をnサイズにパディングした結果であるC_n[m_2]とを用いて計算し、得られたチェックサムをSUM、前記第2の認証タグ用補助変数を(N,Tw_T_2)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_2), SUM)
と求める
請求項2に記載の認証暗号装置。 - 前記復号用補助変数生成手段は、入力された暗号文のサイズが偶数のブロックに分割されるサイズであり、かつ最終のブロックが所定のブロックサイズに満たない場合に、復号検証用の認証タグ生成時に用いる暗号化関数に与える補助変数として、暗号時と同じ第2の認証タグ用補助変数を生成し、
前記復号手段は、
最終の暗号文ブロックを含む最終の暗号文チャンクに対して、所定の2ラウンドFeistel構造を適用して、最終の暗号ブロックの復号された平文ブロックを含む最終の復号された平文チャンクを生成する第2の2ラウンドFeistel復号手段と、
復号された平文のチェックサムを、前記2ラウンドFeistel復号手段からの出力と、前記第2の2ラウンドFeistel復号手段からの出力と、前記最終の暗号文ブロックとを用いて計算し、得られたチェックサムに対して補助変数を与えた暗号化関数を適用させて、復号検証用の認証タグを生成する第2の復号検証用タグ計算手段とを有し、
前記第2の2ラウンドFeistel復号手段は、最終の暗号文チャンクのインデックスをm、最終の暗号文ブロックをC[m_2]、最終の暗号文チャンクをCC[m] = (C[m_1], C[m_2])、最終の暗号文チャンクCC[m]に含まれる2つの暗号文ブロックに対応する補助変数を(N,Tw_m_1)と(N,Tw_m_2)の組、暗号化関数をF_K(*,*)、最終の暗号文ブロックのサイズをs、ブロックサイズをn、sサイズからnサイズへのパディング処理をpad_n()、nサイズからsサイズへのカッティング処理をcut_s()とすると、sサイズの最終の復号された平文ブロックM'[m_2]を含む最終の復号された平文チャンクMC'[m] = (M'[m_1], M'[m_2])を、
M'[m_1] = F_K((N,Tw_m_2), pad_n(C[m_2])) xor C[m_1],
M'[m_2] = cut_s(Z') xor C[m_2],
ただし、Z' = F_K((N,Tw_m_1), M'[m_1])
と求め、
前記第2の復号検証用タグ計算手段は、復号された平文のチェックサムを、前記最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる復号された平文ブロックM[i_2]と前記Z'と前記M'[m_2]をnサイズにパディングした結果であるM_n'[m_2]とを用いて計算し、得られたチェックサムをSUM'、前記第2の認証タグ用補助変数を(N,Tw_T_2)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_2), SUM')
と求める
請求項3に記載の認証暗号装置。 - 前記補助変数生成手段は、入力された平文のサイズが奇数のブロックに分割されるサイズであり、かつ最終のブロックが所定のブロックサイズと同じである場合に、認証タグ生成時に用いる暗号化関数に与える補助変数として、第3の認証タグ用補助変数を生成し、入力された平文のサイズが奇数のブロックに分割されるサイズであり、かつ最終のブロックが所定のブロックサイズに満たない場合に、認証タグ生成時に用いる暗号化関数に与える補助変数として、第4の認証タグ用補助変数を生成し、
前記暗号化手段は、
最終の平文ブロックを含む最終の平文チャンクに対して、所定の1ラウンドFeistel構造を適用して、最終の暗号文ブロックを含む最終の暗号文チャンクを生成する1ラウンドFeistel暗号化手段と、
平文のチェックサムを、入力された平文と、前記1ラウンドFeistel暗号化手段からの出力とを用いて計算し、得られたチェックサムに対して補助変数を与えた暗号化関数を適用させて、認証タグを生成する第3のタグ計算手段とを有し、
前記1ラウンドFeistel暗号化手段は、最終の平文チャンクのインデックスをm、最終の平文ブロックをM[m_1]、最終の平文チャンクをMC[m] = (M[m_1])、最終の平文ブロックに対応する補助変数を(N,Tw_m_1)、暗号化関数をF_K(*,*)、最終の平文ブロックのサイズをs、ブロックサイズをn、nサイズからsサイズへのカッティング処理をcut_s()とすると、sサイズの最終の暗号文ブロックC[m_1]を含む最終の暗号文チャンクCC[m] = (C[m_1])を、
C[m_1] = cut_s(F_K((N,Tw_m_1),0^n)) xor M[m_1]
ただし、s=nのときはcut_s()は省略可能
と求め、
前記第3のタグ計算手段は、もしs=nであれば、平文のチェックサムを、前記最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]と前記C[m_1]とを用いて計算し、得られたチェックサムをSUM、前記第3の認証タグ用補助変数を(N,Tw_T_3)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_3), SUM)
と求め、もしs<nであれば、平文のチェックサムを、前記最終の平文チャンクを除く各平文チャンクに含まれる平文ブロックM[i_2]と前記C[m_1]をnサイズにパディングした結果であるC_n[m_1]とを用いて計算し、得られたチェックサムをSUM、前記第4の認証タグ用補助変数を(N,Tw_T_4)、暗号化関数をF_K(*,*)とすると、認証タグTを、
T = F_K((N,Tw_T_4), SUM)
と求める
請求項2または請求項4に記載の認証暗号装置。 - 前記補助変数生成手段は、入力された暗号文のサイズが奇数のブロックに分割されるサイズであり、かつ最終のブロックが所定のブロックサイズと同じである場合に、復号検証用の認証タグ生成時に用いる暗号化関数に与える補助変数として、暗号時と同じ第3の認証タグ用補助変数を生成し、入力された暗号文のサイズが奇数のブロックに分割されるサイズであり、かつ最終のブロックが所定のブロックサイズに満たない場合に、復号検証用の認証タグ生成時に用いる暗号化関数に与える補助変数として、暗号時と同じ第4の認証タグ用補助変数を生成し、
前記復号手段は、
最終の暗号文ブロックを含む最終の暗号文チャンクに対して、所定の1ラウンドFeistel構造を適用して、最終の復号された平文ブロックを含む最終の平文チャンクを生成する1ラウンドFeistel復号手段と、
復号された平文のチェックサムを、前記2ラウンドFeistel復号手段からの出力と、前記1ラウンドFeistel復号手段からの出力とを用いて計算し、得られたチェックサムに対して補助変数を与えた暗号化関数を適用させて、復号検証用の認証タグを生成する第3の復号検証用タグ計算手段とを有し、
前記1ラウンドFeistel復号手段は、最終の暗号文チャンクのインデックスをm、最終の暗号文ブロックをC[m_1]、最終の暗号文チャンクをCC[m] = (C[m_1])、最終の暗号文ブロックに対応する補助変数を(N,Tw_m_1)、暗号化関数をF_K(*,*)、最終の暗号文ブロックのサイズをs、ブロックサイズをn、nサイズからsサイズへのカッティング処理をcut_s()とすると、sサイズの最終の復号された平文ブロックM'[m_1]を含む最終の復号された平文チャンクMC'[m] = (M'[m_1])を、
M'[m_1] = cut_s(F_K((N,Tw_m_1),0^n)) xor C[m_1]
ただし、s=nのときはcut_s()は省略可能
と求め、
前記第3の復号検証用タグ計算手段は、もしs=nであれば、復号された平文のチェックサムを、前記最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる平文ブロックM'[i_2]と前記M'[m_1]とを用いて計算し、得られたチェックサムをSUM'、前記第3の認証タグ用補助変数を(N,Tw_T_3)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_3), SUM')
と求め、もしs<nであれば、復号された平文のチェックサムを、前記最終の復号された平文チャンクを除く復号された各平文チャンクに含まれる平文ブロックM'[i_2]と前記M'[m_1]をnサイズにパディングした結果であるM_n'[m_1]とを用いて計算し、得られたチェックサムをSUM'、前記第4の認証タグ用補助変数を(N,Tw_T_4)、暗号化関数をF_K(*,*)とすると、復号検証用の認証タグT'を、
T' = F_K((N,Tw_T_4), SUM')
と求める
請求項3または請求項5に記載の認証暗号装置。 - 暗号化関数が、Tweakと呼ばれる補助変数を含む2変数入力のTweakable ブロック暗号である
請求項1から請求項7のうちのいずれか1項に記載の認証暗号装置。 - 暗号化関数が、入力される第1の変数と第2の変数とを連結したものを入力とする、鍵付きハッシュ関数である
請求項1から請求項7のうちのいずれか1項に記載の認証暗号装置。 - 入力された平文に対して、2ブロックごとに、補助変数を入れた暗号化関数をラウンド関数に用いた2ラウンドFeistel構造を適用して暗号文を生成する暗号化手段を備えた
ことを特徴とする暗号化装置。 - 入力された暗号文に対して、2ブロックごとに、補助変数を入れた暗号化関数をラウンド関数に用いた2ラウンドFeistel構造を適用して復号された平文を生成する復号手段を備えた
ことを特徴とする復号装置。 - 情報処理装置が、入力された平文または暗号文に対して、2ブロックごとに、補助変数を入れた暗号化関数をラウンド関数に用いた2ラウンドFeistel構造を適用して暗号文または復号された平文を生成する
ことを特徴とする認証暗号方法。 - コンピュータに、
入力された平文または暗号文に対して、2ブロックごとに、補助変数を入れた暗号化関数をラウンド関数に用いた2ラウンドFeistel構造を適用して暗号文または復号された平文を生成する処理
を実行させるための認証暗号用プログラム。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/908,212 US10341088B2 (en) | 2013-08-02 | 2014-06-24 | Authentic encryption device, authenticated encryption method, and program for authenticated encryption |
KR1020167002966A KR101809386B1 (ko) | 2013-08-02 | 2014-06-24 | 인증 암호 장치, 인증 암호 방법 및 컴퓨터 판독가능한 기록 매체 |
RU2016107391A RU2647685C2 (ru) | 2013-08-02 | 2014-06-24 | Устройство аутентифицированного шифрования, способ аутентифицированного шифрования и программа для аутентифицированного шифрования |
EP14831687.0A EP3029877B1 (en) | 2013-08-02 | 2014-06-24 | Authenticated encryption device, authenticated encryption method, and program for authenticated encryption |
AU2014297854A AU2014297854B2 (en) | 2013-08-02 | 2014-06-24 | Authenticated encryption device, authenticated encryption method, and program for authenticated encryption |
BR112016001596-7A BR112016001596B1 (pt) | 2013-08-02 | 2014-06-24 | Dispositivo de criptografia autenticada e método de criptografia autenticada |
CN201480043829.8A CN105453482B (zh) | 2013-08-02 | 2014-06-24 | 认证加密设备、认证加密方法以及用于认证加密的程序 |
JP2015529336A JP6519473B2 (ja) | 2013-08-02 | 2014-06-24 | 認証暗号装置、認証暗号方法および認証暗号用プログラム |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013161446 | 2013-08-02 | ||
JP2013-161446 | 2013-08-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2015015702A1 true WO2015015702A1 (ja) | 2015-02-05 |
Family
ID=52431268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2014/003382 WO2015015702A1 (ja) | 2013-08-02 | 2014-06-24 | 認証暗号装置、認証暗号方法および認証暗号用プログラム |
Country Status (9)
Country | Link |
---|---|
US (1) | US10341088B2 (ja) |
EP (1) | EP3029877B1 (ja) |
JP (1) | JP6519473B2 (ja) |
KR (1) | KR101809386B1 (ja) |
CN (1) | CN105453482B (ja) |
AU (1) | AU2014297854B2 (ja) |
BR (1) | BR112016001596B1 (ja) |
RU (1) | RU2647685C2 (ja) |
WO (1) | WO2015015702A1 (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017073716A (ja) * | 2015-10-09 | 2017-04-13 | 日本電気株式会社 | タグリスト生成装置、タグリスト検証装置、タグリスト更新装置、タグリスト生成方法及びプログラム |
JP2019015919A (ja) * | 2017-07-10 | 2019-01-31 | 日本電信電話株式会社 | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム |
JP2019015918A (ja) * | 2017-07-10 | 2019-01-31 | 日本電信電話株式会社 | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム |
WO2019142306A1 (ja) * | 2018-01-19 | 2019-07-25 | ルネサスエレクトロニクス株式会社 | 半導体装置、データ提供方法、データ復号方法、およびプログラム |
WO2019163032A1 (ja) * | 2018-02-21 | 2019-08-29 | 日本電気株式会社 | 暗号化装置、暗号化方法、プログラム、復号装置、復号方法 |
JPWO2018193507A1 (ja) * | 2017-04-17 | 2020-02-27 | 日本電気株式会社 | 認証タグ生成装置、認証タグ検証装置、方法及びプログラム |
WO2020065820A1 (ja) * | 2018-09-27 | 2020-04-02 | 日本電気株式会社 | Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法 |
WO2020095382A1 (ja) * | 2018-11-07 | 2020-05-14 | 日本電気株式会社 | 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラム |
JPWO2021214923A1 (ja) * | 2020-04-23 | 2021-10-28 | ||
US11349668B2 (en) | 2017-02-21 | 2022-05-31 | Mitsubishi Electric Corporation | Encryption device and decryption device |
US11438137B2 (en) | 2017-09-01 | 2022-09-06 | Mitsubishi Electric Corporation | Encryption device, decryption device, encryption method, decryption method, and computer readable medium |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014174044A1 (en) * | 2013-04-24 | 2014-10-30 | Nec Europe Ltd. | Method and system for encrypting data |
WO2016082857A1 (en) * | 2014-11-24 | 2016-06-02 | Nec Europe Ltd. | Method for encrypting data for distributed storage |
WO2016087395A1 (en) * | 2014-12-03 | 2016-06-09 | Nagravision S.A. | Block cryptographic method for encrypting/decrypting messages and cryptographic devices for implementing this method |
US10824737B1 (en) * | 2017-02-22 | 2020-11-03 | Assa Abloy Ab | Protecting data from brute force attack |
US11126718B2 (en) * | 2017-07-12 | 2021-09-21 | Acronis International Gmbh | Method for decrypting data encrypted by ransomware |
CN108155986A (zh) * | 2017-12-14 | 2018-06-12 | 晶晨半导体(上海)股份有限公司 | 一种基于可信执行环境的密钥烧录系统及方法 |
KR102438784B1 (ko) * | 2018-01-05 | 2022-09-02 | 삼성전자주식회사 | 데이터를 난독화 및 복호화 하는 전자 장치 및 그의 제어 방법 |
RU2694336C1 (ru) * | 2018-05-08 | 2019-07-11 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Способ аутентифицированного шифрования |
WO2021171543A1 (ja) * | 2020-02-28 | 2021-09-02 | 日本電気株式会社 | 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法および記録媒体 |
CN112866288B (zh) * | 2021-03-01 | 2022-09-06 | 上海海事大学 | 一种双明文传输的数据对称加密方法 |
CN113596824A (zh) * | 2021-07-30 | 2021-11-02 | 深圳供电局有限公司 | 一种5g安全协议中认证失败明文信息的加密方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623549A (en) * | 1995-01-30 | 1997-04-22 | Ritter; Terry F. | Cipher mechanisms with fencing and balanced block mixing |
US20060285684A1 (en) * | 2001-07-30 | 2006-12-21 | Rogaway Phillip W | Method and apparatus for facilitating efficient authenticated encryption |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804355B1 (en) * | 2000-01-06 | 2004-10-12 | Intel Corporation | Block cipher for small selectable block sizes |
JP2002049310A (ja) * | 2000-08-04 | 2002-02-15 | Toshiba Corp | 暗復号装置、認証装置及び記憶媒体 |
US20020078342A1 (en) * | 2000-09-25 | 2002-06-20 | Broadcom Corporation | E-commerce security processor alignment logic |
DE60128007T2 (de) * | 2000-12-25 | 2007-12-27 | Matsushita Electric Industrial Co., Ltd., Kadoma | Vorrichtung und verfahren zur sicherheitsbearbeitung von kommunikationspaketen |
US7376826B2 (en) * | 2002-05-31 | 2008-05-20 | Broadcom Corporation | Methods and apparatus for performing encryption and authentication |
US7796752B2 (en) * | 2002-11-04 | 2010-09-14 | Marvell International Ltd. | Cipher implementation |
JP4561252B2 (ja) * | 2004-09-03 | 2010-10-13 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP2006253746A (ja) * | 2005-03-08 | 2006-09-21 | N-Crypt Inc | データ処理装置、データ処理システム、及びデータ処理方法 |
US8687800B2 (en) * | 2006-08-15 | 2014-04-01 | Alcatel Lucent | Encryption method for message authentication |
US9209967B2 (en) | 2007-03-12 | 2015-12-08 | Exelis, Inc. | Precalculated encryption key |
US20090119510A1 (en) * | 2007-11-06 | 2009-05-07 | Men Long | End-to-end network security with traffic visibility |
JP5504592B2 (ja) * | 2008-08-25 | 2014-05-28 | ソニー株式会社 | データ変換装置、およびデータ変換方法、並びにプログラム |
EP2822215A1 (en) * | 2012-03-02 | 2015-01-07 | Sony Corporation | Information processing device, information processing method, and programme |
US9917695B2 (en) * | 2012-11-29 | 2018-03-13 | Blackberry Limited | Authenticated encryption method using working blocks |
TWI510046B (zh) * | 2013-07-04 | 2015-11-21 | Univ Nat Cheng Kung | 認證式加解密方法 |
CN104683093B (zh) * | 2013-11-27 | 2018-01-26 | 财团法人资讯工业策进会 | 兼具完整性验证的区块加密装置、区块加密方法、区块解密装置及区块解密方法 |
-
2014
- 2014-06-24 CN CN201480043829.8A patent/CN105453482B/zh active Active
- 2014-06-24 AU AU2014297854A patent/AU2014297854B2/en active Active
- 2014-06-24 BR BR112016001596-7A patent/BR112016001596B1/pt active IP Right Grant
- 2014-06-24 EP EP14831687.0A patent/EP3029877B1/en active Active
- 2014-06-24 RU RU2016107391A patent/RU2647685C2/ru active
- 2014-06-24 KR KR1020167002966A patent/KR101809386B1/ko active IP Right Grant
- 2014-06-24 US US14/908,212 patent/US10341088B2/en active Active
- 2014-06-24 JP JP2015529336A patent/JP6519473B2/ja active Active
- 2014-06-24 WO PCT/JP2014/003382 patent/WO2015015702A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623549A (en) * | 1995-01-30 | 1997-04-22 | Ritter; Terry F. | Cipher mechanisms with fencing and balanced block mixing |
US20060285684A1 (en) * | 2001-07-30 | 2006-12-21 | Rogaway Phillip W | Method and apparatus for facilitating efficient authenticated encryption |
US8321675B2 (en) | 2001-07-30 | 2012-11-27 | Rogaway Phillip W | Method and apparatus for facilitating efficient authenticated encryption |
Non-Patent Citations (7)
Title |
---|
ANDERSON, E. ET AL.: "Manticore and CS mode : parallelizable encryption with joint cipher- state authentication", SANDIA REPORT, SAND2004- 5113, 1 October 2004 (2004-10-01), XP055312462, Retrieved from the Internet <URL:http://www.osti.gov/scitech/biblio/919631> [retrieved on 20140804] * |
KAZUHIKO MINEMATSU: "Improved Security Analysis of XEX and LRW Modes", SELECTED AREAS IN CRYPTOGRAPHY, 2006, pages 96 - 113, XP047373935, DOI: doi:10.1007/978-3-540-74462-7_8 |
MORRIS DWORKIN: "Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality", May 2005, NIST SPECIAL PUBLICATION 800-38C |
MOSES LISKOV; RONALD L. RIVEST; DAVID WAGNER: "2002, Advances in Cryptology-CRYPTO 2002, Lecture Notes in Computer Science", vol. 2442, 2002, SPRINGER, article "Tweakable Block Ciphers", pages: 31 - 46 |
NIELS FERGUSON ET AL., THE SKEIN HASH FUNCTION FAMILY, 2008, Retrieved from the Internet <URL:http://www.skein-hash.info/sites/default/files/skein1.1.pdf> |
P. ROGAWAY: "Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC", ADVANCES IN CRYPTOLOGY-ASIACRYPT'04, LNCS, vol. 3329, 2004, pages 16 - 31, XP055346936, DOI: doi:10.1007/978-3-540-30539-2_2 |
See also references of EP3029877A4 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017073716A (ja) * | 2015-10-09 | 2017-04-13 | 日本電気株式会社 | タグリスト生成装置、タグリスト検証装置、タグリスト更新装置、タグリスト生成方法及びプログラム |
US11349668B2 (en) | 2017-02-21 | 2022-05-31 | Mitsubishi Electric Corporation | Encryption device and decryption device |
US11251965B2 (en) | 2017-04-17 | 2022-02-15 | Nec Corporation | Authentication tag generation apparatus, authentication tag verification apparatus, method and program |
JPWO2018193507A1 (ja) * | 2017-04-17 | 2020-02-27 | 日本電気株式会社 | 認証タグ生成装置、認証タグ検証装置、方法及びプログラム |
JP2019015919A (ja) * | 2017-07-10 | 2019-01-31 | 日本電信電話株式会社 | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム |
JP2019015918A (ja) * | 2017-07-10 | 2019-01-31 | 日本電信電話株式会社 | 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム |
US11438137B2 (en) | 2017-09-01 | 2022-09-06 | Mitsubishi Electric Corporation | Encryption device, decryption device, encryption method, decryption method, and computer readable medium |
WO2019142306A1 (ja) * | 2018-01-19 | 2019-07-25 | ルネサスエレクトロニクス株式会社 | 半導体装置、データ提供方法、データ復号方法、およびプログラム |
WO2019163032A1 (ja) * | 2018-02-21 | 2019-08-29 | 日本電気株式会社 | 暗号化装置、暗号化方法、プログラム、復号装置、復号方法 |
JP7323196B2 (ja) | 2018-02-21 | 2023-08-08 | 日本電気株式会社 | 暗号化装置、暗号化方法、プログラム、復号装置、復号方法 |
US11463235B2 (en) | 2018-02-21 | 2022-10-04 | Nec Corporation | Encryption device, encryption method, program, decryption device, and decryption method |
JPWO2019163032A1 (ja) * | 2018-02-21 | 2021-01-14 | 日本電気株式会社 | 暗号化装置、暗号化方法、プログラム、復号装置、復号方法 |
JP7107381B2 (ja) | 2018-09-27 | 2022-07-27 | 日本電気株式会社 | Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法 |
JPWO2020065820A1 (ja) * | 2018-09-27 | 2021-08-30 | 日本電気株式会社 | Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法 |
WO2020065820A1 (ja) * | 2018-09-27 | 2020-04-02 | 日本電気株式会社 | Macタグリスト生成装置、macタグリスト検証装置、集約mac検証システム及び方法 |
US11750398B2 (en) | 2018-09-27 | 2023-09-05 | Nec Corporation | MAC tag list generation apparatus, MAC tag list verification apparatus, aggregate MAC verification system and method |
JPWO2020095382A1 (ja) * | 2018-11-07 | 2021-09-24 | 日本電気株式会社 | 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラム |
JP7136226B2 (ja) | 2018-11-07 | 2022-09-13 | 日本電気株式会社 | 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラム |
WO2020095382A1 (ja) * | 2018-11-07 | 2020-05-14 | 日本電気株式会社 | 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラム |
US11728968B2 (en) | 2018-11-07 | 2023-08-15 | Nrc Corporation | Authenticated encryption device, authenticated decryption device, authenticated encryption method, authenticated decryption method, authenticated encryption program, and authenticated decryption program |
WO2021214923A1 (ja) * | 2020-04-23 | 2021-10-28 | 日本電気株式会社 | 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体 |
JPWO2021214923A1 (ja) * | 2020-04-23 | 2021-10-28 | ||
JP7367860B2 (ja) | 2020-04-23 | 2023-10-24 | 日本電気株式会社 | 認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
BR112016001596A2 (ja) | 2017-07-25 |
US10341088B2 (en) | 2019-07-02 |
EP3029877B1 (en) | 2018-04-11 |
EP3029877A1 (en) | 2016-06-08 |
CN105453482A (zh) | 2016-03-30 |
AU2014297854A1 (en) | 2016-02-04 |
KR20160027982A (ko) | 2016-03-10 |
AU2014297854B2 (en) | 2016-12-22 |
KR101809386B1 (ko) | 2017-12-14 |
CN105453482B (zh) | 2019-06-21 |
RU2016107391A (ru) | 2017-09-07 |
US20160173276A1 (en) | 2016-06-16 |
JP6519473B2 (ja) | 2019-06-05 |
JPWO2015015702A1 (ja) | 2017-03-02 |
BR112016001596B1 (pt) | 2023-04-11 |
RU2647685C2 (ru) | 2018-03-16 |
EP3029877A4 (en) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2015015702A1 (ja) | 認証暗号装置、認証暗号方法および認証暗号用プログラム | |
JP6740902B2 (ja) | 認証暗号化方法、認証復号方法および情報処理装置 | |
US8577032B2 (en) | Common key block encryption device, common key block encryption method, and program | |
JP5704159B2 (ja) | ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム | |
KR20080058462A (ko) | 메시지 인증 장치, 메시지 인증 방법, 메시지 인증 프로그램을 기록한 매체 | |
US11463235B2 (en) | Encryption device, encryption method, program, decryption device, and decryption method | |
WO2013065241A1 (ja) | インクリメンタルmacタグ生成装置、方法及びプログラム並びにメッセージ認証装置 | |
WO2016067524A1 (ja) | 認証付暗号化装置、認証付復号装置、認証付暗号システム、認証付暗号化方法、プログラム | |
US8526602B2 (en) | Adjustment-value-attached block cipher apparatus, cipher generation method and recording medium | |
WO2010024003A1 (ja) | 倍ブロック長ブロック暗号化装置、復号装置、暗号化方法及び復号方法、及びそのプログラム | |
JP5333450B2 (ja) | 調整値付きブロック暗号化装置、方法及びプログラム並びに復号装置、方法及びプログラム | |
CN102946315B (zh) | 一种采用分组方式构造mac码的方法及系统 | |
JPWO2006019152A1 (ja) | メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法 | |
WO2020213114A1 (ja) | Macタグリスト生成装置、macタグリスト検証装置、方法及びプログラム | |
JP5365750B2 (ja) | ブロック暗号化装置、復号装置、暗号化方法、復号方法およびプログラム | |
WO2012141189A1 (ja) | 暗号化方法、暗号化装置および暗号化プログラム | |
CN115632765A (zh) | 加密方法、解密方法、装置、电子设备及存储介质 | |
AL-MUHANADI | Performance Evaluation of Multimedia Transmission over Error-Prone Wireless Channel Using Block and Stream Ciphers. | |
WO2009081975A1 (ja) | 暗号化装置、復号装置、暗号化方法、復号方法およびプログラム | |
KR20030001888A (ko) | 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법 | |
Singh et al. | ENHANCEMENT OF WIRED EQUIVALENT PRIVACY |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 201480043829.8 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14831687 Country of ref document: EP Kind code of ref document: A1 |
|
DPE1 | Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101) | ||
ENP | Entry into the national phase |
Ref document number: 2015529336 Country of ref document: JP Kind code of ref document: A |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2014831687 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 14908212 Country of ref document: US |
|
ENP | Entry into the national phase |
Ref document number: 20167002966 Country of ref document: KR Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2014297854 Country of ref document: AU Date of ref document: 20140624 Kind code of ref document: A |
|
REG | Reference to national code |
Ref country code: BR Ref legal event code: B01A Ref document number: 112016001596 Country of ref document: BR |
|
ENP | Entry into the national phase |
Ref document number: 2016107391 Country of ref document: RU Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 112016001596 Country of ref document: BR Kind code of ref document: A2 Effective date: 20160125 |