WO2016088453A1 - 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム - Google Patents

暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム Download PDF

Info

Publication number
WO2016088453A1
WO2016088453A1 PCT/JP2015/078908 JP2015078908W WO2016088453A1 WO 2016088453 A1 WO2016088453 A1 WO 2016088453A1 JP 2015078908 W JP2015078908 W JP 2015078908W WO 2016088453 A1 WO2016088453 A1 WO 2016088453A1
Authority
WO
WIPO (PCT)
Prior art keywords
key
block
encryption
decryption
cipher
Prior art date
Application number
PCT/JP2015/078908
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 JP2016562335A priority Critical patent/JP6575532B2/ja
Priority to US15/532,147 priority patent/US10305689B2/en
Publication of WO2016088453A1 publication Critical patent/WO2016088453A1/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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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]
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms

Definitions

  • the present invention relates to block ciphers.
  • Block ciphers are classified as common key cryptosystems that use the same key for encryption and decryption.
  • the block cipher is composed of an encryption process and a decryption process.
  • the encryption process the data to be encrypted (plain text) and the key are input and the cipher text is output.
  • the decryption process the ciphertext and the key are input and the plaintext is output.
  • the key length and block length are fixed.
  • the key length can be selected from 128 bits, 192 bits, and 256 bits, and the block length is 128 bits.
  • the data is divided into a plurality of blocks, and encryption and decryption are performed for each block.
  • a block cipher utilization method for handling data longer than the block length in this way is called a cipher utilization mode.
  • Non-Patent Document 1 a technique called All Or Nothing Transform
  • Non-Patent Document 2 Methods for performing encryption and decryption using AONT are disclosed in Non-Patent Document 1 and Non-Patent Document 2, for example.
  • Non-Patent Document 1 when n block plaintext is input, n + 1 block ciphertext is output. If all the ciphertext of n + 1 blocks cannot be acquired, even a part of plaintext cannot be decrypted. However, compared with the method of Non-Patent Document 2, the amount of calculation of encryption processing (encryption processing and decryption processing) is large.
  • the method of Non-Patent Document 2 can output ciphertext of n + 1 blocks from plain text of blocks with a smaller amount of calculation than the method of Non-Patent Document 1.
  • the n block in the n + 1 block ciphertext can be acquired, a part of the plaintext can be decrypted, and therefore the method of Non-Patent Document 2 is less secure than the method of Non-Patent Document 1.
  • An object of the present invention is to provide a technique for performing cipher processing with a small amount of calculation while improving the security of ciphertext for a block cipher.
  • the encryption device includes a plaintext block string composed of a plurality of plaintext blocks, an acquisition means for acquiring a first encryption key, a second encryption key generation means for generating a second encryption key, Third encryption key generating means for calculating a third encryption key as an exclusive OR of the first encryption key and a part or all of the second encryption key, and a counter using the third encryption key as an encryption key Encrypting the plaintext block string with a mode block cipher to generate an encrypted block string and calculating an exclusive OR of the second encryption key and each block of the encrypted block string And a key block generation means for generating a key block.
  • the decryption apparatus includes a cipher block sequence having a key block and a plurality of cipher blocks, an acquisition means for acquiring a first decryption key, and an exclusive OR of each cipher block included in the cipher block sequence.
  • Third decryption key generating means for calculating three decryption keys; counter mode decryption means for generating a plaintext block string by decrypting the cipher block string with a counter mode block cipher using the third decryption key as a decryption key;
  • the cryptographic processing system provided by the present invention includes the encryption device and the decryption device provided by the present invention.
  • the encryption method provided by the present invention is executed by a computer.
  • the encryption method includes a plaintext block sequence composed of a plurality of plaintext blocks, an acquisition step of acquiring a first encryption key, a second encryption key generation step of generating a second encryption key, and the first encryption key. And a third encryption key generating step for calculating a third encryption key as an exclusive OR of a part or all of the second encryption key, and a counter mode block cipher using the third encryption key as an encryption key.
  • a counter mode encryption step for encrypting the plaintext block string to generate an encrypted block string, and calculating a key block by calculating an exclusive OR of the second encryption key and each block of the encrypted block string. Generating a key block.
  • the decryption method provided by the present invention is executed by a computer.
  • the decryption method includes an acquisition step of obtaining a key block and a cipher block sequence having a plurality of cipher blocks, and a first decryption key, and calculating an exclusive OR of each cipher block included in the cipher block sequence,
  • a third decryption key is obtained as an exclusive OR of a second decryption key generation step for generating a second decryption key using the calculation result, the first decryption key, and a part or all of the second decryption key.
  • the encryption program provided by the present invention causes a computer to have a function of operating as an encryption device provided by the present invention.
  • the decryption program provided by the present invention allows a computer to have a function of operating as a decryption device provided by the present invention.
  • FIG. 1 is a block diagram illustrating an encryption device according to a first embodiment. It is the figure which illustrated the process performed by an encryption apparatus using numerical formula etc. It is a figure which illustrates notionally the method in which a key block production
  • 4 is a flowchart illustrating a flow of processing executed by the encryption device according to the first embodiment. It is a block diagram which illustrates the hardware constitutions of an encryption apparatus. It is a figure which illustrates the encryption process in a nonpatent literature 1. It is a figure which illustrates the decoding process in a nonpatent literature 1. It is a figure which illustrates the encryption process in a nonpatent literature 2. It is a figure which illustrates the decoding process in a nonpatent literature 2.
  • FIG. 6 is a block diagram illustrating a decoding device according to Embodiment 2.
  • FIG. It is the figure which illustrated the process performed by a decoding apparatus using numerical formula etc. It is a figure which illustrates notionally the processing which generates the 2nd decryption key from a plurality of key blocks.
  • 10 is a flowchart illustrating a flow of processing executed by the decoding device according to the second embodiment. It is a block diagram which illustrates the hardware constitutions of a decoding apparatus.
  • FIG. 10 is a block diagram illustrating a cryptographic processing system according to a third embodiment.
  • FIG. 1 is a block diagram illustrating an encryption device 2000 according to the first embodiment.
  • arrows indicate the flow of information.
  • each block represents a functional unit configuration, not a hardware unit configuration.
  • the encryption device 2000 includes an acquisition unit 2020, a second encryption key generation unit 2040, a third encryption key generation unit 2060, a counter mode encryption unit 2080, and a key block generation unit 2100.
  • the acquisition unit 2020 acquires the plaintext block string and the first encryption key.
  • the plaintext block string is composed of a plurality of plaintext blocks.
  • the second encryption key generation unit 2040 generates a second encryption key.
  • the third encryption key generation unit 2060 generates a third encryption key.
  • the third encryption key is calculated as an exclusive OR of the first encryption key and part or all of the second encryption key.
  • the counter mode encryption unit 2080 encrypts the plaintext block sequence using the third encryption key as the encryption key, and generates an encrypted block sequence. For encryption, block cipher with the counter mode as the cipher usage mode is used.
  • the key block generation unit 2100 generates a key block.
  • the key block is calculated as an exclusive OR of the second encryption key and each block of the encryption block string.
  • FIG. 2 is a diagram illustrating processing executed by the encryption device 2000 using mathematical formulas and the like.
  • the function of each functional component will be described with reference to FIG. 2 as appropriate.
  • the process illustrated in FIG. 2 is merely an example, and the process executed by the encryption apparatus 2000 is not limited to the process illustrated in FIG. In the example of FIG. 2, it is assumed that the key length L of the first encryption key is longer than the block length of the plaintext block. However, the key length L of the first encryption key may be equal to or less than the block length of the plaintext block.
  • the process performed by the acquisition unit 2020 is represented by (1) in FIG. 2, for example.
  • the acquisition unit 2020 acquires a first encryption key and a plaintext block string input from an external device.
  • the acquisition unit 2020 acquires a first encryption key and a plaintext block string that are manually input.
  • the acquisition unit 2020 may access an external device to acquire the first encryption key and the plaintext block string.
  • the acquisition unit 2020 may acquire the first encryption key and the plaintext block string by different methods. For example, the first encryption key is acquired from an external device, and the plaintext block string is manually input.
  • the second encryption key generation unit 2040 generates the second encryption key.
  • the second encryption key generation unit 2040 generates a random bit string having a predetermined bit length, and uses this as a second encryption key.
  • a plurality of second encryption key candidates may be prepared, and the second encryption key generation unit 2040 may select a second encryption key to be used from among them.
  • the above-mentioned “predetermined bit length” may be set in advance in the second encryption key generation unit 2040, or the second encryption key generation unit 2040 from the storage device or the like storing the predetermined bit length. You may make it acquire.
  • the processing performed by the second encryption key generation unit 2040 is represented by (2) in FIG. 2, for example.
  • the key length of the second encryption key (the above-mentioned “predetermined bit length”) is equal to the block length of the plaintext block.
  • the key length of the second encryption key may be different from the block length of the plaintext block.
  • the third encryption key generation unit 2060 generates the third encryption key as an exclusive OR of the first encryption key and part or all of the second encryption key.
  • the third encryption key generation unit 2060 calculates the exclusive OR of the first encryption and a part of the second encryption key. .
  • this process is represented by (3) and (4) in FIG.
  • the block length of the plaintext block is longer than the key length L of the first encryption key. Therefore, the third encryption key generation unit 2060 calculates the lower L bits of the second encryption key ke2 by the process of (3) in Fig. 2 and sets this value as k. Then, in (4) of FIG. 2, the third encryption key generation unit 2060 calculates the exclusive OR of the first encryption key ke1 of L ⁇ bits and k that is the lower L bits of the second encryption key. Then, the third encryption key ke3 ⁇ is calculated.
  • bit length of the second encryption key is less than or equal to the bit length of the first encryption key, the process (3) in FIG. 2 is not necessary.
  • the counter mode encryption unit 2080 encrypts a plurality of plaintext blocks by using a counter mode that is one of block cipher encryption usage modes.
  • a counter mode that is one of block cipher encryption usage modes.
  • an encryption block sequence is generated with the encryption key, the initial value of the counter, and the plaintext block sequence to be encrypted as inputs.
  • the counter mode encryption unit 2080 uses the above-described third encryption key as an encryption key.
  • the counter mode encryption unit 2080 uses the plaintext block sequence acquired by the acquisition unit 2020 as the plaintext block sequence to be encrypted. Further, the counter mode encryption unit 2080 uses, for example, 0 as the initial value of the counter. However, the initial value of the counter may be any value and is not limited to zero.
  • the encryption method using the block cipher in the counter mode using the input encryption key, the initial value of the counter, and the plaintext block string is an existing technology. Therefore, detailed description of this method is omitted.
  • the processing performed by the counter mode encryption unit 2080 is represented, for example, by (5) in FIG.
  • EncCtr (ke3; i; x [1], ..., x [n]) is defined as ⁇ encryption key ke3, initial value of counter i, and plaintext block sequence ⁇ x [1], ..., x [n] ⁇ represents a function that performs encryption using counter cipher block cipher.
  • ⁇ y [1],..., Y [n] ⁇ ] is generated as the cipher block sequence.
  • the key block generation unit 2100 generates a key block as an exclusive OR with each block of the second encryption key and the encryption block string. This process is represented by (6) in FIG. 2, for example. In FIG. 2 (6), y [n + 1] represents a key block. By doing so, the second encryption key is masked by the encryption block string.
  • the key block generation unit 2100 when the bit length of the second encryption key is longer than the bit length of each encryption block, if the exclusive OR of the second encryption key and each encryption block is calculated as it is, a part of the second encryption key is not masked. . Therefore, for example, the key block generation unit 2100 generates a plurality of key blocks by dividing the second encryption key into a plurality of partial keys and performing an exclusive OR operation with the encryption block sequence for each partial key. In this way, the entire second encryption key is masked by the encryption block string.
  • FIG. 3 is a diagram conceptually illustrating a method in which the key block generation unit 2100 generates a plurality of key blocks.
  • the key length of the second encryption key is twice the block length of the encryption block.
  • the block length of the encryption block is set to X.
  • the key block generation unit 2100 bisects the second encryption key to generate a partial key kp1 composed of upper X bits and a partial key kp2 composed of lower X bits.
  • the key block generation unit 2100 divides the cipher block sequence into two equal parts, and generates a first key block using one block sequence and the partial key kp1. Also, the key block generation unit 2100 generates a second key block using the other block sequence and the partial key kp2. Specifically, the key block generation unit 2100 calculates the exclusive OR of the partial key kp1 and each block included in the block sequence ⁇ y [1], ..., y [n / 2] ⁇ . The calculated value is taken as the first key block. Further, the key block generation unit 2100 calculates an exclusive OR of the partial key kp2 and each block included in the block sequence ⁇ y [(n / 2) +1], ..., y [n] ⁇ . Then, the calculated value is set as the second key block.
  • the encryption device 2000 may further include an output unit 2120 (not shown).
  • the output unit 2120 outputs the cipher block sequence and the key block.
  • the output unit 2120 outputs a block sequence (hereinafter referred to as an output block sequence) composed of an encryption block sequence and a key block.
  • the process performed by the output unit 2120 is represented by (7) in FIG. 2, for example.
  • the output block sequence is a block sequence ⁇ y [1] obtained by combining the cipher block sequence ⁇ y [1], ..., y [n] ⁇ and the key block y [n + 1]. ], ..., y [n], y [n + 1] ⁇ .
  • the output unit 2120 may output the cipher block sequence and the key block separately.
  • the output unit 2120 when a plurality of key blocks are generated, the output unit 2120 outputs all the generated key blocks. For example, in the example of FIG. 3, the output unit 2120 outputs the cipher block sequence ⁇ y [1], ..., y [n] ⁇ and the key blocks y [n + 1] and y [n + 2]. To do.
  • the cipher block sequence and the key block output by the output unit 2120 are recorded in a storage unit provided inside or outside the encryption apparatus 2000. Thereafter, the cipher block sequence and the key block recorded in the storage unit are acquired by a device (for example, a decryption device 3000 described later) that performs the decryption process of the cipher block sequence. Further, the output unit 2120 may transmit the cipher block sequence and the key block to the outside.
  • a device for example, a decryption device 3000 described later
  • the encryption block sequence and the key block may be stored in different storage units.
  • Each block included in the cipher block sequence may be stored in a different storage unit.
  • the output block sequence is divided into m (m> 0) block sequences, and the divided block sequences are stored in different storage devices. In this way, by dividing the output block sequence into a plurality of pieces and storing them in different storage devices, it is possible to reduce the probability that a malicious third party will acquire all of the encryption block sequence and the key block.
  • the output block sequence may be stored in the storage device after being made redundant by means of redundancy such as “RAID” or multiplexing. Furthermore, the redundant output block sequence may be divided into a plurality of block sequences and stored in different storage devices.
  • FIG. 4 is a flowchart illustrating the flow of processing executed by the encryption apparatus 2000 according to the first embodiment.
  • the acquisition unit 2020 acquires the plaintext block string and the first encryption key (S102).
  • the second encryption key generation unit 2040 generates a second encryption key (S104).
  • the third encryption key generation unit 2060 generates a third encryption key (S106).
  • the counter mode encryption unit 2080 encrypts the plaintext block string with the block cipher in the counter mode using the third encryption key as an encryption key, and generates an encrypted block string (S108).
  • the key block generation unit 2100 generates a key block (S110).
  • Each functional component of the encryption device 2000 may be realized by hardware (eg, a hard-wired electronic circuit) that implements each functional component, or a combination of hardware and software (eg: It may be realized by a combination of an electronic circuit and a program for controlling it).
  • hardware eg, a hard-wired electronic circuit
  • software eg: It may be realized by a combination of an electronic circuit and a program for controlling it.
  • the encryption device 2000 is implemented as various computers such as a PC (Personal Computer), a portable terminal, or a server machine.
  • the encryption device 2000 may be mounted on a dedicated computer for mounting the encryption device 2000, or may be mounted on a general-purpose computer including other applications.
  • FIG. 5 is a block diagram illustrating a hardware configuration of the encryption device 2000.
  • the encryption device 2000 includes a bus 1020, a processor 1040, a memory 1060, a storage 1080, and an input / output interface 1100.
  • the bus 1020 is a data transmission path through which the processor 1040, the memory 1060, the storage 1080, and the input / output interface 1100 transmit / receive data to / from each other.
  • the processor 1040 is an arithmetic processing device such as a CPU (Central Processing Unit) and a GPU (Graphics Processing Unit).
  • the memory 1060 is a memory such as a RAM (Random Access Memory) or a ROM (Read Only Memory).
  • the storage 1080 is a storage device such as a hard disk, SSD (Solid State Drive), or memory card.
  • the storage 1080 may be a memory such as a RAM or a ROM.
  • the input / output interface 1100 is an input / output interface for the encryption apparatus 2000 to transmit / receive data to / from an input / output device or an external apparatus.
  • the storage 1080 stores a program for realizing the function of the encryption device 2000. Specifically, program modules that realize the functions of the acquisition unit 2020, the second encryption key generation unit 2040, the third encryption key generation unit 2060, the counter mode encryption unit 2080, and the key block generation unit 2100 are stored. Yes. By executing these program modules, the processor 1040 performs the functions of the acquisition unit 2020, the second encryption key generation unit 2040, the third encryption key generation unit 2060, the counter mode encryption unit 2080, and the key block generation unit 2100. Realize each. Here, when executing the above modules, the processor 1040 may execute the modules after reading them onto the memory 1060 or without reading them onto the memory 1060.
  • each program module may be stored in the memory 1060.
  • the encryption device 2000 may not include the storage 1080.
  • FIG. 6 is a diagram illustrating ciphertext generation processing EplsAenc () in Non-Patent Document 1
  • FIG. 7 is a diagram illustrating decryption processing EplsAdec () ⁇ ⁇ ⁇ ⁇ in Non-Patent Document 1.
  • FIG. 8 is a diagram illustrating ciphertext generation processing AONEenc () in Non-Patent Document 2
  • FIG. 9 is a diagram illustrating decryption processing AONEdec () ⁇ ⁇ ⁇ ⁇ in Non-Patent Document 2.
  • “Enc ()” in FIG. 7 is a function representing an arbitrary encryption process for encrypting a block.
  • Dec () in FIG. 8 is a function representing an arbitrary decryption process for decrypting a block encrypted with Enc ().
  • Non-Patent Document 2 realizes the ciphertext generation process with a smaller calculation amount than the ciphertext generation process of Non-Patent Document 1.
  • 2n + 1 times encryption processing n times EncCtr and n + 1 times Enc
  • 2n times exclusive OR operation processing are performed.
  • n times of encryption processing EncCtr
  • 3n + 1 times of exclusive OR operation processing are performed. Therefore, the ciphertext generation process of Non-Patent Document 2 has fewer encryption processes and more exclusive OR operation processes than the ciphertext generation process of Non-Patent Document 1.
  • the encryption processing has a larger calculation amount than the exclusive OR operation processing. Therefore, the ciphertext generation process of Non-Patent Document 2 has a smaller calculation amount than the ciphertext generation process of Non-Patent Document 1.
  • the security of the ciphertext generated by the method of Non-Patent Document 1 is lower than the security of the ciphertext generated by the method of Non-Patent Document 1.
  • the decryption process of Non-Patent Document 1 shown in FIG. 7 if any one of the encrypted blocks [1],..., Y [n + 1] is not enough, ⁇ k ′ It cannot be calculated. Therefore, none of the plaintext blocks x [1],..., X [n] n can be calculated by the process of FIG. Therefore, in the method of Non-Patent Document 1, none of the plaintext blocks can be decrypted unless all the blocks output in the ciphertext generation process are prepared.
  • Non-Patent Document 2 if n blocks are acquired from n + 1 encryption blocks, a part of plaintext can be decrypted. This is because y ′ [n + 1] can be decrypted from the ciphertext of n blocks.
  • the information that makes the processing of AONEenc () non-deterministic is the key k and y '[n + 1]. Therefore, in a situation where the key k is available, only y ′ [n + 1] is information that makes the processing of AONEenc () non-deterministic. Therefore, if y ′ [n + 1] can be restored, the nondeterminism of the processing of AONEenc () is impaired.
  • a malicious third party who obtains ciphertext of n blocks and restores y '[n + 1] ⁇ ⁇ ⁇ using them obtains y' [n + 1] and plaintext of appropriately generated n blocks.
  • the processing of AONEenc () is executed using the block sequence w [1], ..., w [n]. Then, the malicious third party compares the generated ciphertext with the acquired ciphertext.
  • plain text is not w [1], ..., w [n]”.
  • the ability to guess the contents of plaintext in this way means that the security of the ciphertext is low.
  • the third encryption key calculated as the exclusive OR of the first encryption key and the second encryption key is used as the encryption key used for the encryption process. Therefore, if either the first encryption key or the second encryption key is kept secret, even a part of plaintext cannot be decrypted.
  • the number of encryption processes is n times as in the ciphertext generation process of Non-Patent Document 2, and the amount of calculation is smaller than the method of Non-Patent Document 1.
  • the encryption apparatus 2000 of the present embodiment it is possible to generate a ciphertext with a small amount of calculation while improving the security of the block cipher.
  • FIG. 10 is a block diagram illustrating a decoding device 3000 according to the second embodiment.
  • arrows indicate the flow of information.
  • each block represents a functional unit configuration, not a hardware unit configuration.
  • the decryption device 3000 decrypts the encrypted block sequence to generate a plaintext block sequence.
  • the encryption block sequence to be processed by the decryption device 3000 is an encryption block sequence generated by the encryption device 2000.
  • the decryption device 3000 includes an acquisition unit 3020, a second decryption key generation unit 3040, a third decryption key generation unit 3060, and a counter mode decryption unit 3080.
  • the acquisition unit 3020 acquires the target block sequence and the first decryption key.
  • the target block sequence includes the above-described key block and cipher block sequence.
  • the cipher block sequence has a plurality of cipher blocks.
  • the second decryption key generation unit 3040 generates a second decryption key.
  • the second decryption key is generated as an exclusive OR of each cipher block included in the cipher block string.
  • the third decryption key generation unit 3060 generates a third decryption key.
  • the third decryption key is generated as an exclusive OR of the first decryption key and the second decryption key.
  • the counter mode decryption unit 3080 decrypts the encrypted block to generate a plaintext block sequence. Note that the counter mode decryption unit 3080 uses the counter mode as the block cipher use mode. Further, the counter mode decryption unit 3080 uses the third decryption key as a decryption key.
  • FIG. 11 is a diagram illustrating processing executed by the decoding device 3000 using mathematical formulas and the like.
  • functions of the respective functional components will be described with reference to FIG. 11 as appropriate.
  • the process illustrated in FIG. 11 is merely an example, and the process executed by the decoding device 3000 is not limited to the process illustrated in FIG. In the example of FIG. 11, it is assumed that the key length L of the first decryption key is longer than the block length of the encryption block. However, the key length L of the first decryption key may be equal to or less than the block length of the encryption block.
  • the encryption block sequence included in the target block sequence is an encryption block sequence generated by the counter mode encryption unit 2080 of the encryption device 2000.
  • the key block included in the target block sequence is a key block generated by the key block generation unit 2100 of the encryption device 2000. That is, the target block corresponds to the output block output by the output unit 2120.
  • the processing performed by the acquisition unit 3020 is represented by (1) in FIG. 11, for example.
  • the acquisition unit 3020 acquires the encryption block string and the key block stored in the storage device by the encryption device 2000. Further, for example, the target block sequence is acquired by receiving the encryption block sequence and the key block transmitted by the encryption device 2000. Further, for example, the acquisition unit 3020 may acquire an encryption block string and a key block that are manually input.
  • the first decryption key acquired by the acquisition unit 3020 is the same value as the first encryption key used when the encryption device 2000 generates the encryption block string.
  • the acquisition unit 3020 may acquire the first decryption key from the encryption device 2000, may acquire the first decryption key that is manually input, or may store it in a storage device inside or outside the decryption device 3000. The stored first decryption key may be acquired.
  • the second decryption key generation unit 3040 calculates an exclusive OR of each block sequence of the encryption block sequence and the key block, and generates a second decryption key using the calculation result.
  • the process of the second decryption key generation unit 3040 is represented by (2) in FIG. In (2) of FIG. 11, the second decryption key generation unit 3040 calculates the exclusive OR of each block of the target block sequence ⁇ y [1], ..., y [n + 1] ⁇
  • the calculation result is a second decryption key kd2.
  • FIG. 12 is a diagram conceptually illustrating a process of generating the second decryption key from a plurality of key blocks.
  • the target block includes a first key block y [n + 1] and a second key block y [n + 2].
  • the second decryption key generation unit 3040 includes each block of ⁇ y [1], ..., y [n / 2] ⁇ and the first key block y [n + 1] that are part of the cipher block sequence. Is calculated to generate a first partial key. Next, the second decryption key generation unit 3040 uses each block of ⁇ y [(n / 2) +1],..., Y [n] ⁇ that is part of the cipher block sequence and the second key block. A second partial key is generated by calculating an exclusive OR with y [n + 2]. Then, the second decryption key generation unit 3040 generates the second decryption key by combining the first partial key and the second partial key.
  • the second decryption key generation unit 3040 needs to grasp “which block is used for exclusive OR operation with which partial key in each block included in the encryption block sequence”. For example, when the second decryption key generation unit 3040 acquires m partial keys, the encryption block sequence is equally divided into a plurality of block sequences, and each block sequence is exclusive to any one partial key. It is configured to be used for logical sum operation. Further, the second decryption key generation unit 3040 obtains information indicating “which block is used for the exclusive OR operation with which partial key in each block included in the encryption block sequence” together with the key block. May be. The second decryption key generation unit 3040 may acquire this information output from the encryption device 2000, may acquire this information input manually, or may be internal or external to the decryption device 3000. You may acquire this information memorize
  • the third decryption key generation unit 3060 calculates an exclusive OR of a part or all of the second decryption keys and the first decryption key, and uses the calculation result as the third decryption key.
  • the third decryption key generation unit 3060 calculates an exclusive OR of a part of the second decryption key and the first decryption key, This is the third decryption key.
  • the processing of the third decryption key generation unit 3060 in this case is represented by (3) and (4) in FIG. 11, for example. In FIG. 11, the bit length of the first decryption key is L.
  • the third decryption key generation unit 3060 generates a partial key k that is the lower L bits of the second decryption key. Then, in (4) of FIG. 11, the third decryption key generation unit 3060 calculates the exclusive OR of the first decryption key kd1 and the partial key k, and uses the calculation result as the third decryption key kd3.
  • the third decryption key generation unit 3060 calculates the exclusive OR of all the second decryption keys and the first decryption key. Three decryption keys are assumed. In this case, the process (3) in FIG. 11 is not necessary.
  • the counter mode decryption unit 3080 decrypts the cipher block sequence using a counter mode, which is one of block cipher encryption usage modes, and generates a plaintext block.
  • the counter mode decryption unit 3080 uses the above-described third decryption key as a decryption key.
  • the counter mode decryption unit 3080 uses the cipher block sequence acquired by the acquisition unit 3020 as the cipher block sequence to be decrypted. Further, the counter mode decryption unit 3080 uses the same value as the initial value of the counter used by the counter mode encryption unit 2080 to generate the cipher block sequence as the initial value of the counter in the decryption process.
  • the counter mode decryption unit 3080 may acquire the initial value of the counter from the encryption device 2000, may acquire the initial value of the counter that is manually input, or stores the initial value of the counter inside or outside the decryption device 3000. You may acquire the initial value of the counter currently set. The initial value of the counter may be preset in the counter mode decoding unit 3080.
  • the processing performed by the counter mode decoding unit 3080 is represented by (5) in FIG. 11, for example.
  • DecCtr (kd3; i; y [1], ..., y [n]) is ⁇
  • Decryption key kd3 (kd3; i; y [1], ..., y [n]) is ⁇
  • counter initial value i, cipher block sequence ⁇ y [1], ..., y [n] ⁇ represents a function that uses as an input and performs decryption processing with a block cipher in counter mode.
  • x [1],..., X [n] n is generated as a plaintext block sequence.
  • the decoding device 3000 may further include an output unit 3100 (not shown).
  • the output unit 3100 outputs the plaintext block decrypted by the counter mode decryption unit 3080 (for example, (6) in FIG. 11).
  • FIG. 13 is a flowchart illustrating the flow of processing executed by the decoding device 3000 according to the second embodiment.
  • the acquisition unit 3020 acquires the target block sequence and the first decryption key (S202).
  • the second decryption key generation unit 3040 generates a second decryption key (S204).
  • the third decryption key generation unit 3060 generates a third decryption key (S206).
  • the counter mode decryption unit 3080 decrypts the cipher block sequence with the counter mode block cipher to generate a plaintext block sequence (S208).
  • Each functional component of the decoding device 3000 may be realized by hardware (eg, a hard-wired electronic circuit) that implements each functional component, or a combination of hardware and software (eg, electronic A combination of a circuit and a program for controlling the circuit may be realized.
  • hardware eg, a hard-wired electronic circuit
  • software eg, electronic A combination of a circuit and a program for controlling the circuit
  • the decryption device 3000 is implemented as various computers such as a PC (Personal Computer), a mobile terminal, or a server machine.
  • the decoding device 3000 may be mounted on a dedicated computer for mounting the decoding device 3000, or may be mounted on a general-purpose computer including other applications.
  • FIG. 14 is a block diagram illustrating a hardware configuration of the decoding device 3000.
  • the decoding device 3000 includes a bus 4020, a processor 4040, a memory 4060, a storage 4080, and an input / output interface 4100.
  • the bus 4020, the processor 4040, the memory 4060, the storage 4080, and the input / output interface 4100 are the same as the bus 1020, the processor 1040, the memory 1060, the storage 1080, and the input / output interface 1100 in the encryption device 2000 of FIG. It has the function of.
  • the storage 4080 stores a program for realizing the function of the decryption device 3000. Specifically, program modules that realize the functions of the acquisition unit 3020, the second decryption key generation unit 3040, the third decryption key generation unit 3060, and the counter mode decryption unit 3080 are stored.
  • the processor 4040 implements the functions of the acquisition unit 3020, the second decryption key generation unit 3040, the third decryption key generation unit 3060, and the counter mode decryption unit 3080 by executing these program modules.
  • the processor 4040 may execute the modules after reading them onto the memory 4060 or without reading them onto the memory 4060.
  • each program module may be stored in the memory 4060.
  • the decryption device 3000 may not include the storage 4080.
  • the encrypted block sequence generated by the encryption device 2000 of the first embodiment can be decrypted to obtain a plaintext block sequence.
  • FIG. 15 is a block diagram illustrating a cryptographic processing system 5000 according to the third embodiment.
  • the cryptographic processing system 5000 includes the encryption device 2000 according to the first embodiment and the decryption device 3000 according to the second embodiment.
  • the configuration of the encryption device 2000 is represented, for example, in FIG.
  • the configuration of the decoding device 3000 is represented, for example, in FIG.
  • the functional components included in the encryption device 2000 and the decryption device 3000 are omitted.
  • the decryption device 3000 acquires the target block sequence including the encryption block sequence and the key block generated by the encryption device 2000 by any of the methods described in the second embodiment. According to the cryptographic processing system 5000 of this embodiment, encryption and decryption can be performed by a method with high safety and a small amount of calculation.
  • a plaintext block sequence composed of a plurality of plaintext blocks, and an acquisition means for acquiring a first encryption key; Second encryption key generation means for generating a second encryption key; Third encryption key generating means for calculating a third encryption key as an exclusive OR of the first encryption key and a part or all of the second encryption key; Counter mode encryption means for generating an encrypted block string by encrypting the plaintext block string with a counter mode block cipher using the third encryption key as an encryption key; Key block generation means for generating a key block by calculating an exclusive OR of the second encryption key and each block of the encryption block string; An encryption device. 2.
  • Counter mode decryption means for decrypting the cipher block sequence with a counter mode block cipher using the third decryption key as a decryption key to generate a plaintext block sequence;
  • a decoding device 5.
  • the acquisition means acquires a plurality of key blocks
  • the second decryption key generation means calculates an exclusive OR of each key block and each partial block obtained by dividing the cipher block string by n (n> 0), and combines the calculated plurality of values. To generate the second decryption key.
  • the decoding device according to 1. 6). 1. To 3. 3. an encryption device according to any one of the above; Or 5.
  • An encryption processing system comprising the decryption device according to claim 1. 7).
  • An encryption method executed by a computer An acquisition step of acquiring a plaintext block sequence composed of a plurality of plaintext blocks and a first encryption key; A second encryption key generation step of generating a second encryption key; A third encryption key generation step of calculating a third encryption key as an exclusive OR of the first encryption key and a part or all of the second encryption key; A counter mode encryption step of generating an encrypted block sequence by encrypting the plaintext block sequence with a counter mode block cipher using the third encryption key as an encryption key; A key block generation step of generating a key block by calculating an exclusive OR of the second encryption key and each block of the encryption block string; An encryption method. 8).
  • n key blocks are generated by calculating exclusive ORs with the respective partial blocks. The encryption method described in 1. 9.
  • a decryption method executed by a computer Obtaining a key block, a cipher block sequence having a plurality of cipher blocks, and a first decryption key;
  • a decryption method executed by a computer, Obtaining a key block, a cipher block sequence having a plurality of cipher blocks, and a first decryption key;
  • the obtaining step obtains a plurality of key blocks
  • the second decryption key generation step calculates an exclusive OR of each key block and each partial block obtained by dividing the cipher block string by n (n> 0), and combines the calculated plurality of values.

