IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザマ・エス・ア・エスの特許一覧

<>
  • 特表-ブラインド回転を含む暗号化計算 図1a
  • 特表-ブラインド回転を含む暗号化計算 図1b
  • 特表-ブラインド回転を含む暗号化計算 図1c
  • 特表-ブラインド回転を含む暗号化計算 図2
  • 特表-ブラインド回転を含む暗号化計算 図3
  • 特表-ブラインド回転を含む暗号化計算 図4
  • 特表-ブラインド回転を含む暗号化計算 図5
  • 特表-ブラインド回転を含む暗号化計算 図6
  • 特表-ブラインド回転を含む暗号化計算 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-24
(54)【発明の名称】ブラインド回転を含む暗号化計算
(51)【国際特許分類】
   G09C 1/00 20060101AFI20241217BHJP
【FI】
G09C1/00 620Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024534003
(86)(22)【出願日】2022-11-24
(85)【翻訳文提出日】2024-08-05
(86)【国際出願番号】 EP2022083120
(87)【国際公開番号】W WO2023104531
(87)【国際公開日】2023-06-15
(31)【優先権主張番号】21290080.7
(32)【優先日】2021-12-07
(33)【優先権主張国・地域又は機関】EP
(31)【優先権主張番号】22315182.0
(32)【優先日】2022-08-11
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】523168881
【氏名又は名称】ザマ・エス・ア・エス
(74)【代理人】
【識別番号】110001173
【氏名又は名称】弁理士法人川口國際特許事務所
(72)【発明者】
【氏名】ジョワ,マルク・フランソワ
(72)【発明者】
【氏名】バルター,ミヒャエル
(57)【要約】
いくつかの実施形態は、暗号法的暗号化計算方法(400)を目的とする。方法は、テスト多項式に従って暗号文のブラインド回転を行うことを伴う。ブラインド回転は、テスト多項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするブートストラッピング単項式との暗号化された多項式積を生じ、ブートストラッピング単項式は、平文値を指数として表す。商多項式p(X)は、モジュラスqを法とする数論変換を可能にするNTT多項式X-1を割り切り、例えば、qは2の累乗であり、p(X)=X+XN/2+1である。ブラインド回転は、NTTを使用することによってより効率的になり、テスト多項式は、多項式積がそれぞれの平文値に対する所望の出力値を固定係数として有するようにプログラムされるように定義される。
【特許請求の範囲】
【請求項1】
暗号法的暗号化計算方法(400)であって、
- 平文値を暗号化する暗号文を取得すること(410)と、
- テスト多項式に従って暗号文のブラインド回転を行うこと(420)であって、ブラインド回転が、テスト多項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするブートストラッピング単項式との暗号化された多項式積を生じ、ブートストラッピング単項式が平文値を指数として表す、こと(420)と、
を含み、
商多項式(p(X))が、モジュラス(q)を法とする数論変換を可能にするNTT多項式(X-1)を割り切り、ブラインド回転を行うことが、数論変換を使用して多項式乗算を行うこと(425)を含み、テスト多項式が、多項式積が平文値に対する所望の出力値を固定係数として有するように定義される、方法(400)。
【請求項2】
暗号文が、LWE型暗号文である、請求項1に記載の方法(400)。
【請求項3】
暗号文が、NTRU型暗号文からの変換によって取得される、請求項2に記載の方法(400)。
【請求項4】
暗号文が、NTRU型暗号文である、請求項1に記載の方法(400)。
【請求項5】
入力暗号文を取得することと、暗号文を取得するために入力暗号文に対してモジュラススイッチングを行うことと、ブラインド回転を行うことと、固定係数の暗号化を計算された暗号化された多項式積から抽出するためにサンプル抽出を行うこととによって、プログラマブルブートストラッピングを行うことを含む、請求項1から4のいずれか一項に記載の方法(400)。
【請求項6】
ブラインド回転を行うことが、ブートストラッピング鍵に含まれるガジェット暗号文との暗号文の外部積を計算することを含み、外部積を計算する多項式乗算が数論変換を使用して行われる、請求項1から5のいずれか一項に記載の方法(400)。
【請求項7】
商多項式が、X+1に等しくない、請求項1から6のいずれか一項に記載の方法(400)。
【請求項8】
商多項式の次数(N)が、NTT多項式の次数(M)の半分より厳密に大きい、請求項1から7のいずれか一項に記載の方法(400)。
【請求項9】
モジュラス(q)が、2の累乗である、請求項1から8のいずれか一項に記載の方法(400)。
【請求項10】
モジュラス(q)が素数であり、NTT多項式の次数(M)がモジュラスから1を引いた値を割り切る、請求項1から8のいずれか一項に記載の方法(400)。
【請求項11】
モジュラスが、10・318+1または4・339+1に等しい、請求項10に記載の方法(400)。
【請求項12】
商多項式が、X+XN/2+1またはX-XN/2+1に等しい、請求項1から11のいずれか一項に記載の方法(400)。
【請求項13】
NTT多項式の次数が3の累乗であり、商多項式の次数がNTT多項式の次数の3分の2である、請求項1から12のいずれか一項に記載の方法(400)。
【請求項14】
固定係数が、定数係数または主係数である、請求項1から13のいずれか一項に記載の方法(400)。
【請求項15】
請求項1から14のいずれか一項に記載の暗号化計算方法において使用するテスト多項式を決定する方法(500)であって、暗号化計算方法が、ブートストラッピング単項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするテスト多項式との多項式積を計算することであって、商多項式(p(X))が、NTT多項式を割り切る、ことを含み、方法が、
- それぞれの平文値に対する所望の出力値を定義するルックアップテーブルを取得すること(510)と、
- モジュラス、商多項式、およびNTT多項式を取得すること(520)と、
- 多項式積がそれぞれの所望の出力値をそれぞれの平文値に対する固定係数として有するように、テスト多項式を計算すること(530)と
を含む、方法(500)。
【請求項16】
暗号化計算デバイス(110、112)であって、
- 平文値を暗号化した暗号文を記憶するためのストレージ(140)、
- テスト多項式に従って暗号文のブラインド回転を行うように構成されるプロセッササブシステム(130)であって、ブラインド回転が、テスト多項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするブートストラッピング単項式との暗号化された多項式積を生じ、ブートストラッピング単項式が平文値を指数として表す、プロセッササブシステム(130)
を備え、
商多項式(p(X))が、モジュラス(q)を法とする数論変換を可能にするNTT多項式(X-1)を割り切り、ブラインド回転を行うことが、数論変換を使用して多項式乗算を行うことを含み、テスト多項式が、多項式積が平文値に対する所望の出力値を固定係数として有するように定義される、暗号化計算デバイス(110、112)。
【請求項17】
請求項1から14のいずれか一項に記載の暗号化計算方法において使用するテスト多項式を決定するためのデバイス(111、112、113、119)であって、暗号化計算方法が、ブートストラッピング単項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするテスト多項式との多項式積を計算することであって、商多項式(p(X))がNTT多項式を割り切る、ことを含み、デバイスが、
- それぞれの平文値に対する所望の出力値を定義するルックアップテーブルを記憶するストレージ(149)、
- プロセッササブシステム(139)であって、
- モジュラス、商多項式、およびNTT多項式を取得し、
- 多項式積がそれぞれの所望の出力値をそれぞれの平文値に対する固定係数として有するように、テスト多項式を計算する
ように構成される、プロセッササブシステム(139)
を備える、デバイス(111、112、113、119)。
【請求項18】
一時的または非一時的コンピュータ可読記憶媒体(1000)であって、
- プロセッサシステムによって実行されると、プロセッサシステムに請求項1から14のいずれか一項に記載の方法を行わせる、および/または請求項15に記載の方法を行わせる命令、および/または、
- 請求項1から14のいずれか一項に記載の暗号化計算方法において使用するテスト多項式
を表すデータを含む、一時的または非一時的コンピュータ可読記憶媒体(1000)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の主題は、暗号法的暗号化計算方法、テスト多項式を決定する方法、対応するデバイス、およびコンピュータ可読媒体に関する。
【背景技術】
【0002】
準同型暗号法は、暗号化計算:ある当事者によって暗号化されたデータで、その当事者が復号できないデータに対して行われる計算、例えば回路評価を行うことを可能にする。例えば、入力データおよび計算結果は、暗号化された形式で受信され返され得る。中間データ、例えば計算の内部状態も、暗号化された形式であり得る。
【0003】
計算結果が暗号化された形式で返されるにもかかわらず、復号時の出力は、演算が暗号化されていないデータに対して行われた場合と同じかまたは非常に近いことが期待される。準同型暗号化は、プライバシー保護するアウトソーシング型のストレージおよび計算に使用され得る。これは、データが暗号化され、暗号化されている間は全て、処理および/またはストレージについてクラウド環境にアウトソーシングされることを可能にする。
【0004】
例えば、準同型暗号法は、プライバシー規定がプレーンデータを共有することを困難にする場合があるヘルスケアなどの分野で適用されることがあるが、暗号化された医療データに対する計算は許容され得る。例えば、医療データを例えば分類するために展開される医療モデルは、第三者、例えば病院から、医療データを暗号化された形式で受信するように構成され得る。医療モデルは、例えば、正常もしくは異常として、または何らかの特定の医療症候群、疾患、もしくはその他の障害を有するとして、例えば医療データを分類し得る。準同型暗号化を使用すると、医療モデルは、暗号化された形式で受信された医療データに適用され得る。これは、医療モデルを提供する当事者が、暗号化された医療データに対応するプレーンな医療データにアクセスできないことを意味する。サービスのユーザは、医療モデル適用の結果を復号し得る。
【0005】
特に、少なくとも原理的に、暗号化されたデータに対して任意の関数を計算するために使用され得る準同型暗号法技術が存在する。そのような技術は、「完全準同型暗号化」(FHE)技術と呼ばれる。
【0006】
FHEの知られている実装形態は、セキュリティの理由からノイジーな暗号文を使用する。例えば、データアイテムの暗号化は、鍵依存格子内の点にデータアイテムをマッピングすることを含んでもよく、その点にノイズが追加される。特に、FHEの多くの知られている実装形態は、LWE型暗号文を使用しており、そのセキュリティは、エラーを伴う学習(Learning With Errors)問題の暗号の強度に依存する。そのようなLWE型暗号文は、1つ以上のマスク値(例えば、あるモジュラス(modulus)qを法とする値、またはトーラス要素)に加えて、マスク値から導出され暗号鍵を使用して平文(plaintext)から導出され、ノイズを含むボディ(body)値を含み得る。この変形がGLWE型暗号文であり、スカラー値の代わりに多項式を暗号化して使用する。FHEの他の知られている実装形態は、NTRU型暗号文を使用しており、それには同じ考察の大部分が当てはまる。
【0007】
データアイテムが暗号化されたばかりのとき、ノイズは低く、暗号化はフレッシュである。例えば、データアイテムが復号される場合に、復号プロセスのある時点でのノイズは、例えば丸めることによって除去され得るほど量が少ない。一方、ノイズは、システムに対する攻撃を十分困難にするほど高くあるべきである。例えば、仮にノイズがない場合、多くの準同型暗号化方式は、線形代数、または他の効率的アルゴリズム、例えば格子簡約(lattice reduction)アルゴリズムで攻撃される場合がある。データアイテムが暗号化されるとき、準同型演算がやはり行われることができ、復号が依然として可能である一方で、攻撃が困難であるように選択されたノイズが追加される。
【0008】
大抵の準同型演算は、準同型暗号化されたデータアイテムに固有のノイズを増加させる。多くのそのような演算が行われるとき、ノイズが、一意な復号がもはや可能でなくなるようなレベルに達することがある。一般に、準同型暗号化された値のノイズを低減させるために、ブートストラッピングと呼ばれる技術を使用することが知られている。ブートストラッピングは、ブートストラッピング鍵と呼ばれる公開鍵を使用し得る。必要な場合にブートストラッピングを使用してノイズを低減させることによって、原理的には任意の所望の数の準同型演算を計算することが可能である。
【0009】
特定のクラスの完全準同型暗号化方式が、TFHEに類似の準同型暗号化方式である。そのような方式が、I.Chillottiら、「Programmable bootstrapping enables efficient homomorphic inference of deep neural networks」、Cyber Security Cryptography and Machine Learning(CSCML 2021)、vol.12716 of Lecture Notes in Computer Science、1-19頁、Springer、2021年(引用により本明細書に組み込まれる)に記載されている。TFHEに類似の方式は、ブートストラッピングのための比較的非常に効率的な技術をサポートすることによって、他のFHE方式とは差別化され;加えて、それらは同時にブートストラップ演算中に関数を評価することを可能にし、これはプログラマブルブートストラッピング(programmable bootstrapping)と呼ばれる。通常の(regular)ブートストラッピングは、恒等関数を用いたプログラマブルブートストラッピングに対応する。
【0010】
このプログラマブルブートストラッピング技術は、いわゆるブラインド回転(blind rotation)を行うことによって、暗号文(例えば、LWE型暗号文)中のノイズを低減させ得る。ブラインド回転は、その係数
【数1】
のそれぞれが、スケールされた平文値iに対応する所望の出力値を符号化するように定義されたテスト多項式
【数2】
を使用し得る。ブラインド回転は、暗号化されたブートストラッピング単項式(例えば、GLWE暗号化された)の指数の復号(例えば、LWE復号)を準同型的に評価することを含んでもよく、テスト多項式
【数3】
とブートストラッピング単項式
【数4】
との暗号化された(例えば、GLWE暗号化された)多項式積
【数5】
を結果として生じる。結果として得られた多項式積は、モジュラスq=2Ωおよび多項式X+1を法として定義された暗号文として暗号化される。ここで、Nは、2の累乗である。スケールされた平文値の最上位ビットが0に設定されることが保証され得る。この場合、多項式積
【数6】
は、その定数係数として
【数7】
に対する所望の出力値を有する。これは、暗号化が商多項式X+1を法として定義されるためである。即ち、商多項式X+1のこの特定の選択により、恒等式X=-Xk+Nが成り立ち、それによって
【数8】
である。係数は、その後所望の出力値の暗号化を取得するために抽出され得る。
【0011】
興味深いことに、ブラインド回転の出力は、入力暗号文中のノイズとは無関係のある量のノイズを有する。したがって、ブラインド回転を含むプログラマブルブートストラッピングを行うことによって、可能な限り同時に関数を入力暗号文に適用しながら、入力暗号文中のノイズが固定量まで低減され得る。適切なときにプログラマブルブートストラッピングを行うことによって、乗算の複雑度が無制限の暗号化計算を行うことが可能である。
【0012】
知られているプログラマブルブートストラッピング、および特にそのブラインド回転には、いくつかの制限がある。第1に、ブラインド回転は、典型的には、スケールされた平文値の最上位ビットが0に設定されていることを必要とし、言い換えると、値がプログラムされ得る平文の比率は、1/2でしかない。第2に、知られているブラインド回転は、モジュラスq=2Ωおよび多項式X+1を法とする多数の多項式乗算を計算することを必要とし、ここでNは2の累乗である。そのような多項式乗算は、計算コストが高く、ブラインド回転を行うこと、したがってプログラマブルブートストラッピングを行うことは、やはり比較的計算コストが高くなる。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】欧州特許出願公開第21290025号明細書
【非特許文献】
【0014】
【非特許文献1】I.Chillottiら、「Programmable bootstrapping enables efficient homomorphic inference of deep neural networks」、Cyber Security Cryptography and Machine Learning(CSCML 2021)、vol.12716 of Lecture Notes in Computer Science、1-19頁、Springer、2021年
【非特許文献2】J.von zur GathenおよびJ.Gerhard、「Modern Computer Algebra」、Cambridge University Press、第3版、2013年、第8章
【非特許文献3】D.J.Bernstein、「Multidigit multiplication for mathematicians」、Unpublished manuscript、https://cr.yp.to/papers.html#m3において入手可能、2001年8月
【非特許文献4】C.Bonteら、「FINAL:Faster FHE instantiated with NTRU and LWE」、https://ia.cr/2022/074
【非特許文献5】K.Kluczniak、「NTRU-ν-um:Secure Fully Homomorphic Encryption from NTRU with Small Modulus」、https://ia.cr/2022/089
【非特許文献6】R.Rothblum、「Homomorphic encryption:From private-key to public-key」、Theory of Cryptography(TCC 2011)、Lecture Notes in Computer Scienceのvol.6597、219-234頁、Springer、2011年
【非特許文献7】M.Albrechtら、「On the concrete hardness of Learning with Errors」、Journal of Mathematical Cryptology、9(3):169-203頁、2015年
【非特許文献8】I.Chillottiら、「CONCRETE:Concrete Operates oN Ciphertexts Rapidly by Extending TfhE」(https://homomorphicencryption.org/wp-content/uploads/2020/12/wahc20_demo_damien.pdfにおいて入手可能)
【非特許文献9】H.Nussbaumer、「Fast polynomial transform algorithms for digital convolution」、IEEE Transactions on Acoustics,Speech,and Signal Processing、28(2):205-215頁、1980年
【発明の概要】
【課題を解決するための手段】
【0015】
発明の一態様によれば、特許請求の範囲によって定義されるように、暗号法的暗号化計算方法が提供される。発明のさらなる態様によれば、特許請求の範囲によって定義されるように、そのような暗号化計算方法において使用するためのテスト多項式を決定する方法が提供される。さらなる態様によれば、特許請求の範囲によって定義されるように、これらのコンピュータ実装される方法に対応するデバイスが提供される。別の態様によれば、特許請求の範囲によって定義されるように、コンピュータ可読媒体が提供される。
【0016】
暗号化計算は、例えばプログラマブルブートストラッピングの一部として、暗号文、例えばLWE型暗号文のブラインド回転を行うことを含み得る。暗号文は、ある平文
【数9】
、例えば元の平文
【数10】
のスケーリングを暗号化し得る。ブラインド回転は、多項式環において、テスト多項式
【数11】
と、平文値を指数として表すブートストラッピング単項式、例えば
【数12】
との暗号化された多項式積、例えば
【数13】
を計算し得る。
【0017】
ブラインド回転は、多項式環におけるいくつかの多項式積を計算することを含み得る。先行技術では、この多項式環は、モジュラスqおよび商多項式X+1を法とする環
【数14】
であり、ここで、qおよびNは、いずれも2の累乗である。発明者は、多項式積はブラインド回転の主要部分であるため、ブラインド回転において多項式積を計算するためにより効率的な技術を使用することが有益であることを認識した。
【0018】
多項式環において効率的な乗算を行うためのそれ自体知られている技術が、数論変換(number-theoretic transform)(NTT)である。NTTを使用して多項式乗算を行うために、多項式は、NTTのいわゆるフーリエドメイン表現で表され得る。典型的には、多項式のフーリエドメイン表現は、いくつかのそれぞれの評価点における多項式のいくつかのそれぞれの評価を含む。フーリエドメイン表現のときに、多項式は、例えば評価の点ごとの乗算によって、効率的に乗算され得る。さらに、NTTを使用すると、多項式のフーリエドメイン表現をその係数表現から(数論変換自体を適用することによって)効率的に計算すること、および係数表現をフーリエドメイン表現から(逆数論変換を使用して)効率的に計算することが可能である。様々な数論変換は、それ自体知られており、例えば、J.von zur GathenおよびJ.Gerhard、「Modern Computer Algebra」、Cambridge University Press、第3版、2013年、第8章(DFTの説明に関する限り、引用により本明細書に組み込まれる)に開示された(その標準形で、n|q-1である商多項式X-1および素数冪モジュラスqについて定義された)離散フーリエ変換や、例えば、D.J.Bernstein、「Multidigit multiplication for mathematicians」、Unpublished manuscript、https://cr.yp.to/papers.html#m3において入手可能、2001年8月(ショーンハーゲ(Schonhage)およびヌスバウマー(Nussbaumer)のアルゴリズムの説明に関する限り、引用により本明細書に組み込まれる)に開示されたショーンハーゲのアルゴリズムおよびヌスバウマーのアルゴリズムを含む。
【0019】
このように、「数論変換を使用して」多項式乗算を行うことは、一般に、任意選択で、NTTおよび/またはその逆を使用して、このフーリエドメイン表現から多項式に、および多項式からフーリエドメイン表現に変換する。ことと組み合わせて、数論変換のフーリエドメインにおける多項式乗算を行うことを指してもよい。
【0020】
残念ながら、先行技術のブラインド回転自体は、数論変換を適用することではより効率的にはならない。効率性の理由から、先行技術は、モジュラスq=2Ω、例えば、q=232またはq=264を使用する。同時に、商多項式X+1が使用され、何故ならこれは、X=-Xk+Nの関係が多項式環において成り立つことを意味するからであり、これは、先行技術のブラインド回転を機能させるのに必要である。しかしながら、これらのパラメータでは、数論変換を適用することは不可能であり、何故ならこれは、X+1は、多項式X-1を割り切ることを必要とするからであり、ここでMはqと互いに素である。先行技術で使用されるパラメータでは、Nおよびqの両方が2の累乗であるため、Nの倍数はqと互いに素になることができない。
【0021】
さらに、先行技術を使用すると、使用される多項式環のパラメータを単に変更することでは数論変換によって提供される改善された性能から完全に恩恵を受けることができない。上述の通り、X=-Xk+Nの関係から商多項式X+1が必要とされる。モジュラスq=2Ωは、効率的なモジュラ演算を可能にする。
【0022】
興味深いことに発明者は、数論変換と両立し得るブラインド回転を行う方法を発見した。発明者は、テスト多項式との乗算を機能させるためにX=-Xk+Nの関係に依存する必要は必ずしもないことに気付いた。その代わりに、あるモジュラスおよびある商多項式が与えられると、テスト多項式とある平文値のためのブートストラッピング単項式との乗算が、その平文値に対する所望の出力値を固定係数として有するように、テスト多項式を定義することが可能である。そのような場合、先行技術においてそうであったように、テスト多項式の各係数がそれぞれの所望の出力値に対応することはもはやなく、例えば、テスト多項式は、
【数15】
と異なる。それでも、ブラインド回転においてそのようなテスト多項式を使用することによって暗号化された多項式を得ることができ、その多項式から固定係数を抽出することにより所望の出力値が抽出され得る。
【0023】
この改善されたテスト多項式を使用することによって、数論変換が適用される多項式環においてブラインド回転を行うことが可能となる。具体的には、多項式環は、例えば2の累乗であり得るモジュラスqによって、および例えばX+1とは異なる商多項式p(X)によって、定義され得る。ここで、商多項式は、NTT多項式、即ち、モジュラスqを法とする数論変換を可能にする多項式を割り切り得る。典型的には、これは、NTT多項式がX-1に等しく、Mがqと互いに素であることを意味する。そのようなモジュラスおよびそのような商多項式が与えられると、商多項式を法とする多項式乗算は、数論変換のフーリエドメインにおける多項式乗算として、例えばNTT多項式を法とする多項式乗算として実施され得る。実際に、NTT多項式を法とする多項式乗算を計算すること、および商多項式を法とする結果を低減させることは、商多項式を法とする乗算を行うことと同じ結果を与え、例えば、a(X)b(X) mod p(X)=(a(X)b(X) mod (X-1)) mod p(X)であり得る。
【0024】
したがって、ブラインド回転は、モジュラスqを法とし、およびNTT多項式を割り切る商多項式p(X)を法として行われてもよく、それに応じて、ブラインド回転の多項式乗算は、数論変換を使用して実施され得る。このようにして、ブラインド回転の効率性が、知られているブラインド回転と比較して改善される。さらに、モジュラスおよび商多項式を法とする多項式乗算が、暗号化計算の他の演算、例えば、プログラマブルブートストラッピングの一部として任意選択で行われ得るキースイッチングにおいても同様に発生し得るため、これらの他の演算も数論変換を使用することができ、それによって、より効率的にされ得る。
【0025】
実施形態では、モジュラスは2の累乗であり、例えば、モジュラスは、232、264、または2128に等しくてもよい。よって、計算は、環
【数16】
上で行われてもよく、ここでqは2の累乗である。そのようなモジュラスは、例えば、CPUのネイティブ命令を使用して、モジュラ演算(例えば、加算および/または乗算)が特に効率的に実施されることを可能にし得る。2の累乗モジュラスは、モジュラスの特定の例であり、それに対して、商多項式X+1を法とする知られているブラインド回転は、数論変換を用いて実施できない。これは、X-1=(X+1)(X-1)の次数は偶数であり、よってqと互いに素ではないためである。異なる商多項式、例えばX+XN/2+1を本明細書で説明されたテスト多項式と組み合わせて使用することによって、興味深いことに、NTTはそのようなqと共に使用され得る。
【0026】
実施形態では、NTT多項式は、整数MについてのX-1に等しい。Mは、2の累乗であってもよく、または、例えば2の累乗および/もしくは3の累乗の積であってもよい。そのようなMの値に対して、効率的な数論変換が知られている。商多項式p(X)は、X+1、N=M/2に等しくない場合がある。この場合、X=-Xk+Nの関係は成り立たないが、有利なことに、本明細書で説明されるテスト多項式を使用することによって、依然としてNTTが使用されることが可能である。例えば、商多項式p(X)は、X+1に等しくない円分多項式であってもよいが、円分多項式に等しくない商多項式を使用することも可能である。
【0027】
実施形態では、商多項式の次数Nは、NTT多項式の次数Mの半分より厳密に大きい。例えば、商多項式は、X+XN/2+1またはX-XN/2+1に等しくてもよく、NTT多項式は、M=3N/2の場合のX-1に等しい。これは、それによってブラインド回転、結果として、ブラインド回転がその一部であり得るプログラマブルブートストラッピングも、より広範囲の平文値に対して機能することを可能にするので、特に有利である。
【0028】
具体的には、ブラインド回転が適用される暗号文は、典型的には、NTT多項式の次数Mを法として定義され、例えば、平文は、M個の可能な値をとり得る。例えば、暗号文は、入力暗号文がNTT多項式の次数Mにスケールされるブラインド回転によって取得され得る。ブラインド回転は、これらのM個の可能な値の中からNについての所望の出力値を提供することが可能であり得る。これは、何故なら、ブラインド回転が商多項式を法とする多項式乗算に基づいており、商多項式は次数Nを有するからである。例えば、先行技術では、M=2Nで、ブラインド回転は、典型的には、入力平文の最上位ビットが設定されていないことを仮定する。
【0029】
M/2より厳密に大きい次数Nを選択することによって、2分の1より大きな平文の割合がブラインド回転によってプログラムされ得る。例えば、商多項式X±XN/2+1(例えば、Nは、2×(3の累乗)または4×(3の累乗)である)は、プログラマブル暗号文の割合を2分の1から3分の2まで増加することを可能にする。したがって、ブラインド回転およびプログラマブルブートストラッピングは、より広範囲の入力暗号文に対して機能し得る。例えば、暗号化計算において入力平文の最上位ビットが設定されていないことを保証するために必要な追加の演算が回避されてもよく、それによって、暗号化計算がより効率的になる。
【0030】
実施形態では、NTT多項式の次数は、2の累乗および/または3の累乗の積である。このような場合、数論変換は特に効率的であり、数論変換を使用するのは特に有利になる。例えば、NTT多項式の次数は、2の累乗であり得る。これは特に効率的である。NTT多項式の次数は、3の累乗でもあってもよく、これは、商多項式p(X)の次数がNTT多項式の次数の3分の2に設定され、例えば、p(X)=X+XN/2+1がNTT多項式X3N/2-1を割り切り、大きな割合の平文値がプログラムされることを可能にし得るので有利である。
【0031】
実施形態では、モジュラスqが素数であり、NTT多項式の次数Mは、モジュラスから1を引いた値を割り切る。この場合、qを法とする整数の体は、1の原始M乗根を含み、離散フーリエ変換などの特に効率的なNTT技術が使用されることを可能にする。モジュラスqに応じて、モジュラ演算も効率的に実施され得、例えば、231<q=10・318+1<232または263<q=4・339+1<264を法とする計算は、32ビット、64ビット、および/または128ビット演算を比較的効率的に使用して実施されてもよく、それらは共通データ型に合致するので都合がよい。
【0032】
実施形態では、商多項式は、X+XN/2+1またはX-XN/2+1に等しい。他の箇所でも説明するように、この商多項式の選択は、比較的大きな割合の平文値がプログラムされることを可能にするので、有利である。さらに、商多項式のこの選択について、所望の出力値の所与のセットについてのテスト多項式を特に効率的に決定することが可能である。特に、本明細書で説明されるように、テスト多項式の各係数は、多くとも2つの所望の出力値から、特に、2つの所望の出力値が打ち消される可能性がある合計として、計算され得る。さらに、興味深いことに、所望の出力値が、任意の固定係数において効率的にプログラムされ得、例えば、係数が、主係数および定数係数とは異なり得る。これは、係数を抽出する前にブラインド回転の結果として生じる暗号化された多項式にさらなる演算が適用される、暗号化計算のさらなる演算に有益であり得る。
【0033】
テスト多項式は、それぞれの平文値に対する所望の出力値を定義するルックアップテーブルに基づいて決定され得る。発明者は、モジュラス、商多項式p(X)、およびNTT多項式が与えられると、一般に、所与のルックアップテーブルに適したテスト多項式を決定することが可能であることに気付いた。特に、発明者は、MについてのX-1を割り切る商多項式p(X)について、多項式Xの逆X-1がR[X]/(p(X))に存在し、Rにおける係数を有する次数<Nの多項式として表され得ることに気付いた。これは、所与の多項式
【数17】
について、R[X]/(p(X))の要素として以下の関係:
【数18】
を導出することを可能にする。ここでν=0である。事実上、テスト多項式ν(X)を単項式X-1と乗算することは、ν(X)の定数項のスケールされたバージョンを他の係数に加算することおよびシフトすることに対応し得る。この関係に基づいて、ブラインド回転の一部である、テスト多項式と平文値を表す単項式との暗号化された多項式積の表現を取得することが可能である。そのような表現が取得され得るという事実から、それぞれの平文値に対する所望の出力値を有するテスト多項式を決定することが可能であるということになる。特に、固定係数が定数係数または主係数である場合について、および商多項式がX+XN/2+1またはX-XN/2+1に等しい場合について、詳細な例が本明細書において与えられる。これらの場合、テスト多項式が特に効率的に計算され得る。
【0034】
実施形態では、固定係数は、定数係数または主係数である。この場合、それぞれの所望の出力値からテスト多項式のそれぞれの係数を計算することによって、所与のルックアップテーブルに対して特に効率的にテスト多項式を決定することが可能であり、例えば、テスト多項式の係数は、
【数19】
または
【数20】
およびνN-1=Kとして計算されてもよく、ここで、νは、平文値iについての係数であり、pは、商多項式のk番目の係数であり、Kは、平文値jについての所望の出力値である。
【0035】
実施形態では、ブラインド回転が適用される暗号文は、LWE型暗号文であり得る。例えば、ブラインド回転は、(例えば、NTRU型暗号文を含まない)LWE型暗号文に対して実行されている暗号化計算の一部であり得る。または、LWE型暗号文は、例えば、NTRU型暗号文に対して実行される暗号化計算の一部として、NTRU型暗号文からの変換によって取得されてもよい。LWEへの変換なしで、ブラインド回転をNTRU型暗号文に直接適用することも可能である。さらに一般的には、暗号文は、セキュリティが格子問題の暗号の強度に依存する格子型暗号文であってもよく、LWEおよびNTRUは、その例のうちの2つである。
【0036】
実施形態では、ブラインド回転を行うことは、ガジェット暗号文との暗号文の1つ以上の外部積(external product)を計算することを含み得る。そのようなガジェット暗号文は、ガジェット行列に基づいて定義される複数の構成暗号文を含み得る。LWE/GLWEの設定では、ガジェット暗号文は、GGSW型暗号文であってもよい。NTRUの設定では、ガジェット暗号化は、NGS暗号化またはガジェットNTRUとも呼ばれる。ガジェット暗号文は、ブートストラッピング鍵に含まれてもよく、例えば、ブラインド回転が適用される暗号文を復号する復号鍵のビットなどの数字(digit)を表し得る。そのような外部積の計算は、典型的には、モジュラスおよび商多項式を法とする著しい量の多項式乗算を伴う。提供される技術を使用することによって、これらの多項式乗算は、数論変換を使用して実行されてもよく、それによって、著しい効率改善につながる。
【0037】
実施形態では、暗号化計算方法は、プログラマブルブートストラッピングを行うことを含み得る。モジュラススイッチングは、さらなる暗号文、例えば、LWE型暗号文を取得するために入力暗号文に適用され得る。このことは、それ自体知られているように、入力暗号文をNTT多項式の次数にスケールすることを伴い得る。ブラインド回転は、このさらなる暗号文に対して行われ得る。ブラインド回転の後にサンプル抽出が行われてもよく、サンプル抽出において、ブラインド回転によって計算された多項式積から固定係数の暗号化が抽出される。サンプル抽出の後に任意選択でキースイッチングが行われてもよい。特に、暗号化計算方法は、「TFHEに類似の」暗号化計算方法であってもよく、プログラマブルブートストラッピングは、そのコア演算である。これが伴うブラインド回転を改善することが、この設定での重要な効率性改善をもたらす。
【0038】
一般に、追加の演算がプログラマブルブートストラッピングの各ステップの間において可能であり、それらの演算は、例えば、いくつかのモジュラススイッチングされた暗号文が共に加算され得ること;いくつかのブラインド回転の出力がサンプル抽出を行う前に加えられ得ること;などである。様々なそのような演算は、例えば、商多項式を法とする、またはNTT多項式を割り切る他の多項式を法とする多項式乗算を含み得る。特に、ブラインド回転の出力は、サンプル抽出を行う前に追加の多項式乗算が適用され得る商多項式を法とする多項式を含み得る。そのような場合、本明細書で説明したようなブラインド回転を使用することは、NTTがそのような追加の多項式乗算に対して使用されることも可能にし、プログラマブルブートストラッピングの効率性をさらに改善する。
【0039】
実施形態では、数論変換を使用してブラインド回転を行うとき、係数表現ではなく数論変換のフーリエドメイン表現で取得される、ブートストラッピング鍵の多項式が使用され得る。そのとき、ブラインド回転は、ブートストラッピング鍵のこれらの多項式を係数表現からフーリエドメイン表現へ変換することを含まない。例えば、多項式は、別の関係者から受信されてもよく、またはフーリエドメイン表現のストレージからアクセスされてもよい。変換は事前に行われ得るので、これによってブラインド回転が特に効率的になる。ブートストラッピング鍵は、典型的には一度生成されてその後何度も使用されるので、ブートストラッピング鍵のフーリエドメイン表現を決定することは、ブートストラッピング鍵を使用するときよりもブートストラッピング鍵を生成するときに決定するのがはるかにより効率的である。
【0040】
暗号化計算は、「TFHEに類似の」暗号化計算であってもよい。このようなTFHEに類似の暗号化計算は、プログラマブルブートストラッピング演算の使用によって特徴付けられ、暗号化された多項式積は、平文値を指数として表すブートストラッピング単項式およびテスト多項式から計算される。言い換えると、プログラマブルブートストラッピングは、暗号化単項式の指数における暗号文の復号を評価することを伴い得る。この評価は、例えば、GGSW型暗号文、NGS暗号文、またはガジェットNTRU暗号文などのブートストラッピング鍵のガジェット暗号文との外部積を使用して計算され得る。そのようなガジェット暗号文は、複数の構成暗号文(例えば、GGSWの場合のGLWEに類似の暗号文)を含んでもよく、外部積の計算は、ガジェット暗号文のそれぞれの構成暗号文とそれぞれの多項式とを乗算することを伴ってもよい。このプログラマブルブートストラッピングは、本明細書で説明するように、受け入れられる入力平文に関して、より効率的および/またはよりフレキシブルに行われる。
【0041】
暗号化されたデータに対する計算改善のために提供される技術は、幅広い実践的用途に適用され得る。そのような実践的用途は、プレーンデータにアクセスできることなしでの、ソフトウェアプログラムの暗号化された評価を含む。例えば、前記の医療データに実際にアクセスできなくても、医療データに対して医療診断ソフトウェアを評価し得る。医療データは医療画像を含み得る。医療画像は、標準X線撮像、コンピュータ断層撮影(CT)、磁気共鳴画像化(MRI)、超音波(US)、ポジトロン放出断層撮影(PET)、単一光子放射断層撮影(SPECT)、および核医学(NM)など、これらに限定されない様々な取得モダリティによって取得された例えば多次元画像データ、例えば、2次元(2D)、3次元(3D)、または4次元(4D)画像を含み得る。
【0042】
実施形態では、提供される技術が、暗号化された入力に対してニューラルネットワークを評価するために使用され得る。ニューラルネットワークを評価する関係者は、例えば、重みおよびバイアスなどのニューラルネットワークの訓練済みパラメータへの平文アクセスができるかもしれないし、またはできないかもしれない。一般に、本明細書で提供される技術、例えば、改善された多項式乗算、プログラマブルブートストッラッピング、および外部積は、ニューラルネットワークの評価の効率を改善し、および/または使用された暗号文もしくは鍵材料についてのストレージおよび伝送要件を低減させる。
【0043】
方法の実施形態は、コンピュータ実装される方法として、または専用ハードウェアにおいて、またはその両方の組合せで、コンピュータ上で実施され得る。方法の実施形態のための実行可能コードは、コンピュータプログラム製品上に記憶され得る。コンピュータプログラム製品の例は、メモリデバイス、光学ストレージデバイス、集積回路、サーバ、オフラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、前記プログラム製品がコンピュータ上で実行されるときに方法の実施形態を行うためにコンピュータ可読媒体に記憶された非一時的プログラムコードを含む。
【0044】
実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行されるときに方法の実施形態のステップの全てまたは一部を行うように構成されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上で具現化される。
【0045】
さらなる詳細、態様、および実施形態が、単なる例として図面を参照して説明される。図面中の要素は、簡潔で明確にするために例示され、必ずしも縮尺通りに描かれていない。図面では、既に説明された要素に対応する要素は、同一の参照番号を有し得る。
【図面の簡単な説明】
【0046】
図1a】暗号化計算デバイスの実施形態の例を概略的に示す図である。
図1b】暗号化計算において使用するテスト多項式を決定するためのデバイスの実施形態の例を概略的に示す図である。
図1c】暗号化計算システムの実施形態の例を概略的に示す図である。
図2】プログラマブルブートストラッピングユニットの実施形態の例を概略的に示す図である。
図3】累算ユニットの実施形態の例を概略的に示す図である。
図4】暗号化計算方法の実施形態の例を概略的に示す図である。
図5】暗号化計算において使用するテスト多項式を決定する方法の実施形態の例を概略的に示す図である。
図6】実施形態による、コンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す図である。
図7】実施形態による、プロセッサシステムの表現を概略的に示す図である。
【発明を実施するための形態】
【0047】
本開示の主題は、多くの異なる形式の実施形態が可能であるが、本開示が、本開示の主題の原理の例示と見なされるべきであり、図示および説明される特定の実施形態にそれを限定することを意図するものではない、という理解の下で、1つ以上の特定の実施形態について図面に示され本明細書に詳細に説明されている。
【0048】
以下では、理解のために、実施形態の要素が動作で説明されている。しかしながら、それぞれの要素が、それらによって行われると説明されている機能を行うように構成されることは明らかである。
【0049】
さらに、本開示の主題は、実施形態のみに限定されないが、本明細書で説明された、または相互に異なる従属項に列挙された特徴のあらゆる他の組合せも含む。
【0050】
一般に、様々な実施形態は、LWE(誤りを伴う学習:Learning With Errors)型暗号文に関する。特に、プログラマブルブートストラッピングは、入力として平文値を暗号化するLWE型入力暗号文を取得し、平文に対する所望の出力値を暗号化するLWE型出力暗号文を出力し得る。LWE型暗号文は、1つ以上のマスク値と、マスク値および平文値から導出されるボディ値とを含み得る。
【0051】
LWE型入力および出力暗号文は、モジュラスqを法として定義され得る。「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」に開示されているように、LWE型暗号文の値は、離散化されたトーラス
【数21】
の要素、または等価的に、qを法とする整数と見なされ得る。具体例として、秘密鍵
【数22】
の下で、平文値
【数23】
を暗号化したLWE型暗号文
【数24】
は、ランダムなマスク値
【数25】
および、ランダムノイズ値eについてのμ=μ+eを伴うボディ値
【数26】
として計算され得る。上記の例では、
【数27】
は、2進数セット
【数28】
を示す。他の変形が存在し、例えば、秘密鍵は、必ずしもビットを含む必要はない。例えば、欧州特許出願EP21290025(引用により本明細書に組み込まれる)を参照されたい。
【0052】
本明細書で説明されるブラインド回転が適用されるLWE型暗号文は、典型的には、ブラインド回転で使用されるNTT多項式の次数に等しいモジュラスMを法として定義されることに留意されたい。例えば、この暗号文は、モジュラススイッチングを行って、さらなるモジュラスq(例えば、ブラインド回転で使用される多項式の係数のモジュラスに対応する)を法とするLWE型入力暗号文をこのモジュラスMにスケールすることによって取得され得る。
【0053】
様々な実施形態は、GLWE(Generalized Learning With Error)型暗号文にも関する。GLWE型暗号文は、1つ以上のマスク多項式と、マスク多項式および平文多項式から導出されるボディ多項式とを含み得る。GLWE型暗号文は、モジュラスqおよび、例えば1より大きな次数の商多項式p(X)を法として定義され得る。例えば、
【数29】
とする。秘密鍵
【数30】
について、平文
【数31】
を暗号化したGLWE型暗号文
【数32】
は、マスク多項式
【数33】
、および、ランダムノイズ多項式eについてのμ=μ+eを伴うボディ多項式
【数34】
として計算され得る。LWE型暗号文は、(N,k)=(1,n)の場合のGLWE型暗号文の例である。GLWE型暗号文の別の例は、RingLWE(Ring Learning With Errors)(RLWE)型暗号文である。RLWE型暗号文は、1つのマスク多項式のみを含む。
【0054】
LWE/GLWE型暗号文を使用する代わりに、異なる格子暗号化を使用することも可能である。例えば、ブラインド回転が適用される暗号文、および/またはそれから生じる暗号化された多項式積はNTRU暗号文であってもよい。例えば、メッセージμのNTRU暗号化は、ノイズ多項式gとプライベート鍵多項式fとの商をメッセージに加えることによって定義されてもよく、例えば、
【数35】
は、可逆多項式(典型的には小さな係数を有する)であってもよく;NTRU暗号化は、
【数36】
によって与えられ得るか、またはg=e+f・eと書くと、c=e/f+μ+eによって与えられ得る。特に、NTRU暗号文は、単一の多項式のみを含み得る。そのような暗号文のセキュリティは、NTRU仮定(NTRU assumption)に基づき得る。
【0055】
特に、NTRUは、テスト多項式とブートストラッピング単項式とのNTRU暗号化された多項式積を生じるブラインド回転を使用することによって、および/またはブラインド回転を入力としてのNTRU暗号文に適用することによって、提供される技術と組み合わせて使用され得る。適当なNTRU暗号化の例は、C.Bonteら、「FINAL:Faster FHE instantiated with NTRU and LWE」、https://ia.cr/2022/074;およびK.Kluczniak、「NTRU-ν-um:Secure Fully Homomorphic Encryption from NTRU with Small Modulus」、https://ia.cr/2022/089に定義されている。
【0056】
様々な実施形態は、ガジェット暗号文にも関連する。一般に、ガジェット暗号文は、平文に基づいてそれぞれの値を暗号化する複数の構成暗号文(constituent ciphertext)を含む暗号文として定義されてもよく、それは、ガジェット行列に基づいて定義され得る。LWE/GLWEの場合、ガジェット暗号文は、例えば、参考文献「Programmable bootstrapping enables...」(GGSWの説明に関する限り、本明細書に組み込まれる)において定義されるように、GGSW型暗号文であってもよい。NTRU設定では、C.Bonteら、「FINAL:Faster FHE instantiated with NTRU and LWE」、https://ia.cr/2022/074(NGSの定義に関する限り、引用により本明細書に組み込まれる)のNGS暗号化、またはK.Kluczniak、「NTRU-ν-um:Secure Fully Homomorphic Encryption from NTRU with Small Modulus」、https://ia.cr/2022/089(ガジェットNTRUの定義に関する限り、引用により本明細書に組み込まれる)のガジェットNTRU暗号化などのガジェット暗号化が、例えば使用され得る。
【0057】
上記の例は、対称暗号化方式(例えば、1つの秘密鍵が暗号化および復号の両方に使用される)にしたがう(G)LWE/NTRU/...暗号文について説明するが、使用される暗号文が非対称暗号化方式(例えば、異なる公開鍵およびプライベート鍵がそれぞれ暗号化および復号に使用される)にしたがうものであることも可能である。例えば、上記秘密鍵は、プライベート鍵として使用されてもよく、公開鍵はゼロの1つ以上の暗号化を含む。例えば、R.Rothblum、「Homomorphic encryption:From private-key to public-key」、Theory of Cryptography(TCC 2011)、Lecture Notes in Computer Scienceのvol.6597、219-234頁、Springer、2011年(引用により本明細書に組み込まれる)を参照されたい。
【0058】
様々な実施形態は、数論変換を使用して、モジュラスqおよびNTT多項式を割り切る商多項式p(X)を法とする多項式乗算を行う。典型的には、NTT多項式はX-1に等しく、商多項式はNTT多項式を割り切り、例えば、等しいものにより割り切るのは自明であり、即ち厳密に割り切る。モジュラスqは、Mが
【数37】
における単元(unit)であるように、好ましくは、
【数38】
が位数(order)Mの1の原始冪根(primitive root of unity)を含むように、選択され得る。そのような場合、数論ドメインのフーリエドメインにおける多項式乗算は、例えば、1の原始冪根の累乗における被乗数の評価の点ごとの乗算として特に効率的に実施され得る。これについての技術は、例えば、J.von zur GathenおよびJ.Gerhard、「Modern Computer Algebra」、Cambridge University Press、第3版、2013年から、それ自体知られている。「1の原始冪根」という用語は、この参考文献に定義されるように、本明細書全体を通して使用される。
【0059】
例えば、商多項式は、X-1を割り切る任意の商多項式p(X)であってもよく、多項式のフーリエ表現は、1の原始M乗根の累乗のセットにおける多項式の評価のセットとして定義されてもよい。フーリエ表現は、1の原始M乗根のそれぞれの累乗における評価の点ごとの乗算によって乗算されてもよい。係数表現と多項式のフーリエドメイン表現との間の効率的な変換のために、Mが2の1以上の累乗および/または3の1以上の累乗を含む場合、例えばMが2の累乗またはMが3の累乗である場合、有利である。
【0060】
多項式のフーリエ表現は、1の冪根の累乗のそれぞれにおける評価を含み得るが、これは必須ではない。様々な場合に、累乗のサブセットを使用することで十分であり、それがより効率的なフーリエドメイン表現につながる。これは、特に、商多項式が(X-1)/(X-1)に等しい場合であり、ここで、M=hdおよびd=M-N(およびしたがって、N=M-d=(h-1)d)である。例えば、商多項式は、h=2の場合に(X2d-1)/(X-1)=(X+1)=(X+1)、またはh=3の場合に(X3d-1)/(X-1)=(X2d+X+1)=(X+XN/2+1)であってもよい。そのような場合に、多項式のフーリエドメイン表現は、1の原始M乗根ωの累乗のサブセット、例えば、h=2の場合に累乗ω、ω、...、ω2d-1、h=3の場合に累乗(ω,ω)、(ω,ω)、...、(ω3d-2,ω3d-1)のみの中の多項式の評価として定義され得る。多項式を乗算するためには、この1の冪根の累乗のサブセットに対する評価のみで十分であり、それが、より効率的な多項式乗算につながる。それでもなお、効率的な数論変換および逆が可能である。
【0061】
説明される技術は、ブートストラッピング鍵を使用するブラインド回転に関する。そのようなブラインド回転をサポートする暗号化計算技術は、「TFHEに類似の」準同型暗号化方式と呼ばれ得る。
【0062】
TFHEに類似の方式でのプログラマブルブートストラッピング演算は、それらを広範囲の用途に対する魅力的な選択にする。ブートストラッピングは、多くの他のFHE方式に比べて比較的効率的であるため、例えば、少なくとも10、少なくとも50、または少なくとも100の乗算の深さを有する比較的複雑な計算を行うのにさらに適している。特に、TFHEに類似の方式の暗号パラメータは、準同型演算の量およびそれらの回路の深さとは無関係に、必要とされる精度および結果として生じる計算コストに基づいて選択され得る。他のFHE方式では、対照的に、ブートストラッピングは非常に非効率的であり得るため、実際には、これらの方式が典型的にはレベル化(levelled)された方法で適用され、このことは、ブートストラッピングの必要なしに行われ得るようにそれらの方式のパラメータが所与の計算に応じて選択されることを意味する。しかしながら、そのようなレベル化された手法はより複雑な計算には適していないため、そのような場合には、TFHEに類似の方式が特に有益である。
【0063】
例えば、TFHEに類似の暗号化方式のブートストラッピング鍵は、例えば、LWE秘密鍵の鍵の数字を暗号化するn個のガジェット暗号文、例えばGGSW型、を含んでもよく、典型的には、nは、多くとも1000または多くとも640、例えば、n=630である。ガジェット暗号文は、例えば、l=3個の暗号文を含んでもよく、それぞれが、k=1個のマスク多項式(例えば、RLWEが使用されてもよい)およびGLWEの場合に1つのボディ多項式を含む。さらなる例としてのパラメータが、全体を通して説明されている。一般に、GLWEベースの暗号文のセキュリティは、秘密鍵の配布および3つの主なパラメータ:n=kNに基づき、Nは、商多項式の次数であり、kは、暗号文のランダムマスク多項式の数であり、nは、秘密鍵の長さであり;qはモジュラスであり;σは、ノイズの統計パラメータ、例えば、その標準偏差である。これらのパラメータが与えられると、提供されるセキュリティの度合いを推定する方法は、それ自体知られており、例えば、M.Albrechtら、「On the concrete hardness of Learning with Errors」、Journal of Mathematical Cryptology、9(3):169-203頁、2015年(引用により本明細書に組み込まれる)を参照されたい。同様に、典型的には単一多項式から作られたNTRUベースの暗号文の場合、セキュリティは、秘密鍵の配布と、2つの主なパラメータ:商多項式の次数N、およびノイズの統計パラメータσに基づく。
【0064】
本明細書の実施形態では、使用されるTFHEに類似の(例えば、LWE/GLWE)暗号文のパラメータが所望のセキュリティレベルに基づいて選択されてもよく、および暗号文の線形結合および/またはプログラマブルブートストラッピングの適用などの演算の所望の精度、即ち、これらの演算を適用することから生じるノイズレベルに基づいて選択されてもよい。興味深いことに、TFHE設定では、セキュリティパラメータは、計算の複雑度とは無関係に、例えば、計算の乗算の深さとは無関係に選択され得る。これは、TFHEに非類似の方式の場合には同様ではなく、その場合に、セキュリティパラメータは、典型的には、ブートストラッピングを制限または除外するように選択される。
【0065】
特に、本明細書のTFHE設定において使用されるLWEベースの暗号文および/またはGLWEベースの暗号文は、比較的小さな、例えば、多くとも32ビット、多くとも64ビット、または多くとも128ビットのモジュラスを使用し得る。このモジュラスは、典型的には、実行されるべき計算とは無関係に選択され、例えば、所望の精度および/または効率性に応じて選択される。パラメータN、k、および/またはσは、所望のセキュリティレベルを達成するように選択されてもよく、典型的には実行されるべき計算からも無関係であってもよい。例えば、Nは、少なくとも512、および/または多くとも2048もしくは4096、例えば1024に設定されてもよい。例えば、実施形態では、RLWEは、Nが少なくとも512、および/または多くとも2048もしくは4096、例えば1024、k=1で使用される。そのようなNの値は、TFHEに非類似の方式では通常は使用されず、そのような値は、行われ得る計算を厳密に制限する;その代わりに、TFHEに非類似の方式では、qおよびNは、典型的には両方とも、qがかなり大きくなり得るように所望のセキュリティレベルに基づいて選択される。
【0066】
図1aは、暗号化計算デバイス110の実施形態の例を概略的に示す。
【0067】
デバイス110は、プロセッサシステム130、ストレージ140、および通信インターフェース150を含み得る。ストレージ140は、ローカルストレージ、例えば、ローカルハードドライブまたは電子メモリを含み得る。ストレージ140は、非ローカルストレージ、例えば、クラウドストレージを含み得る。後者の場合、ストレージ140は、非ローカルストレージへのストレージインターフェースを含み得る。例えば、ストレージ140は、プログラマブルブートストラッピングまたはブラインド回転を行うLWE型暗号文を記憶するためのものであってもよい。
【0068】
ストレージ140は、さらに、ブラインド回転において使用するブートストラッピング鍵を記憶するためのものであってもよい。ブラインド回転は、ブートストラッピング鍵を使用して、ブートストラッピング多項式の指数においてLWE復号を行い得る。ブートストラッピング鍵は、ブラインド回転において使用される数論変換のフーリエドメイン表現で記憶されてもよく、それによって効率性が改善される。
【0069】
LWEの代替として、例えば、NTRUも使用されてもよい。
【0070】
デバイス110は、他のデバイス、外部ストレージ、入力デバイス、出力デバイス、および/または1つ以上のセンサとコンピュータネットワークを介して内部で通信し得る。コンピュータネットワークは、インターネット、イントラネット、LAN、WLANなどであってもよい。コンピュータネットワークは、インターネットであってもよい。デバイスは、任意選択で、接続インターフェース150を含んでもよく、接続インターフェース150は、必要に応じて他のデバイスと通信するように構成される。例えば、接続インターフェースは、コネクタ、例えばイーサネットコネクタ、光学コネクタなどの例えば有線コネクタ、または、例えば、Wi-Fi、4Gもしくは5Gアンテナといったアンテナなどの無線コネクタを含み得る。通信、例えば内部通信は、他の通信プロトコルまたは媒体、例えば、内部データバスを使用し得る。
【0071】
デバイス110において、通信インターフェース150は、デジタルデータを送信または受信するために使用され得る。例えば、デバイス110は、LWE型暗号文を表すデータ、例えば、ブラインド回転もしくはプログラマブルブートストラッピングへの入力またはその出力を、受信または送信するように構成され得る。通信インターフェース150は、さらに、ブートストラッピング鍵を表すデータを受信するために使用され得る。ブートストラッピング鍵は、ブラインド回転において使用されるNTTのフーリエドメイン表現で受信され得る。
【0072】
デバイス110の実行は、プロセッサシステム130、例えば、マイクロプロセッサなどの例えば1つ以上のプロセッサ回路において実施されてもよく、それらの例が本明細書に示されている。デバイス110は、異なる場所に分散され得る複数のプロセッサを含み得る。例えば、デバイス110は、クラウドコンピューティングを使用し得る。
【0073】
プロセッサシステム130は、例えば、暗号化計算を行うことによってLWE型暗号文を受信するため、またはLWE型暗号文を計算するために、平文値を暗号化するLWE型暗号文を取得するように構成され得る。プロセッサシステム130は、テスト多項式に従って、LWE型暗号文のブラインド回転を行うように構成され得る。ブラインド回転の結果として、テスト多項式と、モジュラスを法とし、および商多項式を法とするブートストラッピング単項式との暗号化された多項式積を生じ得る。ブートストラッピング単項式は、平文値を指数として表し得る。商多項式は、モジュラスを法とする数論変換を可能にするNTT多項式を割り切り得る。プロセッササブシステム130は、数論変換を使用してブラインド回転の多項式乗算を行うように構成され得る。テスト多項式は、多項式積が平文値についての所望の出力値を固定係数として有するように定義され得る。プロセッサシステム130は、例えば、暗号化計算で使用するために、計算された暗号化された多項式積を出力するようにさらに構成され得る。例えば、プロセッサシステム130は、計算された暗号化された多項式積に基づいて、暗号化計算の出力を表すLWE暗号化を計算し、例えば、ストレージ130上にそれを記憶すること、および/または通信インターフェース150を介して別の関係者にそれを送信することによって、LWE暗号化を出力し得る。
【0074】
LWEの代替として、例えば、NTRUも使用され得る。
【0075】
図のいくつかが、プロセッサシステムの機能ユニットであり得る機能ユニットを示す。例えば、図は、プロセッサシステムの可能な機能編成の設計図として使用され得る。プロセッサ回路は、大抵の図においてユニットと別々に示されていない。例えば、図2および図3に示される機能ユニット(以下参照)は、デバイス110などのデバイス、例えばデバイス110の電子メモリに記憶され、デバイス110のマイクロプロセッサによって実行可能であるコンピュータ命令で全体的または部分的に実装され得る。ハイブリッド実施形態では、機能ユニットは、ハードウェアにおいて部分的に、例えばコプロセッサとして、例えば演算および/または暗号化コプロセッサとして、デバイス110上に記憶および実行されるソフトウェアにおいて部分的に実装される。
【0076】
例えば、デバイス110は、暗号化計算を行うためのデバイスであってもよい。暗号化計算は、準同型暗号化暗号法を使用し得る。例えば、デバイス110は、暗号化計算を行うために使用されてもよく、例えば、デバイスは、前記データが暗号化形式で、例えばデータプロバイダから受信されているにもかかわらず、およびデバイス110がデータを復号できないにもかかわらず、計算を行い得る。計算は、例えばプログラマブルブートストラッピングの一部として、本明細書に記載されたブラインド回転を伴い得る。
【0077】
例えば、ストレージ140は、例えば、1つ以上のデータプロバイダから受信され、あるいは計算の中間結果または終了結果、例えば出力として生成される暗号化されたデータアイテムを記憶し得る。典型的には、デバイス110の計算が行われる大部分または全てのデータアイテムが、デバイス110に知られていない鍵で暗号化される。即ち、デバイス110は、例えばストレージ140に記憶されたものなどの暗号化されたデータアイテムに対応するプレーンデータアイテムを取得するように構成されなくてもよい。プレーン形式の復号鍵は、デバイス110には秘密であるが、暗号化/復号鍵は暗号化形式で利用可能であり得る。例えば、プロセッサシステムは、準同型暗号化演算のシーケンスを行うように構成され得る。準同型暗号化演算は、暗号化された値に対する加算および乗算などの算術演算を含んでもよく、例えば、それぞれのプログラマブルブートストラッピング演算の一部として、1つ以上のブラインド回転をさらに含んでもよい。
【0078】
図1bは、暗号化計算において使用するテスト多項式、例えば図1aのデバイス110が使用するテスト多項式を決定するためのデバイス119の実施形態の例を概略的に示す。暗号化計算は、ブートストラッピング単項式とモジュラスを法としおよび商多項式を法とするテスト多項式との多項式積を計算することを含んでもよく、商多項式はNTT多項式を割り切る。デバイス119は暗号化計算自体を行ってもよく、例えば、図1aのデバイス110は図1bのデバイス119と組み合わされてもよい。
【0079】
デバイス110は、プロセッサシステム139、ストレージ149、および通信インターフェース159を含み得る。プロセッサシステム139、ストレージ149、および通信インターフェース159は、図1aのそれぞれのコンポーネントについて説明したように実装され得る。ストレージ149は、それぞれの平文値に対する所望の出力値を定義するルックアップテーブルを記憶するためのものであってもよい。ルックアップテーブルは、例えば、それぞれの出力値、入力値のそれぞれの対、または入力を出力にマッピングする関数の別の表現、例えば、シンボル表現または実行可能な表現を記憶することによって記憶され得る。
【0080】
通信インターフェース159は、ルックアップテーブル、および/またはモジュラス、商多項式およびNTT多項式などの1つ以上のシステムパラメータを受信するために使用され得る。通信インターフェース159は、計算されたテスト多項式を送信するために使用され得る。
【0081】
プロセッサシステム139は、モジュラス、商多項式、およびNTT多項式を取得するように構成され得る。プロセッサシステム139は、多項式積がそれぞれの所望の出力値をそれぞれの平文値に対する固定係数として有するように、テスト多項式を計算するようにさらに構成され得る。
【0082】
図1cは、暗号化計算システム100の実施形態の例を概略的に示す。システム100は、準同型暗号化、例えば、完全準同型暗号化を使用して暗号化計算を行うように構成される。
【0083】
この例のシステム100は、鍵生成デバイス111、データプロバイダデバイス113、および暗号化コンピューティングデバイス112を含む。鍵生成デバイス111およびデータプロバイダデバイス113は、単一デバイスに組み合わされてもよい。デバイス112は、データプロバイダ113から暗号化されたデータアイテムを受信するように構成され得る。少なくとも1つ以上のデータアイテムが、暗号化形式で受信され得る。1つ以上のさらなるデータアイテムが、プレーンフォーマットで受信され得る。計算は、受信されたデータアイテムに対して、記憶されたデータアイテムに対してもおそらく実行される。興味深いことに、計算は暗号化されたデータに対して行われ得るが、そのデータを復号することなく、例えば、暗号化されたデータアイテムをプレーンフォーマットのデータに変換することなく行われ得る。
【0084】
この例のデバイス112は、図1aのデバイス110に基づいてもよく、例えば、図1aのプロセッサシステム130、ストレージ140、および/または通信インターフェース150を含んでもよい。各デバイス111、112、113は、図1bのデバイス119に基づいてもよく、例えば、図1bのプロセッサシステム139、ストレージ149、および/または通信インターフェース159をそれぞれ含んでもよい。
【0085】
この例では、デバイス111は、例えば、デバイス111のプロセッサシステムによって実装される鍵生成ユニット131を含む。鍵生成ユニット131は、暗号化コンピューティングデバイス112によって使用するブートストラッピング鍵151を生成するように構成される。ブートストラッピング鍵は、本明細書で説明されるように、ブラインド回転を行うことを可能にし得る。デバイス111は、ブートストラッピング鍵151をデバイス112に提供してもよく、例えば、コンピュータネットワーク150を介してそれを送信し、共有ストレージにアップロードするなどしてもよい。デバイス111は、数論変換のフーリエドメイン表現でブートストラッピング鍵の多項式を提供し得る。
【0086】
この例では、デバイス112は、例えば、デバイス112のプロセッサシステムによって実装された暗号化計算ユニット132を含む。暗号化計算ユニット132は、暗号化計算を実行するように構成され得る。暗号化計算は、例えば、図1aのデバイス110について説明されるように、例えばLWE型暗号文のブラインド回転を伴い得る。ブラインド回転を行うために、暗号化計算ユニット132は、デバイス111から例えば、ネットワーク150を介して受信するか、または共有ストレージから取得したブートストラッピング鍵151を使用し得る。ブラインド回転は、テスト多項式を使用し得る。テスト多項式は、例えば、図1bのデバイス119について説明されるように、デバイス111、デバイス112、またはデバイス113によってルックアップテーブルから決定され得る。暗号化計算は、それ自体知られているように、多くの他の演算を含んでもよく、例えば、デバイス112は、演算回路を評価するように構成されてもよく、暗号化されたデータに対してニューラルネットワークを評価するように構成されてもよいなどである。
【0087】
この図には示されていないが、暗号化計算システム100は、例えば、2つ、3つ、または3つより多い複数の暗号化コンピューティングデバイスを含み得る。暗号化計算は、複数の暗号化コンピューティングデバイスの間に分散され得る。暗号化コンピューティングデバイスは、典型的には暗号化された中間計算結果を互いに交換し得る。各暗号化乗算デバイスは、暗号化コンピューティングデバイス112のように実装されてもよく、本明細書で説明されるように多項式によって暗号文の乗算を行ってもよい。
【0088】
準同型暗号化方式が、多くの設定で適用され得る。例えば、暗号化コンピューティングデバイス112は、クラウドプロバイダによって動作され得る。クラウドプロバイダは、計算サービスおよびストレージサービスをそのクライアントに供給し得る。準同型暗号化を採用することによって、データプロバイダデバイス113、例えば、クラウドプロバイダのクライアントは、データを暗号化形式で送信し得る。クラウドプロバイダは、依然として必要な計算および/または必要なストレージを行い得るが、プレーンデータに対応するものを知ることができない。例えば、データプロバイダデバイス113は、データアイテムを暗号化するために使用される特定の準同型暗号化システムに対応する種類の暗号鍵を使用してもよい。計算結果が暗号化コンピューティングデバイス112からデータプロバイダ113によって受信されるとき、対応する復号鍵は、暗号化されたデータアイテムを復号するために使用され得る。暗号鍵および復号鍵は、同じであってもよく、典型的には同じである。
【0089】
例えば、暗号化計算システム100は、暗号化コンピューティングデバイスがプレーンデータアイテムにアクセスできなくても、例えば画像分類器などの機械学習モデル、例えば医療モデルを訓練するように構成されてもよい。例えば、線形回帰は、おそらくブートストラッピングなしでも、入力データに対して行われ得る。例えば、バックプロパゲーションは、おそらくブートストラッピングと共に、入力データに対して行われ得る。結果となるモデルパラメータは、復号鍵を所有するエンティティに返され得る。これは、データをクラウドプロバイダに送信することによって、医療データの複数のプロバイダがかれらのデータをプールすることを可能にする。クラウドプロバイダは、次いで、プレーンデータにアクセスできなくてもモデルパラメータを返す。暗号鍵は、復号鍵と等しくてもよい。
【0090】
モデルが訓練された後、暗号化計算システム100は、例えば医療データで使用するためのモデルを提供するために使用され得る。これは、プレーンモデルパラメータまたは暗号化モデルパラメータを用いて行われ、両方の場合に、暗号化されたデータ、例えば、暗号化された入力、中間データおよび出力データを用いて行われ得る。プレーンモデルパラメータを使用することは、通常、はるかにより効率的である。両方の場合に、システムの効果は、コンピュータがプレーンデータアイテムを知らなくても、例えば画像分類、例えば医療画像分類などの計算が行われることである。例えば、マンモグラムは、画像が暗号化コンピューティングデバイス112においてプレーンですらなくても、および任意の暗号化コンピューティングデバイス112またはそのようなデバイスの連携が癌評価の結果が何であるかを知らなくても、癌について評価されてもよい。プライバシーの観点から、暗号化されたプライバシーセンシティブなデータに対してプレーンモデルを演算することが許容され得るが、プレーンなプライバシーセンシティブなデータに対して演算することは許容されなくてもよい。
【0091】
他の用途は、例えば、暗号化データベース内の暗号化されたデータを検索するデータベースサービスを伴い;例えば、計算は、入力アイテムとデータベースアイテムとの間の比較であってもよい。例えば、複数の計算は、インデックスに合致するデータベースインデックスを作り出すために組み合わされてもよい。例えば、データベースはゲノムデータベースであってもよく、入力は遺伝子配列であってもよい。例えば、システム100は、デバイスの保護された制御に使用され得る。例えば、デバイスは、電力プラントなどの大規模デバイスでさえ、センサ値を暗号化コンピューティングデバイス112に送信し、返ってきた暗号化制御信号を受信し得る。制御信号は、センサ信号から計算される。システムの攻撃者は、1つ以上の暗号化計算デバイス112に入るデータのコンテンツおよび1つ以上の暗号化計算デバイス112から来るデータのコンテンツを決定することが可能であり得、これらのデバイスの中間データにアクセスすることすら可能であり得るが、データが暗号化されているため、それは攻撃者の助けとならない。復号鍵がこれらのデバイスには知られていないため、システム100の全ての暗号化コンピューティングデバイス112の完全に壊れてもデータは明らかにならない。制御信号を計算することは、線形代数、平均、行列乗算、多項式評価などの数学的演算を伴い得る。その全てが、準同型暗号化演算と共に実行することが可能である。
【0092】
例えば、暗号化されたデータアイテムのプールは、暗号化計算システム内に維持されてもよく;これらのサブセットが受信されてもよく、別のサブセットは、暗号化された計算の結果、例えば中間結果であってもよい。例えば、暗号化コンピューティングデバイス112は、例えば、入力値および/または中間値および/または出力値のコレクションであるプール内の1つ、2つ、またはそれ以上の暗号化されたデータアイテムに準同型暗号化演算を適用するように構成されてもよい。結果は、プールに記憶され得る新たな暗号化されたデータアイテムであってもよい。プールは、暗号化計算システムのストレージに記憶され得る。これは、ローカルストレージまたは分散ストレージであってもよい。後者の場合、1つ以上の暗号化されたデータアイテムが、プール内で複数回表されることが起こり得る。暗号化されたデータアイテムは、例えば、それらの値がどこかで必要とされる場合に1つのコンピューティングデバイスから別のコンピューティングデバイスへ送信され得る。プールは、例えば、レジスタファイル、アレイ、様々なデータ構造などとして、様々な方法で実装され得る。
【0093】
暗号化されたデータアイテムは、全ての種類のデータを表し得る。例えば、暗号化されたデータアイテムは、平均される必要がある数を表してもよく、または、線形回帰などに使用される。例えば、暗号化されたデータアイテムは、画像を表し得る。例えば、画像の各画素が、1つ以上の暗号化されたデータアイテムに対応し得る。例えば、グレースケール画素は、グレーレベルによって表されてもよく、それは次に単一の暗号化されたデータアイテムによって表されてもよい。例えば、256個のグレーレベルが、単一の暗号化されたデータアイテムで符号化されてもよい。例えば、カラー画素は、複数のカラーレベル、例えばRGBレベルとして表されてもよく、それは次に暗号化されたデータアイテムのタプルによって表されてもよい。例えば、3つの256レベルのカラーは、3つの暗号化されたデータアイテムで符号化されてもよい。何らかの種類のデータを表すために何個の暗号化されたデータアイテムが使用されるかは、準同型暗号化方式の能力に依存する。例えば、より制限的な準同型暗号化方式は、暗号化されたデータアイテムにつき1ビットしか符号化できない場合がある。その場合、1つのカラー画素は、24個の暗号化されたデータアイテムを必要とし得る。
【0094】
準同型暗号化演算のセットが、計算に対して定義されてもよい。例えば、準同型暗号化演算から、例えば、外部コンパイラデバイスまたは計算デバイス自体によって計算を共に実施する演算のネットワークまたは回路が構築され得る。例えば、演算は、ブール演算を含み得る。準同型暗号化演算が組み合わされる方法、例えば、どの演算がプール内のどのオペランドに適用されるかが、行われている計算を決定する。例えば、計算は、演算が行われるべきなのはどの暗号化されたデータアイテムについてのインディケーションと共に、演算が行われるべき準同型暗号化演算のリストとして表され得る。ネットワークまたは回路が、ブラインド回転および/またはプログラマブルブートストラッピングをいつ実行すべきかを暗号化計算デバイス112に示してもよく、テスト多項式、またはテスト多項式が本明細書で説明されるようにそこから計算され得るルックアップテーブルを含んでもよい。
【0095】
図2は、プログラマブルブートストラッピングユニット200の実施形態の例を概略的に示す。
【0096】
n個のマスク値
【数39】
およびボディ値
【数40】
を含むLWE型入力暗号文210が、図面に示されている。値は、モジュラスqを法として定義される。入力暗号文210は、
【数41】
として示され得る。いくつかの場合に、入力LWE暗号文は、NTRU暗号文から変換することによって取得され得る。他の場合には、そのような変換は行われなくてもよく、例えば、入力LWE暗号文は、いかなるNTRU暗号化もこの計算で使用されることなく、プログラマブルブートストラッピングのLWE暗号化出力に基づいて計算され得る。
【0097】
さらに、モジュラススイッチングユニット220が示されている。モジュラススイッチングユニットは、LWE型暗号文211を取得するために入力暗号文210に対してモジュラススイッチングを行うように構成され得る。これは、入力暗号文210のそれぞれの値を、例えば、因数M/qでスケールして次いで丸めることによって、後述するNTT多項式の次数Mにスケールすることを含み得る。モジュラススイッチングは、参考文献「Programmable bootstrapping enables...」に開示されるように実装されてもよい。具体例として、モジュラススイッチングは、スケールされた平文値
【数42】
の暗号化を計算し得、ここで、
【数43】
である。
【0098】
初期化ユニット240および累算ユニット260も示されている。ユニット240および260は、共にLWE型暗号文211のブラインド回転を行うように構成され得る。ユニット240および260は、モジュラスqを法とし、商多項式p(X)を法とするGLWE暗号化を使用し得る。典型的には、モジュラスqは、LWE型入力暗号文のものと同一であるが、原理的にはこれは必須ではない。興味深いことに、商多項式p(X)は、モジュラスqを法とする数論変換を可能にするNTT多項式、例えば、X-1を割り切り得る。特に、qは、2の累乗であってもよく、その場合、X+1とは異なる商多項式が使用されてもよい。さらなる例が、以下で与えられる。
【0099】
ブラインド回転は、ブートストラッピング鍵270を使用し得る。ブートストラッピング鍵270は、LWE型暗号文211のブラインド回転を行うことを可能にし得る。
【0100】
ブラインド回転は、さらに、テスト多項式ν230を使用し得る。商多項式は、先行技術において使用されるように、X+1に等しくなくてもよく、その結果、それぞれの所望の出力値をそのそれぞれの係数として有するテスト多項式を使用することはもはや可能ではない。しかしながら、興味深いことに、テスト多項式は、モジュラスqおよび商多項式p(X)を法とする多項式積
【数44】
が、それぞれの平文値についての所望の出力値を固定係数として有するように定義され得る。特に、テスト多項式ν230は、
【数45】
がドリフトに至るまで、選択された関数fに対してf(μ)を符号化するようにルックアップテーブルとしてプログラムされ得る。
【0101】
ブラインド回転は、入力暗号文
【数46】
のスケールされたバージョン211を、ブートストラッピング単項式
【数47】
と、モジュラスqを法としおよび商多項式p(X)を法とするテスト多項式ν230との暗号化された多項式積250に変換し得る。例えば、出力は、多項式積
【数48】
を鍵
【数49】
の下で暗号化するGLWE型暗号化
【数50】
であってもよく、ここで
【数51】
が、暗号文210の平文μ=μ+eの離散化値であり、νはテスト多項式230である。
【0102】
図に示されるように、ブラインド回転は、入力暗号文に対して復号鍵のそれぞれのビットを暗号化するブートストラッピング鍵270のGGSW暗号化GGSW(s)に関して、それぞれの累算演算260のシーケンスを行うことによって計算されてもよい。累算演算は、ブートストラッピング鍵のビットが設定されているかどうかに応じて、LWE型暗号文211の現在のランダムマスク値を現在のGLWE暗号化250に選択的に加算し得る。
【0103】
特に、ブラインド回転は、以下のように実施され得る。
【0104】
【表1】
【0105】
このアルゴリズムは、実際には、鍵s’の下で
【数52】
のGLWE暗号化250を生じる結果となることに留意されたい。この例は、n個のブートストラッピング鍵270を使用し、1≦j≦nに対してbsk[j]←GGSWs’(s)である。
【0106】
この例では、
【数53】
の暗号化にGLWE暗号化を最初に設定する初期化240が使用される。しかしながら、別の段階、例えば累算演算260を行った後に、値
【数54】
をGLWE暗号化に加算することも可能である。
【0107】
図3に関しても説明されるように、累算ユニット260は、GGSW型暗号文270とのGLWE型暗号文250の外部積を計算してもよく、外部積を計算することは、多項式乗算を行うことを含む。図に示されるように、これらの多項式乗算は、数論変換を使用して多項式乗算を行うモジュラ乗算ユニット261を使用して多項式乗算を計算することによって、より効率的に行われ得る。
【0108】
この例は、秘密鍵のビットのGGSW暗号化を含むブートストラッピング鍵270に関する一連の累算演算260を使用し、累算演算は外部積を使用する。提供される技術は、ブラインド回転の他の変形に容易に一般化される。一般に、ブートストラッピング鍵のGGSW暗号化との外部積を計算することを含む任意のブラインド回転は改善されることが可能であり、それは例えば、ブートストラッピング鍵270が欧州特許出願EP21290025(引用により本明細書に組み込まれる)に開示の非2進数を含むブラインド回転、または複数の鍵数字を同時に処理するブラインド回転などである。そのような場合にも、数論変換を使用するユニット162によりブラインド回転の多項式乗算を行うことによって、性能が改善され得る。より一般的には、ブラインド回転の一部として行われる任意の多項式乗算が、数論変換を使用することによってより効率的になり得る。
【0109】
さらに、サンプル抽出ユニット280が示されている。サンプル抽出ユニット280は、固定係数として所望の出力値を有するGLWE暗号化された多項式積250を入力としてとるように構成されてもよく、サンプル抽出を行って、暗号化250からこの固定係数のLWE暗号化290を抽出するように構成されてもよい。例えば、サンプル抽出は、参考文献「Programmable bootstrapping enables ...」から知られている通りであってもよい。
【0110】
ここで、テスト多項式230νが、暗号化された多項式積250が係数として所望の出力値を有するように定義される方法に戻る。興味深いことに、発明者は、NTT多項式X-1を割り切る任意の商多項式p(X)についてこの性質を有するようにテスト多項式を「プログラム」することが可能であることに気付いた。
【0111】
特に、テスト多項式ν∈R[X]/(p(X))230は、
【数55】
が暗号文211の平文
【数56】
についての所望の出力値を符号化し、したがってμが暗号文210の平文である場合、選択された関数fについてのf(μ)をドリフトまで符号化するように定義され得る。例えば、値f(μ)は、
【数57】
の定数係数として符号化され得る。この場合、テスト多項式230は、X-tν(X)の定数項が、それぞれの所望の出力値の任意のベクトルK=(K,...,KN-1)∈Rに対する全てのt∈{0,...,N-1}に対してKに等しくなるように、全てのi<Nについてν230のうちの係数νを計算することによって決定され得る。
【0112】
以下では、次の表記法が使用される。Rは、1を有する環であるとする。R上で定義され、p(X)が、ある所与のMについてNTT多項式X-1を割り切るような、モニックな次数Nの商多項式
p(x)=X+pN-1N-1+pN-2N-2+・・・+p
を考える。便宜上、
【数58】
であるようにp=1とする。ν(X)の次数iの係数(ν(X))=νで示されるR[X]/(p(X))の多項式
【数59】
に対して(特に、(ν(X))=νは、定数項を示す)、便宜上、ν=0である。
【0113】
発明者は、商多項式p(X)がMについてのNTT多項式X-1を割り切る場合に、X-1がR[X]/(p(X))に存在するという認識に基づいて、テスト多項式νを計算することができた。具体的には、X-1は、Rにおける係数を有する、次数<Nの多項式として表され得る。これは、今度は、所与の多項式
【数60】
について、X-1ν(X);即ち、R[X]/(p(X))の要素として
【数61】
についての式を取得することを可能にする。
【0114】
特に、R[X]/(p(X))において、
【数62】
が成り立ち、今度は
【数63】
が成り立つことに留意されたい。
【0115】
これは、pがRにおいて可逆であることを仮定する。これは、商多項式p(X)がNTT多項式X-1を割り切るという事実によって示される。実際に、多項式
【数64】
に対してX-1=p(X)・q(X)と書くと、p=-1、または等価的には、p(-q)=1が成り立ち;ゆえに、pの逆が存在し、-qで与えられる。
【0116】
多項式
【数65】
が与えられると、
【数66】
であることが検証され得る。
ここで、最後の不等式が、定義ν=0により成り立つ。したがって、以下:
【数67】
が成り立つ。
【0117】
したがって、事実上、X-1との乗算は、ν(X)の定数項のスケールされたバージョンを他の係数に加算することになってもよく、スケールすることは、係数のインデックスおよびシフトに依存する。
【0118】
関係(*)に基づいて、テスト多項式230が計算され得る。いくつかの例が与えられる。好ましい実施形態は、値のセットをX-tν(X)の定数または主係数のいずれかに埋め込むことを含む。これらの例では、発明者は、決定に特に効率的であるテスト多項式についての表現を導出することが可能であった。
【0119】
テスト多項式の例1:固定係数が定数係数である
N個の所望の出力値
【数68】
を有するルックアップテーブルTが与えられると、テスト多項式ν(X)230は、X-tν(X)の定数項がK=T[t]であるように決定される。この場合、
【数69】
のそれぞれの係数が、それぞれの所望の出力値、例えば、任意の
【数70】
についての:
【数71】
から計算され得る。全てのt∈{0,...,N-1}について、(X-tν(X))=Kであることが検証され得る。
【0120】
例えば、テスト多項式を計算するために以下のアルゴリズムが使用され得る:
【0121】
【表2】
【0122】
テスト多項式の例2:固定係数が主係数である
N個の所望の出力値
【数72】
を有するルックアップテーブルTが与えられると、テスト多項式ν(X)230は、X-tν(X)の主係数がK=T[t]であるように決定される。この場合、テスト多項式
【数73】
のそれぞれの係数が、それぞれの所望の出力値の合計、例えば、任意の
【数74】
についての:
【数75】
として決定され得る。全てのt∈{0,...,N-1}について(X-tν(X))N-1=Kであることが検証され得る。
【0123】
例えば、テスト多項式を計算するために以下のアルゴリズムが使用され得る:
【0124】
【表3】
【0125】
テスト多項式の例3:商多項式が、X ±X N/2 +1である
この例では、商多項式p(X)が、偶数Nおよびε∈{-1,1}についての形式p(X)=X+εXN/2+1の三項式である。特に、これは、全てのi∈{0,...,N}\{0,N/2,N}について、p=p=1、pN/2=±1、およびp=0であることを意味する。この商多項式の選択について、テスト多項式は、多くとも2つのそれぞれの所望の出力値の合計としてそれぞれの係数を決定することによって、例えば、K=(X-tν(X))であるように任意の固定係数sに対して効率的にプログラムされ得る。
【0126】
例えば、s<N/2の場合に、係数は、以下のように計算され得る:
【数76】
この場合、全てのt∈{0,...,N-1}について、(X-tν(X))=Kであることが検証され得る。
【0127】
上記の関係式は、以下のように導き出され得る。関係(*)は、この場合に対して:
【数77】
として特殊化され得る。このことから:
【数78】
であることが、導き出され得る。(X-tν(X))についての以下の表現が導き出され得る。
【数79】
について:
(X-tν(X))=(ν(X))t+s
である。
【0128】
【数80】
について、この場合は、上の場合に変形することによって処理され得る:
(X-tν(X))=(X-(N/2-s-1)-(t-N/2+s+1)ν(X))
=(X-(t-N/2+s+1)ν(X))N/2-1
=(X-(t-N/2+s)ν(X))N/2-ε(X-(t-N/2+s)ν(X))
=(ν(X))t+s-ε(ν(X))t+s-N/2
最後に、N-s≦t<Nについて、ここでも前の場合に変形することによって、
(X-tν(X))=(X-(N-s-1)-(t-N+s+1)ν(X))
=(X-(t-N+s+1)ν(X))N-1-ε(X-(t-N+s+1)ν(X))N/2-1
=-(X-(t-N+s)ν(X))-ε((X-(t-N+s)ν(X))N/2
-ε(X-(t-N+s)ν(X))
=-ε(X-(t-N+s)ν(X))N/2
=-ε(ν(X))t+s-N/2
ここで、ε=1が用いられる:したがって、
【数81】
である。
【0129】
解は、次のように検証され得る:
0≦t<N/2-sの場合:これは、
【数82】
および、したがって、
(X-tν(X))=(ν(X))s+t=K(s+t)-s=K
を示す。
【0130】
N/2-s≦t<N/2の場合:これは、上記の(X-tν(X))の第2の場合に対応する。よって:
(X-tν(X))=(ν(X))t+s-ε(ν(X))t+s-N/2
である。条件は、
【数83】
および
【数84】
よって、
(X-tν(X))=-εKN/2+t-ε(-KN/2+t-εK)=K
を示す。
【0131】
【数85】
の場合:この場合も、これは、上記の第2の場合に対応するが、今回は、
【数86】
および
【数87】
であり、これは、
(X-tν(X))=εKt-N/2+K-εKt-N/2=K
をもたらす。
【0132】
N-s≦t<Nの場合:この場合
【数88】
であり、よって
(X-tν(X))=-ε(ν(X))t+s-N/2=εN/2+(t+s-N/2-s)=K
である。
【0133】
別の例として、s≧N/2の場合に、係数は、以下のように計算され得る:
【数89】
この場合も、全てのt∈{0,...,N-1}について、(X-tν(X))=Kであることが検証され得る。
【0134】
例えば、テスト多項式230を決定するために以下のアルゴリズムが使用され得る:
【0135】
【表4】
【0136】
テスト多項式の例4:他の商多項式/係数
一般に、他の商多項式のためのテスト多項式を決定するために、例3の手法の後、tの値ごとに((X-tν(X)))についての明示式を書き出すこと、および結果となる系を解くことが行われ得る。この手法は、例えば、多くとも3個、多くとも5個、または多くとも10個の非ゼロ係数を有する疎な多項式に好適である。
【0137】
テスト多項式を決定する別の方法が、R[X]/(p(X))におけるX-1による多項式ν(X)の乗算をν(x)の係数ベクトルとの行列乗算として見ることである。このことは、それ自体は知られている技術を使用して解くことが可能であり、解がテスト多項式の係数に対応するN個の線形方程式およびN個の変数の系を生じる結果となる。多くの場合の系が解くことができ;そうでない場合、例えば、テスト多項式を決定するために、次の固定係数が選択され得る。
【0138】
モジュラス/商多項式/NTT多項式の例
以下では、モジュラス、商多項式、およびNTT多項式についてのいくつかの特に有利な選択について説明されて、数論変換を用いた効率的な多項式乗算を可能にする。
【0139】
一般に、以下の例は、整数qの異なる値についての環
【数90】
上の多項式を考える。NTT多項式の次数Mは、3の累乗であるように選択され得る。商多項式は、商多項式としてM次円分多項式p(X)=X+XN/2+1に設定され得る。
【0140】
十分な暗号セキュリティを効率的な計算と組み合わせる1つの特に良い選択が、M=3=2187、およびN=2・3=1458である。N/M=2/3>1/2であり、それによって、この例が、ブラインド回転が入力平文値の半分以上を処理することが可能であるという利点に恵まれることに留意されたい。
【0141】
具体的には、上述したように、この商多項式および所望の出力値K=(K,...,KN-1)∈Rの所与のルックアップテーブルについて、Kの値が、固定係数としてX-tν(X)の定数係数でプログラムされ得る。この場合、テスト多項式
【数91】
の係数は:
【数92】
と決定され得る。
【0142】
素数のモジュラス
例えば、数論変換として、例えば、「Modern Computer Algebra」に記載されているように、および本明細書の他の箇所でもより詳細に説明されるように、通常の数論変換が使用されてもよい。この数論変換は、離散フーリエ変換としても知られている。これは、モジュラスおよび商多項式を法とする環
【数93】
における多項式を直接乗算することを可能にする。通常の数論変換は、モジュラスqが
【数94】
が1の原始M乗根を含むように選択される場合に適用され得る。これを保証する方法の1つは、Mがq-1を割り切るようにqを素数であるように設定することによる。以下は、共通データ型に合致するサイズ32ビットおよび64ビットのそのような素数の2つの例である:
・ 231<q=10・318+1≦232、および
・ 263<q=4・339+1<264
NTTを適用するための対応する1のM乗根が、それ自体知られているように、取得され得る。例えば、q=10・318+1の場合に
【数95】
、q=4・339+1の場合に
【数96】
をとり得る。これらは両方とも、それぞれ1の3根である。
【0143】
2の累乗のモジュラス
他の箇所でも説明されるように、2の累乗のモジュラスを選択することが非常に有益であることが多い。一般的な選択は、q=232またはq=264である。Mが3の累乗であるように選択される場合、Mおよびqが互いに素である。
【数97】
は、1の原始M乗根を含まないため、通常のNTTは、この場合に数論変換として直接適用されることができない(具体的には、このために、Mが
【数98】
の単元のグループの位数を割り切る必要があるため、
【数99】
は、位数Mの要素を含むことができない。それは、qが2の累乗である場合にq/2である)。しかしながら、他の数論変換は、この設定で適用され得る。例えば、ショーンハーゲのアルゴリズムまたはヌスバウマーのアルゴリズムが使用され得る。同じことが、Mが
【数100】
における単元であるようなMの他の選択にも当てはまる。
【0144】
図3は、例えば、図2のブラインド回転において使用するための、累算器ユニット360の実施形態の例を概略的に示す。
【0145】
累算器ユニット360は、ブートストラッピング鍵のGGSW暗号化された現在のビット371が設定されているかどうかに応じて、LWE型暗号文の現在のランダムマスク値311を現在のGLWE暗号化350に選択的に加算する累算演算を行うように構成され得る。
【0146】
累算器ユニット360は、ブートストラッピング鍵の現在のビット371が設定されているかどうかに依存して、現在のGLWE暗号化350、または現在のランダムマスク値311を表す単項式によって乗算された現在のGLWE暗号化のいずれかを忘却的に(obliviously)選択するように構成され得る。第1のまたは第2のGLWE暗号文を忘却的に選択するそのような演算は、制御されたセレクタゲートまたは制御されたマルチプレクサ演算CMuxとしても知られている。一般に、ビットb∈{0,1}を暗号化するGGSW暗号文Cおよび2つのGLWE暗号文cおよびcが与えられると、CMux演算は、cと同一の平文を暗号化する暗号文を出力し得る。
【数101】
ここで、
【数102】
は、暗号文の外部積を示す。「Programmable bootstrapping enables efficient homomorphic inference of deep neural networks」に、詳細な例が与えられている。この場合、累算器ユニットは、
【数103】
を計算してもよく、ここで、ACCは、現在のGLWE暗号化350であり、
【数104】
は、現在のランダムマスク値311であり、bsk[j]は、GGSW暗号化された現在のビット371である。
【0147】
2つのGLWE暗号化間で忘却的な選択を行うために、累算器ユニット360は、ビット371が設定されている場合の所望の出力とビット371が設定されていない場合の所望の出力との間のGLWE暗号化された差363を計算し得る。差363は、多項式乗算ModMul362を計算することによって行われ得る。多項式乗算は、現在のGLWE暗号化ACC350を、現在のランダムマスク値311から導出される多項式、例えば
【数105】
312と乗算してもよく、例えば上記の表記を使用して、
【数106】
が計算され得る。多項式乗算362は、典型的には、数論変換のフーリエドメイン表現ではなく、多項式の係数ドメイン表現で行われる。
【0148】
暗号化された差363が与えられると、累算器ユニット360は、GGSW暗号化されたビット371との差の外部積を計算し得る。これは、暗号化されたビット371がゼロである場合にゼロを暗号化しビットが1である場合に差363を暗号化するGLWE暗号化368をもたらし得る。
【0149】
それ自体知られているように、GLWE暗号化363とGGSW暗号化371とのそのような外部積を行うことは、複数のそれぞれの多項式積を計算することを含み得る。一般に、所与の平文のGGSW暗号化371は、平文に依存する値の複数のそれぞれのGLWE暗号化を含み得る。例として、「Programmable bootstrapping enables efficient homomorphic inference of deep neural networks」に記載されているGGSW暗号化
【数107】
は、それぞれの値h(r)についてのそれぞれのGLWE型暗号化
【数108】
を含むように考慮されてもよく、I.Chillottiら、「CONCRETE:Concrete Operates oN Ciphertexts Rapidly by Extending TfhE」(https://homomorphicencryption.org/wp-content/uploads/2020/12/wahc20_demo_damien.pdfにおいて入手可能であり、引用により本明細書に組み込まれる)において与えられるTGGSW暗号化の定義も参照されたい。
【0150】
特に、外部積を計算することは、それ自体知られているように、GLWE暗号化363のガジェット分解GDec364を計算することを含み得る。ガジェット分解は、GLWE暗号化363に基づいて定義された多項式のベクトル365をもたらし得る。ガジェット分解は、典型的には、係数表現の多項式に対して計算される。外部積は、ガジェット分解ベクトル365を、多項式の行列と見なされるGGSW暗号化371と乗算することによって計算され得る。行列乗算は、本明細書で説明するように、モジュラスqおよび商多項式q(x)を法として計算されてもよく、したがって、GLWE暗号化363に基づくそれぞれの多項式とGGSW暗号化371の多項式との多項式乗算を含み得る。
【0151】
興味深いことに、これらの多項式乗算は、数論変換を使用して効率的に行われ得る。このために、ガジェット分解365は、典型的には係数表現で計算364され、数論変換NTT320を適用することによってフーリエドメイン表現に変換され得る。結果は、フーリエドメイン表現のガジェット分解366であり、図面において破線で示されている。ガジェット分解366は、次いで、フーリエドメイン多項式乗算FFTMul330を適用することによって、フーリエドメイン表現でも、GGSW暗号化371と乗算され得る。この乗算330は、他の箇所でもより詳細に説明されるように、評価点のセット内のそれぞれの多項式の評価を点ごとに乗算することを含み得る。結果は、フーリエドメイン表現の、外部積から得られるGLWE暗号化367であってもよい。数論変換の逆のINTT340を使用してフーリエドメイン表現367を変換することによって、GLWE暗号化は、係数表現368で取得され得る。
【0152】
図に示されるように、GGSW暗号化371は、フーリエドメイン表現された形式で取得されてもよく、例えば、フーリエドメイン表現で別の関係者またはストレージから受信され得る。しかし、累算360の一部としてNTT320を適用することによって、フーリエドメイン表現された形式に変換することも可能である。
【0153】
フーリエドメイン表現に変換すること320およびフーリエドメイン表現から変換すること340、ならびにフーリエドメインで多項式乗算330を行うことの詳細な例が、ここで与えられる。この例は、離散フーリエ変換を示し、「通常の」または「標準」数論変換とも呼ばれることもある。
【0154】
この例では、Rが1を有する環であるとする。また、ωを、M>1の整数に対する1の原始M乗根とする。NTT多項式X-1を法とする2つの多項式f、g∈R[X]/(X-1)を乗算する方法が説明される。これは、例えば「Modern Computer Algebra」の第8章からそれ自体知られている。
【0155】
多項式、次数<Mのf:=f(X)=f+fX+・・・+fM-1M-1∈R[X]が、係数ベクトル、例えば、(f,f,...,fM-1)∈Rとして係数形式で表され得る。多項式f(Rのベクトルとして見られる)の離散フーリエ変換は、ωのそれぞれの累乗におけるfの評価を含み得る。例えば:
【数109】
である。
【0156】
次数<Mの2つの多項式f、g∈R[X]について、
DFTω(f*g)=DFTω(f)・DFTω(g)
が成り立つ。ここで、*は、多項式畳み込みを示し、・は、ベクトルの点ごとの乗算を示す。
【0157】
次数<Mの多項式f、g∈R[X]/(X-1)が与えられると、X-1を法とする乗算は畳み込み(例えば、fg≡f*g(modX-1))であるので、多項式積h:=fg∈R[X]/(X-1)は、この例では、DFT320、点ごとの乗算330、および逆DFT340を適用することによって取得され得る:
h=DFTω -1(DFTω(f)・DFTω(g))
ここでDFTω -1は、逆離散フーリエ変換を示す。興味深いことに、次数<Mの任意の多項式h∈R[X]について、
【数110】
が成り立つ。
【0158】
一般に、NTT多項式X-1を割り切る商多項式q(X)が与えられると、商多項式を法とする多項式積は、h(X)mod q(X)を計算することによって取得され得る。
【0159】
いくつかの商多項式q(X)について、例えば、NTT多項式の次数ではなくq(X)の次数に等しい要素の数を用いたフーリエドメイン表現に基づいて、NTTベースの多項式乗算を特に効率的に行うことが可能である。そのような場合に、フーリエドメイン表現は、1の原始M乗根の累乗のセットのサブセットのみを含み得る。
【0160】
例えば、f、g∈R[X]/(X+XN/2+1)が与えられると、f∈Rで
【数111】
であり、およびg∈Rで
【数112】
と書く。i∈{1,2}に対して、f (X)=f(ωX)およびg (X)=g(ωX)と定義する。ω-1=(ωN/2-1)(ω+ωN/2+1)=0であることに留意すると、ωが、1の原始(3N/2)乗根であるため、ω+ωN/2+1=0ということになり、多項式X+XN/2+1は、X+XN/2+1=(XN/2-ωN/2)(XN/2-ω)=((ωX)N/2-1)((ωX)N/2-1)と表され得る。ゆえに:
【数113】
および
【数114】
であることが分かり得る。
【0161】
同様に、
【数115】
であり、ここで
【数116】
、および
【数117】
であり、ここで
【数118】
が成り立つ。
【0162】
η:=ωとし、それは、1の原始(N/2)乗根である。i∈{1,2}に対し、h :=f mod (XN/2-1)は、
=DFTη -1(DFTη(f )・DFTη(g ))
と計算され得る。多項式h:=f mod ((ω3-iX)N/2-1)は、i∈{1,2}について、
【数119】
であり、hi,j=hi,j (ω-j∈R
として回復され得る。中国の剰余定理を適用することで
【数120】
として積多項式h:=fg∈R[X]/(X+XN/2+1)をもたらし得る。
【0163】
したがって、この場合、数論変換演算320は、
【数121】
として実施されてもよく、入力としてR[X]/(X+XN/2+1)の多項式365をとり、そのフーリエ表現366を返す。例えば、f∈R[X]/(X+XN/2+1)が与えられると、フーリエ表現は、
【数122】
と計算され得る。ここで、η=ωであり、または等価的に、
【数123】
である。逆演算340は、
【数124】
と記載されてもよく、乗算330は、DFTη(f )・DFTη(g )、i=1、2として実施される。
【0164】
上記の例では、1の原始M乗根が使用され、MがNTT多項式の次数であった。Mが
【数125】
内の単元であるという唯一の条件下で数論変換を実施することも可能である。例えば、数論変換は、ショーンハーゲのアルゴリズムを使用して実施することができるが、例えば、「Modern Computer Algebra」のアルゴリズム8.30を参照、またはヌスバウマーのアルゴリズムを使用して実施することができるが、例えば、「Modern Computer Algebra」の演習4.6.4.59を参照のこと。数論変換のさらなる実装形態は、例えば、D.Bernstein、「Multidigit multiplication for mathematicians」、Unpublished manuscript、https://cr.yp.to/papers.html#m3において入手可能、2001年8月(引用により本明細書に組み込まれる)、およびH.Nussbaumer、「Fast polynomial transform algorithms for digital convolution」、IEEE Transactions on Acoustics,Speech,and Signal Processing、28(2):205-215頁、1980年(引用により本明細書に組み込まれる)に、開示されている。
【0165】
GLWE暗号化368は、累算器ユニットの出力、例えば
【数126】
または等価的に、
【数127】
を表すGLWE暗号化350’を取得するために、現在のGLWE暗号化350に加算369で準同型的に加算され得る。
【0166】
上記技術の変形が可能であり、例えば、暗号鍵371のゼロおよび1の役割は、差363およびGLWE暗号化368に加算された値に適切に適応することによって逆にされ得る;加算369はフーリエドメインにおいて行われ得る;などである。また、そのような他の場合、一般に、累算器ユニット360は、ブートストラッピング鍵のGGSW型暗号文とのGLWE型暗号文の外部積を計算し得る。それは、上述したその多項式乗算に数論変換を使用することによって、より効率的になり得る。
【0167】
図2および図3の例では、提案される技術は、(G)LWE暗号化およびそのガジェット変形GGSWに基づいて説明される。特に、上記説明では、ブラインド回転が適用される暗号文211は、LWE暗号文であり、ブラインド回転の暗号化された多項式積250が、GLWE暗号化であり、累算器が、ブートストラッピング鍵のGGSW暗号化を使用して実施される。
【0168】
しかしながら、LWEを使用する必要は必ずしもなく、特に、入力暗号文211および/または暗号化された多項式積250にNTRU型暗号化を使用することが可能である。後者の場合、ブートストラッピング鍵は、ガジェットNTRU暗号化を含み得る。より概略的には、提供される技術は、テスト多項式とX+1とは異なる商多項式を法とするブートストラッピング多項式との暗号化された多項式積が得られる任意のブラインド回転、例えば、任意の累算器ベースのブラインド回転に適用され得る。
【0169】
特に、暗号化された多項式積250にNTRUを使用することに関して、説明される「ブラインド回転」アルゴリズム自体が抽象累算器ACCを利用することに留意されたい。上述したように、この累算器がGLWEに基づいて実施されてもよいが、これは必須ではない。他の種類の累算器が、例えば、NTRUに基づいて可能である。NTRU暗号文に基づいて、GGSW暗号化に類似のガジェット暗号化が定義されてもよく、それを用いて、外部積が定義され得る。詳細な例が、C.Bonteら、「FINAL:Faster FHE instantiated with NTRU and LWE」、https://ia.cr/2022/074において見つけられ得る。したがって、累算器は、NTRUに基づいて実施されてもよく、その値は、例えば、
【数128】
内の要素を含んでもよく、CMuxは、図3に関して説明されるように定義され得る。
【0170】
例として、この種類のNTRUベース累算器を使用してμを暗号化するLWE暗号文cにブラインド回転を適用することは、ブートストラッピング単項式
【数129】
およびテスト多項式νの暗号化された多項式積
【数130】
を生じ得る。この場合、暗号化された多項式は、形式
【数131】
のNTRU暗号文であってもよい。適当なキースイッチング鍵を使用すると、
【数132】
の定数項を暗号化するLWE暗号文は、任意選択で、参考文献「FINAL」で説明されるように、この暗号化された多項式から抽出され得る。
【0171】
暗号化された多項式の代わりに、または暗号化された多項式に加えて、入力暗号文211もLWE型暗号文である必要がない。特に、ブラインド回転は、参考文献「FINAL」で説明されるように、NTRU型暗号文に適用され得る。参考文献「FINAL」で説明されるように、入力LWE暗号文211をNTRU暗号文から変換することによって取得することも可能である。
【0172】
そのような場合にも、暗号化された多項式積
【数133】
が固定係数で所望の出力値を含むように、テスト多項式νを定義することが望ましい。NTRUの場合にも、提供される技術は、使用されるX+1とは異なる商多項式の様々な選択について、テスト多項式が定義されることを可能にする。
【0173】
図4は、暗号化計算方法400の実施形態の例を概略的に示す。暗号化計算方法400は、コンピュータ実装され得る。
【0174】
方法400は、平文値を暗号化する、例えばLWE型の暗号文を取得すること410を含み得る。
【0175】
方法400は、テスト多項式に従って暗号文のブラインド回転を行うこと420をさらに含み得る。ブラインド回転は、テスト多項式とモジュラスqを法としおよび商多項式p(X)を法とするブートストラッピング単項式との暗号化された多項式積を生じ得る。ブートストラッピング単項式は、平文値を指数として表し得る。商多項式p(X)は、モジュラスqを法とする数論変換を可能にするNTT多項式、例えばX-1を割り切り得る。ブラインド回転を行うことは、数論変換を使用して多項式乗算を行うこと425を含み得る。テスト多項式は、多項式積が平文値についての所望の出力値を固定係数として有するように定義され得る。
【0176】
図5は、テスト多項式を決定する方法500の実施形態の例を概略的に示す。方法500は、コンピュータ実装され得る。
【0177】
テスト多項式は、本明細書で説明されるように、暗号化計算において使用するためのものであり得る。暗号化計算方法は、ブートストラッピング単項式とモジュラスqを法としおよび商多項式p(X)を法とするテスト多項式との多項式積を計算することを含み得る。商多項式p(X)は、NTT多項式を割り切り得る。
【0178】
方法500は、それぞれの平文値についての所望の出力値を定義するルックアップテーブルを取得すること510を含み得る。方法500は、モジュラス、商多項式、およびNTT多項式を取得すること520を含み得る。方法500は、多項式積がそれぞれの所望の出力値をそれぞれの平文値に対する固定係数として有するように、テスト多項式を計算すること530を含み得る。
【0179】
当業者に明らかとなるように、方法400、500を実行する多くの異なる方法が可能である。例えば、ステップの順序が示された順序で行われてもよいが、ステップの順序が変化してもよく、またはいくつかのステップが並列で実行されてもよい。さらに、ステップ間において、他の方法ステップが挿入されてもよい。挿入されたステップは、本明細書で説明されるような方法の改良を表してもよく、または方法に関連しなくてもよい。例えば、少なくとも部分的に、並列していくつかのステップが実行されてもよい。さらに、所与のステップは、次のステップが開始される前に完全に終了していなくてもよい。方法400、500を組み合わせることも可能であり、例えば、テスト多項式を使用して暗号化計算を行う方法400は、方法500によるテスト多項式の計算の後に行われてもよい。
【0180】
方法の実施形態は、ソフトウェアを使用して行われてもよく、ソフトウェアは、プロセッサシステムに方法400または500を行わせる命令を含む。ソフトウェアは、システムの特定のサブエンティティによって行われるそれらのステップのみを含み得る。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適当なストレージ媒体に記憶され得る。ソフトウェアは、有線、またはワイヤレスに沿った信号として送信されることが可能であり、またはデータネットワーク、例えばインターネットを使用して送信されることが可能である。ソフトウェアは、ダウンロードおよび/またはサーバ上でのリモート利用に利用可能にされ得る。方法の実施形態は、方法を行うために、プログラマブルロジック、例えば、フィールドプログラマブルゲートアレイ(FPGA)を構成するように構成されたビットストリームを使用して実行され得る。
【0181】
本開示の主題も、特に本開示の主題を実践するように構成されたコンピュータプログラム、特に、搬送波上または搬送波中のコンピュータプログラムに拡大すると理解されたい。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、および部分的にコンパイルされた形式などのオブジェクトコードの形式、または方法の実施形態の実装形態における使用に適した任意の他の形式であってもよい。コンピュータプログラム製品に関連する実施形態は、記述した方法の少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分化されてもよく、および/または静的もしくは動的にリンクされ得る1つ以上のファイル内に記憶されてもよい。コンピュータプログラム製品に関連する別の実施形態は、記述したシステムおよび/または製品の少なくとも1つのデバイス、ユニット、および/または部品のそれぞれに対応するコンピュータ実行可能命令を含む。
【0182】
典型的には、本明細書、例えば、図1a-1cに記載されたデバイスは、システムに記憶された適当なソフトウェアを実行する1つ以上のマイクロプロセッサを含む。例えば、そのソフトウェアが、対応するメモリ、例えば、RAMなどの揮発性メモリまたはフラッシュなどの不揮発性メモリにダウンロードおよび/または記憶されていてもよい。代替として、システムは、全体的または部分的に、プログラマブルロジック、例えばフィールドプログラマブルゲートアレイ(FPGA)において実装され得る。システムは、全体的または部分的に、いわゆる特定用途向け集積回路(ASIC)、例えば、それらの特定の用途のためにカスタマイズされた集積回路(IC)として実装され得る。例えば、回路は、例えば、Verilog、VHDLなどのハードウェア記述言語を使用してCMOSで実装され得る。特に、システムは、暗号プリミティブの評価のための回路を含み得る。
【0183】
プロセッサ回路は、分散様式で、例えば、複数のサブプロセッサ回路として実装され得る。ストレージは、複数の分散サブストレージにわたって分散され得る。メモリの一部または全てが、電子メモリ、磁気メモリなどであってもよい。例えば、ストレージは、揮発性および不揮発性部分を有し得る。ストレージの一部が、読み取り専用であってもよい。
【0184】
図6は、書き込み可能部分1010を有するコンピュータ可読媒体1000を示す。コンピュータ可読媒体1000は、光学読み取り可能媒体の形式で示されている。コンピュータ可読媒体1000は、データ1020を記憶してもよく、データは、プロセッサシステムによって実行されると、実施形態に従って、プロセッサシステムに暗号化計算方法を行う方法および/またはテスト多項式を決定する方法の実施形態を行わせる命令を示し得る。
【0185】
代わりに、または加えて、データ1020は、実施形態による暗号化計算方法において使用するテスト多項式を表し得る。テスト多項式は、実施形態により前もって決定されてもよい。
【0186】
データ1020は、物理的マークとして、またはコンピュータ可読媒体1000の磁化によって、コンピュータ可読媒体1000上に具現化され得る。しかしながら、任意の他の適当な実施形態も考えられる。さらに、コンピュータ可読媒体1000はここでは光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適当なコンピュータ可読媒体であってもよく、記録不可能であっても記録可能であってもよいことを理解されたい。コンピュータプログラム1020は、プロセッサシステムに、暗号化された値、例えばLWE暗号化された値に対して計算を行う前記方法、またはテスト多項式を決定する前記方法を行わせる命令を含む。
【0187】
図7は、暗号化計算を行うため、またはテスト多項式を決定するためのデバイスの実施形態によるプロセッサシステム1140の概略的表現を示す。プロセッサシステムは、1つ以上の集積回路1110を含む。1つ以上の集積回路1110のアーキテクチャは、図に概略的に示されている。回路1110は、コンピュータプログラム構成要素を実行して、実施形態による方法を実行するため、および/またはそのモジュールもしくはユニットを実装するための処理ユニット1120、例えばCPUを含む。回路1110は、プログラミングコード、データなどを記憶するためのメモリ1122を含む。メモリ1122の一部は、読み出し専用であり得る。回路1110は、通信要素1126、例えばアンテナ、コネクタ、またはその両方などを含み得る。回路1110は、方法で定義された処理の一部または全部を行うための専用の集積回路1124を含み得る。プロセッサ1120、メモリ1122、専用IC1124、および通信要素1126は、相互接続1130、例えばバスを介して相互に接続され得る。プロセッサシステム1110は、アンテナおよび/またはコネクタを使用して、それぞれ接触および/または非接触通信のために構成され得る。
【0188】
例えば、実施形態では、プロセッサシステム1140、例えば暗号化計算を行うまたはテスト多項式を決定するためのデバイスは、プロセッサ回路およびメモリ回路を含んでもよく、プロセッサは、メモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、Intel Core i7プロセッサ、ARM Cortex-R8などであってもよい。実施形態では、プロセッサ回路はARM Cortex M0であってもよい。メモリ回路は、ROM回路、または不揮発性メモリ、例えばフラッシュメモリであってもよい。メモリ回路は、揮発性メモリ、例えばSRAMメモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するように構成された不揮発性ソフトウェアインターフェース、例えば、ハードドライブ、ネットワークインターフェースなどを含んでもよい。
【0189】
デバイス1110は、説明された各構成要素の1つを含むものとして示されているが、様々な構成要素が、様々な実施形態において複製され得る。例えば、プロセッサ1120は、本明細書で説明される方法を独立して実行するように構成されるか、または複数のプロセッサが本明細書で説明される機能を達成するために協調するように本明細書で説明される方法のステップまたはサブルーチンを行うように構成される複数のマイクロプロセッサを含んでもよい。さらに、デバイス1110がクラウドコンピューティングシステムにおいて実施されている場合、様々なハードウェア構成要素が、別個の物理システムに属し得る。例えば、プロセッサ1120は、第1のサーバ内の第1のプロセッサおよび第2のサーバ内の第2のプロセッサを含み得る。
【0190】
上述した実施形態は、本開示の主題を限定するのではなく例示し、当業者は多くの代替実施形態を設計することができることに留意されたい。
【0191】
請求項では、括弧の間に配置されたいかなる参照符号も、請求項を限定するものと解釈されないものとする。動詞「備える」およびその活用の使用は、請求項に規定されているもの以外の要素またはステップの存在を排除するものではない。要素に先行する冠詞「1つの(a)」または「1つの(an)」は、複数のそのような要素の存在を排除するものではない。要素のリストに先行するときの「のうちの少なくとも1つ」などの表現は、リストからの要素の全てまたは任意のサブセットの選択を表す。例えば、「A、B、およびCのうちの少なくとも1つ」という表現は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、またはA、B、およびCの全てを含むものとして理解されるべきである。本開示の主題は、いくつかの別個の要素を含むハードウェアによって、および適当にプログラムされたコンピュータによって実装され得る。いくつかの部分を列挙するデバイス請求項では、これらの部分のいくつかは、ハードウェアの1つの同じアイテムによって具現化され得る。ある手段が相互に異なる従属請求項に列挙されているという事実だけでは、これらの手段の組合せが有利に使用され得ないことを示していない。
【0192】
請求項において、括弧内の参照は、例示的な実施形態の図面における参照符号または実施形態の式を指し、したがって、請求項の明瞭度を増加させる。これらの参照は、請求項を限定するものと解釈してはならない。
図1a
図1b
図1c
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2024-08-05
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
暗号法的暗号化計算方法(400)であって、
- 平文値を暗号化する暗号文を取得すること(410)と、
- テスト多項式に従って暗号文のブラインド回転を行うこと(420)であって、ブラインド回転が、テスト多項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするブートストラッピング単項式との暗号化された多項式積を生じ、ブートストラッピング単項式が平文値を指数として表す、こと(420)と、
を含み、
商多項式(p(X))が、モジュラス(q)を法とする数論変換を可能にするNTT多項式(X-1)を割り切り、ブラインド回転を行うことが、数論変換を使用して多項式乗算を行うこと(425)を含み、テスト多項式が、多項式積が平文値に対する所望の出力値を固定係数として有するように定義される、方法(400)。
【請求項2】
暗号文が、LWE型暗号文である、請求項1に記載の方法(400)。
【請求項3】
暗号文が、NTRU型暗号文からの変換によって取得される、請求項2に記載の方法(400)。
【請求項4】
暗号文が、NTRU型暗号文である、請求項1に記載の方法(400)。
【請求項5】
入力暗号文を取得することと、暗号文を取得するために入力暗号文に対してモジュラススイッチングを行うことと、ブラインド回転を行うことと、固定係数の暗号化を計算された暗号化された多項式積から抽出するためにサンプル抽出を行うこととによって、プログラマブルブートストラッピングを行うことを含む、請求項1に記載の方法(400)。
【請求項6】
ブラインド回転を行うことが、ブートストラッピング鍵に含まれるガジェット暗号文との暗号文の外部積を計算することを含み、外部積を計算する多項式乗算が数論変換を使用して行われる、請求項1に記載の方法(400)。
【請求項7】
商多項式が、X+1に等しくない、請求項1に記載の方法(400)。
【請求項8】
商多項式の次数(N)が、NTT多項式の次数(M)の半分より厳密に大きい、請求項1に記載の方法(400)。
【請求項9】
モジュラス(q)が、2の累乗である、請求項1に記載の方法(400)。
【請求項10】
モジュラス(q)が素数であり、NTT多項式の次数(M)がモジュラスから1を引いた値を割り切る、請求項1に記載の方法(400)。
【請求項11】
モジュラスが、10・318+1または4・339+1に等しい、請求項10に記載の方法(400)。
【請求項12】
商多項式が、X+XN/2+1またはX-XN/2+1に等しい、請求項1に記載の方法(400)。
【請求項13】
NTT多項式の次数が3の累乗であり、商多項式の次数がNTT多項式の次数の3分の2である、請求項1に記載の方法(400)。
【請求項14】
固定係数が、定数係数または主係数である、請求項1に記載の方法(400)。
【請求項15】
請求項1から14のいずれか一項に記載の暗号化計算方法において使用するテスト多項式を決定する方法(500)であって、暗号化計算方法が、ブートストラッピング単項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするテスト多項式との多項式積を計算することであって、商多項式(p(X))が、NTT多項式を割り切る、ことを含み、方法が、
- それぞれの平文値に対する所望の出力値を定義するルックアップテーブルを取得すること(510)と、
- モジュラス、商多項式、およびNTT多項式を取得すること(520)と、
- 多項式積がそれぞれの所望の出力値をそれぞれの平文値に対する固定係数として有するように、テスト多項式を計算すること(530)と
を含む、方法(500)。
【請求項16】
暗号化計算デバイス(110、112)であって、
- 平文値を暗号化した暗号文を記憶するためのストレージ(140)、
- テスト多項式に従って暗号文のブラインド回転を行うように構成されるプロセッササブシステム(130)であって、ブラインド回転が、テスト多項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするブートストラッピング単項式との暗号化された多項式積を生じ、ブートストラッピング単項式が平文値を指数として表す、プロセッササブシステム(130)
を備え、
商多項式(p(X))が、モジュラス(q)を法とする数論変換を可能にするNTT多項式(X-1)を割り切り、ブラインド回転を行うことが、数論変換を使用して多項式乗算を行うことを含み、テスト多項式が、多項式積が平文値に対する所望の出力値を固定係数として有するように定義される、暗号化計算デバイス(110、112)。
【請求項17】
請求項1から14のいずれか一項に記載の暗号化計算方法において使用するテスト多項式を決定するためのデバイス(111、112、113、119)であって、暗号化計算方法が、ブートストラッピング単項式とモジュラス(q)を法としおよび商多項式(p(X))を法とするテスト多項式との多項式積を計算することであって、商多項式(p(X))がNTT多項式を割り切る、ことを含み、デバイスが、
- それぞれの平文値に対する所望の出力値を定義するルックアップテーブルを記憶するストレージ(149)、
- プロセッササブシステム(139)であって、
- モジュラス、商多項式、およびNTT多項式を取得し、
- 多項式積がそれぞれの所望の出力値をそれぞれの平文値に対する固定係数として有するように、テスト多項式を計算する
ように構成される、プロセッササブシステム(139)
を備える、デバイス(111、112、113、119)。
【請求項18】
一時的または非一時的コンピュータ可読記憶媒体(1000)であって、
- プロセッサシステムによって実行されると、プロセッサシステムに請求項1から14のいずれか一項に記載の方法を行わせる、および/または請求項15に記載の方法を行わせる命令、および/または、
- 請求項1から14のいずれか一項に記載の暗号化計算方法において使用するテスト多項式
を表すデータを含む、一時的または非一時的コンピュータ可読記憶媒体(1000)。
【国際調査報告】