WO2009128370A1 - 調整値付きブロック暗号装置、暗号生成方法および記録媒体 - Google Patents

調整値付きブロック暗号装置、暗号生成方法および記録媒体 Download PDF

Info

Publication number
WO2009128370A1
WO2009128370A1 PCT/JP2009/057164 JP2009057164W WO2009128370A1 WO 2009128370 A1 WO2009128370 A1 WO 2009128370A1 JP 2009057164 W JP2009057164 W JP 2009057164W WO 2009128370 A1 WO2009128370 A1 WO 2009128370A1
Authority
WO
WIPO (PCT)
Prior art keywords
encryption
adjustment value
offset
unit
plaintext
Prior art date
Application number
PCT/JP2009/057164
Other languages
English (en)
French (fr)
Inventor
一彦 峯松
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2010508179A priority Critical patent/JP5273141B2/ja
Priority to US12/918,509 priority patent/US8526602B2/en
Publication of WO2009128370A1 publication Critical patent/WO2009128370A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]

Definitions

  • the present invention relates to an operation mode of block cipher, for example, a general-purpose and high-speed block cipher with adjustment value, a cipher generation method, and a recording medium by combining block cipher and partial processing of block cipher About.
  • the block cipher with adjustment value is a block cipher having an adjustment value called tweak in addition to plaintext, ciphertext, and key, which is an input / output of a normal block cipher.
  • the output (ciphertext) of two block ciphers with different adjustment values can be seen as independent and random values by an attacker who already knows the adjustment value and input (plaintext). Is required. When this property is satisfied, the block cipher with adjustment value is said to be secure.
  • Non-Patent Document 1 The formal definition of the block cipher with adjustment value was first made in Non-Patent Document 1.
  • Non-Patent Document 1 a theoretically safe block cipher with an adjustment value is obtained as a normal block cipher operation mode (hereinafter abbreviated as “mode”), that is, the block cipher is used as a black box. It was shown that it was obtained as a conversion.
  • mode normal block cipher operation mode
  • the theoretical security here means that the security of the block cipher with adjustment value obtained as a mode of a certain block cipher can be reduced to the security of the original block cipher, that is, a safe block cipher is used.
  • a safe block cipher is used.
  • the block cipher with the adjustment value obtained as the mode of the block cipher it means that it is safe.
  • the definition of security includes the security when an attacker can execute only a selected plaintext attack (chosen-plaintext attack, CPA), and the attacker can select a plaintext attack and a selected ciphertext attack (chosen-ciphertext attack).
  • CPA plaintext attack
  • CCA ciphertext attack
  • Secure block cipher with adjustment value is known to be a key technology for realizing advanced encryption functions.
  • Non-Patent Document 2 if a block cipher with an adjustment value having CCA-security is used, very efficient encryption with an authentication function can be realized, or if a block cipher with an adjustment value having CPA-security is used, It has been pointed out that an efficient and parallel executable message authentication code can be realized.
  • block cipher with adjustment value having CCA-security is an indispensable technology for storage encryption such as disk sector encryption.
  • Non-Patent Document 1 the mode proposed in Non-Patent Document 1 is referred to as LRW mode.
  • FIG. 1 is a block diagram for explaining encryption processing in the LRW mode, specifically, encryption processing using an n-bit block cipher (hereinafter simply referred to as “block cipher”) E in the LRW mode. It is.
  • block cipher an n-bit block cipher
  • a multiplication unit 11M that implements a function mul that performs multiplication on the finite field GF (2 n ) is required.
  • mul (x, y) represents the multiplication result of the two elements x and y on the finite field GF (2 n ).
  • one of the arguments of the function mul is an n-bit uniform random number K2.
  • the uniform random number K2 is a key independent of the key K1 of the block cipher E.
  • Another argument of the function mul is tweak.
  • the function mul creates a value to be added to the plaintext supplied to the block cipher E and a value to be added to the ciphertext generated by the block cipher E.
  • a function in this case, function mul
  • offset function the output of the offset function will be referred to as an “offset”.
  • the offset function is not limited to the function mul but may be a function F with an independent key and tweak as arguments.
  • the function F is Pr [f (K, x) for any c, x, x '(where x and x' are different) when the security parameter is e (e is 0 or more and 1 or less).
  • + represents exclusive OR.
  • f (K, *) is said to be e-almost XOR universal (e-AXU).
  • e-AXU e-almost XOR universal
  • the e-AXU function is a kind of universal hash function.
  • the function mul is 1/2 n -AXU.
  • the e-AXU function can be realized by a method proposed in Non-Patent Document 3 in addition to the function mul.
  • Non-Patent Document 2 the XEX mode described in Non-Patent Document 2 is also known as a block cipher with an adjustment value that uses only the block cipher E.
  • FIG. 2A is a block diagram for explaining the XEX mode.
  • tweak (tweak1, tweak2).
  • the offset function pow performs multiplication of tweak1 encryption E (K1, tweak1) and btweak2 with a certain radix as b and tweak2 as an exponent. That is, the offset is expressed by the following [several pow].
  • the first argument of the function pow in this case is the product of b1 tweak21 and b2 tweak22 , that is, mul (b1 tweak21 , b2 tweak22 ).
  • the offset is incremented by tweak2, that is, by adding 1 to the previous tweak2 value, one bit shift and one constant exclusion It has the advantage that it can be calculated only by logical OR. In other words, the calculation of the offset can be performed in a very short time compared with the encryption of the block cipher.
  • tweak2 is fixed to a constant and only tweak1 is treated as tweak, so that tweak can be arbitrarily updated. However, this shortens the length of tweak.
  • the calculation amount of one block is required for calculating the offset. Therefore, the XEX mode in this case requires two block cipher calls to encrypt one block message.
  • Both LRW mode and XEX mode have CCA-security, but if the second exclusive OR due to offset is omitted in LRW mode and XEX mode, the resulting mode is CPA-security only mode It becomes.
  • CPA-security is weaker than CCA-security as a concept of security, but CPA-security is known to be sufficient for some applications such as message authentication.
  • FIG. 2B is a block diagram showing encryption processing in the XE mode.
  • Non-Patent Document 2 proposes XEX * mode, which is a mode in which XE mode and XEX mode are mixed.
  • the XEX * mode is a mode in which the user can specify for each individual tweak whether processing is performed in the XE mode or the XEX mode.
  • FIG. 2C is a block diagram showing encryption processing in the XEX * mode.
  • tag tag 1-bit information that specifies whether to use XE mode or XEX mode is called tag tag.
  • the mode in which the user designates and uses a tag and tweak as described above is also referred to as a block cipher with adjustment value here.
  • XEX * mode The advantage of XEX * mode is that CPA-security is required for processing at one tweak, but CCA-security is required for processing at another tweak, compared to simply using XEX mode. Is to improve.
  • the exclusive OR operation of the offset on the ciphertext side can be omitted by using the XE mode instead of the XEX mode.
  • the XEX * mode is used in OCB 2.0, which is an encryption mode with an authentication function described in Non-Patent Document 4. This is an improvement of the OCB described in Patent Document 1.
  • US Pat. No. 7,046,802 Moses Liskov, Ronald L. Rivest, David Wagner: Tweakable Block Ciphers.Advances in Cryptology-CRYPTO 2002, 22nd Annual International Cryptology Conference, Santa Barbara, California, USA, August 18-22, 2002, Proceedings. Lecture Notes in Computer Science 2442 Springer 2002, pp. 31-46 P.
  • XE mode In XE mode, XEX mode, or XEX * mode that realizes block ciphers with adjustment values using only block ciphers, the amount of processing increases compared to encryption according to simple block ciphers at any input. End up.
  • An object of the present invention is to provide a block cipher with adjustment value, a block encryption method with adjustment value, and a program capable of solving the above-described problems.
  • An adjustment value-added block cipher apparatus includes: an encryption unit that performs encryption using a block encryption method; instruction information indicating either the first encryption process or the second encryption process; plaintext; and an adjustment value.
  • the adjustment value is divided into a first adjustment value and a second adjustment value, and the first adjustment value is obtained using the encryption unit.
  • Encrypt to generate an offset cipher obtain an offset value based on the offset cipher and the second adjustment value, take the sum of the offset value and the plaintext, and use the encryption unit to Generating a first ciphertext and generating a second ciphertext by encrypting the plaintext using the encryption unit when the instruction information indicates the second cipher processing; ,including.
  • a cipher generation method is a cipher generation method performed by a block cipher with an adjustment value including an encryption unit that performs encryption using a block cipher method, and indicates either a first encryption process or a second encryption process
  • the adjustment value is divided into a first adjustment value and a second adjustment value
  • the encryption unit Is used to encrypt the first adjustment value to generate an offset cipher, obtain an offset value based on the offset cipher and the second adjustment value, take the sum of the offset value and the plaintext
  • the plaintext is encrypted using the encryption unit 2 Generate ciphertext.
  • the recording medium of the present invention is an input for receiving an encryption unit that performs encryption using a block encryption method, instruction information indicating either the first encryption process or the second encryption process, plain text, and an adjustment value. And the instruction information indicates the first encryption process, the adjustment value is divided into a first adjustment value and a second adjustment value, and the first adjustment value is encrypted using the encryption unit.
  • To generate an offset cipher obtain an offset value based on the offset cipher and the second adjustment value, take the sum of the offset value and the plaintext, and use the encryption unit to calculate the sum Generating a first ciphertext by encrypting and generating the second ciphertext by encrypting the plaintext using the encryption unit when the instruction information indicates the second cipher processing;
  • a computer that records the programs to be operated A recording medium which is readable.
  • block cipher processing with a small amount of processing can be realized in the block cipher with adjustment value.
  • FIG. 5 is a block diagram showing encryption processing in an XE mode. It is the block diagram which showed the encryption process in XEX * mode. It is a block diagram which shows the structure of the block cipher with an adjustment value of the 1st Embodiment of this invention. It is explanatory drawing which showed the example in case 4 step
  • FIG. It is a flowchart for demonstrating operation
  • FIG. 3 is a block diagram illustrating a configuration of the block cipher with adjustment value according to the first embodiment.
  • the block cipher apparatus 10 with adjustment value includes a block encryption unit 10A, an input unit 10B, and a generation unit 10C.
  • the generation unit 10C includes a process selection unit 10C1, an offset calculation unit 10C2, a double-sided offset encryption unit 10C3, an additional encryption unit 10C4, and an output unit 10C5.
  • the adjustment value-attached block cipher apparatus 10 can be realized by, for example, a computer including a CPU, a memory, and a disk.
  • the block encryption device with adjustment value 10 operates according to a program (application) recorded on the disc, for example.
  • the disk can be generally called a recording medium that can be read by a computer (block encryption device with adjustment value 10; CPU).
  • the CPU in the block encryption device with adjustment value 10 functions as a block encryption unit 10A, an input unit 10B, and a generation unit 10C by reading and executing a program from a disk (recording medium).
  • the block encryption unit 10A can be generally called encryption means.
  • the block encryption unit 10A performs encryption using a block encryption method.
  • the block encryption unit 10A stores, for example, a block encryption algorithm corresponding to a block encryption method such as AES (Advanced Encryption Standard), and performs encryption based on the block encryption algorithm.
  • AES Advanced Encryption Standard
  • the input unit 10B can be generally referred to as input means.
  • the input unit 10B accepts n-bit plaintext to be encrypted, treak, and a processing instruction variable.
  • treak can generally be referred to as an adjustment value.
  • the process instruction variable can be generally referred to as instruction information.
  • the processing instruction variable indicates one of two values (“0” and “1”). In this embodiment, “0” means the first encryption process, and “1” means the second encryption process.
  • the input unit 10B is realized by a character input device such as a keyboard, for example.
  • the input unit 10B When receiving the plaintext, tweak, and the processing instruction variable, the input unit 10B provides the plaintext, tweak, and the processing instruction variable to the generation unit 10C (specifically, the processing selection unit 10C1).
  • the generation unit 10C can be generally referred to as generation means.
  • the generation unit 10C divides tweak into tweak1 and tweak2 when the processing instruction variable indicates “0”.
  • tweak1 can be generally referred to as a first adjustment value.
  • tweak2 can be generally referred to as a second adjustment value.
  • the generation unit 10C divides tweak into tweak1 and tweak2 so that tweak1 is different from plaintext.
  • the generation unit 10C encrypts tweak1 using the block encryption unit 10A and generates an offset cipher.
  • the generation unit 10C obtains an offset value based on the offset encryption and tweak2.
  • the generation unit 10C performs multiplication of the offset encryption and a calculation element with tweak2 as an exponent for the radix on the finite field GF (2 n ), and sets the result of the multiplication as an offset value.
  • the generation unit 10C calculates the sum (for example, exclusive OR) of the offset encryption and tweak2, and performs a replacement process performed by the block encryption method executed by the block encryption unit 10A on the sum.
  • the offset value may be obtained.
  • the block encryption unit 10A uses the block encryption method, and AES with a block length of 128 bits is used, the generation unit 10C has the offset encryption and tweak2
  • the offset value may be obtained by performing 128-bit replacement processing defined in AES, that is, 128-bit replacement processing included in AES.
  • the generation unit 10C takes the sum (for example, exclusive OR) of the offset value and the plaintext, encrypts the sum using the block encryption unit 10A, and generates the first ciphertext. Further, the generation unit 10C generates the third ciphertext by taking the sum (for example, exclusive OR) of the first ciphertext and the offset value.
  • the generation unit 10C encrypts the plaintext from the input unit 10B using the block encryption unit 10A to generate the second ciphertext. That is, when the processing instruction variable indicates “1”, the generation unit 10C generates the second ciphertext without using tweak.
  • the process selection unit 10C1 can be generally referred to as process selection means.
  • the process selection unit 10C1 switches processes according to the process instruction variable from the input unit 10B. Specifically, the process selection unit 10C1 outputs plaintext and tweak to the offset calculation unit 10C2 when the process instruction variable indicates “0”, and outputs plaintext and tweak when the process instruction variable indicates “1”. Only plaintext is output to the additional encryption unit 10C4.
  • the offset calculation unit 10C2 can be generally referred to as offset calculation means.
  • the offset calculation unit 10C2 receives the plaintext and tweak output from the process selection unit 10C1 when the process instruction variable indicates “0”, and calculates an offset value (hereinafter referred to as “offset”) depending on tweak. Output offset and plaintext together.
  • the offset calculation unit 10C2 decomposes tweak into two partial series, tweak1 and tweak2.
  • the offset calculation unit 10C2 calculates the offset according to the mathematical formula shown in the following [number offset].
  • the block size is n bits
  • tweak is also n bits, and this processing is a keyed function with n bits input and n bits output.
  • [Number offset] offset F (E (K, tweak1), tweak2) In [number offset], E (K, tweak1) indicates encryption of tweak1 using the n-bit block cipher E and its key K. Note that the offset calculation unit 10C2 performs encryption within the mathematical expression (offset function F) indicated by [number offset] using the block encryption unit 10A.
  • N is a subset of ⁇ 0, 1 ⁇ n .
  • the offset function F becomes an n + s bit input and n bit output function, and the following three values, MEDP, U, and MESDP, satisfy the condition that they are sufficiently small. is required.
  • R is a uniform random number of s bits.
  • the maximum of MEDP is taken for any s-bit value pair x, x 'where x and x' are different, and for any n-bit value d.
  • the maximum of U and MESDP is taken for every s bit value x and n bit value d.
  • the offset function F may be a function with a key.
  • the offset calculation unit 10C2 has an independent key Ksub as an input in addition to the n + s-bit input, and the probabilities of MEDP, U, and MESDP are the values of this key Ksub.
  • the definition includes the probability distribution.
  • MEDP is called the maximum difference probability.
  • the function pow (described in [several pow]) used in the XEX mode described in Non-Patent Document 2 is listed as satisfying the condition.
  • Most recent block ciphers are configured by repeating a relatively simple keyed substitution called a round function a predetermined number of times while changing the key.
  • the offset function F is defined by the following [Numerical Round].
  • Non-Patent Document 6 describes that the block function AES described in Non-Patent Document 5 uses four iterations of a round function (called 4-stage AES) as the offset function F.
  • FIG. 4 is an explanatory diagram showing an example in which a 4-stage AES is used as the offset function F used by the offset calculation unit 10C2.
  • G is 4-stage AES
  • MEDP difference probability
  • the probability of U has a theoretical minimum value (when the block size is n, 2 to the power of -n), and the probability indicated by MESDP is exclusive to the round key in the round function. Since the logical sum is always the theoretical minimum value of 2 -n , using this secure block cipher shortening stage as G makes it possible to build this embodiment with high security reliability. It is.
  • the double-sided offset encryption unit 10C3 can be generally called double-sided offset encryption means.
  • the double-sided offset encryption unit 10C3 uses the block encryption unit 10A to generate a ciphertext (third ciphertext) C based on the offset and plaintext output by the offset calculation unit 10C2.
  • the ciphertext C output from the both-side offset encryption unit 10C3 is obtained according to the following mathematical formula shown in [several twosideOFE].
  • the additional encryption unit 10C4 can be generally referred to as additional encryption means.
  • the additional encryption unit 10C4 encrypts the plaintext output by the process selection unit 10C1 when the process instruction variable indicates “1” using the block encryption unit 10A, and generates a second ciphertext.
  • the generation unit 10C (specifically, the offset calculation unit 10C2) divides tweak into tweak1 and tweak2 so that Moe is always different from tweak1.
  • the additional encryption unit 10C4 realizes an additive stream cipher using Moe as a counter and E (K, Moe) obtained as a pseudorandom number.
  • E (K, Moe) may be used as a pseudo-random number for any purpose, such as password generation or secret sharing.
  • the output unit 10C5 can be generally called output means.
  • the output unit 10C5 outputs the ciphertext output by the double-sided offset encryption unit 10C3 or the additional encryption unit 10C4 to a computer display, a printer, or the like.
  • FIG. 5 is a flowchart for explaining the operation of the first embodiment.
  • FIG. 6 is an explanatory diagram for explaining the process when the process instruction variable indicates “0”.
  • FIG. 7 is an explanatory diagram for explaining a process when the process instruction variable indicates “1”.
  • the input unit 10B receives plaintext, tweak, and a processing instruction variable (step AE1).
  • the input unit 10B provides the plaintext, tweak, and processing instruction variable to the processing selection unit 10C1.
  • the process selection unit 10C1 determines whether normal encryption or additional encryption is performed based on the value of the process instruction variable (step AE2).
  • the process selection unit 10C1 determines to perform normal encryption, and provides plaintext and tweak to the offset calculation unit 10C2.
  • the process selection unit 10C1 determines to perform additional encryption, and provides only the plaintext of plaintext and tweak to the additional encryption unit 10C4.
  • the offset calculation unit 10C2 uses the block encryption unit 10A to obtain an offset according to the equation shown in [number offset] (step AE3).
  • the offset calculation unit 10C2 provides the offset and plaintext to the double-sided offset encryption unit 10C3.
  • the block encryption unit 10A uses the block encryption unit 10A to obtain the ciphertext according to the mathematical formula shown in [several twosideOFE] based on the offset and the plaintext (step AE4). Both-side offset encryption unit 10C3 provides the ciphertext to output unit 10C5.
  • the additional encryption unit 10C4 encrypts the plaintext using the block encryption unit 10A to obtain a ciphertext (step AE5).
  • the additional encryption unit 10C4 provides the ciphertext to the output unit 10C5.
  • the output unit 10C5 when receiving the ciphertext, the output unit 10C5 outputs the ciphertext (step AE6).
  • This embodiment has the following effects.
  • the additional encryption unit 10C4 (generation unit 10C) encrypts the plaintext using the block encryption unit 10A and generates a ciphertext. For this reason, the additional encryption unit 10C4 performs encryption that does not require exclusive OR of the offset on both the plaintext side and the ciphertext side.
  • the offset function F when the offset function F is realized by using the same offset function pow as the XEX mode, it is possible to generate a cipher at a higher speed than in the XEX (or XE, XEX *) mode. .
  • the offset calculation unit 10C2 (generation unit 10C) divides tweak into tweak1 and tweak2 so that tweak1 is different from plaintext. For this reason, if the plaintext input to the additional encryption unit 10C4 is always different from tweak1, the output of the additional encryption unit 10C4 should be used as a pseudo-random number independent of normal encryption / decryption processing. Can do. Such random numbers can be used in various processes related to encryption, such as password generation and secret sharing.
  • the additional encryption unit 10C4 can perform counter mode encryption. This is equivalent to adding a new independent and high-speed counter mode to the normal XEX mode.
  • offset calculation section 10C2 (generation section 10C) takes the sum of the offset encryption and tweak2, and the replacement is performed by the block encryption scheme in block encryption section 10A. Processing is performed to obtain an offset value. For this reason, only a part of the block cipher processing is required to update tweak and calculate a new offset value.
  • tweak2 can only be updated sequentially, so it is impossible to update the entire tweak.
  • tweak In the LRW mode, tweak can be arbitrarily updated. However, since it is necessary to implement a finite field multiplication mul, the program size increases.
  • tweak2 only can be updated at about 2.5 times the AES itself. Become.
  • FIG. 8 is a block diagram showing a configuration of the block cipher with adjustment value according to the second embodiment.
  • the block cipher with adjustment value 20 includes a block encryption unit 20A, an input unit 20B, and a generation unit 20C.
  • the generation unit 20C includes a process selection unit 20C1, an offset calculation unit 20C2, a one-side offset encryption unit 20C3, an additional encryption unit 20C4, and an output unit 20C5.
  • the adjustment value-added block cipher apparatus 20 can be realized by, for example, a computer including a CPU, a memory, and a disk.
  • the block encryption device with adjustment value 20 operates according to a program (application) recorded on the disc, for example.
  • the CPU in the block cipher with adjustment value 20 functions as a block encryption unit 20A, an input unit 20B, and a generation unit 20C by reading and executing a program from a disk (recording medium).
  • Each of the block encryption unit 20A, the input unit 20B, the process selection unit 20C1, the offset calculation unit 20C2, the additional encryption unit 20C4, and the output unit 20C5 is the block cipher of the first embodiment.
  • the configuration is the same as each of the conversion unit 10A, the input unit 10B, the processing selection unit 10C1, the offset calculation unit 10C2, the additional encryption unit 10C4, and the output unit 10C5.
  • the generation unit 20C can be generally referred to as generation means.
  • the one-side offset encryption unit 20C3 can be generally referred to as one-side offset encryption means.
  • the one-side offset encryption unit 20C3 uses the block encryption unit 20A to generate a ciphertext (first ciphertext) based on the offset and plaintext output by the offset calculation unit 20C2.
  • the ciphertext C output by the one-side offset encryption unit 20C3 is obtained in accordance with the mathematical formula shown in [Several onesideOFE] below.
  • onesideOFE E (K, M + offset)
  • E is a block cipher by the block encryption unit 20A
  • K is a key of E
  • + represents an exclusive OR
  • FIG. 9 is a flowchart for explaining the operation of the second embodiment.
  • FIG. 10 is an explanatory diagram for explaining a process when the process instruction variable indicates “0”.
  • FIG. 11 is an explanatory diagram for explaining a process when the process instruction variable indicates “1”.
  • the input unit 20B receives plaintext, tweak, and a processing instruction variable (step BE1).
  • the input unit 20B provides the plaintext, tweak, and processing instruction variable to the processing selection unit 20C1.
  • the process selection unit 20C1 determines whether to perform normal encryption or additional encryption according to the value of the process instruction variable (step BE2).
  • the process selection unit 20C1 determines to perform normal encryption, and provides plaintext and tweak to the offset calculation unit 20C2.
  • the process selection unit 20C1 determines to perform additional encryption, and provides only the plaintext of plaintext and tweak to the additional encryption unit 20C4.
  • the offset calculation unit 20C2 uses the block encryption unit 20A to obtain an offset according to the equation shown in [number offset] (step BE3).
  • the offset calculation unit 20C2 provides the offset and plaintext to the one-side offset encryption unit 20C3.
  • the one-side offset encryption unit 20C3 uses the block encryption unit 20A to obtain the ciphertext based on the offset and the plaintext according to the equation shown in [Several onesideOFE] (step BE4).
  • the one-side offset encryption unit 20C3 provides the ciphertext to the output unit 20C5.
  • the additional encryption unit 20C4 encrypts the plaintext using the block encryption unit 20A to obtain a ciphertext (step BE5).
  • the additional encryption unit 20C4 provides the ciphertext to the output unit 20C5.
  • the output unit 20C5 when receiving the ciphertext, the output unit 20C5 outputs the ciphertext (step BE6).
  • the generation unit 20C takes the sum of the offset value and the plaintext, and encrypts the sum using the block encryption unit 20A to generate the first ciphertext. For this reason, encryption in the XEX mode can be performed.
  • FIG. 12 is a block diagram illustrating a configuration of a block cipher with an adjustment value according to the third embodiment.
  • the block cipher apparatus 30 with adjustment value includes a block encryption unit 30A, an input unit 30B, and a generation unit 30C.
  • the generation unit 30C includes a process selection unit 30C1, an offset calculation unit 30C2, a tag-dependent offset encryption unit 30C3, an additional encryption unit 30C4, and an output unit 30C5.
  • the adjustment value-attached block cipher apparatus 30 can be realized by, for example, a computer including a CPU, a memory, and a disk.
  • the block encryption device with adjustment value 30 operates according to a program (application) recorded on the disc, for example.
  • the CPU in the block cipher with adjustment value 30 functions as a block encryption unit 30A, an input unit 30B, and a generation unit 30C by reading and executing a program from a disk (recording medium).
  • block encryption unit 30A, the additional encryption unit 30C4, and the output unit 30C5 are respectively the block encryption unit 10A, the additional encryption unit 10C4, and the output unit 10C5 of the first embodiment. Each has the same configuration.
  • the input unit 30B can be generally referred to as input means.
  • the input unit 30B accepts n-bit plaintext to be encrypted, tweak, a processing instruction variable, and a tag tag.
  • the tag tag can be generally called processing information.
  • a tag tag indicates one of two values (“0” and “1”). In this embodiment, “0” indicated by the tag tag means the first offset process, and “1” indicated by the tag tag means the second offset process.
  • the input unit 30B is realized by a character input device such as a keyboard, for example.
  • the input unit 30B When receiving the plaintext, tweak, processing instruction variable, and tag tag, the input unit 30B provides the plaintext, tweak, processing instruction variable, and tag tag to the processing selection unit 30C1.
  • the process selection unit 30C1 can be generally referred to as process selection means.
  • the process selection unit 30C1 switches processes according to the process instruction variable from the input unit 30B. Specifically, when the process instruction variable indicates “0”, the process selection unit 30C1 outputs plaintext, tweak, and tag tag to the offset calculation unit 30C2, and when the process instruction variable indicates “1”, Of the plaintext, tweak, and tag tag, only the plaintext is output to the additional encryption unit 30C4.
  • the offset calculation unit 30C2 can be generally referred to as offset calculation means.
  • the offset calculation unit 30C2 receives the plaintext, tweak, and tag tag output from the processing selection unit 30C1 when the processing instruction variable indicates “0”, calculates the offset depending on tweak, and calculates the offset, plaintext, and tag tag. Are also output to the tag-dependent offset encryption unit 30C3.
  • the tag-dependent offset encryption unit 30C3 can be generally called tag-dependent offset encryption means.
  • the tag-dependent offset encryption unit 30C3 performs encryption based on the input plaintext, tag tag, and offset. Specifically, the tag-dependent offset encryption unit 30C3 uses the block encryption unit 30A to generate the ciphertext C according to the equation shown in the following [several taggedOFE].
  • FIG. 13 is a flowchart for explaining the operation of the third embodiment.
  • the overall operation of the third exemplary embodiment will be described in detail with reference to FIG.
  • the input unit 30B receives plaintext, tweak, a tag, and a processing instruction variable (step CE1).
  • the input unit 30B provides the plaintext, tweak, tag, and processing instruction variable to the processing selection unit 30C1.
  • the processing selection unit 30C1 determines whether normal encryption or additional encryption is performed based on the value of the processing instruction variable (step CE2).
  • the process selection unit 30C1 determines that normal encryption is performed, and provides plaintext, tweak, and a tag to the offset calculation unit 30C2.
  • the process selection unit 30C1 determines to perform additional encryption, and provides only the plaintext of the plaintext, tweak, and tag to the additional encryption unit 30C4.
  • the offset calculation unit 30C2 uses the block encryption unit 30A to obtain an offset according to the equation shown in [number offset] (step CE3).
  • the offset calculation unit 30C2 provides the offset, plaintext, and tag to the tag-dependent offset encryption unit 30C3.
  • the block-dependent offset encryption unit 30C3 uses the block encryption unit 30A to convert the ciphertext according to the equation shown in [several taggedOFE] based on the offset, plaintext, and tag. Obtain (step CE4).
  • the tag-dependent offset encryption unit 30C3 provides the ciphertext to the output unit 30C5.
  • the additional encryption unit 30C4 encrypts the plaintext using the block encryption unit 20A to obtain a ciphertext (step CE5).
  • the additional encryption unit 30C4 provides the ciphertext to the output unit 30C5.
  • the output unit 30C5 when receiving the ciphertext, the output unit 30C5 outputs the ciphertext (step CE6).
  • the generation unit 30C outputs the first ciphertext as a plaintext ciphertext when the tag indicates “0”, and the plaintext when the tag indicates “1”.
  • the third ciphertext is output as the ciphertext. For this reason, encryption in the XEX * mode can be performed.
  • the above embodiments can be applied to uses such as authentication and encryption in wireless or wired data communication, and uses such as encryption of data on a storage and prevention of tampering.
  • the block cipher with adjustment value generates an offset value to be added (exclusive OR) before and after generating the ciphertext of the n-bit block cipher depending on tweak (adjustment value). Then, in order to efficiently generate a random number necessary for generating the offset, tweak is divided into n-bit tweak1 and tweak2, and a result obtained by encrypting tweak1 with an n-bit block cipher is used.
  • This kind of additional encryption function is more suitable for roles such as pseudo-random number generation than encryption in the normal sense because there is a restriction on the plaintext that can be input.
  • the LRW mode generates a random number necessary for generating the offset independently of the block cipher key. There was a need.
  • This block processing and the block cipher itself can be combined to configure a block cipher with a high-speed adjustment value that enables arbitrary updates of tweak (particularly tweak2).
  • tweak2 can only be updated sequentially and cannot be updated to an arbitrary value, whereas in each of the above embodiments, tweak2 is efficiently used by using a part of the block cipher. Arbitrary updates are possible.
  • the block cipher itself is safe, and if the difference probability of the replacement process derived from a part of the block cipher is small, the block cipher with the adjustment value is theoretically safe for the selected plaintext / ciphertext attack. .
  • the block cipher with the adjustment value that is safe against the selected plaintext attack is obtained.