Landscapes

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

Abstract

 取得部(2020)は平文ブロック列及び第1暗号鍵を取得する。平文ブロック列は複数の平文ブロックで構成される。第2暗号鍵生成部(2040)は第2暗号鍵を生成する。第3暗号鍵生成部(2060)は第3暗号鍵を生成する。第3暗号鍵は、第1暗号鍵と、第2暗号鍵の一部又は全部との排他的論理和として算出される。カウンタモード暗号化部(2080)は、第3暗号鍵を暗号鍵として用いて平文ブロック列を暗号化し、暗号ブロック列を生成する。暗号化には、カウンタモードを暗号利用モードとするブロック暗号が用いられる。鍵ブロック生成部(2100)は鍵ブロックを生成する。鍵ブロックは、第2暗号鍵と暗号ブロック列の各ブロックとの排他的論理和として算出される。

Description

暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
 本発明は、ブロック暗号に関する。
 暗号方式の一つとして、ブロック暗号がある。ブロック暗号は、暗号化と復号に同一の鍵を用いる共通鍵暗号方式に分類される。ブロック暗号は、暗号化処理及び復号処理から構成される。暗号化処理は暗号化対象のデータ(平文)及び鍵を入力として、暗号文を出力する。復号処理は、暗号文及び鍵を入力として平文を出力する。
 ブロック暗号では、鍵長及びブロック長が固定である。例えばアメリカ国立標準技術研究所(NIST)によって規格化された共通鍵暗号方式 AES では、鍵長は 128 ビット、192 ビット、及び 256 ビットから選択でき、ブロック長は128ビットである。
 ブロック暗号を用いてブロック長より長いデータを扱う場合、例えばデータを複数のブロックに分割し、ブロックごとに暗号化及び復号を行う。このようにブロック長より長いデータを扱うためのブロック暗号の利用方法は、暗号利用モードと呼ばれる。
 ここで、各ブロックをそれぞれ暗号化する方法では、暗号文の一部と鍵を取得すると、その取得した部分を復号することができてしまう。そこで、暗号文の一部が復号されることを防ぐため、All Or Nothing Transform(AONT)と呼ばれる技術が用いられる。AONT を用いて暗号化及び復号を行う方法は、例えば非特許文献1や非特許文献2に開示されている。
