JP7261502B2 - 暗号処理装置、暗号処理方法、及び暗号処理プログラム - Google Patents
暗号処理装置、暗号処理方法、及び暗号処理プログラム Download PDFInfo
- Publication number
- JP7261502B2 JP7261502B2 JP2021131702A JP2021131702A JP7261502B2 JP 7261502 B2 JP7261502 B2 JP 7261502B2 JP 2021131702 A JP2021131702 A JP 2021131702A JP 2021131702 A JP2021131702 A JP 2021131702A JP 7261502 B2 JP7261502 B2 JP 7261502B2
- Authority
- JP
- Japan
- Prior art keywords
- ciphertext
- plaintext
- cryptographic processing
- polynomial
- homomorphic
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims description 216
- 238000003672 processing method Methods 0.000 title claims description 6
- 238000004364 calculation method Methods 0.000 claims description 182
- 238000000034 method Methods 0.000 claims description 61
- 230000008569 process Effects 0.000 claims description 41
- 239000013598 vector Substances 0.000 description 87
- 238000012360 testing method Methods 0.000 description 60
- 238000003860 storage Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 23
- 238000007792 addition Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 16
- 239000000654 additive Substances 0.000 description 10
- 230000000996 additive effect Effects 0.000 description 10
- 125000004122 cyclic group Chemical group 0.000 description 6
- 238000000354 decomposition reaction Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000015654 memory Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/49—Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix non-linear PCM
-
- 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
- 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/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3026—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to polynomials generation, e.g. generation of irreducible polynomials
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Mathematical Physics (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
平文同士での加算に対応する暗号文同士の演算が存在する暗号が加法準同型暗号であり、平文同士での乗算に対応する暗号文同士の演算が存在する暗号が乗法準同型暗号である。
有限巡回群を整数に見立てて、加法演算(加算、減算)のみを行う加法準同型暗号と、乗法演算(乗算)のみを行う乗法準同型暗号とが以前から知られていた。
有限巡回群は、加算を繰り返せば整数倍が出来るので、平文の整数倍ができ、乗算を繰り返せば平文のべき乗計算をすることも出来る。
また、加法演算と乗法演算の両方を暗号化したまま処理する完全準同型暗号(Fully Homomorphic Encryption,FHE)がある。
完全準同型暗号の一つとして、暗号化時に復号には問題のない程度の小さな誤差を平文に加えることで構成される、LWE(Learning with Errors)問題に基づく完全準同型暗号が知られている。
bootstrappingの計算時間は、完全準同型暗号に含まれる計算時間の大部分を占める。また、bootstrappingでは膨大なデータを扱うため、その計算量は膨大である。したがって、完全準同型暗号の演算においては、実用的な時間内で演算結果を得ることができないことがある。
この問題を劇的に改善した手法が、非特許文献1(以下の説明において、上記論文として参照される)に示されるTFHE(Fast Fully Homomorphic Encryption over the Torus)である。
Bit-wise型の準同型暗号において、1つの暗号文は1bitの情報しか持ち得ないため、例えば32bitの整数を扱おうとすると32個の暗号文を処理する必要がある。
整数同士の加算や減算、乗算や比較は様々なデータ処理で多用される。1bitの情報を持つ暗号文を用いる場合、論理回路を設計するイメージで演算を行うが、32bitの整数の加算・減算の場合は1個の半加算器と、31個の全加算器を用いる。乗算の場合は、約32の2乗(1024)個近くの全加算器を用いる。
従って、完全準同型暗号の処理時間を低減し、さらに効率化を図るためには、bootstrappingを含む全加算器の演算を高速化する必要がある。
本発明はこのような事情を鑑みてなされたものであり、一側面として、完全準同型暗号に必要な全加算器の演算を高速化し、完全準同型暗号の処理時間を低減することを目的とする。
また本発明は、暗号文を処理する暗号処理装置であって、前記暗号文は、シンボル0または1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、準同型演算後の平文に付加される誤差の範囲が所定値以内となるように誤差範囲を設定された2以上の前記暗号文に対して所定の演算に係る準同型演算を行う演算部と、前記準同型演算の結果となる暗号文に対して所定の多項式を用いることにより、新たな暗号文を算出する算出部と、を備え、前記暗号文は、当該暗号文を構成する要素として複数の値を有し、前記算出部は、前記複数の値を整数とする計算を行う第1算出部と、前記多項式を用いて前記新たな暗号文の誤差を低減する第2算出部と、を備え、前記第1算出部が計算する整数は所定の値で割った余りが全て同じであり、前記多項式は、前記所定の値毎に同じとなる複数の係数を有し、前記複数の係数の夫々を用いて前記新たな暗号文を夫々算出する、ことを特徴とする。
なお、以下の説明において、[]で囲まれた英数字はそれがベクトルであることを示す。{}で囲まれた英数字はそれが集合であることを示す。
また、本明細書において、「論理演算」と記す場合は2値もしくは多値の論理演算のことを指すものとする。
暗号処理装置に含まれる、全加算器を構成するAND回路部、XOR回路部の夫々において、Bit-wise型の準同型暗号に対するANDを得るための演算、XORを得るための演算を行うことが知られている。
しかし、完全準同型暗号とするためには、ANDを得るための演算、XORを得るための演算のあとで、下記に説明するGate Bootstrappingと呼ばれる誤差を削減する処理が必要である。
このGate Bootstrappingの処理に時間を要していたが、本実施形態の暗号処理装置は、平文に付加する誤差範囲を小さくして2値多入力の論理演算(準同型演算)を可能とすることで、全加算器を構成する準同型演算の回数を削減する。
これにより、本実施形態の暗号処理装置は、各準同型演算の後段で行われるGate Bootstrappingの回数を減らし、全加算器の演算を高速化することが出来る。
図1は、論理演算素子によるハードウェア回路で全加算器を説明しているが、全加算器をソフトウェアで実装したCPUが実行する全加算器プログラムであると考えてもよい。
Bit-wise型の準同型暗号の処理をソフトウェアで実装するとき、暗号文に対して論理回路(論理ゲート)を設計するイメージで演算を行う。
それは、図2以降で説明する本実施形態の暗号処理装置についても同様である。
全加算器回路50は、2つの半加算器51、52と1つのOR回路部(ORを得るための演算処理部)53から構成される。
第1半加算器51は、AND回路部(ANDを得るための演算処理部)51AとXOR回路部(XORを得るための演算処理部)51Bを備える。
第2半加算器52は、AND回路部(ANDを得るための演算処理部)52AとXOR回路部(XORを得るための演算処理部)52Bを備える。
加算される入力Aと入力Bが第1半加算器51のAND回路部51AとXOR回路部51Bに入力される。
第1半加算器51のAND回路部51Aの出力と、第2半加算器52のAND回路部52Aの出力と、が後段のOR回路部53に入力され、OR回路部53からは桁上げ出力C0(Carry out)が出力される。
第1半加算器51のXOR回路部51Bからの出力と、桁上げ入力Ci(Carry in)が第2半加算器52のAND回路部52AとXOR回路部52Bに入力される。
第2半加算器52のXOR回路部52Bからは、全加算器回路50の出力S(Sum)が出力される。
従って、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回分の演算時間とほぼ同じである。
全加算器を使用することで、整数の加減乗除(四則演算)の全てと比較演算に対応することが出来る。
しかしながら、Bit-wise型暗号は、1つの暗号文は1bitの情報しか持ち得ない。
整数同士の加算、減算、乗算、除算や比較(比較は減算結果の正負と等価である)は様々なデータ処理で多用されるが、扱われるデータは、ビット長が大きいものが通常である。
例えば、32bitの整数を扱おうとすると、32個の暗号文を処理する必要がある。
完全準同型暗号の演算(四則演算と比較)をさらに実用的なものにするためには、完全準同型暗号の演算に多用される全加算器の演算をより高速化することが重要となる。
下記に説明するように、本実施形態の暗号処理装置は、特に、完全準同型暗号の演算に用いる全加算器において、平文に付加する誤差範囲を小さくして2値多入力の論理演算(準同型演算)を可能とすることで準同型演算の回数を減らす。
その結果、本実施形態の暗号処理装置は、準同型演算の後段の、長い演算時間を要するGate Bootstrappingの回数を減らし、完全準同型暗号の処理時間を大幅に低減することが出来る。
暗号処理装置1は、制御部10と、記憶部20と、通信部25と、入力部26と、を備える。
制御部10は、受付部11と、第1演算部12と、第2演算部13と、第3演算部14と、第1Bootstrapping部(第1算出部)15と、第2Bootstrapping部(第2算出部)16と、第3Bootstrapping部(第3算出部)17と、出力部18と、を備えている。
なお、第1演算部12、第2演算部13、第1算出部15、第2算出部16は後述する[実施例1]、[実施例2]に関連し、第3演算部14、第3算出部17は、後述する[実施例3]、[実施例4]に関連する。
受付部11は、通信部25や入力部26を介した、演算の対象となる暗号文の入力を受け付ける。
後述の実施例1、2に関して、第1演算部12は、受付部11が受け付けた2値3入力の暗号文に対して、第1準同型演算を行う。
第2演算部13は、第1演算部12から出力された暗号文同士に対して第2準同型演算を行う。
後述の[実施例3]に関して第3演算部14は、受付部11が受け付けた2値3入力の暗号文に対して、第3準同型演算を行う。
第1演算部12、第2演算部13、及び第3演算部14は、図1で説明した論理ゲート(AND回路部、XOR回路部)による全加算器の演算(準同型演算)をソフトウェアで実現する演算処理部である。なお、第1演算部12、第2演算部13、及び第3演算部14の少なくとも一つが、ハードウェアで実現されてもよい。
第2Bootstrapping部16は、第2演算部13の演算結果に対して下記に説明する2値Gate Bootstrapping処理を行い、出力Sとして2値を取り得る新たな暗号文を出力する。
[実施例3]に関して、第3Bootstrapping部17は、第3演算部14の演算結果に対して下記に説明する2値Gate Bootstrapping処理を行い、出力S、桁上げ出力COを夫々示す新たな暗号文を出力する。
記憶部20は、入力暗号文や、全加算器の演算で用いられる一時ファイルや一時データ、出力暗号文を格納することが出来る。
また、記憶部20には、暗号化された暗号化データベース60を格納することが出来る。
通信部25は、暗号処理装置1をネットワークに接続し、外部装置との通信を可能にする。
記憶部20に暗号化された暗号化データベース60を格納し、通信部25を備えることにより、暗号処理装置1は、データベースサーバとして機能することが出来る。この場合、暗号処理装置1は、外部装置としての端末装置から、暗号化されたクエリを受け付け、暗号化された暗号化データベース60に対する検索を行い、暗号化された検索結果を端末装置に応答することが出来る。
入力部26は暗号処理装置1に対して演算処理対象の暗号文を入力する。
図3の説明において、暗号処理装置1に入力される暗号文ca、cb、ccは、いずれも上記論文に示されるTLWE暗号文である。
下記に詳しく説明するが、TLWE暗号は、0又はμ(非0)の値を平文として有するBit-wise型の完全準同型暗号である。
論理ゲートを用いた論理演算によって様々な演算を行うことができる。
また後述するように、TLWE暗号文は、二進数のシンボル0又は1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能である。
上記論文で提示されているTFHEのGate Bootstrappingについては下記に詳述する。
実施例1、2において、入力された暗号文ca、cb、ccを第1演算部12に入力して準同型演算を行い、その演算結果(暗号文ct=暗号文ca+cb+cc)を2値Gate Bootstrappingを行う第1Bootstrapping部15に入力する。
第1Bootstrapping部15の出力は、平文として2値(0,μ)の何れかを取り得る桁上げ出力COの暗号文cyである。
暗号文ct=暗号文ca+cb+ccを第2演算部13に入力し、ct同士で準同型演算を行い、その出力を第2算出部16に入力し、2値Gate Bootstrappingが行われて出力Sの暗号文czが出力される。
第1演算部12による準同型演算、第2演算部13による準同型演算に要する時間は微々たるものである。
Gate Bootstrappingは、準同型演算を用いて全加算器を処理するとき、ほとんど全ての処理時間を消費している。
それに対して、実施例1、2の暗号処理装置1では、全加算器の演算において、第1演算部12に2値の暗号文を3つ入力し、Gate Bootstrappingを改良することにより、準同型演算処理の回数を全体で2回に減らしている。
その結果、暗号処理装置1では、準同型演算処理のほぼ全てを占めるGate Bootstrappingの回数を全体で2回に減らすることが出来る。したがって、図1に示す全加算器回路50と比較して、暗号処理装置1は、計算処理時間を約60%削減することが出来る。
以上のように、完全準同型暗号に関する全加算器の演算時間のほぼ全てをGate Bootstrappingが占めるので、暗号処理装置1は、Gate Bootstrappingの回数を削減することによって、全加算器の演算を著しく高速化することが出来る。
Gate Bootstrappingは、膨大なデータ量や演算時間のために実用的とは言えなかった完全準同型暗号を実用的にするための手法である。
上記論文のTFHEでは、LWE(Learning with Errors)暗号を円周群上で構成したTLWE暗号と呼ばれる暗号を用い、演算時の誤差を小さくしながら高速かつ小さなデータサイズでTLWE暗号文同士の各種準同型論理演算(ひいては加算・乗算などの任意の演算)を実現する。
TFHEでは、TLWE暗号文を基本として完全準同型暗号(FHE)を実現する。
TLWE暗号は、格子暗号の一種であるLWE暗号の特殊な場合(LWE暗号を円周群上で定義したもの)である。
TLWE暗号は加法準同型であり、TLWE暗号化された平文同士の加法演算を、暗号文を復号することなく行うことができることが知られている。
TLWE暗号は、0から実数の精度で進み1になると0に戻る、図5に示す円周群{T}の点0、又は円周群{T}上の0以外(非0)の任意の点に対応する実数μを平文として有する。TLWE暗号自体は円周群上の任意の点を平文とし、0近辺(誤差含む)とμ近辺(誤差含む)を平文として使用する。
円周群{T}上の点は、本明細書において「要素」ともいう。
TFHEを扱う暗号処理装置は、このようなTLWE暗号文同士の演算として加法演算など一般的な準同型演算を実行し、その演算結果の誤差をGate Bootstrappingによって適切な範囲内に収めることによって、再度(後段での)論理演算が可能な完全準同型暗号(FHE)を実現する。
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)と表すことができる。
φs(([a],b))=b-[s]・[a]=eは、TLWE暗号文を復号する関数である。TLWE暗号は平文に秘密鍵ベクトルと乱数ベクトルの内積と誤差を付加して暗号化するため、秘密鍵ベクトルと乱数ベクトルの内積を算出することで、TLWE暗号を誤差付きで復号することができる。この時、秘密鍵ベクトルが未知の場合は、内積となる成分が算出できないため、復号することができない。
2つのTLWE暗号文([a],b)、([a’],b’)をそのまま足して、([a]+[a’],b+b’)としたものを、上記の復号関数φsに入力すると、
φs(([a]+[a’],b+b’))=(b+b’)-[s]・([a]+[a’])=(b-[s]・[a])+(b’-[s]・[a’])=φs([a],b)+φs([a’],b’)
となり、2つの平文の和が得られる。これにより、TLWE暗号文が「加法準同型暗号」であることがわかる。
上記論文のTFHEでは「平文に誤差を付加したTLWE暗号文に対して加法演算を行い、Gate Bootstrappingで誤差を削減する」ことを繰り返していくことで、様々な演算を実現する。
([0],μ)において、[0]は、ゼロベクトルを表す。
「自明な暗号文」は、TLWE暗号文として扱えるが、実質的に平文がそのまま入っている状態と言える。
TLWE暗号文([0],μ)は、復号関数φsにかけると、φs(([0],μ))=μ-[s]・0=μとなり、秘密鍵[s]がゼロベクトル[0]と掛け合わされて消えるため、容易に平文μが得られる。このような暗号文は、平文μに対して自明な暗号文に他ならない。
Gate Bootstrappingでは、多項式環の剰余環を、有限巡回群として用いる。
多項式環の剰余環が有限巡回群であることを説明する。
n次の多項式は、一般にanxn+an-1xn-1+…+a0と表される。
これらの全ての集合は、多項式同士の和f(x)+g(x)に対して可換群をなす。
また、多項式同士の積f(x)g(x)は、逆元が存在するとは限らないことを除き、可換群と同様の性質を持つ。そのようなものをモノイドと呼ぶ。
多項式同士の和と積に対しては、下記のように分配法則が成り立つ
f(x){g(x)+g’(x)}=f(x)g(x)+f(x)g’(x)
従って、多項式を要素として多項式同士の和・積を定義すると「環」をなし、これを多項式環と呼ぶ。
多項式環である多項式T(X)をT[X](Xn+1)+T[X]のかたちに分解し、剰余部分だけを取り出して集めると、これもまた「環」であるため多項式環の剰余環が得られる。
TFHEでは、多項式環の剰余環をT[X]/(Xn+1)と表す。
を取り出す。
多項式環の剰余環の要素F(X)にXを掛けると、μXn-1+μXn-2+・・・+μX-μとなって、一番上の項の係数がプラスからマイナスに反転して定数項として現れる。
さらにXを掛けると、μXn-1+μXn-2+・・・+μX2-μX-μのように、もう一度同じことが起きる(一番上の項の係数がプラスからマイナスに反転して定数項として現れる)。
これを全部でn回繰り返すと、
-μXn-1-μXn-2・・・-μ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]/(Xn+1)という環のなかで位数2nの有限巡回群になっている。
TFHEにおいて、暗号処理装置は、このような多項式環の剰余環に基づく多項式F(X)が有する性質を利用して完全準同型暗号を実現する。
Gate Bootstrappingでは、TLWE暗号の他にTRLWE暗号と呼ばれる暗号を利用する。
TRLWE暗号について説明する。
TRLWE暗号のRは環を意味し、TRLWE暗号は環で構成したLWE暗号である。TLWE暗号がそうであるように、TRLWEもまた加法準同型暗号である。
TRLWE暗号における環は、上記した多項式環の剰余環T[X]/(Xn+1)である。
TRLWE暗号を得るに当たり、多項式環の剰余環T[X]/(Xn+1)の要素(元)をランダムに選択する。
実際には、n-1次多項式の係数n個を、円周群{T}から一様分布な乱数で選出する。
多項式の次数がn-1であれば、Xn+1で割れることがなく、剰余を考える必要がないため、次数がn-1の多項式を多項式a(X)とする。
s(X)=sn-1Xn-1+sn-2Xn-2+・・・s1X+s0
n個の乱数eiを、平均値が平文μiになり分散がαとなるガウス分布(正規分布)の乱数とし、これらから下記の多項式e(X)を組み立てる。
e(X)=en-1Xn-1+en-2Xn-2+・・・e1X+e0
s(X)・a(X)+e(X)を、f(X)(Xn+1)+b(X)と分解して、b(X)を得る。
その結果、TRLWE暗号文として、(a(X),b(X))が得られる。
TRLWE暗号は、TLWE暗号と同様に乱数を用いて暗号化を行うため、同一の秘密鍵、平文に対して、無数の暗号文が対応しうる。
また、TRLWE暗号は、TLWE暗号と同様に、φs((a(X),b(X))=b(X)-s(X)・a(X)+g(X)(Xn+1)として、φsがT[X]/(Xn+1)の元となるようにg(X)を定めたものが、復号関数として機能する。
Gadget Decompositionについて説明する。
TRLWE暗号文で用いている多項式の係数は、図5の円周群{T}の要素である0以上1未満の実数であり小数部分のみを有する。
これを二進数表記で何ビットずつかに分解する操作を、上記論文のTFHEではGadget Decomposition(Dec)と定義している。
例えば、TRLWE暗号文の多項式F(X)の次数nがn=2として、分割の1単位をBg=22で、l=3要素に分解する。このとき、各要素は-Bg/2からBg/2の間に入るようにする。
TRLWE暗号文は、上記の(a(X),b(X))のように、2つの多項式の組み合わせである。従って、TRLWE暗号文dを、多項式環の剰余環の元となる多項式を要素とする2次元のベクトルと見なして、例えば、
d=[0.75X2+0.125X+0.5,0.25X2+0.5X+0.375]
と書くことができる。そのため、以下では各要素をBg-1=0.25のべき乗の和の形に分解する。
d=[0.75X2+0.125X+0.5,0.25X2+0.5X+0.375]
=[-0.25X2+0.125X+0.5,0.25X2+0.5X+0.25+0.125]
=[0.25×(-X2+2)+0.252×2X+0.253×0,0.25×(X2+2X+1)9+0.25X2×2+0.253×0]
と分解できる。
従って、Gadget Decompositionを行うと、
Dec(d)=[-X2+2,2X,0,X2+2X+1,2,0]
というベクトルになる。
上記の例に基づいて説明すると、
という行列が、逆変換の作用素Hとなる。Dec(d)・Hを演算することで、TRLWE暗号文d’が得られる。下位ビットは四捨五入をしてまるめられている。
e(X)の係数全てが平均値0となり、分散はαとなる多項式でできた暗号文Zi=(a(X),b(X))を2l(エル)個生成する。
そして、平文μを以下のように暗号化し、以下の暗号文kを得る。
この暗号文kをTRGSW暗号文BKとして定義する。
TRGSW暗号文BKは、下記に用いる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暗号文の構成どおり、
とする。
このTRGSW暗号文を、秘密鍵[s]の次数と同じN個用意したセットを、Bootstrapping Keyと呼ぶ。
BKi×d=Dec(d)・BKi
と定義する。
Gadget Decompositionは、TRLWE暗号文dに対して||d-[v]・H||が最小値となる[v]を得る操作であった。
従って、[v]=Dec(d)と誤差(εa(X),εb(X))を用いて、
[v]・H=d+(εa(X),εb(X))と書ける。
その結果、BKi×d=Dec(d)・BKi
となる。
左半分は内積を計算し、右半分には[v]・H=d+(εa(X),εb(X))を代入すると、
となり、下記の3つの暗号文c1、c2、c3の和の計算と同じとなる。
TRLWE暗号は加法準同型暗号であるため、暗号文同士の和をとると平文同士の和をとったことと同じである。
C1は、Zjを何倍かして足したものなので、平文φs’(c1)の期待値は0となる。
また復号したφs’(c3)は、平文の絶対値の大きさをシステムパラメータで制約することができるので、この後の演算も含めて十分小さくなるように設定する。
2つの平文μ0、μ1に対応するTRLWE暗号文d0、d1があるとして、d=d1-d0と代入して、最後にd0を加算すると、下記のようなCMux関数が完成する。
CMux(BKi,d0,d1)=BKi×(d1-d0)+d0=Dec(d1-d0)・BKi+d0
CMux関数は、siが0であると平文μ0の暗号文を復号することなく出力し、siが1であると平文μ1の暗号文を復号することなく出力する。
CMux関数は、平文μ0もしくは平文μ1の暗号文を計算することができるが、どちらを選択したかは分からない。
2値Gate Bootstrappingは、以下に説明する3つのステップ、(1)BlindRotate、(2)SampleExtract、(3)キースイッチングから構成される。
2値Gate Bootstrappingは、下記に説明する3つのステップによってTLWE暗号文同士の準同型演算結果が有する平文に対する誤差の削減を行う。
以下の説明で、特に説明をしない場合、平文とは、TLWE暗号文同士で演算した結果の平文同士の演算結果を意味するものとする。
図5の円周群{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の範囲のいずれかである。
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
を用意する。
このTLWE暗号文c=([a],b)の各要素を2n倍して四捨五入したLWE暗号文c’=([a’],b’)を得る。
LWE暗号文c’=([a’],b’)を復号すると、μ1’=φs(c’)≒2n×φs(c)=2nμ1となる。nが大きくなるほど相対的に誤差は小さくなる。
多項式T(X)を平文とする自明なTRLWE暗号文(0,T(X))を用意して、
A0=X-b’×(0,T(X))=(0,X-b’×T(X))とする。0は、0次の多項式0を示す。この時、b’は整数であるため、累乗が自然に定義できる。
以降、上記に説明したBootstrapping KeyであるBKiを用いて、順番にAi=CMux(BKi,Ai-1,Xa’iAi-1)を計算する。ここでも、a’iが整数になっているため、Xの累乗が自然に定義できる。
従って、
と繰り返すと、
となる。
ここで、
は、復号関数φs(c’)の符号を反転したものに等しいので、
となる。ここでφs’(An)は、多項式T(X)にX-1をμ1’回乗算した多項式の暗号文である。
BlindRotateに係るTLWE暗号文cの平文μ1に対応して、多項式T(X)にXをかける回数μ1’(=2nμ1)に応じたユニークな値(n個の係数とその符号反転で最大2n個)が得られるので、一種のルックアップテーブル(Look UP Table)とみなすことが出来る。
(1)のBlindRotateで得たTRLWE暗号文Anを復号して得られる平文多項式φs’(An)を見ると、下位の項から数えてn/2-φs(c’)個分の項は係数が-μとなり、負になった場合、逆に上の項から順に係数が-μとなる。
TRLWE暗号文Anを復号して得られる平文多項式φs’(An)の定数項だけを見ると、φs(c’)がn/2以上3n/2未満、すなわちφs(c)が1/2±1/4の場合、定数項はμとなる。それ以外、すなわちφs(c)が±1/4の場合、定数項は-μとなる。
SampleExtractは、(1)のBlindRotateで得たTRLWE暗号文Anから、これを復号することなく平文多項式φs’(An)の定数項の係数だけを取り出して、その結果、TLWE暗号文csを得るための処理である。
全てのTRLWE暗号文は、次数をnとして、
と多項式をおいて、(A(X),B(X))と表現することができる。
これを秘密鍵[s’]で復号したとき、秘密鍵の多項式を
とおいて、
と展開することができる。
とおくと、
となり、
から、平文多項式の各項の係数が求まる。
そのうち必要なのは定数項の係数であるので、j=0の場合の係数を取り出すと、
が得られる。
とおくと、
のように、TLWE暗号の復号関数に変形することができる。
として取り出すと、元のTRLWE暗号文Anに対応する平文多項式の定数項と同じ値を平文とする、新しいTLWE暗号([a”],b1)が得られた。この新しいTLWE暗号文がSampleExtractの出力であり、平文として-μ又はμの2種類を有する。
得られたTLWE暗号文に対して、平文がμとなる自明な暗号文([0],μ)を加えたTLWE暗号文cs=([a”],b1)+([0],μ)を得る。
具体的には、テストベクタとしての多項式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が得られた。
(2)のSampleExtractで得られたTLWE暗号文csは、秘密鍵[s]ではなく、秘密鍵[s']で暗号化されている
従って、TLWE暗号文csを復号することなく、TLWE暗号文csの鍵を秘密鍵[s]に差し替え、秘密鍵[s]で暗号化された状態に戻す必要がある。
そのためキースイッチングの手法を説明する。
NAND演算に用いるTLWE暗号文の秘密鍵[s]はN次のベクトルであった。
これを用い、Bootstrapping Keyを作成したときのn次のベクトルの秘密鍵[s’]を暗号化する。
すなわち、
と、円周群{T}の要素、0から1の実数を二進数で表現したときの各桁にずらした値として暗号化する。秘密鍵は[s]である。「桁数」tはシステムパラメータである。
秘密鍵[s]で復号すると、
となる。これが「キースイッチングキー」である。
上記したように(2)で得られたTLWE暗号文cs=([a],b)は秘密鍵[s’]で暗号化された0又は1/4の値である。[a]の要素数は、秘密鍵[s’]と同じくn個である。
これを一つずつ、夫々tビットの固定小数に変換すると、
の形式で書くことができる。
この段階で誤差が増えるが、システムパラメータで絶対値の最大値を制約することができる。
キースイッチング本体の処理として、以下のTLWE暗号文cxを計算する。
([0],b)の項は自明な暗号文なので、復号するとbであり、TLWE暗号文cxを復号した結果を計算すると、
である。
s’iは、jに対して定数なのでくくりだして
とし、上記で固定小数に分解したときの式を代入する。
その結果、
となって鍵の切り替えが成功したことになる。
キースイッチングの処理を行うことにより、秘密鍵[s]で暗号化されたTLWE暗号文に戻っており、φs(c)が±1/4の範囲なら平文φs(cx)は0に、φs(c)が1/2±1/4の範囲なら、平文φs(cx)は1/4になっている。
以上の処理により、Gate Bootstrappingの結果として、0、1/4の2値のうちのいずれかであって誤差が±1/16以内のいずれかになるTLWE暗号文が得られた。
誤差の最大値は、入力となるTLWE暗号文cに依存せず、システムパラメータによって固定された値となる。
従って、誤差の最大値が入力となるTLWE暗号文と同じ±1/16以内のいずれかの値となるように、システムパラメータを設定する。
これにより、何度でもNAND演算ができるようになり、加算、乗算をはじめとしてあらゆる演算が可能となる。
以上が、TFHEのGate Bootstrappingの処理である。
本実施形態によれば、2値の3入力を1つの準同型加算で処理することができる。つまり、平文として2値を取り得る暗号文を3つ入力して準同型演算を行うことができる。準同型加算結果に対してGate Bootstrappingを行うことで、準同型演算とともに3入力の論理素子を構成することができる。
和の下位ビットと、上位ビット(桁上げ)と、を夫々得る2つの論理素子を作成できる。全加算器の演算時間のほぼ全てを占めるGate Bootstrappingの回数を5回から2回に削減することが出来る。2つの3入力論理素子は互いに依存関係がないため2つの演算を並列に処理することができる。
図3に基づいて説明する。
全加算器の入力A、B、Cに夫々対応するTLWE暗号文ca、cb、ccがあるとする。
これらの暗号文は、夫々特別に設定したシステムパラメータによるTLWE暗号文であり、Gate Bootstrappingにより生成された又は新規に暗号化されたものである。
TLWE暗号文ca、cb、ccは、何れも平文として0又は1/4を有し、平文に付加される誤差は±1/24の範囲に含まれる。
2値3入力とすることで誤差範囲が重なる可能性があり、平文に付加される誤差を上記論文の±1/16よりも小さく±1/24以内としている。
ただし後述するように、誤差が重なることによる問題が許容できる場合はその限りではなく、誤差として実施例の±1/24や上記論文の±1/16を採用してもよい。
暗号処理装置1は、ca+cb+cc-(0,1/8)を計算し、演算結果としてTLWE暗号文ctを得る。(0,1/8)は平文が1/8となる自明な暗号文である。
caが0、cbが0、ccが0(ca+cb+ccは二進数のシンボルで0+0+0=0)
⇒0+0+0-1/8=-1/8(7/8)
caが0、cbが0、ccが1/4(ca+cb+ccは二進数のシンボルで0+0+1=1)
⇒0+0+1/4-1/8=1/8
caが0、cbが1/4、ccが0(ca+cb+ccは二進数のシンボルで0+1+0=1)
⇒0+1/4+0-1/8=1/8
caが0、cbが1/4、ccが1/4(ca+cb+ccは二進数のシンボルで0+1+1=2)
⇒0+1/4+1/4-1/8=3/8
caが1/4、cbが0、ccが0(ca+cb+ccは二進数のシンボルで1+0+0=1)
⇒1/4+0+0-1/8=1/8
caが1/4、cbが0、ccが1/4(ca+cb+ccは二進数のシンボルで1+0+1=2)
⇒1/4+0+1/4-1/8=3/8
caが1/4、cbが1/4、ccが0(ca+cb+ccは二進数のシンボルで1+1+0=2)
⇒1/4+1/4+0-1/8=3/8
caが1/4、cbが1/4、ccが1/4(ca+cb+ccは二進数のシンボルで1+1+1=3)
⇒1/4+1/4+1/4-1/8=5/8
これはTLWE暗号文ca、cb、ccの誤差±1/24を3つ足しているためである。
その結果、ca+cb+ccが二進数のシンボル0又は1の場合に平文が0となり、ca+cb+ccが二進数のシンボルで2又は3の場合に平文が1/4となるTLWE暗号文cyが得られる。TLWE暗号文cyにおいて、平文に付加される誤差は±1/24の範囲に含まれる。これを全加算器の和の上位ビット(桁上げ出力)とする。
演算結果は、以下の通りである。
caが0、cbが0、ccが0
⇒-1/8+(-1/8)+1/4=0
caが0、cbが0、ccが1/4
⇒1/8+1/8+1/4=4/8=1/2
caが0、cbが1/4、ccが0
⇒1/8+1/8+1/4=4/8=1/2
caが0、cbが1/4、ccが1/4
⇒3/8+3/8+1/4=8/8=1(0)
caが1/4、cbが0、ccが0
⇒1/8+1/8+1/4=4/8=1/2
caが1/4、cbが0、ccが1/4
⇒3/8+3/8+1/4=8/8=1(0)
caが1/4、cbが1/4、ccが0
⇒3/8+3/8+1/4=8/8=1(0)
caが1/4、cbが1/4、ccが1/4
⇒5/8+5/8+1/4=12/8=3/2(1/2)
このように構成したことにより、暗号処理装置1は、論理素子の演算でほぼ全ての計算時間を消費しているGate Bootstrappingの回数を2回に減らすことができる。実験の結果、計算時間は22.4msであった。
Gate Bootstrappingを5回行った場合の55.5msと比べて60%の計算時間を短縮できたことが確認できた。また2つのGate Bootstrapping処理には依存関係がない。従って、マルチスレッドなどの手法で並列化することで1段階分の処理時間で2つのGate Bootstrapping処理を行うことができる。
平文に付加する誤差範囲を縮小することで、3入力2値論理演算(平文として2値を有する暗号文を3つ入力として演算を行う)を行う点で上記と同様である。
上記の例(実施例1)では、下位ビットの算出に円周群{T}の全体(0~1)を用いていたためテストベクタは上記論文に記載のとおりであった。
[実施例2]では、下位ビットの算出に円周群{T}の下半分(0~0.5)のみを用いて、テストベクタを特殊なものとしている。
円周群{T}の下半分(0~0.5)しか使わないのは、円周群{T}に対応するテストベクタの中で正負の反転した値が出てこないからである。テストベクタの0次からn次までが暗号文一対一対応する利点がある。
なお、円周群{T}の下半分(0~0.5)しか使わない場合には誤差が重ならないようにするためには下記のように平文の誤差の分散範囲を小さく(±1/48)する必要がある。ただし後述するように、誤差が重なることによる問題が許容できる場合はその限りではなく、誤差の分散範囲として実施例の±1/24や、上記論文の±1/16を採用してもよい。
これらの暗号文は、夫々特別に設定したシステムパラメータによるTLWE暗号文であり、Gate Bootstrappingにより生成された又は新規に暗号化されたものである。
TLWE暗号文ca、cb、ccは何れも平文として0又は1/8を有し、平文に付加される誤差は±1/48の範囲に含まれる。TLWE暗号文ca、cb、ccは、夫々0が二進数のシンボル0に対応し、1/8がシンボル1に対応する。
暗号処理装置1は、ca+cb+cc+(0,1/16)を計算し、演算結果としてTLWE暗号文ctを得る(0,1/16)は平文が1/16となる自明な暗号文である。
caが0、cbが0、ccが0⇒0+0+0=0
caが0、cbが0、ccが1/8⇒0+0+1=1
caが0、cbが1/8、ccが0⇒0+1+0=1
caが0、cbが1/8、ccが1/8⇒0+1+1=2
caが1/8、cbが0、ccが0⇒1+0+0=1
caが1/8、cbが0、ccが1/8⇒1+0+1=2
caが1/8、cbが1/8、ccが0⇒1+1+0=2
caが1/8、cbが1/8、ccが1/8⇒1+1+1=3
これは以下の説明でも同じである。
caが0、cbが0、ccが0
⇒0+0+0+1/16=1/16
caが0、cbが0、ccが1/8
⇒0+0+1/8+1/16=3/16
caが0、cbが1/8、ccが0
⇒0+1/8+0+1/16=3/16
caが0、cbが1/8、ccが1/8
⇒0+1/8+1/8+1/16=5/16
caが1/8、cbが0、ccが0
⇒1/8+0+0+1/16=3/16
caが1/8、cbが0、ccが1/8
⇒1/8+0+1/8+1/16=5/16
caが1/8、cbが1/8、ccが0
⇒1/8+0+1/8+1/16=5/16
caが1/8、cbが1/8、ccが1/8
⇒1/8+1/8+1/8+1/16=7/16
TLWE暗号文ctは、平文として1/16、3/16、5/16、7/16の4つのうちいずれかを有し、平文に付加される誤差は±1/16の範囲に含まれる。
これはTLWE暗号文ca、cb、ccの誤差±1/48を3つ足しているためである。
その結果、ca+cb+ccがシンボル0又は1の場合に平文が0であり、ca+cb+ccがシンボル2又は3の場合に平文が1/8であるTLWE暗号文cyが得られる。平文に付加される誤差は±1/48の範囲内に含まれる。これを全加算器の桁上げ出力とする。
上記論文では、BlindRotateのテストベクタとして、
ただし、μ=1/8
にXn/2を乗じたものを用いている。
これに替えて、暗号処理装置1は、テストベクタとして、
ただし、μ1=μ3=1/16、μ2=μ4=-1/16
を用いる。
これ以降は上記論文同様に(0,1/16)を足し、キースイッチングを行うことで、ca+cb+ccがシンボル0又は2の時に平文が0となり、ca+cb+ccがシンボル1又は3の時に1/8が平文となるTLWE暗号文czが得られる。平文に付加される誤差は±1/48の範囲内に含まれる。これを和の下位ビット出力とする。
このように構成したことにより、暗号処理装置1は、論理素子の演算でほとんど全ての計算時間を消費しているGate Bootstrappingの回数を2回に減らすことができる。実験の結果、計算時間は22.4msであった。
Gate Bootstrappingを5回行った場合の55.5msと比べて60%の計算時間を短縮できたことが確認できた。
また、2つのGate Bootstrapping処理には依存関係がない。従って、マルチスレッドなどの手法で並列化することで1段階分の処理時間で2つのGate Bootstrapping処理を行うことができる。
図4は、[実施例3]に関して、図2の機能構成に基づく全加算器の演算プロセスを詳しく説明する図である。
[実施例3]は、実施例1、2で説明した2値3入力の準同型演算を基本とし、さらにGate Bootstrappingの回数を1回にまで削減する。
図4に示すように、[実施例3]の暗号処理装置1は入力された暗号文ca、cb、ccを第3演算部12に入力して準同型演算を行い、その演算結果(暗号部ct=暗号文ca+cb+cc)を2値Gate Bootstrappingを行う第3Bootstrapping部17に入力する。
第3Bootstrapping部17の出力は、平文として2値(0,μ)の何れかを取り得る桁上げ出力COの暗号文cy、出力Sの暗号文czである。
第3演算部14による準同型演算に要する時間は微々たるものである。
Gate Bootstrappingは、準同型演算を用いて全加算器を処理するとき、ほとんど全ての処理時間を消費している。
その結果、暗号処理装置1では、準同型演算処理のほぼ全てを占めるGate Bootstrappingの回数を全体で1回に減らすることが出来る。
完全準同型暗号に関する全加算器の演算時間のほぼ全てをGate Bootstrappingが占めるので、暗号処理装置1は、Gate Bootstrappingの回数を削減することによって、全加算器の演算を著しく高速化することが出来る。
BlindRotateのテストベクタの上位係数を0とし、準同型演算の結果に対して2種類の多項式を乗算することで、一度のBlindRotateの結果に対して、夫々和の下位ビットと上位ビット(桁上げ)を得る論理素子を作成できる。これにより、全加算器の演算時間のほぼ全てを占めるGate Bootstrapping、さらにその大半を占めるBlindRotateの回数を5回から1回に削減することが出来る。
[6分割版]は上記[実施例1]に対応し、平文に付加する誤差が±1/36の範囲内となるようにシステムパラメータが設定されている。
[8分割版]は上記[実施例2]に対応し、平文に付加する誤差が±1/48の範囲内となるようにシステムパラメータが設定されている。
[6分割版]は、円周群{T}の0~1、なかでも0~0.5+1/6の範囲を使い、[8分割版]は円周群{T}の右半分(0~0.5)を使っている。
TLWE暗号文ca、cb、ccは、何れも平文として0又はpを有し、[6分割版]では平文に付加される誤差は±1/36の範囲に含まれ、[8分割版]では±1/48の範囲に含まれる。
ca+cb+cc+(0,p/2)の演算結果は以下のとおりである。
caが0、cbが0、ccが0
⇒0+0+0+p/2=p/2
caが0、cbが0、ccがp
⇒0+0+p+p/2=3p/2
caが0、cbがp、ccが0
⇒0+p+0+p/2=3p/2
caが0、cbがp、ccがp
⇒0+p+p+p/2=5p/2
caがp、cbが0、ccが0
⇒p+0+0+p/2=3p/2
caがp、cbが0、ccがp
⇒p+0+p+p/2=5p/2
caがp、cbがp、ccが0
⇒p+p+0+p/2=5p/2
caがp、cbがp、ccがp
⇒p+p+p+p/2=7p/2
平文として、p/2、3p/2、5p/2、7p/2の4つのいずれかを有し、平文に付加される誤差が±1/12又は±1/16の範囲内に含まれるTLWE暗号文ctが得られる。
Gate Bootstrappingにおいて、暗号処理装置1は、以下の多項式をテストベクタとしたBlindRotateを行う。
ただし、μ=p/2
このテストベクタは、円周群{T}を分割した一区間だけ値をもつ多項式である。
BlindRotateの結果、暗号処理装置1(第3Bootstrapping部17)は、TRLWE暗号文cr=(a(X),b(X))を得る。
次に暗号処理装置1は、TRLWE暗号文crに対して、上記論文には存在しない多項式fc(X)、fs(X)の乗算を行う。
fc(X)、fx(X)は、
[6分割版]では
とし、
[8分割版]では
とする。
TRLWE暗号文ccoは全加算器の桁上げに対応するTRLWE暗号文、TRLWE暗号文csは全加算器の和の出力に対応するTRLWE暗号文である。
TRLWE暗号文cr=(a(X),b(X))に多項式fc(X)、fs(X)を夫々乗算して得られるcco、csは、
cco=(a(X)・fc(X),b(X)・fc(X))
cs=(a(X)・fs(X),b(X)・fs(X))
として計算される。
である。
従って、TRLWE暗号文ccoを復号すると、
となり、TRLWE暗号文crを復号した平文多項式は多項式fc(X)を乗じたものとなる。
和の出力に対応するTRLWE暗号文csについても同様で、これを復号すると、
となり、TRLWE暗号文crを復号した平文多項式は多項式fs(X)を乗じたものとなる。
よって、TRLWE暗号文ccoを復号した平文多項式は、
であり、テストベクタ多項式をT(X)・fc(X)としたものと同じである。
同様に、csを復号した平文多項式は、
であり、テストベクタ多項式をT(X)・fs(X)としたものと同じである。
[6分割版]の多項式fc(X)、fs(X)は、テストベクタに乗算することで円周群{T}の0~0.5+1/6の範囲を使うテストベクタ多項式を得ることが出来る式である。
[8分割版]の多項式fc(X)、fs(X)は、テストベクタに乗算することで円周群{T}の右半分(0~0.5)を使うためのテストベクタ多項式を得ることが出来る式である。
そして暗号処理装置1は、BlindRotateの結果に対して、夫々残りを両テストベクタ多項式の残りの部分、fc(X)、fs(X)をかける。
これにより、桁上げ出力を得るためのテストベクタ多項式と、和の出力を得るためのテストベクタ多項式に対して夫々BlindRotateを行うことなく、一度に両方の計算結果が得られる。
BlindRotate1回で二種類の多項式に対して、BlindRotateした結果が得られる。
Gate Bootstrappingの処理時間の大半はBlindRotateで占められているため、実質的にGate Bootstrapping2回を1回の時間で行っていることと同等となる。
上記のように構成したので、論理素子の演算でほとんど全ての計算時間を消費しているBlindRotateの回数を5回から1回に減らすことができる。
実験によれば、[実施例3]の構成の計算時間は11.4msであり、Gate Bootstrappingを5回実行する場合の55.5msと比べて、約5倍の早さとなっていることが確認できた。
[実施例3]の変形例として、TLWE暗号文ctに対するGate Bootstrapping処理においてBlindRotateを1回で済ませる処理を以下のように行ってもよい。
暗号処理装置1は、テストベクタ多項式における偶数次数、奇数次数に異なる係数を配置し且つTLWE暗号文の係数を偶数に揃える。これにより、暗号処理装置1は、下記に説明するように、1回のBlindRotateによって複数のルックアップテーブルの参照を行う。その結果、暗号処理装置1は、その後のSampleExtractによって全加算器の和(出力S)を平文として有する暗号文czと、全加算器の桁上げ出力Coを平文として有する暗号文cyを得るための複数種類の演算結果を得ることが出来る。
暗号処理装置1は、準同型演算結果のTLWE暗号文を構成する要素(複数の値)を整数とする計算を行う。この整数は2で割った余り(mod 2の値)が全て同じであり、テストベクタ多項式は2つ毎(偶数毎、奇数毎に)に同じ係数を有することで、複数種類の演算結果を得ることが出来る。
[実施例3]と同様に、TLWE暗号文ca、cb、ccは、何れも平文として0又はpを有し、[6分割版]ではp=1/6、[8分割版]ではp=1/8とする。平文に付加される誤差は、[6分割版]では±1/36の範囲に含まれ、[8分割版]では±1/48の範囲に含まれる。
2値の平文として、円周群{T}上の0と1/6を用いる方法が[6分割版]であり、0と1/8を用いる方法が[8分割版]である。
[実施例4]の最初のステップとして、暗号処理装置1(第3演算部12)は、TLWE暗号文ctをn倍して四捨五入し、その結果をさらに2倍してLWE暗号文ct1を算出する。上記論文ではTLWE暗号文を2n倍してから四捨五入していたが、本実施形態はこの点で異なる。
2倍をしたLWE暗号文ct1の全係数は偶数であり、LWE暗号文ct1を復号した対応する平文p’=φs(ct1)=[s]・[a]-b(b-[s]・[a])が偶数となることが保証される。上記論文について説明したように平文p’=φs(ct1)こそがテストベクタ多項式T(X)にXをかける回数であるので、BlindRotateにおける回転数(Xをかける回数)は偶数回である。
ft(X)=μX2np-2+μX2np-4+…+μX2+μ
ただし、μ=p/2
を用いてテストベクタを構成し、LWE暗号文ct1に対して、上記論文に沿ったGate Bootstrapping処理を行う。テストベクタの構成方法を以下に述べる。
平文の円周群{T}の0~1がテストベクタの0次~2n次の項に対応しているため、テストベクタft(X)をBlindRotateとしたTRLWE暗号文の平文多項式の定数項は、TLWE暗号文ctが0~pの区間の場合にのみp/2となり、それ以外の場合は0となる。また、テストベクタft(X)をBlindRotateとTRLWE暗号文の平文多項式には偶数次数のみが存在する。
[実施例4]では、このテストベクタft(X)に、
[6分割版]では
[8分割版]では
の多項式を用いたft(X){fc(X)X+fs(X)}をBlindRotateのテストベクタ多項式T(X)とする。
[実施例3]でも説明したように、[6分割版]の多項式fc(X)、fs(X)は、テストベクタft(X)に乗算することで円周群{T}の0~0.5+1/6の範囲を使うテストベクタ多項式を得ることが出来る式である。また[8分割版]の多項式fc(X)、fs(X)は、テストベクタft(X)に乗算することで円周群{T}の右半分(0~0.5)を使うためのテストベクタ多項式を得ることが出来る式である。
fc(X)X+fs(X)
=(X4np-X2np-1)X+(-X4np+X2np-1)
=(X4np+1-X2np+1-X)+(-X4np+X2np-1)
=X4np+1-X4np-X2np+1+X2np-X-1
である。
テストベクタ多項式T(X)は、
T(X)=ft(X){fc(X)X+fs(X)}
=(μX2np-2+μX2np-4+…+μX2+μ)×(X4np+1-X4np-X2np+1+X2np-X-1)
=μX6np-1-μX6np-2-μX4np-1+μX4np-2-μX2np-1-μX2np-2
+μX6np-3-μX6np-4-μX4np-3+μX4np-4-μX2np-3-μX2np-4
…+μX4np+3-μX4np+2-μX2np+3+μX2np+2-μX3-μX2
+μX4np+1-μX4np-μX2np+1+μX2np-μX-μ
=μX6np-1-μX6np-2+μX6np-3-μX6np-4…+μX4np+3-μX4np+2+μX4np+1-μX4np-μX4np-1+μX4np-2-μX4np-3+μX4np-4-μX2np+3+μX2np+2-μX2np+1+μX2np-μX2np-1-μX2np-2-μX2np-3-μX2np-4-μX3-μX2-μX-μ
上記の処理によってTLWE暗号文ctの係数を偶数に揃えた結果、BlindRotateで回転させる(テストベクタ多項式にXをかける)回数は偶数回である。
従って、BlindRotate前後で、テストベクタ多項式T(X)における係数と次数の偶奇との関係は保存される。BlindRotate後の次数0にはBlindRotate前のテストベクタ多項式T(X)における偶数次数の項の係数が現れ、BlindRotate後の次数1にはBlindRotate前のテストベクタ多項式T(X)における奇数次数の項の係数が現れる。このとき、係数の符号は反転している。
BlindRotate後のテストベクタ多項式T(X)において、次数0でSampleExtractを行った結果得られる暗号文czは、全加算器の和(出力S)を平文として有し、次数1でSampleExtractを行った結果得られる暗号文cyは、全加算器の桁上げ出力Coを平文として有する。
以上の処理によれば、桁上げ出力Coを得るテストベクタ多項式と、和の出力Sとなるテストベクタを得るテストベクタ多項式に対して夫々BlindRotateを行う必要はない。一のテストベクタ多項式に対する1回のBlindRotateの結果に対して、0と1の次数で2回のSampleExtractを行うことより全加算器の2つの値に対応する暗号文を得ることが出来る。
Gate Bootstrappingの処理時間の大半はBlindRotateで占められているため、実質的にGate Bootstrapping2回を1回の時間で行っていることと同等となる。
上記のように構成したので、論理素子の演算でほとんど全ての計算時間を消費しているBlindRotateの回数を5回から1回に減らすことができる。
上記したように、2値の暗号文を論文通りにGate Bootstrappingする場合、円周群{T}における0~1/4、3/4~1の区間の平文を0のTLWE暗号文に変換する。また、円周群{T}における1/4~3/4の区間の平文を1/4のTLWE暗号文に変換する。実施例1、2では、この変換の際、平文に付加される誤差は、本実施形態の場合、±1/24や±1/48の範囲のいずれかの値である。
上記した円周群{T}の範囲を、0、1などの(多値)論理演算で用いるシンボルを対応づける。
暗号文は、([a],b)の形式を有するベクトルであり、ベクトルの要素は円周群上の点である。平文もまた、円周群{T}上の点である。
論理演算で用いるシンボルは、円周群{T}上の範囲と対応付いており、ある暗号文に対する平文は、その範囲内の何れか1点を指している。平文が、その範囲内のどの点を指しているかは、秘密鍵なしでは、特定することが難しい。これによってTLWE暗号文の強度が担保されている。範囲を0として円周群上の点とシンボルを対応づけると、複数の暗号文を集めて連立方程式として平文を導出可能でありTLWE暗号文は暗号として機能しなくなる。
暗号文が入力されたと判定した場合(ステップS101でYes)、暗号処理装置1(受付部11)は、ステップS102において、暗号文を受けつけ、記憶部20に格納する。
次に、暗号処理装置1(第1演算部12)は、ステップS103において、暗号文を用いて準同型演算を行い、演算結果を記憶部20に格納する。
暗号処理装置1(第1算出部15)は、ステップS104において、演算結果に対してGate Bootstrappingを行い、平文として2値を有する全加算器の桁上げ出力の暗号文を算出し、記憶部20に格納する。
第1演算部12、第1算出部15による処理では以下の演算が行われる。
この演算は、平文として2値を有する3つの暗号文ca、cb、ccの入力を受け付け、ca+cb+cc-1/8からTLWE暗号文ctを算出し、これをGate Bootstrappingして桁上げ出力Coの暗号文cyを得る。
caが0、cbが0、ccが0
⇒0±1/24+0±1/24+0±1/24-1/8=-1/8±1/8
caが0、cbが0、ccが1
⇒0±1/24+0±1/24+1/4±1/24-1/8=1/8±1/8
caが0、cbが1、ccが0
⇒0±1/24+1/4±1/24+0±1/24-1/8=1/8±1/8
caが0、cbが1、ccが1/4
⇒0±1/24+1/4±1/24+1/4±1/24-1/8=3/8±1/8
caが1、cbが0、ccが0
⇒1/4±1/24+0±1/24+0±1/24-1/8=1/8±1/8
caが1/4、cbが0、ccが1
⇒1/4±1/24+0±1/24+1/4±1/24-1/8=3/8±1/8
caが1、cbが1、ccが0
⇒1/4±1/24+0±1/24+1/4±1/24-1/8=3/8±1/8
caが1、cbが1、ccが1
⇒1/4±1/24+1/4±1/24+1/4±1/24-1/8=5/8±1/8
得られた暗号文ctは、平文として1/8、3/8、5/8、7/8の4つのいずれかを有し、平文に付加される誤差は±1/8の範囲に含まれる。
ステップS104の処理として第1算出部15がTLWE暗号文ctに対してGate Bootstrappingを行うと、平文として0又は1/4を有し、平文に付加される誤差は±1/24の範囲内に含まれる暗号文cyの出力が得られる。これを全加算器の和の上位ビット(桁上げ出力Co)とする。
暗号処理装置1(第2算出部16)は、ステップS106において、ステップS105の演算結果に対して2値Gate Bootstrappingを行って出力暗号文czを算出し、記憶部20に格納する。
第2演算部13、第2算出部16による処理の結果、以下の演算が行われる。
この演算は、平文として2値を有する暗号文ctの入力を受け付け、暗号文ct同士を加算して平文として2値を有する出力暗号文czを得るものである。
第2演算部13がステップS105の演算を行うとき以下の演算を行う。
caが0、cbが0、ccが0
⇒-1/8±1/8+(-1/8±1/8)+1/4=0±1/4
caが0、cbが0、ccが1/4
⇒1/8±1/8+1/8±1/8+1/4=4/8=1/2±1/4
caが0、cbが1/4、ccが0
⇒1/8±1/8+1/8±1/8+1/4=4/8=1/2±1/4
caが0、cbが1/4、ccが1/4
⇒3/8±1/8+3/8±1/8+1/4=8/8=1(0)±1/4
caが1/4、cbが0、ccが0
⇒1/8±1/8+1/8±1/8+1/4=4/8=1/2±1/4
caが1/4、cbが0、ccが1/4
⇒3/8±1/8+3/8±1/8+1/4=8/8=1(0)±1/4
caが1/4、cbが1/4、ccが0
⇒3/8±1/8+3/8±1/8+1/4==8/8=1(0)±1/4
caが1/4、cbが1/4、ccが1/4
⇒5/8±1/8+5/8±1/8+1/4=12/8=3/2(1/2)±1/4
ステップS106の処理として第2算出部16がGate Bootstrappingを行うと、平文として0又は1/4を有し、平文に付加される誤差は±1/24の範囲内に含まれる暗号文czが得られる。これを全加算器の和の下位ビット(出力S)とする。
ステップS104の2値Gate Bootstrappingと、ステップS106の2値Gate Bootstrappingと、はマルチスレッド処理によって、並列で実行することが出来る。
以下の説明は、[8分割版]の[実施例3]、[実施例4]に対応する。
暗号処理装置1(受付部11)は、ステップS101において、演算対象の暗号文が入力されたか否かを受け付けたかを判定する。
暗号文が入力されたと判定した場合(ステップS201でYes)、暗号処理装置1(受付部11)は、ステップS202において、暗号文を受けつけ記憶部20に格納する。
次に、暗号処理装置1(第3演算部14)は、ステップS203において、暗号文を用いて準同型演算を行い、演算結果を記憶部20に格納する。
暗号処理装置1(第3算出部17)は、ステップS204において、演算結果に対してGate Bootstrappingを行い、平文として2値を有する全加算器の桁上げ出力Coの暗号文を算出し、記憶部20に格納する。
第3演算部14、第3算出部17による処理では以下の演算が行われる。
この演算は、平文として2値を有する3つの暗号文ca、cb、ccの入力を受け付け、ca+cb+cc+1/16からTLWE暗号文ctを算出し、これをGate Bootstrappingして、全加算器の桁上げ出力Coの暗号文(上位ビット)cyと全加算器の出力Sの暗号文czを得るものである。
caが0、cbが0、ccが0
⇒0±1/48+0±1/48+0±1/48+1/16=1/16±1/16
caが0、cbが0、ccが1
⇒0±1/48+0±1/48+1/8±1/48+1/16=3/16±1/16
caが0、cbが1、ccが0
⇒0±1/48+1/8±1/48+0±1/48+1/16=3/16±1/16
caが0、cbが1、ccが1/4
⇒0±1/48+1/8±1/48+1/8±1/48+1/16=3/16±1/16
caが1、cbが0、ccが0
⇒1/8±1/48+0±1/48+0±1/48+1/16=3/16±1/16
caが1/4、cbが0、ccが1
⇒1/8±1/48+0±1/48+1/8±1/48+1/16=5/16±1/16
caが1、cbが1、ccが0
⇒1/8±1/48+0±1/48+1/8±1/48+1/16=5/16±1/16
caが1、cbが1、ccが1
⇒1/8±1/48+1/8±1/48+1/8±1/48+1/16=7/16±1/16
得られた暗号文ctは、平文として1/16、3/16、5/16、7/16の4つのいずれかを有し、平文に付加される誤差は±1/16の範囲に含まれる。
ステップS204の処理として第3算出部17がGate Bootstrappingを行うと、平文として0又は1/8を有し、平文に付加される誤差が±1/48の範囲内に含まれる暗号文cy、czの出力が得られる。これらを夫々全加算器の和の下位ビット(出力S)、全加算器の和の上位ビット(桁上げ出力Co)とする。
上記の[実施例3]の[6分割版]では、[実施例1]に対応して、平文の値を0、1/6とし、平文に付加される誤差が±1/36の範囲内となるようにパラメータを変更してGate Bootstrappingの回数をさらに1回に削減した。
[実施例3]の[6分割版]と同じパラメータを用い平文に付加される誤差を±1/36の範囲内とし、平文として0又は1/6の2値を有し、2つの異なるテストベクタ多項式で2回のGate Bootstrappingを行うことによっても、全加算器の和の暗号文czと、桁上げ出力の暗号文cyを得ることが出来る。
この[変形例]では、暗号処理装置1は、ca+cb+cc+1/12を計算し、計算結果としてTLWE暗号文ct’を得る。
上記のように、[実施例1]では、TLWE暗号文ctに対して、上記論文通りのGate Bootstrappingを行って繰り上げ出力Coの暗号文cyを計算し、TLWE暗号文ct同士の準同型演算(ct+ct)に対して上記論文通りのGate Bootstrappingを行って出力Sの暗号文czを演算していた。
繰り上げ出力Coの暗号文cyを得るためテストベクタ多項式TAは、
μ1Xn-1+…+μ1X2n/3+μ2X2n/3-1+…+μ2X0
ただし、μ1=1/12、μ2=-1/12
とする。
出力Sの暗号文czを得るためのテストベクタ多項式TBは、
μ1Xn-1+…+μ1X2n/3+μ2X2n/3-1+…+μ2Xn/3+μ1Xn/3-1+…+μ1X0
ただし、μ1=-1/12、μ2=1/12
とする。
なおTLWE暗号文ct’同士の準同型演算(ct’+ct’)を行わず、TLWE暗号文ct’に対してテストベクタ多項式TBを用いたGate Bootstrappingを行って暗号文czを得ることが出来る。
caが0、cbが0、ccが0(ca+cb+ccは二進数のシンボルで0+0+0=0)
⇒0+0+0+1/12=1/12
caが0、cbが0、ccが1/6(ca+cb+ccは二進数のシンボルで0+0+1=1)
⇒0+0+1/6+1/12=1/4(3/12)
caが0、cbが1/6、ccが0(ca+cb+ccは二進数のシンボルで0+1+0=1)
⇒0+1/6+0+1/12=1/4(3/12)
caが0、cbが1/6、ccが1/6(ca+cb+ccは二進数のシンボルで0+1+1=2)
⇒0+1/6+1/6+1/12=5/12
caが1/6、cbが0、ccが0(ca+cb+ccは二進数のシンボルで1+0+0=1)
⇒1/6+0+0+1/12=1/4(3/12)
caが1/6、cbが0、ccが1/6(ca+cb+ccは二進数のシンボルで1+0+1=2)
⇒1/6+0+1/6+1/12=5/12
caが1/6、cbが1/6、ccが0(ca+cb+ccは二進数のシンボルで1+1+0=2)
⇒1/6+1/6+0+1/12=5/12
caが1/6、cbが1/6、ccが1/6(ca+cb+ccは二進数のシンボルで1+1+1=3)
⇒1/6+1/6+1/6+1/12=7/12
演算結果となる暗号文は平文として1/12、1/4、5/12、7/12を有する。
円周群{T}の上半分(0.5~1)では、テストベクタ多項式における下位の項Xn/3-1~…X0は係数の符号がマイナスに転じている。
従って、テストベクタ多項式TAのμ2X2n/3-1~μ2X0における下位のμ2Xn/3-1~μ2X0はμ2=-1/12に-1を乗算した1/12となっている。このときの係数の値にさらに(0,1/12)を加算して、繰り上げ出力Coの暗号文cyの平文として1/6を得る。(0,1/12)は平文が1/12となる自明な暗号文である。
またテストベクタ多項式TBにおける下位の項μ1Xn/3-1~μ1X0における係数は、μ1=-1/12に-1を乗算した1/12となっている。このときの係数の値にさらに(0,1/12)を加算して、全加算器の和(出力S)の暗号文czの平文として1/6を得る。
得られた暗号文cy、暗号文czは何れも平文として0又は1/6を有しており、正しく桁上げ出力Coと全加算器の和(出力S)が計算されたことが分かる。
上記に説明した全加算器に関する[変形例]と同様の手法をAOI21ゲート、OAI21に適用して高速化することもできる。
AOI21ゲートは、AND-OR-INVERT2-1ゲートの略であり、入力A、B、Cに対して、D1=NOT(OR(A,AND(B,C)))を出力する。以下の説明では、AOI21ゲートを単にAOIゲートと記載する。
図9は、論理演算素子によるハードウェア回路でAOIゲートを説明しているが、AOIゲートをソフトウェアで実装したCPUが実行するAOIゲートプログラムであると考えてもよい。
Bit-wise型の準同型暗号の処理をソフトウェアで実装するとき、暗号文に対して論理回路(論理ゲート)を設計するイメージで演算を行う。
AOIゲート60は、1つのAND回路部(ANDを得るための演算処理部)61と、1つのOR回路部(ORを得るための演算処理部)62と、を備える。
AND回路部61とOR回路部62は夫々暗号文同士の準同型演算を行う演算部と、演算結果の誤差を減少させるGate Bootstrappingを行う算出部と、を備えている。
入力Bと入力CがAND回路部61に入力され、AND回路部61の出力と入力Aと、が後段のOR回路部62に入力され、OR回路部62からはAOI出力D1が出力される。
AOIゲートは、以下の真偽値を有する。
図10は、OAIゲートの構成を例示する図である。
図10は、論理演算素子によるハードウェア回路でOAIゲートを説明しているが、OAIゲートをソフトウェアで実装したCPUが実行するOAIゲートプログラムであると考えてもよい。
Bit-wise型の準同型暗号の処理をソフトウェアで実装するとき、暗号文に対して論理回路(論理ゲート)を設計するイメージで演算を行う。
OAIゲート70は、1つのOR回路部(ORを得るための演算処理部)71と、1つのAND回路部(ANDを得るための演算処理部)72と、を備える。
OR回路部71とAND回路部72は夫々暗号文同士の準同型演算を行う演算部と、演算結果の誤差を減少させるGate Bootstrappingを行う算出部と、を備えている。
入力Bと入力CがOR回路部71に入力され、OR回路部71の出力と入力Aと、が後段のAND回路部72に入力され、AND回路部72からはOAI出力D2が出力される。
OAIゲートは、以下の真偽値を有する。
暗号処理装置1は、制御部10と、記憶部20と、通信部25と、入力部26と、を備える。
制御部10は、受付部11と、第4演算部31と、第4Bootstrapping部(第4算出部)32と、出力部18と、を備えている。
第4演算部31と、第4Bootstrapping部(第4算出部)32以外の構成は、図2と同じであるため説明を省略する。
第4演算部31は、受付部11が受け付けた2値3入力の暗号文に対して、第4準同型演算を行う。
第4演算部31は、図9、図10で説明した論理ゲート(AND回路部、XOR回路部、NOT回路部)によるAOIゲート、OAIゲートの演算(準同型演算)をソフトウェアで実現する演算処理部である。第4演算部31は、ハードウェアで実現されてもよい。
図12の説明において、暗号処理装置1に入力される暗号文ca、cb、ccは、いずれも上記論文に示されるTLWE暗号文である。
下記に詳しく説明するが、TLWE暗号は、0又はμ(非0)の値を平文として有するBit-wise型の完全準同型暗号である。
論理ゲートを用いた論理演算によって様々な演算を行うことができる。
また後述するように、TLWE暗号文は、二進数のシンボル0又は1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能である。
上記論文で提示されているTFHEのGate Bootstrappingについては下記に詳述する。
入力された暗号文ca、cb、ccを第4演算部31に入力して準同型演算を行い、その演算結果(暗号文ct=暗号文ca×2+cb+cc)を2値Gate Bootstrappingを行う第1Bootstrapping部15に入力する。
第1Bootstrapping部15の出力は、平文として2値(0,μ)の何れかを取り得る、
AOIゲートの出力D1の暗号文dc1、又はOAIゲートの出力D2の暗号文dc2である。
AOI21ゲートの入力A、B、Cに夫々対応するTLWE暗号文ca、cb、ccがあるとする。
これらの暗号文は、夫々特別に設定したシステムパラメータによるTLWE暗号文であり、Gate Bootstrappingにより生成された又は新規に暗号化されたものである。
TLWE暗号文ca、cb、ccは、何れも平文として0又は1/6を有し、平文に付加される誤差は±1/48の範囲に含まれる。
TLWE暗号文ca、cb、ccは、夫々0が二進数のシンボル0に対応し、1/6がシンボル1に対応する。
2×ca+cb+cc+(0,1/12)の演算結果は以下のとおりである。
caが0、cbが0、ccが0(2×ca+cb+ccは二進数のシンボルで0+0+0=0)
⇒2×0+0+0+1/12=1/12
caが0、cbが0、ccが1/6(2×ca+cb+ccは二進数のシンボルで0+0+1=1)
⇒2×0+0+1/6+1/12=3/12
caが0、cbが1/6、ccが0(2×ca+cb+ccは二進数のシンボルで0+1+0=1)
⇒2×0+1/6+0+1/12=3/12
caが0、cbが1/6、ccが1/6(2×ca+cb+ccは二進数のシンボルで0+1+1=2)
⇒2×0+1/6+1/6+1/12=5/12
caが1/6、cbが0、ccが0(2×ca+cb+ccは二進数のシンボルで2+0+0=2)
⇒2×1/6+0+0+1/12=5/12
caが1/6、cbが0、ccが1/6(2×ca+cb+ccは二進数のシンボルで2+0+1=3)
⇒2×1/6+0+1/6+1/12=7/12
caが1/6、cbが1/6、ccが0(2×ca+cb+ccは二進数のシンボルで2+1+0=3)
⇒2×1/6+1/6+0+1/12=7/12
caが1/6、cbが1/6、ccが1/6(2×ca+cb+ccは二進数のシンボルで2+1+1=4)
⇒2×1/6+1/6+1/6+1/12=9/12
平文として、1/12、3/12、5/12、7/12、9/12の5つのいずれかを有し、平文に付加される誤差が±1/16の範囲内に含まれるTLWE暗号文ctが得られる。
ただし、Gate Bootstrappingにおいて、暗号処理装置1は、以下の多項式をテストベクタとしたBlindRotateを行う。
Tx=μ1X(n-1)+μ1X(n-2)+…+μ1X(2/3n)+μ2X(2/3n-1)+…μ2
ただし、μ1=-1/12、μ2=1/12
SampleExtract直後の段階で得られるTLWE暗号文は、
caが0、cbが0、ccが0⇒1/12
caが0、cbが0、ccが1/6⇒1/12
caが0、cbが1/6、ccが0⇒1/12
caが0、cbが1/6、ccが1/6⇒-1/12
caが1/6、cbが0、ccが0⇒-1/12
caが1/6、cbが0、ccが1/6⇒-1/12
caが1/6、cbが1/6、ccが0⇒-1/12
caが1/6、cbが1/6、ccが1/6⇒-1/12
から平文として1/12又は-1/12を有する。
これに(0,1/12)を加えてキースイッチングを行うと、平文として0又は1/6を有するTLWE暗号文cyが得られる。夫々0が二進数のシンボル0に対応し、1/6がシンボル1に対応する。
以下は、入力された暗号文に応じたTLWE暗号文cyが取り得るシンボルを示す真理値表である。
上記したAOI21ゲートと同じ演算結果となっており、正しくAOI21ゲートの演算が出来たことが分かる。
OAI21ゲートの入力A、B、Cに夫々対応するTLWE暗号文ca、cb、ccがあるとする。
これらの暗号文は、夫々特別に設定したシステムパラメータによるTLWE暗号文であり、Gate Bootstrappingにより生成された又は新規に暗号化されたものである。
TLWE暗号文ca、cb、ccは、何れも平文として0又は1/6を有し、平文に付加される誤差は±1/48の範囲に含まれる。
TLWE暗号文ca、cb、ccは、夫々0が二進数のシンボル0に対応し、1/6がシンボル1に対応する。
2×ca+cb+cc+(0,1/12)の演算結果は以下のとおりである。
caが0、cbが0、ccが0(2×ca+cb+ccは二進数のシンボルで0+0+0=0)
⇒2×0+0+0+1/12=1/12
caが0、cbが0、ccが1/6(2×ca+cb+ccは二進数のシンボルで0+0+1=1)
⇒2×0+0+1/6+1/12=3/12
caが0、cbが1/6、ccが0(2×ca+cb+ccは二進数のシンボルで0+1+0=1)
⇒2×0+1/6+0+1/12=3/12
caが0、cbが1/6、ccが1/6(2×ca+cb+ccは二進数のシンボルで0+1+1=2)
⇒2×0+1/6+1/6+1/12=5/12
caが1/6、cbが0、ccが0(2×ca+cb+ccは二進数のシンボルで2+0+0=2)
⇒2×1/6+0+0+1/12=5/12
caが1/6、cbが0、ccが1/6(2×ca+cb+ccは二進数のシンボルで2+0+1=3)
⇒2×1/6+0+1/6+1/12=7/12
caが1/6、cbが1/6、ccが0(2×ca+cb+ccは二進数のシンボルで2+1+0=3)
⇒2×1/6+1/6+0+1/12=7/12
caが1/6、cbが1/6、ccが1/6(2×ca+cb+ccは二進数のシンボルで2+1+1=4)
⇒2×1/6+1/6+1/6+1/12=9/12
平文として、1/12、3/12、5/12、7/12、9/12の5つのいずれかを有し、平文に付加される誤差が±1/16の範囲内に含まれるTLWE暗号文ctが得られる。
ただし、Gate Bootstrappingにおいて、暗号処理装置1は、以下の多項式をテストベクタとしたBlindRotateを行う。
Tx=μX(n-1)+…+μ
ただし、μ=1/12
SampleExtract直後の段階で得られるTLWE暗号文は、
caが0、cbが0、ccが0⇒1/12
caが0、cbが0、ccが1/6⇒1/12
caが0、cbが1/6、ccが0⇒1/12
caが0、cbが1/6、ccが1/6⇒1/12
caが1/6、cbが0、ccが0⇒1/12
caが1/6、cbが0、ccが1/6⇒-1/12
caが1/6、cbが1/6、ccが0⇒-1/12
caが1/6、cbが1/6、ccが1/6⇒-1/12
から平文として1/12又は-1/12を有する。
これに(0,1/12)を加えてキースイッチングを行うと、平文として0又は1/6を有するTLWE暗号文cyが得られる。夫々0が二進数のシンボル0に対応し、1/6がシンボル1に対応する。
以下は、入力された暗号文に応じたTLWE暗号文cyが取り得るシンボルを示す真理値表である。
上記したOAI21ゲートと同じ演算結果となっており、正しくOAI21ゲートの演算が出来たことが分かる。
図10に示すOAIゲートのように、2値Gate Bootstrappingを用いてOAIゲートの演算を行う場合、AND回路部71、OR回路部72の後段で夫々1回、全体で2回Gate Bootstrappingを実行する必要がある。
それに対して、本実施形態の暗号処理装置1では、AOIゲート、OAIゲートの演算において、第4演算部31に2値の暗号文を3つ入力し、Gate Bootstrappingを改良することにより、準同型演算処理の回数を全体で1回に減らしている。
その結果、暗号処理装置1では、準同型演算処理のほぼ全てを占めるGate Bootstrappingの回数を全体で1回に減らすることが出来る。したがって、図9、図10に示すAOIゲート、OAIゲートと比較して、暗号処理装置1は、計算処理時間を約50%削減することが出来る。
以上のように、完全準同型暗号に関するAOIゲート、OAIゲートの演算時間のほぼ全てをGate Bootstrappingが占めるので、暗号処理装置1は、Gate Bootstrappingの回数を削減することによって、AOIゲート、OAIゲートの演算を著しく高速化することが出来る。
暗号処理装置1(受付部11)は、ステップS301において、演算対象の暗号文が入力されたか否かを受け付けたかを判定する。
暗号文が入力されたと判定した場合(ステップS301でYes)、暗号処理装置1(受付部11)は、ステップS302において、暗号文を受けつけ記憶部20に格納する。
次に、暗号処理装置1(第4演算部31)は、ステップS303において、暗号文を用いて準同型演算を行い、演算結果を記憶部20に格納する。
暗号処理装置1(第4算出部32)は、ステップS304において、演算結果に対してGate Bootstrappingを行い、平文として2値を有するAOIゲート、OAIゲートの出力D1、D2の暗号文dc1、dc2を算出し、記憶部20に格納する。
第4演算部31、第4算出部32による処理では以下の演算が行われる。
この演算は、平文として2値を有する3つの暗号文ca、cb、ccの入力を受け付け、2×ca+cb+cc+1/16からTLWE暗号文ctを算出し、これをGate Bootstrappingして、AOIゲート、OAIゲートの出力D1、D2の暗号文dc1、dc2を得るものである。
caが0、cbが0、ccが0
⇒2×0±1/48+0±1/48+0±1/48+1/16=1/16±1/16
caが0、cbが0、ccが1
⇒2×0±1/48+0±1/48+1/8±1/48+1/16=3/16±1/16
caが0、cbが1、ccが0
⇒2×0±1/48+1/8±1/48+0±1/48+1/16=3/16±1/16
caが0、cbが1、ccが1/4
⇒2×0±1/48+1/8±1/48+1/8±1/48+1/16=5/16±1/16
caが1、cbが0、ccが0
⇒2×1/8±1/48+0±1/48+0±1/48+1/16=5/16±1/16
caが1/4、cbが0、ccが1
⇒2×1/8±1/48+0±1/48+1/8±1/48+1/16=7/16±1/16
caが1、cbが1、ccが0
⇒2×1/8±1/48+0±1/48+1/8±1/48+1/16=7/16±1/16
caが1、cbが1、ccが1
⇒2×1/8±1/48+1/8±1/48+1/8±1/48+1/16=9/16±1/16
得られた暗号文ctは、平文として1/16、3/16、5/16、7/16、9/16の5つのいずれかを有し、平文に付加される誤差は±1/16の範囲に含まれる。
ステップS204の処理として第4算出部32がGate Bootstrappingを行うと、平文として0又は1/8を有し、平文に付加される誤差が±1/48の範囲内に含まれる暗号文dc1又はdc2の出力が得られる。これらを夫々AOIゲートの出力D1又はOAIゲートの出力D2とする。
本明細書において主に説明している全加算器の高速化のみならず、平文に付加する誤差範囲を小さくすること適用することで上記のAOIゲートやOAIゲートの演算も著しく高速化することができ、これらを用いたCMOS回路のシミュレーションも高速化することが出来る。
上記の説明では、図19(a)に示すように、BlindRotate、SampleExtract、キースイッチングの順番でGate Bootstrappingを行うように説明をしていた。
それに限らず、図14(b)に示すように、Gate Bootstrappingにおいてキースイッチングを最初に実行し、その後で、BlindRotateとSampleExtractを行うことが出来る。
TLWE暗号文にはセキュリティ強度に応じたレベルの概念がある。
図14(a)のGate Bootstrappingでは入出力となるTLWE暗号文はLEVEL0である。LEVEL0のTLWE暗号文に対してBlindRotateを行い、その出力のTRLWE暗号文に対するSampleExtractによって得られるTLWE暗号文はLEVEL1となるが、キースイッチングの結果、LEVEL0のTLWE暗号文が出力される。
それに対して図14(b)に示す方法では、Gate Bootstrappingの入出力となるTLWE暗号文をLEVEL1とし、最初にキースイッチングを行ってLEVEL0に下げた状態でBlindRotateを行い、その出力のTRLWE暗号文に対するSampleExtractを行うとLEVEL1のTLWE暗号文が出力される。
LEVEL0の暗号文は、LWE問題の難易度となる係数の数(ベクトルの次数)がLEVEL1の暗号文よりも少ないので、LEVEL1と比較して準同型加算の計算量が少ない。
一方でLEVEL0の暗号文は、上記の実施例のように2値3入力の準同型演算を可能とするために平文に付加する許容誤差を小さくすると、セキュリティ強度が下がりやすい問題がある。LWE系暗号は、平文に付加する誤差によって安全性が担保されるからである。
TLWE暗号は、平文に付加する誤差が大きいほど、係数の数(ベクトルの次数)が多いほど計算(解読)が難しい。
裏を返すと、TLWE暗号は、平文に付加する誤差が小さいほど、係数の数(ベクトルの次数)が少ないほど、計算(解読)が容易となるのである。
誤差を小さくする場合には暗号文の係数の数(ベクトルの次数)を上げてセキュリティを確保する必要がある。
BlindRotateの所要時間は、入力となるTLWE暗号文の係数の数(ベクトルの次数)に比例する。よって、LEVEL1の暗号文を入力とした場合は、LEVEL0の暗号文を入力とした場合よりも、係数の数(ベクトルの次数)に比例してBlindRotateの所要時間が長くなる。
暗号文のセキュリティを確保するためにLEVEL1の暗号文をGate Bootstrappingの入力としても、キースイッチングで変換したLEVEL0のTLWE暗号文を入力としてBlindRotateを行うことで、所要時間の増加を避けることが出来る。
Gate Bootstrappingの入出力をLEVEL1のTLWE暗号文とする方法は、実施例のような2値3入力の準同型演算を行う場合に限らず、2値2入力の準同型演算の場合にも適用可能である。LEVEL0に戻さないことで、次段でのTLWE暗号文の計算でも同様に、安全に多値入力を行って高速に処理を行うことが出来る。
本実施形態の構成では、Gate Bootstrappingの処理時間の大半を占めるBlindRotateを1回で済ますことができるが、誤差範囲をより小さくとる必要があるため、セキュリティ強度が低下したり、復号エラー率が上がったりする問題もある。
TFHE含めLWE系の準同型暗号では平文に付加する誤差は正規分布で分布しており、厳密に「誤差の範囲」を設定することはできない。
0付近に集中することに変わりはないが、原理的には、誤差を指定範囲により多く集中させることが出来るのみである。
例えば、平文に付加する誤差を±1/24以内と設定しても、その範囲外の誤差が付加される可能性が数パーセント存在する。
設定した範囲から誤差がはみ出した場合、その平文は別の平文として解釈されるため、予期せぬ計算結果が得られる可能性がある。
計算自体ができなくなるのではなく異なる結果が得られるのみである。異なる計算結果が得られる確率をどの程度許容できるかは、準同型暗号を応用するアプリケーション次第である。
これらのバランスが最もとれるように、誤差範囲の重なりが一定値内に収まるように誤差となるようにシステムパラメータを設定することが必要である。
演算の高速化を重視する場合には、平文に付加する誤差を±1/32の範囲内に設定することで2値4入力などの準同型演算も可能となる。
異なる計算結果が得られる可能性をある程度許容できるアプリケーションであれば、誤差範囲が重なる可能性はある程度許容しつつ、2値3入力として計算を高速化しながら、誤差を±1/16以内と大きくとってセキュリティを保つことも出来る。
例えば、平文に付加する誤差を±1/16以内と設定してある上記論文のパラメータを用いても、原理上、2値3入力の準同型演算で全加算器を高速化する本実施形態の構成は可能である。設定範囲から誤差がはみ出し、異なる計算結果が得られる確率が上がるのみである。
暗号処理装置1が行う全加算器の高速化は、以下のように応用することが出来る。
例えば、フィールドやレコードがTLWE暗号で暗号化されているデータベースから、特定のフィールドが一定の範囲内のものを集約したい場合(例えば、30~39歳の平均年収を求めたい場合など)を考える。
このとき、暗号処理装置1は暗号化されたデータベースを管理するデータベースサーバであり、ネットワーク等を介して接続された端末装置から、TLWE暗号で暗号化されたクエリを受け付け、クエリに対する応答を、TLWE暗号で暗号化した状態で端末装置に返却する。
暗号化されたデータベースではインデックスを作成することができないため、データベース全体に対する比較と集約が必要である。
比較演算は、レコードとクエリの暗号文同士で減算を行うことであり、減算結果の正負が比較演算の等価となる。
暗号処理装置1はさらに、比較演算でクエリと一致したレコードに対する集約演算を行うことが出来る。
集約演算において、暗号処理装置1は、比較演算でクエリと一致したレコードを加算して合計を演算し、さらに除算を用いて平均値を求める。
このように、暗号化されたデータベースに対するクエリの処理には、暗号文を構成する整数同士の加算、減算、乗算、除算などの四則演算、や比較(比較は減算結果の正負と等価である)を行う必要がある。そして、処理には全加算器演算が多用されることが考えられる。そして、扱う整数のビット長が大きくなれば必要となる全加算器の数も増加する。
全加算器の演算を、上記に説明した論理演算の回数ひいてはGate Bootstrappingの回数を減らして高速化すことによって、クエリの実行時間を著しく低減することが可能となる。
四則演算とは、入力された暗号文を用いた順列を二進数で表記した際の各ビットの暗号文とみなした暗号化された数値同士に対して準同型な四則演算である。
他の例として、ファジー認証やファジー検索が挙げられる。
ファジー認証は、例えば生体認証データを使った生体認証であり、生涯不変の生体認証データは暗号化して秘匿するのが絶対条件である。
ファジー認証は、認証要求として提示された生体認証データとデータベースに登録された生体認証データとの対応に基づいて認証をするものであるが、両者の完全な一致ではなく、閾値付きで一致するか否かを判定する。
ファジー検索は、クエリとレコードが完全に一致しなくても、クエリに近しいデータをデータベースから検索結果として提示する、曖昧な検索方法である。
ファジー認証やファジー検索では、上記の暗号化されたデータベースにおける比較演算・集約演算と同様に、暗号化されたデータベースとクエリとの比較を行い、その際には、準同型暗号により暗号化されたデータで比較演算を行う必要がある。
特にファジー認証やファジー検索では、整数同士の加算、減算、乗算、除算や比較は処理時間の大半を占めるため、それらに用いられる全加算器の演算を高速化することによって処理時間の短縮に大きな効果を奏し得る。
図15を参照して、コンピュータ装置100の構成について説明する。
コンピュータ装置100は、例えば、各種情報を処理する暗号処理装置である。そして、コンピュータ装置100は、制御回路101と、記憶装置102と、読書装置103と、記録媒体104と、通信インターフェイス105と、入出力インターフェイス106と、入力装置107と、表示装置108とを含む。また、通信インターフェイス105は、ネットワーク200と接続される。そして各構成要素は、バス110により接続される。
暗号処理装置1は、コンピュータ装置100に記載の構成要素の一部又は全てを適宜選択して構成することができる。
暗号処理装置1は、RAMに読み出されたプログラムを制御回路101で実行することにより、受付処理、第1演算処理、第2演算処理、第3演算処理、第4演算処理、第1Bootstrapping処理、第2Bootstrapping処理、第3Bootstrapping処理、第4Bootstrapping処理、出力処理のいずれか1以上を含む処理を実行する。
なおプログラムは、制御回路101が通信インターフェイス105を介してアクセス可能であれば、ネットワーク200上のサーバが有する記憶装置に記憶されていても良い。
記録媒体104は、各種データを保存する。記録媒体104は、例えば、情報処理プログラムを記憶する。記録媒体104は、例えば、Secure Digital(SD)メモリーカード、Floppy Disk(FD)、Compact Disc(CD)、Digital Versatile Disk(DVD)、Blu-ray(登録商標) Disk(BD)、及びフラッシュメモリなどの不揮発性メモリ(非一時的記録媒体)である。
入出力インターフェイス106は、例えば、各種入力装置と着脱可能に接続するインターフェイスである。入出力インターフェイス106と接続される入力装置107には、例えば、キーボード、及びマウスなどがある。入出力インターフェイス106は、接続された各種入力装置とコンピュータ装置100とを通信可能に接続する。そして、入出力インターフェイス106は、接続された各種入力装置から入力された信号を、バス110を介して制御回路101に出力する。また、入出力インターフェイス106は、制御回路101から出力された信号を、バス110を介して入出力装置に出力する。入出力インターフェイス106は、例えば、図2において、入力部26として機能する。
なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成又は実施形態を取ることができる。
Claims (12)
- 暗号文を処理する暗号処理装置であって、
前記暗号文は、シンボル0または1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
準同型演算後の平文に付加される誤差の範囲が所定値以内となるように誤差範囲を設定された2以上の前記暗号文に対して所定の演算に係る準同型演算を行う演算部と、前記準同型演算の結果となる暗号文に対して所定の多項式を用いることにより、新たな暗号文を算出する算出部と、
を備え、
前記算出部は、複数の前記多項式を、互いに共通する共通多項式と共通しない非共通多項式とに夫々因数分解し、
前記準同型演算の結果に対して前記共通多項式を用いて算出した複数の暗号文と、前記非共通多項式と、を用いて前記新たな暗号文を複数算出する、
ことを特徴とする暗号処理装置。 - 暗号文を処理する暗号処理装置であって、
前記暗号文は、シンボル0または1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
準同型演算後の平文に付加される誤差の範囲が所定値以内となるように誤差範囲を設定された2以上の前記暗号文に対して所定の演算に係る準同型演算を行う演算部と、前記準同型演算の結果となる暗号文に対して所定の多項式を用いることにより、新たな暗号文を算出する算出部と、
を備え、
前記暗号文は、当該暗号文を構成する要素として複数の値を有し、
前記算出部は、前記複数の値を整数とする計算を行う第1算出部と、前記多項式を用いて前記新たな暗号文の誤差を低減する第2算出部と、を備え、
前記第1算出部が計算する整数は所定の値で割った余りが全て同じであり、前記多項式は、前記所定の値毎に同じとなる複数の係数を有し、
前記複数の係数の夫々を用いて前記新たな暗号文を夫々算出する、
ことを特徴とする暗号処理装置。 - 請求項1又は2に記載の暗号処理装置において、
前記準同型演算の結果に対して、所定の多項式を用いて新たな暗号文を算出するまえに暗号文の係数の数を削減する処理を行う、
ことを特徴とする暗号処理装置。 - 請求項1乃至3の何れか一項に記載の暗号処理装置において、
前記所定の演算は全加算器の演算である、
ことを特徴とする暗号処理装置。 - 請求項4に記載の暗号処理装置において、
前記所定の演算として前記全加算器の演算を行うことにより、入力された前記暗号文を用いた順列を二進数で表記した際の各ビットの暗号文とみなした暗号化された数値同士に対して準同型な四則演算を行う、
ことを特徴とする暗号処理装置。 - 請求項4に記載の暗号処理装置において、
前記所定の演算として前記全加算器の演算を行うことにより、入力された前記暗号文を用いたファジー認証又はファジー検索に係る処理を行う、
ことを特徴とする暗号処理装置。 - 請求項4に記載の暗号処理装置において、
前記所定の演算として前記全加算器の演算を行うことによって、入力された前記暗号文に基づく暗号化データベースに対するクエリを処理する、
ことを特徴とする暗号処理装置。 - 請求項1又は2に記載の暗号処理装置において、
前記所定の演算は、AOI21ゲート又はOAI21ゲートと等価な演算である、
ことを特徴とする暗号処理装置。 - プロセッサによって実行される、暗号文を処理する暗号処理方法であって、
前記暗号文は、シンボル0または1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
準同型演算後の平文に付加される誤差の範囲が所定値以内となるように誤差範囲を設定された2以上の前記暗号文に対して準同型演算を行い、前記準同型演算の結果となる暗号文に対して所定の多項式を用いることにより、新たな暗号文を算出し、
前記新たな暗号文の算出として、複数の前記多項式を、互いに共通する共通多項式と共通しない非共通多項式とに夫々因数分解し、
前記準同型演算の結果に対して前記共通多項式を用いて算出した複数の暗号文と、前記非共通多項式と、を用いて前記新たな暗号文を複数算出する、
ことを特徴とする暗号処理方法。 - 暗号文を処理する暗号処理方法をプロセッサに実行させる暗号処理プログラムであって、
前記暗号文は、シンボル0または1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
準同型演算後の平文に付加される誤差の範囲が所定値以内となるように誤差範囲を設定された2以上の前記暗号文に対して準同型演算を行い、前記準同型演算の結果となる暗号文に対して所定の多項式を用いることにより、新たな暗号文を算出し、
前記新たな暗号文の算出において、複数の前記多項式を、互いに共通する共通多項式と共通しない非共通多項式とに夫々因数分解し、
前記準同型演算の結果に対して前記共通多項式を用いて算出した複数の暗号文と、前記非共通多項式と、を用いて前記新たな暗号文を複数算出する、
ことを特徴とする暗号処理プログラム。 - プロセッサによって実行される、暗号文を処理する暗号処理方法であって、
前記暗号文は、シンボル0または1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
準同型演算後の平文に付加される誤差の範囲が所定値以内となるように誤差範囲を設定された2以上の前記暗号文に対して準同型演算を行い、前記準同型演算の結果となる暗号文に対して所定の多項式を用いることにより、新たな暗号文を算出し、
前記暗号文は、当該暗号文を構成する要素として複数の値を有し、
前記新たな暗号文の算出において、前記複数の値を整数とする計算を行う第1の算出処理と、前記多項式を用いて前記新たな暗号文の誤差を低減する第2の算出処理と、を行い、
前記第1の算出処理において計算する整数は、所定の値で割った余りが全て同じであり、前記多項式は、前記所定の値毎に同じとなる複数の係数を有し、
前記複数の係数の夫々を用いて前記新たな暗号文を夫々算出する、
ことを特徴とする暗号処理方法。 - 暗号文を処理する暗号処理方法をプロセッサに実行させる暗号処理プログラムであって、
前記暗号文は、シンボル0または1に対応する所定の値に所定の分散を持つ誤差を与えた値を平文として2値を有し、復号することなく論理演算が可能な完全準同型暗号文であり、
準同型演算後の平文に付加される誤差の範囲が所定値以内となるように誤差範囲を設定された2以上の前記暗号文に対して準同型演算を行い、前記準同型演算の結果となる暗号文に対して所定の多項式を用いることにより、新たな暗号文を算出し、
前記暗号文は、当該暗号文を構成する要素として複数の値を有し、
前記新たな暗号文の算出において、前記複数の値を整数とする計算を行う第1の算出処理と、前記多項式を用いて前記新たな暗号文の誤差を低減する第2の算出処理と、を行い、
前記第1の算出処理において計算する整数は、所定の値で割った余りが全て同じであり、前記多項式は、前記所定の値毎に同じとなる複数の係数を有し、
前記複数の係数の夫々を用いて前記新たな暗号文を夫々算出する、
ことを特徴とする暗号処理プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/013632 WO2022270080A1 (ja) | 2021-06-24 | 2022-03-23 | 暗号処理装置、暗号処理方法、及び暗号処理プログラム |
JP2023036925A JP2023071985A (ja) | 2021-06-24 | 2023-03-09 | 暗号処理装置、暗号処理方法、及び暗号処理プログラム |
US18/539,178 US20240154786A1 (en) | 2021-06-24 | 2023-12-13 | Encryption processing apparatus and encryption processing method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021104977 | 2021-06-24 | ||
JP2021104977 | 2021-06-24 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023036925A Division JP2023071985A (ja) | 2021-06-24 | 2023-03-09 | 暗号処理装置、暗号処理方法、及び暗号処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023004793A JP2023004793A (ja) | 2023-01-17 |
JP7261502B2 true JP7261502B2 (ja) | 2023-04-20 |
Family
ID=85100885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021131702A Active JP7261502B2 (ja) | 2021-06-24 | 2021-08-12 | 暗号処理装置、暗号処理方法、及び暗号処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7261502B2 (ja) |
-
2021
- 2021-08-12 JP JP2021131702A patent/JP7261502B2/ja active Active
Non-Patent Citations (5)
Title |
---|
BIASSE, J.-F. and RUIZ, L.,FHEW with Efficient Multibit Bootstrapping,Lecture Notes in Computer Science,Vol.9230,2015年,pp.119-135 |
CHILLOTTI, I. et al.,TFHE: Fast Fully Homomorphic Encryption over the Torus,Cryptology ePrint Archive,Paper 2018/421 20190402:093245,2019年,pp.1-62,URL:https://eprint.iacr.org/2018/421/20190402:093245 |
DUCAS, L. and MICCIANCIO, D.,FHEW: Bootstrapping Homomorphic Encryption in Less Than a Second,Lecture Notes in Computer Science,Vol.9056,2015年,pp.617-640 |
GORANTALA, S. et al.,A General Purpose Transpiler for Fully Homomorphic Encryption,arXiv,2106.07893v1,[online],2021年06月15日,pp.1-10,URL:https://arxiv.org/abs/2106.07893 |
LEI, X.,Optimizing FHEW With Heterogeneous High-Performance Computing,IEEE Transactions on Industrial Informatics,Vol.16 No.8,2020年, pp.5335-5344 |
Also Published As
Publication number | Publication date |
---|---|
JP2023004793A (ja) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10656996B2 (en) | Integrated security and data redundancy | |
US20240022395A1 (en) | Encryption processing device and encryption processing method | |
WO2023074133A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
WO2023067928A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP7069460B2 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
WO2018008547A1 (ja) | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム | |
JP7261502B2 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
WO2022270080A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP7185346B1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP7187076B1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP2024517800A (ja) | 完全準同型暗号化で使用するためのブラインド回転 | |
WO2022044464A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP7228287B1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP2024013184A (ja) | 暗号処理装置、暗号処理方法、暗号処理プログラム | |
JP2024053392A (ja) | 暗号処理装置、暗号処理方法、暗号処理プログラム | |
US20240187210A1 (en) | Encryption processing apparatus and encryption processing method | |
JP2024012928A (ja) | 暗号処理装置、暗号処理方法、暗号処理プログラム | |
US20240039698A1 (en) | Encryption processing device and encryption processing method | |
Golimblevskaia et al. | Survey software implementations of homomorphic encryption methods | |
WO2023281694A1 (ja) | 秘密計算システム、装置、方法及びプログラム | |
WO2023157117A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
JP3435473B2 (ja) | 暗号化・復号化方法及び装置 | |
JP2009169287A (ja) | 暗号処理装置及び復号処理装置及びプログラム | |
JP2024076063A (ja) | 暗号処理装置、暗号処理方法、暗号処理プログラム | |
JP2021113956A (ja) | 秘匿演算装置、秘匿演算方法及び秘匿演算プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220224 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220628 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220824 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230110 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230309 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230328 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230403 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7261502 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |