WO2022215249A1 - 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム - Google Patents

暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム Download PDF

Info

Publication number
WO2022215249A1
WO2022215249A1 PCT/JP2021/015013 JP2021015013W WO2022215249A1 WO 2022215249 A1 WO2022215249 A1 WO 2022215249A1 JP 2021015013 W JP2021015013 W JP 2021015013W WO 2022215249 A1 WO2022215249 A1 WO 2022215249A1
Authority
WO
WIPO (PCT)
Prior art keywords
value
bit
generate
plaintext
generated
Prior art date
Application number
PCT/JP2021/015013
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 CN202180096330.3A priority Critical patent/CN117083834A/zh
Priority to JP2023512624A priority patent/JP7317261B2/ja
Priority to PCT/JP2021/015013 priority patent/WO2022215249A1/ja
Priority to DE112021007029.0T priority patent/DE112021007029T5/de
Publication of WO2022215249A1 publication Critical patent/WO2022215249A1/ja
Priority to US18/231,626 priority patent/US20230388103A1/en

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]
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key

Definitions

  • This disclosure relates to authenticated encryption using block ciphers.
  • the authenticated cryptographic algorithm is a cryptographic algorithm that has both a confidentiality function and a falsification detection function at the same time. Using an authenticated cryptographic algorithm allows two parties to communicate with each other while keeping the plaintext confidential, and allows the receiver to check whether or not the message transmitted over the communication channel has been tampered with.
  • the authenticated encryption algorithm comprises two algorithms, an encryption function Enc and a decryption function Dec.
  • the encryption function Enc is a function that receives the private key K, the nonce N, the public data A, and the plaintext M, and outputs the ciphertext C and the authenticator Tag for falsification detection. A different value is used for the nonce N for each encryption, and the same value is not used unless the secret key K is changed.
  • the decryption function Dec receives a private key K, a nonce N, public data A, a ciphertext C, and an authenticator Tag for tampering detection, and outputs a plaintext M if the input value has not been tampered with. , if it has been tampered with, outputs a value indicating that it is forged. Henceforth, the value indicating the forgery is written as reject.
  • sender Alice and the receiver Bob communicate using an authenticated encryption algorithm.
  • Alice and Bob share a secret key K in advance.
  • Sender Alice inputs private key K, nonce N, public data A, and plaintext M, and calculates encryption function Enc to generate ciphertext C and authenticator Tag for falsification detection. do.
  • the sender Alice sends the nonce N, the public data A, the ciphertext C, and the authenticator Tag for falsification detection to the recipient Bob.
  • Recipient Bob receives private key K, nonce N, public data A, ciphertext C, and authenticator Tag for tampering detection as inputs, and calculates decryption function Dec, so that tampering has not been detected. If it is not tampered with, the plaintext M is generated.
  • the public data A is a value that may be made public.
  • the sender Alice sets the nonce N to a different value for each encryption and does not use the same value.
  • the security of an authenticated cryptographic algorithm includes confidentiality and integrity. Definitions of confidentiality and integrity are given in Non-Patent Document 1. Confidentiality is security that defines that plaintext cannot be leaked from ciphertext. In the security game of secrecy, the attacker accesses either the encryption function Enc of the authenticated encryption algorithm or the oracle that outputs the random number, and identifies which one. The probability of identification by an attacker is called identification probability. The lower the identification probability, the higher the security of confidentiality. Integrity is security defined as the inability of public data or ciphertext to be tampered with.
  • an attacker accesses an encryption function Enc and a decryption function Dec of an authenticated encryption algorithm, inputs forged public data, a ciphertext, and an authenticator to the decryption function Dec, and performs a falsification check. Aim to pass.
  • the probability of passing the tamper check is called the forgery probability. The lower the forgery probability, the higher the integrity security.
  • a block cipher consists of an encryption function E and a decryption function D.
  • the encryption function E is a function that receives a k-bit key K and an n-bit plaintext block M as inputs and outputs an n-bit ciphertext block C.
  • C E(K,M).
  • a size n of the plaintext block M and the ciphertext block C is called a block size.
  • the block cipher encryption function E and decryption function D become n-bit permutation functions when the key K is fixed.
  • Specific block ciphers include AES (Advanced Encryption Standard) described in Non-Patent Document 2 and GIFT described in Non-Patent Document 3.
  • AES Advanced Encryption Standard
  • n is 128 and k is 128, 192 or 256.
  • GIFT described in Non-Patent Document 3 has n of 64 or 128 and k of 128.
  • the identification probability for confidentiality is derived using the number of calls q of the block cipher with the encryption function Enc of the authentication cipher and the computational complexity p of the attacker. Assume that the computational complexity p of the attacker is 1, which is the computational complexity of one block cipher. That is, the attacker has the ability to compute the block cipher p times.
  • the forgery probability for integrity is derived using the sum Q of the number of times the block cipher is called with the encryption function Enc of the authentication cipher and the number of times the block cipher is called with the decryption function Dec, and the computational complexity p of the attacker. be done.
  • the safety level includes an online calculation safety level and an offline calculation safety level.
  • the security level of online calculation is the minimum value of log 2 q' and log 2 Q', where q' is the value of q at which the identification probability is 1, and Q' is the value of Q at which the forgery probability is 1.
  • the unit of security level for online computation is bits.
  • the safety level of offline calculation is the minimum value of log 2 p 1 and log 2 p 2 , where p 1 is the value of p at which the identification probability is 1, and p 2 is the value of p at which the forgery probability is 1. is.
  • the unit of safety level for offline computation is bits.
  • the optimum security level for online calculation is n bits
  • the optimum security level for offline calculation is n bits.
  • the minimum required memory size is 2n bits.
  • the memory size is the size of the area required to store the values updated inside the algorithm. Minimizing the memory size leads to miniaturization of the required memory (RAM (Random Access Memory)) size in the case of software, and leads to miniaturization of the hardware size in the case of hardware.
  • RAM Random Access Memory
  • Patent Document 1 describes an authenticated encryption algorithm that uses a block cipher.
  • Non-Patent Document 4 describes an authentication encryption algorithm Remus-N2 using a block cipher.
  • the minimum memory size required for the authentication encryption algorithm described in Patent Document 1 is 2n bits.
  • the safety level of offline computation is n-bit, which is optimal.
  • the security level of online computation is n/2 bits, which is not optimal.
  • the security level of the authenticated cryptographic algorithm described in Non-Patent Document 4 is optimal for both the online calculation security level and the offline calculation security level of n bits.
  • the memory size is 3n bits, which is n bits more than the authenticated encryption algorithm described in Patent Document 1, and is not the minimum.
  • the present disclosure aims to make it possible to implement authenticated encryption using a block cipher in which both the security level of online calculation and the security level of offline calculation are optimal n bits, and the memory size is the minimum 2n bits. aim.
  • a ciphertext generator that combines values C[i] for , m to generate a ciphertext C; an authenticator generating unit for generating an authenticator Tag for detecting falsification of the ciphertext C from the value H[m] and the value B[m];
  • a permutation function P and a permutation function F are used to update a value T and a value B to generate a cryptographic element. This results in an internally updated memory size of 2n bits. As a result, it is possible to implement an authenticated encryption algorithm using a block cipher with an optimal n-bit security level for both online and offline computation and a minimum memory size of 2n bits.
  • FIG. 1 is a configuration diagram of an encryption device 10 according to Embodiment 1.
  • FIG. FIG. 2 is a configuration diagram of a decoding device 30 according to Embodiment 1;
  • FIG. FIG. 2 is an explanatory diagram of a notation method of an encryption function E of a block cipher according to Embodiment 1;
  • FIG. FIG. 4 is an explanatory diagram of basic processing used in the authentication encryption algorithm according to the first embodiment; 4 is a flowchart of division processing according to the first embodiment; 4 is a flowchart of initial value generation processing according to the first embodiment; 4 is an explanatory diagram of initial value generation processing according to the first embodiment;
  • FIG. 4 is a flowchart of public data processing according to the first embodiment;
  • FIG. 1 is a configuration diagram of an encryption device 10 according to Embodiment 1.
  • FIG. FIG. 2 is a configuration diagram of a decoding device 30 according to Embodiment 1;
  • FIG. FIG. 2 is an explanatory diagram of a notation
  • FIG. 4 is an explanatory diagram of public data processing according to the first embodiment; 4 is a flowchart of ciphertext generation processing according to the first embodiment; FIG. 4 is an explanatory diagram of ciphertext generation processing according to the first embodiment; 4 is a flowchart of authenticator generation processing according to the first embodiment; FIG. 4 is an explanatory diagram of authentication code generation processing according to the first embodiment; 4 is a flowchart of division processing according to the first embodiment; 4 is a flowchart of plaintext generation processing according to the first embodiment; 4 is an explanatory diagram of plaintext generation processing according to the first embodiment; FIG.
  • FIG. 4 is a flowchart of falsification detection processing according to the first embodiment; 4A and 4B are explanatory diagrams of falsification detection processing according to the first embodiment;
  • FIG. FIG. 2 is a configuration diagram of an encryption device 10 according to Modification 1;
  • FIG. 3 is a configuration diagram of a decoding device 30 according to Modification 1;
  • FIG. 11 is another configuration diagram of the encryption device 10 according to Modification 1;
  • FIG. 8 is another configuration diagram of the decoding device 30 according to Modification 1;
  • the encryption device 10 is a computer.
  • the encryption device 10 includes hardware including a processor 11 , a memory 12 , a storage 13 and an input/output interface 14 .
  • the processor 11 is connected to other hardware via signal lines and controls these other hardware.
  • the encryption device 10 includes, as functional components, a division unit 21, an initial value generation unit 22, a public data processing unit 23, a cryptographic element generation unit 24, a ciphertext generation unit 25, and an authenticator generation unit 26. Prepare.
  • the function of each functional component of the encryption device 10 is implemented by software.
  • the storage 13 stores a program that implements the function of each functional component of the encryption device 10 . This program is read into the memory 12 by the processor 11 and executed by the processor 11 . Thereby, the function of each functional component of the encryption device 10 is realized.
  • the decoding device 30 is a computer.
  • the decoding device 30 includes hardware including a processor 31 , a memory 32 , a storage 33 and an input/output interface 34 .
  • the processor 31 is connected to other hardware via signal lines and controls these other hardware.
  • the decryption device 30 includes, as functional components, a division unit 41, an initial value generation unit 42, a public data processing unit 43, a plaintext element generation unit 44, a plaintext generation unit 45, and an authenticator generation unit 46. .
  • the function of each functional component of the decoding device 30 is implemented by software.
  • the storage 33 stores a program that implements the function of each functional component of the decoding device 30 . This program is read into the memory 32 by the processor 31 and executed by the processor 31 . Thereby, the function of each functional component of the decoding device 30 is realized.
  • the processors 11 and 31 are ICs (Integrated Circuits) that perform processing. Specific examples of the processors 11 and 31 are a CPU (Central Processing Unit), a DSP (Digital Signal Processor), and a GPU (Graphics Processing Unit).
  • CPU Central Processing Unit
  • DSP Digital Signal Processor
  • GPU Graphics Processing Unit
  • the memories 12 and 32 are storage devices that temporarily store data. Specific examples of the memories 12 and 32 are SRAM (Static Random Access Memory) and DRAM (Dynamic Random Access Memory).
  • the storages 13 and 33 are storage devices that store data.
  • the storages 13 and 33 are HDDs (Hard Disk Drives).
  • the storages 13 and 33 are SD (registered trademark, Secure Digital) memory cards, CF (Compact Flash, registered trademark), NAND flash, flexible disks, optical disks, compact disks, Blu-ray (registered trademark) disks, DVD (Digital Versatile Disk) ) may be a portable recording medium.
  • the input/output interfaces 14 and 34 are interfaces for communicating with external devices.
  • the input/output interfaces 14 and 34 are, as specific examples, Ethernet (registered trademark), USB (Universal Serial Bus), and HDMI (registered trademark, High-Definition Multimedia Interface) ports.
  • processor 11 Only one processor 11 is shown in FIG. However, there may be a plurality of processors 11, and the plurality of processors 11 may cooperate to execute programs that implement each function. Similarly, in FIG. 2, only one processor 31 was shown. However, there may be a plurality of processors 31, and the plurality of processors 31 may cooperatively execute programs that implement each function.
  • FIG. 1 The operation procedure of the encryption device 10 according to the first embodiment corresponds to the encryption method according to the first embodiment. Also, a program that realizes the operation of the encryption device 10 according to the first embodiment corresponds to the encryption program according to the first embodiment.
  • the operation procedure of the decoding device 30 according to the first embodiment corresponds to the decoding method according to the first embodiment. Also, a program that realizes the operation of the decoding device 30 according to the first embodiment corresponds to the decoding program according to the first embodiment.
  • An authenticated encryption algorithm is implemented by the encryption device 10 and the decryption device 30 .
  • an authenticated encryption algorithm using a block cipher in which the block size n and the key size k are equal is realized.
  • the encryption device 10 implements the encryption algorithm Enc in the authenticated encryption algorithm.
  • the decryption device 30 implements the decryption algorithm Dec in the authentication encryption algorithm.
  • a set Nset is a set of nonces N
  • bit length of bit string X is written as
  • 0.
  • the function pad[r] is a function that takes as input a value of r bits or less and outputs an r-bit value.
  • the function pad[r] is assumed to be injective for values of r-1 bits or less.
  • It is a function that outputs a value obtained by combining bit strings, and outputs a value Y for a value Y of r bits.
  • the function Init is an injective function that takes as input the value of the set Nset and outputs an n-bit value.
  • const[1], const[2], const[3], and const[4] be different non-zero n-bit values.
  • a block cipher consists of an encryption function E and a decryption function D.
  • Basic processing used in the authenticated encryption algorithm according to the first embodiment will be described with reference to FIG.
  • the following basic processing using permutation functions P, F, and G for inputting n-bit values and outputting n-bit values and block cipher E is used.
  • the basic process takes two n-bit values X and Y as input and outputs two n-bit values Z and W.
  • (basic processing) (1) A value X is encrypted by a block cipher E using a value Y as a key, and converted by a permutation function G to generate a value Z.
  • a value W is generated by exclusive ORing a value P(Y) obtained by converting the value Y using the replacement function P and a value F(Z) obtained by converting the value Z using the replacement function F.
  • a value Z and a value W are output.
  • the encryption device 10 sequentially executes division processing, initial value generation processing, public data processing, ciphertext generation processing, and authenticator generation processing.
  • the dividing unit 21 acquires the private key K, the nonce N, the public data A, and the plaintext M. Specifically, the dividing unit 21 reads the private key K, the nonce N, and the public data A stored in the storage 13 . Further, the dividing unit 21 acquires the plaintext M input from the input device connected via the input/output interface 14 .
  • the secret key K is an n-bit key that is shared with the destination of the ciphertext C in advance.
  • a nonce N is an n-bit value in the set Nset. A different value is used for the nonce N for each encryption, and the same value is not used unless the secret key K is changed.
  • the public data A is a value that may be made public and has an arbitrary bit length.
  • the plaintext M is a value to be encrypted and has an arbitrary bit length.
  • Step S102 The dividing unit 21 divides the public data A into 2n bits in a predetermined order to obtain values A[1], . . . , the value A[a].
  • the dividing unit 21 divides the public data A into 2n bits in order from the beginning to obtain values A[1], . . . , the value A[a]. Therefore, the values A[1], A[2], . . . , the value A[a ⁇ 1] is a value of 2n bits, and the value A[a] is a value of 1 bit or more and 2n bits or less.
  • the public data A has a value A[1], a value A[2], . . . , value A[a] is bit-combined.
  • the dividing unit 21 divides the plaintext M into n-bit units in a predetermined order to obtain values M[1], . . . , the value M[m].
  • the dividing unit 21 divides the plaintext M into n bits in order from the head to obtain values M[1], . . . , the value M[m]. Therefore, values M[1], values M[2], . . . , the value M[m ⁇ 1] is an n-bit value, and the value M[m] is a value of 1 bit or more and n bits or less.
  • the plaintext M has a value M[1], a value M[2], . . . , value M[m] are bit-combined.
  • Step S111 The initial value generator 22 inputs the nonce N to the function Init to generate an n-bit value Init(N).
  • the initial value generator 22 encrypts the value Init(N) with the block cipher E using the secret key K to generate the value E(N).
  • the initial value generator 22 sets the value E(N) to the value Tmp.
  • the permutation function P a permutation function such that the equation (2) has a unique solution for the variable Y is used for different values i and j, an n-bit value S, and the variable Y.
  • the permutation function F a permutation function is used such that Equation 3 has a unique solution with respect to an n-bit value S and a variable Z.
  • Step S113 The initial value generator 22 sets the value id according to the public data A and the plaintext M.
  • FIG. Specifically, when the bit length of the public data A is 0 and the bit length of the plaintext M is 0, the initial value generator 22 sets const[1] to the value id. When the bit length of the public data A is not 0 and the bit length of the plaintext M is 0, the initial value generator 22 sets const[2] to the value id. When the bit length of the public data A is 0 and the bit length of the plaintext M is not 0, the initial value generator 22 sets const[3] to the value id. When the bit length of the public data A is not 0 and the bit length of the plaintext M is not 0, the initial value generator 22 sets const[4] to the value id.
  • Step S115 The initial value generator 22 outputs the value IVt and the value IVb.
  • FIG. 8 Public data processing according to the first embodiment will be described with reference to FIGS. 8 and 9.
  • the replacement function Q is used as the replacement function G in step S126.
  • the replacement function P is the same function as in the initial value generation processing.
  • the replacement function F a replacement function such that Equation 3 has a unique solution for Z with respect to the n-bit value S and the variable Z, similar to the replacement function F used in the initial value generation process is used.
  • Step S121 The public data processing unit 23 acquires the value IVt and the value IVb generated in the initial value generation process.
  • the public data processing unit 23 sets the value IVt to the value T * [0] and sets the value IVb to the value B * [0].
  • Step S122 The public data processing unit 23 determines whether or not the bit length of the public data A is zero. If the bit length of public data A is 0, public data processing unit 23 advances the process to step S131. On the other hand, if the bit length of public data A is not 0, public data processing unit 23 advances the process to step S123.
  • Step S123 The public data processing unit 23 determines whether or not the division number a, which is the number of divisions of the public data A in step S102 of FIG. 5, is one.
  • the public data A is the value A[1], . . . , with the value A[a].
  • the division number a represents this "a" number. If the division number a is 1, the public data processing unit 23 advances the process to step S125. On the other hand, if the division number a is not 1, the public data processing unit 23 advances the process to step S124.
  • Public data processing unit 23 encrypts value B * [i-1] with block cipher E using value T * [i-1] as a key to generate value E(B * [i-1]).
  • the public data processing unit 23 sets n bits at a predetermined position in the value A[i] to the value A[i, t], and sets the value A[i, t] in the value A[i]. Set the n bits other than t] to the value A[i,b].
  • the public data processing unit 23 sets the first n bits of the value A[i] to the value A[i,t] and sets the remaining n bits to the value A[i,b]. (3) The public data processing unit 23 converts the value T * [i ⁇ 1] using the replacement function P to a value P(T * [i ⁇ 1]) and a value E(B * [i ⁇ 1]). An n-bit value T * [i] is generated from the value F(E(B * [i ⁇ 1])) converted by the replacement function F and the value A[i, t].
  • the public data processing unit 23 calculates the exclusive values of the value P(T * [i ⁇ 1]), the value F(E(B * [i ⁇ 1])), and the value A[i, t]. Calculate the disjunction to produce the value T * [i]. (4) The public data processing unit 23 generates an n-bit value B * [i] from the value E(B * [i ⁇ 1]) and the value A[i,b]. Specifically, the public data processing unit 23 calculates the exclusive OR of the value E(B * [i ⁇ 1]) and the value A[i,b] to generate the value B * [i]. do.
  • Step S125 The public data processing unit 23 encrypts the value B * [a-1] with the block cipher E using the value T * [a-1] as a key to generate the value E(B * [a-1]).
  • Step S126 When the bit length of the value A[a] is 2n, the public data processing unit 23 transforms the value E(B * [a ⁇ 1]) into a value Q[1 ](E(B * [a ⁇ 1])) as the value Q(E(B * [a ⁇ 1])). On the other hand, if the bit length of the value A[a] is not 2n, the value E(B * [a ⁇ 1]) is converted by applying the permutation function Q twice to the value Q[2](E(B * [a ⁇ 1])) as the value Q(E(B * [a ⁇ 1])).
  • Step S128) The public data processing unit 23 sets n bits at predetermined positions in the value A'[a] to the value A'[a, t], and sets the value A'[a , t] to the value A'[a,b]. For example, the public data processing unit 23 sets the first n bits of the value A'[a] to the value A'[a,t] and sets the remaining n bits to the value A'[a,b].
  • Step S129 The public data processing unit 23 converts the value T * [a-1] using the replacement function P into a value P(T * [a-1]) and a value Q(E(B * [a-1])).
  • a value T * [a] is generated from the value F(Q(E(B * [a-1]))) transformed by the permutation function F and the value A'[a, t].
  • the public data processing unit 23 calculates a value P(T * [a-1]), a value F(Q(E(B * [a-1]))) and a value A'[a, t]. to produce the value T * [a].
  • the permutation function Q a permutation function that is not an identity map and that has a unique solution for X in Equation 4 is used for an n-bit value S and an n-bit variable X.
  • Step S130 The public data processing unit 23 generates the value B * [a] from the value Q(E(B * [a-1])) and the value A'[a,b]. Specifically, the public data processing unit 23 calculates the exclusive OR of the value Q(E(B * [a ⁇ 1])) and the value A′[a,b] to obtain the value B * [ a].
  • Step S131 The public data processing unit 23 sets the value T * [a] to the value Ht and sets the value B * [a] to the value Hb. Then, the public data processing unit 23 outputs the value Ht and the value Hb. Note that when the bit length of the public data A is 0, the value T * [0] is set to the value Ht, and the value B * [0] is set to the value Hb.
  • Ciphertext generation processing according to the first embodiment will be described with reference to FIGS. 10 and 11.
  • the replacement function G the replacement function R is used.
  • the same replacement function P as in the initial value generation process is used.
  • the replacement function F a replacement function such that Equation 3 has a unique solution for Z with respect to the n-bit value S and the variable Z, similar to the replacement function F used in the initial value generation process is used.
  • Step S141 The cryptographic element generation unit 24 acquires the value Ht and the value Hb generated by the public data processing. The cryptographic element generation unit 24 sets the value Ht to the value T[0] and sets the value Hb to the value B[0].
  • Step S142 The cryptographic element generator 24 determines whether or not the bit length of the plaintext M is zero. If the bit length of the plaintext M is 0, the cryptographic element generating unit 24 sets the plaintext M to an empty string, and advances the process to step S151. On the other hand, if the bit length of the plaintext M is not 0, the cryptographic element generation unit 24 advances the process to step S143.
  • Step S143 The cryptographic element generation unit 24 determines whether or not the number of divisions m, which is the number of divisions of the plaintext M in step S102 of FIG. 5, is one.
  • plaintext M is converted to values M[1], . . . , into “m” pieces of value M[m].
  • the division number m represents this "m" number. If the division number m is 1, the cryptographic element generation unit 24 advances the process to step S145. On the other hand, if the division number m is not 1, the cryptographic element generation unit 24 advances the process to step S144.
  • the cryptographic element generation unit 24 generates a value P (T[i ⁇ 1]) obtained by converting the value T[i ⁇ 1] using the replacement function P, and a value F obtained by converting the value B[i] using the replacement function F
  • An n-bit value T[i] is generated from (B[i]) and the value C[i].
  • the cryptographic element generation unit 24 calculates the exclusive OR of the value P(T[i ⁇ 1]), the value F(B[i]), and the value C[i] to obtain the value T Generate [i].
  • Step S145 The cryptographic element generation unit 24 encrypts the value B[m ⁇ 1] with the block cipher E using the value T[m ⁇ 1] as a key to generate the value B[m].
  • Step S146 When the bit length of the value M[m] is n, the cryptographic element generation unit 24 converts the value B[m] by applying the replacement function R once to convert the value R[1] (B[m] ) as the value R(B[m]). On the other hand, if the bit length of the value M[m] is not n, the value R[2] (B[m]) obtained by converting the value B[m] by applying the replacement function R twice is converted to the value R(B [m]).
  • Step S147 The cryptographic element generator 24 extracts
  • Step S148 The cryptographic element generation unit 24 generates a value C[m] from the value M[m] and the value B'[m]. Specifically, the cryptographic element generation unit 24 calculates the exclusive OR of the value M[m] and the value B'[m] to generate the value C[m].
  • a ciphertext C is generated by calculating
  • Step S151 The cryptographic element generation unit 24 sets the value T"m” to the value Et, and sets the value R(B[m]) to the value Eb.Then, the cryptographic element generation unit 24 outputs the value Et and the value Eb. do.
  • the bit length of the plaintext M is 0, the value T[0] is set to the value Et, and the value B[0] is set to the value Eb.
  • FIG. 12 An authenticator generation process according to the first embodiment will be described with reference to FIGS. 12 and 13.
  • Step S161 The authenticator generator 26 acquires the value Et and the value Eb generated in the ciphertext generation process.
  • the authenticator generation unit 26 sets the value Et to the value T + [0] and the value Eb to the value B + [0].
  • Step S162 The authenticator generation unit 26 encrypts the value B + [0] with the block cipher E using the value T + [0] as a key to generate the value B + [1].
  • the authenticator generating unit 26 generates a value P(T + [0]) obtained by converting the value T + [0] with the replacement function P and a value F(B+ [ 1]) to generate an n-bit value T + [1]. Specifically, the authenticator generator 26 calculates the exclusive OR of the value P(T + [0]) and the value F(B + [1]) to generate the value T + [1]. do.
  • Step S164 The authenticator generator 26 sets the value T + [1] to the authenticator Tag. Note that the authenticator generation unit 26 may set the value B + [1] to the authenticator Tag. In this case, the process of step S163 is unnecessary.
  • the encryption device 10 stores the nonce N and the public data A obtained in step S101 of FIG. 5, the ciphertext C generated in step S149 of FIG. 10, and the authenticator Tag generated in step S164 of FIG. to output
  • the decryption device 30 sequentially performs a division process, an initial value generation process, a public data process, a plaintext generation process, and a falsification detection process.
  • the initial value generation processing and public data processing are the same as the initial value generation processing and public data processing of the encryption device 10 . That is, in the initial value generation process, the initial value generation unit 42 of the decryption device 30 performs the processing performed by the initial value generation unit 22 of the encryption device 10 . In the public data processing, the processing performed by the public data processing unit 43 of the encryption device 10 is performed by the public data processing unit 43 of the decryption device 30 . However, in the initial value generation process, the initial value generator 42 uses the ciphertext C instead of the plaintext M when setting the value id. That is, the initial value generator 42 sets the value id according to the bit length of the public data A and the bit length of the ciphertext C.
  • Step S201 The dividing unit 41 acquires the private key K, the nonce N, the public data A, the ciphertext C, and the authenticator Tag. Specifically, the dividing unit 41 reads the private key K stored in the storage 33 . Further, the dividing unit 21 acquires the nonce N, the public data A, the ciphertext C, and the authenticator Tag output by the encryption device 10 from the input device connected via the input/output interface 14 . (Step S202) 5, the dividing unit 41 divides the public data A into 2n-bit units in a predetermined order to obtain values A[1], . . . , the value A[a].
  • the dividing unit 41 divides the ciphertext C into n bits in a predetermined order to obtain values C[1], . . . , the value C[c].
  • the dividing unit 41 divides the ciphertext C into n bits in order from the beginning to obtain values C[1], . . . , the value C[c]. Therefore, the values C[1], C[2], . . . , the value C[c ⁇ 1] is an n-bit value, and the value C[c] is a value of 1 bit or more and n bits or less.
  • the ciphertext C has values C[1], C[2], . . . , C[c] are bit-concatenated.
  • Step S241 The plaintext element generation unit 44 acquires the value Ht and the value Hb generated by the public data processing. The plaintext element generation unit 44 sets the value Ht to the value T[0] and sets the value Hb to the value B[0].
  • Step S242 The plaintext element generator 44 determines whether or not the bit length of the ciphertext C is zero. If the bit length of the ciphertext C is 0, the plaintext element generation unit 44 sets the ciphertext C as an empty string and advances the process to step S251. On the other hand, if the bit length of the ciphertext C is not 0, the plaintext element generator 44 advances the process to step S243.
  • Step S243 The plaintext element generator 44 determines whether or not the number of divisions c, which is the number of divisions of the ciphertext C in step S202 of FIG. 14, is one.
  • the ciphertext C is converted to values C[1], . . . , into “c” pieces of value C[c].
  • the division number c represents this "c" number. If the number of divisions c is 1, the plaintext element generation unit 44 advances the process to step S245. On the other hand, if the division number c is not 1, the plaintext element generation unit 44 advances the process to step S244.
  • the plaintext element generation unit 44 encrypts the value B[i ⁇ 1] with the block cipher E using the value T[i ⁇ 1] as a key to generate the value B[i].
  • Second Plaintext element generation unit 44 generates value M[i] from value C[i] and value B[i]. Specifically, the plaintext element generating unit 44 calculates the exclusive OR of the value C[i] and the value B[i] to generate the value M[i].
  • the plaintext element generation unit 44 generates a value P (T[i ⁇ 1]) obtained by converting the value T[i ⁇ 1] using the replacement function P, and a value F obtained by converting the value B[i] using the replacement function F
  • An n-bit value T[i] is generated from (B[i]) and the value M[i].
  • the plaintext element generation unit 44 calculates the exclusive OR of the value P(T[i ⁇ 1]), the value F(B[i]), and the value M[i] to obtain the value T Generate [i].
  • Step S245 The plaintext element generating unit 44 encrypts the value B[c-1] with the block cipher E using the value T[c-1] as a key to generate the value B[c].
  • Step S246 When the bit length of the value C[c] is n, the plaintext element generation unit 44 applies the replacement function R once to convert the value B[c] to a value R[1] (B[c] ) as the value R(B[c]). On the other hand, when the bit length of the value C[c] is not n, the value R[2] (B[c]) obtained by applying the replacement function R twice to the value B[c] is transformed into the value R(B [c]).
  • Step S247 The plaintext element generator 44 extracts the
  • Step S248 The plaintext element generation unit 44 generates a value M[c] from the value C[c] and the value B'[c]. Specifically, the plaintext element generating unit 44 calculates the exclusive OR of the value C[c] and the value B'[c] to generate the value M[c].
  • Plaintext M is generated by computing
  • Step S251 The plaintext element generation unit 44 sets the value T[c] to the value Et, and sets the value R(B[c]) to the value Eb.
  • the plaintext element generator 44 then outputs the value Et and the value Eb.
  • the bit length of the ciphertext C is 0, the value T[0] is set to the value Et, and the value B[0] is set to the value Eb.
  • FIG. 17 and 18 The falsification detection process according to the first embodiment will be described with reference to FIGS. 17 and 18.
  • FIG. The processing from step S261 to step S264 is the same as the processing from step S161 to step S164 in FIG. That is, the authenticator generation unit 46 performs the same processing as the processing from step S161 to step S164 in FIG. 12 to generate the authenticator Tag.
  • the generated authenticator Tag is written as authenticator Tag'.
  • Step S265 If the authenticator Tag acquired in step S201 in FIG. 14 matches the authenticator Tag′ generated in step S264, the authenticator generation unit 46 outputs the plaintext M generated in the plaintext generation process. do. On the other hand, the authenticator generating unit 46 outputs "reject" when the authenticator Tag acquired in step S201 of FIG. 14 does not match the authenticator Tag' generated in step S264.
  • Embodiment 1 *** Effect of Embodiment 1 *** As described above, the encryption device 10 and the decryption device 30 according to Embodiment 1 implement an authenticated encryption algorithm.
  • the size of the internally updated memory is 2n bits.
  • this authenticated encryption algorithm is an authenticated encryption algorithm using a block cipher that has the optimum n-bit security level for both online and offline calculation security levels and the minimum memory size of 2n bits. It's becoming
  • the size of the memory that is updated inside the authenticated cryptographic algorithm must be 2n bits or more according to the birthday paradox.
  • the size of the internally updated memory is n bits, so the security level of online calculation is n/2 bits.
  • the size of the internally updated memory is 3n bits, so the security level of online calculation is n bits.
  • Non-Patent Document 3 requires a memory size of 3n bits, which is not the minimum.
  • the authenticated encryption algorithm implemented by the encryption device 10 and the decryption device 30 according to the first embodiment has a memory size of 2n bits to be updated internally.
  • the memory storing the value Y is called memory 1
  • the memory storing the value X is called memory 2.
  • the value U is stored in the memory 1
  • the updated value Y is stored in the memory 2 .
  • the internal memory size of the encryption function E is 2n bits, and the condition that the original value Y can be restored by unwinding the value in the memory 2 is established. This condition is met by almost all currently proposed block cipher algorithms such as AES.
  • the original value Y is then restored from the memory 2 value. Then, the value U is stored in the memory 1, and the original value Y is stored in the memory 2.
  • FIG. Next, a value P(Y) is calculated by converting the value Y using the replacement function P, and a value F(G(U)) is calculated by converting the value U using the replacement function G and the replacement function F. . Then, the memory 1 stores the value F(G(U)) and the memory 2 stores the value P(Y). Next, the value P(Y) and the value F(G(U)) are XORed to obtain the value W. Then, the memory 1 stores the value W, and the memory 2 stores the value P(Y).
  • the processing in FIG. 4 can be calculated using a memory with a size of 2n bits.
  • the authenticated encryption algorithm is implemented by repeatedly executing the processing in FIG. Therefore, the authenticated cryptographic algorithm can be computed using a memory of size 2n bits.
  • each functional component is realized by software. However, as Modification 1, each functional component may be implemented by hardware. Differences between the first modification and the first embodiment will be described.
  • the encryption device 10 has an electronic circuit 15 instead of the processor 11 , memory 12 and storage 13 .
  • the electronic circuit 15 is a dedicated circuit that realizes the functions of each functional component, memory 12 and storage 13 .
  • the decoding device 30 includes an electronic circuit 35 instead of the processor 31 , memory 32 and storage 33 .
  • the electronic circuit 35 is a dedicated circuit that realizes the functions of each functional component, memory 32 and storage 33 .
  • the electronic circuits 15 and 35 include single circuits, composite circuits, programmed processors, parallel programmed processors, logic ICs, GAs (Gate Arrays), ASICs (Application Specific Integrated Circuits), FPGAs (Field-Programmable Gate Arrays). ) is assumed.
  • each functional component may be implemented by one electronic circuit 15, 35, or each functional component may be implemented by being distributed among a plurality of electronic circuits 15, 35.
  • the encryption device 10 includes, as the electronic circuit 15, a block cipher processor that calculates a block cipher E, a division processing processor that performs division processing, and an initial value generation processing that performs initial value generation processing.
  • a configuration including a processor, a public data processor that performs public data processing, a ciphertext generation processor that performs ciphertext generation processing, and an authenticator generation processor that performs authenticator generation processing can be considered.
  • FIG. 21 the encryption device 10 includes, as the electronic circuit 15, a block cipher processor that calculates a block cipher E, a division processing processor that performs division processing, and an initial value generation processing that performs initial value generation processing.
  • the decryption device 30 includes, as the electronic circuit 35, a block cipher processor that calculates a block cipher E, a division processing processor that performs division processing, and an initial value generation processing that performs initial value generation processing.
  • a configuration including a processor, a public data processor that performs public data processing, a plaintext generation processor that performs plaintext generation processing, and a tampering detection processor that performs tampering detection processing can be considered.
  • the processors 11, 31, memories 12, 32, storages 13, 33, and electronic circuits 15, 35 are called processing circuits. That is, the function of each functional component is realized by the processing circuit.