Anand Desai、「The Security of All-or-Nothing Encryption: Protecting against Exhaustive Key Search」、Advances in Cryptology(CRYPTO 2000)、2000 年 8 月 11 日、pp. 359-375 Ghassan O. Karame、他3名、「Securing Cloud Data in the New Attacker Model」、[online]、2014年7月16日、[2014年10月30日検索]、インターネット<URL: https://eprint.iacr.org/2014/556.pdf>
 非特許文献1の方法では、n ブロックの平文が入力されると、n+1 ブロックの暗号文が出力される。そして、n+1 ブロックの暗号文全てを取得できないと、平文の一部であっても復号できない。しかし、非特許文献2の方法と比較し、暗号処理(暗号化処理及び復号処理)の計算量が多い。
 一方、非特許文献2の方法は、非特許文献1の方法よりも少ない計算量で、n ブロックの平文から n+1 ブロックの暗号文を出力できる。しかし、n+1 ブロックの暗号文の内の n ブロックが取得できると平文の一部を復号できてしまうため、非特許文献2の方法は非特許文献1の方法よりも安全性が低い。
 本発明は、以上の課題に鑑みてなされたものである。本発明の目的は、ブロック暗号について、暗号文の安全性を向上しつつ、少ない計算量で暗号処理を行う技術を提供することである。
 本願発明が提供する暗号化装置は、複数の平文ブロックで構成される平文ブロック列、及び第1暗号鍵を取得する取得手段と、第2暗号鍵を生成する第2暗号鍵生成手段と、前記第1暗号鍵と、前記第2暗号鍵の一部又は全部との排他的論理和として、第3暗号鍵を算出する第3暗号鍵生成手段と、前記第3暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化手段と、前記第2暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成手段と、を有する。
 本発明が提供する復号装置は、鍵ブロック及び複数の暗号ブロックを有する暗号ブロック列、並びに第1復号鍵を取得する取得手段と、前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第2復号鍵を生成する第2復号鍵生成手段と、前記第1復号鍵と、前記第2復号鍵の一部又は全部との排他的論理和として、第3復号鍵を算出する第3復号鍵生成手段と、前記第3復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号手段と、を有する。
 本発明が提供する暗号処理システムは、本発明が提供する暗号化装置及び復号装置を有する。
 本発明が提供する暗号化方法は、コンピュータによって実行される。当該暗号化方法は、複数の平文ブロックで構成される平文ブロック列、及び第1暗号鍵を取得する取得ステップと、第2暗号鍵を生成する第2暗号鍵生成ステップと、前記第1暗号鍵と、前記第2暗号鍵の一部又は全部との排他的論理和として、第3暗号鍵を算出する第3暗号鍵生成ステップと、前記第3暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化ステップと、前記第2暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成ステップと、を有する。
 本発明が提供する復号方法は、コンピュータによって実行される。当該復号方法は、鍵ブロック及び複数の暗号ブロックを有する暗号ブロック列、並びに第1復号鍵を取得する取得ステップと、前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第2復号鍵を生成する第2復号鍵生成ステップと、前記第1復号鍵と、前記第2復号鍵の一部又は全部との排他的論理和として、第3復号鍵を算出する第3復号鍵生成ステップと、前記第3復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号ステップと、を有する。
 本発明が提供する暗号化プログラムは、コンピュータに、本発明が提供する暗号化装置として動作する機能を持たせる。
 本発明が提供する復号プログラムは、コンピュータに、本発明が提供する復号装置として動作する機能を持たせる。
 本発明によれば、ブロック暗号について、暗号文の安全性を向上しつつ、少ない計算量で暗号処理を行う技術が提供される。
 上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
