WO2018109809A1 - 復号装置、復号方法およびプログラム - Google Patents
復号装置、復号方法およびプログラム Download PDFInfo
- Publication number
- WO2018109809A1 WO2018109809A1 PCT/JP2016/086924 JP2016086924W WO2018109809A1 WO 2018109809 A1 WO2018109809 A1 WO 2018109809A1 JP 2016086924 W JP2016086924 W JP 2016086924W WO 2018109809 A1 WO2018109809 A1 WO 2018109809A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bits
- decoding
- bit
- vector
- message
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3738—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0047—Decoding adapted to other signal detection operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0076—Distributed coding, e.g. network coding, involving channel coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3093—Public 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0054—Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms
Definitions
- the present invention relates to a decryption device, a decryption method, and a program, and more particularly, to a decryption device, a decryption method, and a program in a trapdoor function used for lattice encryption and signature.
- a trapdoor function is a procedure consisting of key generation processing, function calculation processing, and inverse function calculation processing, and is used particularly in public key cryptography and signatures.
- Ciphers using lattices (lattice ciphers) and signatures are efficient ciphers based on the simplicity of computation, homomorphisms resulting from the linearity of basic operations, and security that has not been discovered by attacks by quantum computers. Intense research is ongoing.
- Non-Patent Document 1 describes a typical method for constructing trapdoor functions in lattice encryption and signatures.
- the primitive lattice matrix G is Is a matrix represented by Where vector (Hereinafter also referred to as g.) Is a vector whose elements are powers of 2.
- key generation processing, function calculation processing, and inverse function calculation processing are performed.
- specific contents of (1) key generation processing, (2) function calculation processing, and (3) inverse function calculation processing will be described.
- Non-Patent Document 1 the key generation processing is configured as follows.
- the key generation process uses N ⁇ Z as a security parameter, and the parameter Is accepted as input.
- the key generation process outputs a matrix that becomes a “public key” and a matrix that becomes a “trunk door” (or “secret key”).
- O and ⁇ are Landau symbols.
- ⁇ is It is a number that satisfies
- the public key is a matrix with each component Z q Configured as
- F) represents the two matrices E and F arranged side by side.
- Matrix Is It was sampled uniformly from Further, the matrix H is a Z q N ⁇ N regular matrix.
- Matrix Is a variance value ⁇ for explaining each column vector next The matrix generated from the above discrete Gaussian distribution.
- "Discrete Gaussian distribution on Z N with variance ⁇ " is a real number Function determined by Use the integer value The probability The distribution output at.
- such a discrete Gaussian distribution is represented as D Z N , ⁇ .
- the public key A and the matrix R that becomes a trapdoor (or secret key) are output at the end.
- the function calculation process uses as input the public key A generated as described above, the parameter param, and the vector corresponding to the message. (Hereinafter also referred to as m). In addition, the function calculation process is based on the discrete Gaussian distribution. (Hereinafter also referred to as e) Is output (hereinafter also referred to as c).
- the inverse function calculation process accepts a vector c generated by the function calculation process as an input.
- the matrix From the right the result of applying the above matrix to the vector c is represented as a vector b.
- the vector b is It becomes. In the rightmost side It was. That is, the vector b is an error vector obtained by encoding mH with the atomic lattice matrix G. (Hereinafter also referred to as ⁇ ). Note that each component of the error vector ⁇ is almost certainly included in the range of ( ⁇ q / 4, q / 4] by taking the matrix R and the vector e, which are secret keys, from an appropriate distribution.
- Non-Patent Document 1 when the first component m 0 of the message m is bit expanded It shall be expressed as The error correction process described in Non-Patent Document 1 is as follows.
- step A2 "Error correction of Non-Patent Document 1 (Step A2)"
- the (K-1) th component of vector b is It is.
- m 0,0 is already decoded (known), and the error vector component is Therefore, the second bit m 0,1 from the lower order of the first component m 0 can be decoded.
- Non-Patent Document 1 The above is the inverse function calculation processing in Non-Patent Document 1.
- Non-Patent Document 1 a trapdoor function is configured by performing such key generation processing, function calculation processing, and inverse function calculation processing.
- Patent Document 1 describes an arithmetic decoding device that performs a decoding process on a plurality of bits collectively.
- Patent Document 1 The entire disclosure of Patent Document 1 and Non-Patent Document 1 is incorporated herein by reference. The following analysis was made by the present inventors.
- K decoding processes are required to decode a K-bit message. That is, a bit-by-bit sequential decoding process called “error correction of non-patent document 1 (steps A1 to A3)” is necessary, and there is a problem that the speed cannot be increased by parallel processing.
- the arithmetic decoding device described in Patent Document 1 performs batch decoding processing if possible after determining whether or not a plurality of bits can be decoded collectively. It does not contribute to solving the above problems.
- An object of the present invention is to provide a decoding device, a decoding method, and a program that contribute to the solution of the problem.
- the decryption apparatus encodes a message to be encrypted by a trapdoor function by taking an inner product with a vector whose element is a power of 2 and a discrete Gaussian distribution.
- a multi-bit decoding unit that receives an input vector summed with an error vector composed of elements and correctly decodes a plurality of bits from the lower order of the message based on the input vector with a predetermined probability; and a plurality of decoded bits
- a confirmation calculation unit that determines in parallel whether or not it is correct.
- the decryption method includes a method in which a computer encodes a message to be encrypted by a trapdoor function by taking an inner product with a vector having a power of 2 as an element, A step of receiving an input vector obtained by adding an error vector composed of elements conforming to a Gaussian distribution; a step of correctly decoding a plurality of bits from a lower order of the message based on the input vector with a predetermined probability; Determining in parallel whether the bits are correct.
- the program according to the third aspect of the present invention is obtained by encoding a message to be encrypted by a trapdoor function by taking an inner product with a vector having a power of 2 as an element, and an element following a discrete Gaussian distribution
- a process for receiving an input vector obtained by adding together an error vector consisting of: a process for correctly decoding a plurality of bits from the lower order of the message based on the input vector with a predetermined probability; and whether the plurality of decoded bits are correct
- the program can also be provided as a program product recorded in a non-transitory computer-readable storage medium.
- the decoding device, the decoding method, and the program according to the present invention can speed up the decoding process of the trapdoor function.
- a decoding device 90 includes a multi-bit decoding unit 100 and a confirmation calculation unit 110.
- the multi-bit decoding unit 100 also uses a plurality of bits from the lower order of the message (for example, the first component m 0 of the message m) based on the input vector (for example, the (K-L + 1) -th component b KL of the vector b).
- the input vector for example, the (K-L + 1) -th component b KL of the vector b.
- L bits m 0,0 ,... , M 0, L-1 from the lower order when the first component m 0 is bit-expanded has a predetermined probability (for example, a predetermined range in which the component ⁇ KL of the error vector ⁇ will be described later) Correctly).
- the confirmation calculation unit 110 determines in parallel whether or not the plurality of decoded bits are correct.
- a plurality of bits (m 0,0 ,..., M 0, K ⁇ 1 ) constituting a message for example, the first component m 0 of the message m).
- a plurality of bits (for example, L bits m 0,0 ,... , M 0, L-1 ) constituting a message for example, the first component m 0 of the message m) are collectively collected.
- the decoded bits are allowed to contain errors.
- the decoding apparatus determines in parallel whether or not an error is included in a plurality of decoded bits.
- the number of times of decoding can be reduced to about K / L times by decoding L bits at a time.
- the determination of the presence or absence of errors in the decoded bits can be processed in a calculation time corresponding to 1 bit by parallel calculation using L processors. Therefore, according to one embodiment, it is possible to significantly speed up the decoding process of the trapdoor function as compared with Non-Patent Document 1.
- a predetermined parameter L (where L is a positive integer less than or equal to K) is used.
- Non-Patent Document 1 a decoding operation is sequentially performed for each bit of the first component m 0 .
- error correction steps A1 to A3 in the decoding process of Non-Patent Document 1 is replaced with an operation based on “error correction (steps B1 to B3)” outlined below.
- Error correction (step B1) A plurality of bits (referred to as L bits) constituting the first component m 0 are calculated at once.
- Error correction (step B2) It is determined how many of the L bits in the calculation result of step B1 are correct.
- Error correction (step B3) The least significant digit determined to be error in the determination in step B2 is inverted, and the process returns to step B1. Moreover, in one Embodiment of this invention, parallel calculation is used in determination of the said step B2.
- Error correction (step B1) An operation for collectively decoding a plurality of bits (L bits) will be described.
- the error vector component ⁇ KL is at a certain probability (with a very high probability by setting L to an appropriate value). It becomes.
- the error vector component ⁇ KL is included in this range, and the plurality of bits m 0,0 ,... , M 0, L of the first component m 0 collectively from the component b KL of the vector b. Guess -1 .
- Error correction (step B3) Of the estimated values in “error correction (step B1)”, a correct decoded value is calculated as follows based on the determination in “error correction (step B2)”.
- I 0 ⁇ L by inverting the t new new of (I 0 +1) th bit m 0, I0, from the lower bits of t new (I 0 +1) and outputs the bits as t.
- Error correction (step B4) For the next decoding, the same operation as “error correction (step B3)” to “error correction (step B3)” is performed. Specifically, the calculation is performed as follows. When the number of bits of t is expressed as
- -L has a certain probability (with a very high probability by setting L to an appropriate value) It becomes.
- assumes that -L is included in this range, the components of the vector b b K-
- -1 is collectively estimated as t new .
- step B2 For the estimated t new and (b K ⁇
- ) -th component b i (i K-
- Error correction (step B5) “Error correction (step B4)” is repeated until the number of bits of t obtained in “error correction (step B4)” becomes larger than (KL) bits.
- the number of repetitions of sequential bit decoding operations such as “Error correction of Non-Patent Document 1 (steps A1 to A3)” can be reduced by decoding in units of L bits. It becomes possible.
- Non-Patent Document 1 is sequential processing for each bit, whereas in one embodiment, L bits are decoded together in one loop, and error check of the decoding result is performed. This is because by combining, decoding can be performed with approximately K / L sequential processing. In the method of Non-Patent Document 1, there is substantially no error in the result of sequential decoding. On the other hand, according to one embodiment, errors can occur with a probability that cannot be ignored by estimating the decoded value for each L bit. An error check is used to detect this error.
- the error check employed in one embodiment is a method that can be performed independently and in parallel for each bit, and specifies the bit in which an error first occurs when the bit string is viewed from the lower order.
- this error check When this error check is executed in parallel by L calculation units, it can be processed in a processing time substantially equivalent to 1-bit decoding of the method described in Non-Patent Document 1. Therefore, according to one embodiment, it is possible to reduce the entire decoding calculation time including error checking to the decoding time for K / L bits of the method of Non-Patent Document 1.
- the decoding device 90 of this embodiment includes a multi-bit decoding unit 100, a confirmation calculation unit 110, a final bit decoding unit 120, and an output unit 130.
- the decoding device 90 can also be realized by a computer (or information processing device) that operates under program control, for example.
- the matrix G represents the primitive lattice matrix described in the background art.
- the matrix R is Using And here, Represents the discrete Gaussian distribution described in the background art.
- Input data (input vector) input to the decoding device 90 (Hereinafter also referred to as b) is expressed as follows. That is, the input vector b is a vector corresponding to the message (Hereinafter also referred to as m), and discrete Gaussian distribution Using the vector e generated from It is expressed in the form of Referring to FIG. 2, the input vector b is input to the multi-bit decoding unit 100, the confirmation calculation unit 110, and the final bit decoding unit 120, respectively.
- the multi-bit decoding unit 100 collectively decodes a plurality of bits (for example, L bits) of the first component m 0 as in the above-described “error correction (step B1)” and “error correction (step B4)”. .
- the confirmation calculation unit 110 receives the data (t new ) decoded by the multi-bit decoding unit 100 and the given data (input) as in the above “error correction (step B2)” to “error correction (step B4)”. Referring to vector b), the number of correctly decoded bits is obtained, and data composed of correctly decoded bits is generated.
- the final bit decoding unit 120 decodes data that has not been decoded, as in the above-described “error correction (step B6)”.
- the output unit 130 outputs the decoding result.
- the multi-bit decoding unit 100 includes an input unit 101, an L-bit data creation unit 102, and an estimated value calculation unit 103.
- the input unit 101 receives correctly decoded data t of the first component m 0 and the input vector b as input data.
- the L-bit data creation unit 102 generates data used for estimation as pre-calculation of the process of calculating the estimated value in “error correction (step B4)”. That is, the L bit data creation unit On the (K-
- the estimated value calculation unit 103 determines the (L +
- the confirmation calculation unit 110 includes an input unit 111, a threshold determination unit 112, and a decoded value generation unit 113.
- the input unit 111 receives t new and the input vector b estimated by the estimated value calculation unit 103 as input data.
- the threshold determination unit 112 performs the above-described “error correction (step B2)” and “error correction (step B4)”, determines how many of the estimated L bits are correct, and is correctly obtained. The number of bits I 0 is calculated.
- the decoded value generation unit 113 performs the above-described “error correction (step B3)” and “error correction (step B4)”, and generates a correct decoded value t based on the determination result by the threshold determination unit 112.
- the decoded value generation unit 113 sends the decoded value t to the final bit decoding unit 120. Output. In other cases, the decoded value generation unit 113 outputs the decoded value t to the multi-bit decoding unit 100.
- the final bit decoding unit 120 includes an input unit 121, a multi-bit decoding unit 122, a threshold value determination unit 123, a decoded value generation unit 124, and a bit decoding unit 125.
- the input unit 121 receives the decoded value t and the input vector b generated by the decoded value generation unit 113 as input data.
- the multi-bit decoding unit 122 collectively decodes the remaining bits as described in “Error correction (step B6)”.
- the threshold determination unit 123 determines how many of the decoded bits are correct.
- the decoded value generation unit 124 calculates a correct decoded value based on the determination result by the threshold determination unit 123.
- the bit decoding unit 125 sequentially decodes the remaining bits.
- the L-bit data creation unit 102 is data necessary for estimating the next L-bit decoded value based on the data t that has already been correctly decoded. Is transmitted to the estimated value calculation unit 103.
- t represents the number of bits of data t.
- the estimated value calculation unit 103 collectively estimates and decodes up to L bits starting from the higher order of b K ⁇
- the estimated value t new up to bits is calculated (step S1 in FIG. 6). Specifically, the estimated value calculation unit 103 assumes that the error vector component ⁇ K ⁇
- the estimated value calculation part 103 outputs the calculated estimated value tnew to the input part 111 of the confirmation calculation part 110 (FIGS. 3 and 4).
- the input unit 111 of the confirmation calculation unit 110 receives t new and the input vector b as input data.
- the threshold value determination unit 112 of the confirmation calculation unit 111 performs bi to i 2 i t for the (K ⁇
- the decoded value generation unit 113 receives data t new and I 0 from the threshold determination unit 123. For I 0 ⁇ L (No in step S3 in FIG. 6), the decoded value generator 113 of t new new by inverting the second bit, t new new of ((
- the decoded value generation unit 113 selects the output destination of t as follows. When the number of bits of t is larger than (K ⁇ L) bits (Yes in step S5 in FIG. 6), the decoded value generation unit 113 sends t to the final bit decoding unit 120 (FIG. 2). On the other hand, when the number of bits of t is equal to or less than (K-L) bits (No in step S5 in FIG. 6), the decoded value generation unit 113 sends t to the multi-bit decoding unit 100 (FIG. 2).
- the input unit 121 of the final bit decoding unit 120 receives data b and t from the decoded value generation unit 113 (see FIG. 5).
- the multi-bit decoding unit 122, the threshold value determination unit 123, and the decoded value generation unit 124 of the final bit decoding unit 120 are respectively threshold values of the multi-bit decoding unit 100 (see FIG. 3) and the confirmation calculation unit 110 (see FIG. 4). The same procedure as that of the determination unit 112 and the decoded value generation unit 113 is executed.
- the multi-bit decoding unit 122 performs the same processing as the multi-bit decoding unit 100, and collectively decodes the remaining (K ⁇
- the threshold determination unit 123 performs the same processing as the threshold determination unit 112 of the confirmation calculation unit 110, and determines the correct bit portion of the decoded value estimated by the multi-bit decoding unit 122 (step S7 in FIG. 6). . Specifically, the threshold value determination unit 123 applies the above-described “ ⁇ new> ” to t new estimated by the multi-bit decoding unit 122 and the input vector b component (b 0 ,..., B K ⁇
- the decoded value generation unit 124 performs the same processing as the decoded value generation unit 113 (FIG. 4) of the confirmation calculation unit 110, and generates a correct decoded value t based on the determination result by the threshold determination unit 123. Specifically, the decoding value generator 124 executes the procedure of "error correction (step B4)" described above, I 0 ⁇ K-
- I 0 K ⁇
- the bit decoding unit 125 sequentially decodes the remaining (K ⁇
- the decoding process described in Non-Patent Document 1 is performed by decoding a plurality of bits constituting the message collectively and performing error check of the decoding result by parallel calculation. Compared to the above, a high-speed decoding process is possible.
- L bits are decoded together in one loop (that is, the loop between the multi-bit decoding unit 100 and the confirmation calculation unit 110 in FIG. 2, the loop in steps S1 to S5 in FIG. 6). This is because, by combining with the error check of the decoding result based on the parallel calculation, all the bits of the message can be decoded by almost K / L sequential processing.
- the decoding device 90 according to the above embodiment may be realized based on the information processing device 80 illustrated in FIG.
- the information processing apparatus 80 includes a central processing unit (CPU: Central Processing Unit) 81 and a memory 82. Although only one CPU 81 is shown in FIG. 9, the information processing apparatus 80 may include a plurality of CPUs (multiprocessor), or may include a multicore processor in which a plurality of arithmetic cores are mounted on one chip. Good.
- CPU Central Processing Unit
- memory 82 Although only one CPU 81 is shown in FIG. 9, the information processing apparatus 80 may include a plurality of CPUs (multiprocessor), or may include a multicore processor in which a plurality of arithmetic cores are mounted on one chip. Good.
- functions of the multi-bit decoding unit 100, the confirmation calculation unit 110, the final bit decoding unit 120, and the output unit 130 included in the decoding device 90 are executed by the CPU 81 executing a program stored in the memory 82. Realize part or all of In particular, determination processing (step S2 in FIG. 6) by the threshold determination unit 112 (FIG. 4) of the confirmation calculation unit 110 and determination processing (step S7 of FIG. 6) by the threshold determination unit 123 (FIG. 5) of the final bit decoding unit 120. ) Is executed in parallel using a plurality of CPUs or a plurality of arithmetic cores, the decoding process can be speeded up as compared with Non-Patent Document 1.
- Patent Document 1 and Non-Patent Document 1 is incorporated herein by reference.
- the embodiment can be changed and adjusted based on the basic technical concept.
- various combinations or selections of various disclosed elements are possible within the framework of the entire disclosure of the present invention. is there. That is, the present invention of course includes various variations and modifications that could be made by those skilled in the art according to the entire disclosure including the claims and the technical idea.
- any numerical value or small range included in the range should be construed as being specifically described even if there is no specific description.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Probability & Statistics with Applications (AREA)
- Error Detection And Correction (AREA)
Abstract
落とし戸付関数の復号処理を高速化する。復号装置は、落とし戸付関数による暗号化対象のメッセージを、2のべき乗を要素とするベクトルとの内積を取ることで符号化したものと、離散ガウス分布に従う要素から成るエラーベクトルとを足し合わせた入力ベクトルを受け付け、入力ベクトルに基づいてメッセージの下位から複数のビットを所定の確率で正しく復号する複数ビット復号部と、復号された複数のビットが正しいか否かを並列に判定する確認計算部と、を備えている。
Description
本発明は、復号装置、復号方法およびプログラムに関し、特に格子暗号および署名に用いられる落とし戸(trapdoor)付関数における復号装置、復号方法およびプログラムに関する。
落とし戸付関数とは、鍵生成処理、関数計算処理、および、逆関数計算処理から成る手続きであり、特に公開鍵暗号や署名において使用される。格子を用いた暗号(格子暗号)や署名は、計算の簡潔性に基づく効率性と、基本演算の線形性から生じる準同型と、量子計算機による攻撃が発見されていない安全性を有する暗号として、鋭意研究が進められている。
非特許文献1には、格子暗号および署名における落とし戸付関数の構成法として代表的なものが記載されている。
ここで、非特許文献1における落とし戸付関数の構成法について詳細に説明する。なお、非特許文献1および本発明では、演算はqを2べきの整数q = 2K(Kは自然数)として
(以下、Zq= Z/qZとも表す。)
において行うものとする。
(以下、Zq= Z/qZとも表す。)
において行うものとする。
まず、非特許文献1による構成法において重要な役割を果たす「原始格子行列」について述べる。原始格子行列Gは
によって表される行列である。ここで、ベクトル
(以下、gとも表す。)
は、2のべき乗を要素とするベクトルである。この原子格子行列Gを用いて、鍵生成処理、関数計算処理、および、逆関数計算処理が行われる。以下、(1)鍵生成処理、(2)関数計算処理、および、(3)逆関数計算処理の具体的内容について説明する。
によって表される行列である。ここで、ベクトル
(以下、gとも表す。)
は、2のべき乗を要素とするベクトルである。この原子格子行列Gを用いて、鍵生成処理、関数計算処理、および、逆関数計算処理が行われる。以下、(1)鍵生成処理、(2)関数計算処理、および、(3)逆関数計算処理の具体的内容について説明する。
(1)鍵生成処理
非特許文献1では、鍵生成処理を以下のように構成する。鍵生成処理は、N∈Zをセキュリティパラメータとし、パラメータ
を入力として受け付ける。また、鍵生成処理は、「公開鍵」となる行列と、「落とし戸」(ないし「秘密鍵」)となる行列を出力する。ここで、O, ωはランダウの記号である。また、αは
を満たす数である。
非特許文献1では、鍵生成処理を以下のように構成する。鍵生成処理は、N∈Zをセキュリティパラメータとし、パラメータ
を入力として受け付ける。また、鍵生成処理は、「公開鍵」となる行列と、「落とし戸」(ないし「秘密鍵」)となる行列を出力する。ここで、O, ωはランダウの記号である。また、αは
を満たす数である。
まず、公開鍵の生成手続きについて述べる。公開鍵は、各成分がZqである行列として
として構成される。ここで、(E|F)なる表記は2つの行列E, Fを横に並べたものを表す。
また、行列
は、
から一様にサンプルしたものである。さらに、行列HはZq N×Nの正則行列である。また、行列
は、各列ベクトルを次に説明する分散値σである
上の離散ガウス分布から生成した行列とする。ここで「分散値がσのZN上の離散ガウス分布」とは、実数
により定まる関数
を用いて、整数値
を確率
で出力した分布をいう。以下、かかる離散ガウス分布をDZ N ,σと表す。
として構成される。ここで、(E|F)なる表記は2つの行列E, Fを横に並べたものを表す。
また、行列
は、
から一様にサンプルしたものである。さらに、行列HはZq N×Nの正則行列である。また、行列
は、各列ベクトルを次に説明する分散値σである
上の離散ガウス分布から生成した行列とする。ここで「分散値がσのZN上の離散ガウス分布」とは、実数
により定まる関数
を用いて、整数値
を確率
で出力した分布をいう。以下、かかる離散ガウス分布をDZ N ,σと表す。
鍵生成処理では、最後に公開鍵Aと、落とし戸(ないし秘密鍵)となる行列Rを出力する。
(2)関数計算処理
関数計算処理は、入力として、前述のように生成した公開鍵Aと、パラメータparamと、メッセージに相当するベクトル
(以下mとも表す。)を受け付ける。また、関数計算処理は、離散ガウス分布から
(以下eとも表す。)をとり、ベクトル
を出力する(以下cとも表す。)。
関数計算処理は、入力として、前述のように生成した公開鍵Aと、パラメータparamと、メッセージに相当するベクトル
(以下mとも表す。)を受け付ける。また、関数計算処理は、離散ガウス分布から
(以下eとも表す。)をとり、ベクトル
を出力する(以下cとも表す。)。
(3)逆関数計算処理
逆関数計算処理は、入力として関数計算処理で生成されたベクトルcを受け付ける。次に、ベクトルcに対して、行列
を右から作用させる。ここで、ベクトルcに上記行列を作用させた結果をベクトルbと表す。このとき、ベクトルbは
となる。なお、最右辺において
とした。すなわち、ベクトルbはmHを原子格子行列Gによって符号化したものにエラーベクトル
(以下εとも表す。)を加えたデータとなる。ここで、エラーベクトルεの各成分は、秘密鍵である行列Rとベクトルeを適当な分布からとることで、ほぼ確実に(-q/4, q/4]の範囲に含まれることに留意する。すなわち、エラーベクトルεの各成分が(-q/4, q/4]の範囲外となる確率を無視することができる。したがって、ベクトルmHが求まれば、逆行列H-1を右から作用させることで、メッセージmが求まることになる。本発明は、ベクトルbからmHを復号する処理に関するものであるため、行列Hを単位行列としても一般性は失われない。そこで、以下では行列Hを単位行列として扱う。
逆関数計算処理は、入力として関数計算処理で生成されたベクトルcを受け付ける。次に、ベクトルcに対して、行列
を右から作用させる。ここで、ベクトルcに上記行列を作用させた結果をベクトルbと表す。このとき、ベクトルbは
となる。なお、最右辺において
とした。すなわち、ベクトルbはmHを原子格子行列Gによって符号化したものにエラーベクトル
(以下εとも表す。)を加えたデータとなる。ここで、エラーベクトルεの各成分は、秘密鍵である行列Rとベクトルeを適当な分布からとることで、ほぼ確実に(-q/4, q/4]の範囲に含まれることに留意する。すなわち、エラーベクトルεの各成分が(-q/4, q/4]の範囲外となる確率を無視することができる。したがって、ベクトルmHが求まれば、逆行列H-1を右から作用させることで、メッセージmが求まることになる。本発明は、ベクトルbからmHを復号する処理に関するものであるため、行列Hを単位行列としても一般性は失われない。そこで、以下では行列Hを単位行列として扱う。
以上より、メッセージmの復号処理は、結局、ベクトルbの誤り訂正(Error Correction)処理に帰着する。そこで、以下では、誤り訂正処理によってベクトルbからメッセージmを復号する手続きについて詳述する。
また、この誤り訂正はメッセージm= (m0, ..., mN-1)の成分mi(i = 0, …, N-1)ごとに実行される。そこで、以下ではメッセージの第1成分m0∈Zqの復号処理についてのみ説明する。メッセージmの他の成分m1, …, mN-1も第1成分m0と同様に復号できるからである。さらに、ベクトルbについても、メッセージmの第1成分m0の復号に関係する最初のK個の成分(b0, …, bK-1)のみに着目する。
「非特許文献1の誤り訂正(ステップA1)」
ベクトルbの第K番目の成分は
である。ここで、エラーベクトルの成分は
を満たすから、メッセージmの第1成分m0の最下位(下位から1番目)のビットm0,0は一意に復号できる。
ベクトルbの第K番目の成分は
である。ここで、エラーベクトルの成分は
を満たすから、メッセージmの第1成分m0の最下位(下位から1番目)のビットm0,0は一意に復号できる。
「非特許文献1の誤り訂正(ステップA2)」
次に、ベクトルbの第(K-1)番目の成分は
である。ここで、ステップA1でm0,0は復号済(既知)であり、エラーベクトルの成分は
であるから、第1成分m0の下位から2番目のビットm0,1を復号することができる。
次に、ベクトルbの第(K-1)番目の成分は
である。ここで、ステップA1でm0,0は復号済(既知)であり、エラーベクトルの成分は
であるから、第1成分m0の下位から2番目のビットm0,1を復号することができる。
「非特許文献1の誤り訂正(ステップA3)」
以下同様にして、メッセージmの第1成分m0のすべてのビット(m0,0, …, m0,K-1)を復号する。
以下同様にして、メッセージmの第1成分m0のすべてのビット(m0,0, …, m0,K-1)を復号する。
以上が、非特許文献1における逆関数計算処理である。
非特許文献1では、このような鍵生成処理、関数計算処理および逆関数計算処理を行うことで、落とし戸付関数を構成している。
なお、関連技術として、特許文献1には、複数ビットを一括して復号化処理する算術復号化装置が記載されている。
Daniele Micciancio, Chris Peikert, "Trapdoors for Lattices: Simpler, Tighter, Faster, Smaller," [online]、2011年(平成23年)9月14日、EUROCRYPTO 2012, pp.700-718,[2016年(平成28年)11月17日検索]、インターネット〈URL:http://eprint.iacr.org/2011/501〉
特許文献1および非特許文献1の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。
非特許文献1による復号処理では、Kビットのメッセージを復号するのにK回のビット復号処理が必要となる。すなわち「非特許文献1の誤り訂正(ステップA1~A3)」というビットごとの逐次復号処理が必要であり、並列処理による高速化ができないという問題がある。
なお、特許文献1に記載された算術復号化装置は、複数ビットを一括して復号化処理可能かどうか判定した上で、可能であれば一括復号処理を行うものであり、非特許文献1における上記の問題を解決することには寄与しない。
そこで、落とし戸付関数の復号処理を高速化することが課題となる。本発明の目的は、かかる課題解決に寄与する復号装置、復号方法およびプログラムを提供することにある。
本発明の第1の態様に係る復号装置は、落とし戸付関数による暗号化対象のメッセージを、2のべき乗を要素とするベクトルとの内積を取ることで符号化したものと、離散ガウス分布に従う要素から成るエラーベクトルとを足し合わせた入力ベクトルを受け付け、前記入力ベクトルに基づいて前記メッセージの下位から複数のビットを所定の確率で正しく復号する複数ビット復号部と、復号された複数のビットが正しいか否かを並列に判定する確認計算部と、を備えている。
本発明の第2の態様に係る復号方法は、コンピュータが、落とし戸付関数による暗号化対象のメッセージを、2のべき乗を要素とするベクトルとの内積を取ることで符号化したものと、離散ガウス分布に従う要素から成るエラーベクトルとを足し合わせた入力ベクトルを受け付けるステップと、前記入力ベクトルに基づいて前記メッセージの下位から複数のビットを所定の確率で正しく復号するステップと、復号された複数のビットが正しいか否かを並列に判定するステップと、を含む。
本発明の第3の態様に係るプログラムは、落とし戸付関数による暗号化対象のメッセージを、2のべき乗を要素とするベクトルとの内積を取ることで符号化したものと、離散ガウス分布に従う要素から成るエラーベクトルとを足し合わせた入力ベクトルを受け付ける処理と、前記入力ベクトルに基づいて前記メッセージの下位から複数のビットを所定の確率で正しく復号する処理と、復号された複数のビットが正しいか否かを並列に判定する処理と、をコンピュータに実行させる。なお、プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することもできる。
本発明に係る復号装置、復号方法およびプログラムによると、落とし戸付関数の復号処理を高速化することができる。
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
図1を参照すると、一実施形態に係る復号装置90は、複数ビット復号部100および確認計算部110を備えている。複数ビット復号部100は、落とし戸付関数による暗号化対象のメッセージ(例えば上述のメッセージm)を、2のべき乗を要素とするベクトル(例えば上述のベクトルg=(1, 2, …, 2K-1))との内積を取ることで符号化したものと、離散ガウス分布に従う要素から成るエラーベクトル(例えば上述のエラーベクトルε)とを足し合わせた入力ベクトル(例えば上述のベクトルb)を受け付ける。また、複数ビット復号部100は、入力ベクトル(例えばベクトルbの(K-L+1)番目の成分bK-L)に基づいてメッセージ(例えばメッセージmの第1成分m0)の下位から複数のビット(例えば第1成分m0をビット展開したときの下位からLビットm0,0, …, m0, L-1)を所定の確率(例えばエラーベクトルεの成分εK-Lが後述する所定の範囲に含まれる確率)で正しく復号する。さらに、確認計算部110は、復号された複数のビットが正しいか否かを並列に判定する。
非特許文献1に記載された誤り訂正(ステップA1~A3)では、メッセージ(例えばメッセージmの第1成分m0)を構成する複数のビット(m0,0, …, m0,K-1)を逐次的に復号することで、基本的には復号したビットに誤りが含まれないようにしつつ、メッセージを復号化する。一方、一実施形態に係る復号装置では、メッセージ(例えばメッセージmの第1成分m0)を構成する複数のビット(例えばLビットm0,0, …, m0,L-1)を一括して復号する際に、復号したビットに誤りが含まれることを許容する。さらに、一実施形態に係る復号装置では、復号した複数のビットに誤りが含まれるか否かを並列に判定する。一実施形態によると、Lビットごと一括して復号することで、復号の回数をK/L回程度にまで削減することができる。また、復号したビットにおける誤りの有無の判定は、L個のプロセッサを用いた並列計算によって1ビット相当の計算時間で処理することができる。したがって、一実施形態によると、落とし戸付関数の復号処理を、非特許文献1と比較して大幅に高速化することが可能となる。
以下、一実施形態における復号方法について、さらに詳細に説明する。
「非特許文献1の誤り訂正(ステップA1~A3)」については、メッセージmの第1成分m0の復号法のみ説明すれば十分であった。同様の理由から、本発明の一実施形態についても第1成分m0の復号法についてのみ説明する。また、ベクトル
に関しても、メッセージmの第1成分m0の復号に関係する最初のK個の成分(b0, …, bK-1)のみに着目する。
に関しても、メッセージmの第1成分m0の復号に関係する最初のK個の成分(b0, …, bK-1)のみに着目する。
まず、一実施形態における復号処理手続きの概略構成について述べる。以下では、所定のパラメータL(ただし、LはK以下の正の整数とする)を用いる。
非特許文献1の復号処理では、第1成分m0のビットごとに逐次的に復号操作を行う。一方、本発明の一実施形態では、非特許文献1の復号処理における誤り訂正(ステップA1~A3)を、以下に概説する「誤り訂正(ステップB1~B3)」に基づく操作に置き換える。
「誤り訂正(ステップB1)」:第1成分m0を構成する複数のビット(Lビットとする)を一度に計算する。
「誤り訂正(ステップB2)」:ステップB1の計算結果のうちLビットの中で何ビットまでが正しいかを判定する。
「誤り訂正(ステップB3)」:ステップB2による判定で誤りと判定された最下位の桁を反転させて、ステップB1に戻る。
また、本発明の一実施形態では、上記ステップB2の判定において並列計算を用いる。
「誤り訂正(ステップB2)」:ステップB1の計算結果のうちLビットの中で何ビットまでが正しいかを判定する。
「誤り訂正(ステップB3)」:ステップB2による判定で誤りと判定された最下位の桁を反転させて、ステップB1に戻る。
また、本発明の一実施形態では、上記ステップB2の判定において並列計算を用いる。
このとき、ほぼK/L回の繰り返しのビット復号操作により、第1成分m0を構成するすべてのビット(Kビット)の復号を行うことができる。したがって、一実施形態によると、非特許文献1に記載された復号処理を大幅に高速化することが可能となる。
以下では、上記の復号手続きの詳細について説明する。
「誤り訂正(ステップB1)」
複数ビット(Lビット)を一括して復号する操作について述べる。ベクトルbの(K-L+1)番目の成分bK-Lについて
が成り立つ。ここで、エラーベクトルの成分εK-Lはある確率で(Lを適当な値とすることで、相当に高い確率で)
となる。ここでは、エラーベクトルの成分εK-Lがこの範囲に含まれるものと仮定し、ベクトルbの成分bK-Lから一括して第1成分m0の複数のビットm0,0, …, m0, L-1を推測する。ここで、推測値をtnewとおく。すなわち、tnew= m0,0+2m0,1+…+2L-1m0, L-1とする。
複数ビット(Lビット)を一括して復号する操作について述べる。ベクトルbの(K-L+1)番目の成分bK-Lについて
が成り立つ。ここで、エラーベクトルの成分εK-Lはある確率で(Lを適当な値とすることで、相当に高い確率で)
となる。ここでは、エラーベクトルの成分εK-Lがこの範囲に含まれるものと仮定し、ベクトルbの成分bK-Lから一括して第1成分m0の複数のビットm0,0, …, m0, L-1を推測する。ここで、推測値をtnewとおく。すなわち、tnew= m0,0+2m0,1+…+2L-1m0, L-1とする。
「誤り訂正(ステップB2)」
「誤り訂正(ステップB1)」で推測した値tnewの何ビット目までが正しいかを判定する。具体的には、以下のようにして判定する。
ベクトルbの(K-L+1)番目からK番目の各成分bi (i = K-L, K-L+1, …, K-1)についてbi - 2i tnewを並列に計算し、以下のようにして、フラグJiを定義する。
ここでbK-I0からbK-1までのbiについてフラグJi = 1である(すなわち、ビットm0,0からビットm0,I0-1までのI0ビット分が正しく求められた)場合、I0を出力する(なお、I0をI0とも表す)。一方、フラグJi = 1となるiが存在しない場合(すなわち、すべてのiについてフラグJi = 0の場合)、I0 = 0とする。
「誤り訂正(ステップB1)」で推測した値tnewの何ビット目までが正しいかを判定する。具体的には、以下のようにして判定する。
ベクトルbの(K-L+1)番目からK番目の各成分bi (i = K-L, K-L+1, …, K-1)についてbi - 2i tnewを並列に計算し、以下のようにして、フラグJiを定義する。
ここでbK-I0からbK-1までのbiについてフラグJi = 1である(すなわち、ビットm0,0からビットm0,I0-1までのI0ビット分が正しく求められた)場合、I0を出力する(なお、I0をI0とも表す)。一方、フラグJi = 1となるiが存在しない場合(すなわち、すべてのiについてフラグJi = 0の場合)、I0 = 0とする。
「誤り訂正(ステップB3)」
「誤り訂正(ステップB1)」での推測値のうち、「誤り訂正(ステップB2)」での判定を基に正しい復号値を以下のように計算する。I0 ≠ Lのとき、tnewの(I0+1)番目のビットm0,I0を反転させて、tnewのうちの下位ビットから(I0+1)ビット分をtとして出力する。一方、I0 = Lのとき、tnewをそのままtとして出力する。
「誤り訂正(ステップB1)」での推測値のうち、「誤り訂正(ステップB2)」での判定を基に正しい復号値を以下のように計算する。I0 ≠ Lのとき、tnewの(I0+1)番目のビットm0,I0を反転させて、tnewのうちの下位ビットから(I0+1)ビット分をtとして出力する。一方、I0 = Lのとき、tnewをそのままtとして出力する。
「誤り訂正(ステップB4)」
次の復号も、「誤り訂正(ステップB1)」から「誤り訂正(ステップB3)」と同様の操作を行う。具体的には、以下のように計算する。tのビット数を|t|と表したとき、ベクトルbの次のLビット(bK-|t|-L, …, bK-|t|-1)に注目する。ベクトルbの(K-|t|-L+1)番目の成分bK-|t|-Lについて
が成り立つ。ここで、エラーベクトルの成分εK-|t|-Lはある確率で(Lを適当な値とすることで、相当に高い確率で)
となる。そこで、エラーベクトルの成分εK-|t|-Lがこの範囲に含まれるものと仮定し、ベクトルbの成分bK-|t|-Lに基づいて、第1成分m0の(|t|+1)ビット目m0,|t|から(L+|t|)ビット目m0,L+|t|-1までを一括して推測してtnewとする。
次の復号も、「誤り訂正(ステップB1)」から「誤り訂正(ステップB3)」と同様の操作を行う。具体的には、以下のように計算する。tのビット数を|t|と表したとき、ベクトルbの次のLビット(bK-|t|-L, …, bK-|t|-1)に注目する。ベクトルbの(K-|t|-L+1)番目の成分bK-|t|-Lについて
が成り立つ。ここで、エラーベクトルの成分εK-|t|-Lはある確率で(Lを適当な値とすることで、相当に高い確率で)
となる。そこで、エラーベクトルの成分εK-|t|-Lがこの範囲に含まれるものと仮定し、ベクトルbの成分bK-|t|-Lに基づいて、第1成分m0の(|t|+1)ビット目m0,|t|から(L+|t|)ビット目m0,L+|t|-1までを一括して推測してtnewとする。
推測したtnewおよび(bK-|t|-L, …, bK-|t|-1)に対して、上述の「誤り訂正(ステップB2)」と「誤り訂正(ステップB3)」で行った手続きを実行する。具体的には、ベクトルbの(K-|t|-L+1)番目の成分から(K-|t|)番目の各成分bi (i = K-|t|-L, …, K-|t|-1)についてbi - 2i tnewを並列に計算し、以下のようにして、フラグJiを定義する。
ここでbK-|t|-I0からbK-|t|-1までのbiについてフラグJi = 1である(すなわち、ビットm0,|t|からビットm0,|t|+I0-1までのI0ビット分が正しく求められた)場合、I0を出力する。一方、フラグJi = 1となるiが存在しない場合(すなわち、すべてのiについてフラグJi = 0の場合)、I0 = 0とする。
ここでbK-|t|-I0からbK-|t|-1までのbiについてフラグJi = 1である(すなわち、ビットm0,|t|からビットm0,|t|+I0-1までのI0ビット分が正しく求められた)場合、I0を出力する。一方、フラグJi = 1となるiが存在しない場合(すなわち、すべてのiについてフラグJi = 0の場合)、I0 = 0とする。
I0 ≠ Lの場合、tnewの(|t|+I0+1)番目のビットm0,|t|+I0を反転させて、tnewのうちの下位ビットから(|t|+I0+1)ビット分をtとして出力する。一方、I0 = Lの場合、tnewをそのままtとして出力する。
「誤り訂正(ステップB5)」
「誤り訂正(ステップB4)」で求められたtのビット数が(K-L)ビットより大きくなるまで「誤り訂正(ステップB4)」を繰り返す。
「誤り訂正(ステップB4)」で求められたtのビット数が(K-L)ビットより大きくなるまで「誤り訂正(ステップB4)」を繰り返す。
「誤り訂正(ステップB6)」
「誤り訂正(ステップB5)」までは、メッセージmの第1成分m0についてLビットごとに一括して復号を行った。一方、第1成分m0について復号すべきKビットのうち、残りのビット数が(L-1)ビット以下となった場合、残りのビット(L-1ビット以下)を一括して復号する。具体的には、次のようにする。
「誤り訂正(ステップB5)」までは、メッセージmの第1成分m0についてLビットごとに一括して復号を行った。一方、第1成分m0について復号すべきKビットのうち、残りのビット数が(L-1)ビット以下となった場合、残りのビット(L-1ビット以下)を一括して復号する。具体的には、次のようにする。
ベクトルbの残りの(K-|t|)ビット(b0, …, bK-|t|-1)に注目する。ベクトルbの1番目の成分b0について
が成り立つ。ここで、エラーベクトルの成分ε0はある確率で((K-|t|)の値に応じて相当に高い確率で)
となる。そこで、エラーベクトルの成分ε0がこの範囲に含まれるものと仮定し、ベクトルbの成分b0に基づいて、第1成分m0の(|t|+1)ビット目m0,|t|からKビット目m0,K-1までを推測してtnewとする。推測したtnewおよび(b0, …, bK-|t|-1)に対して、上述の「誤り訂正(ステップB4)」の手続きを実行する。
が成り立つ。ここで、エラーベクトルの成分ε0はある確率で((K-|t|)の値に応じて相当に高い確率で)
となる。そこで、エラーベクトルの成分ε0がこの範囲に含まれるものと仮定し、ベクトルbの成分b0に基づいて、第1成分m0の(|t|+1)ビット目m0,|t|からKビット目m0,K-1までを推測してtnewとする。推測したtnewおよび(b0, …, bK-|t|-1)に対して、上述の「誤り訂正(ステップB4)」の手続きを実行する。
具体的には、ベクトルbの1番目の成分から(K-|t|)番目の各成分bi (i = 0, …, K-|t|-1)についてbi - 2i tnewを並列に計算し、以下のようにして、フラグJiを定義する。
ここでbK-|t|-I0からbK-|t|-1までのbiについてフラグJi = 1である(すなわち、ビットm0,|t|からビットm0,|t|+I0-1までのI0ビット分が正しく求められた)場合、I0を出力する。一方、フラグJi = 1となるiが存在しない場合(すなわち、すべてのiについてフラグJi = 0の場合)、I0 = 0とする。
ここでbK-|t|-I0からbK-|t|-1までのbiについてフラグJi = 1である(すなわち、ビットm0,|t|からビットm0,|t|+I0-1までのI0ビット分が正しく求められた)場合、I0を出力する。一方、フラグJi = 1となるiが存在しない場合(すなわち、すべてのiについてフラグJi = 0の場合)、I0 = 0とする。
I0 ≠ K-|t|の場合、tnewの(|t|+I0+1)番目のビットm0,|t|+I0を反転させて、tnewのうちの下位ビットから(|t|+I0+1)ビット分をtとして出力する。一方、I0 = K-|t|の場合、tnewをそのままtとして出力する。
こうして求めたtのビット数がKである場合、tをそのまま出力する。一方、実行後のtのビット数がKに満たない場合、tのビット数がKとなるまで、「非特許文献1の誤り訂正(ステップA1~A3)」に従って1ビットごとに逐次的に復号を行う。
以上で述べた方法により、メッセージmの第1成分m0のすべてのビット(Kビット)の復号処理が可能となる。
一実施形態によると、Lビットごとにまとめて復号することにより、「非特許文献1の誤り訂正(ステップA1~A3)」のような逐次的なビット復号操作の繰り返しの回数を削減することが可能となる。
[効果]
一実施形態によると、落とし戸付き関数の復号において、複数ビットをまとめて復号し、復号結果を並列処理によりチェックすることで、復号処理の高速化が可能となる。
一実施形態によると、落とし戸付き関数の復号において、複数ビットをまとめて復号し、復号結果を並列処理によりチェックすることで、復号処理の高速化が可能となる。
その理由は、非特許文献1に記載された方式ではビットごとの逐次処理であったのに対し、一実施形態では、1回のループでLビットごとまとめて復号し、復号結果のエラーチェックと組み合わせることで、ほぼK/L回の逐次処理で復号することができるからである。非特許文献1の方式では、逐次復号された結果には実質的に誤りが生じない。一方、一実施形態によると、Lビットごとまとめて復号値を推定することで、無視できない確率で誤りが生じ得る。この誤りを検知するために、エラーチェックを用いる。ここで、一実施形態で採用したエラーチェックはビットごとに独立かつ並列に行える方式であり、ビット列を下位から見た場合に最初にエラーが発生したビットを特定するものである。このエラーチェックをL個の計算ユニットにより並列実行した場合、実質的には非特許文献1に記載された方式の1ビット復号程度の処理時間で処理することが可能となる。したがって、一実施形態によると、エラーチェックも含めた全体の復号計算時間を、非特許文献1の方式のK/Lビット分の復号の時間にまで短縮することが可能となる。
<実施形態1>
次に、第1の実施形態に係る復号装置ついて図面を参照して詳細に説明する。
次に、第1の実施形態に係る復号装置ついて図面を参照して詳細に説明する。
[構成]
図2を参照すると、本実施形態の復号装置90は、複数ビット復号部100、確認計算部110、最終ビット復号部120、および、出力部130を備えている。復号装置90は、例えばプログラム制御により動作するコンピュータ(ないし情報処理装置)によって実現することもできる。
図2を参照すると、本実施形態の復号装置90は、複数ビット復号部100、確認計算部110、最終ビット復号部120、および、出力部130を備えている。復号装置90は、例えばプログラム制御により動作するコンピュータ(ないし情報処理装置)によって実現することもできる。
ここでは、記号として
をセキュリティパラメータとして、以下のパラメータ
を用いる。行列Gは、背景技術で述べた原始格子行列を表すものとする。また、行列Rは
を用いて
とする。ここで、
は、背景技術で述べた離散ガウス分布を表す。
をセキュリティパラメータとして、以下のパラメータ
を用いる。行列Gは、背景技術で述べた原始格子行列を表すものとする。また、行列Rは
を用いて
とする。ここで、
は、背景技術で述べた離散ガウス分布を表す。
復号装置90に入力される入力データ(入力ベクトル)
(以下bとも表す。)は、次のように表される。すなわち、入力ベクトルbは、メッセージに相当するベクトル
(以下mとも表す。)、および、離散ガウス分布
から生成されたベクトルeを用いて
という形で表される。図2を参照すると、入力ベクトルbは、複数ビット復号部100、確認計算部110、および、最終ビット復号部120にそれぞれ入力される。
(以下bとも表す。)は、次のように表される。すなわち、入力ベクトルbは、メッセージに相当するベクトル
(以下mとも表す。)、および、離散ガウス分布
から生成されたベクトルeを用いて
という形で表される。図2を参照すると、入力ベクトルbは、複数ビット復号部100、確認計算部110、および、最終ビット復号部120にそれぞれ入力される。
メッセージm = (m0, …, mN-1)の各成分mi (i = 0, …, N-1)は、いずれも同様の手続きにより復号される。したがって、以下では、メッセージmの第1成分m0の復号についてのみ説明する。
複数ビット復号部100は、上述の「誤り訂正(ステップB1)」および「誤り訂正(ステップB4)」のように、第1成分m0の複数のビット(例えばLビット)を一括して復号する。確認計算部110は、上述の「誤り訂正(ステップB2)」~「誤り訂正(ステップB4)」のように、複数ビット復号部100によって復号されたデータ(tnew)と与えられたデータ(入力ベクトルb)を参照し、正しく復号されたビット数を求め、正しく復号されたビットから成るデータを生成する。最終ビット復号部120は、上述の「誤り訂正(ステップB6)」のように、復号が完了していないデータを復号する。出力部130は、復号結果を出力する。
図3を参照すると、複数ビット復号部100は、入力部101、Lビットデータ作成部102、および、推測値計算部103を備えている。入力部101は、入力データとして、第1成分m0のうちの正しく復号済のデータtと入力ベクトルbを受け取る。Lビットデータ作成部102は、「誤り訂正(ステップB4)」における推測値を計算する処理の事前計算として、推測に用いるデータを生成する。すなわち、Lビットデータ作成部は、
ベクトルbの(K-|t|-L+1)番目の成分bK-|t|-Lについて
を求める。推測値計算部103は、Lビットデータ作成部102によって計算されたデータから第1成分m0の(|t|+1)ビット目m0,|t|から(L+|t|)ビット目m0,L+|t|-1までのLビットを推測してtnewとする。推定値計算部103は、推測したtnewを確認計算部110に出力する。
ベクトルbの(K-|t|-L+1)番目の成分bK-|t|-Lについて
を求める。推測値計算部103は、Lビットデータ作成部102によって計算されたデータから第1成分m0の(|t|+1)ビット目m0,|t|から(L+|t|)ビット目m0,L+|t|-1までのLビットを推測してtnewとする。推定値計算部103は、推測したtnewを確認計算部110に出力する。
図4を参照すると、確認計算部110は、入力部111、閾値判定部112、および、復号値生成部113を備えている。入力部111は、入力データとして、推測値計算部103が推測したtnewと入力ベクトルbを受け付ける。閾値判定部112は上述の「誤り訂正(ステップB2)」および「誤り訂正(ステップB4)」の処理を行い、推測したLビットのうちの何ビットまでが正しいかを判定し、正しく求められたビット数I0を算出する。復号値生成部113は上述の「誤り訂正(ステップB3)」および「誤り訂正(ステップB4)」の処理を行い、閾値判定部112による判定結果に基づいて正しい復号値tを生成する。復号値生成部113は、復号値tのビット数が(K-L)ビットより大きい(すなわち、未復号のビット数が(L-1)ビット以下)の場合、復号値tを最終ビット復号部120に出力する。それ以外の場合、復号値生成部113は、復号値tを複数ビット復号部100に出力する。
図5を参照すると、最終ビット復号部120は、入力部121、複数ビット復号部122、閾値判定部123、復号値生成部124、および、ビット復号部125を備えている。入力部121は、入力データとして復号値生成部113により生成された復号値tと入力ベクトルbを受け付ける。複数ビット復号部122は、「誤り訂正(ステップB6)」で説明したように、残るビットを一括で復号する。閾値判定部123は、復号したビットのうちの何ビットまでが正しいかを判定する。復号値生成部124は、閾値判定部123による判定結果に基づいて正しい復号値を計算する。ビット復号部125は、残りのビットを逐次復号する。
[動作]
次に、本実施形態の復号装置90および各部の動作について、図6のフロー図を参照して説明する。
次に、本実施形態の復号装置90および各部の動作について、図6のフロー図を参照して説明する。
Lビットデータ作成部102は、既に正しく復号されたデータtに基づいて、次のLビット分の復号値を推測するために必要となるデータ
を作成して、推測値計算部103へ送出する。ここで、|t|はデータtのビット数を表す。
を作成して、推測値計算部103へ送出する。ここで、|t|はデータtのビット数を表す。
推測値計算部103は、bK-|t|-L-2K-|t|-Ltの上位から始まるLビットまでをビットシフトを用いて、まとめて推定復号し、(|t|+L)ビットまでの推測値tnewを計算する(図6のステップS1)。具体的には、推測値計算部103は、上述の「誤り訂正(ステップB4)」のように、エラーベクトルの成分εK-|t|-Lが所定の範囲内に含まれるものと仮定して(図7)、第1成分m0の(|t|+1)ビット目m0,|t|から(L+|t|)ビット目m0,L+|t|-1までを推測してtnewとする。また、推測値計算部103は、計算した推測値tnewを確認計算部110の入力部111へ出力する(図3および図4)。
確認計算部110の入力部111は、tnewおよび入力ベクトルbを入力データとして受け付ける。確認計算部111の閾値判定部112は、入力ベクトルbの(K-|t|-L+1)番目の成分から(K-|t|)番目の各成分biについてbi-2itnewを並列に計算し、各iについて[-q/4, q/4)の範囲に入るか否かを並列に判定する。閾値判定部112は、すべてのi < I0で条件(bi-2itnew ∈[-q/4, q/4))を満たすような最大のI0を求める(図6のステップS2、図8)。なお、かかる条件を満たすiが存在しない場合、I0 = 0とする。また、閾値判定部112は、tnewとI0を復号値生成部113に送出する。
復号値生成部113は、閾値判定部123から、データtnewとI0を受信する。I0 ≠ Lの場合(図6のステップS3のNo)、復号値生成部113はtnewの(|t|+I0+1)番目のビットを反転させて、tnewの(|t|+I0+1)ビットをtとして出力する(図6のステップS4)。一方、I0 = Lの場合(図6のステップS3のYes)、復号値生成部113はtnewをそのままtとして出力する。
ここで、復号値生成部113は、tの出力先を次のように選択する。tのビット数が(K-L)ビットよりも大きい場合(図6のステップS5のYes)、復号値生成部113はtを最終ビット復号部120に送出する(図2)。一方、tのビット数が(K-L)ビット以下の場合(図6のステップS5のNo)、復号値生成部113はtを複数ビット復号部100に送出する(図2)。
最終ビット復号部120の入力部121は、復号値生成部113からデータbおよびtを受け取る(図5参照)。最終ビット復号部120の複数ビット復号部122、閾値判定部123、および、復号値生成部124は、それぞれ、複数ビット復号部100(図3参照)、確認計算部110(図4参照)の閾値判定部112、および、復号値生成部113と同様の手続きを実行する。
すなわち、複数ビット復号部122は、複数ビット復号部100と同様の処理を行い、残りの(K-|t|)ビット(Lビット未満)を一括で復号する(図6のステップS6)。具体的には、複数ビット復号部122は上述の「誤り訂正(ステップB6)」のように第1成分m0の(|t|+1)ビット目m0,|t|からKビット目m0,K-1までを推測してtnewとする。
また、閾値判定部123は、確認計算部110の閾値判定部112と同様の処理を行い、複数ビット復号部122が推定した復号値のうちの正しいビット部分を判定する(図6のステップS7)。具体的には、閾値判定部123は、複数ビット復号部122により推測されたtnewと入力ベクトルbの成分(b0, …, bK-|t|-1)に対して、上述の「誤り訂正(ステップB4)」の手続きを実行し、正しいビット部分を判定し、求めたI0を復号値生成部124に出力する。
さらに、復号値生成部124は、確認計算部110の復号値生成部113(図4)と同様の処理を行い、閾値判定部123による判定結果に基づいて、正しい復号値tを生成する。具体的には、復号値生成部124は、上述の「誤り訂正(ステップB4)」の手続きを実行して、I0 ≠ K-|t|の場合、tnewの(|t|+I0+1)番目のビットm0,|t|+I0を反転させて、tnewの(|t|+I0+1)ビットをtとしてビット復号部125に出力する。一方、復号値生成部124は、I0 = K-|t|の場合、tnewをtとしてビット復号部125に出力する。
ビット復号部125は、|t| ≠ Kの場合、残りの(K-|t|)ビットについて「非特許文献1の誤り訂正(ステップA1~A3)」の手続きを用いて、逐次的に復号を行い第1成分m0のすべてのビット(Kビット)の復号を完了させる(図6のステップS8)。
[効果]
本実施形態によると、落とし戸付き関数の復号において、メッセージを構成する複数のビットをまとめて復号し、復号結果のエラーチェックを並列計算で行うことで、非特許文献1に記載された復号処理と比較して高速な復号処理が可能となる。
本実施形態によると、落とし戸付き関数の復号において、メッセージを構成する複数のビットをまとめて復号し、復号結果のエラーチェックを並列計算で行うことで、非特許文献1に記載された復号処理と比較して高速な復号処理が可能となる。
その理由は、本実施形態では、1回のループ(すなわち図2の複数ビット復号部100と確認計算部110の間のループ、図6のステップS1~S5のループ)においてLビットごとまとめて復号し、並列計算に基づく復号結果のエラーチェックと組み合わせることで、ほぼK/L回の逐次処理でメッセージのすべてのビットを復号することができるからである。
<変形例>
次に、上記の実施形態に係る復号装置90の変形例について説明する。上記の実施形態に係る復号装置90は、図9に示す情報処理装置80に基づいて実現してもよい。
次に、上記の実施形態に係る復号装置90の変形例について説明する。上記の実施形態に係る復号装置90は、図9に示す情報処理装置80に基づいて実現してもよい。
情報処理装置80は、中央処理装置(CPU:Central Processing Unit)81およびメモリ82を有する。図9には1つのCPU81のみを示したが、情報処理装置80は複数のCPUを備えていてもよいし(マルチプロセッサ)、複数の演算コアを1チップに搭載したマルチコアプロセッサを備えていてもよい。
情報処理装置80は、メモリ82に記憶されているプログラムをCPU81が実行することにより、復号装置90が有する複数ビット復号部100、確認計算部110、最終ビット復号部120、および出力部130の機能の一部または全部を実現する。特に、確認計算部110の閾値判定部112(図4)による判定処理(図6のステップS2)と、最終ビット復号部120の閾値判定部123(図5)による判定処理(図6のステップS7)を、複数のCPUまたは複数の演算コアを用いて並列に実行することで、非特許文献1と比較して復号処理を高速化することが可能となる。
なお、特許文献1および非特許文献1の全開示内容は、本書に引用をもって繰り込み記載されているものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
80 情報処理装置
81 CPU
82 メモリ
90 復号装置
100 複数ビット復号部
101 入力部
102 Lビットデータ作成部
103 推測値計算部
110 確認計算部
111 入力部
112 閾値判定部
113 復号値生成部
120 最終ビット復号部
121 入力部
122 複数ビット復号部
123 閾値判定部
124 復号値生成部
125 ビット復号部
130 出力部
81 CPU
82 メモリ
90 復号装置
100 複数ビット復号部
101 入力部
102 Lビットデータ作成部
103 推測値計算部
110 確認計算部
111 入力部
112 閾値判定部
113 復号値生成部
120 最終ビット復号部
121 入力部
122 複数ビット復号部
123 閾値判定部
124 復号値生成部
125 ビット復号部
130 出力部
Claims (9)
- 落とし戸付関数による暗号化対象のメッセージを、2のべき乗を要素とするベクトルとの内積を取ることで符号化したものと、離散ガウス分布に従う要素から成るエラーベクトルとを足し合わせた入力ベクトルを受け付け、前記入力ベクトルに基づいて前記メッセージの下位から複数のビットを所定の確率で正しく復号する複数ビット復号部と、
復号された複数のビットが正しいか否かを並列に判定する確認計算部と、を備える、
ことを特徴とする復号装置。 - 前記確認計算部は、前記エラーベクトルに含まれる要素がとり得る値の範囲に基づいて、復号された複数のビットが正しいか否かを判定する、
請求項1に記載の復号装置。 - 前記確認計算部は、復号された複数のビットが下位ビットから何ビットまで正しいかを判定する、
請求項1または2に記載の復号装置。 - 前記確認計算部は、復号された複数のビットのうちの誤りと判定された最下位のビットを反転し、
前記複数ビット復号部は、前記メッセージを構成するビットのうちの、前記最下位のビットの1ビット上位のビットから上位側の複数のビットを、前記入力ベクトルに基づいて復号する、
請求項3に記載の復号装置。 - コンピュータが、落とし戸付関数による暗号化対象のメッセージを、2のべき乗を要素とするベクトルとの内積を取ることで符号化したものと、離散ガウス分布に従う要素から成るエラーベクトルとを足し合わせた入力ベクトルを受け付けるステップと、
前記入力ベクトルに基づいて前記メッセージの下位から複数のビットを所定の確率で正しく復号するステップと、
復号された複数のビットが正しいか否かを並列に判定するステップと、を含む、
ことを特徴とする復号方法。 - 前記エラーベクトルに含まれる要素がとり得る値の範囲に基づいて、復号された複数のビットが正しいか否かを判定する、
請求項5に記載の復号方法。 - 復号された複数のビットが下位ビットから何ビットまで正しいかを判定するステップを含む、
請求項5または6に記載の復号方法。 - 復号された複数のビットのうちの誤りと判定された最下位のビットを反転するステップと、
前記メッセージを構成するビットのうちの、前記最下位のビットの1ビット上位のビットから上位側の複数のビットを、前記入力ベクトルに基づいて復号するステップと、を含む、
請求項7に記載の復号方法。 - 落とし戸付関数による暗号化対象のメッセージを、2のべき乗を要素とするベクトルとの内積を取ることで符号化したものと、離散ガウス分布に従う要素から成るエラーベクトルとを足し合わせた入力ベクトルを受け付ける処理と、
前記入力ベクトルに基づいて前記メッセージの下位から複数のビットを所定の確率で正しく復号する処理と、
復号された複数のビットが正しいか否かを並列に判定する処理と、をコンピュータに実行させる、
ことを特徴とするプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/468,346 US11257399B2 (en) | 2016-12-12 | 2016-12-12 | Decoding apparatus, decoding method, and program |
PCT/JP2016/086924 WO2018109809A1 (ja) | 2016-12-12 | 2016-12-12 | 復号装置、復号方法およびプログラム |
JP2018556043A JP6624307B2 (ja) | 2016-12-12 | 2016-12-12 | 復号装置、復号方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/086924 WO2018109809A1 (ja) | 2016-12-12 | 2016-12-12 | 復号装置、復号方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018109809A1 true WO2018109809A1 (ja) | 2018-06-21 |
Family
ID=62559534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2016/086924 WO2018109809A1 (ja) | 2016-12-12 | 2016-12-12 | 復号装置、復号方法およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11257399B2 (ja) |
JP (1) | JP6624307B2 (ja) |
WO (1) | WO2018109809A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022520675A (ja) * | 2018-12-21 | 2022-04-01 | 01 コミュニーク ラボラトリー インコーポレイテッド | 暗号システムおよび方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112468993B (zh) * | 2020-09-25 | 2023-07-04 | 中信科智联科技有限公司 | 消息发送方法、接收方法、装置及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4933956A (en) * | 1983-04-14 | 1990-06-12 | Codex Corporation | Simplified decoding of lattices and codes |
JP2011002810A (ja) * | 2009-05-19 | 2011-01-06 | Hitachi Ltd | 暗号化装置、プログラム、暗号システム及び暗号化方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005217871A (ja) | 2004-01-30 | 2005-08-11 | Victor Co Of Japan Ltd | 算術復号化装置および算術復号化プログラム |
EP2495908A4 (en) * | 2009-10-29 | 2017-07-19 | Mitsubishi Electric Corporation | Data processing device |
US8634563B2 (en) * | 2010-12-17 | 2014-01-21 | Microsoft Corporation | Attribute based encryption using lattices |
JP5730805B2 (ja) * | 2012-04-04 | 2015-06-10 | 日本電信電話株式会社 | 格子問題に基づく階層型内積暗号システム,格子問題に基づく階層型内積暗号方法,装置 |
US8566601B1 (en) * | 2012-09-12 | 2013-10-22 | Zeutro Llc | Systems and methods for functional encryption using a string of arbitrary length |
US20160355043A1 (en) * | 2015-06-03 | 2016-12-08 | Yxcorp14 Inc. | System and method for production and verification of counterfeit-protected banknotes |
WO2017203992A1 (ja) * | 2016-05-23 | 2017-11-30 | ソニー株式会社 | 暗号化装置、暗号化方法、復号化装置、及び復号化方法 |
-
2016
- 2016-12-12 US US16/468,346 patent/US11257399B2/en active Active
- 2016-12-12 WO PCT/JP2016/086924 patent/WO2018109809A1/ja active Application Filing
- 2016-12-12 JP JP2018556043A patent/JP6624307B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4933956A (en) * | 1983-04-14 | 1990-06-12 | Codex Corporation | Simplified decoding of lattices and codes |
JP2011002810A (ja) * | 2009-05-19 | 2011-01-06 | Hitachi Ltd | 暗号化装置、プログラム、暗号システム及び暗号化方法 |
Non-Patent Citations (2)
Title |
---|
MICCIANCIO, D. ET AL.: "Efficient Bounded Distance Decoders for Barnes-Wall Lattices", IEEE INTERNATIONAL SYMPOSIUM ON INFORMATION THEORY, 6 July 2008 (2008-07-06), pages 2484 - 2488, XP031303360 * |
MICCIANCIO, D. ET AL.: "Trapdoors for Lattices: Simpler, Tighter, Faster, Smaller", LECTURE NOTES IN COMPUTER SCIENCE, vol. 7237, 15 April 2012 (2012-04-15), pages 700 - 718, XP047328731 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022520675A (ja) * | 2018-12-21 | 2022-04-01 | 01 コミュニーク ラボラトリー インコーポレイテッド | 暗号システムおよび方法 |
JP7328969B2 (ja) | 2018-12-21 | 2023-08-17 | 01 コミュニーク ラボラトリー インコーポレイテッド | 暗号システムおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190347962A1 (en) | 2019-11-14 |
US11257399B2 (en) | 2022-02-22 |
JPWO2018109809A1 (ja) | 2019-10-24 |
JP6624307B2 (ja) | 2019-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108604987B (zh) | 将布尔掩码值转换为用于加密操作的算术掩码值 | |
CN110419194B (zh) | 密钥交换设备和方法 | |
Hassani et al. | Rate-dependent analysis of the asymptotic behavior of channel polarization | |
CN110870250A (zh) | 密钥协商设备和方法 | |
CN112955864B (zh) | 恒定时间的安全的算术到布尔掩码转换 | |
US7995764B2 (en) | Sharing a secret using hyperplanes over GF(2m) | |
JP6575532B2 (ja) | 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム | |
CN113098691B (zh) | 数字签名方法、签名信息的验证方法、相关装置及电子设备 | |
US9608819B1 (en) | Learning parity with noise-based relational encryption for proximity relations | |
JPWO2017056150A1 (ja) | メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム | |
JP5852518B2 (ja) | 認証暗号化装置、認証復号装置、およびプログラム | |
CN111656733A (zh) | 密钥消息验证码的白盒计算 | |
WO2018109809A1 (ja) | 復号装置、復号方法およびプログラム | |
WO2018211675A1 (en) | Bit decomposition secure computation apparatus, bit combining secure computation apparatus, method and program | |
JP6273226B2 (ja) | 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法 | |
US9419789B2 (en) | Method and apparatus for scalar multiplication secure against differential power attacks | |
Block et al. | Secure computation using leaky correlations (asymptotically optimal constructions) | |
JP2018515812A5 (ja) | ||
JP6305643B2 (ja) | メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム | |
CN115225206A (zh) | 一种带有预计算的译码方法及系统 | |
US11095429B2 (en) | Circuit concealing apparatus, calculation apparatus, and program | |
WO2020174516A1 (ja) | リニアスケッチシステム、装置、認証方法、プログラムと記録媒体 | |
de Oliveira et al. | An efficient software implementation of the hash-based signature scheme MSS and its variants | |
Abdul-Jabbar | Secure QR-code generation in healthcare | |
JP5297918B2 (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: 16923987 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2018556043 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 16923987 Country of ref document: EP Kind code of ref document: A1 |