Landscapes

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

Abstract

暗号化装置は、平文Mを分割して値M[1],...,値M[m]を生成する。暗号化装置は、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値B[i]を置換関数Fで変換した値F(B[i])と、値C[i]とからnビットの値T[i]を生成する。暗号化装置は、i=1,...,mについての値C[i]を結合して暗号文Cを生成する。暗号化装置は、値H[m]と値B[m]とから暗号文Cの改ざんを検知するための認証子Tagを生成する。

Description

暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム
 本開示は、ブロック暗号を用いた認証暗号に関する。
 認証暗号アルゴリズムは、秘匿機能と改ざん検知機能とを同時に併せ持つ暗号アルゴリズムである。認証暗号アルゴリズムを用いると、2者間で平文を秘匿した上で通信できるとともに、通信路で送信したメッセージが改ざんされているか否かを受信者が確認できる。
 認証暗号アルゴリズムは、暗号化関数Encと復号関数Decとの2つのアルゴリズムを備える。
 暗号化関数Encは、秘密鍵Kと、ナンスNと、公開データAと、平文Mとを入力とし、暗号文Cと改ざん検知用の認証子Tagとを出力する関数である。なお、ナンスNは、暗号化毎に異なる値が用いられ、秘密鍵Kを変更しない限り同じ値は用いられない。
 復号関数Decは、秘密鍵Kと、ナンスNと、公開データAと、暗号文Cと、改ざん検知用の認証子Tagとを入力とし、入力値が改ざんされていない場合、平文Mを出力し、改ざんされている場合、偽造されていることを示す値を出力する。以降、偽造されていることを示す値をrejectと書く。
 送信者Aliceと受信者Bobとが認証暗号アルゴリズムを用いた通信を行うとする。AliceとBobとは、事前に秘密鍵Kを共有しておく。
 送信者Aliceは、秘密鍵Kと、ナンスNと、公開データAと、平文Mとを入力として、暗号化関数Encを計算することにより、暗号文Cと改ざん検知用の認証子Tagとを生成する。送信者Aliceは、ナンスNと、公開データAと、暗号文Cと、改ざん検知用の認証子Tagとを受信者Bobに送信する。
 受信者Bobは、秘密鍵Kと、ナンスNと、公開データAと、暗号文Cと、改ざん検知用の認証子Tagとを入力として、復号関数Decを計算することにより、改ざん検知されていないことを判定し、改ざんされていない場合は平文Mを生成する。
 なお、公開データAは公開してもよい値である。また、送信者Aliceは、暗号化毎にナンスNを別の値に設定し、同じ値は使用しない。
 認証暗号アルゴリズムの安全性には秘匿性及び完全性がある。秘匿性及び完全性の定義は、非特許文献1に記載されている。
 秘匿性は、暗号文から平文が漏れないことを定義した安全性である。秘匿性の安全性ゲームでは、攻撃者が、認証暗号アルゴリズムの暗号化関数Encと、乱数を出力するオラクルとのどちらか一方にアクセスし、どちらにアクセスしているかを識別する。攻撃者が識別する確率を識別確率と呼ぶ。識別確率が低いほど秘匿性の安全性が高い。
 完全性は、公開データ又は暗号文が改ざんできないことを定義した安全性である。完全性の安全性ゲームでは、攻撃者が認証暗号アルゴリズムの暗号化関数Encと復号関数Decとにアクセスし、復号関数Decに偽造した公開データと暗号文と認証子とを入力し、改ざんチェックに合格することを目指す。改ざんチェックに合格する確率を偽造確率と呼ぶ。偽造確率が低いほど完全性の安全性が高い。
 認証暗号アルゴリズムの構成方法として、ブロック暗号を用いる方法がある。
 ブロック暗号は、暗号化関数Eと復号関数Dとから構成される。暗号化関数Eは、kビットの鍵Kと、nビットの平文ブロックMとを入力とし、nビットの暗号文ブロックCを出力する関数である。これをC=E(K,M)と書く。ブロック暗号の復号関数Dは、kビットの鍵Kとnビットの暗号文ブロックCとを入力とし、nビットの平文ブロックMを出力する関数である。これをM=D(K,C)と書く。平文ブロックM及び暗号文ブロックCのサイズnをブロックサイズと呼ぶ。ブロック暗号の暗号化関数E及び復号関数Dは、鍵Kを固定するとnビットの置換関数になる。
 具体的なブロック暗号として、非特許文献2に記載されたAES(Advanced Encryption Standard)と、非特許文献3に記載されたGIFT等がある。非特許文献2に記載されたAESは、nは128であり、kは128,192又は256である。非特許文献3に記載されたGIFTは、nは64又は128であり、kは128である。また、非特許文献2に記載されたAES-128に代表されるようにn=k=128が最も使われている。
 ブロック暗号を用いる認証暗号の安全性のパラメータについて説明する。
 秘匿性についての識別確率は、認証暗号の暗号化関数Encでのブロック暗号の呼び出し回数qと、攻撃者の計算量pとを用いて導出される。攻撃者の計算量pは、ブロック暗号1回の計算量を1とする。すなわち、攻撃者はブロック暗号をp回計算することができる能力を持つことになる。
 完全性についての偽造確率は、認証暗号の暗号化関数Encでのブロック暗号の呼び出し回数と復号関数Decでのブロック暗号の呼び出し回数との和Qと、攻撃者の計算量pとを用いて導出される。
 ブロック暗号を用いる認証暗号の安全性の安全性レベルについて説明する。安全性レベルには、オンライン計算の安全性レベルと、オフライン計算の安全性レベルとがある。
 オンライン計算の安全性レベルは、識別確率が1となるqの値をq’とし、偽造確率が1となるQの値をQ’とすると、logq’とlogQ’との最小値である。ここで、オンライン計算の安全性レベルの単位はビットである。
 オフライン計算の安全性レベルは、識別確率が1となるpの値をpとし、偽造確率が1となるpの値をpとすると、logとlogとの最小値である。ここで、オフライン計算の安全性レベルの単位はビットである。
 安全性レベルは、暗号アルゴリズムの長期利用の観点から高いほどよい。ブロック暗号を用いる認証暗号の場合、オンライン計算の安全性レベルはnビット、オフライン計算の安全性レベルはnビットが最適である。
 ブロック暗号を用いる認証暗号では、必要なメモリサイズの最小値は2nビットである。ここで、メモリサイズは、アルゴリズムの内部で更新される値を格納するために必要な領域のサイズである。メモリサイズの最小化は、ソフトウェアであれば必要なメモリ(RAM(Random Access Memory))サイズの小型化につながり、ハードウェアであればハードサイズの小型化につながる。
 特許文献1には、ブロック暗号を用いる認証暗号アルゴリズムが記載されている。また、非特許文献4には、ブロック暗号を用いる認証暗号アルゴリズムRemus-N2が記載されている。