実施形態1に係る暗号化装置を例示するブロック図である。 暗号化装置によって実行される処理を数式等を用いて例示した図である。 鍵ブロック生成部が複数の鍵ブロックを生成する方法を概念的に例示する図である。 実施形態1の暗号化装置によって実行される処理の流れを例示するフローチャートである。 暗号化装置のハードウエア構成を例示するブロック図である。 非特許文献1における暗号化処理を例示する図である。 非特許文献1における復号処理を例示する図である。 非特許文献2における暗号化処理を例示する図である。 非特許文献2における復号処理を例示する図である。 実施形態2に係る復号装置を例示するブロック図である。 復号装置によって実行される処理を数式等を用いて例示した図である。 複数の鍵ブロックから第2復号鍵を生成する処理を概念的に例示する図である。 実施形態2の復号装置によって実行される処理の流れを例示するフローチャートである。 復号装置のハードウエア構成を例示するブロック図である。 実施形態3に係る暗号処理システムを例示するブロック図である。
 以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
[実施形態1]
 図1は、実施形態1に係る暗号化装置2000を例示するブロック図である。図1において、矢印は情報の流れを表している。さらに、図1において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
 暗号化装置2000は、取得部2020、第2暗号鍵生成部2040、第3暗号鍵生成部2060、カウンタモード暗号化部2080、及び鍵ブロック生成部2100を有する。
 取得部2020は平文ブロック列及び第1暗号鍵を取得する。平文ブロック列は複数の平文ブロックで構成される。第2暗号鍵生成部2040は第2暗号鍵を生成する。第3暗号鍵生成部2060は第3暗号鍵を生成する。第3暗号鍵は、第1暗号鍵と、第2暗号鍵の一部又は全部との排他的論理和として算出される。カウンタモード暗号化部2080は、第3暗号鍵を暗号鍵として用いて平文ブロック列を暗号化し、暗号ブロック列を生成する。暗号化には、カウンタモードを暗号利用モードとするブロック暗号が用いられる。鍵ブロック生成部2100は鍵ブロックを生成する。鍵ブロックは、第2暗号鍵と暗号ブロック列の各ブロックとの排他的論理和として算出される。
 図2は、暗号化装置2000によって実行される処理を数式等を用いて例示した図である。以下、図2を適宜参照しながら、それぞれの機能構成部の機能について説明する。ただし、図2に示す処理はあくまで例示であり、暗号化装置2000によって実行される処理は図2に示す処理に限定されない。また、図2の例では、第1暗号鍵の鍵長 L が、平文ブロックのブロック長よりも長い場合を想定している。しかし、第1暗号鍵の鍵長 L は、平文ブロックのブロック長以下であってもよい。
