How it works
準同型暗号の仕組み
ステップ 1 / 6
暗号化
持ち主が自分の鍵でデータを暗号化する。暗号文には少量の「ノイズ」が仕込まれている。
詳しい解説
「暗号のまま計算」とは何か
準同型暗号(HE)は、暗号文どうしの演算が平文の演算に対応する暗号方式。Enc(a) と Enc(b) から Enc(a+b) や Enc(a×b) を、一度も復号せずに作れる。クラウドはデータを見ないまま計算を代行でき、結果は鍵を持つ持ち主だけが開ける。加算だけ・乗算だけの「部分的」HE は古くからあったが、任意の演算を無制限に行える完全準同型暗号(FHE)は Gentry(2009)が初めて実現した。
ノイズ予算とブートストラップ
安全性のため各暗号文には微小なノイズが埋め込まれ、演算(特に乗算)のたびに増える。これが上限(ノイズ予算)を超えると復号が失敗する。Gentry の突破口は「ブートストラップ」— 暗号文を暗号のまま復号回路に通してノイズをリセットし、いくらでも深い計算を可能にした。ブートストラップは重く、FHE が遅い最大の理由でもある。
スキームの使い分け
BFV/BGV は整数の厳密演算向け、CKKS は実数・複素数の近似演算向けで機械学習のスコアリングに好適、TFHE(CGGI)はブール演算と高速ブートストラップに強く任意関数評価に向く。Microsoft SEAL は BFV/BGV/CKKS、OpenFHE は主要スキームを網羅、Zama の Concrete/TFHE-rs は TFHE 系を実装する。用途と演算の深さでスキームを選ぶ。
主要パラメータ・設計要素
スキーム(BFV/BGV)
暗号化された整数に対する厳密な加算・乗算向け。厳密な値が必要な集計やカウントに使う。
スキーム(CKKS)
実数・複素数の近似演算向け。誤差を許容する代わりに機械学習の推論など連続値の計算に適する。
スキーム(TFHE)
ブール/整数演算と高速ブートストラップに強く、任意関数を評価できる。分岐や比較の多い処理に向く。
ブートストラップ
暗号文のノイズをリセットして計算を続けられるようにする操作。任意深度の計算を可能にするが計算コストが高い。
ノイズ予算
復号が失敗する前に許される演算の余地。乗算で大きく消費する。深い計算にはブートストラップが要る。
産業・ユースケース
この技術が実際に価値を生んでいる領域と、その使われ方。
金融・リスク分析
暗号化したままポートフォリオやリスク指標を計算し、クラウドや第三者の分析基盤に平文を渡さずに集計・スコアリングを行う。復号鍵を持つ利用者だけが結果を見られる。
医療・ゲノミクス
暗号化されたゲノムや検査データに対して疾患リスク照合や遺伝子検索を実行する。研究機関やクラウドは配列そのものを見ないまま計算し、患者側だけが結果を復号する。
クラウド・外部委託計算
機微データを暗号化したままクラウドへ預け、そこで検索・統計・機械学習を実行させる委託計算パターン。クラウド事業者は内容を知らないまま処理を代行する。
秘匿ML推論
ユーザーが入力を暗号化して送り、サーバは暗号文のまま推論して暗号化結果を返す。医療画像やスコアリングなど、モデル提供者に生入力を渡したくない用途で使われる。
公共・省庁間連携
省庁や自治体が個人情報を復号せずに突合・集計する。暗号化されたレコード上でマッチングや統計を計算し、平文の名寄せを避けながら制度横断の分析を可能にする。
最新の動向
2026年、GPU 上で TFHE のブートストラップがサブミリ秒を切り、リアルタイムな暗号計算へ前進した(Zama, FHE.org 2026 発表)。
HomomorphicEncryption.org を軸に、産学官が集まり FHE のパラメータと安全性の標準化を進めている。
SEAL・OpenFHE・Zama の Concrete/TFHE-rs などライブラリが成熟し、暗号知識が浅い開発者でも FHE を組み込める方向へ。
FHE は依然として狭い用途(プライベートな照合・オンチェーン機密トランザクション等)で本番投入され、汎用高速化にはハードウェア加速が鍵。
ベンチマーク・実測の目安
対平文の速度
平文計算より桁違いに遅い
FHE の暗号文演算は平文演算より桁違いに遅いのが一般的な性質(定性的、OpenFHE ドキュメントの説明に基づく)。
TFHE ブートストラップ遅延(GPU)
NVIDIA H100 上でサブミリ秒
TFHE のブートストラップ遅延が H100 GPU 上で 1 ミリ秒未満まで低下したと報告(Zama, FHE.org 2026 の発表)。
初のFHE実現
2009年に理論的に初めて実現
任意演算を可能にする完全準同型暗号は Gentry が2009年に初めて構成した(Gentry, STOC 2009)。
※数値は各出典に基づく参考値です。前提条件により大きく変わります。実装時は一次情報をご確認ください。