Craig Gentryは2009年、暗号学者たちが約30年間その存在を疑い続けてきたものを可能であると証明した。そのアイデアはこうだ。データを暗号化し、他者に渡す。その者がデータに対して演算を行い、結果を返す。その結果を復号化すると、正しい値が得られる。演算を行った者はあなたのデータを一切見ていない。加工された版でもなく、ハッシュでもない。実際の値は、1マイクロ秒たりとも露出しない。これが完全準同型暗号(Fully Homomorphic Encryption)——第三者がデータを復号化することなく演算を実行できる暗号化の形態だ。
では、FHE(完全準同型暗号)とは何か?これはトリックではない。特定の暗号方式が持つ数学的な性質だ。施錠された箱を誰かに送る。その者が中身を並べ替える。あなたが開錠すると、並べ替えは正しい。その者は鍵を持っていなかった。
FHEの仕組みに入る前に、それが解決する問題を明確にしておく価値がある。「機密データ上で演算する」ためのほとんどのアプローチには、人々が疑問を持たずに受け入れてきたトレードオフが存在するからだ。
標準的なアプローチ:保存中および転送中のデータを暗号化し、処理前に復号化する。クラウドプロバイダー、分析ベンダー、MLサービス——いずれも仕事をするには平文が必要だ。あなたは必要に迫られて彼らを信頼する。これはうまく機能するが、そうでなくなることもある。情報漏洩、召喚状、内部脅威、誤って設定されたアクセスポリシーなどだ。
Intel SGXのような信頼実行環境(TEE)は、オペレーティングシステムでさえ読み取れないシールドされたメモリ領域を作成する。機密の演算はエンクレーブ内で行われる。これは実際に有用だが、ハードウェアベンダーを信頼し、エンクレーブの実装に悪用可能な欠陥がないと賭けることになる。SGXにはいくつかの欠陥があった。
差分プライバシーはクエリ結果に調整された統計ノイズを加え、集計出力から攻撃者が個人について推測できる量を制限する。これは集計を保護するものであり、個別レコードへの演算を保護するものではない。
FHEはサーバー上でデータが一切復号化されない唯一のアプローチであり、セキュリティーの証明にハードウェアや第三者への信頼を必要としない。その保証は数学的なものだ。
FHEスキームは暗号文に対して直接算術演算を定義する。暗号化された値に対する準同型加算と準同型乗算は、復号化すると、元の平文に対してそれらの演算を行った場合と同じ結果を生成する。
2つの演算では限られているように聞こえるが、そうではない。二値体上の加算と乗算はANDゲートとXORゲートを与え、それにより任意のデジタル回路が得られる。コンピューターが演算できる任意の関数は、これら2つの演算で表現できる。それが「暗号化された数値の算術」から「暗号化されたデータへの任意の演算」への橋渡しだ。
構造的な問題はノイズだ。FHEの各演算は暗号文に小さな誤差を導入する。誤差は蓄積される。十分な演算を重ねると、ノイズが信号を圧倒し、暗号文が復号化不能になる。Gentryの洞察はブートストラッピングだった。ノイズの多い暗号文に対して復号化回路を準同型的に評価し、同じ平文値を持つ新鮮な低ノイズの暗号文を生成する。言い換えれば、暗号化の中で復号化を実行する。データが露出することなくノイズがリセットされる。
ノイズが致命的になる前に限られた回数の演算を処理するスキームは、レベル付きまたは部分準同型と呼ばれる。ブートストラッピングこそがFHEの「完全」という名称を与えるものだ。
ほとんどのアプリケーションにとって、FHEはまだ遅すぎる。現在稼働しているアプリケーションは共通のプロファイルを持つ:回路深度が限定されており、データの機密性が高く、数学的なプライバシー保証と引き換えに計算コストを負担できる当事者が一方にいる。
プライベートML推論が最も適したユースケースだ。クライアントは機密性の高い入力を持つ。サーバーは独自のモデルを持つ。FHEはサーバーが暗号化された入力でモデルを評価し、暗号化された結果を返すことを可能にする。どちらの当事者も保護しているものを露出しない。Zamaは特定のモデルアーキテクチャ向けにこれを提供している。回路深度は予測可能で管理しやすい。
プライベートゲノム解析は、iDASHが2014年に暗号化ゲノミクス競技を開始して以来、ベンチマークワークロードとなっている。疾患リスクスコアリング、ゲノムワイド関連解析、配列アライメントにはすべてFHEの実装がある。ゲノムデータは、プライバシーリスクが永続的であり、かつ何も共有することに同意していない人々にまで及ぶ数少ないデータ種別の一つだ。
機密金融クエリは、範囲クエリ、暗号化されたデータベース検索、暗号化されたトランザクション履歴に対する不正スコアリングを含む。これらのワークロードは実行頻度が十分に低く、データの機密性も十分に高いため、計算オーバーヘッドは許容できる。
ブロックチェーンの機密性は活発な分野だ。スマートコントラクトはデフォルトでオンチェーン上で公開実行される。TFHEベースのシステムは暗号化されたステート上でコントラクトロジックを実行することを可能にし、プライベートオークション、機密投票、正確性は公に検証可能だが入力は露出しないシールドビッドメカニズムなどを実現する。ZamaのfhEVMプロジェクトはこれを特に対象としている。
FHEのセキュリティーは、Learning With Errors(LWE)とそのリング変種(RLWE)の困難性に帰着する。これらの問題は問う:環や格子上の多くの近似線形方程式が与えられたとき、秘密を復元せよ。古典的または量子ハードウェア上で、どちらに対しても多項式時間アルゴリズムは知られていない。
これによりFHEは耐量子暗号のファミリーに位置づけられる。NISTの耐量子標準化はLWEファミリーの問題に基づいており、それにより基礎となる仮定への追加的な精査と信頼が得られる。ただし、LWEが本格的な攻撃にさらされてから20年未満だ。RSAと楕円曲線暗号には40年以上の失敗した暗号解析の歴史がある。信頼レベルは高いが同一ではない。
パラメーターがセキュリティーを支配する。多項式の次数、モジュラスのサイズ、ノイズ分布は、望ましいセキュリティーレベルでLWEインスタンスを困難にするよう選択されなければならない。HomomorphicEncryption.orgコンソーシアムは推奨パラメーターセットを公開している。これらの推奨に対して検証されたライブラリのデフォルト値を使用することは、カスタム設定よりも強く推奨される。
競争的な文脈
FHEはいくつかのプライバシー保護演算技術の一つであり、代替手段としてではなく、組み合わせて使用されることが増えている。
セキュアマルチパーティー計算(MPC)は演算を複数の当事者に分散し、誰も全入力を見ることができない。特定の関数に対してFHEより高速であることが多く、当事者が事前に定義されている場合に自然な適合となる。FHEは単一の信頼されないサーバーで機能する。
ゼロ知識証明(ZKP)は、一方の当事者がウィットネスを開示せずに命題が真であることを証明できるようにする。ZKPは証明し、FHEは演算する。それらは補完的であり、実際のシステムは両方を使用する:プライベートな演算にはFHE、演算が正しく行われたことの検証にはZKPだ。
FHEとMPCを組み合わせたハイブリッドプロトコルは活発な研究分野だ。どちらの技術単独でもすべての要件を満たすことはできない。組み合わせることで、それぞれ単独よりも優れたパフォーマンスとより強力な保証が得られる。