<取得部2020>
 取得部2020が行う処理は、例えば図2の(1)で表される。ここで、取得部2020が第1暗号鍵及び平文ブロック列を取得する方法は様々である。例えば取得部2020は、外部の装置から入力される第1暗号鍵及び平文ブロック列を取得する。その他にも例えば、取得部2020は、手動で入力される第1暗号鍵及び平文ブロック列を取得する。さらに取得部2020は、外部の装置にアクセスして、第1暗号鍵及び平文ブロック列を取得してもよい。また、取得部2020は、第1暗号鍵と平文ブロック列とを異なる方法で取得してもよい。例えば、第1暗号鍵は外部の装置から取得され、平文ブロック列は手動で入力される。
<第2暗号鍵生成部2040>
 第2暗号鍵生成部2040が第2暗号鍵を生成する方法は様々である。例えば第2暗号鍵生成部2040は、所定のビット長のランダムなビット列を生成し、これを第2暗号鍵とする。また例えば、第2暗号鍵の候補を複数用意しておき、第2暗号鍵生成部2040は、その中から利用する第2暗号鍵を選択してもよい。なお、上述の「所定のビット長」は、予め第2暗号鍵生成部2040に設定されていてもよいし、所定のビット長を記憶している記憶装置等から第2暗号鍵生成部2040が取得するようにしてもよい。
 第2暗号鍵生成部2040が行う処理は、例えば図2の(2)で表される。図2の(2)では、第2暗号鍵の鍵長(上述の「所定のビット長」)が、平文ブロックのブロック長と等しい。ただし、第2暗号鍵の鍵長は、平文ブロックのブロック長と異なっていてもよい。
<第3暗号鍵生成部2060>
 前述の通り、第3暗号鍵生成部2060は第1暗号鍵と、第2暗号鍵の一部又は全部との排他的論理和として第3暗号鍵を生成する。
 第2暗号鍵のビット長が第1暗号鍵のビット長よりも長い場合、第3暗号鍵生成部2060は、第1暗号と、第2暗号鍵の一部との排他的論理和を算出する。例えばこの処理は、図2の(3)及び(4)で表される。図2において、平文ブロックのブロック長は、第1暗号鍵の鍵長 L より長い。そこで第3暗号鍵生成部2060は、図2の(3)の処理によって第2暗号鍵 ke2 の下位 L ビットを算出し、この値を k とする。そして、図2の(4)において、第3暗号鍵生成部2060は、L ビットの第1暗号鍵 ke1 と、第2暗号鍵の下位 L ビットである k との排他的論理和を算出することで、第3暗号鍵 ke3 を算出する。
 なお、第2暗号鍵のビット長が第1暗号鍵のビット長以下である場合、図2の(3)の処理は不要となる。
<カウンタモード暗号化部2080>
 カウンタモード暗号化部2080は、ブロック暗号の暗号化利用モードの一つであるカウンタモードを利用して、複数の平文ブロックを暗号化する。ここで、カウンタモードのブロック暗号では、暗号鍵、カウンタの初期値、及び暗号化対象の平文ブロック列を入力として、暗号ブロック列を生成する。
 カウンタモード暗号化部2080は、前述の第3暗号鍵を暗号鍵として用いる。また、カウンタモード暗号化部2080は、暗号化対象の平文ブロック列として、取得部2020によって取得された平文ブロック列を用いる。さらにカウンタモード暗号化部2080は、カウンタの初期値として、例えば0を用いる。ただし、カウンタの初期値は任意の値でよく、0に限定されない。
 ここで、入力された暗号鍵、カウンタの初期値、及び平文ブロック列を用いてカウンタモードのブロック暗号で暗号化を行う方法自体は既存の技術である。そのため、この方法についての詳細な説明は省略する。
 カウンタモード暗号化部2080が行う処理は、例えば図2の(5)で表される。ここで、EncCtr(ke3; i; x[1],..., x[n]) は、「暗号鍵 ke3、カウンタの初期値 i、及び平文ブロック列 {x[1]、...、x[n]} を入力とし、カウンタモードのブロック暗号で暗号化を行う関数」を表している。図2の(5)では、暗号ブロック列として、{y[1]、...、y[n]} が生成される。
<鍵ブロック生成部2100>
 鍵ブロック生成部2100は、第2暗号鍵及び暗号ブロック列の各ブロックとの排他的論理和として、鍵ブロックを生成する。この処理は、例えば図2の(6)で表される。図2の(6)において、y[n+1] は鍵ブロックを表す。こうすることで、第2暗号鍵が、暗号ブロック列によってマスクされる。
 ここで、第2暗号鍵のビット長が各暗号ブロックのビット長より長い場合、そのまま第2暗号鍵と各暗号ブロックとの排他的論理和を計算すると、第2暗号鍵の一部がマスクされない。そこで例えば、鍵ブロック生成部2100は、第2暗号鍵を複数の部分鍵に分割し、各部分鍵について暗号ブロック列との排他的論理和演算をすることで、複数の鍵ブロックを生成する。こうすることで、第2暗号鍵の全体が暗号ブロック列によってマスクされるようにする。
 図3は、鍵ブロック生成部2100が複数の鍵ブロックを生成する方法を概念的に例示する図である。図3において、第2暗号鍵の鍵長は暗号ブロックのブロック長の2倍である。ここで、暗号ブロックのブロック長を X とおく。例えば鍵ブロック生成部2100は、第2暗号鍵を2等分し、上位 X ビットから成る部分鍵 kp1 及び下位 X ビットから成る部分鍵 kp2 を生成する。
 そして、鍵ブロック生成部2100は、暗号ブロック列を2等分し、片方のブロック列及び部分鍵 kp1 とを用いて第1の鍵ブロックを生成する。また、鍵ブロック生成部2100は、もう片方のブロック列及び部分鍵 kp2 を用いて第2の鍵ブロックを生成する。具体的には、鍵ブロック生成部2100は、部分鍵 kp1 と、ブロック列 {y[1],...,y[n/2]} に含まれる各ブロックとの排他的論理和を算出し、算出された値を第1の鍵ブロックとする。さらに、鍵ブロック生成部2100は、部分鍵 kp2 と、ブロック列 {y[(n/2)+1],...,y[n]} に含まれる各ブロックとの排他的論理和を算出し、算出された値を第2の鍵ブロックとする。
<その他の機能について>
 暗号化装置2000は、出力部2120をさらに有していてもよい(図示せず)。出力部2120は、暗号ブロック列及び鍵ブロックを出力する。例えば出力部2120は、暗号ブロック列及び鍵ブロックから成るブロック列(以下、出力ブロック列)を出力する。出力部2120が行う処理は、例えば図2の(7)で表される。図2の(7)において、出力ブロック列は、暗号ブロック列 {y[1],...,y[n]} と鍵ブロック y[n+1] とを結合したブロック列 {y[1],...,y[n],y[n+1]} である。ただし、出力部2120は、暗号ブロック列及び鍵ブロックを別々に出力してもよい。
 なお、鍵ブロックが複数生成された場合、出力部2120は、生成した鍵ブロックを全て出力する。例えば図3の例の場合、出力部2120は、暗号ブロック列 {y[1],...,y[n]}、並びに鍵ブロック y[n+1] 及び y[n+2] を出力する。
 出力部2120によって出力された暗号ブロック列及び鍵ブロックの利用方法は様々である。例えば出力部2120によって出力された暗号ブロック列及び鍵ブロックは、暗号化装置2000の内部又は外部に設けられた記憶部に記録される。その後、その記憶部に記録された暗号ブロック列及び鍵ブロックは、暗号ブロック列の復号処理を行う装置(例えば後述の復号装置3000)によって取得される。また、出力部2120は、暗号ブロック列及び鍵ブロックを外部に送信してもよい。
 なお、暗号ブロック列及び鍵ブロックは異なる記憶部に記憶されてもよい。また、暗号ブロック列に含まれる各ブロックは異なる記憶部に記憶されてもよい。例えば、出力ブロック列を m 個(m > 0)のブロック列に分割し、分割後のブロック列をそれぞれ異なる記憶装置に記憶する。このように出力ブロック列を複数に分割してそれぞれ異なる記憶装置に記憶することにより、悪意ある第三者が暗号ブロック列及び鍵ブロックの全てを取得してしまう確率を低くすることができる。
 また、出力ブロック列を RAID や多重化などの冗長化手段によって冗長化した後に記憶装置に記憶するようにしてもよい。さらに、冗長化された出力ブロック列を複数のブロック列に分け、それぞれ異なる記憶装置に記憶するようにしてもよい。
<処理の流れ>
 図4は、実施形態1の暗号化装置2000によって実行される処理の流れを例示するフローチャートである。取得部2020は平文ブロック列及び第1暗号鍵を取得する(S102)。第2暗号鍵生成部2040は第2暗号鍵を生成する(S104)。第3暗号鍵生成部2060は第3暗号鍵を生成する(S106)。カウンタモード暗号化部2080は、第3暗号鍵を暗号鍵としてカウンタモードのブロック暗号で平文ブロック列を暗号化し、暗号ブロック列を生成する(S108)。鍵ブロック生成部2100は鍵ブロックを生成する(S110)。