Landscapes

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

Abstract

 調整値付きブロック暗号において、処理量が少ないブロック暗号処理を実現する調整値付きブロック暗号装置、方法およびプログラムを提供する。  調整値付きブロック暗号装置は、ブロック暗号方式で暗号化を行う暗号化部と、第1暗号処理と第2暗号処理のいずれかを示す指示情報と平文と調整値とを受け付ける入力部と、指示情報が第1暗号処理を示す場合には、調整値を第1調整値と第2調整値に分割し、暗号化部を用いて第1調整値を暗号化してオフセット用暗号を生成し、オフセット用暗号と第2調整値とに基づいてオフセット値を求め、オフセット値と平文との和をとり、暗号化部を用いて和を暗号化して第1暗号文を生成し、指示情報が第2暗号処理を示す場合には、暗号化部を用いて平文を暗号化して第2暗号文を生成する生成部と、を含む。

Description

調整値付きブロック暗号装置、暗号生成方法および記録媒体
 本発明は、ブロック暗号の運用モードに関し、例えば、ブロック暗号と、ブロック暗号の一部の処理と、の組合せによる、汎用的で高速な調整値付きブロック暗号装置、暗号生成方法、および、記録媒体に関する。
 調整値付きブロック暗号とは、通常のブロック暗号が持つ入出力である、平文、暗号文および鍵以外に、tweakと呼ばれる調整値を持つブロック暗号のことである。
 調整値付きブロック暗号においては、調整値が異なる二つのブロック暗号の出力(暗号文)が、調整値と入力(平文)を既に知っている攻撃者には、互いに独立でランダムな値に見えることが要求される。この性質が満たされるとき、調整値付きブロック暗号は安全であるという。
 tweakと同様な補助入力を持つブロック暗号は、いくつか提案されてきた。しかしながら、それらの暗号では、安全性などについて厳密な要求は定義されていなかった。
 調整値付きブロック暗号の形式的な定義は、非特許文献1において最初になされた。
 また、非特許文献1において、理論的に安全な調整値付きブロック暗号が、通常のブロック暗号の運用モード(以後「モード」と略す)として得られるということ、つまり、ブロック暗号をブラックボックスとして用いた変換として得られるということが示された。
 ただし、ここでいう理論的安全性とは、あるブロック暗号のモードとして得られる調整値付きブロック暗号の安全性が、元となるブロック暗号の安全性に帰着できる、つまり、安全なブロック暗号を用いる限り、そのブロック暗号のモードとして得られる調整値付きブロック暗号も安全である、ということを指す。
 さらに、安全性の定義には、攻撃者が選択平文攻撃(chosen-plaintext attack, CPA)のみ実行可能な場合での安全性と、攻撃者が選択平文攻撃と選択暗号文攻撃(chosen-ciphertext attack, CCA)とを組み合わせて実行可能な場合での安全性と、の2種類があり、前者をCPA-security、後者をCCA-securityと呼ぶ。
 安全な調整値付きブロック暗号は、高度な暗号化機能の実現のための鍵となる技術であることが知られている。
 例えば、非特許文献2では、CCA-securityを有する調整値付きブロック暗号を用いると、大変効率のよい認証機能付き暗号化が実現できることや、CPA-securityを有する調整値付きブロック暗号を用いると、効率のよい、並列実行可能なメッセージ認証コードが実現できることが指摘されている。
 また、CCA-securityを有する調整値付きブロック暗号は、ディスクセクタ暗号化などのストレージ暗号化のための必須の技術であることも知られている。
 ここでは、非特許文献1で提案されたモードを、LRWモードと呼ぶことにする。
 図1は、LRWモードでの暗号化処理、具体的には、LRWモードにおいてnビットブロック暗号(以下、単に「ブロック暗号」と称する。)Eを用いた暗号化処理を説明するためのブロック図である。
 LRWモードにおいては、ブロック暗号Eを実装した暗号化部11E以外に、有限体GF(2n)上で乗算を行う関数mulを実装した乗算部11Mが必要となる。ここで、mul(x,y)は、有限体GF(2n)上での2要素xとyの乗算結果を表す。LRWモードにおいては、関数mulの引数の一つは、nビットの一様乱数K2である。一様乱数K2を、ブロック暗号Eの鍵K1とは独立な鍵とする。関数mulのもうひとつの引数は、tweakである。
 LRWモードでは、ブロック暗号Eに供給される平文に足す値、および、ブロック暗号Eによって生成された暗号文に足す値を、関数mulが作っている。このような関数(この場合、関数mul)を、「オフセット関数」と呼ぶことにし、オフセット関数の出力を「オフセット」と呼ぶことにする。
 より一般的には、オフセット関数は、関数mulに限らず、独立な鍵とtweakを引数とした関数Fでよい。
 ここで、関数Fは、セキュリティパラメータをe(eは0以上1以下)としたとき、任意のc, x, x'(ただしxとx'は異なる)について、Pr[f(K,x) + f(K,x')= c]がe以下であるという性質をもつ必要がある。ただし、+は排他的論理和をあらわす。
 関数Fが、この性質を持つとき、f(K,*)は、e-almost XOR universal (e-AXU)であるという。e-AXU関数は、ユニバーサルハッシュ関数の一種である。ちなみに、関数mulは、1/2n-AXUである。
 e-AXU関数は、関数mul以外にも、非特許文献3などで提案されている方式で実現可能である。
 これらのe-AXU関数は、特定の実装環境においては、一般的なブロック暗号より数倍高速である。
 しかし、どのような計算機環境でも実装可能で、かつ、ブロック暗号より高速であるe-AXU関数は、知られていない。
 このため、e-AXU関数が高速に実装可能な環境でないと有効でないということが問題になり、さらに、ブロック暗号Eとe-AXU関数(例えば、関数mul)という二つの部品を実装するために、ブロック暗号Eのみを実装する場合と比べて、プログラムのサイズが一般に大きくなるということも問題となる。
 一方、ブロック暗号Eのみを用いる調整値付きブロック暗号として、非特許文献2に記載のXEXモードも知られている。
 図2Aは、XEXモードを説明するためのブロック図である。
 図2Aにおいて、tweakは、二つの部分に分けられる。つまり、tweak=(tweak1,tweak2)と表現される。オフセット関数powは、ある基数をb、tweak2を指数とし、tweak1の暗号化E(K1,tweak1)とbtweak2との乗算を行う。すなわち、オフセットは、以下の[数pow]で表される。
 [数pow]
pow(tweak2,E(K1,tweak1)) = mul(btweak2,E(K1,tweak1))
 関数powを定めるにあたり、基数が複数存在する場合、tweak2は、それら基数の指数の組(例えば、基数がb1とb2なら、tweak2=(tweak21,tweak22))となっていてもよい。この場合の関数powの第一引数は、b1tweak21とb2tweak22の積、すなわち、mul(b1tweak21,b2tweak22)となる。
 いずれのケースにおいても、基数を適切に選ぶことにより、オフセットは、tweak2をインクリメントするとき、すなわち、直前のtweak2の値へ1を足すだけのとき、1回のビットシフトと1回の定数の排他的論理和のみで計算できるという利点を持つ。つまり、オフセットの計算は、ブロック暗号の暗号化と比べて、極めて短時間で実行可能である。
 しかし、ある時点でのtweak2は、直前のtweak2をインクリメントしたものにしかできないため、XEXモードは、tweak2が任意に変わるような応用には適さない。
 なお、図2Aに示したXEXモードにおいて、tweak2を定数に固定し、tweak1のみをtweakとして扱うことで、形式的にはtweakの任意の更新ができる。しかしながら、これは、tweakの長さを短くすることになる。そのうえ、オフセットの計算に1ブロックの暗号化の計算量を必要とすることになる。したがって、この場合のXEXモードは、1ブロックメッセージの暗号化に2回のブロック暗号コールを必要とすることになる。
 LRWモードとXEXモードの両方とも、CCA-securityを有するが、もし、LRWモードとXEXモードにおいて、オフセットによる2回目の排他的論理和を省くと、得られるモードは、CPA-securityのみを有するモードとなる。
 CPA-securityの方が、安全性の概念としては、CCA-securityよりも弱いが、CPA-securityでも、メッセージ認証などのいくつかの用途には十分であることが知られている。
 また、XEXモードにおいて、ブロック暗号Eによって生成された暗号文とオフセットとの排他的論理和を省いたモードは、非特許文献2に、XEモードとして定義されている。図2Bは、XEモードでの暗号化処理を示したブロック図である。
 さらに、非特許文献2では、XEモードとXEXモードを混在させたモードであるXEX*モードが提案されている。XEX*モードは、XEモードかXEXモードのどちらで処理を行うかを、利用者が、個別のtweakごとに指定できるモードである。図2Cは、XEX*モードでの暗号化処理を示したブロック図である。
 ただし、XEX*モードでは、あるtweakについてXEモードで処理を行った場合、同じtweakでXEXモードの処理を行うことはできない。逆に、あるtweakについてXEXモードで処理を行った場合、同じtweakでXEモードの処理を行うこともできない。
 XEモードかXEXモードのどちらを用いるかを指定する1ビットの情報をタグtagと呼ぶ。このように利用者がタグとtweakを指定して使用するモードのことも、ここでは、調整値付きブロック暗号と呼ぶことにする。
 XEX*モードの利点は、あるtweakでの処理にCPA-securityが求められるが、別のtweakでの処理にはCCA-securityが求められるようなケースにおいて、単純にXEXモードを用いる場合よりも効率が良くなることである。つまり、CPA-securityが求められるtweakでの処理において、XEXモードではなくXEモードを使うことで、暗号文側のオフセットの排他的論理和演算を省略できる。
 ただし、XEX*モードでは、XEモードを用いる以上、いずれの処理においても平文側の排他的論理和演算は省略できない。具体的には、XEX*モードは、非特許文献4に記載の認証機能付き暗号化モードであるOCB2.0に用いられている。これは、特許文献1に記載のOCBを改良したものである。
米国特許第7046802号明細書 Moses Liskov, Ronald L. Rivest, David Wagner: Tweakable Block Ciphers. Advances in Cryptology - CRYPTO 2002, 22nd Annual International Cryptology Conference, Santa Barbara, California, USA, August 18-22, 2002, Proceedings. Lecture Notes in Computer Science 2442 Springer 2002, pp. 31-46 P. Rogaway: Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC. Advances in Cryptology - ASIACRYPT 2004, 10th International Conference on the Theory and Application of Cryptology and Information Security, Jeju Island, Korea, December 5-9, 2004, Proceedings. Lecture Notes in Computer Science 3329 Springer 2004, pp. 16-31 S. Halevi and H. Krawczyk, MMH:Software Message Authentication in the Gbit/second rates, Fast Software Encryption, 4th Internatioanl Workshop, FSE '97, Lecture Notes in Computer Science; Vol. 1267, Feb. 1997 T. Krovetz and P. Rogaway. The OCB Authenticated-Encryption Algorithm. Internet draft, March 2005 J. Daemen and V. Rijmen, AES Proposal: Rijndael, AES submission, 1998. http://csrc.nist.gov/CryptoToolkit/aes/rijndael/Rijndael.pdf S. Park, S. H. Sung, S. Lee, and J. Lim, Improving the Upper Bound on the Maximum Differential and the Maximum Linear Hull Probability for SPN Structure and AES, Internatioanl Workshop, FSE 2003, Lecture Notes in Computer Science; Vol. 2887, Feb. 2003
 ブロック暗号のみを用いて調整値付きブロック暗号を実現するXEモード、XEXモードもしくはXEX*モードでは、どのような入力においても、単純なブロック暗号に従った暗号化と比べて処理量が増加してしまう。
 その理由は、XEモードとXEXモードのいずれも、ブロック暗号Eに供給される平文とオフセットとの排他的論理和演算が必要であり、XEX*モードの処理は、実際にはXEかXEXモードであるからである。
 本発明の目的は、上述した課題を解決することが可能な調整値付きブロック暗号装置、調整値付きブロック暗号化方法、および、プログラムを提供することである。
 本発明の調整値付きブロック暗号装置は、ブロック暗号方式で暗号化を行う暗号化部と、第1暗号処理と第2暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部と、前記指示情報が前記第1暗号処理を示す場合には、前記調整値を第1調整値と第2調整値に分割し、前記暗号化部を用いて当該第1調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第2調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第1暗号文を生成し、前記指示情報が前記第2暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第2暗号文を生成する生成部と、を含む。
 本発明の暗号生成方法は、ブロック暗号方式で暗号化を行う暗号化部を含む調整値付きブロック暗号装置が行う暗号生成方法であって、第1暗号処理と第2暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付け、前記指示情報が前記第1暗号処理を示す場合には、前記調整値を第1調整値と第2調整値に分割し、前記暗号化部を用いて当該第1調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第2調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第1暗号文を生成し、前記指示情報が前記第2暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第2暗号文を生成する。
 本発明の記録媒体は、コンピュータを、ブロック暗号方式で暗号化を行う暗号化部、第1暗号処理と第2暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部、および、前記指示情報が前記第1暗号処理を示す場合には、前記調整値を第1調整値と第2調整値に分割し、前記暗号化部を用いて当該第1調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第2調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第1暗号文を生成し、前記指示情報が前記第2暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第2暗号文を生成する生成部、として機能させるプロクラムを記録したコンピュータ読み取り可能な記録媒体である。
 本発明によれば、調整値付きブロック暗号において、処理量が少ないブロック暗号処理を実現することが可能になる。
LRWモードでの暗号化処理を説明するためのブロック図である。 XEXモードを説明するためのブロック図である。 XEモードでの暗号化処理を示したブロック図である。 XEX*モードでの暗号化処理を示したブロック図である。 本発明の第1の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。 オフセット関数Fとして4段AESが用いられる場合の例を示した説明図である。 第1の実施の形態の動作を説明するためのフローチャートである。 処理指示変数が「0」を示す場合の処理を説明するための説明図である。 処理指示変数が「1」を示す場合の処理を説明するための説明図である。 本発明の第2の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。 第2の実施の形態の動作を説明するためのフローチャートである。 処理指示変数が「0」を示す場合の処理を説明するための説明図である。 処理指示変数が「1」を示す場合の処理を説明するための説明図である。 本発明の第3の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。 第3の実施の形態の動作を説明するためのフローチャートである。
   10、20、30 調整値付きブロック暗号装置
   10A、20A、30A ブロック暗号化部
   10B、20B、30B 入力部
   10C、20C、30C 生成部
   10C1、20C1、30C1 処理選択部
   10C2、20C2、30C2 オフセット計算部
   10C3 両側オフセット暗号化部
   20C3 片側オフセット暗号化部
   30C3 タグ依存オフセット暗号化部
   10C4、20C4、30C4 付加的暗号化部
   10C5、20C5、30C5 出力部
 (第1の実施の形態)
 [1]構成の説明
 次に、本発明の第1の実施の形態について図面を参照して説明する。
 図3は、第1の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。
 図3において、調整値付きブロック暗号装置10は、ブロック暗号化部10Aと、入力部10Bと、生成部10Cと、を含む。生成部10Cは、処理選択部10C1と、オフセット計算部10C2と、両側オフセット暗号化部10C3と、付加的暗号化部10C4と、出力部10C5と、を含む。
 調整値付きブロック暗号装置10は、例えば、CPUとメモリとディスクとを備えたコンピュータにより実現可能である。この場合、調整値付きブロック暗号装置10は、例えば、ディスクに記録されたプログラム(アプリケーション)に従って動作する。ディスクは、一般的に、コンピュータ(調整値付きブロック暗号装置10;CPU)にて読み取り可能な記録媒体と呼ぶことができる。
 調整値付きブロック暗号装置10内のCPUは、プログラムをディスク(記録媒体)から読み取り実行することによって、ブロック暗号化部10A、入力部10B、および、生成部10Cとして機能する。
 次に、調整値付きブロック暗号装置10を構成する各部について説明する。
 ブロック暗号化部10Aは、一般的に暗号化手段と呼ぶことができる。
 ブロック暗号化部10Aは、ブロック暗号方式で暗号化を行う。ブロック暗号化部10Aは、例えば、AES(Advanced Encryption Standard)等のブロック暗号方式に応じたブロック暗号アルゴリズムを格納し、そのブロック暗号アルゴリズムに基づいて暗号化を行う。
 入力部10Bは、一般的に入力手段と呼ぶことができる。
 入力部10Bは、暗号化の対象となるnビットの平文と、treakと、処理指示変数と、を受け付ける。treakは、一般的に調整値と呼ぶことができる。処理指示変数は、一般的に指示情報と呼ぶことができる。処理指示変数は、2値(「0」と「1」)のいずれかを示す。なお、本実施形態では、「0」は第1暗号処理を意味し、「1」は第2暗号処理を意味する。
 入力部10Bは、例えば、キーボードなどの文字入力装置により実現される。入力部10Bは、平文とtweakと処理指示変数とを受け付けると、その平文とtweakと処理指示変数とを、生成部10C(具体的には、処理選択部10C1)に提供する。
 生成部10Cは、一般的に生成手段と呼ぶことができる。
 生成部10Cは、処理指示変数が「0」を示す場合に、tweakをtweak1とtweak2に分割する。tweak1は、一般的に第1調整値と呼ぶことができる。tweak2は、一般的に第2調整値と呼ぶことができる。
 本実施形態では、生成部10Cは、tweak1が平文と異なるように、tweakをtweak1とtweak2に分割する。
 生成部10Cは、ブロック暗号化部10Aを用いてtweak1を暗号化して、オフセット用暗号を生成する。生成部10Cは、オフセット用暗号とtweak2とに基づいて、オフセット値を求める。
 例えば、生成部10Cは、オフセット用暗号と、有限体GF(2n)上にある基数についてtweak2を指数とした演算要素と、の乗算を行い、その乗算の結果を、オフセット値とする。
 また、生成部10Cは、オフセット用暗号とtweak2との和(例えば、排他的論理和)をとり、その和に対して、ブロック暗号化部10Aが実行するブロック暗号方式で行われる置換処理を施して、オフセット値を求めてもよい。
 なお、平文およびtweak2の長さを、128ビットとし、ブロック暗号化部10Aがブロック暗号方式として、ブロックの長さを128ビットとするAESを用いる場合、生成部10Cは、オフセット用暗号とtweak2との和に対して、AESに規定された128ビット置換処理、すなわち、AESが有する128ビット置換処理を施して、オフセット値を求めてもよい。
 生成部10Cは、オフセット値と平文との和(例えば、排他的論理和)をとり、ブロック暗号化部10Aを用いて、その和を暗号化して、第1暗号文を生成する。また、生成部10Cは、第1暗号文とオフセット値との和(例えば、排他的論理和)をとって、第3暗号文を生成する。
 一方、処理指示変数が「1」を示す場合には、生成部10Cは、入力部10Bからの平文を、ブロック暗号化部10Aを用いて暗号化して、第2暗号文を生成する。つまり、処理指示変数が「1」を示す場合には、生成部10Cは、tweakを用いることなく、第2暗号文を生成する。
 処理選択部10C1は、一般的に処理選択手段と呼ぶことができる。
 処理選択部10C1は、入力部10Bからの処理指示変数に応じて、処理を切り替える。具体的には、処理選択部10C1は、処理指示変数が「0」を示すとき、平文とtweakを、オフセット計算部10C2に出力し、処理指示変数が「1」を示すとき、平文とtweakのうち平文のみを、付加的暗号化部10C4に出力する。
 オフセット計算部10C2は、一般的にオフセット計算手段と呼ぶことができる。
 オフセット計算部10C2は、処理指示変数が「0」を示すときに処理選択部10C1が出力した平文とtweakを入力とし、 tweakに依存したオフセット値(以下「offset」と称する。)を計算し、offsetと平文とを併せて出力する。
 オフセット計算部10C2は、tweakを、2つの部分系列であるtweak1とtweak2に分解する。オフセット計算部10C2は、offsetを、以下の[数offset]に示された数式にしたがって求める。なお、ブロックサイズがnビットの場合、tweakもnビットであり、この処理は、nビット入力、nビット出力の鍵付き関数となる。
 [数offset]
offset = F(E(K,tweak1) ,tweak2)
 [数offset]において、E(K,tweak1)は、nビットブロック暗号Eとその鍵Kによる、tweak1の暗号化を示す。なお、オフセット計算部10C2は、ブロック暗号化部10Aを用いて、[数offset]に示された数式(オフセット関数F)内の暗号化を行う。
 ただし、tweak1のとりうる値の集合をNとすれば、Nは、{0,1}nの部分集合であるとする。
 また、tweak2をsビットとすれば、オフセット関数Fは、n+sビット入力、nビット出力の関数となり、以下の3つの値、MEDP、U、および、MESDPが、十分小さいという条件を満たすことが必要である。
 MEDP=max{Pr(F(R,x) + F(R,x')=d)}
 U=max{Pr(F(R,x) = d)}
 MESDP=max{Pr(F(R,x) + R =d )}
 ここで、Rは、sビットの一様乱数である。MEDPの最大は、あらゆるsビット値のペアx, x'のうちでxとx'が異なるものと、あらゆるnビット値dについてとられている。UとMESDPの最大は、あらゆるsビット値xとnビット値dについてとられている。
 また、オフセット関数Fは、鍵付きの関数でもよい。オフセット関数Fが、鍵付きの関数である場合は、オフセット計算部10C2は、n+sビット入力以外に独立な鍵Ksubを入力として持ち、MEDP、UおよびMESDPの各確率は、この鍵Ksubの確率分布も含めて定義することになる。特に、MEDPは、最大差分確率と呼ばれる。
 オフセット関数Fの実現方法については、例えば、非特許文献2に記載のXEXモードにて使用される関数pow([数pow]に記載)が、条件を満たすものとしてあげられる。
 近年のブロック暗号は、ほぼ全てが、ラウンド関数と呼ばれる比較的簡単な鍵付きの置換を、鍵を変えながら所定の回数繰り返すことで構成されている。
 そして、差分攻撃と線形攻撃に対する耐性を持たせるために、ラウンド関数の数回の繰り返しが、MEDP、U、MESDPの3つの値を小さく保証するオフセット関数Fに適合することが多い。
 具体的には、ラウンド関数の数回の繰り返しをG(ラウンド鍵をKsubとする)とすると、オフセット関数Fを、以下の[数Round]で定義する。
 [数Round]
F(E(K,tweak1),tweak2)=G(Ksub,E(K,tweak1)+tweak2)
 例として、非特許文献6では、非特許文献5に記載のブロック暗号AESにおいて、ラウンド関数の4回の繰り返し(4段AESと呼ぶ)をオフセット関数Fとして使うことが記載されている。
 図4は、オフセット計算部10C2が用いるオフセット関数Fとして、4段AESが用いられる場合の例を示した説明図である。
 具体的には、[数Round]においてGを4段AESとし、Ksubを1から4段目のラウンド鍵(ただし1段目のラウンド鍵は任意の定数でよいため、実際のKsubの長さは128*3=384ビットとなる。)とし、各ラウンド鍵は一様で独立とする場合、非特許文献6には、MEDPの確率(差分確率)を高々2-113にすることが記載されている。
 また、Uの確率は、Gが置換の場合には、理論最小値(ブロックサイズがnなら2の-n乗)を持つことと、MESDPで示される確率は、ラウンド関数においてラウンド鍵が排他的論理和される構造では、常に理論最小値2-nとなることから、安全なブロック暗号の短縮段をGとして用いることで、安全性に対して高い信頼性をもつ本実施の形態を構築可能である。
 両側オフセット暗号化部10C3は、一般的に両側オフセット暗号化手段と呼ぶことができる。
 両側オフセット暗号化部10C3は、ブロック暗号化部10Aを使用して、オフセット計算部10C2が出力したoffsetと平文とに基づき、暗号文(第3暗号文)Cを生成する。
 平文をMとすると、両側オフセット暗号化部10C3が出力する暗号文Cは、以下の[数twosideOFE]に示した数式に従って求められる。
 [数twosideOFE]
C=E(K,M+offset)+offset
 ただし、Eは、ブロック暗号化部10Aによるブロック暗号、KはEの鍵であり、+は排他的論理和を表す。
 付加的暗号化部10C4は、一般的に付加的暗号化手段と呼ぶことができる。
 付加的暗号化部10C4は、処理指示変数が「1」を示す場合に処理選択部10C1が出力する平文を、ブロック暗号化部10Aを用いて暗号化して、第2暗号文を生成する。
 ただし、この平文をMoeとすると、Moeはtweak1とは常に異なり、Moeは、{0,1}nとtweak1のとりうる値の集合Nとの差集合に含まれる必要がある。このため、生成部10C(具体的には、オフセット計算部10C2)は、Moeがtweak1と常に異なるように、tweakを、tweak1とtweak2に分割する。
 これは、例えば、あらかじめtweak1の最下位ビットを0に固定し、Moeの最下位ビットを1に固定するなどすればよい。
 第2暗号文は、Coe=E(K,Moe)となり、付加的暗号化部10C4は、Coe=E(K,Moe)を出力する。
 当然、Nがnビット空間全体を占める場合には、付加的暗号化部10C4の入力は存在せず、暗号化は実行されない。
 現実には、Moeは、とりうる値に制限があり、また、安全上E(K,Moe)を復号してMoeを得る処理を利用者が行うことは認められない。
 このため、例えば、付加的暗号化部10C4は、Moeをカウンターとして、得られるE(K,Moe)を擬似乱数とした、加法的ストリーム暗号を実現することが考えられる。
 これ以外にも、E(K,Moe)は、擬似乱数として任意の用途、例えばパスワード生成や秘密分散など、に用いてもよい。
 出力部10C5は、一般的に出力手段と呼ぶことができる。
 出力部10C5は、両側オフセット暗号化部10C3もしくは付加的暗号化部10C4が出力した暗号文を、コンピュータディスプレイやプリンターなどへ出力する。
 [2]動作の説明
 図5は、第1の実施の形態の動作を説明するためのフローチャートである。図6は、処理指示変数が「0」を示す場合の処理を説明するための説明図である。図7は、処理指示変数が「1」を示す場合の処理を説明するための説明図である。
 以下、図5~7を参照して、第1の実施の形態の全体の動作について詳細に説明する。
 まず、入力部10Bが、平文とtweakと処理指示変数を受け付ける(ステップAE1)。入力部10Bは、その平文とtweakと処理指示変数を、処理選択部10C1に提供する。
 処理選択部10C1は、平文とtweakと処理指示変数を受け付けると、処理指示変数の値によって、通常の暗号化を行うか、付加的暗号化を行うかを判断する(ステップAE2)。
 処理指示変数が「0」を示す場合、処理選択部10C1は、通常の暗号化を行うと判断し、平文とtweakを、オフセット計算部10C2に提供する。一方、処理指示変数が「1」を示す場合、処理選択部10C1は、付加的暗号化を行うと判断し、平文とtweakのうち平文のみを、付加的暗号化部10C4に提供する。
 オフセット計算部10C2は、平文とtweakを受け付けると、ブロック暗号化部10Aを用いて、[数offset]に示した数式にしたがってoffsetを求める(ステップAE3)。オフセット計算部10C2は、そのoffsetと平文を、両側オフセット暗号化部10C3に提供する。
 両側オフセット暗号化部10C3は、offsetと平文を受け付けると、ブロック暗号化部10Aを用いて、そのoffsetと平文に基づき[数twosideOFE]に示した数式にしたがって、暗号文を求める(ステップAE4)。両側オフセット暗号化部10C3は、その暗号文を、出力部10C5に提供する。
 一方、付加的暗号化部10C4は、平文を受け付けると、ブロック暗号化部10Aを用いて、その平文を暗号化し、暗号文を求める(ステップAE5)。付加的暗号化部10C4は、その暗号文を、出力部10C5に提供する。
 最後に、出力部10C5は、暗号文を受け付けると、その暗号文を出力する(ステップAE6)。
 本実施の形態では、以下の効果を奏する。
 付加的暗号化部10C4(生成部10C)は、ブロック暗号化部10Aを用いて平文を暗号化して暗号文を生成する。このため、付加的暗号化部10C4は、オフセットの排他的論理和を、平文側、暗号文側とも必要としない暗号化を行う。
 したがって、本実施の形態において、オフセット関数Fとして、XEXモードと同じオフセット関数powを用いて実現した場合、XEX(もしくはXE, XEX*)モードよりも、用途によっては高速に暗号を生成できることである。
 また、オフセット計算部10C2(生成部10C)は、tweak1が平文と異なるように、tweakを、tweak1とtweak2に分割する。このため、付加的暗号化部10C4へ入力する平文が、tweak1と常に異なっていれば、付加的暗号化部10C4の出力は、通常の暗号化・復号処理とは、独立な擬似乱数として用いることができる。このような乱数は、パスワード生成・秘密分散など、暗号化と関連した様々な処理で用いることができる。
 また、別の例として、付加的暗号化部10C4へ入力する平文をtweak1と異なるカウンターとすれば、付加的暗号化部10C4は、カウンターモードの暗号化を行うことができる。これは、通常のXEXモードに、新たに独立で高速なカウンターモードを付与したことに相当する。
 なお、LRWモードでも、tweakを全ゼロにしたときはオフセットが常にゼロとなり、結果的に加算なしの暗号化が実現可能であるが、安全性のために、オフセットの生成において必要な鍵を、ブロック暗号の鍵とは独立に生成する必要があった。従って、本実施の形態よりも、LRWモードの方が、一般に鍵が長くなる。
 また、本実施の形態では、オフセット計算部10C2(生成部10C)は、オフセット用暗号とtweak2との和をとり、その和に対して、ブロック暗号化部10Aでのブロック暗号方式で行われる置換処理を施してオフセット値を求める。このため、tweakの更新を行い新たなオフセット値を計算するのに、ブロック暗号の一部の処理だけを必要とする。
 したがって、本実施の形態において、ブロック暗号の一部を用いてオフセット関数を実現した場合、tweakの任意の更新が、ブロック暗号のアルゴリズムのみで高速にできる。
 XEXモードにおいては、tweak2は、逐次的にしか更新できないため、tweak全体の任意の更新は不可能である。また、LRWモードの場合、tweakの任意の更新が可能であるが、有限体の乗算mulを実装する必要が生じるため、プログラムサイズの増大を招く。
 例として、非特許文献5に記載のブロック暗号AESと、AESの段関数の4回の繰り返し(4段AES)とを用いた場合、tweak2のみの更新は、AESそのものの約2.5倍で可能となる。
 (第2の実施の形態)
 [1]構成の説明
 次に、本発明の第2の実施の形態について図面を参照して説明する。
 図8は、第2の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。
 図8において、調整値付きブロック暗号装置20は、ブロック暗号化部20Aと、入力部20Bと、生成部20Cと、を含む。生成部20Cは、処理選択部20C1と、オフセット計算部20C2と、片側オフセット暗号化部20C3と、付加的暗号化部20C4と、出力部20C5と、を含む。
 調整値付きブロック暗号装置20は、例えば、CPUとメモリとディスクとを備えたコンピュータにより実現可能である。この場合、調整値付きブロック暗号装置20は、例えば、ディスクに記録されたプログラム(アプリケーション)に従って動作する。
 調整値付きブロック暗号装置20内のCPUは、プログラムをディスク(記録媒体)から読み取り実行することによって、ブロック暗号化部20A、入力部20B、および、生成部20Cとして機能する。
 なお、ブロック暗号化部20Aと、入力部20Bと、処理選択部20C1と、オフセット計算部20C2と、付加的暗号化部20C4と、出力部20C5のそれぞれは、第1の実施の形態のブロック暗号化部10Aと、入力部10Bと、処理選択部10C1と、オフセット計算部10C2と、付加的暗号化部10C4と、出力部10C5のそれぞれと同一構成である。
 以下、第2の実施の形態について、第1の実施の形態と異なる点を中心に説明する。
 生成部20Cは、一般的に生成手段と呼ぶことができる。
 片側オフセット暗号化部20C3は、一般的に片側オフセット暗号化手段と呼ぶことができる。
 片側オフセット暗号化部20C3は、ブロック暗号化部20Aを使用して、オフセット計算部20C2が出力したoffsetと平文とに基づき、暗号文(第1暗号文)を生成する。
 片側オフセット暗号化部20C3が出力する暗号文Cは、以下の[数onesideOFE]に示した数式に従って求められる。
 [数onesideOFE]
C=onesideOFE=E(K,M+offset)
 ただし、Eは、ブロック暗号化部20Aによるブロック暗号、KはEの鍵であり、+は排他的論理和を表す。
 [2]動作の説明
 図9は、第2の実施の形態の動作を説明するためのフローチャートである。図10は、処理指示変数が「0」を示す場合の処理を説明するための説明図である。図11は、処理指示変数が「1」を示す場合の処理を説明するための説明図である。
 以下、図9~11を参照して、第2の実施の形態の全体の動作について詳細に説明する。
 まず、入力部20Bが、平文とtweakと処理指示変数を受け付ける(ステップBE1)。入力部20Bは、その平文とtweakと処理指示変数を、処理選択部20C1に提供する。
 処理選択部20C1は、平文とtweakと処理指示変数を受け付けると、処理指示変数の値によって、通常の暗号化を行うか、付加的暗号化を行うかを判断する(ステップBE2)。
 処理指示変数が「0」を示す場合、処理選択部20C1は、通常の暗号化を行うと判断し、平文とtweakを、オフセット計算部20C2に提供する。一方、処理指示変数が「1」を示す場合、処理選択部20C1は、付加的暗号化を行うと判断し、平文とtweakのうち平文のみを、付加的暗号化部20C4に提供する。
 オフセット計算部20C2は、平文とtweakを受け付けると、ブロック暗号化部20Aを用いて、[数offset]に示した数式にしたがってoffsetを求める(ステップBE3)。オフセット計算部20C2は、そのoffsetと平文を、片側オフセット暗号化部20C3に提供する。
 片側オフセット暗号化部20C3は、offsetと平文を受け付けると、ブロック暗号化部20Aを用いて、そのoffsetと平文に基づき[数onesideOFE]に示した数式にしたがって、暗号文を求める(ステップBE4)。片側オフセット暗号化部20C3は、その暗号文を、出力部20C5に提供する。
 一方、付加的暗号化部20C4は、平文を受け付けると、ブロック暗号化部20Aを用いて、その平文を暗号化し、暗号文を求める(ステップBE5)。付加的暗号化部20C4は、その暗号文を、出力部20C5に提供する。
 最後に、出力部20C5は、暗号文を受け付けると、その暗号文を出力する(ステップBE6)。
 本実施の形態では、第1の実施の形態と同様の効果を奏する。
 さらに、本実施の形態では、生成部20Cは、オフセット値と平文との和をとり、ブロック暗号化部20Aを用いて、その和を暗号化して第1暗号文を生成する。このため、XEXモードでの暗号化を行うことができる。
 (第3の実施の形態)
 [1]構成の説明
 次に、本発明の第3の実施の形態について図面を参照して説明する。
 図12は、第3の実施の形態の調整値付きブロック暗号装置の構成を示すブロック図である。
 図12において、調整値付きブロック暗号装置30は、ブロック暗号化部30Aと、入力部30Bと、生成部30Cと、を含む。生成部30Cは、処理選択部30C1と、オフセット計算部30C2と、タグ依存オフセット暗号化部30C3と、付加的暗号化部30C4と、出力部30C5と、を含む。
 調整値付きブロック暗号装置30は、例えば、CPUとメモリとディスクとを備えたコンピュータにより実現可能である。この場合、調整値付きブロック暗号装置30は、例えば、ディスクに記録されたプログラム(アプリケーション)に従って動作する。
 調整値付きブロック暗号装置30内のCPUは、プログラムをディスク(記録媒体)から読み取り実行することによって、ブロック暗号化部30A、入力部30B、および、生成部30Cとして機能する。
 なお、ブロック暗号化部30Aと、付加的暗号化部30C4と、出力部30C5のそれぞれは、第1の実施の形態のブロック暗号化部10Aと、付加的暗号化部10C4と、出力部10C5のそれぞれと同一構成である。
 以下、第3の実施の形態について、第1の実施の形態と異なる点を中心に説明する。
 入力部30Bは、一般的に入力手段と呼ぶことができる。
 入力部30Bは、暗号化の対象となるnビットの平文と、tweakと、処理指示変数と、タグtagを受け付ける。タグtagは、一般的に処理情報と呼ぶことができる。タグtagは、2値(「0」と「1」)のいずれかを示す。なお、本実施形態では、タグtagが示す「0」は第1オフセット処理を意味し、タグtagが示す「1」は第2オフセット処理を意味する。
 入力部30Bは、例えば、キーボードなどの文字入力装置により実現される。入力部30Bは、平文とtweakと処理指示変数とタグtagを受け付けると、その平文とtweakと処理指示変数とタグtagを、処理選択部30C1に提供する。
 処理選択部30C1は、一般的に処理選択手段と呼ぶことができる。
 処理選択部30C1は、入力部30Bからの処理指示変数に応じて、処理を切り替える。具体的には、処理選択部30C1は、処理指示変数が「0」を示すとき、平文とtweakとタグtagとを、オフセット計算部30C2に出力し、処理指示変数が「1」を示すとき、平文とtweakとタグtagのうち平文のみを、付加的暗号化部30C4に出力する。
 オフセット計算部30C2は、一般的にオフセット計算手段と呼ぶことができる。
 オフセット計算部30C2は、処理指示変数が「0」を示すときに処理選択部30C1が出力した平文とtweakとタグtagとを入力とし、 tweakに依存したoffsetを計算し、offsetと平文とタグtagとを併せて、タグ依存オフセット暗号化部30C3に出力する。
 タグ依存オフセット暗号化部30C3は、一般的にタグ依存オフセット暗号化手段と呼ぶことができる。
 タグ依存オフセット暗号化部30C3は、入力された平文とタグtagとoffsetを元に、暗号化を行う。具体的には、タグ依存オフセット暗号化部30C3は、ブロック暗号化部30Aを用いて、以下の[数taggedOFE]に示された数式に従って、暗号文Cを生成する。
 [数taggedOFE]
C=E(K,M+offset)+sel(tag,offset) 
 ただしsel(tag,offset)は、タグtagが「0」を示すとき、nビットの全ゼロ値であり、タグtagが「1」を示すときにoffsetとなる。
 [2]動作の説明
 図13は、第3の実施の形態の動作を説明するためのフローチャートである。以下、図13を参照して、第3の実施の形態の全体の動作について詳細に説明する。
 まず、入力部30Bが、平文とtweakとタグと処理指示変数を受け付ける(ステップCE1)。入力部30Bは、その平文とtweakとタグと処理指示変数を、処理選択部30C1に提供する。
 処理選択部30C1は、平文とtweakとタグと処理指示変数を受け付けると、処理指示変数の値によって、通常の暗号化を行うか、付加的暗号化を行うかを判断する(ステップCE2)。
 処理指示変数が「0」を示す場合、処理選択部30C1は、通常の暗号化を行うと判断し、平文とtweakとタグを、オフセット計算部30C2に提供する。一方、処理指示変数が「1」を示す場合、処理選択部30C1は、付加的暗号化を行うと判断し、平文とtweakとタグのうち平文のみを、付加的暗号化部30C4に提供する。
 オフセット計算部30C2は、平文とtweakとタグを受け付けると、ブロック暗号化部30Aを用いて、[数offset]に示した数式に従ってoffsetを求める(ステップCE3)。オフセット計算部30C2は、そのoffsetと平文とタグを、タグ依存オフセット暗号化部30C3に提供する。
 タグ依存オフセット暗号化部30C3は、offsetと平文とタグを受け付けると、ブロック暗号化部30Aを用いて、そのoffsetと平文とタグとに基づき[数taggedOFE]に示した数式にしたがって、暗号文を求める(ステップCE4)。タグ依存オフセット暗号化部30C3は、その暗号文を、出力部30C5に提供する。
 一方、付加的暗号化部30C4は、平文を受け付けると、ブロック暗号化部20Aを用いて、その平文を暗号化し、暗号文を求める(ステップCE5)。付加的暗号化部30C4は、その暗号文を、出力部30C5に提供する。
 最後に、出力部30C5は、暗号文を受け付けると、その暗号文を出力する(ステップCE6)。
 本実施の形態では、第1の実施の形態と同様の効果を奏する。
 さらに、本実施の形態では、生成部30Cは、タグが「0」を示す場合には、平文の暗号文として、第1暗号文を出力し、タグが「1」を示す場合には、平文の暗号文として、第3暗号文を出力する。このため、XEX*モードでの暗号化を行うことが可能となる。
 上記各実施の形態は、無線もしくは有線のデータ通信における認証と暗号化といった用途や、ストレージ上のデータの暗号化と改ざん防止といった用途に適用できる。
 ここで、上記各実施の形態に共通する特徴等をまとめておく。
 調整値付きブロック暗号は、nビットブロック暗号の暗号文を生成する前と後で加算(排他的論理和)するオフセット値をtweak(調整値)に依存して生成する。そして、オフセットの生成において必要な乱数を効率よく生成するため、tweakをnビットのtweak1とtweak2に分割し、tweak1をnビットブロック暗号で暗号化した結果を用いる。
 ここで、tweak1がとりうる値を、nビット空間のある部分集合Nに制限することで、N以外の平文については、オフセットを加算せず、そのままブロック暗号で暗号化した結果を暗号文として用いることができる。
 オフセット加算を省略できることにより、通常のオフセット加算を用いる処理よりも高速な処理が可能となる。
 このような付加的暗号化機能は、入力できる平文に制約があることから、通常の意味での暗号化よりも、擬似乱数生成などの役割に適している。
 このように、オフセット加算なしの暗号化は、LRWモードでも実現可能であるが、LRWモードは、この目的のために、オフセットの生成において必要な乱数を、ブロック暗号の鍵とは独立に生成する必要があった。
 安全性のため、オフセットを生成するための処理にはいくつかの条件があるが、これらの条件は、既存の調整値付きブロック暗号である、XEXモードが用いる方法と同じものが使用可能である。
 それ以外にも、ブロック暗号の処理の一部分から導出されるブロック単位の置換と、ブロック暗号そのものとを組み合わせてオフセットを計算する方法も可能である。
 前者の処理としては、ブロック暗号の短縮段、つまり段関数の何回かの繰り返しによる置換を用いるのが典型的である。
 この置換処理とブロック暗号そのものとを組み合わせて、tweak(特にtweak2)の任意の更新を可能とする高速な調整値付きブロック暗号装置を構成できる。
 具体的に、ブロック暗号の一部分から導出される置換処理を用いる場合は、tweak1を入力としたブロック暗号の出力とtweak2との和をとり、これを前述の置換処理に入力することで、オフセットを求める。
 XEXモードでは、tweak2は、逐次的にしか更新できず、任意の値への更新は不可能であるのに対して、上記各実施の形態では、ブロック暗号の一部分を用いて、効率よくtweak2の任意の更新が可能である。
 この方式は、ブロック暗号自体が安全であり、ブロック暗号の一部分から導出される置換処理の差分確率が小さい場合には、選択平文・暗号文攻撃に理論的に安全な調整値付きブロック暗号となる。
 一方、ブロック暗号の出力側へのオフセットの加算を省略した場合は、選択平文攻撃に安全な調整値付きブロック暗号となる。
 以上、各実施形態を参照して本願発明を説明したが、本願発明は上記各実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 この出願は、2008年4月15日に出願された日本出願特願2008-105706を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (12)

  1.  ブロック暗号方式で暗号化を行う暗号化部と、
     第1暗号処理と第2暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部と、
     前記指示情報が前記第1暗号処理を示す場合には、前記調整値を第1調整値と第2調整値に分割し、前記暗号化部を用いて当該第1調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第2調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第1暗号文を生成し、前記指示情報が前記第2暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第2暗号文を生成する生成部と、を含む調整値付きブロック暗号装置。
  2.  前記生成部は、前記第1調整値が前記平文と異なるように、前記調整値を、前記第1調整値と前記第2調整値に分割する、請求の範囲第1項に記載の調整値付きブロック暗号装置。
  3.  前記生成部は、前記第1暗号文と前記オフセット値との和をとって、第3暗号文を生成する、請求の範囲第1項または第2項に記載の調整値付きブロック暗号装置。
  4.  前記入力部は、さらに、第1オフセット処理と第2オフセット処理のいずれかを示す処理情報を受け付け、
     前記生成部は、前記処理情報が前記第1オフセット処理を示す場合には、前記平文の暗号文として、前記第1暗号文を出力し、前記処理情報が前記第2オフセット処理を示す場合には、前記平文の暗号文として、前記第3暗号文を出力する、請求の範囲第3項に記載の調整値付きブロック暗号装置。
  5.  前記生成部は、前記オフセット用暗号と、有限体上にある基数について前記第2調整値を指数とした演算要素と、の乗算を行い、当該乗算の結果を、前記オフセット値とする、請求の範囲第1項から第4項のいずれか1項に記載の調整値付きブロック暗号装置。
  6.  前記生成部は、前記オフセット用暗号と前記第2調整値との和をとり、当該和に対して、前記ブロック暗号方式で行われる置換処理を施して前記オフセット値を求める、請求の範囲第1項から第4項のいずれか1項に記載の調整値付きブロック暗号装置。
  7.  前記平文および前記第2調整値の長さは、128ビットであり、
     前記暗号化部は、前記ブロック暗号方式として、ブロックの長さを128ビットとするAESを用い、
     前記生成部は、前記オフセット用暗号と前記第2調整値との和に対して、前記AESに規定された128ビット置換処理を施して前記オフセット値を求める、請求の範囲第6項に記載の調整値付きブロック暗号装置。
  8.  前記暗号化部は、前記ブロック暗号方式に応じたブロック暗号アルゴリズムを格納し、当該ブロック暗号アルゴリズムに基づいて暗号化を行う、請求の範囲第1項から第7項のいずれか1項に記載の調整値付きブロック暗号装置。
  9.  ブロック暗号方式で暗号化を行う暗号化部を含む調整値付きブロック暗号装置が行う暗号生成方法であって、
     第1暗号処理と第2暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付け、
     前記指示情報が前記第1暗号処理を示す場合には、前記調整値を第1調整値と第2調整値に分割し、前記暗号化部を用いて当該第1調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第2調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第1暗号文を生成し、前記指示情報が前記第2暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第2暗号文を生成する、暗号生成方法。
  10.  前記第1暗号文を生成することは、前記第1調整値が前記平文と異なるように、前記調整値を、前記第1調整値と前記第2調整値に分割することを含む、請求の範囲第9項に記載の暗号生成方法。
  11.  コンピュータを、
     ブロック暗号方式で暗号化を行う暗号化部、
     第1暗号処理と第2暗号処理のいずれかを示す指示情報と、平文と、調整値と、を受け付ける入力部、および、
     前記指示情報が前記第1暗号処理を示す場合には、前記調整値を第1調整値と第2調整値に分割し、前記暗号化部を用いて当該第1調整値を暗号化してオフセット用暗号を生成し、当該オフセット用暗号と当該第2調整値とに基づいてオフセット値を求め、当該オフセット値と前記平文との和をとり、前記暗号化部を用いて当該和を暗号化して第1暗号文を生成し、前記指示情報が前記第2暗号処理を示す場合には、前記暗号化部を用いて前記平文を暗号化して第2暗号文を生成する生成部、として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  12.  前記生成部は、前記第1調整値が前記平文と異なるように、前記調整値を、前記第1調整値と前記第2調整値に分割する、請求の範囲第11項に記載の記録媒体。
PCT/JP2009/057164 2008-04-15 2009-04-08 調整値付きブロック暗号装置、暗号生成方法および記録媒体 WO2009128370A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010508179A JP5273141B2 (ja) 2008-04-15 2009-04-08 調整値付きブロック暗号装置、暗号生成方法および記録媒体
US12/918,509 US8526602B2 (en) 2008-04-15 2009-04-08 Adjustment-value-attached block cipher apparatus, cipher generation method and recording medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008105706 2008-04-15
JP2008-105706 2008-04-15

Publications (1)

Publication Number Publication Date
WO2009128370A1 true WO2009128370A1 (ja) 2009-10-22

Family

ID=41199067

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/057164 WO2009128370A1 (ja) 2008-04-15 2009-04-08 調整値付きブロック暗号装置、暗号生成方法および記録媒体

Country Status (3)

Country Link
US (1) US8526602B2 (ja)
JP (1) JP5273141B2 (ja)
WO (1) WO2009128370A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011105367A1 (ja) * 2010-02-24 2011-09-01 日本電気株式会社 ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
WO2013161841A1 (ja) 2012-04-24 2013-10-31 日本電気株式会社 フォーマット保存暗号化装置、方法およびプログラム、復号化装置、方法およびプログラム
JPWO2014013680A1 (ja) * 2012-07-18 2016-06-30 日本電気株式会社 ユニバーサルハッシュ関数演算装置、方法およびプログラム
JPWO2021152707A1 (ja) * 2020-01-28 2021-08-05
US11349668B2 (en) 2017-02-21 2022-05-31 Mitsubishi Electric Corporation Encryption device and decryption device

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9185080B2 (en) * 2011-08-12 2015-11-10 Intel Deutschland Gmbh Data transmitting devices, data receiving devices, methods for controlling a data transmitting device, and methods for controlling a data receiving device
KR102447476B1 (ko) 2015-08-20 2022-09-27 삼성전자주식회사 암복호 장치, 그것을 포함하는 저장 장치 및 그것의 암복호 방법
RU2631981C2 (ru) * 2016-02-12 2017-09-29 Федеральное государственное бюджетное учреждение науки Институт конструкторско-технологической информатики Российской академии наук (ИКТИ РАН) Способ блочной шифрации с закрытым ключом

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004126323A (ja) * 2002-10-04 2004-04-22 Sony Corp ブロック暗号方法、ブロック暗号回路、暗号装置、ブロック復号方法、ブロック復号回路および復号装置
WO2008018303A1 (fr) * 2006-08-10 2008-02-14 Nec Corporation Dispositif de chiffrage de bloc équipé d'une fonction d'ajustement, procédé et programme

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2719660B2 (ja) 1993-03-24 1998-02-25 日本電信電話株式会社 マルチメディア通信用暗号装置
US5724428A (en) * 1995-11-01 1998-03-03 Rsa Data Security, Inc. Block encryption algorithm with data-dependent rotations
US6909785B1 (en) * 1999-11-11 2005-06-21 Qualcomm, Inc. Method and apparatus for efficient irregular synchronization of a stream cipher
JP2001177518A (ja) 1999-12-17 2001-06-29 Nec Corp 暗号化方法、復号化方法及び装置
JP4117095B2 (ja) 2000-04-03 2008-07-09 Necネットワーク・センサ株式会社 暗号方式
CN1142653C (zh) * 2000-04-28 2004-03-17 杨宏伟 动态口令认证系统及方法
US7046802B2 (en) * 2000-10-12 2006-05-16 Rogaway Phillip W Method and apparatus for facilitating efficient authenticated encryption
US7007050B2 (en) * 2001-05-17 2006-02-28 Nokia Corporation Method and apparatus for improved pseudo-random number generation
BR0313013A (pt) * 2002-07-27 2005-08-09 Xstream Security Solutions Ltd Aparelho e método para criptografia e descriptografia
AU2003270296A1 (en) * 2002-09-03 2004-03-29 The Regents Of The University Of California Block cipher mode of operation for constructing a wide-blocksize block cipher from a conventional block cipher
KR100560658B1 (ko) * 2003-02-17 2006-03-16 삼성전자주식회사 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법
JP4986206B2 (ja) * 2006-02-22 2012-07-25 株式会社日立製作所 暗号処理方法及び暗号処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004126323A (ja) * 2002-10-04 2004-04-22 Sony Corp ブロック暗号方法、ブロック暗号回路、暗号装置、ブロック復号方法、ブロック復号回路および復号装置
WO2008018303A1 (fr) * 2006-08-10 2008-02-14 Nec Corporation Dispositif de chiffrage de bloc équipé d'une fonction d'ajustement, procédé et programme

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CRISTIAN CHITU ET AL.: "An FPGA implementation of the AES-Rijndael in OCB/ECB modes of operation", MICROELECTRONICS JOURNAL, vol. 36, no. 2, February 2005 (2005-02-01), pages 139 - 146 *
PHILLIP ROGAWAY: "Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC", LECTURE NOTES IN COMPUTER SCIENCE, vol. 3329, December 2004 (2004-12-01), pages 16 - 31 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011105367A1 (ja) * 2010-02-24 2011-09-01 日本電気株式会社 ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
JP5704159B2 (ja) * 2010-02-24 2015-04-22 日本電気株式会社 ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
WO2013161841A1 (ja) 2012-04-24 2013-10-31 日本電気株式会社 フォーマット保存暗号化装置、方法およびプログラム、復号化装置、方法およびプログラム
US9432181B2 (en) 2012-04-24 2016-08-30 Nec Corporation Device, method, and program for format-preserving encryption, and device, method, and program for decryption
JPWO2014013680A1 (ja) * 2012-07-18 2016-06-30 日本電気株式会社 ユニバーサルハッシュ関数演算装置、方法およびプログラム
US11349668B2 (en) 2017-02-21 2022-05-31 Mitsubishi Electric Corporation Encryption device and decryption device
JPWO2021152707A1 (ja) * 2020-01-28 2021-08-05
WO2021152707A1 (ja) * 2020-01-28 2021-08-05 日本電信電話株式会社 暗号システム、暗号化方法、復号方法及びプログラム
JP7310938B2 (ja) 2020-01-28 2023-07-19 日本電信電話株式会社 暗号システム、暗号化方法、復号方法及びプログラム

Also Published As

Publication number Publication date
US8526602B2 (en) 2013-09-03
JPWO2009128370A1 (ja) 2011-08-04
US20100329449A1 (en) 2010-12-30
JP5273141B2 (ja) 2013-08-28

Similar Documents

Publication Publication Date Title
JP5273141B2 (ja) 調整値付きブロック暗号装置、暗号生成方法および記録媒体
JP5402632B2 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
JP6519473B2 (ja) 認証暗号装置、認証暗号方法および認証暗号用プログラム
US8189770B2 (en) Tweakable block encryption apparatus, method, and program
JP5704159B2 (ja) ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
US9363074B2 (en) Encryption processing apparatus, encryption processing method, and computer program
JP5141558B2 (ja) 共通鍵ブロック暗号化装置、その方法、そのプログラム、及び記録媒体
JP2008058826A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
Norouzi et al. Breaking a novel image encryption scheme based on an improper fractional order chaotic system
JPWO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム
US20150341168A1 (en) Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
US20210021406A1 (en) Encryption device, encryption method, program, decryption device, and decryption method
JP5333450B2 (ja) 調整値付きブロック暗号化装置、方法及びプログラム並びに復号装置、方法及びプログラム
WO2010024003A1 (ja) 倍ブロック長ブロック暗号化装置、復号装置、暗号化方法及び復号方法、及びそのプログラム
Arshad et al. New extension of data encryption standard over 128-bit key for digital images
US8891761B2 (en) Block encryption device, decryption device, encrypting method, decrypting method and program
KR20190020988A (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
Yap et al. Cryptanalysis of a high-definition image encryption based on AES modification
Saudagar et al. Image encryption based on advanced encryption standard (aes)
KR101971001B1 (ko) 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치
KR101932032B1 (ko) 선형 길이의 암호문을 가지는 다항식 함수 암호화 방법
KR100200531B1 (ko) 암호화 방법 및 시스템
Siddavaatam et al. A New Adaptive Security Architecture with Extensible Computation Complexity for Generic Ciphers
KR20030001888A (ko) 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법
JP2020134730A (ja) ブロック暗号装置、ブロック暗号方法およびプログラム

Legal Events

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

Ref document number: 09732844

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 12918509

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2010508179

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09732844

Country of ref document: EP

Kind code of ref document: A1