国際公開第2017/31639号
Tetsu Iwata, Keisuke Ohashi, and Kazuhiko Minematsu. Breaking and Repairing GCM Security Proofs. CRYPTO 2012, Proceedings. pages 31-49. Lecture Notes in Computer Science volume 7417. Springer. 2012. National Institute of Standards and Technology (NIST). Announcing the Advanced Encryption Standard(AES). FIPS PUB 197, 2001. Subhadeep Banik, Sumit Kumar Pandey, Thomas Peyrin, Yu Sasaki, Siang Meng Sim, and Yosuke Todo. GIFT: A Small Present - Towards Reaching the Limit of Lightweight Encryption. CHES 2017, Lecture Notes in Computer Science, volume 10529, page 321-345. Tetsu Iwata, Mustafa Khairallah, Kazuhiko Minematsu, and Thomas Peyrin:Duel of the Titans: The Romulus and Remus Families of Lightweight AEAD Algorithms. ToSC 2020 Issue 1. p.43-120.
 特許文献1に記載された認証暗号アルゴリズムに必要なメモリサイズは最小の2nビットである。また、オフライン計算の安全性レベルはnビットであり、最適である。しかし、オンライン計算の安全性レベルはn/2ビットであり、最適ではない。
 非特許文献4に記載された認証暗号アルゴリズムの安全性レベルは、オンライン計算の安全性レベルとオフライン計算の安全性レベルがともにnビットであり、最適である。しかし、メモリサイズは、特許文献1に記載された認証暗号アルゴリズムよりもnビット多い、3nビットであり、最小ではない。
 本開示は、オンライン計算の安全性レベルとオフライン計算の安全性レベルがともに最適のnビットであり、メモリサイズが最小である2nビットとなるブロック暗号を用いた認証暗号を実現可能にすることを目的とする。
 本開示に係る暗号化装置は、
 平文Mを順にnビット毎に分割して値M[1],...,値M[m]を生成する分割部と、
 nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割部によって生成された値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する暗号要素生成部と、
 前記暗号要素生成部によって生成されたi=1,...,mについての値C[i]を結合して暗号文Cを生成する暗号文生成部と、
 値H[m]と値B[m]とから前記暗号文Cの改ざんを検知するための認証子Tagを生成する認証子生成部と