<ハードウエア構成例>
 暗号化装置2000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、各機能構成部をハードウエアとソフトウエアとの組み合わせで実現する場合について、その構成を具体的に例示する。
 暗号化装置2000は、PC(Personal Computer)、携帯端末、又はサーバマシンなどの種々の計算機として実装される。ここで暗号化装置2000は、暗号化装置2000を実装するための専用の計算機に実装されてもよいし、その他のアプリケーション等も含まれている汎用の計算機に実装されてもよい。
 図5は、暗号化装置2000のハードウエア構成を例示するブロック図である。暗号化装置2000は、バス1020、プロセッサ1040、メモリ1060、ストレージ1080、及び入出力インタフェース1100を有する。バス1020は、プロセッサ1040、メモリ1060、ストレージ1080、及び入出力インタフェース1100が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ1040などを互いに接続する方法は、バス接続に限定されない。プロセッサ1040は、例えば CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ1060は、例えば RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージ1080は、例えばハードディスク、SSD (Solid State Drive)、又はメモリカードなどの記憶装置である。また、ストレージ1080は、RAM や ROM 等のメモリであってもよい。入出力インタフェース1100は、暗号化装置2000が入出力デバイスや外部の装置等との間でデータを送受信するための入出力インタフェースである。
 ストレージ1080は、暗号化装置2000の機能を実現するためのプログラムを記憶している。具体的には、取得部2020、第2暗号鍵生成部2040、第3暗号鍵生成部2060、カウンタモード暗号化部2080、及び鍵ブロック生成部2100の機能をそれぞれ実現するプログラムモジュールを記憶している。プロセッサ1040は、これら各プログラムモジュールを実行することで、取得部2020、第2暗号鍵生成部2040、第3暗号鍵生成部2060、カウンタモード暗号化部2080、及び鍵ブロック生成部2100の機能をそれぞれ実現する。ここでプロセッサ1040は、上記各モジュールを実行する際、これらのモジュールをメモリ1060上に読み出してから実行してもよいし、メモリ1060上に読み出さずに実行してもよい。
 暗号化装置2000のハードウエア構成は図5に示した構成に限定されない。例えば、各プログラムモジュールはメモリ1060に格納されてもよい。この場合、暗号化装置2000は、ストレージ1080を備えていなくてもよい。
<作用・効果>
 非特許文献1に記載されている手法及び非特許文献2に記載されている手法について説明した後、本実施形態の暗号化装置の作用・効果について説明する。
 図6は非特許文献1における暗号文生成処理 EplsAenc() を例示する図であり、図7は非特許文献1における復号処理 EplsAdec() を例示する図である。一方、図8は非特許文献2における暗号文生成処理 AONEenc() を例示する図であり、図9は非特許文献2における復号処理 AONEdec() を例示する図である。なお、図7における Enc() は、ブロックを暗号化する任意の暗号化処理を表す関数である。また、図8における Dec() は、Enc() で暗号化されたブロックを復号する任意の復号処理を表す関数である。
 非特許文献2の手法は、非特許文献1の暗号文生成処理よりも少ない計算量で暗号文生成処理を実現している。非特許文献1の暗号文生成処理では、2n+1 回の暗号化処理(n 回の EncCtr 及び n+1 回の Enc)及び 2n 回の排他的論理和演算処理が行われている。これに対し、非特許文献2の暗号文生成処理では、n 回の暗号化処理(EncCtr)及び 3n+1 回の排他的論理和演算処理が行われている。よって、非特許文献2の暗号文生成処理は、非特許文献1の暗号文生成処理と比較して、暗号化処理が少なくなり、排他的論理和演算処理が多くなっている。ここで一般に、暗号化処理は排他的論理和演算処理よりも計算量が多い。そのため、非特許文献2の暗号文生成処理は、非特許文献1の暗号文生成処理よりも計算量が少なくなっている。
 ただし、非特許文献2の手法では、以下に示す理由から、生成される暗号文の安全性が、非特許文献1の手法で生成される暗号文の安全性よりも低い。図7に示す非特許文献1の復号処理では、暗号ブロック [1],...,y[n+1] のいずれか1つでも足りないと、図7(1)の処理で k' が計算できない。そのため、図7(3)の処理で平文ブロック x[1],...,x[n] のいずれもが計算できない。よって、非特許文献1の手法では、暗号文生成処理で出力される全てのブロックが揃わなければ平文ブロックのいずれもが復号できない。
 一方、図9に示す非特許文献2の復号処理では、n+1 個の暗号ブロックの内、n ブロックが取得されてしまうと、平文の一部を復号できてしまう。これは、n ブロックの暗号文から y'[n+1] を復号できてしまうことに起因する。非特許文献2の手法では、AONEenc() の処理を非決定的にしている情報は、鍵 k 及び y'[n+1] である。そのため、鍵 k が手に入る状況では、y'[n+1] のみが AONEenc() の処理を非決定的にする情報となる。そのため、y'[n+1] を復元できると、AONEenc() の処理の非決定性が損なわれてしまう。
 例えば、n ブロックの暗号文を取得し、それらを用いて y'[n+1] を復元した悪意ある第三者は、この y'[n+1]、及び適当に生成した n ブロックの平文ブロック列 w[1],...,w[n] を用いて AONEenc() の処理を実行する。そして、この悪意ある第三者は、生成された暗号文と取得した暗号文とを比較する。ここで、もしこれらが異なれば、「平文は w[1],...,w[n] ではない」ということが分かってしまう。このように平文の内容を推測できてしまうことは、暗号文の安全性が低いことを意味する。
 本実施形態の暗号化装置2000によれば、暗号化処理に用いる暗号鍵として、第1暗号鍵と第2暗号鍵との排他的論理和として算出した第3暗号鍵が用いられる。よって、第1暗号鍵及び第2暗号鍵のいずれかが秘匿されていれば、平文の一部であっても復号することができない。また、暗号化処理の回数は非特許文献2の暗号文生成処理と同様に n 回であり、非特許文献1の手法よりも計算量が少ない。
 よって、本実施形態の暗号化装置2000によれば、ブロック暗号の安全性を向上させつつ、少ない計算量で暗号文を生成できる。
[実施形態2]
 図10は、実施形態2に係る復号装置3000を例示するブロック図である。図10において、矢印は情報の流れを表している。さらに、図10において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
 復号装置3000は、暗号ブロック列を復号して平文ブロック列を生成する。復号装置3000が処理対象とする暗号ブロック列は、暗号化装置2000によって生成された暗号ブロック列である。そのために、復号装置3000は、取得部3020、第2復号鍵生成部3040、第3復号鍵生成部3060、及びカウンタモード復号部3080を有する。
 取得部3020は、対象ブロック列及び第1復号鍵を取得する。対象ブロック列は、前述した鍵ブロック及び暗号ブロック列を有する。暗号ブロック列は、複数の暗号ブロックを有する。第2復号鍵生成部3040は、第2復号鍵を生成する。第2復号鍵は、暗号ブロック列に含まれる各暗号ブロックの排他的論理和として生成される。第3復号鍵生成部3060は、第3復号鍵を生成する。第3復号鍵は、第1復号鍵及び第2復号鍵の排他的論理和として生成される。カウンタモード復号部3080は、暗号ブロックを復号して平文ブロック列を生成する。なお、カウンタモード復号部3080は、ブロック暗号の利用モードとして、カウンタモードを利用する。また、カウンタモード復号部3080は、第3復号鍵を復号鍵として利用する。
 図11は、復号装置3000によって実行される処理を数式等を用いて例示した図である。以下、図11を適宜参照しながら、それぞれの機能構成部の機能について説明する。ただし、図11に示す処理はあくまで例示であり、復号装置3000によって実行される処理は図11に示す処理に限定されない。また、図11の例では、第1復号鍵の鍵長 L が、暗号ブロックのブロック長よりも長い場合を想定している。しかし、第1復号鍵の鍵長 L は、暗号ブロックのブロック長以下であってもよい。
<取得部3020の詳細>
 対象ブロック列に含まれる暗号ブロック列は、暗号化装置2000のカウンタモード暗号化部2080によって生成された暗号ブロック列である。また、対象ブロック列に含まれる鍵ブロックは、暗号化装置2000の鍵ブロック生成部2100によって生成された鍵ブロックである。つまり、対象ブロックは、出力部2120によって出力された出力ブロックに相当する。取得部3020が行う処理は、例えば図11の(1)で表される。
 例えば取得部3020は、暗号化装置2000によって記憶装置に記憶された暗号ブロック列及び鍵ブロックを取得する。また例えば、暗号化装置2000によって送信される暗号ブロック列及び鍵ブロックを受信することで、対象ブロック列を取得する。また例えば、取得部3020は、手動で入力される暗号ブロック列及び鍵ブロックを取得してもよい。
 また、取得部3020が取得する第1復号鍵は、暗号化装置2000が暗号ブロック列を生成する際に用いた第1暗号鍵と同じ値である。取得部3020は、暗号化装置2000から第1復号鍵を取得してもよいし、手動で入力される第1復号鍵を取得してもよいし、復号装置3000の内部又は外部の記憶装置に記憶されている第1復号鍵を取得してもよい。
<第2復号鍵生成部3040>
 第2復号鍵生成部3040は、暗号ブロック列の各ブロック列及び鍵ブロックとの排他的論理和を算出し、その算出結果を用いて第2復号鍵を生成する。例えば第2復号鍵生成部3040の処理は、図11の(2)で表される。図11の(2)において、第2復号鍵生成部3040は、対象ブロック列 {y[1],...,y[n+1]} の各ブロックの排他的論理和を算出し、その算出結果を第2復号鍵 kd2 とする。
 ここで、対象ブロック列に鍵ブロックが複数含まれる場合がある。この場合、第2復号鍵生成部3040は、各鍵ブロックから部分鍵を生成し、その部分鍵を結合することで第2復号鍵を生成する。図12は、複数の鍵ブロックから第2復号鍵を生成する処理を概念的に例示する図である。図12において、対象ブロックには、第1の鍵ブロック y[n+1] 及び第2の鍵ブロック y[n+2] が含まれる。
 第2復号鍵生成部3040は、暗号ブロック列の一部である {y[1],...,y[n/2]} の各ブロックと第1の鍵ブロック y[n+1] との排他的論理和を算出することで、第1の部分鍵を生成する。次に、第2復号鍵生成部3040は、暗号ブロック列の一部である {y[(n/2)+1],...,y[n]} の各ブロックと第2の鍵ブロック y[n+2] との排他的論理和を算出することで、第2の部分鍵を生成する。そして、第2復号鍵生成部3040は、第1の部分鍵と第2の部分鍵を結合することで、第2復号鍵を生成する。
 なお、第2復号鍵生成部3040は、「暗号ブロック列に含まれる各ブロックの内、どのブロックをどの部分鍵との排他的論理和演算に用いるか」を把握する必要がある。例えば第2復号鍵生成部3040は、m 個の部分鍵を取得した場合、暗号ブロック列を m 等分して複数のブロック列に分け、各ブロック列をいずれか1つの部分鍵との排他的論理和演算に用いるように構成されている。また、第2復号鍵生成部3040は、「暗号ブロック列に含まれる各ブロックの内、どのブロックをどの部分鍵との排他的論理和演算に用いるか」を示す情報を、鍵ブロックと共に取得してもよい。第2復号鍵生成部3040は、暗号化装置2000から出力されるこの情報を取得してもよいし、手動で入力されるこの情報を取得してもよいし、復号装置3000の内部又は外部の記憶装置に記憶されているこの情報を取得してもよい。
