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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-21
(54)【発明の名称】暗号化されたスカラー乗算
(51)【国際特許分類】
   G09C 1/00 20060101AFI20240214BHJP
【FI】
G09C1/00 620Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023552030
(86)(22)【出願日】2022-02-15
(85)【翻訳文提出日】2023-10-25
(86)【国際出願番号】 EP2022053685
(87)【国際公開番号】W WO2022179891
(87)【国際公開日】2022-09-01
(31)【優先権主張番号】21290010.4
(32)【優先日】2021-02-26
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
2.イーサネット
(71)【出願人】
【識別番号】523168881
【氏名又は名称】ザマ・エス・ア・エス
(74)【代理人】
【識別番号】110001173
【氏名又は名称】弁理士法人川口國際特許事務所
(72)【発明者】
【氏名】ジョワ,マルク
(57)【要約】
いくつかの実施形態は、暗号化された値をスカラーにより準同型乗算するための係数のセットを決定する、コンピュータにより実装される方法(500)を対象とする。暗号化された値は、偶数の基数のそれぞれの累乗により乗算された値を暗号化する複数のそれぞれの値の暗号文によって表される。スカラー乗算は、係数のセットに従って、複数のそれぞれの値の暗号文の線形結合として行われる。係数のセットは、基数に関するスカラーの基数分解の桁として決定される。決定された桁は、マイナスの基数の半分、含んでいる、とプラスの基数の半分、含んでいる、の間にある。後続の2桁が絶対値において両方とも基数の半分に等しいことがないことが保証される。
【特許請求の範囲】
【請求項1】
暗号化乗算ユニットにより使用するための係数のセットを決定する、コンピュータにより実装される方法(500、500’)であって、暗号化乗算ユニットは、暗号化された値をスカラーにより準同型的に乗算するように構成され、暗号化された値が、複数のそれぞれの値の暗号文により表され、それぞれの値の暗号文が、基数のそれぞれの累乗により乗算された値を暗号化するノイジーな準同型暗号文であり、暗号化乗算ユニットが、係数のセットに従って、複数のそれぞれの値の暗号文の線形結合を準同型的に計算するように構成され、方法が、
- スカラーおよび基数を取得すること(510)であって、基数が偶数である、こと(510)、
- 係数のセットを、基数に関するスカラーの基数分解の桁として決定すること(520)であって、決定された桁が、マイナスの基数の半分、含んでいる、とプラスの基数の半分、含んでいる、の間にあり、前記決定することが、後続の2桁が両方とも絶対値において基数の半分に等しくはないことを保証すること(521)を含む、こと(520)、
- 暗号化された値をスカラーにより準同型的に乗算するために、暗号化乗算ユニットに係数のセットを提供すること(530)
を含む、方法(500、500’)。
【請求項2】
基数分解の少なくとも1つの桁を基数の半分に設定し、基数分解の少なくとも1つのさらなる桁をマイナスの基数の半分に設定することを含む、請求項1に記載の方法(500、500’)。
【請求項3】
前記保証することが、選択が後続の桁が絶対値において基数の半分に等しいことをもたらすかどうかを決定することに基づいて、プラスの基数の半分とマイナスの基数の半分の中から基数分解の桁を選択することを含む、請求項1または2に記載の方法(500、500’)。
【請求項4】
絶対値において基数の半分に等しい桁が、その桁と同じ符号を有する次の桁によって続かれることを保証することを含む、請求項1から3のいずれか一項に記載の方法(500、500’)。
【請求項5】
現在のスカラーから基数分解の桁を決定することと、現在のスカラーと桁から次のスカラーを決定することと、次のスカラーの基数分解を決定することとを含む、請求項1から4のいずれか一項に記載の方法(500、500’)。
【請求項6】
プラスの基数とマイナスの基数の半分の中から桁を選択することを含み、前記選択することが、
- マイナスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分に等しいことをもたらす場合、プラスの基数の半分を選択すること、
- プラスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分に等しいことをもたらす場合、マイナスの基数の半分を選択すること
を含む、請求項5に記載の方法(500、500’)。
【請求項7】
プラスの基数とマイナスの基数の半分の中から桁を選択することを含み、前記選択することが、次のスカラーが基数を法とする基数の半分よりも小さいことをもたらす場合はプラスの基数の半分を選択し、それ以外の場合はマイナスの基数の半分を選択することを含む、請求項5または6に記載の方法(500、500’)。
【請求項8】
値の暗号文がLearning With Errors(LWE)タイプの暗号文である、請求項1から7のいずれか一項に記載の方法(500、500’)。
【請求項9】
基数が2の累乗、好ましくは少なくとも4、より好ましくは少なくとも8である、請求項1から8のいずれか一項に記載の方法(500、500’)。
【請求項10】
暗号化乗算ユニットによって、係数のセットに従って複数のそれぞれの値の暗号文の線形結合を準同型的に計算することにより、暗号化された値をスカラーにより準同型的に乗算すること(540)をさらに含む、請求項1から9のいずれか一項に記載の方法(500’)。
【請求項11】
線形結合を準同型的に計算することが、複数のそれぞれの値の暗号文を、係数のセットからのそれぞれの係数により乗算することを含み、前記乗算が、少なくとも部分的に並行して行われる、請求項10に記載の方法(500、500’)。
【請求項12】
ソース暗号化キーからターゲット暗号化キーへのノイジーな準同型暗号文のキー切り替えのための、コンピュータにより実装されるキー切り替え方法(600)であって、方法が、
- それぞれの暗号化されたキー切り替え値を含むキー切り替え情報を取得すること(610)であって、暗号化されたキー切り替え値が、複数のそれぞれのキー切り替え値の暗号文によって表され、それぞれのキー切り替え値の暗号文が、ターゲット暗号化キーの下で基数のそれぞれの累乗により乗算されたキー切り替え値を暗号化するノイジーな準同型暗号文である、こと(610)、
- ソース暗号文を取得すること(620)であって、ソース暗号文が、ソース暗号化キーの下でソース暗号化された値を暗号化するノイジーな準同型暗号化である、こと(620)、
- ソース暗号文から、それぞれの暗号化されたキー切り替え値のそれぞれの係数を決定すること(630)、
- ターゲット暗号化キーの下でソース暗号化された値を暗号化するターゲット暗号文を計算すること(640)であって、それぞれの暗号化されたキー切り替え値を、請求項10または11の方法に従ってそれぞれの係数により準同型的に乗算すること(500’)を含む、こと(640)
を含む、方法(600)。
【請求項13】
計算を準同型実行可能ファイルにコンパイルする、コンピュータにより実装される方法(700)であって、準同型実行可能ファイルが、暗号化計算エンジンによって実行可能であり、暗号化計算エンジンにノイジーな準同型暗号文上で計算を行わせ、計算が、値をスカラーにより乗算することを含み、方法が、
- 請求項1から9のいずれか一項に記載の方法(500)に従って、暗号化された値として値をスカラーにより準同型的に乗算するのに使用するための係数を決定することと、
- 準同型実行可能ファイルに、暗号化された値をスカラーにより準同型的に乗算するための1つ以上の命令を含めること(720)であって、1つ以上の命令が、決定された係数を含む、こと(720)と
を含む、方法(700)。
【請求項14】
暗号化乗算ユニット(121、422、423)により使用するための係数のセットを決定するためのデバイス(110、200、201、400、401)であって、暗号化乗算ユニットが、暗号化された値をスカラーにより準同型的に乗算するように構成され、暗号化された値が、複数のそれぞれの値の暗号文により表され、それぞれの値の暗号文が、基数のそれぞれの累乗により乗算された値を暗号化するノイジーな準同型暗号文であり、暗号化乗算ユニットが、係数のセットに従って、複数のそれぞれの値の暗号文の線形結合を準同型的に計算するように構成され、デバイスが、
- スカラーおよび基数を記憶するためのストレージ(140)であって、基数が偶数である、ストレージ(140)、
- 係数のセットを、基数に関するスカラーの基数分解の桁として決定するように構成されたプロセッサシステム(130)であって、決定された桁が、マイナスの基数の半分、含んでいる、とプラスの基数の半分、含んでいる、の間にあり、前記決定することが、後続の2桁が両方とも絶対値において基数の半分に等しくはないことを保証することを含んでおり、および、暗号化された値をスカラーにより準同型的に乗算するために、暗号化乗算ユニットに係数のセットを提供するように構成されたプロセッサシステム(130)
を含む、デバイス(110、200、201、400、401)。
【請求項15】
- プロセッサシステムによって実行されると、プロセッサシステムに、請求項1から13のいずれか一項に記載の方法を行わせる命令、
- 請求項13に記載のコンピュータにより実装される方法に従って計算がコンパイルされる準同型実行可能ファイル
のうちの1つ以上を表すデータ(1020)を含む、一時的なまたは非一時的なコンピュータ可読媒体(1000)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の主題は、暗号化された乗算によって使用するための係数のセットを決定する、コンピュータにより実装される方法;キーの切り替え(key switching)および計算のコンパイルのためのそのような方法の使用;係数のセットを決定するためのデバイス、およびコンピュータ可読媒体に関する。
【背景技術】
【0002】
準同型暗号により、暗号化されたデータに対して、復号できない状態で、回路の評価などの計算を行える。例えば、入力データおよび計算結果は、暗号化された形式で受信および返され得る。中間データ、例えば、計算の内部状態も、暗号化された形式であり得る。
【0003】
計算結果は暗号化された形式で返されるが、復号されると、暗号化されていないデータに対して演算が行われた場合と同じ出力になる。準同型暗号化は、プライバシー保護のアウトソーシングストレージと計算に使用できる。これにより、すべてが暗号化されている間に、データを暗号化してクラウド環境にアウトソーシングし、処理および/または記憶を行うことができる。
【0004】
例えば、準同型暗号は、プライバシー規制によりプレーンデータの共有が困難になる可能性のあるものの暗号化された医療データの計算は許容され得るヘルスケアなどの分野に適用できる。例えば、医療データを分類するために、例えば、開発された医療モデルは、暗号化された形式で第三者、例えば病院から医療データを受信するように構成され得る。医療モデルは、例えば、医療データを、例えば、正常または異常として分類するか、または何らかの特定の医療症候群、疾患、または他の障害を有するとして分類することができる。準同型暗号化を使用すると、医療モデルは暗号化された形式で受信される医療データに適用できる。これは、医療モデルを提供する当事者が、暗号化された医療データに対応するプレーン医療データにアクセスできないことを意味する。サービスのユーザは、医療モデル用途の結果を復号できる。
【0005】
人気のあるさまざまな準同型暗号化スキームはノイズを利用している。例えば、データアイテムの暗号化は、データアイテムを、いくつかのノイズが付加されるキー依存格子内の点にマッピングすることを含み得る。
【0006】
データアイテムが暗号化されたばかりのとき、ノイズは低く、暗号化はフレッシュである。例えば、ノイズの量が非常に少ないため、データアイテムが復号される場合、ノイズは、例えば丸めることによって、復号プロセスのある時点で除去できる。一方、ノイズは、システムへの攻撃を十分に困難にするのに十分な高さである必要がある。例えば、ノイズが仮定上存在しない場合、多くの準同型暗号化スキームは、線形代数、または他の効率的なアルゴリズム、例えば格子ベースのアルゴリズムで攻撃される可能性がある。データアイテムが暗号化されると、準同型演算を依然行えるが、攻撃が困難であるように選定されたノイズが付加される。ほとんどの準同型演算は、暗号化された準同型的に暗号化されたデータアイテムに固有のノイズを増加させる。多くのこのような演算が行われると、ノイズは、もはや一意の復号が不可能であるレベルに達し得る。その時点で、スキームは破綻する。
【0007】
一般的に言えば、この現象に対処するために、当技術では2つのアプローチが開発されてきた。1つ目は、レベル化された(levelled)準同型暗号化である。レベル化された準同型暗号化は、いくつかの演算を次々に行える。レベル化された準同型暗号化は、そのようないくつかの演算の最後の予想されるまたは最悪の場合のノイズが、正確な復号に必要な境界を下回るように、またはいずれの場合でも復号されたプレーンテキストへの限定的な逸脱のみが発生するように設計されている。したがって、行える演算の数には制限がある。
【0008】
もう1つのアプローチは、いわゆるブートストラッピング演算である。ブートストラップ演算は、準同型暗号化が暗号化されたドメインにおいて復号アルゴリズムを準同型的に評価するのに十分な強度がある場合に可能であり、そのような準同型暗号化はブートストラップ可能な準同型暗号化とも呼ばれる。レベル化された準同型暗号化スキームは、ブートストラップ演算を行うことにより、レベル化されていない準同型暗号化スキームに変換できる。ブートストラッピング演算は、暗号化されたデータアイテムのノイズを低減する。ブートストラッピング演算により、暗号文のノイズを固定量まで低減することができる。ブートストラップ演算は、暗号化されたデータアイテムに対して行えるよりも演算の数を増加させるか、制限を完全に除去する。演算が行われ、暗号文の予想されるまたは最悪の場合のノイズが、一意の復号がもはや不可能であるレベルに近づいた場合、ブートストラッピングを使用してノイズを低減する。ブートストラッピングは通常、計算コストがかかる;そのため、それがなされる回数を低減すると有利である。
【0009】
準同型暗号化スキームにおける準同型演算により発生する暗号文のノイズ増加を低減する必要がある。レベル化された準同型暗号化を使用するとき、準同型演算によるノイズの増加により、暗号文でさらにどんな演算が行えるかが制限される。レベル化されていない準同型暗号化を使用する場合、ノイズの増加により、ブートストラッピング演算が必要になる前にさらにどんな演算が行えるかが制限される。どちらの場合も、特定の確率または程度の復号エラーが許される場合、この確率と復号エラーのサイズは、ノイズの増加とともに増加する。
【0010】
スカラー乗算によるノイズの増加、例えば、暗号化された値の、知られている整数による乗算によるイズの増加を低減することが特に重要である。これは、例えば、暗号化された入力にニューラルネットワークを適用するなど、準同型計算の一般的な演算である。さらに、スカラー乗算は、キーの切り替えにおいて、例えば、ソース暗号化キーの下の準同型暗号化をターゲット暗号化キーの下で準同型暗号化に変換することにおいて、重要な演算である。キーの切り替えは、ブートストラッピングの一部として行われることがよくある。
【0011】
キー切り替えのコンテキストでは、Ilaria Chillotti、Nicolas Gama、Mariya Georgieva、およびMalika Izabacheneによる「TFHE:Fast fully homomorphic encryption over the torus」、Journal of Cryptology、33(1):34-91、2020(参照により本明細書に組み込まれる)は、スカラー値の基数分解、この場合は基数2のバイナリ分解に基づいて、キービットの暗号化をスカラー値により乗算することを開示している。スカラー値は、基数の累乗の線形結合として書かれる。暗号化されたキービットは、キービットを暗号化するそれぞれの暗号文を基数のそれぞれの累乗で乗算したものにより表される。スカラー値により乗算されたキービットの暗号化は、係数のセットに従ってそれぞれの暗号文の線形結合を準同型的に計算することによって取得される。したがって、単一の大きなスカラー値を用いる乗算は、より小さなスカラーを用いるそれぞれの乗算によって効果的に置き換えられる。このより大きな基数を用いたキー切り替え技術の適応は、I.Chillottiらによる「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」(参照により本明細書に組み込まれ、https://eprint.iacr.org/2021/091/20210127:133406で入手可能)で提供されている。
【先行技術文献】
【非特許文献】
【0012】
【非特許文献1】Ilaria Chillotti、Nicolas Gama、Mariya Georgieva、およびMalika Izabachene、「TFHE:Fast fully homomorphic encryption over the torus」、Journal of Cryptology、33(1):34-91、2020
【非特許文献2】I.Chillottiら、「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」(https://eprint.iacr.org/2021/091/20210127:133406)
【発明の概要】
【課題を解決するための手段】
【0013】
本発明の一態様によれば、暗号化乗算ユニットによって使用するための係数のセットを決定する、コンピュータにより実装される方法が提供され、請求項によって定義される。対応するデバイスも提供される。
【0014】
発明者は、暗号化された値をスカラーにより乗算するために用いられる基数分解を改善することにより、スカラー乗算によるノイズ増加を低減できると気付いた。典型的には、基数Bを用いて基数分解を決定するとき、桁はサイズBの区間から選択される。奇数Bの場合、例えば、区間[-(B-1)/2,(B-1)/2]を使用することができる。偶数Bの場合、例えば、マイナスの基数の半分を含むか、またはプラスの基数の半分を含む区間[-B/2,B/2[または]-B/2+1,B/2]が、使用され得る。例えば、「TFHE:Fast fully homomorphic encryption over the torus」は、いわゆるガジェット分解を決定するために、基数Bを用いる基数分解を使用する;この場合、区間[-B/2,B/2[が使用され、すなわち、マイナスの基数の半分を含むが、プラスの基数の半分は含まない。キー切り替えのために、この論文は、バイナリ分解、すなわち基数2を用いた基数分解と、区間[0,1]すなわち、基数の半分を含むが、マイナスの基数の半分を含まない区間からの桁を使用する。
【0015】
驚くべきことに、発明者は、偶数の基数であっても、同じ基数分解でプラスの基数の半分とマイナスの基数の半分の両方を使用するのを可能とすることが有益であることに気付いた。これにより、準同型スカラー乗算におけるノイズをさらに低減する基数分解を取得することが可能となる。具体的には、発明者は、後続の2桁が両方とも絶対値において基数の半分と等しくないことが保証されるように、基数分解を決定することを想定した。スカラー乗算でこのような基数分解の桁を使用すると、あまりノイジーではない暗号文がもたらされため、ノイズが大きくなりすぎたり、および/またはブートストラッピングが必要になる前に、より多くの準同型計算を行える。逆に、ブートストラッピングの前またはブートストラッピングなしで行われる、所望の演算の数を考えると、ノイズが少ないということは、暗号システムがより小さなパラメータ、例えばより小さなモジュラスで初期化され得、改善された性能につながることを意味する。
【0016】
提供された基数分解は、一般に絶対値においてより小さい桁をもたらすため、有益であり、例えば、桁の二乗和はより小さくなり得る。一般に、絶対値において基数分解の桁が大きいほど、ノイズの増加が大きくなり、それらによる乗算がもたらされる。その意味で、絶対値において基数の半分に等しい桁を有することは、その桁にとって最悪の場合の状況を表す。しかし、これは常に回避できるとは限らず、例えば、スカラー値が基数を法とする基数の半分に等しい場合、基数分解の最下位桁はプラスまたはマイナスの基数の半分に等しい必要がある。
【0017】
2つの連続する桁については状況が違う。両方の桁が絶対値において基数の半分に等しい桁の対を見ることは、最悪の場合の状況を表す。しかし、区間[-B/2,B/2[を使用するとき、つまり、基数の半分が可能であり、プラスの基数の半分が不可能な場合、これを回避することはできない。また、区間]-B/2,B/2]を使用するとき、つまり、プラスの基数の半分は可能だが、マイナスの基数の半分が不可能なときも回避できない。しかし、驚くべきことに、発明者は、マイナスの基数の半分とプラスの基数の半分の両方が可能な場合、基数分解の後続の2桁が両方とも絶対値において基数の半分と決して等しくならないことを保証することが可能であることに気付いた。これを保証することで、ノイズの少ないスカラー乗算が達成される。
【0018】
いくつかの実施形態では、係数のセットを決定することは、基数分解の少なくとも1つの桁を基数の半分に設定し、基数分解の少なくとも1つのさらなる桁をマイナスの基数の半分に設定することを含み得る。つまり、少なくとも、基数分解手順が適用されるいくつかのスカラー入力では、プラスの基数の半分とマイナスの基数の半分の両方を含む基数分解を返すことがある。他のスカラー入力の場合、マイナスの基数の半分のみ含む、プラスの基数の半分のみ含む、またはどちらも含まない基数分解を決定できる。可能な入力について考慮すると、同じ基数分解でプラスの基数の半分とマイナスの基数の半分の両方を平均して使用できるため、ノイズの少ないスカラー乗算がもたらされる。
【0019】
いくつかの実施形態では、基数分解の桁は、選択が後続の桁が基数の半分に絶対値において等しいことをもたらすかどうかを決定することに基づいて、プラスの基数の半分およびマイナスの基数の半分の中から選択することができる。発明者は、一方の選定が後続の桁が絶対値において基数の半分に等しいことをもたらす場合、もう一方の選定は、後続の桁の絶対値において基数の半分に等しいことをもたらさないことを発見した。したがって、絶対値において基数の半分に等しい連続する桁が生じないことをローカル的に保証することができる。プラスまたはマイナスの基数の半分を使用するかどうかの決定は、基数分解を繰り返し決定しながら、または例えば以前になされた基数分解を補正しながらなされることができる。
【0020】
いくつかの実施形態では、絶対値において基数の半分に等しい桁が、その桁と同じ符号を有する次の桁によって続かれることをさらに保証することができる。ここで、桁は最下位からより上位へと順序付けされていると見なされる;したがって、その桁に続く次の桁は、次のより上位の桁であり、例えば、基数の1乗高い係数である。ゼロは、同じ符号を有する桁と見なされる。この条件を言い表わす別の方法は、桁と次の桁の積がゼロ以上であるということである。この選定は、ノイズを低減するのにさらに役立つ。正の次の桁が後に続くプラスの基数の半分を使用して、その次の桁に1を加えたものが後に続くマイナスの基数の半分と同じスカラーを表すことができる。次の桁が絶対値においてより小さいため、最初の選定が好ましい。同様に、負の次の桁が後に続くマイナスの基数の半分か、次の桁から1を引いたものが後に続くプラスの基数の半分を使用することもでき、最初の選択肢の方が次の桁についてより小さい絶対値を有する。
【0021】
本明細書に説明される基数分解を決定することができるさまざまな方法がある。1つの方法は、基数分解を繰り返し構築することである。いくつかの実施形態では、基数分解は、現在のスカラーから桁を決定することと;現在のスカラーと桁から次のスカラーを決定することと;次のスカラーの基数分解を決定することとによって決定され得る。これにより、後続の2桁の両方が、絶対値において基数の半分に等しくないという条件を特に効率的に実施したり、および/または、次の桁の符号が前のものと同じという条件を、後者が絶対値において基数の半分であるときに実施したりできる。例えば、基数分解は、現在のスカラーをスカラーに初期化し、現在のスカラーから基数分解の桁を繰り返し決定し;現在のスカラーと桁から次のスカラーを決定し;現在のスカラーを次のスカラーに更新ことによって、繰り返し決定できる。
【0022】
現在のスカラーから桁を決定するとき、例えば、現在のスカラーが基数を法とする基数の半分に等しいとき、桁はプラスの基数の半分とマイナスの基数の半分の中から選択することができる。
【0023】
いくつかの実施形態では、この選択することは、マイナスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分に等しくなることをもたらす場合、プラスの基数の半分を選択することと、プラスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分に等しくなることをもたらす場合は、マイナスの基数の半分を選択することとを含んでもよい。このようにして、後続の2桁が絶対値において両方とも基数の半分に等しくないことが保証され得、有利な基数分解につながる。
【0024】
いくつかの実施形態では、この選択することは、次のスカラーが基数を法とする基数の半分よりも小さいことをもたらす場合、プラスの基数の半分を選択し、それ以外の場合はマイナスの基数の半分を選択することを含み得る。これは、後続の2桁が絶対値において基数の半分に等しいことがないことを保証するだけでなく、次の桁が桁と同じ符号を有することも保証する。
【0025】
しかし、この方法で基数分解を繰り返し決定する必要はない。例えば、例えば、[-B/2,B/2[からの桁のみを用いる、知られている技術を使用して決定された基数分解を行い、この基数分解を補正して、後続の2桁の絶対値において両方とも基数の半分に等しくないこと、および/または、次の桁の符号が前の桁と、後者が絶対値において基数の半分であるときに、同じであることを保証することも可能である。本明細書では、さまざまな例および代替案が説明される。
【0026】
いくつかの実施形態では、値の暗号文は、LWEタイプの暗号文であり、例えば、Learning With Errors(LWE)、Generalized Learning With Errors(GLWE)、Ring-LWE、Module-LWEなどの、エラーを伴う学習タイプの問題(learning with errors-type problem)の暗号強度の仮定(hardness assumption)に基づいている。値の暗号文は、Approx-GCD問題またはNTRU問題に基づくこともできる。これらの種類の仮定に基づく暗号システムには、通常、ノイジーな暗号文があり、上述の関連するノイズの問題を伴う。より一般的には、使用される暗号文は、ノイジーな準同型暗号文をランダムスカラーにより準同型乗算すると、ランダムスカラーの分散にランダムスカラーの期待値の2乗を加えた分だけ、ノイジーな準同型暗号文のノイズ分散が増加するという特性を満たすことができる。本明細書で提供される技術は、このタイプのノイズ増加も伴う暗号文に特に最適である。
【0027】
提供される技術は、ノイジーではない準同型暗号文をスカラーにより乗算する、例えばPaillier暗号文などのために適用することもできる。このような場合、ノイズは問題にならないが、決定された係数は一般により小さいため、提供される技術により、より効率的なスカラー乗算が可能になる。
【0028】
いくつかの実施形態では、基数は2の累乗である。基数分解を計算するための演算は、この場合、特に効率的に行うことができ、例えば、基数による除算はビットシフトに対応し、剰余は数値の最下位ビットに対応する。しかし、他の実施形態では、基数は2の累乗ではない。発明者が気付いたように、提供された技術はそのような場合にも機能する。
【0029】
いくつかの実施形態では、基数は、少なくとも4、少なくとも8、または少なくとも16、例えば、少なくとも4、少なくとも8、または少なくとも16の2の累乗である。基数が大きいほど、本明細書で説明するように基数分解を決定することによって達成されるゲインは大きくなる。この詳細な例は、本明細書の他の場所で提供されている。
【0030】
いくつかの実施形態では、決定された基数分解に基づいて、スカラーによる暗号化された値の準同型スカラー乗算は、係数のセットに従って複数のそれぞれの値の暗号文の線形結合を準同型的に計算することによって遂行され得る。したがって、スカラー乗算はノイズの少ない状態で遂行される。しかし、本明細書で提供される他の例によって示されるように、基数分解が、準同型スカラー乗算と同じ瞬間または同じデバイスによって決定される必要はない。
【0031】
いくつかの実施形態では、暗号化された値は、多項式により準同型的に乗算され得る。このような場合、多項式のそれぞれのスカラー係数の基数分解を決定することができ、それぞれの係数のこれらの分解を準同型乗算に使用できる。特に、多項式によるそのような準同型乗算は、少なくとも、暗号化された値の多項式の定数係数による準同型乗算を含み得、例えば、準同型乗算は、それぞれの係数によるそれぞれの準同型乗算を行うことによって行われ得る。例えば、多項式による準同型乗算は、例えば、「TFHE:Fast fully homomorphic encryption over the torus」のTRLWE暗号文およびその変形へのキー切り替えのための、キー切り替えの一部であり得る。
【0032】
いくつかの実施形態では、線形結合は、複数のそれぞれの値の暗号文を係数のセットからのそれぞれの係数により乗算することによって準同型的に計算され得る。これらの乗算は、少なくとも部分的に並行して行うことができる。したがって、基数分解を使用することは、ノイズ発展の観点からだけでなく、計算の並列化可能性を高めるためにも有益である。例えば、乗算は、少なくとも部分的には、専用の処理ユニット、好ましくはGPUまたはFPGAによって行われ得る。
【0033】
本発明のさらなる態様は、ノイジーな準同型暗号文のためのキー切り替え法における決定された基数分解の使用に関する。キー切り替え方法は、例えば、ノイジーな準同型暗号文をブートストラッピングした後で使用することができる。ソース暗号文と同じ値を異なるキーの下で暗号化するターゲット暗号文を計算するために、それぞれの暗号化されたキー切り替え値が、ソース暗号文から決定されたそれぞれの係数により準同型的に乗算される。準同型スカラー乗算は、本明細書で説明するように計算された基数分解を使用する。したがって、ターゲット暗号文はノイズの少ない状態で取得される。結果として、例えば、次のブートストラッピングの前に、より多くのおよび/または追加のタイプの演算をターゲット暗号文に適用することができる。
【0034】
本発明のさらなる態様は、暗号化計算エンジンによって実行され、例えば処理され、暗号化計算エンジンにノイジーな準同型暗号文に対して計算を行わせる準同型実行可能ファイルに計算をコンパイルすることに関する。そのような計算は、値をスカラーにより乗算することを含み得る。計算を準同型実行可能ファイルにコンパイルする一環として、スカラーの基数分解は、本明細書に説明されるように決定され得る。コンパイリングは、準同型実行可能ファイルの暗号化された値をスカラーにより乗算する準同型スカラーの1つ以上の命令を含めることを含み得、命令は、決定された係数を含む。したがって、決定された表現の使用は、計算にハード符号化され得る。これにより、改善された基数分解により、改善されたノイズ発展特性を計算が利用することができる。さらに、改善された基数分解が使用されることがコンパイル時にすでにわかっているため、コンパイラは、スカラー乗算によるノイズの増加を決定できるため、例えば、この決定されたノイズの増加に基づいて、ブートストラッピングを行うための計算の最適な瞬間を決定したり、その他の方法で計算を最適化したりできる。
【0035】
基数分解、および準同型スカラー乗算、キー切り替え、およびそれを使用したコンパイリングは、幅広い実用的な用途に適用できる。このような実用的な用途は、プレーンデータにアクセスすることのない、ソフトウェアプログラムの暗号化された評価を含む。例えば、医療データに実際にアクセスすることなく、前記医療データに関する医療診断ソフトウェアを評価することができる。
【0036】
医療データは医療画像を含み得る。医療画像は、例えば、多次元画像データ、例えば、2次元(2D)、3次元(3D)または4次元(4D)画像を含み得、これは、標準X線イメージング、コンピュータ断層撮影(CT)、磁気共鳴イメージング(MRI)、超音波(US)、陽電子放出断層撮影(PET)、単一光子放射コンピュータ断層撮影(SPECT)、および核医学(NM)などのさまざまな獲得モダリティによって獲得されるが、これらに限定されない。
【0037】
この方法の実施形態は、コンピュータにより実装される方法として、または専用ハードウェアで、またはその両方の組み合わせで、コンピュータ上に実装することができる。この方法の実施形態のための実行可能コードは、コンピュータプログラム製品に記憶され得る。コンピュータプログラム製品の例には、メモリデバイス、光ストレージデバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。好ましくは、コンピュータプログラム製品は、前記プログラム製品がコンピュータ上で実行されたときに方法の実施形態を行うために、コンピュータ可読媒体に記憶された非一時的なプログラムコードを含む。代わりに、またはさらに、コンピュータ可読媒体は、本明細書に説明されるようにコンパイルされたノイジーな準同型暗号文に対して計算を行うための準同型実行可能ファイルを記憶することができる。
【0038】
一実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行されたときに、方法の実施形態のステップの全部または一部を行うように適合されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上に具現化される。
【0039】
さらなる詳細、態様、および実施形態は、図面を参照して、例としてのみ説明される。図中の要素は、単純さと明瞭さのために図示されており、必ずしも縮尺どおりに描かれているわけではない。図において、すでに説明した要素に対応する要素は、同じ参照番号を有し得る。
【図面の簡単な説明】
【0040】
図1a】係数のセットを決定するためのデバイスの実施形態の例を概略的に示す図である。
図1b】準同型計算システムの実施形態の例を概略的に示す図である。
図1c】準同型計算システムの実施形態の例を概略的に示す図である。
図2a】係数決定デバイスの実施形態の例を概略的に示す図である。
図2b】係数決定デバイスの実施形態の例を概略的に示す図である。
図3a】現在のスカラーから基数合成の桁を決定する方法の実施形態の例を概略的に示す図である。
図3b】現在のスカラーから基数合成の桁を決定する方法の実施形態の例を概略的に示す図である。
図4a】準同型スカラー乗算を行うためのデバイスの実施形態の例を概略的に示す図である。
図4b】準同型暗号文のキー切り替えを行うためのデバイスの実施形態の例を概略的に示す図である。
図5a】暗号化乗算ユニットによって使用するための係数のセットを決定する方法の実施形態の例を概略的に示す図である。
図5b】暗号化された値の準同型スカラー乗算を行う方法の実施形態の例を概略的に示す図である。
図6】キー切り替え方法の実施形態の例を概略的に示す図である。
図7】計算を準同型実行可能ファイルにコンパイルする方法の実施形態の例を概略的に示す図である。
図8a】一実施形態によるコンピュータプログラムを含む書き込み可能な部分を有するコンピュータ可読媒体を概略的に示す図である。
図8b】一実施形態によるプロセッサシステムの表現を概略的に示す図である。
【発明を実施するための形態】
【0041】
参照符号リスト
以下の参照および略語のリストは、図面の解釈を容易にするために提供されており、請求項を限定するものと解釈してはならない。
100、101 暗号化計算システム
110 係数決定デバイス
120 準同型計算デバイス
121 暗号化乗算ユニット
130 プロセッサシステム
140 ストレージ
150 通信インターフェース
160 データプロバイダシステム
200、201 係数決定デバイス
221 除算ユニット
222 桁決定ユニット
223 基数分解ユニット
224 分解補正ユニット
230 スカラー
231 現在のスカラー
232 基数を法とする現在のスカラー
233 基数による除算の商
236、240、250 基数分解
237-239、241-246、251-256 桁
310 基数を法とする現在のスカラーが基数の半分より小さい場合
315 桁を基数を法とする現在のスカラーに設定すること
320 基数を法とする現在のスカラーが基数の半分より大きい場合
325 基数を法とする現在のスカラーから基数を引いたものに桁を設定すること
330 マイナスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分に等しいことをもたらす場合
331 プラスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分よりも小さいことをもたらす場合
335 プラスの基数の半分を選択すること
340 プラスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分に等しいことをもたらす場合
345 マイナスの基数の半分を選択すること
400 準同型スカラー乗算デバイス
421 基数分解ユニット
422 暗号化乗算ユニット
423 係数計算ユニット
424 ターゲット暗号文計算ユニット
430 基数分解
431-433 桁
439 スカラー
440 暗号化された値
441-443 値の暗号文
450 暗号化された値とスカラーの積の暗号化
460 ソース暗号文
461-463 暗号化されたキー切り替え値の係数
470 係数の基数分解
480 暗号化されたキー切り替え値
490 ターゲット暗号文
500 係数を決定する
500’ スカラーによる準同型乗算を行うこと
510 スカラー、基数を取得すること
520 係数を決定すること
530 係数を提供すること
540 線形結合を準同型的に計算すること
600 キー切り替えを行うこと
610 キー切り替え情報を取得すること
620 ソース暗号文を取得すること
630 係数を決定すること
640 ターゲット暗号文を計算すること
700 計算をコンパイルすること
720 命令を含めること
1000 コンピュータ可読媒体
1010 書き込み可能な部分
1020 コンピュータプログラム
1110 集積回路
1120 処理ユニット
1122 メモリ
1124 専用の集積回路
1126 通信要素
1130 相互接続
1140 プロセッサシステム
【0042】
現在開示されている主題は多くの異なる形態で実施することができるが、本明細書では1つ以上の特定の実施形態が図面に示され、詳細に説明され、本開示は、現在開示されている主題の原理の例示として見なされるべきであり、図示および説明される特定の実施形態に限定することを意図するものではないことを理解されたい。
【0043】
以下では、理解のために、実施形態の要素が動作において説明されている。しかし、それぞれの要素は、それらによって行われるように説明されている機能を行うように構成されていることは明らかであろう。
【0044】
さらに、現在開示されている主題は、実施形態のみに限定されず、本明細書に説明される、または相互に異なる従属請求項に記載されている特徴の他のすべての組み合わせも含む。
【0045】
さまざまな実施形態は、所与の基数に関するスカラーの基数分解を決定することに関する。説明目的のために、偶数の基数を持たない、および/またはプラスの基数の半分とマイナスの基数の半分の両方を桁として使用することを可能としないいくつかの基数分解についてここで論じる。
【0046】
Bを整数>1とする。正の整数k<Bは、0≦k<Bを用いて
【数1】
として一意に表現できる。この場合、整数Bは基数と呼ばれ、整数kは桁と呼ばれる。基数Bの下のkの表現は、kの表現としてk=(kn-1,…,kと示すことができる。
【0047】
桁セットを{-(B-1),…,B-1}に拡張することも可能である。このような場合、整数kは
k=-B<k’<Bを用いてΣk’
という形式で書かれ得る。このような基数分解は、kの修正された基数B形式と呼ばれることもある。修正された基数B形式は一意ではない。例えば、(2,2)=(1,-2,2)は10に対する2つの修正された基数4形式である。例えば、整数は、任意の整数0≦B<Bに対して、セット{-B,…,B-1-B}の桁で再符号化できる。
【0048】
基数Bが奇数で、
【数2】
の場合、バランスの取れた修正された基数B形式としても知られる基数分解を取得できる。この場合、B=B-1-Bとなる。この場合、例えば次のアルゴリズムを使用して基数分解を決定することができる:
【0049】
【表1】
【0050】
上記のアルゴリズムの変形を使用して、偶数の基数B≧4の基数分解を取得できる。これにより、修正された基数B表現がもたらされるが、バランスが取れていない。そのようにして取得された桁k’は、セット
【数3】
に属する。マイナスの基数の半分だけが桁として使用されるが、プラスの桁の半分は使用されない。いくつかの入力では、アルゴリズムは、後続の2桁が両方ともマイナスの基数の半分に等しい基数分解を返す。例えば、入力k=22でアルゴリズムは(1,-2,-2,-2)を返す。
【0051】
【表2】
【0052】
図1aは、暗号化乗算ユニットによって使用するための係数のセットを決定するためのデバイス110の実施形態の例を概略的に示す。
【0053】
暗号化乗算ユニットは、暗号化された値をスカラーにより準同型的に乗算するように構成できる。暗号化された値は、複数のそれぞれの値の暗号文により表すことができる。それぞれの値の暗号文は、基数のそれぞれの累乗により乗算された値を暗号化するノイジーな準同型暗号文であり得る。暗号化乗算ユニットは、係数のセットからの対応する係数に従って、複数のそれぞれの値の暗号文の線形結合を準同型的に計算するように構成され得る。暗号化乗算ユニットは、デバイス110自体に含まれ得る。例えば、デバイスのプロセッサシステムによって実装され得る。この場合、デバイス110は、準同型スカラー乗算を遂行するように構成され得る。デバイス110は、暗号化された値をスカラーにより準同型的に乗算するためのデバイス、例えば、キー切り替えデバイスであり得る。
【0054】
デバイス110が、準同型スカラー乗算自体を行わずに、そのような準同型スカラー乗算に適した係数のセットを決定することも可能である。したがって、暗号化乗算ユニットはまた、デバイス110の外部であってもよい。例えば、デバイス110は、計算を準同型実行可能ファイルにコンパイルするためのコンパイルデバイスであり得、例えば、それは、後でデバイス110または別のデバイスによって実行されることができる。
【0055】
デバイス110は、プロセッサシステム130、ストレージ140、および通信インターフェース150を含み得る。ストレージ140は、ローカルストレージ、例えば、ローカルハードドライブまたは電子メモリを含み得る。ストレージ140は、非ローカルストレージ、例えばクラウドストレージを含み得る。後者の場合、ストレージ140は、非ローカルストレージへのストレージインターフェースを含み得る。例えば、ストレージ140は、スカラーおよび基数を記憶するためのものであり得る。基数は偶数であり得る。ストレージ140は、他の場所でも論じられているように、暗号化された値を表す値の暗号文のセットなどの追加情報を記憶することができる。
【0056】
デバイス110は、コンピュータネットワークを介して、内部的に、他のデバイス、外部ストレージ、入力デバイス、出力デバイス、および/または1つ以上のセンサーと通信することができる。コンピュータネットワークは、インターネット、イントラネット、LAN、WLANなどであり得る。コンピュータネットワークはインターネットであり得る。デバイスは、必要に応じて他のデバイスと通信するように構成された接続インターフェース150を任意選択で備え得る。例えば、接続インターフェースは、コネクタ、例えば、有線コネクタ、例えば、イーサネットコネクタ、光コネクタなど、または無線コネクタ、例えば、アンテナ、例えば、Wi-Fi、4Gもしくは5Gアンテナを含み得る。通信、例えば内部通信は、他の通信プロトコルまたは媒体、例えば内部データバスを使用してもよい。
【0057】
デバイス110では、通信インターフェース150を使用して、デジタルデータを送るまたは受信することができる。例えば、デバイス110は、例えばデータプロバイダデバイスから、暗号化された値を表す値の暗号文のセットを受信するように構成され得る。デバイス110は、スカラーによる暗号化された値の準同型スカラー乗算を行うことができる。デバイス110は、準同型スカラー乗算の結果、またはそれに基づく計算結果を、別のデバイス、例えばデータプロバイダデバイスまたは別のデバイスに送信することができる。別の例として、デバイス110は、コンパイルされる計算の記述を受信することができ、および/または、例えば、コンパイレーションWebサービスなどを提供することによって、この計算をコンパイルすることによって得られる準同型実行可能ファイルを送信することができる。
【0058】
デバイス110の実行は、プロセッサシステム130、例えば、1つ以上のプロセッサ回路、例えばマイクロプロセッサで実装することができ、その例は本明細書に示されている。デバイス110は、異なる場所にわたって分散され得る複数のプロセッサを含み得る。例えば、デバイス110は、クラウド計算を使用することができる。
【0059】
プロセッサシステム130は、係数のセットを、基数に関するスカラーの基数分解の桁として決定するように構成され得る。決定された桁は、マイナスの基数の半分、含んでいる、と、プラスの基数の半分、含んでいる、の間にあり得る。決定することは、後続の2桁が両方とも絶対値において基数の半分に等しくはないことを保証することを含むことができる。
【0060】
例えば、スカラーは、多項式の係数であり得、それを用いて暗号化された値が乗算される。例えば、プロセッサシステム130は、多項式のそれぞれのスカラー係数の、それぞれの係数のセットを決定するように構成され得る。これらの係数のセットは、例えば、それぞれの多項式の係数として出力されることができ、それらを用いて値の暗号文が乗算される。
【0061】
係数のセットは、複数の係数、例えば、少なくとも5個または少なくとも10個を含むことができる。プロセッサシステム130は、所与の最大サイズの係数のセットを決定するように構成され得、したがって、所与のサイズまでのスカラーのみをサポートするか、または任意のサイズのスカラーを可能にするように構成することもできる。
【0062】
プロセッサシステム130は、暗号化された値をスカラーにより準同型的に乗算するために、暗号化乗算ユニットに係数のセットを提供するようにさらに構成することができる。これは多くのさまざまな方法でなされることができる。暗号化乗算ユニットは、デバイス110自体に含まれ得、例えば、プロセッサシステム130によって実装され得る。この場合、係数のセットは、バスを介して、内部通信を介して、APIコールを介して、ストレージを介してなど提供され得る。
【0063】
係数のセットは、例えば、暗号化計算エンジンによる実行のための準同型実行可能ファイルの形式で、外部の暗号化乗算ユニットに提供することもできる。係数のセットは、暗号化乗算ユニットが何らかの方法で利用できるようにすることにより、例えば、そのような準同型実行可能ファイルの一部として、暗号化乗算ユニットが利用できるようにすることができる。例えば、係数のセットは、暗号化乗算ユニットを含むデバイスまたはシステムに送られ得る;または、係数のセットは、暗号化乗算ユニットを含むシステムまたはデバイスによってアクセス可能なストレージに置くことができる。
【0064】
例えば、デバイス110は、計算を準同型実行可能ファイルにコンパイルするコンパイラデバイスであってもよく、この場合、デバイスは、準同型実行可能ファイルに係数のセットを含めることによって、係数のセットを暗号化乗算ユニットに提供することができ、準同型実行可能ファイルは、次いでそのような暗号化乗算ユニットを含む任意の適切な暗号化計算エンジンによって実行され得る。
【0065】
図のいくつかは、プロセッサシステムの機能ユニットであり得る機能ユニットを示している。例えば、図は、プロセッサシステムの可能な機能的機構の青写真として使用することができる。プロセッサ回路は、ほとんどの図において、ユニットから分離して示されていない。例えば、図2a、2b、4a、4b(以下を参照)に示される機能ユニットは、デバイス110などのデバイスにおいて、例えばデバイス110の電子メモリに記憶され、デバイス110のマイクロプロセッサによって実行可能であるコンピュータ命令に全体的または部分的に実装され得る。ハイブリッド実施形態では、機能ユニットは、ハードウェアに、例えば、コプロセッサ、例えば、算術および/または暗号コプロセッサとして部分的に実装され、デバイス110上で記憶および実行されるソフトウェアに部分的に実装される。
【0066】
いくつかの実施形態では、デバイス110は、係数のセットに従って、複数のそれぞれの値の暗号文の線形結合を準同型的に計算することによって、暗号化された値をスカラーにより準同型的に乗算するように構成され得る。線形結合の計算には、係数のセットからのそれぞれの係数によりそれぞれの値の暗号文を準同型的に乗算することが含まれ得る。乗算は、少なくとも部分的に並行して行われてもよい。例えば、プロセッサシステム130は、例えば、テンソル、行列、ベクトル、スカラーなどに対する基本演算など、準同型スカラー乗算またはそれらの準同型スカラー乗算のサブ演算を行うために、GPUまたはFPGAなどの専用処理ユニット(図示せず)を備え得る。
【0067】
例えば、デバイス110は、準同型暗号化暗号を使用して計算を行うためのデバイスであり得る。例えば、デバイス110は、データが暗号化された形式で、例えばデータプロバイダから受信されても、前記データに対して計算を行うために使用され得る。
【0068】
行われる計算は、スカラー乗算を含み得、例えば、計算におけるスカラーによる値の乗算に対応する、暗号化された値のスカラーによる乗算を行うことができる。代わりに、またはさらに、スカラー乗算は、キー切り替え演算の一部として行われ得、キー切り替え演算においては、ソース暗号化キーの下のソース暗号文が、同じ値を別のターゲット暗号化キーの下で暗号化するターゲット暗号文に変換される。したがって、このようなスカラー乗算は、計算のスカラー乗算には対応しないが、計算を暗号化の下で行えるように実装され、例えば、ブートストラッピング演算の一部として、またはブートストラッピング演算の後に行うことができる。
【0069】
例えば、ストレージ140は、暗号化されたデータアイテム、例えば、1つ以上のデータプロバイダから受信されるか、または計算の中間結果または最終結果、例えば出力として生成される暗号化されたデータアイテムを記憶することができる。通常、デバイス110の計算が行われるデータアイテムのほとんどまたはすべては、デバイス110に知られていないキー(複数可)で暗号化される。-つまり、デバイス110は、例えばストレージ140に記憶されているような、暗号化されたデータアイテムに対応するプレーンデータアイテムを取得するように構成されていない可能性がある。暗号化/復号キーは暗号化された形式で利用できる場合があるが、プレーン形式の復号キーはデバイス110にとって秘密である。例えば、プロセッサシステムは、準同型暗号化演算のシーケンスを行うように構成され得、これは、加算および乗算などの暗号化された値に対する算術演算を含み得るが、暗号化された多項式に対する算術演算も含み得る。準同型演算には、キー切り替え、ブートストラップなどの演算も含まれ得る。
【0070】
図1bは、暗号化計算システム100の実施形態の例を概略的に示す。システム100は、準同型暗号化、例えば完全準同型暗号化を使用して計算を行うように構成される。この例では、スカラー乗算を行うデバイスは、係数のセットを計算することもできる。
【0071】
この例では、システム100は、データプロバイダデバイス160および暗号化計算デバイス110を含む。デバイス110は、データプロバイダ160から暗号化されたデータアイテムを受信するように構成され得る。少なくともいくつかのデータアイテムは暗号化された形式で受信され得る。いくつかのデータアイテムはプレーン形式で受信され得る。計算は、受信したデータアイテムに対して実行され、場合によっては記憶されたデータアイテムに対しても実行される。興味深いことに、計算は、データを復号することなく、例えば、暗号化されたデータアイテムをプレーンフォーマットのデータに変換することなく、暗号化されたデータに対して行われ得る。
【0072】
この例におけるデバイス110は、図1aのデバイス110に基づくことができ、例えば、図1aのプロセッサシステム130、ストレージ140、および/または通信インターフェース150を備えることができる。この例では、デバイス110は、例えば、デバイスのプロセッサシステムによって実装される暗号化乗算ユニット121を備える。暗号化された計算を行う一環として、暗号化乗算ユニット121は、スカラーによって暗号化された値の準同型暗号化を行うことができる。暗号化された値は、値の暗号文により表すことができる。スカラーによる乗算を行うために、デバイス110は、他の場所でも説明されているように、スカラーの基数分解の桁として係数のセットを決定することができる。したがって、あまりノイジーではないスカラー乗算が実現される。
【0073】
例えば、値の暗号文は、データプロバイダデバイス160によって提供され得るか、またはデータプロバイダデバイス160によって提供される暗号化された値から導出され得る。値の暗号文は、キー切り替えを行うためのキー切り替え値の暗号文であり得る。これらは、例えば、データプロバイダデバイス、別のデバイス、またはストレージから取得することができる。
【0074】
この図には示されていないが、暗号化計算システム100は、複数の暗号化計算デバイス、例えば、3つまたは3つを超えるものを含み得る。暗号化された計算は、複数の暗号化計算デバイス間で分散されてもよい。暗号化計算デバイスは、中間の計算結果、通常は暗号化されたものを相互に交換し得る。各暗号化乗算デバイスは、暗号化計算デバイス110のように実装することができ、係数のセットを決定し、係数を使用して暗号化された値をスカラーにより準同型乗算することによってスカラー乗算を行うことができる。
【0075】
図1cは、暗号化計算システム101の実施形態の例を概略的に示す。システム100は、準同型暗号化、例えば完全準同型暗号化を使用して計算を行うように構成される。図1cの例は、図1bの例に基づいており、その図に関して論じられたさまざまな考察がここでも適用される。図1bのデータプロバイダデバイス160に基づいて、データプロバイダデバイス160が示されている。図1bの暗号化計算デバイス110に基づいて、暗号化計算デバイス120が示されている。図1bのように、暗号化計算デバイスは、例えば、暗号化計算デバイス120のプロセッサシステムによって実装される、暗号化乗算ユニット121を備え得る。
【0076】
暗号化計算デバイス120は、図1bのように、暗号化乗算ユニット121を使用して、暗号化された値のスカラー乗算を含む暗号化された計算を行うことができる。この例では、スカラー乗算を行うための係数のセットは、暗号化計算デバイス120によって決定されず、代わりにコンパイラデバイス110によって決定される。コンパイラデバイスは、図1aのデバイス110に基づくことができ、例えば、図1aに関して説明されるプロセッサシステム130、ストレージ140、および/または通信ユニット150を含むことができる。
【0077】
コンパイラデバイス110は、計算を準同型実行可能ファイルにコンパイルすることができる。準同型実行可能ファイルは、暗号化計算デバイス120の暗号化計算エンジンによる実行可能ファイルの命令のセットの観点からの計算の表現であり得る。例えば、準同型表現は、スカラー乗算、加算、ブートストラッピング演算などの基本命令のセットの観点から計算を表すことができる。暗号化計算デバイス120による準同型実行可能ファイルの実行は、ノイジーな準同型暗号文に対して行われる計算をもたらし得る。それ自体が知られている準同型実行可能ファイルのさまざまな表現を使用することができ、例えば、ブール回路、算術回路、データフローグラフ、または実行可能バイトコードを使用することができる。
【0078】
計算は、スカラーによる、値の1つ以上の乗算を含むことができる。そのような乗算のために、コンパイラデバイス110は、本明細書に説明されるような係数のセットを決定することができる。コンパイラデバイス110は、準同型実行可能ファイルに、暗号化された値をスカラーにより準同型的に乗算するための1つ以上の命令、例えば、暗号化計算エンジンに準同型スカラー乗算を行わせる1つ以上の命令を含めることができる。命令は、決定された係数を含み得る。その結果、暗号化計算デバイス120は、より少ないノイズでスカラー乗算を計算することができる。
【0079】
図1bおよび1cを参照すると、準同型暗号化スキームは、多くの設定に適用することができる。例えば、1つ以上の暗号化計算デバイス110、120は、クラウドプロバイダによって動作され得る。クラウドプロバイダは、そのクライアントに計算およびストレージサービスを提供し得る。準同型暗号化を利用することにより、図1bまたは図1cのデータプロバイダ160、例えばクラウドプロバイダのクライアントは、暗号化された形式でかれらのデータを送ることができる。クラウドプロバイダは、依然必要な計算および/または必要なストレージを行えるが、対応するプレーンデータを知ることはできない。例えば、データプロバイダ160は、使用される特定の準同型暗号化システムに対応するタイプの暗号化キーを使用して、データアイテムを暗号化することができる。計算結果がデータプロバイダ160によって暗号化計算デバイス110、120から受信されると、対応する復号キーを使用して、暗号化されたデータアイテムを復号することができる。暗号化キーと復号キーは同じ場合があり、通常は同じである。
【0080】
例えば、暗号化計算システム100、101は、暗号化計算デバイスがプレーンデータアイテムにアクセスすることなく、機械学習モデル、例えば画像分類器、例えば医療モデルをトレーニングするように構成されることができる。例えば、おそらくはブートストラッピングがなくても、入力データに対して線形回帰が行われ得る。例えば、おそらくはバックプロパゲーションが、ブートストラッピングを使用して、入力データに対して行われ得る。結果のモデルパラメータは、復号キーを所有しているエンティティに返され得る。これにより、医療データの複数のプロバイダがデータをクラウドプロバイダに送ることにより、データをプールできる。クラウドプロバイダは、次いで、プレーンデータに決してアクセスすることなく、モデルパラメータを返す。暗号化キーは、復号キーと等しい場合がある。
【0081】
モデルがトレーニングされた後、暗号化計算システム100、101を使用して、例えば医療データで使用するためのモデルを提供することができる。これは、プレーンモデルパラメータまたは暗号化されたモデルパラメータを使用してなされ得る。どちらの場合も、暗号化されたデータ、例えば、暗号化された入力、中間データ、出力データ、を使用してなされ得る。プレーンモデルパラメータを使用する方が通常はるかに効率的である。どちらの場合も、システムの効果は、コンピュータがプレーンデータアイテムを知らずに、計算が行われることであり、例えば、画像分類、例えば医療画像分類である。例えば、マンモグラムががんに対して評価される場合があるが、画像が暗号化計算デバイス110、120においてプレーンであることは決してなく、また、暗号化計算デバイス110、120、またはそのようなデバイスの連携なしで、がんの評価の結果が何であるかがわかる。プライバシーの観点からは、暗号化されたプライバシーにセンシティブなデータに対してプレーンモデルを演算することは許容できる可能性があるが、プレーンなプライバシーにセンシティブなデータに対して演算することは許容できない可能性がある。
【0082】
他の用途には、データベースサービスが含まれ、例えば、暗号化されたデータベースで暗号化されたデータを検索する;例えば、計算は、入力アイテムとデータベースアイテムの比較であり得る。例えば、複数の計算を組み合わせて、インデックスに一致するデータベースインデックスを作り出すことができる。例えば、データベースはゲノムデータベースであり得、そして入力は遺伝子配列であり得る。例えば、システム100、101は、デバイスの保護された制御に使用され得る。例えば、デバイスは、発電所などの大きなデバイスでさえ、センサー値を暗号化計算デバイス110、120に送り、引き換えに暗号化された制御信号を受信することができる。制御信号はセンサー信号から計算される。システムの攻撃者は、1つ以上の暗号化計算デバイス110、120へ行く、またはそれらから来る、データの内容を決定でき、あるいは、これらのデバイスの中間データにアクセスすることさえできるが、データは暗号化されているため、それは彼の役に立たない。システム100、101のすべての暗号化計算デバイス110、120を完全に解読しても、復号キーがこれらのデバイスに知られていないため、データは明らかにならない。制御信号の計算には、線形代数、平均、行列乗算、多項式評価などの数学的演算が含まれ得、これらはすべて、準同型暗号化演算で実行できる。
【0083】
例えば、暗号化されたデータアイテムのプールは、暗号化計算システムにおいて維持され得る;これらのうちのいくつかは受信され得、いくつかは、例えば中間結果などの暗号化された計算の結果であり得る。例えば、暗号化計算デバイス110、120は、プール内の1つ、2つ、またはそれより多くの暗号化されたデータアイテム、例えば、入力および/または中間および/または出力値のコレクションに準同型暗号化演算を適用するように構成され得る。結果は、プールに記憶され得る新しい暗号化されたデータアイテムであり得る。プールは、暗号化計算システムのストレージに記憶できる。これは、ローカルストレージまたは分散ストレージの場合がある。後者の場合、1つ以上の暗号化されたデータアイテムがプール内で複数回表されることがある。暗号化されたデータアイテムは、例えば、それらの値が他の場所で必要とされる場合、ある計算デバイスから別の計算デバイスに送られ得る。プールは、例えばレジスタファイル、配列、さまざまなデータ構造など、さまざまな方法で実装することができる。
【0084】
暗号文は通常、ノイジーな準同型暗号文であり、例えば、暗号化にはノイズの付加ステップが含まれ得る。ノイズ量は、準同型演算が適用されると変化し得る。復号には、ノイズが制限されたままである限り、正しいプレーンテキストまたはほぼ正しいプレーンテキストを返すことが保証されているノイズ除去ステップが含まれ得る。例えば、背景で言及されたトーラス上のFHEシステムのような、例えば、Learning With Errors(LWE)問題に基づく準同型暗号化スキームでは、暗号化キーは、n桁の文字列s、例えばビットであり得;暗号文は、タプル(a,…,a,b)であり得、ここで
【数4】
である。後者では、+と・はそれぞれトーラス要素の加算、および整数とトーラス要素の間の積を表し、aはn個の数、μはプレーンデータアイテム、eはノイズ、例えば確率分布、例えばガウス分布から取り出されるノイズである。
【0085】
このスキームは、多項式に基づくものを含む他の数学的構造にも自然に拡張される。したがって、数s、a、b、u、eは、異なる数学的構造から取られ得る。すべての暗号化されたデータアイテムが同じキーの下で暗号化される必要はなく、実際には異なるキーでの再暗号化は、可能な準同型暗号化演算である。あるキーから別のキーに変換するために、いわゆるキー切り替え手順を使用でき、これは、いわゆるキー切り替えキーを使用できる。キー切り替えキーは、第1ののキーの下で暗号化された要素を、どちらのキーも明らかにせずに第2のキーの下でいかにして再暗号化するかの情報を提供した。
【0086】
暗号化されたデータアイテムは、あらゆる種類のデータを表し得る。例えば、暗号化されたデータアイテムは、平均化が必要な数値や、線形回帰などに使用される数値を表し得る。例えば、暗号化されたデータアイテムは画像を表し得る。例えば、画像の各ピクセルは、1つ以上の暗号化されたデータアイテムに対応することができる。例えば、グレースケールピクセルはグレーレベルによって表され得、それは次に単一の暗号化されたデータアイテムによって表され得る。例えば、256のグレーレベルを単一の暗号化されたデータアイテムにエンコードできる。例えば、カラーピクセルは、複数のカラーレベル、例えばRGBレベルとして表すことができ、RGBレベルは、次に暗号化されたデータアイテムのタプルによって表すことができる。例えば、3つの256レベルの色を3つの暗号化されたデータアイテムにエンコードできる。あるタイプのデータを表すために使用される暗号化されたデータアイテムの数は、準同型暗号化スキームの容量に依存する。例えば、より制限的な準同型暗号化スキームは、暗号化されたデータアイテムごとに1ビットしかエンコードできない場合がある。その場合、1つのカラーピクセルで、24個の暗号化されたデータアイテムが必要になり得る。
【0087】
復号キーへのアクセスなしでは、ノイズの大きさを正確に言うことができない場合があるが、例えば、初期のノイズレベルはフレッシュな暗号化に対して知られており、さまざまな演算でのノイズの増加が知られているため、通常はノイズを制限することができる。ノイズの増加は、演算のタイプ、例えば加算に対して乗算、および、あるとして、その他のパラメータに依存し得る。例えば、準同型暗号化演算は、スカラー乗算:知られている、例えば、プレーン、値との乗算であり得る。例えば、大きい値を用いる乗算は、小さい数値を用いる乗算するよりもノイズを増加させ得る。行われる演算が与えられた場合に、増加するノイズの正確な量は、数学的に計算することも、経験的に推定することもできる。いくつかの演算ではかなりの量のノイズが付加され得るが、他の演算ではノイズが付加されない場合があり、例えば、プレーン定数の加算などである。
【0088】
準同型暗号化演算のセットは、計算のために定義され得る。例えば、準同型暗号化演算から、例えば図1cのコンパイラデバイス110によって、一緒に計算を実装するネットワークまたは演算回路を構築することができる。例えば、演算はブール演算を含み得、演算は、少なくとも1つのスカラー乗算を含み得る。しかし、これは本明細書の技術を適用するのに必要なわけではなく、例えば、スカラー乗算はキー切り替えの一部として適用されてもよく、この場合、行われる計算はスカラー乗算も含む必要がなく、またはこの場合、そのようなスカラー乗算は、提供される技術に従って実装される必要がない。準同型暗号化演算を組み合わせる方法、例えば、どの演算がプール内のどのオペランドに適用されるかによって、行われている計算が決定される。例えば、計算は、それらが行われる暗号化されたデータアイテムに関するインディケーションとともに、行われる準同型暗号化演算のリストとして表され得る。
【0089】
演算が行われると、新しい計算された(フレッシュでない)暗号化されたデータアイテムに関連するノイズが大きくなる可能性がある。これは、ノイズが復号に必要な制限内にとどまる限り問題ではない。さらに演算を行う場合は、ブートストラッピング演算を行える。しかし、ブートストラッピングの前に、またはブートストラッピングがまったく必要でなくても、行える演算の数を増加させるために、準同型演算および/またはブートストラッピング自体によるノイズの増加を制限することが望ましい。
【0090】
具体的には、Encで準同型暗号化スキームを示すとする。さまざまな設定で、スカラーkとノイジーな準同型暗号文Enc(x)についてc←k・Enc(x)を評価する必要があり得る。c←k・Enc(x)を直接計算することは可能であり得るが、これにより暗号文のノイズの大幅な増加をもたらし得る。
【0091】
暗号化された値xが値の暗号文のセットにより表される場合、より小さいノイズ増加が達成され得、例えば、Enc(Bx)、0≦i≦nは、値xが基数Bのそれぞれの累乗Bにより乗算された、それぞれの暗号化であり、例えば、データプロバイダまたは他の当事者によって事前計算される。例えば、
【数5】
のように、暗号化された値は、係数のセットに従ってそれぞれの値の暗号文の線形結合を計算することによってスカラーにより乗算でき、ここで、例えば、
【数6】
のように、スカラーは、対応する基数の累乗の線形結合に等しくなる。
【0092】
さまざまな準同型暗号化スキームは、ノイジーな準同型暗号文をランダムスカラーにより乗算すると、ランダムスカラーの分散にランダムスカラーの期待値の2乗を加えた分だけノイジーな準同型暗号文のノイズ分散が乗算的に増加するという特性を満たす。これが当てはまる準同型暗号化スキームは数多くあり、例えばLWE、GLWE、Ring-LWE、Module-LWE、または類似のタイプの強度の仮定に基づくLWEタイプの暗号文;またはApprox-GCDやNTRUの問題に基づく暗号文などがある。
【0093】
変数Xについて、
【数7】
とVar(X)をそれぞれその期待値と分散を示すものとする。例えば、ノイズが中心にあり、その分散がEnc(x)とEnc(Bx)の同じ閾値σによって制限されていると仮定すると、c←k・Enc(x)に存在するノイズは、
【数8】
によって制限される分散を有し得る。スカラー乗算を線形結合として計算すること
【数9】
は、分散が
【数10】
で制限されるノイズをもたらす可能性がある。定義により、分散Var(k’)は
【数11】
を満たし、これは
【数12】
に展開できる。したがって、上記のノイズ分散は、線形結合を計算することによって暗号化されたスカラー乗算に制限され、
【数13】

【数14】
と等価的に書くことができる。したがって、この後者の境界を低減することが望まれる。
【0094】
一見、ノイズを低減するという観点からは、基数Bが偶数である場合、与えられた基数を用いる基数分解がマイナスの基数の半分、プラスの基数の半分、またはその両方に等しい係数を使用するかどうかに違いはないようである。いずれの場合も、ノイズへの寄与k’ は同じである。しかし、興味深いことに、発明者は、プラスの基数の半分、またはマイナスの基数の半分のみを可能にすると、他の桁に対しても次善の選定をもたらし、したがってノイズ低減の観点から次善の基数分解をもたらすことに気付いた。例えば、B=4を用いてk=22に適用すると、マイナスの基数の半分しか使用しないと、基数分解(1,-2,-2,-2)がもたらされるが、(1,1,2)の方がよい。同様に、プラスの基数の半分のみを使用する場合、他のスカラーは次善の基数分解につながる。
【0095】
したがって、発明者は、
【数15】

【数16】
の両方を含むように桁セットを増強することを想定した:したがって、スカラーkは、
【数17】
内の桁で分解され得る。少なくともいくつかのスカラーについては、基数分解の少なくとも1つの桁をマイナスの基数の半分に設定し、基数分解の少なくとも1つの桁をマイナスの基数の半分に設定してもよい。
【0096】
興味深いことに、マイナスの基数の半分とプラスの基数の半分の両方を使用することにより、後続の2桁が絶対値において基数の半分と等しくならないように保証することができる。これを保証することは、一般にノイズ低減、したがってあまりノイジーではない準同型スカラー乗算をもたらす。任意選択で、絶対値において基数の半分に等しい桁が、その桁と同じ符号を有する次の桁によって続かれることも保証できる。また、この要件自体は、ノイズの低減をもたらすため、有益である。これは、後続の桁が絶対値において基数の半分と等しくないように保証することと組み合わせると特に有益である。ノイズ低減の観点では、両方の特性を満たす基数分解が最適であると考えられる。
【0097】
上記特性を満たす基数分解は、バランスの取れた非隣接形式であると称することができる。特に、数学的には、偶数の基数Bが与えられると、整数kの修正された基数B表現(k’,…,k’,k’,k’)は、すべてのiについて、
1.
【数18】

2.
【数19】
;および
3.
【数20】
のとき、
【数21】
である場合のみ、バランスの取れた非隣接形式(BNAF)であるとして定義できる。
上記の特性の一部またはすべてを満たす基数分解を決定するさまざまな詳細な例を以下に説明する。
【0098】
図2aは、例えば、図1a-cのいずれかのうちのデバイス110に基づく係数決定デバイス200の実施形態の例を概略的に示す。デバイス200は、暗号化乗算ユニットによって使用するための係数のセットを、偶数の基数に関する基数分解の桁として決定することができる。
【0099】
この図のデバイス200は、最下位から最上位へと、反復的な方法で係数のセットを決定することができる。現在のスカラーK、231が与えられると、デバイス200は、基数分解236の現在の桁k、238を決定する。現在のスカラー231および桁238に基づいて、次に基数分解が決定される次のスカラーが決定される。例えば、現在のスカラーKを次のスカラーに更新し、その後、手順を繰り返すことができる。分解するスカラーに対して現在のスカラー231を初期化し、現在の桁237、238、239などを繰り返し決定することにより、スカラーの基数分解236を取得することができる。
【0100】
現在のスカラーK231から現在の桁238を決定するために、係数決定デバイス200は、基数を法とする現在のスカラーの値K mod B、232、言い換えれば、基数による除算の剰余を計算するように構成された除算ユニット221を利用することができる。この例では、剰余232は、例えば区間[0,B-1]内の値0≦K mod B<Bとして表されるが、同じサイズの他の区間、例えば、
【数22】
、[-1,B-2]等も同様に使用できる。
【0101】
値232の計算とは別に、除算ユニット221は、現在のスカラー231から剰余232を引いたものを、基数により割った商233、例えば、K’=(K-(K mod B))/Bを計算することもできる。商233は、次のスカラー、例えば、次の反復における基数分解を決定するための残りの値を表すことができる。
【0102】
基数が2の累乗である場合、除算ユニット221は特に効率的に実装することができ、例えば、値232は現在のスカラーKの最下位ビットに対応し得、値233は最上位ビットに対応し得る。
【0103】
桁決定ユニット222は、剰余232および商233から現在の桁238を決定するように構成され得る。
【0104】
桁決定ユニットが剰余K mod Bおよび商233から現在の桁kを決定するために適用することができる方法の2つの実施形態の例が、それぞれ図3aと3bに示されている。
【0105】
剰余K mod Bが基数の半分に等しくない場合、現在の桁kに対して可能な選定は一般に1つだけである。剰余K mod Bが基数の半分よりも小さい場合、図3aおよび3bのステップ310、315によって示されるように、現在の桁は剰余自体に設定され得る。次に、次のスカラーを商K’に設定できる。剰余K mod Bが基数の半分より大きい場合、図3aおよび3bのステップ320、325に示すように、現在の桁を剰余から基数を引いたものに設定することができる。次に、次のスカラーを商に1を加えた値に設定できる。
【0106】
剰余K mod Bが基数の半分に等しい場合、桁kはプラスの基数の半分とマイナスの基数の半分の中から選択できる。興味深いことに、少なくともいくつかの場合ではプラスの基数の半分が使用され、少なくともいくつかの他の場合ではマイナスの基数の半分が使用されることをもたらす決定基準が使用される。特に、桁kは、この選択が、後続の桁が絶対値において基数の半分に等しいことをもたらすかどうかを決定することに基づいて選択され得る。そうではない場合が保証され得、有益なノイズ特性を有する基数分解につながる。
【0107】
特に、図3aに示すように、マイナスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分に等しくなることをもたらす場合、プラスの基数の半分を選択することができる、335。これは、基数を法とする商K’がB/2-1に等しい場合、330、であり得る:この場合、マイナスの基数の半分を選択することは、次のスカラーが商に1を加えた値になり、基数を法とするB/2に等しくなることをもたらす。
【0108】
同様に、プラスの基数の半分を選択することが、次のスカラーが基数を法とする基数の半分と等しいことをもたらす場合、340、マイナスの基数の半分を選択することができる345。これは、基数を法とする商K’がB/2に等しい場合、340であり得る:この場合、プラスの基数の半分を選択することは、次のスカラーが商と等しくなり、基数を法とするB/2に等しくなることをもたらす。
【0109】
一般に、マイナスの基数の半分を選択することもプラスの基数の半分を選択することもしないことが、次のスカラーが基数を法とする基数の半分に等しくなることをもたらす場合、B/2に等しい後続の桁を回避するという観点からは、どちらの選定も可能である。図3aはこれを規定していないが、例えば、そのような場合には、常にB/2を選択するか、または常に-B/2を選択することが可能である。
【0110】
特に有益な選定は、絶対値において基数の半分に等しい桁が、その桁と同じ符号を有する次の桁によって続かれることを保証することである。これを図3bに示す。この図に示すように、次のスカラーが基数を法とする基数の半分よりも小さいことをもたらす場合、特に基数を法とする商が基数の半分よりも小さい場合、331、プラスの基数の半分を選択することができる、335。それ以外の場合は、マイナスの基数の半分を選択できる、345。この決定手順は、バランスの取れた非隣接形式をもたらし得る。図3bの決定331は、図3aの決定330および340と同じ桁の選択をもたらすことに留意されたい;その意味で、図3bの決定手順は、図3aの決定手順のより具体的なバージョンである。
【0111】
基数分解を決定するためのアルゴリズムの詳細な例がここに示されている。このアルゴリズムは、図3bの決定手順を実装し、バランスの取れた非隣接形式をもたらす。
【0112】
【表3】
【0113】
このアルゴリズムは、最下位から最上位まで、例えば右から左までの桁を処理する。現在のスカラーを表し、kに初期化される一時レジスタKを使用する。連続する桁k’は、Bを法とするKの絶対値最小の剰余、すなわちk’≡K(mod B)および
【数23】
によって与えられる。
【0114】
【数24】
なので、
【数25】
の場合は特別な処理が必要である。桁
【数26】
および
【数27】
は同じ大きさである。2つの間の選定は、次の観察:
【数28】
に依存する。
【0115】
【数29】
の場合、k’
【数30】
;そうでない場合、k’
【数31】
に設定される。後者の場合、
【数32】
であることに留意されたい。
【0116】
すべての場合において、
【数33】
ならば
【数34】
であることに留意されたい。
【0117】
【数35】
の場合、k’i+1≧0であり、
【数36】
の場合、k’i+1≦0であることも観察できる。したがって、アルゴリズムはバランスの取れた非隣接形式を決定する。
【0118】
アルゴリズムは、入力k=0に(0)を返すことにより、k=0の場合をカバーするように容易に拡張できることに留意されたい。
【0119】
図3bまたは上で提供されたアルゴリズムに従って決定された基数分解を使用することのノイズ特性の詳細な分析が与えられる。この解析はアルゴリズムの表記の観点から与えられるが、他のBNAF形式の基数分解にも、偶数の基数で適用されると考えられる。
【0120】
上記において、アルゴリズムは、k’=K mod Bならば、
【数37】
である。したがって、各反復におけるk’の出力値は、K mod Bおよび
【数38】
の現在の値によって完全に決定することができる。したがって、各可能なケースを記述するには、一対の桁(e,d)で十分である。
【0121】
いくつかの表記がここで導入される。反復iでループに入るKの連続する値を追跡する量Kを定義し、K mod B=eB+dであるように、K mod Bを0≦d,e<Bの対(e,d)として表す。構築により、
【数39】
を有する。K mod B=(e,d)の値に応じて、考慮すべきさまざまなケースがある。これについては、対(e,d)に従って出力桁k’を示す次の表で詳しく説明する。
【0122】
【表4】
【0123】
最後の列では、(e,d)の知識はdi+1のみを取得できることに注意されたい。
【数40】
を有する。
また、kを形成する基数Bの桁が{0,…,B-1}上で一様にランダムである場合、ei+1もそうであることに注意されたい;言い換えると、
【数41】
の確率で、ei+1は{0,…,B-1}内の任意の値を取ることができる。
【0124】
対応するマルコフ行列Pは、要素(i,j)は、ケースiからケースj(1≦i,j≦4)に移行する確率を示し
【数42】
により与えられる。
【0125】
同伴定常確率ベクトル
【数43】
は、Σ1≦j≦4π=1に従い、
【数44】
を満たす。
【数45】
を見出す。各桁の発生確率は、以下のように決定することができる。B≧2を偶数の整数とする。すると、上記のアルゴリズムによる一様にランダムなBNAF形式からの桁
【数46】
は、次の分布
【数47】
に従う。
【0126】
これは次のように実現され得る。桁d=0を除くと、表のケース1とケース2は対称である。したがって、π=Pr[k’=0]+πを推定し、したがって
【数48】
である。表から、
【数49】

【数50】
も得られる。残りのケース(すなわち、
【数51】
)については、表(0を除く)のケース1と2から、すべての桁が等確率であり、したがって
【数52】
であることを推測する。
【0127】
結果として、以下が導き出され得る。B≧2を偶数の整数とする。すると、上記のアルゴリズムによる一様にランダムなBNAF形式の桁k’
【数53】
を満たす。
【0128】
これは、恒等式
【数54】
を使用して実現できる。その定義から、
【数55】
であるため、分散は
【数56】
により与えられる。
【0129】
上記の分析は、基数分解が準同型暗号化スキームでより良いノイズ制御を提供することを示している。さまざまな準同型暗号化スキームでは、
【数57】
の値を低減することは、ノイズ制御の観点で有益である。上記の分析は、本明細書で説明されるBNAF基数分解について:
【数58】
を意味する。マイナスの基数の半分を桁として使用し、プラスの基数の半分を使用しない基数分解の場合
【数59】
と決定できる。この再符号化では、各桁k’は等確率であり、例えば、発生確率は
【数60】
である。したがって、
【数61】
および
【数62】
である。したがって、本明細書に説明されるBNAF基数分解は
【数63】
の改善を達成する。
【0130】
次の表は、いくつかの基数Bに対して、差
【数64】
を示している。
【0131】
【表5】
【0132】
提供される技術の利点は、より大きな基数、例えば、最大4、少なくとも8、または少なくとも16の基数に対して特に大きいことが観察され得る。これは、2の累乗ではない基数にも当てはまる。
【0133】
また、例えば、複数のスカラー乗算の結果を足し合わせる場合など、複数のスカラー乗算が行われる場合、増幅効果が達成されることにも留意されたい。例えば、キー切り替えでは、スカラー乗算の数が多く、基数分解の精度を表すレベルの数と暗号文の大きさ(dimension)の両方でスケールする(例えば、少なくとも128、少なくとも256、または少なくとも1024、例えば、128ビットセキュリティレベルでは10≒210)、したがって、提供された技術を使用すると、特にパラメータが大きい場合のキー切り替えに特に有益である。
【0134】
図2bは、例えば、図1a-1cのいずれかのうちのデバイス110に基づく係数決定デバイス201の実施形態の例を概略的に示す。デバイス201は、暗号化乗算ユニットによって使用するための係数のセットを、偶数の基数に関する基数分解250の桁として決定することができる。
【0135】
基数分解250は、後続の2桁が両方とも絶対値において基数の半分に等しくないことを保証するような方法で決定することができる。この目的のために、デバイス201は、最初に、この保証を提供しない基数分解240を決定し、次に、基数分解240を補正して、基数分解250を取得することができる。
【0136】
特に、図に示されているのは、基数分解が決定されるスカラーK、230である。また、スカラー230の基数分解240を決定する基数分解ユニット223も示されている。基数分解240の桁241-246は、マイナスの基数の半分、含んでいる、とプラスの基数の半分、含んでいる、との間にあり得る。場合によっては、ユニット223は、必要に応じてマイナスの基数の半分を使用し得るが、プラスの基数の半分を使用することはない。例えば、基数分解ユニット223は、本明細書の他の箇所で論じられるアルゴリズム「符号付き桁基数B再符号化(B≧4偶数、マイナスの基数の半分のみ使用)」を適用することができる。他の場合、ユニット223は、必要に応じてプラスの基数の半分を使用できるが、マイナスの基数の半分を使用することは決してない。ユニット223は、マイナスの基数の半分とプラスの基数の半分の両方を使用して基数分解を出力できることも可能である。
【0137】
しかし、基数分解ユニット223は、後続の2桁が両方とも絶対値において基数の半分に等しくないことを保証するように構成されていない。したがって、少なくともいくつかのスカラーKについて、基数分解ユニット223は、後続の2つの桁が絶対値において基数の半分に等しい基数分解を出力することができる。
【0138】
分解補正ユニット224を使用して、基数分解240を補正することにより、基数分解250を決定し、後続の2桁が両方とも絶対値において基数の半分に等しくないことを保証してもよい。基数分解250の桁251-256は、依然として、マイナスの基数の半分、含んでいる、およびプラスの基数の半分の間に存在し得る。少なくともいくつかのスカラー230については、桁251-256のうちの少なくとも1つは、プラスの基数の半分に設定することができ、桁251-256のうちの少なくとも1つは、マイナスの基数の半分に設定することができる。
【0139】
ユニット224が補正を行うことができる一つの方法は、基数分解240の桁241-246を、最下位から最上位に、例えば、図の左から右に反復することによるものである。基数分解240の現在の桁が、マイナスの桁の半分またはプラスの桁の半分のいずれにも等しくない場合、それは、補正された基数分解250において変更されないままにされ得る。
【0140】
現在の桁が、基数分解240のマイナスの桁の半分またはプラスの桁の半分に等しい場合、選択が、後続の桁が絶対値において基数の半分に等しいことをもたらすかどうかの決定に基づいて、プラスの基数の半分とマイナスの基数の半分の中から基数分解250のこの桁を選択してもよい。例えば、現在の桁をマイナスの基数の半分からプラスの基数の半分に切り替えると、後続の桁が1つ減少し得、現在の桁をプラスの基数の半分からマイナスの基数の半分に切り替えると、後続の桁が1つ減少し得る。一方、切り替えがなされない場合、後続の桁は、基数分解250において、基数分解240においてと同じであり得る。したがって、プラスまたはマイナスの基数の半分から現在の桁を選択することにより、次の桁もプラスまたはマイナスの基数の半分に等しいことを回避できる。
【0141】
特定の場合が図に示されている。この例では、元の基数分解240は、それぞれがマイナスの基数の半分に等しい複数の後続の桁242、243、244を含み、マイナスの基数の半分に等しくない桁245が後に続く。最下位から最上位まで繰り返すとき、桁242が最初に検出され得る。桁242、243は両方ともマイナスの基数の半分に等しいので、桁242は、プラスの基数の半分に等しい桁252に切り替えられ得る。この場合、後続の桁243は、すでにマイナスの桁の半分に等しいため、1つ低減することはできない。この場合、後続の桁243は、代わりに基数の半分から1を引いたものに等しい桁253に設定できる。この例の次の桁244も、すでにマイナスの基数の半分に等しいため、1つ低減することはできず、したがって、同様に基数の半分から1を引いたものに等しい桁254に設定される。この例の桁245は、マイナスの基数の半分に等しくないため、桁255を取得するために1つ低減することができる。
【0142】
より一般的には、マイナスの桁の半分に等しくない桁245が続く、すべてマイナスの桁の半分に等しい1つ以上の連続する桁のシーケンス242-244はプラスの基数の半分に等しい桁252で始まるシーケンスに補正することができ;その後に、プラスの基数の半分から1を引いたものに等しい0個以上の桁253-254が続き;その後に、対応する元の桁245から1を引いたものに等しい桁255が続く。これは、形式(b,-B/2,…,-B/2,-B/2)と(b-1,B/2-1,…,B/2-1,B/2)が同等であるという事実に基づいて実現できる。ここで、bは-B/2と等しくない。
【0143】
元の基数分解240が、例えば、マイナスの基数の半分に等しい桁の代わりに、プラスの基数の半分に等しい桁を使用する場合も同じ原理が適用される。
【0144】
したがって、分解補正ユニット224は、後続の2桁が両方とも絶対値において基数の半分に等しくないことを保証することができる。興味深いことに、分解補正ユニット224は、さらに、絶対値において基数の半分に等しい桁が、その桁と同じ符号を有する次の桁によって続かれることを保証することができる。この目的のために、分解ユニット224は、選択が、後続の桁が絶対値において基数の半分に等しいことをもたらすかどうかの決定だけでなく、次の桁がその桁と同じ符号を有することをもたらすかどうかにも基づいて、プラスの基数の半分とマイナスの基数の半分の中から基数分解の桁を選択してもよい。したがって、BNAF形式の基数分解が取得され得る。
【0145】
これは、次のアルゴリズムの例で詳細に説明されている。このアルゴリズムは、プラスの基数の半分を使用しない修正された基数B形式を入力に取り込み、セット
【数65】
内の桁を用いる別の修正された基数B形式を作り出す。
【0146】
【表6】
【0147】
興味深いことに、例えば、後続の2つの桁が両方とも絶対値において基数の半分に等しくないことを保証することにより、および/または絶対値において基数の半分に等しい桁が、その桁と同じ符号を有する次の桁によって続かれることを保証することにより、入力表現をBNAFに変えることが準同型スカラー乗算のノイズ発展の観点から分解を改善することが、このアルゴリズムから観察され得る。興味深いことに、場合によっては、結果の表現も短くなり得、例えばk’=0になり、これにより、準同型スカラー乗算を行うことがより効率的になる可能性がある。
【0148】
図4aは、準同型スカラー乗算を行うためのデバイス400の実施形態の例を概略的に示す。デバイス400は、例えば、図1aまたは図1bのデバイス110、または図1cのデバイス120に基づくことができる。
【0149】
デバイスは、暗号化された値440、および暗号化された値が乗算されるスカラーk、439を取得することができる。暗号化される値は、スカラーにより準同型的に乗算できる任意の値にすることができ、例えば、実数;トーラス上の実数[0,1);多項式;整数、等である。スカラーは整数である。
【0150】
例えば、値はモジュラー整数である。例えば、暗号化された値が(離散化された)トーラス上にあるとき、スカラーはモジュラー整数として見ることができる(例えば、「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」を参照)。数学的には、実トーラス[0,1)は商
【数66】
として書くことができ、任意の正の整数qに対して、商
【数67】
は位数qの
【数68】
の加法部分群である;したがって、離散化されたトーラス
【数69】
の任意の要素tについて、kまたは(k mod q)によるtのスカラー乗算は同じ値をもたらす。
【0151】
スカラーは正または負の値になり、例えば、基数以上、もしくは基数の2乗以上の正の値、またはマイナス基数以下、もしくはマイナス基数の2乗以下の負の値である。「スカラー」という用語は、本明細書では、プレーン、例えば暗号化されていない値を意味するとして使用される。したがって、デバイス400は、暗号化されていない形式でスカラー439にアクセスできるが、スカラーが乗算される値440にはアクセスできない。スカラーは、例えば、暗号化された値440が乗算される多項式の係数であり得る。値440をプレーンにおいて知らない(またはいずれにせよ使用しない)にもかかわらず、デバイス400は、スカラー439により乗算された値の暗号化490を依然として計算することができる。
【0152】
デバイス400は、例えば、図2aまたは図2bの技術を使用して、本明細書に説明される基数分解としてスカラー乗算の係数430のセットを決定するように構成された基数分解ユニット421を備え得る。しかし、デバイス400が基数分解ユニット421を含む必要はない:デバイス400は、例えば、ノイジーな準同型暗号文で計算を行うための準同型実行可能ファイルに含まれるように、別の方法で係数430のセットを取得することも可能である。
【0153】
準同型スカラー乗算を行うために、デバイス400は、暗号化乗算ユニット422を含み得る。暗号化乗算ユニット422は、係数430のセットに基づいて、暗号化された値440をスカラー439により準同型的に乗算するように構成され得、したがって、暗号化された値とスカラーの積の暗号化450を取得する。暗号化された値440は、複数のそれぞれの値の暗号文441-443によって表すことができる。それぞれの値の暗号文441、442、443は、基数のそれぞれの累乗Bにより乗算された値xを暗号化するノイジーな準同型暗号文であり得る。通常、すべての暗号文441-443は、対称キーまたは非対称キーであり得る同じキーの下での暗号化である。例えば、暗号化はLWEタイプの暗号文、またはApprox-GCDやNTRUに基づく暗号文とすることができる。
【0154】
例えば、デバイス400は、別の当事者から、例えば、計算をアウトソーシングする当事者またはキー切り替え材料を提供する当事者から値の暗号文441-443を受信するように構成され得る。デバイス400はまた、値の暗号文441-443自体を計算することができる。例えば、暗号化された値xのそれぞれのスカラーとの繰り返し乗算が必要な場合、デバイス400は、暗号化された値のそれぞれの値の暗号化Enc(Bx)を1回計算し、それぞれのスカラー乗算でそれらを再利用することができる。そのような場合、スカラー乗算からもたらされるノイズの量を低減するために、デバイス400は、スカラー乗算を行う前に、それぞれの値の暗号化441-443に対してブートストラッピングを行うことが好ましい。
【0155】
暗号化乗算ユニット422は、例えば、
【数70】
のように、係数のセットのそれぞれの係数431-433に従って、複数のそれぞれの値暗号文441-443の線形結合を準同型的に計算するように構成され得る。興味深いことに、暗号化乗算ユニット422は、準同型暗号文の復号キーを必要とせずにこの計算を行うことができる。このような線形結合を暗号化下で計算することは、それ自体が知られている。例えば、値の暗号文441-443の係数431-433による乗算は、繰り返し加算または他の知られている方法で実装することができる。
【0156】
線形結合の計算は、それぞれの値の暗号文441-443を、係数のセットからのそれぞれの係数431-433により乗算すること、例えば、k・Enc(Bx)の計算を含み得る。興味深いことに、これらのそれぞれの乗算は、少なくとも部分的に並行して、例えば、GPUまたはFPGAなどの専用の処理ユニットを使用して、それらの一部である乗算または演算を行うように行われ得る。このように、大きな乗算を、より小さい数によるそれぞれのスカラー乗算に分割することにより、並列化性、およびしたがって性能が改善され、専用の処理ユニットをより良好に使用できる。
【0157】
この図の例は、多項式k+k’x+…による暗号化された値の準同型乗算に容易に拡張できる。このような準同型乗算は、多項式のそれぞれの係数k,k’,…の基数分解に基づいて実装できる。例えば、スカラー439は、多項式の定数係数kを表すことができ、そして、多項式の追加の係数k’,…を用いて拡張することができる。定数係数kの基数分解の桁k、431-433は、それぞれの係数k,k’,…の桁を含む多項式k+k’x+…に拡張できる。したがって、多項式431-433は、本明細書に説明されるように、多項式のそれぞれの係数の基数分解を決定することによって決定され得る。準同型乗算は、値の暗号文441-443をそれぞれの多項式431-433により準同型乗算することによって行うことができる。したがって、この場合、暗号化された値の定数係数kによる準同型乗算、および多項式の他の係数k’による準同型乗算は、多項式による暗号化された値の準同型乗算のサブ演算である。
【0158】
図4bは、ノイジーな準同型暗号文のキー切り替えを行うためのデバイス401の実施形態の例を概略的に示す。デバイス401は、例えば、図1aまたは図1bのデバイス110に基づくことができる。
【0159】
デバイス401は、ソース暗号文460を取得するように構成され得る。ソース暗号文460は、ソース暗号化キーの下でソース暗号化された値を暗号化するノイジーな準同型暗号化であり得る。デバイス401は、同じソース暗号化された値を、異なるターゲット暗号化キーの下で暗号化するターゲット暗号文490を決定することができる。異なるキーの下で同じ値の暗号化をこのように決定することは、キー切り替えとも呼ばれる。本明細書で提供される技術を使用することにより、ターゲット暗号文490をより少ないノイズで取得することができる。
【0160】
具体例として、提供された技術は、「TFHE:Fast fully homomorphic encryption over the torus」のアルゴリズム2で提供されるキー切り替え技術で使用できる。特に、この技術は、TLWEからTLWEへのキー切り替えを行うために使用でき、例えば、論文のアルゴリズム2のN=1である。
【0161】
キー切り替えは、暗号化の下で、1つ以上のキー切り替え値の線形結合の計算に基づいて行える。デバイス401は、暗号化された形式でこれらのそれぞれのキー切り替え値を含むキー切り替え情報480を取得することができる。それぞれのキー切り替え値の暗号文は、キー切り替え値を暗号化するノイジーな準同型暗号文であり得、キー桁とも呼ばれ、ターゲット暗号化キーの下で基数のそれぞれの累乗により乗算される。キー切り替え値の暗号文は、キー切り替えキーとも呼ばれる。「TFHE:Fast fully homomorphic encryption over the torus」では、キー切り替えキーはKSi,jと示されている。
【0162】
デバイス401は、ソース暗号文から、それぞれの暗号化されたキー切り替え値480のそれぞれの係数a’461-463を決定することができる係数計算ユニット423を備えることができる。これがなされる方法は、適用される正確なキー切り替え手順に依存する。デバイス401は、基数分解ユニット421をさらに含み得る。基数分解ユニット421は、本明細書に説明されるように、それぞれの係数a’に対応する係数a’i,1,…,a’i,tのそれぞれのセットを決定することができる。係数のセットは、暗号化されたキー切り替え値を係数461-463により乗算するために使用され得る。したがって、係数計算ユニット423および基数分解ユニット421は、一緒になって、キー切り替え値の暗号文
【数71】
と乗算されるべきそれぞれの係数a’i,jを決定することができる。
【0163】
例えば、論文「TFHE:Fast fully homomorphic encryption over the torus」では、係数
【数72】
が決定され、キー切り替えキーKSi,jと乗算される。これらの係数は
【数73】
のビット分解
【数74】
として決定される。TLWEからTLWEへのキー切り替えの場合、係数
【数75】
はビットである。この係数の計算は、本明細書で説明するように、基数分解ユニット421に係数a’i,j
【数76】
の基数2の基数分解として計算させることにより、提供された技術を使用して改善することができ、+1だけでなく-1も係数として可能である。この技術は、
【数77】
が任意の基数B>2に対して
【数78】
として分解されるより高い基数にも適用できる。
【0164】
デバイス401は、例えば、本明細書に説明される暗号化乗算ユニットを使用して、本明細書に説明されるそれぞれの暗号化されたキー切り替え値480をそれぞれの係数470により準同型的に乗算することを含む、ターゲット暗号文490を計算するターゲット暗号文計算ユニット424をさらに備え得る。例えば、「TFHE:Fast fully homomorphic encryption over the torus」のキー切り替え手順では、ターゲット暗号文490は、元のアルゴリズムの係数
【数79】
の代わりに係数a’i,jを使用して、
【数80】
として計算される。
【0165】
他のさまざまなキー切り替え技術は、提供される技術を使用して同様に改善され得る。特に、キー切り替えには、多項式によりキー切り替え値において乗算することが含まれ得る。これには、この図で説明されているように行えるサブ演算として、キー切り替え値をスカラー、例えば多項式の定数係数により乗算することが含まれ得る。例えば、「TFHE:Fast fully homomorphic encryption over the torus」のキー切り替え技術は、TLWEからTRLWEへのキー切り替えに使用でき、そこでは係数
【数81】
は多項式である。この図の例は、このキー切り替え手順を改善するために容易に一般化することができ、例えば、基数分解は、多項式の係数のそれぞれについて本明細書で説明されているように決定でき、これらの基数分解は、多項式による乗算を行うために使用できる。
【0166】
多項式の代わりに、または多項式を使用することに加えて、2より高い基数もキー切り替えに使用できる。このような場合、それぞれのキー切り替え値が乗算されるそれぞれの係数について、基数が2より高い基数分解を決定できる。例えば、「TFHE:Fast fully homomorphic encryption over the torus」のキー切り替えをより高い基数に応用したものは、「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」で説明される。提供された技術は、そのキー切り替え手順で使用される基数分解を改善するためにも使用できる。
【0167】
図5aは、暗号化乗算ユニットによって使用するための係数のセットを決定する方法500の実施形態の例を概略的に示す。暗号化乗算ユニットは、暗号化された値をスカラーにより準同型的に乗算するように構成され得る。暗号化された値は、複数のそれぞれの値の暗号文により表すことができる。それぞれの値の暗号文は、基数のそれぞれの累乗により乗算された値を暗号化するノイジーな準同型暗号文である。暗号化乗算ユニットは、係数のセットに従って、複数のそれぞれの値の暗号文の線形結合を準同型的に計算するように構成され得る。暗号化された乗算自体は、方法500の一部ではない。
【0168】
方法500は、スカラーおよび基数を取得すること510を含むことができる。基数は偶数であり得る。
【0169】
方法500は、係数のセットを、基数に関するスカラーの基数分解の桁として決定すること520を含み得る。決定された桁は、マイナスの基数の半分、含んでいる、と、プラスの基数の半分、含んでいる、の間にあり得る。決定すること520は、後続の2つの桁が両方とも絶対値において基数の半分に等しくないことを保証すること521を含み得る。
【0170】
方法500は、暗号化された値をスカラーにより準同型的に乗算するために、暗号化乗算ユニットに係数のセットを提供すること530を含み得る。
【0171】
図5bは、暗号化された値の準同型スカラー乗算を行う方法500’の実施形態の例を概略的に示す。方法500’は、暗号化乗算ユニットにより、係数のセットに従って複数のそれぞれの値の暗号文の線形結合を準同型的に計算することによって、暗号化された値をスカラーにより準同型的に乗算すること540をさらに含むことを除き、図5aの方法500と同じである。
【0172】
図6は、ノイジーな準同型暗号文のためのキー切り替え方法600の実施形態の例を概略的に示す。
【0173】
方法600は、それぞれの暗号化されたキー切り替え値、例えばキー桁を含むキー切り替え情報を取得すること610を含み得る。暗号化されたキー切り替え値は、複数のそれぞれのキー切り替え値の暗号文によって表すことができる。それぞれのキー切り替え値の暗号文は、キー切り替え値、例えば、ターゲット暗号化キーの下での基数のそれぞれの累乗により乗算されたキー桁を暗号化する、ノイジーな準同型暗号文であり得る。
【0174】
方法600は、ソース暗号文を取得すること620を含み得る。ソース暗号文は、ソース暗号化キーの下でソース暗号化された値を暗号化するノイジーな準同型暗号化であり得る。
【0175】
方法600は、ソース暗号文から、それぞれの暗号化されたキー切り替え値のそれぞれ係数を決定すること630を含み得る。
【0176】
方法600は、ターゲット暗号化キーの下でソース暗号化された値を暗号化するターゲット暗号文を計算すること640を含むことができる。計算すること640は、本明細書に説明される方法、例えば、図5bの方法500’に従って、それぞれの暗号化されたキー切り替え値をそれぞれの係数により準同型的に乗算すること500’を含み得る。
【0177】
図7は、計算を準同型実行可能ファイルにコンパイルする方法700の実施形態の例を概略的に示す。準同型実行可能ファイルは、暗号化計算エンジンによって実行可能であり得る。準同型実行可能ファイルは、暗号化計算エンジンにノイジーな準同型暗号文上で計算を行わせ得る。計算は、値をスカラーにより乗算することを含み得る。
【0178】
方法700は、本明細書に説明される方法、例えば図5aの方法500に従って、暗号化された値としての値をスカラーにより準同型的に乗算する際に使用する係数を決定すること500を含んでもよい。
【0179】
方法700は、暗号化された値をスカラーにより準同型スカラー乗算するための1つ以上の命令を準同型実行可能ファイルに含めること720を含むことができる。1つ以上の命令は、決定された係数を含み得る。
【0180】
当業者には明らかであろうように、方法500、500’、600、700を実行する多くの異なる方法が可能である。例えば、ステップの順序は示されている順序で行うことができるが、ステップの順序を変えることができるか、またはいくつかのステップを並行して実行することができる。さらに、ステップの間に他の方法ステップを挿入することができる。挿入されたステップは、本明細書に説明されるような方法の改良を表すことができ、または方法とは無関係であり得る。例えば、いくつかのステップは、少なくとも部分的に、並行して実行され得る。さらに、所与のステップは、次のステップが開始される前に完全に終了していない可能性がある。
【0181】
方法の実施形態は、プロセッサシステムに方法500、500’、600、または700を行わせるための命令を含むソフトウェアを使用して実行することができる。ソフトウェアは、システムの特定のサブエンティティによってとられるステップのみを含むことができる。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切なストレージ媒体に記憶することができる。ソフトウェアは、有線、無線、またはデータネットワーク、例えば、インターネット、を信号として送られ得る。ソフトウェアは、ダウンロードおよび/またはサーバでのリモート使用のために利用可能にすることができる。本方法の実施形態は、プログラマブルロジック、例えば、フィールドプログラマブルゲートアレイ(FPGA)を構成するように構成されたビットストリームを使用して実行されて、本方法を行うことができる。
【0182】
現在開示されている主題はまた、現在開示されている主題を実施するように適合されたコンピュータプログラム、特にキャリア上またはキャリア内のコンピュータプログラムにも及ぶことが理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、および部分的にコンパイルされた形式などのオブジェクトコードの形式、または方法の実施形態の実装での使用に適した他の形式であり得る。コンピュータプログラム製品に関する実施形態は、記載された方法のうちの少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、および/または静的もしくは動的にリンクされ得る1つ以上のファイルに記憶され得る。コンピュータプログラム製品に関する別の実施形態は、記載されたシステムおよび/または製品のうちの少なくとも1つのデバイス、ユニット、および/または部品のそれぞれに対応するコンピュータ実行可能命令を含む。
【0183】
通常、本明細書、例えば図1a-1cに説明されるデバイスは、システムに記憶された適切なソフトウェアを実行する1つ以上のマイクロプロセッサを備える;例えば、そのソフトウェアは、対応するメモリ、例えば、RAMなどの揮発性メモリまたはフラッシュなどの不揮発性メモリにダウンロードおよび/または記憶されてよい。あるいは、システムは、全体的または部分的に、例えば、フィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックで実装することができる。システムは、全体的または部分的に、いわゆる特定用途向け集積回路(ASIC)、例えば、それらの特定の用途のためにカスタマイズされた集積回路(IC)として実装され得る。例えば、回路は、例えば、Verilog、VHDLなどのハードウェア記述言語を使用して、CMOSで実装され得る。特に、システムは、暗号プリミティブの評価のための回路を含み得る。
【0184】
プロセッサ回路は、例えば、複数のサブプロセッサ回路として、分散された様式で実装することができる。ストレージは、複数の分散されたサブストレージに分散できる。メモリの一部または全部は、電子メモリ、磁気メモリなどであり得る。例えば、ストレージは揮発性部分と不揮発性部分とを有することができる。ストレージの一部は読み出し専用にすることができる。
【0185】
図8aは、書き込み可能な部分1010を有するコンピュータ可読媒体1000と、やはり書き込み可能な部分を有するコンピュータ可読媒体1001とを示している。コンピュータ可読媒体1000は、光学的可読媒体の形態で示されている。コンピュータ可読媒体1001は、電子メモリ、この場合はメモリカードの形態で示されている。コンピュータ可読媒体1000および1001は、データ1020を記憶することができ、データは、プロセッサシステムによって実行されると、プロセッサシステムに実施形態によるブラインドローテーション(blind rotation)方法の実施形態を行わせる命令を示すことができる。代わりに、またはさらに、データは、本明細書に説明されるように計算がコンパイルされる準同型実行可能ファイルを表すことができる。
【0186】
データ1020は、物理的マークとして、またはコンピュータ可読媒体1000の磁化によって、コンピュータ可読媒体1000上に具現化され得る。しかし、他の任意の適切な実施形態も考えられる。さらに、コンピュータ可読媒体1000はここでは光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、記録不可能であっても記録可能であってもよいことが理解されるであろう。コンピュータプログラム1020は、プロセッサシステムに係数を決定する前記方法を行わせるための命令を含む。
【0187】
図8bは、係数のセットを決定するためのデバイスの一実施形態によるプロセッサシステム1140の概略図を示す。プロセッサシステムは、1つ以上の集積回路1110を備える。1つ以上の集積回路1110のアーキテクチャは、図6bに概略的に示されている。回路1110は、コンピュータプログラム構成要素を実行して、実施形態による方法を実行するため、および/またはそのモジュールもしくはユニットを実装するための処理ユニット1120、例えばCPUを備える。回路1110は、プログラミングコード、データなどを記憶するためのメモリ1122を備える。メモリ1122の一部は、読み出し専用であり得る。回路1110は、通信素子1126、例えばアンテナ、コネクタ、またはその両方などを備え得る。回路1110は、方法で定義された処理の一部または全部を行うための専用の集積回路1124を備え得る。プロセッサ1120、メモリ1122、専用IC1124、および通信素子1126は、相互接続1130、例えばバスを介して相互に接続することができる。プロセッサシステム1110は、それぞれアンテナおよび/またはコネクタを使用して、接触および/または非接触通信のために構成されることができる。
【0188】
例えば、一実施形態では、プロセッサシステム1140、例えば、係数のセットを決定するためのデバイスは、プロセッサ回路およびメモリ回路を備え得、プロセッサは、メモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、Intel Corei7プロセッサ、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
図2a
図2b
図3a
図3b
図4a
図4b
図5a
図5b
図6
図7
図8a
図8b
【国際調査報告】