を備える。
 本開示では、置換関数P及び置換関数Fを用いて値T及び値Bを更新して暗号要素を生成する。これにより、内部で更新されるメモリのサイズが2nビットになる。その結果、オンライン計算の安全性レベル及びオフライン計算の安全性レベルがともに最適のnビットであり、メモリサイズが最小である2nビットとなるブロック暗号を用いた認証暗号アルゴリズムを実現可能である。
実施の形態1に係る暗号化装置10の構成図。 実施の形態1に係る復号装置30の構成図。 実施の形態1におけるブロック暗号の暗号化関数Eの表記方法の説明図。 実施の形態1に係る認証暗号アルゴリズムで用いられる基本処理の説明図。 実施の形態1に係る分割処理のフローチャート。 実施の形態1に係る初期値生成処理のフローチャート。 実施の形態1に係る初期値生成処理の説明図。 実施の形態1に係る公開データ処理のフローチャート。 実施の形態1に係る公開データ処理の説明図。 実施の形態1に係る暗号文生成処理のフローチャート。 実施の形態1に係る暗号文生成処理の説明図。 実施の形態1に係る認証子生成処理のフローチャート。 実施の形態1に係る認証子生成処理の説明図。 実施の形態1に係る分割処理のフローチャート。 実施の形態1に係る平文生成処理のフローチャート。 実施の形態1に係る平文生成処理の説明図。 実施の形態1に係る改ざん検知処理のフローチャート。 実施の形態1に係る改ざん検知処理の説明図。 変形例1に係る暗号化装置10の構成図。 変形例1に係る復号装置30の構成図。 変形例1に係る暗号化装置10の他の構成図。 変形例1に係る復号装置30の他の構成図。
 実施の形態1.
 ***構成の説明***
 図1を参照して、実施の形態1に係る暗号化装置10の構成を説明する。
 暗号化装置10は、コンピュータである。
 暗号化装置10は、プロセッサ11と、メモリ12と、ストレージ13と、入出力インタフェース14とのハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
 暗号化装置10は、機能構成要素として、分割部21と、初期値生成部22と、公開データ処理部23と、暗号要素生成部24と、暗号文生成部25と、認証子生成部26とを備える。暗号化装置10の各機能構成要素の機能はソフトウェアにより実現される。
 ストレージ13には、暗号化装置10の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、暗号化装置10の各機能構成要素の機能が実現される。
 図2を参照して、実施の形態1に係る復号装置30の構成を説明する。
 復号装置30は、コンピュータである。
 復号装置30は、プロセッサ31と、メモリ32と、ストレージ33と、入出力インタフェース34とのハードウェアを備える。プロセッサ31は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
 復号装置30は、機能構成要素として、分割部41と、初期値生成部42と、公開データ処理部43と、平文要素生成部44と、平文生成部45と、認証子生成部46とを備える。復号装置30の各機能構成要素の機能はソフトウェアにより実現される。
 ストレージ33には、復号装置30の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ31によりメモリ32に読み込まれ、プロセッサ31によって実行される。これにより、復号装置30の各機能構成要素の機能が実現される。
 プロセッサ11,31は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ11,31は、具体例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
 メモリ12,32は、データを一時的に記憶する記憶装置である。メモリ12,32は、具体例としては、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。
 ストレージ13,33は、データを保管する記憶装置である。ストレージ13,33は、具体例としては、HDD(Hard Disk Drive)である。また、ストレージ13,33は、SD(登録商標,Secure Digital)メモリカード、CF(CompactFlash,登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記録媒体であってもよい。
 入出力インタフェース14,34は、外部の装置と通信するためのインタフェースである。入出力インタフェース14,34は、具体例としては、Ethernet(登録商標)、USB(Universal Serial Bus)、HDMI(登録商標,High-Definition Multimedia Interface)のポートである。
 図1では、プロセッサ11は、1つだけ示されていた。しかし、プロセッサ11は、複数であってもよく、複数のプロセッサ11が、各機能を実現するプログラムを連携して実行してもよい。同様に、図2では、プロセッサ31は、1つだけ示されていた。しかし、プロセッサ31は、複数であってもよく、複数のプロセッサ31が、各機能を実現するプログラムを連携して実行してもよい。
 ***動作の説明***
 図3から図18を参照して、実施の形態1に係る暗号化装置10及び復号装置30の動作を説明する。
 実施の形態1に係る暗号化装置10の動作手順は、実施の形態1に係る暗号化方法に相当する。また、実施の形態1に係る暗号化装置10の動作を実現するプログラムは、実施の形態1に係る暗号化プログラムに相当する。
 実施の形態1に係る復号装置30の動作手順は、実施の形態1に係る復号方法に相当する。また、実施の形態1に係る復号装置30の動作を実現するプログラムは、実施の形態1に係る復号プログラムに相当する。
 暗号化装置10及び復号装置30によって、認証暗号アルゴリズムが実現される。ここでは、ブロックサイズnと鍵のサイズkとが等しいブロック暗号を用いる認証暗号アルゴリズムが実現される。
 暗号化装置10は、認証暗号アルゴリズムにおける暗号化アルゴリズムEncを実現する。また、復号装置30は認証暗号アルゴリズムにおける復号アルゴリズムDecを実現する。
 **前提となる事項の説明**
 集合Nsetは、ナンスNの集合である。
 排他的論理和の演算子を数1のように表す。
Figure JPOXMLDOC01-appb-M000001
 ビット列Xのビット長を|X|と書く。ビット列Xが空列である場合、|X|=0である。
 関数pad[r]は、rビット以下の値を入力として、rビットの値を出力する関数である。関数pad[r]は、r-1ビット以下の値に対しては、単射であるとする。具体例としては、r-1ビット以下の値Xに対して、関数pad[r](X)は、Xの後ろに1をビット結合し、その後ろにビット長がrとなるように0のビット列を結合した値を出力し、rビットの値Yに対して値Yを出力する関数である。
 関数Initは、集合Nsetの値を入力として、nビットの値を出力する単射関数である。
 const[1]と、const[2]と、const[3]と、const[4]とは、非ゼロの異なるnビットの値とする。
 値Yに対して置換関数Uをi回適用した結果をU[i](Y)と書く。
 図3を参照して、実施の形態1におけるブロック暗号の暗号化関数Eの表記方法を説明する。
 ブロック暗号は、暗号化関数Eと復号関数Dとから構成される。暗号化関数Eは、k(=n)ビットの鍵Kと、nビットの平文ブロックMとを入力とし、nビットの暗号文ブロックCを出力する関数である。これをC=E(K,M)と書き、図3のように表す。つまり、2つの入力値のうち、黒塗りになっている部分に入力される入力値が鍵であり、他方の入力値が暗号化される値である。
 図4を参照して、実施の形態1に係る認証暗号アルゴリズムで用いられる基本処理を説明する。
 実施の形態1に係る認証暗号アルゴリズムでは、nビットの値を入力とし、nビットの値を出力する置換関数P,F,Gとブロック暗号Eとを用いた以下の基本処理が用いられる。基本処理は2つのnビットの値X及び値Yを入力として、2つのnビットの値Z及び値Wを出力する。
 (基本処理)
 (1)値Yを鍵として値Xをブロック暗号Eによって暗号化し、置換関数Gで変換されて値Zが生成される。
 (2)値Yを置換関数Pで変換した値P(Y)と、値Zを置換関数Fで変換した値F(Z)との排他的論理和をとって値Wが生成される。
 (3)値Zと値Wとが出力される。
 **暗号化装置10の動作**
 図5から図13を参照して、実施の形態1に係る暗号化装置10の動作を説明する。
 暗号化装置10は、分割処理と、初期値生成処理と、公開データ処理と、暗号文生成処理と、認証子生成処理とを順に実行する。
 <分割処理>
 図5を参照して、実施の形態1に係る分割処理を説明する。
 (ステップS101)
 分割部21は、秘密鍵Kと、ナンスNと、公開データAと、平文Mとを取得する。
 具体的には、分割部21は、ストレージ13に記憶された秘密鍵KとナンスNと公開データAとを読み出す。また、分割部21は、入出力インタフェース14を介して接続された入力装置から入力された平文Mを取得する。
 秘密鍵Kは、nビットの鍵であり、事前に暗号文Cの送付先と共有された鍵である。ナンスNは、集合Nsetにおけるnビットの値である。ナンスNは、暗号化毎に異なる値が用いられ、秘密鍵Kを変更しない限り同じ値は用いられない。公開データAは、公開してもよい値であり、任意のビット長の値である。平文Mは、暗号化する対象の値であり、任意のビット長の値である。
 (ステップS102)
 分割部21は、公開データAを予め決められた順に2nビット毎に分割して値A[1],...,値A[a]を生成する。ここでは、分割部21は、公開データAを先頭から順に2nビット毎に分割して値A[1],...,値A[a]を生成する。したがって、値A[1],値A[2],...,値A[a-1]はそれぞれ2nビットの値であり、値A[a]は1ビット以上2nビット以下の値である。また、公開データAは、値A[1],値A[2],...,値A[a]をビット結合した値である。
 分割部21は、平文Mを予め決められた順にnビット毎に分割して値M[1],...,値M[m]を生成する。ここでは、分割部21は、平文Mを先頭から順にnビット毎に分割して値M[1],...,値M[m]を生成する。したがって、値M[1],値M[2],...,値M[m-1]はそれぞれnビットの値であり、値M[m]は1ビット以上nビット以下の値である。また、平文Mは、値M[1],値M[2],...,値M[m]をビット結合した値である。
 <初期値生成処理>
 図6及び図7を参照して、実施の形態1に係る初期値生成処理を説明する。
 初期値生成処理では、置換関数Gとして、恒等写像、つまりG(X)=Xが用いられる。
 (ステップS111)
 初期値生成部22は、ナンスNを関数Initに入力してnビットの値Init(N)を生成する。初期値生成部22は、秘密鍵Kを用いて値Init(N)をブロック暗号Eによって暗号化して値E(N)を生成する。初期値生成部22は、値E(N)を値Tmpに設定する。
 (ステップS112)
 初期値生成部22は、秘密鍵Kを置換関数Pで変換した値P(K)と、値Tmp(=値E(N))を置換関数Fで変換した値F(Tmp)(=値F(E[N]))とから値IVtを生成する。具体的には、初期値生成部22は、値P(K)と値F(Tmp)との排他的論理和を計算して、値IVtを生成する。
 ここで、置換関数Pとしては、異なる値i及び値jと、nビットの値Sと、変数Yとに対して、数2が変数Yについて唯一の解を持つような置換関数が用いられる。
Figure JPOXMLDOC01-appb-M000002

 置換関数Fとしては、nビットの値Sと、変数Zとに対して、数3がZについて唯一の解を持つような置換関数が用いられる。
Figure JPOXMLDOC01-appb-M000003

 例えば、置換関数Pと置換関数Fとはガロア体GF(2)上の生成元との掛け算を用いることができる。すなわち、生成元をuとすると、P(Y)=u・Y、F(Z)=u・Zとなる。
 (ステップS113)
 初期値生成部22は、公開データAと平文Mとに応じて値idを設定する。
 具体的には、初期値生成部22は、公開データAのビット長が0であり、かつ、平文Mのビット長が0である場合には、const[1]を値idに設定する。初期値生成部22は、公開データAのビット長が0でなく、かつ、平文Mのビット長が0である場合には、const[2]を値idに設定する。初期値生成部22は、公開データAのビット長が0であり、かつ、平文Mのビット長が0でない場合には、const[3]を値idに設定する。初期値生成部22は、公開データAのビット長が0でなく、かつ、平文Mのビット長が0でない場合には、const[4]を値idに設定する。
 (ステップS114)
 初期値生成部22は、値Tmp(=値E(N))と、値idとから値IVbを生成する。
 具体的には、初期値生成部22は、値Tmpと値idとの排他的論理和を計算して、値IVbを生成する。
 (ステップS115)
 初期値生成部22は、値IVt及び値IVbを出力する。
 <公開データ処理>
 図8及び図9を参照して、実施の形態1に係る公開データ処理を説明する。
 公開データ処理では、ステップS124においては、置換関数Gとして、恒等写像、つまりG(X)=Xが用いられる。ステップS126においては、置換関数Gとして、置換関数Qが用いられる。
 また、公開データ処理では、置換関数Pは、初期値生成処理と同じ関数が用いられる。また、置換関数Fとしては、初期値生成処理で用いた置換関数Fと同様に、nビットの値Sと、変数Zとに対して、数3がZについて唯一の解を持つような置換関数が用いられる。
 (ステップS121)
 公開データ処理部23は、初期値生成処理で生成された値IVt及び値IVbを取得する。公開データ処理部23は、値IVtを値T[0]に設定し、値IVbを値B[0]に設定する。
 (ステップS122)
 公開データ処理部23は、公開データAのビット長が0であるか否かを判定する。
 公開データ処理部23は、公開データAのビット長が0である場合には、処理をステップS131に進める。一方、公開データ処理部23は、公開データAのビット長が0でない場合には、処理をステップS123に進める。
 (ステップS123)
 公開データ処理部23は、図5のステップS102で公開データAが分割された数である分割数aが1であるか否かを判定する。図5のステップS102では、公開データAが値A[1],...,値A[a]の“a”個に分割された。分割数aは、この“a”個を表す。
 公開データ処理部23は、分割数aが1である場合には、処理をステップS125に進める。一方、公開データ処理部23は、分割数aが1でない場合には、処理をステップS124に進める。
 (ステップS124)
 公開データ処理部23は、i=1,...,a-1の各整数iについて昇順に、(1)から(4)を実行する。
 (1)公開データ処理部23は、値T[i-1]を鍵として値B[i-1]をブロック暗号Eによって暗号化して値E(B[i-1])を生成する。
 (2)公開データ処理部23は、値A[i]のうち予め決められた位置のnビットを値A[i,t]に設定し、値A[i]のうちの値A[i,t]以外のnビットを値A[i,b]に設定する。例えば、公開データ処理部23は、値A[i]のうち先頭nビットを値A[i,t]に設定し、残りnビットを値A[i,b]に設定する。
 (3)公開データ処理部23は、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値E(B[i-1])を置換関数Fで変換した値F(E(B[i-1]))と、値A[i,t]とからnビットの値T[i]を生成する。具体的には、公開データ処理部23は、値P(T[i-1])と値F(E(B[i-1]))と値A[i,t]との排他的論理和を計算して、値T[i]を生成する。
 (4)公開データ処理部23は、値E(B[i-1])と、値A[i,b]とからnビットの値B[i]を生成する。具体的には、公開データ処理部23は、値E(B[i-1])と値A[i,b]との排他的論理和を計算して、値B[i]を生成する。
 (ステップS125)
 公開データ処理部23は、値T[a-1]を鍵として値B[a-1]をブロック暗号Eによって暗号化して値E(B[a-1])を生成する。
 (ステップS126)
 公開データ処理部23は、値A[a]のビット長が2nである場合には、値E(B[a-1])を置換関数Qを1回適用して変換した値Q[1](E(B[a-1]))を値Q(E(B[a-1]))として生成する。一方、値A[a]のビット長が2nでない場合には、値E(B[a-1])を置換関数Qを2回適用して変換した値Q[2](E(B[a-1]))を値Q(E(B[a-1]))として生成する。
 (ステップS127)
 公開データ処理部23は、関数padにより、値A[a]にビットをパディングして得られた2nビットの値A’[a]を生成する。つまり、公開データ処理部23は、A’[a]=pad[2n](A[a])を計算する。
 (ステップS128)
 公開データ処理部23は、値A’[a]のうち予め決められた位置のnビットを値A’[a,t]に設定し、値’A[i]のうちの値A’[a,t]以外のnビットを値A’[a,b]に設定する。例えば、公開データ処理部23は、値A’[a]のうち先頭nビットを値A’[a,t]に設定し、残りのnビットを値A’[a,b]に設定する。
 (ステップS129)
 公開データ処理部23は、値T[a-1]を置換関数Pで変換した値P(T[a-1])と、値Q(E(B[a-1]))を置換関数Fで変換した値F(Q(E(B[a-1])))と、値A’[a,t]とから値T[a]を生成する。具体的には、公開データ処理部23は、値P(T[a-1])と値F(Q(E(B[a-1])))と値A’[a,t]との排他的論理和を計算して、値T[a]を生成する。
 ここで、置換関数Qとしては、nビットの値Sと、nビットの変数Xとに対して、数4がXについて唯一の解を持ち、恒等写像ではない置換関数が用いられる。
Figure JPOXMLDOC01-appb-M000004

 例えば、置換関数Q[1]と置換関数Q[2]とは、ガロア体GF(2)上の掛け算を用いる方法がある。すなわち、ガロア体GF(2)上の0と1以外で異なる2つの値をu,vとし、Q[1](Z)=u・Z、Q[2](Z)=v・Zとする。
 (ステップS130)
 公開データ処理部23は、値Q(E(B[a-1]))と、値A’[a,b]とから値B[a]を生成する。具体的には、公開データ処理部23は、値Q(E(B[a-1]))と値A’[a,b]との排他的論理和を計算して、値B[a]を生成する。
 (ステップS131)
 公開データ処理部23は、値T[a]を値Htに設定し、値B[a]を値Hbに設定する。そして、公開データ処理部23は、値Ht及び値Hbを出力する。
 なお、公開データAのビット長が0である場合には、値T[0]が値Htに設定され、値B[0]が値Hbに設定される。
 <暗号文生成処理>
 図10及び図11を参照して、実施の形態1に係る暗号文生成処理を説明する。
 暗号文生成処理では、ステップS144においては、置換関数Gとして、恒等写像、つまりG(X)=Xが用いられる。ステップS146においては、置換関数Gとして、置換関数Rが用いられる。
 また、暗号文生成処理では、置換関数Pは、初期値生成処理と同じ関数が用いられる。また、置換関数Fとしては、初期値生成処理で用いた置換関数Fと同様に、nビットの値Sと、変数Zとに対して、数3がZについて唯一の解を持つような置換関数が用いられる。
 (ステップS141)
 暗号要素生成部24は、公開データ処理で生成された値Ht及び値Hbを取得する。暗号要素生成部24は、値Htを値T[0]に設定し、値Hbを値B[0]に設定する。
 (ステップS142)
 暗号要素生成部24は、平文Mのビット長が0であるか否かを判定する。
 暗号要素生成部24は、平文Mのビット長が0である場合には、平文Mを空列として、処理をステップS151に進める。一方、暗号要素生成部24は、平文Mのビット長が0でない場合には、処理をステップS143に進める。
 (ステップS143)
 暗号要素生成部24は、図5のステップS102で平文Mが分割された数である分割数mが1であるか否かを判定する。図5のステップS102では、平文Mが値M[1],...,値M[m]の“m”個に分割された。分割数mは、この“m”個を表す。
 暗号要素生成部24は、分割数mが1である場合には、処理をステップS145に進める。一方、暗号要素生成部24は、分割数mが1でない場合には、処理をステップS144に進める。
 (ステップS144)
 暗号要素生成部24は、i=1,...,m-1の各整数iについて昇順に、(1)から(3)を実行する。
 (1)暗号要素生成部24は、値T[i-1]を鍵として値B[i-1]をブロック暗号Eによって暗号化して値B[i]を生成する。
 (2)暗号要素生成部24は、値M[i]と値B[i]とから値C[i]を生成する。具体的には、暗号要素生成部24は、値M[i]と値B[i]との排他的論理和を計算して、値C[i]を生成する。
 (3)暗号要素生成部24は、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値B[i]を置換関数Fで変換した値F(B[i])と、値C[i]とからnビットの値T[i]を生成する。具体的には、暗号要素生成部24は、値P(T[i-1])と値F(B[i])と値C[i]との排他的論理和を計算して、値T[i]を生成する。
 (ステップS145)
 暗号要素生成部24は、値T[m-1]を鍵として値B[m-1]をブロック暗号Eによって暗号化して値B[m]を生成する。
 (ステップS146)
 暗号要素生成部24は、値M[m]のビット長がnである場合には、値B[m]を置換関数Rを1回適用して変換した値R[1](B[m])を値R(B[m])として生成する。一方、値M[m]のビット長がnでない場合には、値B[m]を置換関数Rを2回適用して変換した値R[2](B[m])を値R(B[m])として生成する。
 (ステップS147)
 暗号要素生成部24は、値R(B[m])の予め決められた位置の|M[m]|ビットを抽出して値B’[m]に設定する。例えば、暗号要素生成部24は、値R(B[m])のうち先頭の|M[m]|ビットを値B’[m]に設定する、あるいは、値R(B[m])のうち後ろの|M[m]|ビットを値B’[m]に設定する。
 (ステップS148)
 暗号要素生成部24は、値M[m]と値B’[m]とから値C[m]を生成する。具体的には、暗号要素生成部24は、値M[m]と値B’[m]との排他的論理和を計算して、値C[m]を生成する。
 (ステップS149)
 暗号文生成部25は、i=1,...,mについての値C[i]を結合して暗号文Cを生成する。例えば、暗号文生成部25は、C=C[1]||C[2]||...||C[m]を計算することにより、暗号文Cを生成する。ここで、||は結合を表す。
 (ステップS150)
 暗号要素生成部24は、値C[m]にビットをパディングして得られたnビットの値C’[m]を生成する。つまり、暗号要素生成部24は、C’[m]=pad[n](C[m])を計算する。
 そして、暗号要素生成部24は、値T「m-1]を置換関数Pで変換した値P(T[m-1])と、値R(B[m])を置換関数Fで変換した値F(R(B[m]))と、値C’[m]とから値T[m]を生成する。具体的には、暗号要素生成部24は、値P(T[m-1])と値F(R(B[m]))と値C’「m]との排他的論理和を計算して、値T「m]を生成する。
 (ステップS151)
 暗号要素生成部24は、値T「m]を値Etに設定し、値R(B[m])を値Ebに設定する。そして、暗号要素生成部24は、値Et及び値Ebを出力する。
 なお、平文Mのビット長が0である場合には、値T[0]が値Etに設定され、値B[0]が値Ebに設定される。
 <認証子生成処理>
 図12及び図13を参照して、実施の形態1に係る認証子生成処理を説明する。
 認証子生成処理では、置換関数Gとして、恒等写像、つまりG(X)=Xが用いられる。
 (ステップS161)
 認証子生成部26は、暗号文生成処理で生成された値Et及び値Ebを取得する。認証子生成部26は、値Etを値T[0]に設定し、値Ebを値B[0]に設定する。
 (ステップS162)
 認証子生成部26は、値T[0]を鍵として値B[0]をブロック暗号Eによって暗号化して値B[1]を生成する。
 (ステップS163)
 認証子生成部26は、値T[0]を置換関数Pで変換した値P(T[0])と、値B[1]を置換関数Fで変換した値F(B[1])とからnビットの値T[1]を生成する。具体的には、認証子生成部26は、値P(T[0])と値F(B[1])との排他的論理和を計算して、値T[1]を生成する。
 (ステップS164)
 認証子生成部26は、値T[1]を認証子Tagに設定する。
 なお、認証子生成部26は、値B[1]を認証子Tagに設定してもよい。この場合には、ステップS163の処理は不要である。
 暗号化装置10は、図5のステップS101で取得されたナンスN及び公開データAと、図10のステップS149で生成された暗号文Cと、図12のステップS164で生成された認証子Tagとを出力する。
 **復号装置30の動作**
 図14から図18を参照して、実施の形態1に係る復号装置30の動作を説明する。
 復号装置30は、分割処理と、初期値生成処理と、公開データ処理と、平文生成処理と、改ざん検知処理とを順に実行する。
 初期値生成処理及び公開データ処理は、暗号化装置10の初期値生成処理及び公開データ処理と同じである。つまり、初期値生成処理では、暗号化装置10の初期値生成部22が行った処理を、復号装置30の初期値生成部42が行う。公開データ処理では、暗号化装置10の公開データ処理部43が行った処理を、復号装置30の公開データ処理部43が行う。
 但し、初期値生成処理において、値idを設定する際、初期値生成部42は、平文Mに代えて暗号文Cを用いる。つまり、初期値生成部42は、公開データAのビット長と、暗号文Cのビット長とに応じて値idを設定する。
 <分割処理>
 図14を参照して、実施の形態1に係る分割処理を説明する。
 (ステップS201)
 分割部41は、秘密鍵Kと、ナンスNと、公開データAと、暗号文Cと、認証子Tagとを取得する。
 具体的には、分割部41は、ストレージ33に記憶された秘密鍵Kを読み出す。また、分割部21は、入出力インタフェース14を介して接続された入力装置から、暗号化装置10によって出力されたナンスNと公開データAと暗号文Cと認証子Tagとを取得する。
 (ステップS202)
 分割部41は、図5のステップS102と同様に、公開データAを予め決められた順に2nビット毎に分割して値A[1],...,値A[a]を生成する。
 分割部41は、暗号文Cを予め決められた順にnビット毎に分割して値C[1],...,値C[c]を生成する。ここでは、分割部41は、暗号文Cを先頭から順にnビット毎に分割して値C[1],...,値C[c]を生成する。したがって、値C[1],値C[2],...,値C[c-1]はそれぞれnビットの値であり、値C[c]は1ビット以上nビット以下の値である。また、暗号文Cは、値C[1],値C[2],...,値C[c]をビット結合した値である。
 <平文生成処理>
 図15及び図16を参照して、実施の形態1に係る平文生成処理を説明する。
 平文生成処理では、置換関数Pと、置換関数Fと、置換関数Rとは、暗号文生成処理と同じ関数が用いられる。
 (ステップS241)
 平文要素生成部44は、公開データ処理で生成された値Ht及び値Hbを取得する。平文要素生成部44は、値Htを値T[0]に設定し、値Hbを値B[0]に設定する。
 (ステップS242)
 平文要素生成部44は、暗号文Cのビット長が0であるか否かを判定する。
 平文要素生成部44は、暗号文Cのビット長が0である場合には、暗号文Cを空列として、処理をステップS251に進める。一方、平文要素生成部44は、暗号文Cのビット長が0でない場合には、処理をステップS243に進める。
 (ステップS243)
 平文要素生成部44は、図14のステップS202で暗号文Cが分割された数である分割数cが1であるか否かを判定する。図14のステップS202では、暗号文Cが値C[1],...,値C[c]の“c”個に分割された。分割数cは、この“c”個を表す。
 平文要素生成部44は、分割数cが1である場合には、処理をステップS245に進める。一方、平文要素生成部44は、分割数cが1でない場合には、処理をステップS244に進める。
 (ステップS244)
 平文要素生成部44は、i=1,...,c-1の各整数iについて昇順に、(1)から(3)を実行する。
 (1)平文要素生成部44は、値T[i-1]を鍵として値B[i-1]をブロック暗号Eによって暗号化して値B[i]を生成する。
 (2)平文要素生成部44は、値C[i]と値B[i]とから値M[i]を生成する。具体的には、平文要素生成部44は、値C[i]と値B[i]との排他的論理和を計算して、値M[i]を生成する。
 (3)平文要素生成部44は、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値B[i]を置換関数Fで変換した値F(B[i])と、値M[i]とからnビットの値T[i]を生成する。具体的には、平文要素生成部44は、値P(T[i-1])と値F(B[i])と値M[i]との排他的論理和を計算して、値T[i]を生成する。
 (ステップS245)
 平文要素生成部44は、値T[c-1]を鍵として値B[c-1]をブロック暗号Eによって暗号化して値B[c]を生成する。
 (ステップS246)
 平文要素生成部44は、値C[c]のビット長がnである場合には、値B[c]を置換関数Rを1回適用して変換した値R[1](B[c])を値R(B[c])として生成する。一方、値C[c]のビット長がnでない場合には、値B[c]を置換関数Rを2回適用して変換した値R[2](B[c])を値R(B[c])として生成する。
 (ステップS247)
 平文要素生成部44は、値R(B[c])の予め決められた位置の|C[c]|ビットを抽出して値B’[c]に設定する。例えば、平文要素生成部44は、値R(B[c])のうち先頭の|C[c]|ビットを値B’[c]に設定する、あるいは、値R(B[c])のうち後ろの|C[c]|ビットを値B’[c]に設定する。
 (ステップS248)
 平文要素生成部44は、値C[c]と値B’[c]とから値M[c]を生成する。具体的には、平文要素生成部44は、値C[c]と値B’[c]との排他的論理和を計算して、値M[c]を生成する。
 (ステップS249)
 平文生成部45は、i=1,...,cについての値M[i]を結合して平文Mを生成する。例えば、平文生成部45は、M=M[1]||M[2]||...||M[c]を計算することにより、平文Mを生成する。ここで、||は結合を表す。
 (ステップS250)
 平文要素生成部44は、値C[c]にビットをパディングして得られたnビットの値C’[c]を生成する。つまり、平文要素生成部44は、C’[c]=pad[n](C[c])を計算する。
 そして、平文要素生成部44は、値T「c-1]を置換関数Pで変換した値P(T[c-1])と、値R(B[c])を置換関数Fで変換した値F(R(B[c]))と、値C’[c]とから値T[c]を生成する。具体的には、平文要素生成部44は、値P(T[c-1])と値F(R(B[c]))と値C’「c]との排他的論理和を計算して、値T「c]を生成する。
 (ステップS251)
 平文要素生成部44は、値T[c]を値Etに設定し、値R(B[c])を値Ebに設定する。そして、平文要素生成部44は、値Et及び値Ebを出力する。
 なお、暗号文Cのビット長が0である場合には、値T[0]が値Etに設定され、値B[0]が値Ebに設定される。
 <改ざん検知処理>
 図17及び図18を参照して、実施の形態1に係る改ざん検知処理を説明する。
 ステップS261からステップS264の処理は、図12のステップS161からステップS164の処理と同じである。つまり、認証子生成部46によって、図12のステップS161からステップS164の処理と同じ処理が行われ、認証子Tagが生成される。ここで生成された認証子Tagを認証子Tag’と書く。
 (ステップS265)
 認証子生成部46は、図14のステップS201で取得された認証子Tagと、ステップS264で生成された認証子Tag’とが一致した場合には、平文生成処理で生成された平文Mを出力する。一方、認証子生成部46は、図14のステップS201で取得された認証子Tagと、ステップS264で生成された認証子Tag’とが一致しない場合には、“reject”を出力する。
 ***実施の形態1の効果***
 以上のように、実施の形態1に係る暗号化装置10及び復号装置30は、認証暗号アルゴリズムを実現する。この認証暗号アルゴリズムでは、内部で更新されるメモリのサイズが2nビットである。これにより、この認証暗号アルゴリズムは、オンライン計算の安全性レベル及びオフライン計算の安全性レベルがともに最適のnビットであり、メモリサイズが最小である2nビットとなるブロック暗号を用いた認証暗号アルゴリズムとなっている。
 なお、オンライン計算の安全性レベルを最適にするためには、認証暗号アルゴリズムの内部で更新されるメモリのサイズは、バースデーパラドックスより、2nビット以上必要である。特許文献1に記載された認証暗号アルゴリズムでは、内部で更新されるメモリのサイズがnビットのため、オンライン計算の安全性レベルがn/2ビットとなる。非特許文献3認証暗号アルゴリズムでは、内部で更新されるメモリのサイズを3nビットのため、オンライン計算の安全性レベルがnビットとなる。しかし、非特許文献3では、メモリサイズが3nビット必要になっており、最小ではない。
 図4を参照して、実施の形態1に係る暗号化装置10及び復号装置30によって実現される認証暗号アルゴリズムでは、内部で更新されるメモリのサイズが2nビットとなることを説明する。
 図4に示す処理の開始時において、値Yが格納されているメモリをメモリ1、値Xが格納されているメモリをメモリ2とする。
 まず、U=E(Y,X)が計算される。すると、メモリ1には、値Uが格納され、メモリ2には、アップデートされた値Yが格納される。ここで、暗号化関数Eの内部のメモリサイズは2nビットであり、メモリ2の値を巻き戻して元の値Yを復元可能であるという条件が成立するものとする。この条件は、AESといった現在提案されているほぼすべてのブロック暗号のアルゴリズムが満たしている条件である。
 次に、メモリ2の値から元の値Yが復元される。すると、メモリ1には、値Uが格納され、メモリ2には、元の値Yが格納される。次に、置換関数Pを用いて値Yを変換した値P(Y)が計算され、置換関数G及び置換関数Fを用いて値Uを変換した値F(G(U))が計算される。すると、メモリ1には、値F(G(U))が格納され、メモリ2には、値P(Y)が格納される。次に、値P(Y)と値F(G(U))との排他的論理和が計算され、値Wが得られる。すると、メモリ1には、値Wが格納され、メモリ2には、値P(Y)が格納される。最後に、値F(G(U))から置換関数Fの逆の計算がされ、値Z=G(U)が復元される。すると、メモリ1には、値Wが格納され、メモリ2には、値Zが格納される。
 以上のように、図4の処理は、サイズが2nビットのメモリを用いて計算が可能である。実施の形態1では、認証暗号アルゴリズムは、図4の処理を繰り返し実行することにより実現される。したがって、認証暗号アルゴリズムは、サイズが2nビットのメモリを用いて計算が可能である。
 ***他の構成***
 <変形例1>
 実施の形態1では、各機能構成要素がソフトウェアで実現された。しかし、変形例1として、各機能構成要素はハードウェアで実現されてもよい。この変形例1について、実施の形態1と異なる点を説明する。
 図19を参照して、変形例1に係る暗号化装置10の構成を説明する。
 各機能構成要素がハードウェアで実現される場合には、暗号化装置10は、プロセッサ11とメモリ12とストレージ13とに代えて、電子回路15を備える。電子回路15は、各機能構成要素と、メモリ12と、ストレージ13との機能とを実現する専用の回路である。
 図20を参照して、変形例1に係る復号装置30の構成を説明する。
 各機能構成要素がハードウェアで実現される場合には、復号装置30は、プロセッサ31とメモリ32とストレージ33とに代えて、電子回路35を備える。電子回路35は、各機能構成要素と、メモリ32と、ストレージ33との機能とを実現する専用の回路である。
 電子回路15,35としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)が想定される。
 各機能構成要素を1つの電子回路15,35で実現してもよいし、各機能構成要素を複数の電子回路15,35に分散させて実現してもよい。
 例えば、図21に示すように、暗号化装置10は、電子回路15として、ブロック暗号Eを計算するブロック暗号プロセッサと、分割処理を行う分割処理プロセッサと、初期値生成処理を行う初期値生成処理プロセッサと、公開データ処理を行う公開データ処理プロセッサと、暗号文生成処理を行う暗号文生成処理プロセッサと、認証子生成処理を行う認証子生成処理プロセッサとを備える構成とすることが考えられる。同様に、図22に示すように、復号装置30は、電子回路35として、ブロック暗号Eを計算するブロック暗号プロセッサと、分割処理を行う分割処理プロセッサと、初期値生成処理を行う初期値生成処理プロセッサと、公開データ処理を行う公開データ処理プロセッサと、平文生成処理を行う平文生成処理プロセッサと、改ざん検知処理を行う改ざん検知処理プロセッサとを備える構成とすることが考えられる。
 <変形例2>
 変形例2として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
 プロセッサ11,31とメモリ12,32とストレージ13,33と電子回路15,35とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
 なお、以上の説明における「部」を、「回路」、「工程」、「手順」、「処理」又は「処理回路」に読み替えてもよい。
 以上、本開示の実施の形態及び変形例について説明した。これらの実施の形態及び変形例のうち、いくつかを組み合わせて実施してもよい。また、いずれか1つ又はいくつかを部分的に実施してもよい。なお、本開示は、以上の実施の形態及び変形例に限定されるものではなく、必要に応じて種々の変更が可能である。
 10 暗号化装置、11 プロセッサ、12 メモリ、13 ストレージ、14 入出力インタフェース、15 電子回路、21 分割部、22 初期値生成部、23 公開データ処理部、24 暗号要素生成部、25 暗号文生成部、26 認証子生成部、30 復号装置、31 プロセッサ、32 メモリ、33 ストレージ、34 入出力インタフェース、35 電子回路、41 分割部、42 初期値生成部、43 公開データ処理部、44 平文要素生成部、45 平文生成部、46 認証子生成部。