<第3復号鍵生成部3060>
 第3復号鍵生成部3060は、第2復号鍵の一部又は全部と第1復号鍵との排他的論理和を算出し、その算出結果を第3復号鍵とする。第2復号鍵のビット長が第1復号鍵のビット長より長い場合、第3復号鍵生成部3060は、第2復号鍵の一部と第1復号鍵との排他的論理和を算出し、第3復号鍵とする。この場合における第3復号鍵生成部3060の処理は、例えば図11の(3)及び(4)で表される。図11において、第1復号鍵のビット長は L である。そこで、図11の(3)において、第3復号鍵生成部3060は、第2復号鍵の下位 L ビットである部分鍵 k を生成している。そして、図11の(4)において、第3復号鍵生成部3060は、第1復号鍵 kd1 と部分鍵 k との排他的論理和を算出し、その算出結果を第3復号鍵 kd3 としている。
 一方、第2復号鍵のビット長が第1復号鍵のビット長以下である場合、第3復号鍵生成部3060は、第2復号鍵の全部と第1復号鍵との排他的論理和を第3復号鍵とする。この場合、図11の(3)の処理は不要となる。
<カウンタモード復号部3080>
 カウンタモード復号部3080は、ブロック暗号の暗号化利用モードの一つであるカウンタモードを利用して暗号ブロック列を復号し、平文ブロックを生成する。カウンタモード復号部3080は、前述の第3復号鍵を復号鍵として用いる。また、カウンタモード復号部3080は、復号対象の暗号ブロック列として、取得部3020によって取得された暗号ブロック列を用いる。さらに、カウンタモード復号部3080は、カウンタモード暗号化部2080が暗号ブロック列の生成に利用したカウンタの初期値と同じ値を、復号処理におけるカウンタの初期値として用いる。カウンタモード復号部3080は、暗号化装置2000からカウンタの初期値を取得してもよいし、手動で入力されるカウンタの初期値を取得してもよいし、復号装置3000の内部又は外部に記憶されているカウンタの初期値を取得してもよい。またカウンタの初期値は、カウンタモード復号部3080に予め設定されていてもよい。
 なお、入力された復号鍵、カウンタの初期値、及び暗号ブロック列を用い、カウンタモードのブロック暗号で復号処理を行う方法自体は、既存の技術である。そのため、この方法についての詳細な説明は省略する。
 カウンタモード復号部3080が行う処理は、例えば図11の(5)で表される。ここで、DecCtr(kd3; i; y[1], ... , y[n]) は、「復号鍵 kd3、カウンタの初期値 i、暗号ブロック列 {y[1]、...、y[n]} を入力とし、カウンタモードのブロック暗号で復号処理を行う関数」を表している。図11の(5)では、平文ブロック列として、x[1],...,x[n] が生成される。
<出力部3100>
 復号装置3000は、出力部3100をさらに有していてもよい(図示せず)。出力部3100は、カウンタモード復号部3080によって復号された平文ブロックを出力する(例えば図11の(6))。
<処理の流れ>
 図13は、実施形態2の復号装置3000によって実行される処理の流れを例示するフローチャートである。取得部3020は、対象ブロック列及び第1復号鍵を取得する(S202)。第2復号鍵生成部3040は、第2復号鍵を生成する(S204)。第3復号鍵生成部3060は、第3復号鍵を生成する(S206)。カウンタモード復号部3080は、暗号ブロック列をカウンタモードのブロック暗号で復号し、平文ブロック列を生成する(S208)。
<ハードウエア構成例>
 復号装置3000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、各機能構成部をハードウエアとソフトウエアとの組み合わせで実現する場合について、その構成を具体的に例示する。
 復号装置3000は、PC(Personal Computer)、携帯端末、又はサーバマシンなどの種々の計算機として実装される。ここで復号装置3000は、復号装置3000を実装するための専用の計算機に実装されてもよいし、その他のアプリケーション等も含まれている汎用の計算機に実装されてもよい。
 図14は、復号装置3000のハードウエア構成を例示するブロック図である。復号装置3000は、バス4020、プロセッサ4040、メモリ4060、ストレージ4080、及び入出力インタフェース4100を有する。ここで、バス4020、プロセッサ4040、メモリ4060、ストレージ4080、及び入出力インタフェース4100はそれぞれ、図5の暗号化装置2000におけるバス1020、プロセッサ1040、メモリ1060、ストレージ1080、及び入出力インタフェース1100と同様の機能を有する。
 ストレージ4080は、復号装置3000の機能を実現するためのプログラムを記憶している。具体的には、取得部3020、第2復号鍵生成部3040、第3復号鍵生成部3060、及びカウンタモード復号部3080の機能をそれぞれ実現するプログラムモジュールを記憶している。プロセッサ4040は、これら各プログラムモジュールを実行することで、取得部3020、第2復号鍵生成部3040、第3復号鍵生成部3060、及びカウンタモード復号部3080の機能をそれぞれ実現する。ここでプロセッサ4040は、上記各モジュールを実行する際、これらのモジュールをメモリ4060上に読み出してから実行してもよいし、メモリ4060上に読み出さずに実行してもよい。
 復号装置3000のハードウエア構成は図14に示した構成に限定されない。例えば、各プログラムモジュールはメモリ4060に格納されてもよい。この場合、復号装置3000は、ストレージ4080を備えていなくてもよい。
<作用・効果>
 本実施形態の復号装置3000によれば、実施形態1の暗号化装置2000によって生成された暗号ブロック列を復号し、平文ブロック列を得ることができる。
[実施形態3]
 図15は、実施形態3の暗号処理システム5000を例示するブロック図である。暗号処理システム5000は、実施形態1の暗号化装置2000及び実施形態2の復号装置3000を有する。暗号化装置2000の構成は例えば図1で表される。また、復号装置3000の構成は、例えば図10で表される。そのため図15において、暗号化装置2000と復号装置3000が有する各機能構成部は省略されている。
 復号装置3000は、実施形態2で説明したいずれかの方法で、暗号化装置2000によって生成された暗号ブロック列及び鍵ブロックから成る対象ブロック列を取得する。本実施形態の暗号処理システム5000によれば、安全性が高く、かつ計算量が少ない方法で暗号化及び復号が行える。
 以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記各実施形態の組み合わせ、及び上記実施形態以外の様々な構成を採用することもできる。
 以下、参考形態の例を付記する。
1. 複数の平文ブロックで構成される平文ブロック列、及び第1暗号鍵を取得する取得手段と、
 第2暗号鍵を生成する第2暗号鍵生成手段と、
 前記第1暗号鍵と、前記第2暗号鍵の一部又は全部との排他的論理和として、第3暗号鍵を算出する第3暗号鍵生成手段と、
 前記第3暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化手段と、
 前記第2暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成手段と、
 を有する暗号化装置。
2. 前記第2暗号鍵のサイズが前記平文ブロックのサイズより大きい場合、前記鍵ブロック生成手段は、前記第2暗号鍵を n 分割 (n >= 2) した各部分と、前記暗号ブロック列を n 分割した各部分ブロックとの排他的論理和をそれぞれ算出することで、n 個の鍵ブロックを生成する、1.に記載の暗号化装置。
3. 前記暗号ブロック列及び前記鍵ブロックを有するブロック列を出力するブロック列出力手段を有する1.又は2.に記載の暗号化装置。
4. 鍵ブロック、複数の暗号ブロックを有する暗号ブロック列、及び第1復号鍵を取得する取得手段と、
 前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第2復号鍵を生成する第2復号鍵生成手段と、
 前記第1復号鍵と、前記第2復号鍵の一部又は全部との排他的論理和として、第3復号鍵を算出する第3復号鍵生成手段と、
 前記第3復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号手段と、
 を有する復号装置。
5. 前記取得手段は、複数の鍵ブロックを取得し、
 前記第2復号鍵生成手段は、各前記鍵ブロックと、前記暗号ブロック列を n (n > 0) 分割した各部分ブロックとの排他的論理和をそれぞれ算出し、算出した複数の値を結合することで前記第2復号鍵を生成する4.に記載の復号装置。
6. 1.乃至3.いずれか一つに記載の暗号化装置と、4.又は5.に記載の復号装置とを有する暗号処理システム。
7. コンピュータによって実行される暗号化方法であって、
 複数の平文ブロックで構成される平文ブロック列、及び第1暗号鍵を取得する取得ステップと、
 第2暗号鍵を生成する第2暗号鍵生成ステップと、
 前記第1暗号鍵と、前記第2暗号鍵の一部又は全部との排他的論理和として、第3暗号鍵を算出する第3暗号鍵生成ステップと、
 前記第3暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化ステップと、
 前記第2暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成ステップと、
 を有する暗号化方法。
8. 前記第2暗号鍵のサイズが前記平文ブロックのサイズより大きい場合、前記鍵ブロック生成ステップは、前記第2暗号鍵を n 分割 (n >= 2) した各部分と、前記暗号ブロック列を n 分割した各部分ブロックとの排他的論理和をそれぞれ算出することで、n 個の鍵ブロックを生成する、7.に記載の暗号化方法。
9. 前記暗号ブロック列及び前記鍵ブロックを有するブロック列を出力するブロック列出力ステップを有する7.又は8.に記載の暗号化方法。
10. コンピュータによって実行される復号方法であって、
 鍵ブロック、複数の暗号ブロックを有する暗号ブロック列、及び第1復号鍵を取得する取得ステップと、
 前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第2復号鍵を生成する第2復号鍵生成ステップと、
 前記第1復号鍵と、前記第2復号鍵の一部又は全部との排他的論理和として、第3復号鍵を算出する第3復号鍵生成ステップと、
 前記第3復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号ステップと、
 を有する復号方法。
