WO2022044464A1 - 暗号処理装置、暗号処理方法、及び暗号処理プログラム - Google Patents

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

Info

Publication number
WO2022044464A1
WO2022044464A1 PCT/JP2021/020522 JP2021020522W WO2022044464A1 WO 2022044464 A1 WO2022044464 A1 WO 2022044464A1 JP 2021020522 W JP2021020522 W JP 2021020522W WO 2022044464 A1 WO2022044464 A1 WO 2022044464A1
Authority
WO
WIPO (PCT)
Prior art keywords
ciphertext
plaintext
encryption
values
tlwe
Prior art date
Application number
PCT/JP2021/020522
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
Priority claimed from JP2021069047A external-priority patent/JP7069460B2/ja
Application filed by 株式会社アクセル filed Critical 株式会社アクセル
Priority to US18/043,007 priority Critical patent/US20240039693A1/en
Publication of WO2022044464A1 publication Critical patent/WO2022044464A1/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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme

Definitions

  • the present invention relates to an encryption processing device for processing ciphertext, an encryption processing method, and an encryption processing program.
  • Homomorphic Encryption is an encryption method that can process encrypted data without decrypting it.
  • Cryptography that has operations between ciphers that correspond to additions between plain sentences is an additive homomorphic encryption
  • cryptography that has operations between ciphers that correspond to multiplication between plain sentences is a multiplication homomorphic encryption.
  • Additive homomorphic encryption and multiplicative homomorphic encryption that perform only additive operations (addition, subtraction) and multiplication operations (multiplication) by regarding the finite cyclic group as an integer have been known for a long time. Since the finite cyclic group can be multiplied by an integer by repeating addition, it is possible to multiply by an integer of "plaintext", and by repeating multiplication, it is possible to perform a power calculation of "plaintext”.
  • Fully Homomorphic Encryption processes both additive operations (addition, subtraction) and multiplication operations (multiplication) while they are encrypted.
  • Fully homomorphic encryption uses somewhat homomorphic encryption, which can be added, subtracted, and multiplied multiple times, for example, based on the LWE problem.
  • somewhat homomorphic encryption consists of adding a small error to the plaintext that is not a problem for decryption at the time of encryption. Note that somewhat homomorphic encryption is not limited to LWE encryption.
  • homomorphic encryption includes Bit-wise type homomorphic encryption that has two values as plaintext and is based on logical operation, and Integer-wise type homomorphic encryption that uses a whole integer as plaintext as one ciphertext.
  • the TFHE shown in Non-Patent Document 1 is a Bit-wise type.
  • Bit-wise type homomorphic encryption one ciphertext can have only 1-bit information, so for example, when dealing with a 32-bit integer, it is necessary to process 32 ciphertexts. Addition and subtraction, multiplication and comparison between integers are often used in various data processing.
  • the calculation is performed with the image of designing a logic circuit, but in the case of addition / subtraction of a 32 bit integer, one half adder and 31 full adders are used. For multiplication, use nearly 32 squared (1024) full adders. Therefore, in order to reduce the processing time of fully homomorphic encryption and further improve efficiency, it is necessary to speed up the operation of the full adder including bootstrapping.
  • the present invention has been made in view of such circumstances, and one aspect of the present invention is to speed up the operation of the full adder required for fully homomorphic encryption and reduce the processing time of fully homomorphic encryption. do.
  • the present invention is a cryptographic processing apparatus that processes a ciphertext
  • the ciphertext is a completely homomorphic encryption text that has binary values as a plain text and can perform a logical operation without decrypting the ciphertext.
  • the number of calculation processes required for the operation is increased by using the multi-valued logical operation that outputs a temporary ciphertext based on the ciphertext having multiple values more than binary as a plain sentence. It features a cryptographic processing device that reduces.
  • the cryptographic processing apparatus of this embodiment performs an operation of fully homomorphic encryption by using a full adder.
  • Homomorphic encryption is a homomorphic encryption that allows addition, subtraction, and multiplication operations (while still encrypted).
  • the AND circuit unit and the XOR circuit unit that make up the full adder included in the encryption processing device it is possible to perform an operation for obtaining an AND for a Bit-wise type homomorphic encryption and an operation for obtaining an XOR.
  • the cryptographic processing apparatus of the present embodiment constitutes a homomorphic adder by increasing the types of values that can be taken by the temporary ciphertext after Gate Bootstrapping. Reduce the number of homomorphic operations. As a result, the cryptographic processing apparatus of the present embodiment can reduce the number of Gate Bootstrapping performed in the subsequent stage of each homomorphic operation and speed up the operation of the full adder.
  • FIG. 1 is a diagram illustrating a full adder circuit with a minimum number of logical operation elements.
  • FIG. 1 describes a full adder in a hardware circuit using logical operation elements, it may be considered as a full adder program executed by a CPU in which the full adder is mounted by software.
  • the full adder is implemented by software, the operation is performed with the image of designing a logic circuit (logic gate) for the ciphertext.
  • the full adder circuit 50 is composed of two half adders 51 and 52 and one OR circuit unit (arithmetic processing unit for obtaining OR) 53.
  • the first half adder 51 includes an AND circuit unit (calculation processing unit for obtaining AND) 51A and an XOR circuit unit (calculation processing unit for obtaining XOR) 51B.
  • the second half adder 52 includes an AND circuit unit 52 (arithmetic processing unit for obtaining AND) A and an XOR circuit unit (calculation processing unit for obtaining XOR) 52B.
  • the input A and the input B to be added are input to the AND circuit unit 51A and the XOR circuit unit 51B of the first half adder 51.
  • the output of the AND circuit unit 51A of the first half adder 51 and the output of the AND circuit unit 52A of the second half adder 52 are input to the subsequent OR circuit unit 53, and are carried out from the OR circuit unit 53.
  • C 0 (Carry out) is output.
  • the output from the XOR circuit unit 51B of the first half adder 51 and the carry input Ci (Carry in) are input to the AND circuit unit 52A and the XOR circuit unit 52B of the second half adder 52.
  • the output S (Sum) of the full adder circuit 50 is output from the XOR circuit unit 52B of the second half adder 52.
  • the full adder 50 includes two AND circuit units, two XOR circuit units, and an OR circuit unit, and has a total of five logical operation elements (processing units corresponding to the logical operation elements). It is equipped with. Therefore, the operation time of five logical operation elements is required for the operation of one full adder. In the case of TFHE shown in the above paper, it takes about 16 ms to calculate one logical operation element, and about 80 ms is required for the entire adder 50 including five logical operation elements. When used for the operation of fully homomorphic encryption by TFHE, it is necessary to perform Gate Boot stripping in the subsequent stage of the operation (quasi-homomorphic operation) in the front stage of the five logical operation elements.
  • Gate Bootstrapping occupies almost all the processing time of homomorphic logical operations. Therefore, it may be considered that the calculation of the fully homomorphic encryption by the full adder circuit 50 in FIG. 1 requires the calculation time for 5 times of Gate Bootstrapping. Since there is no dependency between the operations of the AND circuit section and the XOR circuit section that make up the half adder 51 and the half adder 52, when the full adder is configured by software, it is paralleled by a method such as multithreading. You can perform operations. By parallel operation, the operation of the half adder can be performed in the operation time for one logical operation element. Therefore, the operation of one full adder shown in FIG. 1 can be executed in the operation time of three logical operation elements. However, even in this case, it takes 48 ms to calculate one full adder. This is almost the same as the calculation time for three Gate Bootstrapping operations.
  • TFHE is a Bit-wise type cipher based on a logic gate such as an AND circuit unit and an XOR circuit unit.
  • a full adder By using a full adder, it is possible to support all of the addition, subtraction, multiplication and division of integers (four arithmetic operations) and comparison operations.
  • Bit-wise type encryption one ciphertext can have only 1 bit of information.
  • Addition, subtraction, multiplication, division and comparison between integers are often used in various data processing, but the data handled is usually one with a large bit length. For example, if you want to handle a 32-bit integer, you need to process 32 ciphertexts.
  • the cryptographic processing apparatus of the present embodiment is improved so that Gate Bootstrapping performed for each calculation can output multiple values, especially in the full adder used for the calculation of fully homomorphic encryption. Reduce the number of homomorphic operations. As a result, the cryptographic processing apparatus of the present embodiment can reduce the number of times of Gate Bootstrapping, which requires a long calculation time, in the subsequent stage of the homomorphic encryption, and can significantly reduce the processing time of the fully homomorphic encryption.
  • FIG. 2 is a diagram illustrating a functional configuration of the encryption processing device of the present embodiment.
  • the encryption processing device 1 includes a control unit 10, a storage unit 20, a communication unit 25, and an input unit 26.
  • the control unit 10 includes a reception unit 11, a first calculation unit 12, a second calculation unit 13, a third calculation unit 14, a first Bootstrapping unit (first calculation unit) 15, and a second Bootstrapping unit (second calculation). Section 16), a third Bootstrapping section (third calculation section) 17, and an output section 18.
  • the reception unit 11 receives the input of the ciphertext to be calculated via the communication unit 25 and the input unit 26.
  • the first calculation unit 12 performs the first homomorphic operation on the input cipher received by the reception unit 11.
  • the second calculation unit 13 performs a second homomorphic operation on the temporary ciphertext and the carry input ciphertext output from the first Bootstrapping unit 15.
  • the third calculation unit 14 performs a third homomorphic operation on the temporary ciphertext and the carry input ciphertext output from the first Bootstrapping unit 15.
  • the first calculation unit 12, the second calculation unit 13, and the third calculation unit 14 perform the calculation (quasi-same type calculation) of the full adder by the logic gate (AND circuit unit, XOR circuit unit) described in FIG. 1 by software. It is an arithmetic processing unit to be realized. At least one of the first calculation unit 12, the second calculation unit 13, and the third calculation unit 14 may be realized by hardware.
  • the first Bootstrapping unit 15 performs the three-value Gate Bootstrapping process described below on the calculation result of the first calculation unit 12, and outputs a temporary ciphertext that can take the three values.
  • the second Bootstrapping unit 16 performs the binary Gate Bootstrapping process described below on the calculation result of the second calculation unit 13, and outputs the carry output CO as a new ciphertext that can take the binary value.
  • the third Bootstrapping unit 17 performs the binary Gate Bootstrapping process described below on the calculation result of the third calculation unit 14, and outputs the output S as a new ciphertext that can take the binary value.
  • the output unit 18 outputs the final calculation result to the outside of the encryption processing device 1 or to another processing process executed by the encryption processing device 1.
  • the storage unit 20 can store an input ciphertext, a temporary file, temporary data, and an output ciphertext used in the calculation of the full adder. Further, the encrypted database 60 can be stored in the storage unit 20.
  • the communication unit 25 connects the encryption processing device 1 to the network and enables communication with an external device. By storing the encrypted database 60 in the storage unit 20 and including the communication unit 25, the encryption processing device 1 can function as a database server. In this case, the encryption processing device 1 receives an encrypted query from the terminal device as an external device, searches the encrypted encrypted database 60, and responds to the terminal device with the encrypted search result. Can be done.
  • the input unit 26 inputs the ciphertext to be arithmetically processed to the encryption processing device 1.
  • FIG. 3 is a diagram illustrating in detail the arithmetic process of the full adder based on the functional configuration of FIG.
  • the ciphertexts ca, cb, and cc input to the encryption processing device 1 are all TLWE ciphertexts shown in the above paper.
  • the TLWE encryption is a Bit-wise type fully homomorphic encryption having a value of 0 or ⁇ (non-zero) as plaintext.
  • Various operations can be performed by logical operations using logic gates.
  • the encryption processing device 1 reduces the number of logical operations (quasi-homomorphic operations) by temporarily using a ciphertext that can take multiple values (for example, three values) as plaintext, and greatly increases the processing time of fully homomorphic encryption. Can be reduced to.
  • the three types of values that can be taken by the temporary code statement are temporary values for the entire adder, but they are values used in the logical operation (multi-value logical operation) of each logical gate and are included in the logical operation. Not a temporary value.
  • a ternary Gate Bootstrapping is used, which is an improvement of the (binary) Gate Bootstrapping presented in the paper of Non-Patent Document 1 (the above-mentioned paper) and enables a ternary output.
  • the TFHE Gate Bootstrapping presented in the above paper is described in detail below.
  • the input ciphertexts ca and cb are input to the first arithmetic unit 12 to perform a homomorphic operation, and the operation result (ciphertext ca + cb) is input to the first Bootstrapping unit 15 to perform trivalent Gate Bootstrapping.
  • the output of binary Gate Bootstrapping in the above paper is a ciphertext that can take either binary (0, ⁇ ) as plaintext.
  • the output of the three-value Gate Bootstrapping of the present embodiment is a temporary ciphertext ct that can take any one of the three values (0, ⁇ 1 , ⁇ 2 ) as a plaintext.
  • the temporary ciphertext ct which is the output of the three-value Gate Bootstrapping, is input to the second calculation unit 13 and the third calculation unit 14 in order to match with the ciphertext cc of the carry input Ci .
  • the output of the second calculation unit 13 is input to the second Bootstrapping unit 16, binary Gate Bootstrapping is performed, and the ciphertext cy of the carry output CO is output.
  • the output of the third calculation unit 14 is input to the third Bootstrapping unit 17, binary Gate Bootstrapping is performed, and the ciphertext cz of the output S is output.
  • the time required for the homomorphic operation by the second arithmetic unit 13 and the homomorphic arithmetic by the third arithmetic unit 14 is insignificant. Gate Bootstrapping consumes almost all processing time when processing a full adder using homomorphic operations.
  • the AND circuit section 51A, 52A, the XOR circuit section 51B, 52B, and the OR circuit section 53 are used in the subsequent stage. It is necessary to execute Gate Bootstrapping once for each and 5 times in total.
  • the encryption processing device 1 the number of homomorphic arithmetic processing is reduced to 3 in total by using the ternary Gate Bootstrapping by the first Bootstrapping unit 15 for the arithmetic of the full adder.
  • the number of times of Gate Bootstrapping which occupies almost all of the homomorphic arithmetic processing, can be reduced to 3 times in total.
  • the cryptographic processing apparatus 1 can reduce the calculation processing time by about 40% as compared with the full adder circuit 50 shown in FIG. Further, the encryption processing device 1 may execute the processing of the second calculation unit 13 and the second Bootstrapping unit 16 and the processing of the third calculation unit 14 and the third Bootstrapping unit 17 in parallel by multithread processing, respectively. In this case, the encryption processing device 1 can set the number of Bootstrapping stages, which occupy most of the processing time in the calculation of the full adder, to two stages. On the other hand, in the full adder circuit 50 shown in FIG.
  • the AND circuit unit 51A and the XOR circuit unit 51B and the AND circuit unit 52A and the XOR circuit unit 52B can be executed in parallel, respectively, but as a whole, the AND circuit unit 51A and the XOR circuit unit 52B can be executed in parallel.
  • the number of Bootstrapping stages is three. Therefore, even when parallel processing is used, the cryptographic processing device 1 can reduce the calculation processing time by about 33% as compared with the full adder circuit 50 shown in FIG. As described above, since Gate Bootstrapping occupies almost all of the calculation time of the full adder for fully homomorphic encryption, the cryptographic processing device 1 reduces the number of Gate Bootstrappings to significantly speed up the calculation of the full adder. Can be transformed into.
  • Gate Bootstrapping is a method for making fully homomorphic encryption practical, which was not practical due to the huge amount of data and calculation time.
  • the LWE (Learning with Errors) cipher is composed on the circumference group, and the cipher called "TLWE cipher" is used. It realizes various quasi-identical logical operations (and thus arbitrary operations such as addition and multiplication).
  • the Gate Bootstrapping input in TFHE is a TLWE ciphertext encrypted with a private key.
  • TFHE realizes fully homomorphic encryption (FHE) based on TLWE ciphertext.
  • the TLWE cipher is a variant of the LWE cipher (LWE cipher defined on a circle group), which is a type of lattice-based cryptography.
  • the TLWE cipher is an additive homomorphism, and it is known that an additive operation between TLWE-encrypted plaintexts can be performed without decrypting the ciphertext.
  • FIG. 4 is an image diagram illustrating a circle group that the TLWE cipher has as plain text.
  • the TLWE cipher advances from 0 with real accuracy and returns to 0 when it reaches 1, any non-zero (non-zero) point 0 on the circle group ⁇ T ⁇ shown in FIG. It has a real number ⁇ corresponding to a point as a plain sentence.
  • the TLWE cipher itself uses any point on the circle group as plaintext, and uses near 0 (including error) and around ⁇ (including error) as plaintext. Points on the circle group ⁇ T ⁇ are also referred to herein as "elements”.
  • the cryptographic processing device that handles TFHE executes general homomorphic operations such as additive operations as operations between such TLWE cryptographic statements, and the error of the operation result is kept within an appropriate range by Gate Bootstrapping again. Realizes fully homomorphic encryption (FHE) that allows logical operations (at the latter stage).
  • FHE fully homomorphic encryption
  • TLWE encryption Explain the TLWE cipher.
  • a vector [a] obtained by collecting N uniformly distributed random numbers is prepared.
  • a secret key [s] that collects N binary values of 0 and 1.
  • e is a random number with a Gaussian distribution (normal distribution) such that the mean value is plaintext ⁇ and the variance is ⁇ predetermined.
  • the average value of e when an infinite number of TLWE ciphertexts are generated for the same plaintext ⁇ is plaintext ⁇
  • is plaintext without error
  • e plaintext with error.
  • represents the inner product of the vector.
  • the TLWE ciphertext can be expressed as ([a], b).
  • This TLWE cipher is an additive homomorphism, and can perform an additive operation between plaintexts of a TLWE ciphertext without decrypting the ciphertext.
  • the above decryption function ⁇ is obtained by adding the two TLWE ciphertexts ([a], b) and ([a'], b') as they are to obtain ([a] + [a'], b + b').
  • the "trivial” such as ([0], ⁇ ) is a TLWE ciphertext that can be decrypted with any private key, that is, no matter what private key is used. It is a ciphertext that can decrypt the same plaintext. In ([0], ⁇ ), [0] represents a zero vector.
  • the "trivial ciphertext” can be treated as a TLWE ciphertext, but it can be said that the plaintext is practically contained as it is.
  • the "finite cyclic group" used in TFHE's Gate Bootstrapping will be described.
  • Gate Bootstrapping "remainder ring of polynomial ring” is used as a finite cyclic group.
  • the "quotient ring of a polynomial ring” is a finite cyclic group.
  • a polynomial of degree n is generally expressed as an n x n + an n-1 x n-1 + ... + a 0 . All these sets form a commutative group for the sum f (x) + g (x) of the polynomials.
  • the product f (x) g (x) of polynomials has the same properties as the commutative group, except that the inverse element does not always exist. Such things are called monoids.
  • TFHE a polynomial ring whose coefficient is a circle group ⁇ T ⁇ , which is a finite cyclic group, is used, and such a polynomial ring is expressed as T [X].
  • T (X) which is a polynomial ring
  • T [X] (X n +1) + T [X]
  • Remainder ring is obtained.
  • Polynomial F (X) ⁇ X n-1 + ⁇ X n- , using an arbitrary coefficient ⁇ ( ⁇ ⁇ T) as an element (element) of "remainder ring of polynomial ring" T [X] / (X n +1) 2 + ... + ⁇ X + ⁇ Take out. Multiplying the element F (X) of the quotient ring of the polynomial ring gives ⁇ X n-1 + ⁇ X n-2 + ... + ⁇ X- ⁇ , and the coefficient of the top term is inverted from plus to minus. Appears as a constant term. When X is further multiplied, the same thing happens again, such as ⁇ X n-1 + ⁇ X n-2 + ...
  • the polynomial F (X) ⁇ X n-1 + ⁇ X n-2 + ... + ⁇ X + ⁇ is a finite order of 2n in the ring “remainder ring of polynomial ring” T [X] / (X n +1). It is a cyclic group.
  • the cryptographic processing device realizes fully homomorphic encryption by utilizing the property of the polynomial F (X) based on such "remainder ring of polynomial ring".
  • TRLWE encryption Gate Bootstrapping uses a cipher called "TRLWE cipher" in addition to the TLWE cipher. Describes the TRLWE cipher.
  • the "R” in the TRLWE cipher means "ring”, and the TRLWE cipher is an LWE cipher composed of "rings”. Like the TLWE cipher, the TRLWE is an additive homomorphic encryption.
  • the "ring” in the TRLWE cipher is the above-mentioned "remainder ring of polynomial ring" T [X] / (X n + 1).
  • the elements (elements) of the "remainder ring of the polynomial ring" T [X] / (X n +1) are randomly selected.
  • n coefficients of the n-1 degree polynomial are selected from the circle group ⁇ T ⁇ with uniformly distributed random numbers. If the degree of the polynomial is n-1, it is not divided by X n + 1 and it is not necessary to consider the remainder. Therefore, the polynomial having the degree n-1 is defined as the polynomial a (X).
  • s (X) s n-1 X n-1 + s n-2 X n-2 + ... s 1 X + s 0
  • n random numbers e i are used as random numbers with a Gaussian distribution (normal distribution) whose mean value is plaintext ⁇ i and whose variance is ⁇ , and the following polynomial e (X) is constructed from these.
  • e (X) e n-1 X n-1 + en -2 X n-2 + ...
  • g (X) is defined so that ⁇ s is the source of T [X] / (X n + 1), which functions as a decoding function.
  • Gadget Decomposition Explain Gadget Decomposition.
  • the coefficient of the polynomial used in the TRLWE ciphertext is a real number of 0 or more and less than 1 which is an element of the circle group ⁇ T ⁇ in FIG. 4, and has only a fractional part.
  • the operation of decomposing this into several bits in binary notation is defined as Gadget Decomposition (Dec) in TFHE of the above paper.
  • Dec Gadget Decomposition
  • the Bootstrapping Key is used to encrypt the private key for use in Gate Bootstrapping.
  • each element of the secret key [s'] for encrypting the secret key [s] is set to 0 or 1 for use in Gate Bootstrapping. Select with two values.
  • the degree of the private key [s'] must be the same as the degree n of the polynomial used in the TRLWE cipher. Create a TRGSW ciphertext BK for each element of the private key [s].
  • the CMux function outputs the ciphertext of plaintext ⁇ 0 without decrypting it, and when si is 1, it outputs the ciphertext of plaintext ⁇ 1 without decrypting it.
  • the CMux function can calculate the ciphertext of plaintext ⁇ 0 or plaintext ⁇ 1 , but it is unknown which one is selected.
  • Binary Gate Bootstrapping of TFHE is performed using the various information described above.
  • Binary Gate Bootstrapping consists of the following three steps: (1) BlindRotate, (2) SampleExtract, and (3) key switching.
  • FIG. 5 is an operation image diagram of binary Gate Bootstrapping.
  • the binary Gate Bootstrapping reduces the error in the plaintext of the homomorphic operation result between the TLWE ciphertexts by the three steps described below.
  • "plaintext" means the calculation result of plaintext as a result of calculation between TLWE ciphertexts.
  • the plain text in the section from 0 to 0.25 (1/4) and 0.75 (3/4) to 1 in the circumference group ⁇ T ⁇ in FIG. 4 is converted into a TLWE cipher text of 0, and 0.25 (1).
  • the plain text in the section from / 4) to 0.75 (3/4) is converted into the encrypted text of 0.25 (1/4). During this conversion, the error added to the plaintext is in the range of ⁇ 1/16.
  • Blind Rotate Blind Rotate is the first step in Gate Bootstrapping.
  • BlindRotate is the process of creating a TRLWE ciphertext.
  • a trivial TRLWE ciphertext (0, T (X)) having a polynomial T (X) as a plaintext is obtained without decrypting a TRLWE ciphertext multiplied by X ⁇ s (c') .
  • "0" indicates a polynomial 0 of degree 0.
  • ⁇ s (c') is a plaintext obtained by applying the following LWE ciphertext c'to a decryption function.
  • 0 indicates a polynomial 0 of degree 0.
  • BK i which is the Bootstrapping Key described above
  • a i CMux (BK i , A i-1 , X a'i A i-1 ) is calculated in order. Again, since a'i is an integer, the power of X can be defined naturally.
  • the new TLWE cipher ([a "], b 1 ) was obtained with the same value as the constant term of the plaintext polynomial corresponding to the original TRLWE ciphertext An.
  • the TLWE ciphertext cs ([a "], b1) + ([0], ⁇ ), which is obtained by adding the obvious ciphertext ([0], ⁇ ) in which the plaintext is ⁇ to the obtained TLWE ciphertext. Is the output of Sample Extract.
  • the TLWE ciphertext cs obtained by Sample Extract in (2) is encrypted with the private key [s'] instead of the private key [s]. Therefore, it is necessary to replace the key of the TLWE ciphertext cs with the private key [s] and return to the encrypted state with the private key [s] without decrypting the TLWE ciphertext cs. Therefore, the key switching method will be described.
  • the secret key [s] of the TLWE ciphertext used for NAND operation was an Nth-order vector. Using this, the secret key [s'] of the nth-order vector when the Bootstrapping Key is created is encrypted.
  • the element of the circle group ⁇ T ⁇ the real number from 0 to 1 is encrypted as a value shifted to each digit when expressed in binary.
  • the private key is [s].
  • Numberer of digits t is a system parameter. When decrypted with the private key [s], Will be. This is the "key switching key”.
  • the number of elements of [a] is n as in the secret key [s']. If you convert this one by one to a fixed decimal number of t bits, Can be written in the format of.
  • TLWE ciphertext cx is calculated as the processing of the key switching body. Since the term ([0], b) is a trivial ciphertext, it is b when decrypted, and when the result of decrypting the TLWE ciphertext cx is calculated, Is. Since s'i is a constant with respect to j, squeeze it out. And substitute the formula when decomposed into fixed decimals above. as a result, It means that the key switching was successful.
  • the TLWE ciphertext cx obtained here is encrypted with the same private key [s] as the TLWE ciphertext c used as the input of Gate Bootstrapping.
  • the TLWE ciphertext encrypted with the private key [s] is returned, and if ⁇ s (c) is in the range of ⁇ 1/4, the plaintext ⁇ s (cx) becomes 0. If ⁇ s (c) is in the range of 1/2 ⁇ 1/4, the plaintext ⁇ s (cx) is 1/4.
  • the maximum value of the error does not depend on the input TLWE ciphertext c and is a value fixed by the system parameter. Therefore, the system parameters are set so that the maximum value of the error is within ⁇ 1/16, which is the same as the input TLWE ciphertext. This makes it possible to perform NAND operations as many times as necessary, and all operations including addition and multiplication are possible.
  • the error on the "plaintext" of the TLWE cipher output output from Gate Bootstrapping is the error added by integerizing the TLWE ciphertext, the error added by CMux, the error when it is converted to a fixed decimal by key switching, and the like. All of these errors can be constrained by the system parameters, and the system parameters can be adjusted so that the error considering all of them is ⁇ 1/16.
  • the above is the process of TFHE Gate Bootstrapping.
  • the number of Gate Bootstrapping is reduced by improving the binary Gate Bootstrapping in TFHE as described above and using the three-value Gate Bootstrapping for the calculation of the full adder.
  • the cryptographic processing device 1 is, in particular, in a full adder used for a fully homomorphic encryption operation, a cipher sentence in which Gate Bootstrapping performed for each homomorphic operation can take a multi-value (for example, three values) as a plain sentence.
  • the number of logical operations (homomorphic operations) itself can be reduced by improving the output.
  • the encryption processing device 1 can reduce the number of times of Gate Bootstrapping, which requires a long operation time, which is performed after the logical operation (homomorphic operation), and can significantly reduce the processing time of the completely homomorphic encryption. It reduces the number of logical operations (homomorphic operations) and significantly reduces the processing time of fully homomorphic encryption.
  • the trivalent Gate Bootstrapping of the present embodiment will be described in detail with reference to FIGS. 2 and 3.
  • TLWE ciphertexts ca, cb, and cc corresponding to plaintexts A, B, and C into the configuration of the full adder shown in FIG.
  • the TLWE ciphertexts ca, cb, and cc are additive homomorphic encryptions, and the sum of plaintexts can be calculated by calculating the sum of the ciphertexts.
  • These TLWE ciphertexts ca, cb, and cc are each generated by the binary Gate Bootstrapping described above, or are newly encrypted.
  • the plaintexts A, B, and C of the TLWE ciphertexts ca, cb, and cc are, for example, 0 or 1/4 in the circle group ⁇ T ⁇ in FIG. 4, and the error is included in ⁇ 1/16.
  • the first calculation unit 12 first calculates ca + cb + ([0], 1/8). As described above, ([0], 1/8) is a trivial TLWE ciphertext in which the same plaintext 1/8 can be obtained by the decryption function regardless of which secret key is used.
  • the error added to the plaintext is within ⁇ 1/8. This is because two errors of ca and cb ⁇ 1/16 are added.
  • FIG. 6 is an operation image diagram of trivalent Gate Bootstrapping.
  • the ternary Gate Bootstrapping can take a ternary value as a plaintext based on the circle group ⁇ T ⁇ of FIG. 4 (mapped on the circle group ⁇ T ⁇ ) TLWE ciphertext (described later).
  • Temporary ciphertext ct can be obtained.
  • the above 1/8 ⁇ 1/8 is 0 to 0.25 (1/4), and from this range in the circle group ⁇ T ⁇ , a TLWE ciphertext whose plaintext is "0" is obtained.
  • the plaintext of the non-zero ciphertext is set to 1/4 so that the TLWE ciphertext ct based on ca + cb can take the three values in the circumference group ⁇ T ⁇ as the plaintext.
  • the error of each of the TLWE ciphertext ca and the TLWE ciphertext cb is ⁇ 1/16, and the error of the ca + cb with respect to the plaintext is ⁇ 1/8.
  • Cryptographic processing apparatus 1 performs Blind Rotate as the first step of trivalent Gate Bootstrapping.
  • F (X) ⁇ X n-1 + ⁇ X n-2 ... + ⁇ X + ⁇
  • the encryption processing device 1 is used as a test vector in Blind Rotate of trivalent Gate Bootstrapping.
  • T1 (X) ⁇ 1 X n-1 + ⁇ 1 X n-2 + ... ⁇ 1 X (n / 2) + ⁇ 2 X (n / 2) -1 + ... ⁇ 2 X + ⁇ 2
  • ⁇ 1 1/2
  • ⁇ 2 1/4 Is used.
  • the coefficients ⁇ 1 and ⁇ 2 of the test vector polynomial T1 (X) are the values on the circle group ⁇ T ⁇ that can be taken by the plaintext of the TLWE ciphertext output by the ternary Gate Bootstrapping of the present embodiment, respectively.
  • the cryptographic processing apparatus 1 uses the test vector polynomial T1 (X) to perform Blind Rotate in the same manner as in the above paper to obtain a TRLWE ciphertext.
  • the polynomial T1 (X) by multiplying the polynomial T1 (X) by X, ⁇ 1 X n-1 + ⁇ 1 X n-2 + ...
  • the cryptographic processing apparatus 1 obtains the TRLWE ciphertext d having three kinds of values of 1/4, 1/2, and 3/4 as the constant terms of the plaintext polynomial in BlindRotate, and Sample Extract for the TRLWE ciphertext d. I do.
  • a trivial TLWE ciphertext [0], 1/8) whose plaintext is 1/8 is further added to the TLWE ciphertext obtained after the SampleExtract.
  • the encryption processing device 1 is self-evident that the plaintext is -1/4 for the TLWE ciphertext having three kinds of values of 1/4, 1/2, and 3/4 obtained in the middle. Add the TLWE ciphertext ([0], -1/4).
  • the encryption processing device 1 has three values of 0, 1/4, and 1/2 as plaintext as the output of the three-value Gate Bootstrapping, and the error added to the plaintext is included in the range of ⁇ 1/16.
  • an error of ⁇ 1/8 was added to the plaintext sum (a + b).
  • the ternary Gate Bootstrapping the error added to the plaintext in the new TLWE ciphertext ct is reduced to ⁇ 1/16, that is, the error in the same range as the original TLWE ciphertext ca and cb. I understand.
  • the TLWE ciphertext ct can be used again for logical operations.
  • the encryption processing apparatus 1 adds the carry input TLWE ciphertext cc to the TLWE ciphertext ct obtained as a result of the trivalent Gate Bootstrapping.
  • the second calculation unit 13 calculates ct + cc + ([0], -1/8), and the third calculation unit 14 calculates 2 ⁇ (ct + cc).
  • the second calculation unit 16 and the third calculation unit 17 are described in the above paper with respect to the output of the second calculation unit 13 and the output of the third calculation unit 14 (both are TLWE ciphers that can take binary values).
  • the number of Gate Bootstrapping which consumes almost all the operation time in the operation of the logical operation element, can be reduced to three times. If the full adder is implemented only by the binary Gate Bootstrapping in the above paper without performing the binary Gate Bootstrapping, it is necessary to execute the binary Gate Bootstrapping five times. In comparison, it was confirmed by experiments that the calculation time can be shortened by 40% by the method of this embodiment. In addition, since the latter two binary Gate Bootstrappings that process the carry output and the SUM output are not dependent on each other, by parallelizing them by multithread processing etc., the processing time for two Gate Bootstrappings is performed for the entire adder. Can be.
  • FIG. 7 is a flowchart illustrating a flow of arithmetic processing of the full adder executed by the cryptographic processing apparatus.
  • the plaintext in the section of 0 to 1/4, 3/4 to 1 in the circle group ⁇ T ⁇ is converted into a 0 TLWE ciphertext.
  • the plaintext in the section of 1/4 to 3/4 in the circle group ⁇ T ⁇ is converted into a 1/4 TLWE ciphertext.
  • the error added to the plaintext during this conversion is any value in the range of ⁇ 1/16.
  • the range of the circle group ⁇ T ⁇ described above is associated with a symbol used in (multi-valued) logical operations such as 0 and 1. That is, Will be.
  • the plaintext in the section from 0 to 1/4 in the circle group ⁇ T ⁇ is converted into a 0 TLWE ciphertext.
  • the plaintext in the section of 1/4 to 1/2 and 3/4 to 1 in the circle group ⁇ T ⁇ is converted into 1/4 TLWE ciphertext.
  • the plaintext in the section of 1/2 to 3/4 in the circle group ⁇ T ⁇ is converted into the TLWE ciphertext of 1/2.
  • the error added to the plaintext during this conversion is any value in the range of ⁇ 1/16.
  • the range of the circle group ⁇ T ⁇ described above is associated with symbols 0, 1, and 2 used in the (multi-valued) logical operation.
  • the range (including error) on the circle group ⁇ T ⁇ corresponds to either the binary or trivalent plaintext in the ciphertext.
  • the ciphertext is a vector having the form ([a], b), and the element of the vector is a point on the circle group.
  • Plaintext is also a point on the circle group ⁇ T ⁇ . Symbols 0, 1 and 2 used in the multi-valued logic operation correspond to a range on the circle group ⁇ T ⁇ , and the plaintext for a certain ciphertext points to any one point in the range. It is difficult to identify which point in the plaintext the plaintext refers to without the private key. This guarantees the strength of the TLWE ciphertext.
  • a plurality of ciphertexts can be collected and a plaintext can be derived as a simultaneous equation, and the strength of the TLWE ciphertext is reduced.
  • the encryption processing device 1 determines in step S101 whether or not the ciphertext to be calculated has been input. When it is determined that the ciphertext has been input (Yes in step S101), the encryption processing device 1 (reception unit 11) receives the ciphertext and stores it in the storage unit 20 in step S102. Next, the encryption processing device 1 (first calculation unit 12) performs a homomorphic calculation using the ciphertext in step S103, and stores the calculation result in the storage unit 20. In step S104, the encryption processing device 1 (first calculation unit 15) performs tri-valued Gate Bootstrapping on the calculation result, calculates a temporary ciphertext having multiple values (three values) as plaintext, and stores it in the storage unit 20. Store.
  • step S105 the encryption processing device 1 (second calculation unit 13) performs a homomorphic calculation of the temporary ciphertext ct and the carry input cc, and stores the calculation result in the storage unit 20.
  • step S106 the encryption processing device 1 (second calculation unit 16) performs binary Gate Bootstrapping on the calculation result of step S105 to calculate the carry output cy, and stores it in the storage unit 20.
  • the calculation as shown in the following truth table is performed.
  • This operation accepts the input of the ciphertext ct having three values as plain text and the input of the ciphertext cc having two values as plain text, and outputs the output ciphertext cy having two values as plain text from the ciphertext ct and the ciphertext cc. What you get.
  • the ciphertext cc is symbol 0 or 1, that is, section 0 ⁇ 1/16 or 1/4 ⁇ 1/16
  • the ciphertext ct is symbol 0, 1 or 2, that is, section 0 ⁇ 1/16, 1 /.
  • step S107 the encryption processing device 1 (third calculation unit 14) performs a homomorphic operation using a temporary ciphertext, a carry input, and a ciphertext.
  • step S108 the encryption processing device 1 (third calculation unit 17) performs binary Gate Bootstrapping on the calculation result of step S105, calculates the output ciphertext cz, and stores it in the storage unit 20.
  • the calculation as shown in the following truth table is performed in plain text. This operation accepts the input of the ciphertext ct having three values and the input of the ciphertext cc having two values, and obtains the output of the ciphertext cz having two values.
  • the ciphertext cc is symbol 0 or 1, that is, section 0 ⁇ 1/16 or 1/4 ⁇ 1/16
  • the ciphertext ct is symbol 0, 1 or 2, that is, section 0 ⁇ 1/16, 1/4.
  • ⁇ 1/16 or 1/2 ⁇ 1/16 the following operation is performed as a homomorphic operation.
  • the speedup of the full adder performed by the encryption processing device 1 can be applied as follows. For example, suppose you want to aggregate fields and records within a certain range from a database encrypted with TLWE encryption (for example, you want to find the average annual income for 30-39 years old). At this time, the encryption processing device 1 is a database server that manages an encrypted database, receives a query encrypted with TLWE encryption from a terminal device connected via a network or the like, and receives a response to the query by TLWE. Return it to the terminal device in a encrypted state. Encrypted databases cannot be indexed, so comparisons and aggregations for the entire database are required.
  • the encryption processing device 10 is encrypted by the functions of the first calculation unit 12, the second calculation unit 13, the third calculation unit 14, the first Bootstrapping unit 15, the second Bootstrapping unit 16, and the third Bootstrapping unit 17 that realize the full adder. Performs a comparison operation that compares all the records in the database with the query.
  • the comparison operation is to perform subtraction between the ciphertexts of the record and the query, and the positive and negative of the subtraction result are equivalent to the comparison operation.
  • the cryptographic processing device 1 can further perform an aggregation operation on records that match the query in the comparison operation. In the aggregation operation, the cryptographic processing device 1 adds the records that match the query in the comparison operation, calculates the total, and further obtains the average value by using division.
  • the four-rule operation is a homomorphic four-rule operation for encrypted numerical values regarded as the ciphertext of each bit when the sequence using the input ciphertext is expressed in binary.
  • Fuzzy authentication is, for example, biometric authentication using biometric authentication data, and it is an absolute requirement that biometric authentication data that does not change for a lifetime is encrypted and concealed. Fuzzy authentication authenticates based on the correspondence between the biometric data presented as an authentication request and the biometric data registered in the database. Judge whether or not. Fuzzy search is an ambiguous search method that presents data close to a query as search results from a database even if the query and record do not exactly match.
  • the encrypted database is compared with the query in the same way as the comparison operation / aggregation operation in the above encrypted database, and at that time, it is encrypted by homomorphic encryption. It is necessary to perform a comparison operation on the data.
  • addition, subtraction, multiplication, division and comparison between integers occupy most of the processing time, so speeding up the calculation of all adders used for them greatly reduces the processing time. Can be effective.
  • Euclidean distance is often used when making comparisons in fuzzy authentication and fuzzy search.
  • a square calculation is required. Therefore, in the Bit-wise type homomorphic encryption, it is necessary to calculate the total adder of O (N 2 ) with respect to the bit length of the data when performing multiplication. It is also necessary to calculate the full adder of O (N) even in the comparison operation by simple subtraction. Therefore, by speeding up the calculation of the full adder, the processing time required for fuzzy authentication and fuzzy search can be significantly reduced.
  • FIG. 8 is a block diagram showing an embodiment of a computer device.
  • the configuration of the computer device 100 will be described with reference to FIG.
  • the computer device 100 is, for example, an encryption processing device that processes various types of information.
  • the computer device 100 includes a control circuit 101, a storage device 102, a reading device 103, a recording medium 104, a communication interface 105, an input / output interface 106, an input device 107, and a display device 108. Further, the communication interface 105 is connected to the network 200. Then, each component is connected by a bus 110.
  • the encryption processing device 1 can be configured by appropriately selecting a part or all of the components described in the computer device 100.
  • the control circuit 101 controls the entire computer device 100.
  • the control circuit 101 is, for example, a processor such as a Central Processing Unit (CPU), a Field Programmable Gate Array (FPGA), an Application Specific Integrated Circuit (ASIC), and a Programmable Logic Device (PLD).
  • the control circuit 101 functions as, for example, the control unit 10 in FIG.
  • the storage device 102 stores various data.
  • the storage device 102 is, for example, a memory such as ReadOnlyMemory (ROM) and RandomAccessMemory (RAM), a HardDisk (HD), or the like.
  • the storage device 102 may store an information processing program that causes the control circuit 101 to function as the control unit 10 in FIG.
  • the storage device 102 functions as, for example, the storage unit 20 in FIG.
  • the encryption processing device 1 When performing information processing, the encryption processing device 1 reads the program stored in the storage device 102 into the RAM. The encryption processing device 1 executes the program read into the RAM by the control circuit 101, so that the reception processing, the first arithmetic processing, the second arithmetic processing, the third arithmetic processing, the first Bootstrapping processing, the second Bootstrapping processing, and the first 3 Execute a process including one or more of Bootstrapping process and output process.
  • the program may be stored in the storage device of the server on the network 200 as long as the control circuit 101 can be accessed via the communication interface 105.
  • the reading device 103 is controlled by the control circuit 101 to read / write data on the detachable recording medium 104.
  • the recording medium 104 stores various data.
  • the recording medium 104 stores, for example, an information processing program.
  • the recording medium 104 includes, for example, a Secure Digital (SD) memory card, a Floppy Disk (FD), a Compact Disc (CD), a Digital Versatile Disk (DVD), a Blu-ray (registered trademark) Disk (BD), a flash memory, and the like.
  • SD Secure Digital
  • FD Floppy Disk
  • CD Compact Disc
  • DVD Digital Versatile Disk
  • BD Blu-ray (registered trademark) Disk
  • flash memory and the like.
  • Non-volatile memory non-temporary recording medium.
  • the communication interface 105 communicably connects the computer device 100 and other devices via the network 200.
  • the communication interface 105 functions as the communication unit 25, for example, in FIG.
  • the input / output interface 106 is, for example, an interface that is detachably connected to various input devices.
  • the input device 107 connected to the input / output interface 106 includes, for example, a keyboard and a mouse.
  • the input / output interface 106 connects various connected input devices to the computer device 100 in a communicable manner. Then, the input / output interface 106 outputs the signals input from the various connected input devices to the control circuit 101 via the bus 110. Further, the input / output interface 106 outputs the signal output from the control circuit 101 to the input / output device via the bus 110.
  • the input / output interface 106 functions as an input unit 26 in FIG. 2, for example.
  • the display device 108 displays various information.
  • the network 200 is, for example, a LAN, wireless communication, a P2P network, the Internet, or the like, and communicates and connects a computer device 100 with another device. It should be noted that the present embodiment is not limited to the embodiments described above, and various configurations or embodiments can be taken within a range that does not deviate from the gist of the present embodiment.
  • 1 Cryptographic processing device 10 Control unit, 11 Reception unit, 12 1st calculation unit, 13 2nd calculation unit, 14 3rd calculation unit, 15 1st Bootstrap unit (calculation unit), 16 2nd Bootstrap unit (calculation unit), 17 3rd Bootstrap unit (calculation unit), 18 output unit, 20 storage unit, 25 communication unit, 26 input unit, 100 computer device, 101 control circuit, 102 storage device, 103 reading device, 104 recording medium, 105 communication interface, 106 input Output interface, 107 input device, 108 display device, 110 bus, 200 network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

完全準同型暗号を実現する全加算器の演算を高速化する。暗号処理装置が処理する暗号文は、2種類の値を平文として有し、復号することなく論理演算を行うことにより種々の演算が可能な完全準同型暗号文であり、受付部が受け付けた暗号文に対して論理演算を行う演算部と、演算部による演算結果を出力する出力部と、を備え、演算部は、暗号文として、一時的に平文として多値を取りうる特定暗号文を用いることにより論理演算(準同型演算)の回数を削減する。

Description

暗号処理装置、暗号処理方法、及び暗号処理プログラム
 本発明は、暗号文を処理する暗号処理装置、暗号処理方法、及び暗号処理プログラムに関する。
 準同型暗号(Homomorphic Encryption)は、暗号化したデータを復号せず、暗号化したままデータ処理を行うことが出来る暗号方式である。
 平文同士での加算に対応する暗号文同士の演算が存在する暗号が加法準同型暗号であり、平文同士での乗算に対応する暗号文同士の演算が存在する暗号が乗法準同型暗号である。
 有限巡回群を整数に見立てて、加法演算(加算、減算)、乗法演算(乗算)のみを行う加法準同型暗号、乗法準同型暗号が以前から知られていた。
 有限巡回群は、加算を繰り返せば整数倍が出来るので、「平文の」整数倍ができ、乗算を繰り返せば「平文の」のべき乗計算をすることも出来る。
 また、加法演算(加算、減算)と乗法演算(乗算)の両方を暗号化したまま処理する完全準同型暗号(Fully Homomorphic Encryption,FHE)がある。
 現在知られている完全準同型暗号では、複数回の加減算、乗算が可能な、例えばLWE問題に基づくsomewhat準同型暗号を用いる。LWE問題に基づく場合、somewhat準同型暗号は、暗号化時に復号には問題ない程度の小さな誤差を平文に加えることで構成される。なお、somewhat準同型暗号はLWE暗号に限定されない。
 LWE問題に基づくsomewhat準同型暗号では演算を行うとともに誤差が蓄積していくので、誤差が大きくなりすぎて復号ができなくなる前に、暗号化したまま誤差成分を縮小するbootstrappingを行う。
 このようなbootstrappingは膨大なデータ量が必要となったり計算量が膨大となったりし、実用的な意味で完全準同型暗号が実現できていたとは言えなかった。
 この問題を劇的に改善した手法が、非特許文献1(以下の説明において、上記論文として参照される)に示されるTFHE(Fast Fully Homomorphic Encryption over the Torus)である。
TFHE:Fast Fully Homomorphic Encryption over the Torus. Journal of Cryptology, 33:34-91, 2020, I.Chillotti, N.Gama, M.Georgieva, and M.Izabachene
 ところで、準同型暗号には、平文として2値を持ち論理演算をベースとするBit-wise型の準同型暗号と、平文として整数を丸ごと1暗号文とするInteger-wise型の準同型暗号と、があり非特許文献1に示されるTFHEはBit-wise型である。
 Bit-wise型の準同型暗号において、1つの暗号文は1bitの情報しか持ち得ないため、例えば32bitの整数を扱おうとすると32個の暗号文を処理する必要がある。
 整数同士の加算や減算、乗算や比較は様々なデータ処理で多用される。1bitの情報を持つ暗号文を用いる場合、論理回路を設計するイメージで演算を行うが、32bitの整数の加算・減算の場合は1個の半加算器と、31個の全加算器を用いる。乗算の場合は、約32の2乗(1024)個近くの全加算器を用いる。
 従って、完全準同型暗号の処理時間を低減し、さらに効率化を図るためには、bootstrappingを含む全加算器の演算を高速化する必要がある。
 本発明はこのような事情を鑑みてなされたものであり、一側面として、完全準同型暗号に必要な全加算器の演算を高速化し、完全準同型暗号の処理時間を低減することを目的とする。
 本発明は、暗号文を処理する暗号処理装置であって、前記暗号文は、平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、前記暗号文を用いた所定の演算において、平文として2値よりも多い多値を有する前記暗号文に基づいた一時暗号文を出力とする多値論理演算を使用することにより前記演算に必要な計算処理の回数を削減する、暗号処理装置を特徴とする。
 本発明によれば、一側面として、全加算器の演算を高速化して完全準同型暗号の処理時間を低減することが出来る。
最小の論理演算素子数による全加算器回路の構成を説明する図である。 本実施形態の暗号処理装置の機能構成を説明する図である。 図2の機能構成に基づく全加算器の演算プロセスを詳しく説明する図である TLWE暗号が平文として有する円周群を説明するイメージ図である。 2値Gate Bootstrappingの動作イメージ図である。 3値Gate Bootstrappingの動作イメージ図である。 暗号処理装置が実行する全加算器の演算処理の流れを説明するフローチャートである。 コンピュータ装置の一実施例を示すブロック図である。
 以下に、図面を参照して本発明の実施の形態を詳細に説明する。
 なお、以下の説明において、[]で囲まれた英数字はそれがベクトルであることを示す。{}で囲まれた英数字はそれが集合であることを示す。
 また、本明細書において、「論理演算」と記す場合は2値もしくは多値の論理演算のことを指すものとする。
 本実施形態の暗号処理装置は、全加算器を用いて完全準同型暗号の演算を行う。完全準同型暗号は、準同型で(暗号化したまま)加算、減算、乗算の演算が可能な暗号である。
 暗号処理装置に含まれる、全加算器を構成するAND回路部、XOR回路部の夫々において、Bit-wise型の準同型暗号に対するANDを得るための演算、XORを得るための演算を行うことが知られている。
 しかし、完全準同型暗号とするためには、ANDを得るための演算、XORを得るための演算のあとで、下記に説明するGate Bootstrappingと呼ばれる誤差を削減する処理が必要である。
 このGate Bootstrappingの処理に時間を要していたが、本実施形態の暗号処理装置は、Gate Bootstrapping後の一時的な暗号文が取り得る値の種類を増やすことで、全加算器を構成する準同型演算の回数を削減する。
 これにより、本実施形態の暗号処理装置は、各準同型演算の後段で行われるGate Bootstrappingの回数を減らし、全加算器の演算を高速化することが出来る。
 図1は、最小の論理演算素子数による全加算器回路を例示する図である。
 図1は、論理演算素子によるハードウェア回路で全加算器を説明しているが、全加算器をソフトウェアで実装したCPUが実行する全加算器プログラムであると考えてもよい。
 全加算器をソフトウェアで実装するとき、暗号文に対して論理回路(論理ゲート)を設計するイメージで演算を行う。
 それは、図2以降で説明する本実施形態の暗号処理装置についても同様である。
 全加算器回路50は、2つの半加算器51、52と1つのOR回路部(ORを得るための演算処理部)53から構成される。
 第1半加算器51は、AND回路部(ANDを得るための演算処理部)51AとXOR回路部(XORを得るための演算処理部)51Bを備える。
 第2半加算器52は、AND回路部52(ANDを得るための演算処理部)AとXOR回路部(XORを得るための演算処理部)52Bを備える。
 加算される入力Aと入力Bが第1半加算器51のAND回路部51AとXOR回路部51Bに入力される。
 第1半加算器51のAND回路部51Aの出力と、第2半加算器52のAND回路部52Aの出力と、が後段のOR回路部53に入力され、OR回路部53からは桁上げ出力C(Carry out)が出力される。
 第1半加算器51のXOR回路部51Bからの出力と、桁上げ入力C(Carry in)が第2半加算器52のAND回路部52AとXOR回路部52Bに入力される。
 第2半加算器52のXOR回路部52Bからは、全加算器回路50の出力S(Sum)が出力される。
 図1に示すように、全加算器50は、2つのAND回路部と2つのXOR回路部とOR回路部を備えており、全部で5つの論理演算素子(論理演算素子に対応する処理部)を備えている。
 従って、1つの全加算器の演算につき、論理演算素子5つ分の演算時間が必要である。上記論文に示されるTFHEの場合、1つの論理演算素子の演算には約16msの演算時間を要し、論理演算素子を5つ備える全加算器50全体では、約80msの演算時間を要する。TFHEによる完全準同型暗号の演算に用いる場合、5つの論理演算素子の前段部の演算(準同型演算)の後段で、夫々Gate Bootstrappingを行う必要がある。なお、準同型論理演算の処理時間のほぼすべてをGate Bootstrappingが占めている。
 従って、図1の全加算器回路50による完全準同型暗号の演算にはGate Bootstrapping5回分の演算時間を要するとみなしても構わない。
 なお、半加算器51、半加算器52を構成するAND回路部とXOR回路部の演算には依存関係がないため、全加算器をソフトウェアで構成する場合には、マルチスレッドなどの手法で並列演算を行うことが出来る。
 並列演算によって、半加算器の演算を1つの論理演算素子分の演算時間で行うことが出来る。
 従って、図1に示す1つの全加算器の演算を3つの論理演算素子分の演算時間で演算を実行することが出来る。ただし、この場合でも1つの全加算器の演算に48msの演算時間を要する。これは、Gate Bootstrapping 3回分の演算時間とほぼ同じである。
 TFHEは、AND回路部とXOR回路部などの論理ゲートをベースとするBit-wise型暗号である。
 全加算器を使用することで、整数の加減乗除(四則演算)の全てと比較演算に対応することが出来る。
 しかしながら、Bit-wise型暗号は、1つの暗号文は1bitの情報しか持ち得ない。
 整数同士の加算、減算、乗算、除算や比較(比較は減算結果の正負と等価である)は様々なデータ処理で多用されるが、扱われるデータは、ビット長が大きいものが通常である。
 例えば、32bitの整数を扱おうとすると、32個の暗号文を処理する必要がある。
 Bit-wise型の完全準同型暗号について32bitの整数の加算・減算を行う場合は、1個の半加算器と、31個の全加算器を用いる。また、乗算を行う場合は、約32の2乗(1024)個近くの全加算器を用いる。
 完全準同型暗号の演算(四則演算と比較)をさらに実用的なものにするためには、完全準同型暗号の演算に多用される全加算器の演算をより高速化することが重要となる。
 下記に説明するように、本実施形態の暗号処理装置は、特に、完全準同型暗号の演算に用いる全加算器において、演算毎に行うGate Bootstrappingが多値を出力可能なように改良することで準同型演算の回数を減らす。
 その結果、本実施形態の暗号処理装置は、準同型演算の後段の、長い演算時間を要するGate Bootstrappingの回数を減らし、完全準同型暗号の処理時間を大幅に低減することが出来る。
 図2は、本実施形態の暗号処理装置の機能構成を説明する図である。
 暗号処理装置1は、制御部10と、記憶部20と、通信部25と、入力部26と、を備える。
 制御部10は、受付部11と、第1演算部12と、第2演算部13と、第3演算部14と、第1Bootstrapping部(第1算出部)15と、第2Bootstrapping部(第2算出部)16と、第3Bootstrapping部(第3算出部)17と、出力部18と、を備えている。
 受付部11は、通信部25や入力部26を介した、演算の対象となる暗号文の入力を受け付ける。
 第1演算部12は、受付部11が受け付けた入力暗号に対して、第1準同型演算を行う。
 第2演算部13は、第1Bootstrapping部15から出力される後述する一時暗号文と桁上げ入力の暗号文とに対して、第2準同型演算を行う。
 第3演算部14は、第1Bootstrapping部15から出力される後述する一時暗号文と桁上げ入力の暗号文とに対して、第3準同型演算を行う。
 第1演算部12、第2演算部13、及び第3演算部14は、図1で説明した論理ゲート(AND回路部、XOR回路部)による全加算器の演算(準同型演算)をソフトウェアで実現する演算処理部である。なお、第1演算部12、第2演算部13、及び第3演算部14の少なくとも一つが、ハードウェアで実現されてもよい。
 第1Bootstrapping部15は、第1演算部12の演算結果に対して下記に説明する3値Gate Bootstrapping処理を行い、3値を取り得る一時暗号文を出力する。
 第2Bootstrapping部16は、第2演算部13の演算結果に対して下記に説明する2値Gate Bootstrapping処理を行い、2値を取り得る新たな暗号文として桁上げ出力Cを出力する。
 第3Bootstrapping部17は、第3演算部14の演算結果に対して下記に説明する2値Gate Bootstrapping処理を行い、2値を取り得る新たな暗号文として出力Sを出力する。
 出力部18は、最終的な演算結果を暗号処理装置1の外部、あるいは、暗号処理装置1で実行される別の処理プロセスに対して出力する。
 記憶部20は、入力暗号文や、全加算器の演算で用いられる一時ファイルや一時データ、出力暗号文を格納することが出来る。
 また、記憶部20には、暗号化された暗号化データベース60を格納することが出来る。
 通信部25は、暗号処理装置1をネットワークに接続し、外部装置との通信を可能にする。
 記憶部20に暗号化された暗号化データベース60を格納し、通信部25を備えることにより、暗号処理装置1は、データベースサーバとして機能することが出来る。この場合、暗号処理装置1は、外部装置としての端末装置から、暗号化されたクエリを受け付け、暗号化された暗号化データベース60に対する検索を行い、暗号化された検索結果を端末装置に応答することが出来る。
 入力部26は、暗号処理装置1に対して、演算処理対象の暗号文を入力する。
 図3は、図2の機能構成に基づく全加算器の演算プロセスを詳しく説明する図である。
 図3の説明において、暗号処理装置1に入力される暗号文ca、cb、ccは、いずれも上記論文に示されるTLWE暗号文である。
 下記に詳しく説明するが、TLWE暗号は、0又はμ(非0)の値を平文として有するBit-wise型の完全準同型暗号である。
 論理ゲートを用いた論理演算によって様々な演算を行うことができる。
 暗号処理装置1は、一時的に平文として多値(例えば3値)を取りうる暗号文を用いることにより、論理演算(準同型演算)の回数を削減し、完全準同型暗号の処理時間を大幅に低減することが出来る。
 一時暗号文が取り得る3種類の値は、全加算器全体では一時的な値であるが、各論理ゲートの論理演算(多値論理演算)で用いられる値であって論理演算の中での一時的な値ではない。
 図3に示す構成では、非特許文献1の論文(上記論文)で提示された(2値)Gate Bootstrappingを改良して3値の出力を可能とした3値Gate Bootstrappingを使用する。
 上記論文で提示されているTFHEのGate Bootstrappingについては下記に詳述する。
 入力された暗号文ca、cbを第1演算部12に入力して準同型演算を行い、その演算結果(暗号文ca+cb)を3値Gate Bootstrappingを行う第1Bootstrapping部15に入力する。
 上記論文の2値Gate Bootstrappingの出力は、平文として2値(0,μ)の何れかを取り得る暗号文である。それに対して、本実施形態の3値Gate Bootstrappingの出力は平文として3値(0,μ,μ)の何れかを取り得る一時暗号文ctである。
 3値Gate Bootstrappingの出力である一時暗号文ctは、桁上げ入力Cの暗号文ccと合わせるために、第2演算部13、第3演算部14に入力される。
 第2演算部13の出力が第2Bootstrapping部16に入力されて2値Gate Bootstrappingが行われ、桁上げ出力Cの暗号文cyが出力される。
 第3演算部14の出力が第3Bootstrapping部17に対して入力されて2値Gate Bootstrappingが行われ、出力Sの暗号文czが出力される。
 第2演算部13による準同型演算、第3演算部14による準同型演算に要する時間は微々たるものである。
 Gate Bootstrappingは、準同型演算を用いて全加算器を処理するとき、ほとんど全ての処理時間を消費している。
 図1に示す全加算器回路50のように、2値Gate Bootstrappingを用いて全加算器の演算を行う場合、AND回路部51A、52A、XOR回路部51B、52B、OR回路部53の後段で夫々1回、全体で5回Gate Bootstrappingを実行する必要がある。
 それに対して、暗号処理装置1では、第1Bootstrapping部15による3値Gate Bootstrappingを全加算器の演算に用いることにより、準同型演算処理の回数を全体で3回に減らしている。
 その結果、暗号処理装置1では、準同型演算処理のほぼ全てを占めるGate Bootstrappingの回数を全体で3回に減らすることが出来る。したがって、図1に示す全加算器回路50と比較して、暗号処理装置1は、計算処理時間を約40%削減することが出来る。
 さらに、暗号処理装置1は、第2演算部13及び第2Bootstrapping部16の処理と、第3演算部14及び第3Bootstrapping部17の処理とを、それぞれマルチスレッド処理によって並列に実行してもよい。この場合には、暗号処理装置1は、全加算器の演算で処理時間の大半を占めるBootstrappingの段数を2段階にすることができる。これに対して、図1に示す全加算器回路50は、AND回路部51A及びXOR回路部51Bと、AND回路部52A及びXOR回路部52Bとをそれぞれ並列に実行することができるが、全体としてのBootstrappingの段数は3段階である。したがって、並列処理を用いた場合でも、図1に示す全加算器回路50と比較して、暗号処理装置1は、計算処理時間を約33%削減することが出来る。
 以上のように、完全準同型暗号に関する全加算器の演算時間のほぼ全てをGate Bootstrappingが占めるので、暗号処理装置1は、Gate Bootstrappingの回数を削減することによって、全加算器の演算を著しく高速化することが出来る。
 TFHEで説明されるGate Bootstrappingについて詳述する。
 Gate Bootstrappingは、膨大なデータ量や演算時間のために実用的とは言えなかった完全準同型暗号を実用的にするための手法である。
 上記論文のTFHEでは、LWE(Learning with Errors)暗号を円周群上で構成した「TLWE暗号」と呼ばれる暗号を用い、演算時の誤差を小さくしながら高速かつ小さなデータサイズでTLWE暗号文同士の各種準同型論理演算(ひいては加算・乗算などの任意の演算)を実現する。
 TFHEにおけるGate Bootstrappingの入力は、秘密鍵で暗号化されたTLWE暗号文である。
 TFHEでは、TLWE暗号文を基本として完全準同型暗号(FHE)を実現する。
 TLWE暗号は、格子暗号の一種であるLWE暗号の変形(LWE暗号を円周群上で定義したもの)である。
 TLWE暗号は加法準同型であり、TLWE暗号化された平文同士の加法演算を、暗号文を復号することなく行うことができることが知られている。
 図4は、TLWE暗号が平文として有する円周群を説明するイメージ図である。
 TLWE暗号は、0から実数の精度で進み1になると0に戻る、図4に示す円周群{T}の点0、又は円周群{T}上の0以外(非0)の任意の点に対応する実数μを平文として有する。TLWE暗号自体は円周群上の任意の点を平文とし、0近辺(誤差含む)とμ近辺(誤差含む)を平文として使用する。
 円周群{T}上の点は、本明細書において「要素」ともいう。
 TFHEを扱う暗号処理装置は、このようなTLWE暗号文同士の演算として加法演算など一般的な準同型演算を実行し、その演算結果の誤差をGate Bootstrappingによって適切な範囲内に収めることによって、再度(後段での)論理演算が可能な完全準同型暗号(FHE)を実現する。
[TLWE暗号]
 TLWE暗号を説明する。
 円周群{T}上の要素として、一様分布な乱数をN個集めたベクトル[a]を用意する。また、0,1の2値をN個集めた秘密鍵[s]を用意する。
 平均値が平文μであり、分散が事前に定めたαとなるようなガウス分布(正規分布)の乱数をeとしたときに、([a],[s]・[a]+e)の組がTLWE暗号文の一例となる。
 同一の平文μに対して無限個のTLWE暗号文を生成した時のeの平均値が平文μであり、μは誤差なしの平文、eは誤差付きの平文である。
 なお、「・」は、ベクトルの内積を表す。以降についても同様である。
 上記[s]・[a]+eをbとおくと、TLWE暗号文は([a],b)と表すことができる。
 φ(([a],b))=b-[s]・[a]=eは、TLWE暗号文を復号する関数である。TLWE暗号は平文に秘密鍵ベクトルと乱数ベクトルの内積と誤差を付加して暗号化するため、秘密鍵ベクトルと乱数ベクトルの内積を算出することで、TLWE暗号を誤差付きで復号することができる。この時、秘密鍵ベクトルが未知の場合は、内積となる成分が算出できないため、復号することができない。
 このTLWE暗号は加法準同型であり、TLWE暗号文の平文同士の加法演算を、暗号文を復号することなく行うことができる。
 2つのTLWE暗号文([a],b)、([a’],b’)をそのまま足して、([a]+[a’],b+b’)としたものを、上記の復号関数φに入力すると、
φ(([a]+[a’],b+b’))=(b+b’)-[s]・([a]+[a’])=(b-[s]・[a])+(b’-[s]・[a’])=φ([a],b)+φ([a’],b’)
となり、2つの平文の和が得られる。これにより、TLWE暗号文が「加法準同型暗号」であることがわかる。
 上記論文のTFHEでは「平文に誤差を付加したTLWE暗号文に対して加法演算を行い、Gate Bootstrappingで誤差を削減する」ことを繰り返していくことで、様々な演算を実現する。
 なお、下記において、([0],μ)などの「自明な暗号文(trivial)」は、あらゆる秘密鍵で復号が可能なTLWE暗号文であり、すなわち、どのような秘密鍵を用いても同じ平文を復号できる暗号文である。
 ([0],μ)において、[0]は、ゼロベクトルを表す。
 「自明な暗号文」は、TLWE暗号文として扱えるが、実質的に平文がそのまま入っている状態と言える。
 TLWE暗号文([0],μ)は、復号関数φにかけると、φ(([0],μ))=μ-[s]・0=μとなり、秘密鍵[s]がゼロベクトル[0]と掛け合わされて消えるため、容易に平文μが得られる。このような暗号文は、平文μに対して自明な暗号文に他ならない。
 TFHEのGate Bootstrappingで用いる「有限巡回群」を説明する。
 Gate Bootstrappingでは、「多項式環の剰余環」を、有限巡回群として用いる。
 「多項式環の剰余環」が有限巡回群であることを説明する。
 n次の多項式は、一般にa+an-1n-1+…+aと表される。
 これらの全ての集合は、多項式同士の和f(x)+g(x)に対して可換群をなす。
 また、多項式同士の積f(x)g(x)は、逆元が存在するとは限らないことを除き、可換群と同様の性質を持つ。そのようなものをモノイドと呼ぶ。
 多項式同士の和と積に対しては、下記のように分配法則が成り立つ
f(x){g(x)+g’(x)}=f(x)g(x)+f(x)g’(x)
 従って、多項式を要素として多項式同士の和・積を定義すると「環」をなし、これを多項式環と呼ぶ。
 TFHEでは、有限巡回群である円周群{T}を係数とする多項式環を用い、このような多項式環をT[X]と表記する。
 多項式環である多項式T(X)をT[X](X+1)+T[X]のかたちに分解し、剰余部分だけを取り出して集めると、これもまた「環」であるため「多項式環の剰余環」が得られる。
 TFHEでは、「多項式環の剰余環」をT[X]/(X+1)と表す。
 「多項式環の剰余環」T[X]/(X+1)の要素(元)として、任意の係数μ(μ∈T)を用いて、多項式F(X)=μXn-1+μXn-2+・・・+μX+μ
を取り出す。
 多項式環の剰余環の要素F(X)にXを掛けると、μXn-1+μXn-2+・・・+μX-μとなって、一番上の項の係数がプラスからマイナスに反転して定数項として現れる。
 さらにXを掛けると、μXn-1+μXn-2+・・・+μX-μX-μのように、もう一度同じことが起きる(一番上の項の係数がプラスからマイナスに反転して定数項として現れる)。
 これを全部でn回繰り返すと、
-μXn-1-μXn-2・・・-μX-μとなって全ての項の係数がマイナスとなる。
 さらにXを掛け続けると、
-μXn-1-μXn-2・・・-μX+μ
-μXn-1-μXn-2・・・+μX+μ
と一番上の項の係数がマイナスからプラスに反転して定数項として現れていき、全部で2n回繰り返すと、元の多項式環の剰余環の要素F(X)=μXn-1+μXn-2+・・・+μX+μに戻る。このように、最上位の係数(μ)が最下位の定数項に符号反転して(-μ)現れて、全体的に項が1つ、ずれている。
 すなわち、多項式F(X)=μXn-1+μXn-2+・・・+μX+μは、「多項式環の剰余環」T[X]/(X+1)という環のなかで位数2nの有限巡回群になっている。
 TFHEにおいて、暗号処理装置は、このような「多項式環の剰余環」に基づく多項式F(X)が有する性質を利用して完全準同型暗号を実現する。
[TRLWE暗号]
 Gate Bootstrappingでは、TLWE暗号の他に「TRLWE暗号」と呼ばれる暗号を利用する。
 TRLWE暗号について説明する。
 TRLWE暗号の「R」は「環」を意味し、TRLWE暗号は「環」で構成したLWE暗号である。TLWE暗号がそうであるように、TRLWEもまた加法準同型暗号である。
 TRLWE暗号における「環」は、上記した「多項式環の剰余環」T[X]/(X+1)である。
 TRLWE暗号を得るに当たり、「多項式環の剰余環」T[X]/(X+1)の要素(元)をランダムに選択する。
 実際には、n-1次多項式の係数n個を、円周群{T}から一様分布な乱数で選出する。
 多項式の次数がn-1であれば、X+1で割れることがなく、剰余を考える必要がないため、次数がn-1の多項式を多項式a(X)とする。
 0,1の2値からランダムにn個を集めて、下記の秘密鍵となる多項式s(X)を組み立てる。
s(X)=sn-1n-1+sn-2n-2+・・・sX+s
 n個の乱数eを、平均値が平文μになり分散がαとなるガウス分布(正規分布)の乱数とし、これらから下記の多項式e(X)を組み立てる。
e(X)=en-1n-1+en-2n-2+・・・eX+e
 s(X)・a(X)+e(X)を、f(X)(X+1)+b(X)と分解して、b(X)を得る。
 その結果、TRLWE暗号文として、(a(X),b(X))が得られる。
 TRLWE暗号は、TLWE暗号と同様に乱数を用いて暗号化を行うため、同一の秘密鍵、平文に対して、無数の暗号文が対応しうる。
 また、TRLWE暗号は、TLWE暗号と同様に、φ((a(X),b(X))=b(X)-s(X)・a(X)+g(X)(X+1)として、φがT[X]/(X+1)の元となるようにg(X)を定めたものが、復号関数として機能する。
[Gadget Decomposition]
 Gadget Decompositionについて説明する。
 TRLWE暗号文で用いている多項式の係数は、図4の円周群{T}の要素である0以上1未満の実数であり小数部分のみを有する。
 これを二進数表記で何ビットずつかに分解する操作を、上記論文のTFHEではGadget Decomposition(Dec)と定義している。
 例えば、TRLWE暗号文の多項式F(X)の次数nがn=2として、分割の1単位をBg=2で、l=3要素に分解する。このとき、各要素は-Bg/2からBg/2の間に入るようにする。
 TRLWE暗号文は、上記の(a(X),b(X))のように、2つの多項式の組み合わせである。従って、TRLWE暗号文dを、多項式環の剰余環の元となる多項式を要素とする2次元のベクトルと見なして、例えば、
d=[0.75X+0.125X+0.5,0.25X+0.5X+0.375]
と書くことができる。そのため、以下では各要素をBg-1=0.25のべき乗の和の形に分解する。
 円周群{T}上では、0.75=-0.25であるので、
d=[0.75X+0.125X+0.5,0.25X+0.5X+0.375]
=[-0.25X+0.125X+0.5,0.25X+0.5X+0.25+0.125]
=[0.25×(-X+2)+0.25×2X+0.25×0,0.25×(X+2X+1)9+0.25X×2+0.25×0]
と分解できる。
 従って、Gadget Decompositionを行うと、
 Dec(d)=[-X+2,2X,0,X+2X+1,2,0]
というベクトルになる。
 ベクトルから暗号文に逆変換する作用素Hも定義する。
 上記の例に基づいて説明すると、
Figure JPOXMLDOC01-appb-I000001
 という行列が、逆変換の作用素Hとなる。Dec(d)・Hを演算することで、TRLWE暗号文d’が得られる。下位ビットは四捨五入をしてまるめられている。
 TRLWE暗号文dに対して、||d-[v]・H||が最小値となる[v]を得る操作が、Gadget Decompositionであるとも言える。ここで||はベクトルのノルム(長さ)である。
 e(X)の係数全てが平均値0となり、分散はαとなる多項式でできた暗号文Zi=(a(X),b(X))を2l(エル)個生成する。
 そして、平文μを以下のように暗号化し、以下の暗号文kを得る。
Figure JPOXMLDOC01-appb-I000002
 この暗号文kをTRGSW暗号文BKとして定義する。
 TRGSW暗号文BKは、下記に用いるBootstrapping Keyを構成する。
 Bootstrapping Keyを説明する。
 Bootstrapping Keyは、Gate Bootstrappingに用いるために、秘密鍵を暗号化しておくために利用する。
 TLWE暗号文に用いる秘密鍵[s](N次)とは別に、Gate Bootstrappingに使うために、秘密鍵[s]を暗号化するための秘密鍵[s’]の各要素を0か1の2値で選択する。
 秘密鍵[s’]の次数は、TRLWE暗号で使用する多項式の次数nとそろえる必要がある。
 秘密鍵[s]の要素ごとにTRGSW暗号文BKを作成する。
 秘密鍵[s’]で復号するとφs’(Zj)=0となるTRLWE暗号文Zjを2l(エル)個作成する。
 そして、上記したTRGSW暗号文の構成どおり、
Figure JPOXMLDOC01-appb-I000003
とする。
 このTRGSW暗号文を、秘密鍵[s]の次数と同じN個用意したセットを、Bootstrapping Keyと呼ぶ。
 TRGSW暗号文BKiとTRLWE暗号文dの外積を、
BKi×d=Dec(d)・BKi
と定義する。
 Gadget Decompositionは、TRLWE暗号文dに対して||d-[v]・H||が最小値となる[v]を得る操作であった。
 従って、[v]=Dec(d)と誤差(ε(X),ε(X))を用いて、
[v]・H=d+(ε(X),ε(X))と書ける。
 その結果、BKi×d=Dec(d)・BKi
Figure JPOXMLDOC01-appb-I000004
となる。
 左半分は内積を計算し、右半分には[v]・H=d+(ε(X),ε(X))を代入すると、

Figure JPOXMLDOC01-appb-I000005
となり、下記の3つの暗号文c1、c2、c3の和の計算と同じとなる。
Figure JPOXMLDOC01-appb-I000006
 TRLWE暗号は加法準同型暗号であるため、暗号文同士の和をとると平文同士の和をとったことと同じである。
 Cは、Zを何倍かして足したものなので、平文φs’(c)の期待値は0となる。
 また復号したφs’(c)は、平文の絶対値の大きさをシステムパラメータで制約することができるので、この後の演算も含めて十分小さくなるように設定する。
 そうするとφs’(BKi×d)=φs’(s×d)となるが、sが0であっても1であっても計算結果は上記3つの暗号文c1、c2、c3の和になる。単純な比較でsが0と1の何れであるかを判別することができない。
 2つの平文μ、μに対応するTRLWE暗号文d、dがあるとして、d=d-dと代入して、最後にdを加算すると、下記のようなCMux関数が完成する。
 CMux(BK,d,d)=BKi×(d-d)+d=Dec(d-d)・BK+d
 CMux関数は、sが0であると平文μの暗号文を復号することなく出力し、sが1であると平文μの暗号文を復号することなく出力する。
 CMux関数は、平文μもしくは平文μの暗号文を計算することができるが、どちらを選択したかは分からない。
 TFHEの2値Gate Bootstrappingは、上記に説明した様々な情報を用いて行われる。
 2値Gate Bootstrappingは、以下に説明する3つのステップ、(1)BlindRotate、(2)SampleExtract、(3)キースイッチングから構成される。
 図5は、2値Gate Bootstrappingの動作イメージ図である。
 2値Gate Bootstrappingは、下記に説明する3つのステップによってTLWE暗号文同士の準同型演算結果が有する平文に対する誤差の削減を行う。
 以下の説明で、特に説明をしない場合、「平文」とは、TLWE暗号文同士で演算した結果の平文同士の演算結果を意味するものとする。
 図4の円周群{T}における0~0.25(1/4)、0.75(3/4)~1の区間の平文を0のTLWE暗号文に変換し、0.25(1/4)~0.75(3/4)の区間の平文を0.25(1/4)の暗号文に変換する。
 この変換の際、平文に付加される誤差は±1/16の範囲のいずれかである。
(1)BlindRotate
 Gate Bootstrappingの最初のステップとしてBlindRotateが行われる。
 BlindRotateは、TRLWE暗号文を作成する工程である。
 BlindRotateでは、多項式T(X)を平文とする自明なTRLWE暗号文(0,T(X))から、X-φs(c’)を乗算したTRLWE暗号文を復号することなく得る。「0」は、0次の多項式0を示す。
 ここでφs(c’)は、下記のLWE暗号文c’を復号関数にかけた平文である。
 BlindRotateでは、上記した有限巡回群をなす、テストベクタとしての下記の多項式F(X)
F(X)=μXn-1+μXn-2+…μX+μ
ただし、μ=1/8
にXn/2を掛けて得た下記の多項式T(X)
T(X)=F(X)・Xn/2
を用意する。
 平文μ1を秘密鍵[s]で暗号化したTLWE暗号文cがあるとする。
 このTLWE暗号文c=([a],b)の各要素を2n倍して四捨五入したLWE暗号文c’=([a’],b’)を得る。
 LWE暗号文c’=([a’],b’)を復号すると、μ1’=φ(c’)≒2N×φ(c)=2Nμ1となる。Nが大きくなるほど相対的に誤差は小さくなる。
 多項式T(X)を平文とする自明なTRLWE暗号文(0,T(X))を用意して、
=X-b’×(0,T(X))=(0,X-b’×T(X))とする。0は、0次の多項式0を示す。この時、b’は整数であるため、累乗が自然に定義できる。
 以降、上記に説明したBootstrapping KeyであるBKを用いて、順番にA=CMux(BK,Ai-1,Xa’ii-1)を計算する。ここでも、a’iが整数になっているため、Xの累乗が自然に定義できる。
 そうすると、sが0の時は、平文はそのまま変わらず、sが1の時は、Xa’iが順番に乗算されていく。
 従って、
Figure JPOXMLDOC01-appb-I000007
と繰り返すと、
Figure JPOXMLDOC01-appb-I000008
となる。
 ここで、
Figure JPOXMLDOC01-appb-I000009
は、復号関数φs(c’)の符号を反転したものに等しいので、
Figure JPOXMLDOC01-appb-I000010
となる。ここでφs’(A)は、多項式T(X)にX-1をμ1’回乗算した多項式の暗号文である。
(2)SampleExtract
 (1)のBlindRotateで得たTRLWE暗号文Anを復号して得られる平文多項式φs’(A)を見ると、下位の項から数えてn/2-φ(c’)個分の項は係数が-μとなり、負になった場合、逆に上の項から順に係数が-μとなる。
 TRLWE暗号文Aを復号して得られる平文多項式φs’(A)の定数項だけを見ると、φ(c’)がn/2以上3n/2未満、すなわちφ(c)が1/2±1/4の場合、定数項はμとなる。それ以外、すなわちφs(c)が±1/4の場合、定数項は-μとなる。
 SampleExtractは、(1)のBlindRotateで得たTRLWE暗号文Aから、これを復号することなく平文多項式φs’(A)の定数項の係数だけを取り出して、その結果、TLWE暗号文csを得るための処理である。
 TLWE暗号文csを得るための処理を説明する。
 全てのTRLWE暗号文は、次数をnとして、
Figure JPOXMLDOC01-appb-I000011
と多項式をおいて、(A(X),B(X))と表現することができる。
 これを秘密鍵[s’]で復号したとき、秘密鍵の多項式を
Figure JPOXMLDOC01-appb-I000012
とおいて、
Figure JPOXMLDOC01-appb-I000013
と展開することができる。
 これに対して下記の演算を行い、

Figure JPOXMLDOC01-appb-I000014

を得る。
 「多項式環の剰余環」であるので(X+1)で割った余りを求めると、
Figure JPOXMLDOC01-appb-I000015
が得られる。
 さらに、
Figure JPOXMLDOC01-appb-I000016
とおくと、
Figure JPOXMLDOC01-appb-I000017
となり、
Figure JPOXMLDOC01-appb-I000018
から、平文多項式の各項の係数が求まる。
 そのうち必要なのは定数項の係数であるので、j=0の場合の係数を取り出すと、
Figure JPOXMLDOC01-appb-I000019
が得られる。
Figure JPOXMLDOC01-appb-I000020
とおくと、
Figure JPOXMLDOC01-appb-I000021
のように、TLWE暗号の復号関数に変形することができる。
 つまり、(1)のBlindRotateで得たTRLWE暗号文A=(A(X),B(X))から、係数を
Figure JPOXMLDOC01-appb-I000022
として取り出すと、元のTRLWE暗号文Aに対応する平文多項式の定数項と同じ値を平文とする、新しいTLWE暗号([a”],b)が得られた。この新しいTLWE暗号文は、平文として-μ又はμの2種類を有する。
 得られたTLWE暗号文に対して、平文がμとなる自明な暗号文([0],μ)を加えたTLWE暗号文cs=([a”],b1)+([0],μ)がSampleExtractの出力である。
 具体的には、テストベクタとしての多項式F(X)ではμ=1/8であるので、この段階では、-1/8、1/8の暗号文が得られている。
 これに、平文がμ=1/8となる自明なTLWE暗号文([0],1/8)を加えると、
-1/8+1/8=0
1/8+1/8=1/4
から、0、1/4の2値のうちいずれかの値を平文として持つ新たなTLWE暗号文csが得られた。以上の操作を、TFHEではSampleExtractと呼ぶ。
(3)キースイッチング
 (2)のSampleExtractで得られたTLWE暗号文csは、秘密鍵[s]ではなく、秘密鍵[s']で暗号化されている。
 従って、TLWE暗号文csを復号することなく、TLWE暗号文csの鍵を秘密鍵[s]に差し替え、秘密鍵[s]で暗号化された状態に戻す必要がある。
 そのためキースイッチングの手法を説明する。
 NAND演算に用いるTLWE暗号文の秘密鍵[s]はN次のベクトルであった。
 これを用い、Bootstrapping Keyを作成したときのn次のベクトルの秘密鍵[s’]を暗号化する。
 すなわち、
Figure JPOXMLDOC01-appb-I000023
と、円周群{T}の要素、0から1の実数を二進数で表現したときの各桁にずらした値として暗号化する。秘密鍵は[s]である。「桁数」tはシステムパラメータである。
 秘密鍵[s]で復号すると、
Figure JPOXMLDOC01-appb-I000024
となる。これが「キースイッチングキー」である。
 上記したように(2)で得られたTLWE暗号文cs=([a]、b)は秘密鍵[s’]で暗号化された0又は1/4の値である。[a]の要素数は、秘密鍵[s’]と同じくn個である。
 これを一つずつ、夫々tビットの固定小数に変換すると、
Figure JPOXMLDOC01-appb-I000025
の形式で書くことができる。
 この段階で誤差が増えるが、システムパラメータで絶対値の最大値を制約することができる。
 キースイッチング本体の処理として、以下のTLWE暗号文cxを計算する。
Figure JPOXMLDOC01-appb-I000026
 ([0],b)の項は自明な暗号文なので、復号するとbであり、TLWE暗号文cxを復号した結果を計算すると、
Figure JPOXMLDOC01-appb-I000027
である。
 s’は、jに対して定数なのでくくりだして
Figure JPOXMLDOC01-appb-I000028
とし、上記で固定小数に分解したときの式を代入する。
Figure JPOXMLDOC01-appb-I000029
 その結果、
Figure JPOXMLDOC01-appb-I000030
となって鍵の切り替えが成功したことになる。
 ここで得られたTLWE暗号文cxは、Gate Bootstrappingの入力としたTLWE暗号文cと同じ秘密鍵[s]で暗号化されている。
 キースイッチングの処理を行うことにより、秘密鍵[s]で暗号化されたTLWE暗号文に戻っており、φ(c)が±1/4の範囲なら平文φ(cx)は0に、φ(c)が1/2±1/4の範囲なら、平文φ(cx)は1/4になっている。
 以上の処理により、Gate Bootstrappingの結果として、0、1/4の2値のうちのいずれかであって誤差が±1/16以内のいずれかになるTLWE暗号文が得られた。
 誤差の最大値は、入力となるTLWE暗号文cに依存せず、システムパラメータによって固定された値となる。
 従って、誤差の最大値が入力となるTLWE暗号文と同じ±1/16以内のいずれかの値となるように、システムパラメータを設定する。
 これにより、何度でもNAND演算ができるようになり、加算、乗算をはじめとしてあらゆる演算が可能となる。
 Gate Bootstrappingから出力されるTLWE暗号の「平文」に乗っている誤差は、TLWE暗号文の整数化で加わる誤差、CMuxで加わる誤差、キースイッチングで固定小数化した時の誤差等である。これらの誤差は全てシステムパラメータで制約でき、全てを考慮した誤差が±1/16となるようにシステムパラメータを調整することができる。
 以上が、TFHEのGate Bootstrappingの処理である。
 本実施形態では、上記のようなTFHEにおける2値のGate Bootstrappingを改良し、3値Gate Bootstrappingを全加算器の演算に用いることにより、Gate Bootstrappingの回数を削減する。
 具体的には、暗号処理装置1は、特に、完全準同型暗号の演算に用いる全加算器において、準同型演算毎に行うGate Bootstrappingが平文として多値(例えば3値)を取りうる暗号文を出力可能に改良することで論理演算(準同型演算)の回数自体を減らす。
 その結果、暗号処理装置1は、論理演算(準同型演算)の後段で行われる、長い演算時間を要するGate Bootstrappingの回数を減らし、完全準同型暗号の処理時間を大幅に低減することが出来る。
 論理演算(準同型演算)の回数を削減し、完全準同型暗号の処理時間を大幅に低減するものである。
 図2、図3を参照して、本実施形態の3値Gate Bootstrappingを詳しく説明する。
 図3に示す全加算器の構成に、平文A、B、Cに夫々対応するTLWE暗号文ca、cb、ccを入力することを考える。
 上記したように、TLWE暗号文ca、cb、ccは加法準同型暗号であり、暗号文の和を演算することで平文同士の和を演算することが出来る。
 これらのTLWE暗号文ca、cb、ccは夫々上記に説明した2値Gate Bootstrappingにより生成されたものであり、あるいは新規に暗号化されたものである。
 TLWE暗号文ca、cb、ccの平文A、B、Cは、例えば図4の円周群{T}における0、1/4の何れかあり、誤差は±1/16の中に含まれるものとする。
 第1演算部12が、まずca+cb+([0],1/8)を演算する。上記に説明したように、([0],1/8)は、どの秘密鍵を用いても復号関数により同じ平文1/8が得られる自明なTLWE暗号文である。
 演算結果は、
0+0+1/8=1/8
0+1/4+1/8=3/8
1/4+1/4+1/8=5/8
から、1/8、3/8、5/8の3つの何れかとなり、これら3つの何れかの平文に対する暗号文が得られる。
 平文に付加される誤差は±1/8以内である。これはca、cbの誤差±1/16を2つ足しているためである。
 第1演算部12の演算結果に対して、第1Bootstrapping部14が、3値Gate Bootstrappingを実行する。
 図6は、3値Gate Bootstrappingの動作イメージ図である。
 図6に示すように、3値Gate Bootstrappingは、図4の円周群{T}に基づいて平文として3値を取り得る(円周群{T}上にマッピングした)TLWE暗号文(後述する一時暗号文ct)を得ることが出来る。
 上記の1/8±1/8は、0~0.25(1/4)であり、円周群{T}におけるこの範囲からは、平文が「0」であるTLWE暗号文を得る。
 また、3/8±1/8は、0.25(1/4)~0.5(1/2)であり、円周群{T}におけるこの範囲からは、平文が「1/4」であるTLWE暗号文を得る。
 また、5/8±1/8は、0.5(1/2)~0.75(3/4)であり、円周群{T}におけるこの範囲からは、平文が「1/2」であるTLWE暗号文を得る。
 本実施形態では、3値Gate Bootstrappingの結果、ca+cbに基づくTLWE暗号文ctが平文として円周群{T}における3値を取り得るように、非0の暗号文の平文を1/4とし、TLWE暗号文ca、TLWE暗号文cbの夫々の誤差を±1/16とし、ca+cbにおける平文に対する誤差を、±1/8としている。
 なお、3値Bootstrappingでは、2値Gate Bootstrappingと同様に、Bootstrappingに先立つ暗号文同士の加算、BlindRotate、SampleExtract キースイッチングを行う。
 暗号文同士の加算の段階で、適当な平文に対応する自明な暗号文を足し引きすること、BlindRotateの前にテストベクタにXの何乗かをかけること、SampleExtractで抽出するサンプルの位置を変えること、は非自明に本質的に同一の処理である。
 すなわち、ca+cbの演算結果に自明な暗号文([0],1/8)を足すこと、テストベクタにX-n/4を掛けること、SampleExtractでn/2の位置の値を抽出して正負を反転させること、からはいずれも同じ結果が得られる。
 暗号処理装置1は、3値Gate Bootstrappingの最初のステップとしてBlindRotateを行う。
 上記論文では、BlindRotateにおけるテストベクタとして、
F(X)=μXn-1+μXn-2・・・+μX+μ
ただし、μ=1/8
が用いられていた。
 それに対して、暗号処理装置1は、3値Gate BootstrappingのBlindRotateにおけるテストベクタとして、
T1(X)=μn-1+μn-2+…μ(n/2)+μ(n/2)-1+…μX+μ
ただし、μ=1/2、μ=1/4
を用いる。
 このテストベクタ多項式T1(X)は、高次部分と低次部分で異なる値の係数を有している。
 高次部分では係数をμ=1/2とし、低次部分では係数をμ=1/4としている。
 テストベクタ多項式T1(X)の係数μ1、μは夫々、本実施形態の3値Gate Bootstrappingが出力するTLWE暗号文の平文がとり得る円周群{T}上の値である。
 暗号処理装置1は、テストベクタ多項式T1(X)を用いて、上記論文と同様にBlindRotateを行ってTRLWE暗号文を得る。
 BlindRotateにおいて、円周群{T}における0~0.25の範囲では、TLWE暗号文ca+cbに2nをかけてTLWE暗号文(ca+cb)’を得るときに、0×2n=0、0.25×2n=n/2となる。
 なお、テストベクタとなる多項式について上記に説明したように、多項式T1(X)にXを掛けることで、μn-1+μn-2+…μ(n/2)+μ(n/2)-1+…μX-μとなって、一番上の項の係数がプラスからマイナスに反転して定数項として現れる。
 さらにXを掛けると、μn-1+μn-2+…μ(n/2)+μ(n/2)-1+…+μ-μX-μのように、もう一度同じことが起きる(一番上の項の係数がプラスからマイナスに反転して定数項として現れる)。
 これを全部でn回繰り返すと、
-μ(n-1)~-μ(n/2)-μ(n/2-1)~-μ
となって全ての項の係数がマイナスとなる。
 さらにXを掛け続けると、
-μ(n-1)…-μ(n/2)-μ(n/2-1)…-μX+μ
-μ(n-1)…-μ(n/2)-μ(n/2-1)…+μX+μ
と一番上の項の係数がマイナスからプラスに反転して定数項として現れていき、全部で2n回繰り返すと、元の多項式T1(X)=μn-1+μn-2+…μ(n/2)+μ(n/2)-1+…μX+μに戻る。
 すなわち、円周群{T}の一周(0→1)が0→2nに変換され、0→0.25が0→n/2の区間に対応する。
 よって、対応するSampleExtractにおいて、TRLWE暗号文の平文多項式の定数項は、上記テストベクタの次数が低い下側のμ(n/2)-1+…μX+μの係数μ=1/4となる。
 BlindRotateにおいて、円周群{T}における0.25~0.5の範囲では、TLWE暗号文ca+cbに2nをかけて暗号文(ca+cb)’を得るときに、0.25×2n=n/2、0.5×2n=nから、(ca+cb)’の平文は、n/2からnの間に入る。
 よって、対応するSampleExtractにおいて、TRLWE暗号文の平文多項式の定数項は、上記テストベクタの次数が高い上側のμn-1+μn-2+…μ(n/2)の係数μ=1/2となる。
 さらに進んで、BlindRotateにおいて、円周群{T}における0.5~0.75の範囲では、TLWE暗号文ca+cbに2nをかけてTLWE暗号文(ca+cb)’を得るときに、0.5×2n=n、0.75×2n=3n/2から、(ca+cb)’の平文は、の平文はnから3n/2の間に入る。
 テストベクタにXをかけることで、係数がローテートしていき、円周群{T}上において0.5から1の間は係数が負である。
 対応するSampleExtractにおいて、TRLWE暗号文の平文多項式の定数項は、上記テストベクタの次数が低い下側のμ(n/2)-1+…μX+μの係数μ=1/4をマイナスにした-1/4となる。-1/4は、円周群{T}上では3/4と同じであるので、3/4がTRLWE暗号文dの定数項となる。
 このように、暗号処理装置1は、BlindRotateにおいて1/4、1/2、3/4の3種類の値を平文多項式の定数項として持つTRLWE暗号文dを得て、TRLWE暗号文dに対するSampleExtractを行う。
 上記論文のSampleExtractでは、SampleExtractの後に得られたTLWE暗号文に対して、平文が1/8となる自明なTLWE暗号文([0],1/8)をさらに加える。
 それに対して、暗号処理装置1は、中途で得られた1/4、1/2、3/4の3種類の値を持つTLWE暗号文に対して、平文が-1/4となる自明なTLWE暗号文([0],-1/4)を加える。
 その演算の結果、図6に示すように、
1/4+(-1/4)=0
1/2+(-1/4)=1/4
3/4+(-1/4)=1/2
から、平文として、0、1/4、1/2の3値の何れかを有するTLWE暗号文が得られた。
 暗号処理装置1は、このようにして得られたTLWE暗号文に対して、上記論文と同様のキースイッチングを行う。
 その結果、暗号処理装置1は、3値Gate Bootstrappingの出力として、平文として0、1/4、1/2の3値を有し、平文に付加される誤差が±1/16の範囲に含まれる一時的な(一時的に利用する)TLWE暗号文ctを得る。
 3値Gate Bootstrappingの前に行ったTLWE暗号ca+cbの演算結果では、平文の和(a+b)に対して、±1/8の誤差が付加されていた。
 3値Gate Bootstrappingの結果として、新たなTLWE暗号文ctにおいて平文に付加されている誤差は±1/16に、すなわち、当初のTLWE暗号文ca、cbと同じ範囲の誤差にまで削減されたことが分かる。
 誤差が削減されることで、TLWE暗号文ctは再度論理演算に用いることが出来る。
 全加算記の処理として、暗号処理装置1は、3値Gate Bootstrappingの結果得られたTLWE暗号文ctに対して、桁上げ入力のTLWE暗号文ccを加算する。
 第2演算部13が、ct+cc+([0],-1/8)を演算し、第3演算部14が、2×(ct+cc)を演算する。
 第2演算部13の出力と第3演算部14の出力(いずれも、2値を取り得るTLWE暗号)に対して、夫々、第2算出部16、第3算出部17が上記論文に記載されている2値Gate Bootstrappingを行うことで、全加算器の桁上げ出力Cと出力SとしてのTLWE暗号文cy、czがさらに得られる。
 以上のように構成したので、本実施形態によれば、論理演算素子の演算でほとんどすべての演算時間を消費しているGate Bootstrappingの回数を3回に減らすことができた。
 3値Gate Bootstrappingを行わずに上記論文の2値Gate Bootstrappingだけで全加算器を実装する場合には2値Gate Bootstrappingを5回実行する必要がある。それに比べて、本実施形態の手法では演算時間を40%短縮できることが実験によって確認できた。
 また、桁上げ出力とSUM出力を夫々処理する後半2つの2値Gate Bootstrappingは互いに依存関係がないため、マルチスレッド処理などにより並列化することで、全加算器全体で、Gate Bootstrapping2回分の処理時間とすることが出来る。
 後半2つの2値Gate Bootstrappingを並列化することで、それをせずGate Bootstrappingを3回実行する場合と比べて演算時間をさらに33%短縮できることが見込める。
 図1に示した方法をマルチスレッド化した場合にも、全加算器全体で、Gate Bootstrapping3回分の処理時間とすることが出来る。それと比べても、マルチスレッド化した本実施形態の手法によれば演算時間を33%短縮できることが見込める。
 図7は、暗号処理装置が実行する全加算器の演算処理の流れを説明するフローチャートである。
 上記したように、2値の暗号文の場合、円周群{T}における0~1/4、3/4~1の区間の平文を0のTLWE暗号文に変換する。また、円周群{T}における1/4~3/4の区間の平文を1/4のTLWE暗号文に変換する。この変換の際、平文に付加される誤差は、±1/16の範囲のいずれかの値である。
 上記した円周群{T}の範囲を、0、1などの(多値)論理演算で用いるシンボルを対応づける。
 すなわち、
Figure JPOXMLDOC01-appb-I000031

となる。
 3値の暗号文の場合、円周群{T}における0~1/4の区間の平文を0のTLWE暗号文に変換する。円周群{T}における1/4~1/2、3/4~1の区間の平文を1/4のTLWE暗号文に変換する。円周群{T}における1/2~3/4の区間の平文を1/2のTLWE暗号文に変換する。この変換の際、平文に付加される誤差は、±1/16の範囲のいずれかの値でである。
 上記した円周群{T}の範囲を、(多値)論理演算で用いるシンボル0、1、2を対応づける。
Figure JPOXMLDOC01-appb-I000032
 円周群{T}上の範囲(誤差を含む)が、暗号文における2値又は3値の平文の何れかに値に対応している。
 暗号文は、([a]、b)の形式を有するベクトルであり、ベクトルの要素は円周群上の点である。平文もまた、円周群{T}上の点である。
 多値論理演算で用いるシンボル0、1、2は、円周群{T}上の範囲と対応付いており、ある暗号文に対する平文は、その範囲内の何れか1点を指している。平文が、その範囲内のどの点を指しているかは、秘密鍵なしでは、特定することが難しい。これによってTLWE暗号文の強度が担保されている。範囲を0として円周群上の点とシンボルを対応づけると、複数の暗号文を集めて連立方程式として平文を導出可能であり、TLWE暗号文の強度は低下してしまう。
 暗号処理装置1(受付部11)は、ステップS101において、演算対象の暗号文が入力されたか否かを受け付けたかを判定する。
 暗号文が入力されたと判定した場合(ステップS101でYes)、暗号処理装置1(受付部11)は、ステップS102において、暗号文を受けつけ、記憶部20に格納する。
 次に、暗号処理装置1(第1演算部12)は、ステップS103において、暗号文を用いて準同型演算を行い、演算結果を記憶部20に格納する。
 暗号処理装置1(第1算出部15)は、ステップS104において、演算結果に対して3値Gate Bootstrappingを行い、平文として多値(3値)を有する一時暗号文を算出し、記憶部20に格納する。
 第1演算部12、第1算出部15による処理の結果、以下の真理値表に示すような演算が行われる。
 この演算は、平文として2値を有する2つの暗号文ca、cbの入力を受け付け、暗号文ca+暗号文cbから平文として3値を有する一時暗号文ctの出力を得るものである。
Figure JPOXMLDOC01-appb-I000033
 例えば、入力される2つの暗号文がシンボル0又は1、つまり区間0±1/16又は1/4±1/16で、ステップS103の演算を行うとき以下の演算を行う。
caが0、cbが0の場合:0±1/16+0±1/16+1/8=1/8±1/8
caが0、cbが1の場合:0±1/16+1/4±1/16+1/8=3/8±1/8
caが1、cbが0の場合:1/4±1/16+0±1/16+1/8=3/8±1/8
caが1、cbが1の場合:1/4±1/16+1/4±1/16+1/8=5/8±1/8
 さらに3値Gate Bootstrapping(図6)を行うと、一時暗号文ctの出力は、
caが0、cbが0の場合:1/8±1/8→0±1/16=0
caが0、cbが1の場合:3/8±1/8→1/4±1/16⇒1
caが1、cbが0の場合:3/8±1/8→1/4±1/16⇒1
caが1、cbが1の場合:5/8±1/8→1/2±1/16⇒2
となる。
 暗号処理装置1(第2演算部13)は、ステップS105において、一時暗号文ctと桁上げ入力ccとの準同型演算を行い、演算結果を記憶部20に格納する。
 暗号処理装置1(第2算出部16)は、ステップS106において、ステップS105の演算結果に対して2値Gate Bootstrappingを行って桁上げ出力cyを算出し、記憶部20に格納する。
 第2演算部13、第2算出部16による処理の結果、以下の真理値表に示すような演算が行われる。
 この演算は、平文として3値を有する暗号文ctの入力と、平文として2値を有する暗号文ccの入力を受け付け、暗号文ctと暗号文ccから平文として2値を有する出力暗号文cyを得るものである。
Figure JPOXMLDOC01-appb-I000034
 例えば、暗号文ccがシンボル0又は1、つまり区間0±1/16又は1/4±1/16であり、暗号文ctがシンボル0、1又は2、つまり区間0±1/16、1/4±1/16、1/2±1/16のとき準同型演算として以下の演算を行う。
ctが0、ccが0の場合:
0±1/16+0±1/16-1/8=-1/8±1/8
ctが0、ccが1の場合:
0±1/16+1/4±1/16-1/8=1/8±1/8
ctが1、ccが0の場合:
1/4±1/16+0±1/16-1/8=1/8±1/8
ctが1、ccが1の場合:
1/4±1/16+1/4±1/16-1/8=3/8±1/8
ctが2、ccが0の場合:
1/2±1/16+0±1/16-1/8=3/8±1/8
ctが2、ccが1の場合:
1/2±1/16+1/4±1/16-1/8=5/8±1/8
 さらに2値Gate Bootstrapping(図5)を行うと、出力暗号文cyの出力は、
ctが0、ccが0の場合:-1/8±1/8⇒0
ctが0、ccが1の場合:1/8±1/8⇒0
ctが1、ccが0の場合:1/8±1/8⇒0
ctが1、ccが1の場合:3/8±1/8⇒1
ctが2、ccが0の場合:3/8±1/8⇒1
ctが2、ccが1の場合:5/8±1/8⇒1
となる。
 暗号処理装置1(第3演算部14)は、ステップS107において、一時暗号文と桁上げ入力と暗号文を用いた準同型演算を行う。
 暗号処理装置1(第3算出部17)は、ステップS108において、ステップS105の演算結果に対して2値Gate Bootstrappingを行って、出力暗号文czを算出し、記憶部20に格納する。
 第3演算部14、第3算出部17による処理の結果、平文において、以下の真理値表に示すような演算が行われる。
 この演算は、3値を有する暗号文ctの入力と、2値を有する暗号文ccの入力を受け付け、2値を有する暗号文czの出力を得るものである。
Figure JPOXMLDOC01-appb-I000035
 例えば暗号文ccがシンボル0又は1、つまり区間0±1/16又は1/4±1/16であり、暗号文ctがシンボル0、1又は2、つまり区間0±1/16、1/4±1/16又は1/2±1/16のとき、準同型演算として以下の演算を行う。
ctが0、ccが0の場合:
2×(0±1/16+0±1/16)=0±1/4
ctが0、ccが1の場合:
2×(0±1/16+1/4±1/16)=1/2±1/4
ctが1、ccが0の場合:
2×(1/4±1/16+0±1/16)=1/2±1/4
ctが1、ccが1の場合:
2×(1/4±1/16+1/4±1/16)=0±1/4
ctが2、ccが0の場合:
2×(1/2±1/16+0±1/16)=0±1/4
ctが2、ccが1の場合:
2×(1/2±1/16+1/4±1/16)=1/2±1/4
 さらに2値Gate Bootstrapping(図5)を行うと、出力暗号文czの出力は、
ctが0、ccが0の場合:0±1/4⇒0
ctが0、ccが1の場合:1/2±1/4⇒1
ctが1、ccが0の場合:1/2±1/4⇒1
ctが1、ccが1の場合:0±1/4⇒0
ctが2、ccが0の場合:0±1/4⇒0
ctが2、ccが1の場合:1/2±1/4⇒1
となる。
 ステップS106の2値Gate Bootstrappingと、ステップS108の2値Gate Bootstrappingと、はマルチスレッド処理によって、並列で実行することが出来る。
 一例として、2つのTLWE暗号文x1、x2に対してORを得るための演算(準同型OR)を行う場合、HomOR(x1,x2)=Bootstrapping((0,1/8)+x1+x2)を実行する。
 実際にシンボル0と0のORを得るための演算を例示する。
 暗号文には乱数を使い、平文に誤差が付加されるので、
Decode(x1)=0+1/100、Decode(x2)=0-1/50
となる。
 加算の準同型演算をすると、
Decode(x1+x2+(0,1/8))=1/8-1/100
となる。この時、後半の誤差成分は暗号化するたびに異なる値となる。
 2値Gate Bootstrappingを行うと、
Decode(gate_bootstrapping(x1+x2+(0,1/8))=0+1/180
である。
 2値Gate Bootstrappingで、0±1/16のどこかになるので、0-0.125もしくは0.875-1の区間となる。このときの誤差は、元々の誤差やシステムパラメータに依存する。
 0±1/180は、シンボル0の範囲0±1/16の範囲内なので、シンボル0となる。
[応用例]
 暗号処理装置1が行う全加算器の高速化は、以下のように応用することが出来る。
 例えば、フィールドやレコードがTLWE暗号で暗号化されているデータベースから、特定のフィールドが一定の範囲内のものを集約したい場合(例えば、30~39歳の平均年収を求めたい場合など)を考える。
 このとき、暗号処理装置1は暗号化されたデータベースを管理するデータベースサーバであり、ネットワーク等を介して接続された端末装置から、TLWE暗号で暗号化されたクエリを受け付け、クエリに対する応答を、TLWE暗号で暗号化した状態で端末装置に返却する。
 暗号化されたデータベースではインデックスを作成することができないため、データベース全体に対する比較と集約が必要である。
 暗号処理装置10は、全加算器を実現する第1演算部12、第2演算部13、第3演算部14、第1Bootstrapping部15、第2Bootstrapping部16、第3Bootstrapping部17の機能によって、暗号化されたデータベースの全てのレコードをクエリと比較する比較演算を行う。
 比較演算は、レコードとクエリの暗号文同士で減算を行うことであり、減算結果の正負が比較演算の等価となる。
 暗号処理装置1はさらに、比較演算でクエリと一致したレコードに対する集約演算を行うことが出来る。
 集約演算において、暗号処理装置1は、比較演算でクエリと一致したレコードを加算して合計を演算し、さらに除算を用いて平均値を求める。
 このように、暗号化されたデータベースに対するクエリの処理には、暗号文を構成する整数同士の加算、減算、乗算、除算などの四則演算、や比較(比較は減算結果の正負と等価である)を行う必要がある。そして、処理には全加算器演算が多用されることが考えられる。そして、扱う整数のビット長が大きくなれば必要となる全加算器の数も増加する。
 全加算器の演算を上記に説明した3値Gate Bootstrappingによって高速化することによってクエリの実行時間を著しく低減することが可能となる。
 四則演算とは、入力された暗号文を用いた順列を二進数で表記した際の各ビットの暗号文とみなした暗号化された数値同士に対して準同型な四則演算である。
 このようなデータベースの集約に限らず、整数同士の四則演算や比較は、暗号文を用いた様々なデータ処理で多用される。
 他の例として、ファジー認証やファジー検索が挙げられる。
 ファジー認証は、例えば生体認証データを使った生体認証であり、生涯不変の生体認証データは暗号化して秘匿するのが絶対条件である。
 ファジー認証は、認証要求として提示された生体認証データとデータベースに登録された生体認証データとの対応に基づいて認証をするものであるが、両者の完全な一致ではなく、閾値付きで一致するか否かを判定する。
 ファジー検索は、クエリとレコードが完全に一致しなくても、クエリに近しいデータをデータベースから検索結果として提示する、曖昧な検索方法である。
 ファジー認証やファジー検索では、上記の暗号化されたデータベースにおける比較演算・集約演算と同様に、暗号化されたデータベースとクエリとの比較を行い、その際には、準同型暗号により暗号化されたデータで比較演算を行う必要がある。
 特にファジー認証やファジー検索では、整数同士の加算、減算、乗算、除算や比較は処理時間の大半を占めるため、それらに用いられる全加算器の演算を高速化することによって処理時間の短縮に大きな効果を奏し得る。
 またファジー認証やファジー検索において比較を行う際、ユークリッド距離が用いられることが多い。ユークリッド距離を演算する際には2乗の演算が必要となる。従って、Bit-wise型の準同型暗号では、乗算を行う際にデータのビット長に対して、O(N)の全加算器を演算しなければならない。また単純な減算による比較演算でも、O(N)の全加算器を演算する必要がある。そのため、全加算器の演算を高速化することによって、ファジー認証やファジー検索に要する処理時間を大幅に低減することが出来る。
 図8は、コンピュータ装置の一実施例を示すブロック図である。
 図8を参照して、コンピュータ装置100の構成について説明する。
 コンピュータ装置100は、例えば、各種情報を処理する暗号処理装置である。そして、コンピュータ装置100は、制御回路101と、記憶装置102と、読書装置103と、記録媒体104と、通信インターフェイス105と、入出力インターフェイス106と、入力装置107と、表示装置108とを含む。また、通信インターフェイス105は、ネットワーク200と接続される。そして、各構成要素は、バス110により接続される。
 暗号処理装置1は、コンピュータ装置100に記載の構成要素の一部又は全てを適宜選択して構成することができる。
 制御回路101は、コンピュータ装置100全体の制御をする。制御回路101は、例えば、Central Processing Unit(CPU)、Field Programmable Gate Array(FPGA)、Application Specific Integrated Circuit(ASIC)及びProgrammable Logic Device(PLD)などのプロセッサである。制御回路101は、例えば、図2における制御部10として機能する。
 記憶装置102は、各種データを記憶する。そして、記憶装置102は、例えば、Read Only Memory(ROM)及びRandom Access Memory(RAM)などのメモリや、Hard Disk(HD)などである。記憶装置102は、制御回路101を、図2における制御部10として機能させる情報処理プログラムを記憶してもよい。記憶装置102は、例えば、図2における記憶部20として機能する。
 暗号処理装置1は、情報処理を行うとき、記憶装置102に記憶されたプログラムをRAMに読み出す。
 暗号処理装置1は、RAMに読み出されたプログラムを制御回路101で実行することにより、受付処理、第1演算処理、第2演算処理、第3演算処理、第1Bootstrapping処理、第2Bootstrapping処理、第3Bootstrapping処理、出力処理のいずれか1以上を含む処理を実行する。
 なお、プログラムは、制御回路101が通信インターフェイス105を介してアクセス可能であれば、ネットワーク200上のサーバが有する記憶装置に記憶されていても良い。
 読書装置103は、制御回路101に制御され、着脱可能な記録媒体104のデータのリード/ライトを行なう。
 記録媒体104は、各種データを保存する。記録媒体104は、例えば、情報処理プログラムを記憶する。記録媒体104は、例えば、Secure Digital(SD)メモリーカード、Floppy Disk(FD)、Compact Disc(CD)、Digital Versatile Disk(DVD)、Blu-ray(登録商標) Disk(BD)、及びフラッシュメモリなどの不揮発性メモリ(非一時的記録媒体)である。
 通信インターフェイス105は、ネットワーク200を介してコンピュータ装置100と他の装置とを通信可能に接続する。通信インターフェイス105は、例えば、図2において、通信部25として機能する。
 入出力インターフェイス106は、例えば、各種入力装置と着脱可能に接続するインターフェイスである。入出力インターフェイス106と接続される入力装置107には、例えば、キーボード、及びマウスなどがある。入出力インターフェイス106は、接続された各種入力装置とコンピュータ装置100とを通信可能に接続する。そして、入出力インターフェイス106は、接続された各種入力装置から入力された信号を、バス110を介して制御回路101に出力する。また、入出力インターフェイス106は、制御回路101から出力された信号を、バス110を介して入出力装置に出力する。入出力インターフェイス106は、例えば、図2において、入力部26として機能する。
 表示装置108は、各種情報を表示する。ネットワーク200は、例えば、LAN、無線通信、P2Pネットワーク、又はインターネットなどであり、コンピュータ装置100と他の装置を通信接続する。
 なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成又は実施形態を取ることができる。
1 暗号処理装置、10 制御部、11 受付部、12 第1演算部、13 第2演算部、14 第3演算部、15 第1Bootstrap部(算出部)、16 第2Bootstrap部(算出部)、17 第3Bootstrap部(算出部)、18 出力部、20 記憶部、25 通信部、26 入力部、100 コンピュータ装置、101 制御回路、102 記憶装置、103 読書装置、104 記録媒体、105 通信インターフェイス、106 入出力インターフェイス、107 入力装置、108 表示装置、110 バス、200 ネットワーク

Claims (9)

  1.  暗号文を処理する暗号処理装置であって、
     前記暗号文は、平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
     前記暗号文を用いた所定の演算において、平文として2値よりも多い多値を有する前記暗号文に基づいた一時暗号文を出力とする多値論理演算を使用することにより前記演算に必要な計算処理の回数を削減する、
    ことを特徴とする暗号処理装置。
  2.  請求項1に記載の暗号処理装置において、
     入力された前記暗号文に対して、前記所定の演算に係る準同型演算を行う第1演算部と、
     前記第1演算部による準同型演算の結果から、前記一時暗号文を第1多項式に基づいて算出する第1算出部と、
     前記一時暗号文に対して、前記所定の演算に係る準同型演算を行う第2演算部と、
     前記第2演算部による準同型演算結果から、平文として2値を有する出力暗号文を第2多項式に基づいて算出する第2算出部と、
    を備える、
    ことを特徴とする暗号処理装置。
  3.  請求項1に記載の暗号処理装置において、
     前記一時暗号文は、平文として3値を取り得ることを特徴とする暗号処理装置。
  4.  請求項2又は3に記載の暗号処理装置において、
     前記所定の演算は全加算器の演算であり、前記一時暗号文を用いることにより前記全加算器の演算を高速化する、
    ことを特徴とする暗号処理装置。
  5.  請求項4に記載の暗号処理装置において、
     前記所定の演算として前記全加算器の演算を行うことにより、入力された前記暗号文を用いた順列を二進数で表記した際の各ビットの暗号文とみなした暗号化された数値同士に対して準同型な四則演算を行う、
    ことを特徴とする暗号処理装置。
  6.  請求項4に記載の暗号処理装置において、
     前記所定の演算として前記全加算器の演算を行うことにより、入力された前記暗号文を用いたファジー認証又はファジー検索に係る処理を行う、
    ことを特徴とする暗号処理装置。
  7.  請求項4に記載の暗号処理装置において、
     前記所定の演算として前記全加算器の演算を行うことによって、入力された前記暗号文に基づく暗号化データベースに対するクエリを処理する、
    ことを特徴とする暗号処理装置。
  8.  プロセッサによって実行される、暗号文を処理する暗号処理方法であって、
     前記暗号文は、平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
     前記暗号文を用いた所定の演算において、平文として2値よりも多い多値を有する前記暗号文に基づいた一時暗号文を出力とする多値論理演算を使用することにより前記演算に必要な計算処理の回数を削減する、
    ことを特徴とする暗号処理方法。
  9.  暗号文を処理する暗号処理方法をプロセッサに実行させる暗号処理プログラムであって、
     前記暗号文は、平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
     前記暗号文を用いた所定の演算において、平文として2値よりも多い多値を有する前記暗号文に基づいた一時暗号文を出力とする多値論理演算を使用することにより前記演算に必要な計算処理の回数を削減する、
    ことを特徴とする暗号処理プログラム。
PCT/JP2021/020522 2020-08-31 2021-05-28 暗号処理装置、暗号処理方法、及び暗号処理プログラム WO2022044464A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/043,007 US20240039693A1 (en) 2020-08-31 2021-05-28 Encryption processing device, encryption processing method, and encryption processing program

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2020-146192 2020-08-31
JP2020146192 2020-08-31
JP2021-069047 2021-04-15
JP2021069047A JP7069460B2 (ja) 2020-08-31 2021-04-15 暗号処理装置、暗号処理方法、及び暗号処理プログラム

Publications (1)

Publication Number Publication Date
WO2022044464A1 true WO2022044464A1 (ja) 2022-03-03

Family

ID=80353007

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/020522 WO2022044464A1 (ja) 2020-08-31 2021-05-28 暗号処理装置、暗号処理方法、及び暗号処理プログラム

Country Status (2)

Country Link
US (1) US20240039693A1 (ja)
WO (1) WO2022044464A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107864033A (zh) * 2017-05-16 2018-03-30 中国人民武装警察部队工程大学 一种自举型对称全同态加密方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107864033A (zh) * 2017-05-16 2018-03-30 中国人民武装警察部队工程大学 一种自举型对称全同态加密方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SUGIYAMA, SHOTARO ET AL.: "Algorithm and Architecture Design for Fully Homomorphic Encryption Hardware", IEICE TECHNICAL REPORT, vol. 119, no. 443, 26 February 2020 (2020-02-26), pages 285 - 290, ISSN: 0913- 5685 *

Also Published As

Publication number Publication date
US20240039693A1 (en) 2024-02-01

Similar Documents

Publication Publication Date Title
Aguilar Melchor et al. A comparison of the homomorphic encryption libraries HElib, SEAL and FV-NFLlib
Maximov et al. Fast computation of large distributions and its cryptographic applications
JP7069460B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
WO2019087317A1 (ja) 秘密計算装置、システム、方法、プログラム
US20240022395A1 (en) Encryption processing device and encryption processing method
WO2023074133A1 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
WO2023067928A1 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
Chattopadhyay et al. Non-malleable codes, extractors and secret sharing for interleaved tampering and composition of tampering
WO2022044464A1 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP7185346B1 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP7261502B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
WO2022270080A1 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
EP4087177A1 (en) Blind rotation for use in fully homomorphic encryption
Babenko et al. Euclidean division method for the homomorphic scheme ckks
JP7187076B1 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP7228287B1 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
Bombar et al. Pseudorandomness of Decoding, Revisited: Adapting OHCP to Code-Based Cryptography
JP2021083039A (ja) 秘匿演算装置、秘匿演算方法及び秘匿演算プログラム
JP2024012928A (ja) 暗号処理装置、暗号処理方法、暗号処理プログラム
KR102522393B1 (ko) 동형암호로 암호화된 데이터 연산 방법
JP2024013184A (ja) 暗号処理装置、暗号処理方法、暗号処理プログラム
WO2023281694A1 (ja) 秘密計算システム、装置、方法及びプログラム
Golimblevskaia et al. Survey software implementations of homomorphic encryption methods
Ishchukova et al. Linear and Differential Analysis of Simplified Kuznyechik Cipher
WO2023281693A1 (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: 21860895

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 18043007

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

Country of ref document: EP

Kind code of ref document: A1