Claims (18)

  1.  平文Mを順にnビット毎に分割して値M[1],...,値M[m]を生成する分割部と、
     nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割部によって生成された値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する暗号要素生成部と、
     前記暗号要素生成部によって生成されたi=1,...,mについての値C[i]を結合して暗号文Cを生成する暗号文生成部と、
     値T[m]と値B[m]とから前記暗号文生成部によって生成された前記暗号文Cの改ざんを検知するための認証子Tagを生成する認証子生成部と
    を備える暗号化装置。
  2.  前記暗号要素生成部は、i=1,...,m-1の各整数iについて昇順に、前記値B[i]と前記値M[i]との排他的論理和を計算して前記値C[i]を生成し、前記値B[m]を置換関数Rによって変換した値R(B[m])から前記値M[m]のビット長|M[m]|だけ抽出した値B’[m]と前記値M[m]との排他的論理和を計算して値C[m]を生成する
    請求項1に記載の暗号化装置。
  3.  前記認証子生成部は、前記値T[m]を鍵として前記値B[m]をブロック暗号によって暗号化してnビットの値B[m+1]を生成し、前記値T[m]を置換関数Pで変換した値P(T[m])と、値B[m+1]を置換関数Fで変換した値F(B[m+1])とから前記認証子Tagを生成する
    請求項1又は2に記載の暗号化装置。
  4.  前記認証子生成部は、前記値T[m]を鍵として前記値B[m]をブロック暗号によって暗号化してnビットの値B[m+1]を生成し、前記値B[m+1]を前記認証子Tagに設定する
    請求項1又は2に記載の暗号化装置。
  5.  前記分割部は、公開データAを順に2nビット毎に分割して値A[1],...,値A[a]を生成し、
     前記暗号化装置は、さらに、
     nビットの値IVtを値T[0]とし、nビットの値IVbを値B[0]として、i=1,...,a-1の各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化して得られた値E(B[i-1])と、値A[i]のうちのnビットの値A[i,b]とからnビットの値B[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値E(B[i-1])を置換関数Fで変換した値F(E(B[i-1]))と、値A[i]のうちの前記値A[i,b]以外のnビットである値A[i,t]とからnビットの値T[i]を生成し、値T[a-1]と値B[a-1]と値A[a]とから前記値Htと前記値Hbとを生成する公開データ処理部
    を備える請求項1から4までのいずれか1項に記載の暗号化装置。
  6.  前記公開データ処理部は、前記値T[a-1]を鍵として値B[a-1]をブロック暗号によって暗号化して得られた値E(B[a-1])を置換関数Qによって変換した値Q(E(B[a-1]))と、前記値A[a]にビットをパディングして得られた2nビットの値A’[a]のうちのnビットの値A’[a,b]とから前記値Btを生成し、前記値Q(E(B[a-1]))を置換関数Fで変換した値F(値Q(E(B[a-1])))と、値A’[a]のうちの前記値A’[a,b]以外のnビットである値A’[a,t]とから前記値Htを生成する
    請求項5に記載の暗号化装置。
  7.  前記暗号化装置は、さらに、
     nビットの鍵Kを用いて、nビットのナンスNをブロック暗号Eによって暗号化して得られた値E(N)と、前記公開データAと前記平文Mとに応じた値idとから前記値IVbを生成し、鍵Kを置換関数Pで変換した値P(K)と、前記値E(N)を置換関数Fで変換した値F(E[N])とから前記値IVtを生成する初期値生成部
    を備える請求項5又は6に記載の暗号化装置。
  8.  暗号文Cを順にnビット毎に分割して値C[1],...,値C[c]を生成する分割部と、
     nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,cの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割部によって生成された値C[i]とから値M[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する平文要素生成部と、
     前記平文要素生成部によって生成されたi=1,...,cについての値M[i]を結合して平文Mを生成する平文生成部と、
     値T[c]と値B[c]とから前記平文生成部によって生成された前記平文Mの改ざんを検知するための認証子Tag’を生成する認証子生成部と
    を備える復号装置。
  9.  前記平文要素生成部は、i=1,...,c-1の各整数iについて昇順に、前記値B[i]と前記値C[i]との排他的論理和を計算して前記値M[i]を生成し、前記値B[c]を置換関数Rによって変換した値R(B[c])から前記値C[c]のビット長|C[c]|だけ抽出した値B’[c]と前記値C[c]との排他的論理和を計算して値M[c]を計算する
    請求項8に記載の復号装置。
  10.  前記認証子生成部は、前記値T[c]を鍵として前記値B[c]をブロック暗号によって暗号化してnビットの値B[c+1]を生成し、前記値T[c]を置換関数Pで変換した値P(T[c])と、値B[c+1]を置換関数Fで変換した値F(B[c+1])とから前記認証子Tag’を生成する
    請求項8又は9に記載の復号装置。
  11.  前記認証子生成部は、前記値T[c]を鍵として前記値B[c]をブロック暗号によって暗号化してnビットの値B[c+1]を生成し、前記値B[c+1]を前記認証子Tag’に設定する
    請求項8又は9に記載の復号装置。
  12.  前記分割部は、公開データAを順に2nビット毎に分割して値A[1],...,値A[a]を生成し、
     前記復号装置は、さらに、
     nビットの値IVtを値T[0]とし、nビットの値IVbを値B[0]として、i=1,...,a-1の各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化して得られた値E(B[i-1])と、値A[i]のうちのnビットの値A[i,b]とからnビットの値B[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値E(B[i-1])を置換関数Fで変換した値F(E(B[i-1]))と、値A[i]のうちの前記値A[i,b]以外のnビットである値A[i,t]とからnビットの値T[i]を生成し、値T[a-1]と値B[a-1]と値A[a]とから前記値Htと前記値Hbとを生成する公開データ処理部
    を備える請求項8から11までのいずれか1項に記載の復号装置。
  13.  前記公開データ処理部は、前記値T[a-1]を鍵として値B[a-1]をブロック暗号によって暗号化して得られた値E(B[a-1])を置換関数Qによって変換した値Q(E(B[a-1]))と、前記値A[a]にビットをパディングして得られた2nビットの値A’[a]のうちのnビットの値A’[a,b]とから前記値Btを生成し、前記値Q(E(B[a-1]))を置換関数Fで変換した値F(値Q(E(B[a-1])))と、値A’[a]のうちの前記値A’[a,b]以外のnビットである値A’[a,t]とから前記値Htを生成する
    請求項12に記載の復号装置。
  14.  前記復号装置は、さらに、
     nビットの鍵Kを用いて、nビットのナンスNをブロック暗号Eによって暗号化して得られた値E(N)と、前記公開データAと前記暗号文Cとに応じた値idとから前記値IVbを生成し、鍵Kを置換関数Pで変換した値P(K)と、前記値E(N)を置換関数Fで変換した値F(E[N])とから前記値IVtを生成する初期値生成部
    を備える請求項12又は13に記載の復号装置。
  15.  コンピュータが、平文Mを順にnビット毎に分割して値M[1],...,値M[m]を生成し、
     コンピュータが、nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成し、
     コンピュータが、i=1,...,mについての値C[i]を結合して暗号文Cを生成し、
     コンピュータが、値T[m]と値B[m]とから前記暗号文Cの改ざんを検知するための認証子Tagを生成する暗号化方法。
  16.  平文Mを順にnビット毎に分割して値M[1],...,値M[m]を生成する分割処理と、
     nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割処理によって生成された値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する暗号要素生成処理と、
     前記暗号要素生成処理によって生成されたi=1,...,mについての値C[i]を結合して暗号文Cを生成する暗号文生成処理と、
     値T[m]と値B[m]とから前記暗号文生成処理によって生成された前記暗号文Cの改ざんを検知するための認証子Tagを生成する認証子生成処理と
    を行う暗号化装置としてコンピュータを機能させる暗号化プログラム。
  17.  コンピュータが、暗号文Cを順にnビット毎に分割して値C[1],...,値C[c]を生成し、
     コンピュータが、nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,cの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、値C[i]とから値M[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成し、
     コンピュータが、i=1,...,cについての値M[i]を結合して平文Mを生成し、
     コンピュータが、値T[c]と値B[c]とから前記平文Mの改ざんを検知するための認証子Tag’を生成する復号方法。
  18.  暗号文Cを順にnビット毎に分割して値C[1],...,値C[c]を生成する分割処理と、
     nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,cの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割処理によって生成された値C[i]とから値M[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する平文要素生成処理と、
     前記平文要素生成処理によって生成されたi=1,...,cについての値M[i]を結合して平文Mを生成する平文生成処理と、
     値T[c]と値B[c]とから前記平文生成処理によって生成された前記平文Mの改ざんを検知するための認証子Tag’を生成する認証子生成処理と
    を行う復号装置としてコンピュータを機能させる復号プログラム。
PCT/JP2021/015013 2021-04-09 2021-04-09 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム WO2022215249A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202180096330.3A CN117083834A (zh) 2021-04-09 2021-04-09 加密装置、解密装置、加密方法、加密程序、解密方法和解密程序
JP2023512624A JP7317261B2 (ja) 2021-04-09 2021-04-09 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム
PCT/JP2021/015013 WO2022215249A1 (ja) 2021-04-09 2021-04-09 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム
DE112021007029.0T DE112021007029T5 (de) 2021-04-09 2021-04-09 Verschlüsselungseinrichtung, entschlüsselungseinrichtung, verschlüsselungsverfahren, verschlüsselungsprogramm, entschlüsselungsverfahren, und entschlüsselungsprogramm
US18/231,626 US20230388103A1 (en) 2021-04-09 2023-08-08 Encryption device, decryption device, encryption method, decryption method, and computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/015013 WO2022215249A1 (ja) 2021-04-09 2021-04-09 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/231,626 Continuation US20230388103A1 (en) 2021-04-09 2023-08-08 Encryption device, decryption device, encryption method, decryption method, and computer readable medium

Publications (1)

Publication Number Publication Date
WO2022215249A1 true WO2022215249A1 (ja) 2022-10-13

Family

ID=83545298

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/015013 WO2022215249A1 (ja) 2021-04-09 2021-04-09 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム

Country Status (5)

Country Link
US (1) US20230388103A1 (ja)
JP (1) JP7317261B2 (ja)
CN (1) CN117083834A (ja)
DE (1) DE112021007029T5 (ja)
WO (1) WO2022215249A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019043921A1 (ja) * 2017-09-01 2019-03-07 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3324660A4 (en) 2015-08-21 2018-07-04 Huawei Technologies Co., Ltd. Communication control method and apparatus, terminal, and network platform

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019043921A1 (ja) * 2017-09-01 2019-03-07 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHAKRABORTI AVIK, ET AL.: "From Combined to Hybrid: Making Feedback-based AE even Smaller | IACR Transactions on Symmetric Cryptology", IACR TRANSACTIONS ON SYMMETRIC CRYPTOLOGY, 22 June 2020 (2020-06-22), pages 417 - 445, XP055978087, Retrieved from the Internet <URL:https://tosc.iacr.org/index.php/ToSC/article/view/8626> [retrieved on 20221105] *
IWATA TETSU, ET AL.: " CLOC and SILC v3 ", CLOC AND SILC, 15 September 2016 (2016-09-15), XP055978086, Retrieved from the Internet <URL:https://competitions.cr.yp.to/round3/clocsilcv3.pdf> [retrieved on 20221105] *

Also Published As

Publication number Publication date
CN117083834A (zh) 2023-11-17
JP7317261B2 (ja) 2023-07-28
DE112021007029T5 (de) 2023-12-14
US20230388103A1 (en) 2023-11-30
JPWO2022215249A1 (ja) 2022-10-13

Similar Documents

Publication Publication Date Title
TWI734368B (zh) 實現隱私保護的數據同態加解密方法及裝置
JP6386198B1 (ja) 暗号化装置及び復号装置
JP2015035072A (ja) 検索可能暗号処理システム及び方法
EP3661115B1 (en) Encryption device, decryption device, encryption method, decryption method, encryption program, and decryption program
JPWO2016088453A1 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
WO2021129470A1 (zh) 基于多项式完全同态的二进制数据加密系统及方法
JP2006311383A (ja) データ管理方法、データ管理システムおよびデータ管理装置
US8325913B2 (en) System and method of authentication
US11876888B2 (en) Encryption device, decryption device, encryption method, decryption method, and computer readable medium
JP7317261B2 (ja) 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム
JP7325689B2 (ja) 暗号文変換システム、変換鍵生成方法、及び、変換鍵生成プログラム
JP6797337B2 (ja) メッセージ認証装置、メッセージ認証方法及びメッセージ認証プログラム
JP6203387B2 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
Kim et al. A modified exhaustive search on a password system using SHA-1
JP2015082077A (ja) 暗号化装置、制御方法、及びプログラム
US11522675B2 (en) Apparatus and method for encryption and decryption based on tweak converter to which key table is applied
JP6949276B2 (ja) 再暗号化装置、再暗号化方法、再暗号化プログラム及び暗号システム
Vincy et al. Encryption Model Converting Secret Message to a Single Character
Balaji et al. ESCET: Enhanced Symmetric Convergent Encryption Technique To Provide Secured Deduplicated Data In Public Cloud Storage
JP2004347885A (ja) 暗号化装置処理方法、暗号復号装置処理方法、これらの装置及びプログラム
JP2022053676A (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: 21936053

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2023512624

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 202180096330.3

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 112021007029

Country of ref document: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21936053

Country of ref document: EP

Kind code of ref document: A1