11. 前記取得ステップは、複数の鍵ブロックを取得し、
 前記第2復号鍵生成ステップは、各前記鍵ブロックと、前記暗号ブロック列を n (n > 0) 分割した各部分ブロックとの排他的論理和をそれぞれ算出し、算出した複数の値を結合することで前記第2復号鍵を生成する10.に記載の復号方法。
12. コンピュータに、1.乃至3.いずれか一つに記載の暗号化装置として動作する機能を持たせる暗号化プログラム。
13. コンピュータに、4.又は5.に記載の復号装置として動作する機能を持たせる復号プログラム。
 この出願は、2014年12月4日に出願された日本出願特願2014-245932号を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (10)

  1.  複数の平文ブロックで構成される平文ブロック列、及び第1暗号鍵を取得する取得手段と、
     第2暗号鍵を生成する第2暗号鍵生成手段と、
     前記第1暗号鍵と、前記第2暗号鍵の一部又は全部との排他的論理和として、第3暗号鍵を算出する第3暗号鍵生成手段と、
     前記第3暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化手段と、
     前記第2暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成手段と、
     を有する暗号化装置。
  2.  前記第2暗号鍵のサイズが前記平文ブロックのサイズより大きい場合、前記鍵ブロック生成手段は、前記第2暗号鍵を n 分割 (n >= 2) した各部分と、前記暗号ブロック列を n 分割した各部分ブロックとの排他的論理和をそれぞれ算出することで、n 個の鍵ブロックを生成する、請求項1に記載の暗号化装置。
  3.  前記暗号ブロック列及び前記鍵ブロックを有するブロック列を出力するブロック列出力手段を有する請求項1又は2に記載の暗号化装置。
  4.  鍵ブロック、複数の暗号ブロックを有する暗号ブロック列、及び第1復号鍵を取得する取得手段と、
     前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第2復号鍵を生成する第2復号鍵生成手段と、
     前記第1復号鍵と、前記第2復号鍵の一部又は全部との排他的論理和として、第3復号鍵を算出する第3復号鍵生成手段と、
     前記第3復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号手段と、
     を有する復号装置。
  5.  前記取得手段は、複数の鍵ブロックを取得し、
     前記第2復号鍵生成手段は、各前記鍵ブロックと、前記暗号ブロック列を n (n > 0) 分割した各部分ブロックとの排他的論理和をそれぞれ算出し、算出した複数の値を結合することで前記第2復号鍵を生成する請求項4に記載の復号装置。
  6.  請求項1乃至3いずれか一項に記載の暗号化装置と、請求項4又は5に記載の復号装置とを有する暗号処理システム。
  7.  コンピュータによって実行される暗号化方法であって、
     複数の平文ブロックで構成される平文ブロック列、及び第1暗号鍵を取得する取得ステップと、
     第2暗号鍵を生成する第2暗号鍵生成ステップと、
     前記第1暗号鍵と、前記第2暗号鍵の一部又は全部との排他的論理和として、第3暗号鍵を算出する第3暗号鍵生成ステップと、
     前記第3暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化ステップと、
     前記第2暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成ステップと、
     を有する暗号化方法。
  8.  コンピュータによって実行される復号方法であって、
     鍵ブロック、複数の暗号ブロックを有する暗号ブロック列、及び第1復号鍵を取得する取得ステップと、
     前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第2復号鍵を生成する第2復号鍵生成ステップと、
     前記第1復号鍵と、前記第2復号鍵の一部又は全部との排他的論理和として、第3復号鍵を算出する第3復号鍵生成ステップと、
     前記第3復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号ステップと、
     を有する復号方法。
  9.  コンピュータに、請求項1乃至3いずれか一項に記載の暗号化装置として動作する機能を持たせる暗号化プログラム。
  10.  コンピュータに、請求項4又は5に記載の復号装置として動作する機能を持たせる復号プログラム。
PCT/JP2015/078908 2014-12-04 2015-10-13 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム WO2016088453A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016562335A JP6575532B2 (ja) 2014-12-04 2015-10-13 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
US15/532,147 US10305689B2 (en) 2014-12-04 2015-10-13 Encryption apparatus, decryption apparatus, cryptography processing system, encryption method, decryption method, encryption program, and decryption program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-245932 2014-12-04
JP2014245932 2014-12-04

Publications (1)

Publication Number Publication Date
WO2016088453A1 true WO2016088453A1 (ja) 2016-06-09

Family

ID=56091409

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/078908 WO2016088453A1 (ja) 2014-12-04 2015-10-13 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム

Country Status (3)

Country Link
US (1) US10305689B2 (ja)
JP (1) JP6575532B2 (ja)
WO (1) WO2016088453A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125740A (zh) * 2019-12-27 2020-05-08 湖南鼎一致远科技发展有限公司 热转打印机、上位机、耗材加密***及方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111314053B (zh) * 2018-12-12 2023-02-10 上海领甲数据科技有限公司 一种数据加密和解密方法
US11558362B2 (en) 2020-06-02 2023-01-17 Bank Of America Corporation Secure communication for remote devices
US11271919B2 (en) 2020-06-02 2022-03-08 Bank Of America Corporation Network security system for rogue devices
US11343097B2 (en) 2020-06-02 2022-05-24 Bank Of America Corporation Dynamic segmentation of network traffic by use of pre-shared keys
EP3923512A1 (en) 2020-06-08 2021-12-15 Barclays Execution Services Limited Method for processing encrypted data
US11265255B1 (en) 2020-08-11 2022-03-01 Bank Of America Corporation Secure communication routing for remote devices
EP3996321A1 (en) 2020-11-06 2022-05-11 Barclays Execution Services Limited Method for processing encrypted data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870470A (en) * 1996-02-20 1999-02-09 International Business Machines Corporation Method and apparatus for encrypting long blocks using a short-block encryption procedure
JP2006311383A (ja) * 2005-04-28 2006-11-09 Trusted Solutions Kk データ管理方法、データ管理システムおよびデータ管理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007050B2 (en) * 2001-05-17 2006-02-28 Nokia Corporation Method and apparatus for improved pseudo-random number generation
US7349537B2 (en) * 2004-03-11 2008-03-25 Teknovus, Inc. Method for data encryption in an ethernet passive optical network
JP4490192B2 (ja) * 2004-07-02 2010-06-23 株式会社エヌ・ティ・ティ・ドコモ マルチタスク実行システム
US7418100B2 (en) * 2004-10-20 2008-08-26 Cisco Technology, Inc. Enciphering method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870470A (en) * 1996-02-20 1999-02-09 International Business Machines Corporation Method and apparatus for encrypting long blocks using a short-block encryption procedure
JP2006311383A (ja) * 2005-04-28 2006-11-09 Trusted Solutions Kk データ管理方法、データ管理システムおよびデータ管理装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BELLARE, M. ET AL.: "The Security of Chaffing and Winnowing", LECTURE NOTES IN COMPUTER SCIENCE, vol. 1976, 2000, pages 517 - 530 *
DESAI, A.: "The Security of All-or-Nothing Encryption: Protecting against Exhaustive Key Search", LECTURE NOTES IN COMPUTER SCIENCE, vol. 1880, 2000, pages 359 - 375, XP001003410 *
HIDENORI KUWAKADO ET AL.: "Strongly Non-Separable Encryption Mode for Throwing a Media Away", IEICE TECHNICAL REPORT, vol. 103, no. 417, 7 November 2003 (2003-11-07), pages 15 - 18, XP008173708 *
KARAME, G. O. ET AL.: "Securing Cloud Data in the New Attacker Model", CRYPTOLOGY EPRINT ARCHIVE, REPORT 2014/556, July 2014 (2014-07-01), Retrieved from the Internet <URL:http://eprint.iacr.org/2014/556> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125740A (zh) * 2019-12-27 2020-05-08 湖南鼎一致远科技发展有限公司 热转打印机、上位机、耗材加密***及方法
CN111125740B (zh) * 2019-12-27 2023-09-19 湖南鼎一致远科技发展有限公司 热转打印机、上位机、耗材加密***及方法

Also Published As

Publication number Publication date
JPWO2016088453A1 (ja) 2017-09-14
US20170272243A1 (en) 2017-09-21
JP6575532B2 (ja) 2019-09-18
US10305689B2 (en) 2019-05-28

Similar Documents

Publication Publication Date Title
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
US8121294B2 (en) System and method for a derivation function for key per page
JP6035459B2 (ja) 暗号化装置、復号化装置、及びプログラム
JP5855696B2 (ja) 完全性検証を含むブロック暗号化方法およびブロック復号化方法
KR102019159B1 (ko) 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법
US11153068B2 (en) Encryption device, encryption method, decryption device and decryption method
JPWO2019130528A1 (ja) 変換鍵生成装置、暗号文変換装置、秘匿情報処理システム、変換鍵生成方法、変換鍵生成プログラム、暗号文変換方法及び暗号文変換プログラム
JP2016114855A (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
CN103607278A (zh) 一种安全的数据云存储方法
CN113098675B (zh) 基于多项式完全同态的二进制数据加密***及方法
Sharma et al. Analysis of AES Encryption with ECC
WO2014030706A1 (ja) 暗号化データベースシステム、クライアント装置およびサーバ、暗号化データ加算方法およびプログラム
Ahmad et al. Distributed text-to-image encryption algorithm
JP6194136B2 (ja) 疑似乱数生成装置及び疑似乱数生成プログラム
JP6203387B2 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
JP6631989B2 (ja) 暗号化装置、制御方法、及びプログラム
Arora et al. Performance analysis of cryptography algorithms
CN112640359B (zh) 消息认证装置、消息认证方法及计算机可读取的存储介质
TW201528754A (zh) 時間擾動混沌映射加密解密系統與方法
Charru et al. Improved Cryptography Algorithm to Enhanced Data Security
WO2018011825A1 (en) Encryption and decryption of messages
Kumari et al. A Novel Hybrid Security Algorithm
Samalkha Efficient Implementation of AES
JP5818768B2 (ja) マスク生成装置、情報処理装置、及びその方法、プログラム
Mandal et al. Securing Message using Recursive Modulo-2 and Key Rotation Operation (RMRO)

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: 15866025

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016562335

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15532147

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15866025

Country of ref document: EP

Kind code of ref document: A1