セキュリティ

準同型暗号とは?仕組み・方式の違いと標準化の現在地を解説

準同型暗号とは?仕組み・方式の違いと標準化の現在地を解説

準同型暗号は、データを復号しないまま暗号文のうえで加算や乗算を実行できる暗号方式です。実用化されている方式の多くは公開鍵暗号として設計されています。クラウドに計算を委託しても事業者に平文を見せずに済むため、医療データや金融取引の分析で検討されます。一方で、演算のたびに暗号文のノイズが増える、比較処理が苦手といった制約があり、どの案件にも入れられる技術ではありません。ここでは仕組みと方式の違いに加えて、国際標準がどこまで発行済みなのか、実装ライブラリのうち現在も保守されているのはどれかまで、一次情報の日付と版数で示します。

まとめ

準同型暗号とは、暗号文同士を演算した結果を復号すると、平文同士を演算した結果に一致する暗号方式です。英語名 Homomorphic Encryption の頭文字から HE、日本語では「ホモモルフィック暗号」とも呼ばれますが、指している技術は同じものです。

演算の自由度によって、単一の演算だけを扱う部分準同型暗号(PHE)、演算回数に上限がある SWHE、任意の演算を無制限に扱える完全準同型暗号(FHE)の3段階に分かれます。FHE を成立させる鍵はブートストラップで、暗号文に溜まったノイズを復号回路の準同型評価によってリセットする操作です。

標準化はまだ途上です。国際標準として発行済みなのは部分準同型の ISO/IEC 18033-6:2019 だけで、FHE を扱う ISO/IEC 28033 シリーズは2026年8月時点でどのパートも未発行です。NIST に FHE の FIPS はありません。実装は OpenFHE、Microsoft SEAL、TFHE-rs、Lattigo が現行で、HElib は2023年7月の v2.3.0 以降リリースが止まっています。以下、演算規則から採用判断までを順に見ていきます。

準同型暗号の定義とホモモルフィック暗号という別名

準同型暗号の定義は「暗号文に対する演算結果を復号すると、平文に対する同じ演算の結果と一致する」ことです。名称は数学の準同型写像(homomorphism)に由来し、暗号化関数が平文側の演算構造を暗号文側へそのまま写す構造保存写像になっていることを指します。

この性質があると、暗号鍵を持たないサーバでも暗号文のまま計算を進められます。通常の暗号化では、計算の前にいったん復号する必要があり、その瞬間に平文がサーバのメモリ上へ現れます。共通鍵暗号や公開鍵暗号の基本的な違いについては公開鍵暗号方式と共通鍵暗号方式の違いとは?仕組み・アルゴリズム・使い分けを解説で整理しています。

呼称の揺れは検索時の混乱を招きやすい部分です。Homomorphic Encryption、HE、ホモモルフィック暗号、同型暗号はいずれも準同型暗号を指します。完全準同型暗号は FHE(Fully Homomorphic Encryption)、部分準同型暗号は PHE(Partially Homomorphic Encryption)と略されます。

起点となった文献は1978年の Rivest, Adleman, Dertouzos による “On Data Banks and Privacy Homomorphisms”(Foundations of Secure Computation)で、暗号文のまま演算できる方式を privacy homomorphisms と名付けて提起しました。RSA の共著者である Shamir はこの論文の著者ではありません。この論文が示した4つの加法準同型は、1987年に Brickell と Yacobi が EUROCRYPT で、2つは暗号文単独攻撃、残る2つは既知平文攻撃で破れることを示しています。任意演算を扱える方式は、そこからさらに20年以上未解決のまま残りました。決着をつけたのが Craig Gentry の “Fully Homomorphic Encryption Using Ideal Lattices”(STOC’09、2009年5月31日〜6月2日開催)と、同年の Stanford 博士論文です。

暗号化したまま計算できる仕組み

加法準同型と乗法準同型の演算規則

準同型性は、暗号文に施す演算と平文に生じる演算の対応関係として定義されます。RSA と Paillier を並べると、対応する演算が方式ごとに違うことがはっきりします。

RSA(乗法準同型)
  E(a) = a^e mod n,  E(b) = b^e mod n
  E(a) * E(b) = (a*b)^e mod n = E(a*b)
  → 暗号文の積を復号すると、平文の積が得られる

Paillier(加法準同型)
  E(a) = g^a * r1^n mod n^2,  E(b) = g^b * r2^n mod n^2
  E(a) * E(b) = g^(a+b) * (r1*r2)^n mod n^2 = E(a+b)
  → 暗号文の積を復号すると、平文の和が得られる

RSA では暗号文を掛け合わせると平文の掛け算になり、Paillier では暗号文を掛け合わせると平文の足し算になります。どちらも片方の演算しか成立しないため部分準同型に分類されます。Paillier は1999年の EUROCRYPT で Pascal Paillier が発表した方式で、合成数次剰余類問題を安全性の根拠にしています。RSA の鍵長や実運用上の位置づけはECDSAとRSAの違い|鍵長・安全性・速度・用途を比較し選び方を解説で扱っています。

加算と乗算の両方が使えると、任意の演算を組み立てられます。ビット上の乗算は AND、加算は XOR に対応し、定数1を併せて使えば任意の論理関数を AND と XOR だけで書き下せます(代数標準形)。加算と乗算を自由に重ねられれば計算対象に制限がなくなるのは、このためです。これが完全準同型暗号の目標です。

ノイズ増大とブートストラップ

格子問題を安全性の根拠とする現代の FHE は、いわゆる格子暗号の一種です。この系統では暗号化のたびに小さなノイズ(誤差項)を暗号文へ意図的に混ぜます。このノイズが安全性を支える一方で、準同型演算を重ねるたびに増幅されます。閾値を超えると正しく復号できなくなるため、実行できる演算回数に上限が生まれます。この上限付きの状態が SWHE(Somewhat Homomorphic Encryption)です。

Gentry が2009年に示した突破口がブートストラップでした。着想は、自分自身の復号回路を準同型評価できる方式(bootstrappable な方式)さえ作れれば、任意回数の演算に拡張できるというものです。暗号文を復号する処理そのものを暗号文のうえで走らせると、出力は復号済みの平文ではなく、ノイズがリセットされた新しい暗号文になります。演算でノイズが限界に近づくたびこの操作を挟めば、演算回数の上限が消えます。

代償は計算コストです。ブートストラップは1回あたりの負荷が通常の準同型演算より桁違いに大きく、FHE が「理論上は何でもできるが遅い」と言われる主因になっています。方式ごとにブートストラップの実装コストは大きく異なり、それが次に述べる方式選定の判断軸になります。

部分準同型・SWHE・完全準同型の3分類

部分準同型暗号(PHE)と代表方式

部分準同型暗号は加算か乗算のどちらか一方だけを扱います。RSA と ElGamal は乗法準同型、Paillier と Exponential ElGamal は加法準同型です。扱える演算は限られますが、ノイズ管理もブートストラップも不要なため処理が軽く、実運用に乗せやすい特性があります。

集計だけが目的なら加法準同型で十分です。電子投票の票数集計、暗号化したまま合計値を出す統計処理、複数拠点の売上を平文にせず足し合わせる処理は、いずれも Paillier で成立します(件数が公開値なら、復号後の除算で平均も得られます)。後述するとおり、国際標準として発行済みなのもこの部分準同型の領域です。

完全準同型暗号(FHE)の主要方式

FHE は加算と乗算の両方を扱い、ブートストラップによって演算回数の制限を外します。実務で選択肢になるのは次の3系統で、扱えるデータ型と得意な演算が違うため、用途から逆算して選びます。

方式 データ型 得意な処理 ブートストラップ 主な実装
BGV / BFV 整数(厳密) 整数演算のバッチ処理 高コスト OpenFHE, SEAL, Lattigo
CKKS 実数・複素数(近似) 機械学習推論、統計 高コスト OpenFHE, SEAL, Lattigo
TFHE / FHEW ビット・小さい整数 比較・分岐、任意関数評価 高速(1ミリ秒未満/GPU実測) TFHE-rs, OpenFHE

BGV と BFV は誤差なしの整数演算を扱うので、会計処理のように1円の誤差も許されない用途に向きます。CKKS は実数を近似的に扱う設計で、暗号化の時点で丸め誤差が入ります。機械学習の推論のように多少の誤差が許容される処理では有利ですが、後述するとおり近似という性質が安全性にも影響します。TFHE はビット単位で動きブートストラップが高速なため、他方式が苦手とする比較や条件分岐を現実的なコストで実行できます。TFHE-rs の開発元である Zama が2025年9月17日に公表した実測では、ブートストラップ1回の所要時間はブール値で796マイクロ秒、4ビット整数で945マイクロ秒でした(NVIDIA H100 1枚、128ビット IND-CPA-D 安全性、失敗確率 2^-128)。2021年のCPU実装がそれぞれ19ミリ秒・53ミリ秒だったので、同じ安全水準のまま24〜56倍に短縮された計算になります。

秘密計算・秘密分散・ゼロ知識証明との違い

準同型暗号は秘密計算(プライバシー保護計算)を実現する手段のひとつであり、秘密計算そのものではありません。同じ目的に向かう別のアプローチと並べると、選択の基準がはっきりします。

秘密分散はデータを複数の断片に分けて別々の拠点に置き、規定数が揃わなければ復元できないようにする方式です。単独の断片からは何も分かりません。マルチパーティ計算(MPC)はこの分散状態のまま複数の参加者が協調して計算を進めますが、参加者間で計算の途中に何度も通信する必要があり、参加者の一部が離脱すると処理が止まります。

準同型暗号の違いは、計算を単一のサーバへ丸ごと委託できる点にあります。暗号文を預けたあとはクライアントが関与せず、通信は結果を受け取る往復だけで済みます。その代わり計算そのものが重く、MPC が得意とする比較や並べ替えでは不利になります。通信量を抑えたいなら準同型暗号、計算量を抑えたいなら MPC という切り分けが実務的です。

ゼロ知識証明は用途がさらに離れています。こちらは「ある事実を知っている」ことを、内容を明かさずに証明する技術で、計算の委託ではありません。詳しくはゼロ知識証明(ZKP)とは何か?ブロックチェーンで注目される新技術の基本概念とメリットをわかりやすく徹底解説を参照してください。

標準化の現在地:ISO/IEC 18033-6 と 28033 シリーズ

準同型暗号は「実用化間近」と語られがちですが、国際標準の発行状況を見ると領域ごとの成熟度がはっきり分かれています。

発行済みの国際標準は ISO/IEC 18033-6:2019(第1版 2019年5月発行、2024年の定期見直しで現行として確認済み)です。この規格が規定するのは Exponential ElGamal 暗号と Paillier 暗号の2機構で、それぞれについてパラメータと鍵の生成、暗号化、復号、暗号文への準同型演算の手順を定めています。附属書Aで各機構のオブジェクト識別子を、附属書Bで数値例を与えています。規定されているのはいずれも加法準同型、つまり発行済みの国際標準がカバーしているのは部分準同型の範囲だけです。

完全準同型暗号は ISO/IEC 28033 シリーズとして別立てで進行中です。全5部の構成と2026年8月時点の審議ステージは次のとおりで、どのパートも国際規格としては未発行です。

パート 対象 規定する方式 ステージ
28033-1 一般概念と原則 — DIS(40.60)
28033-2 剰余整数の厳密演算 BGV, BFV DIS(40.60)
28033-3 近似数の演算 CKKS FDIS(50.00)
28033-4 ルックアップテーブル評価 CGGI 系 FDIS(50.00)
28033-5 方式の相互変換 Chimera WD(20.60)

先行しているのは CKKS を規定する Part 3 と、CGGI 系による任意関数評価を規定する Part 4 で、どちらも最終国際規格案(FDIS)として正式承認の審議に入っています。Part 1 と Part 2 は国際規格案(DIS)の投票段階、Part 5 は作業原案(WD)の段階です。国際規格として発行される段階(60.60)に到達したパートは、2026年8月時点でひとつもありません。調達要件に「国際標準準拠」を書く場合、FHE の部分は現時点で満たしようがない点に注意が必要です。

NIST については、FHE を対象とした FIPS は存在しません。2024年8月13日に発行された FIPS 203(ML-KEM)、FIPS 204(ML-DSA)、FIPS 205(SLH-DSA)は耐量子計算機暗号の標準であり、準同型暗号とは目的が別です。FIPS 203 と 204 が格子問題に基づき、FHE の主要方式も格子問題に基づくため混同されやすいのですが、前者は量子計算機に対して安全な鍵交換と署名、後者は暗号文のまま計算することを目的としています。耐量子計算機暗号への移行についてはハイブリッド暗号方式とは?仕組みとPython実装・PQC移行を解説で扱っています。

実装ライブラリの現状と選定基準

準同型暗号を自前で実装する選択肢は現実的ではありません。パラメータ選定を誤ると安全性が崩れるため、査読を経た実装を使うのが前提になります。主要ライブラリの現行版は次のとおりです(2026年8月18日時点、各リポジトリの最新リリース)。

ライブラリ 最新版 リリース日 言語 対応方式
OpenFHE v1.5.1 2026-04-10 C++ BGV, BFV, CKKS, TFHE/FHEW
Microsoft SEAL v4.4.3 2026-08-04 C++ BFV, BGV, CKKS
TFHE-rs 1.7.0 2026-07-21 Rust TFHE
Lattigo v6.2.0 2026-02-02 Go BGV, BFV, CKKS
HElib v2.3.0 2023-07-18 C++ BGV, CKKS

新規開発なら OpenFHE を起点にするのが妥当です。対応方式が最も広く、リポジトリへの最終プッシュも2026年8月17日と開発が続いています。方式の切り替えを含めて1つのライブラリで検証できる利点は、初期の方式選定段階で効いてきます。

ライブラリを直接呼ぶのではなく、学習済みモデルの側からコンパイルして暗号文上の回路へ落とす経路も出てきました。Googleが2026年8月に発表したツールチェーンの中身と採用判断はGoogle HEIRとは?暗号文のままAIモデルを動かすコンパイラの仕組みと採用判断で扱っています。

逆に、HElib は新規採用を避けるべきです。最新リリース v2.3.0 は2023年7月18日、リポジトリへの最終プッシュも2024年8月1日で、2年以上更新が止まっています。BGV の歴史的な参照実装として文献に頻出するため入門記事の例に残っていますが、脆弱性が見つかった際の修正提供を期待できない状態です。TFHE 単体を Rust で扱うなら TFHE-rs、Go で実装するなら Lattigo が選択肢になります。

準同型暗号を採用すべきでない場面

技術としての魅力とは別に、案件によっては明確に不向きです。次の4条件のいずれかに当てはまるなら、準同型暗号以外の手段を先に検討してください。

復号結果を計算の委託先や第三者へ返す設計になっている場合は、CKKS の採用を避けるか、対策済みの設定を明示的に選ぶ必要があります。Li と Micciancio が EUROCRYPT 2021 で示したとおり、CKKS は標準的な IND-CPA 安全性を満たす一方、復号オラクルへの限定的なアクセスを許す IND-CPA-D モデルでは破れます。近似計算ゆえに復号結果へ残る誤差そのものが秘密鍵の情報を漏らすためです。対策の noise flooding(Li-Micciancio-Schultz-Sorrell、CRYPTO 2022)は証明可能な安全性を与える代わりに大きな精度低下を伴い、さらに Guo らが USENIX Security 2024 で、最悪ケースを想定しない誤差見積りに基づく noise flooding 実装に対する鍵復元攻撃を報告しています。OpenFHE の公式ドキュメントは、既定設定が同一または関連する暗号文に対する復号クエリを少なくとも N_d = 128 回(実際の計算では1万回以上)許容する構成を選ぶとしたうえで、さらに強い攻撃者モデルが要る場合に CMake パラメータ CKKS_M_FACTOR(既定値1)を引き上げるよう案内しています。ただし引き上げの代償として、CKKS 暗号文の精度が 0.5 × (log2(CKKS_M_FACTOR + 1) − 1) ビット低下します。

比較や条件分岐が処理の中心を占める場合も向きません。暗号文のまま大小を比較する処理は、加算と乗算だけで組み立てると多項式近似が必要になり、単純な四則演算より桁違いに重くなります。TFHE ならビット単位で比較を扱えますが、その分だけデータ幅あたりの処理量が増えます。並べ替えや検索が中心のワークロードは MPC のほうが素直に収まります。

オンライン処理でレイテンシ要件が厳しい場合は現時点で見送りが無難です。ブートストラップを伴う処理は平文演算に対して大きなオーバーヘッドが乗るため、対話的な応答が求められる画面処理には載りません。バッチ集計や夜間の分析処理のように、処理時間の余裕がある領域から適用するのが現実的です。

目的が保管時のデータ保護にとどまる場合は、通常の暗号化で足ります。準同型暗号が必要になるのは「鍵を渡せない相手に計算させる」場面に限られます。自社が鍵を持ったまま自社環境で計算するなら、通常の暗号化とアクセス制御のほうが実装も運用も軽く済みます。守るべきデータの切り分けは暗号化とは?共通鍵・公開鍵の違いと企業が守るべきデータの判断を解説で整理しています。

よくある質問

「準同型暗号」の読み方は?

「じゅんどうけいあんごう」と読みます。英語名 Homomorphic Encryption の音訳から「ホモモルフィック暗号」と表記されることもあります。

準同型暗号のメリットは?

計算を委託した相手のサーバ上に、一度も平文が現れないことです。クラウド事業者の内部不正や計算サーバ側の侵害が起きても、鍵を持たない側からは暗号文しか見えません。監査の観点では、委託先を信頼の範囲から外せる点が効きます。

準同型暗号方式と秘密分散方式の違いは?

データを分割するかどうかが違います。秘密分散は断片へ分けて複数拠点に置き、規定数が揃わなければ復元できない構造にします。準同型暗号は分割せず、暗号化した1つの塊を単一のサーバへ預けます。委託先を1社しか用意できない案件では、秘密分散はそもそも成立しません。

完全準同型暗号は実用化されていますか?

保守されている実装は揃っており、暗号文のままの統計処理や機械学習推論は動かせます。ただし国際標準が未発行で、処理速度のオーバーヘッドも大きいため、リアルタイム処理ではなくバッチ処理から適用するのが現実的です。

準同型暗号は量子コンピュータに耐えられますか?

方式によります。RSA や ElGamal を使う部分準同型暗号は、素因数分解や離散対数を破る量子アルゴリズムの影響を受けます。BGV、BFV、CKKS、TFHE といった現代の FHE は格子問題を安全性の根拠としており、現時点で量子計算機による効率的な解法は知られていません。ただし、これらが耐量子計算機暗号の標準として認定されているわけではありません。NIST が2024年8月13日に発行した FIPS 203、FIPS 204、FIPS 205 は鍵カプセル化(鍵確立)と署名の標準で、準同型暗号は対象外です。

関連記事

お気に入りに入れた記事の一覧

一創の公式 SNS

X では毎朝の新着記事と IT ニュースの速報を、YouTube・TikTok・Instagram・LinkedIn・Facebook では記事の解説動画を配信しています。

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.28 テックブログ リンツ不正アクセス:314万件の対象確認とパスワード強制リセット後の対処
  2. 2026.10.29 テックブログ ソニー生命の不正アクセス:38.5万件の対象確認と窓口、停止中の手続き
  3. 2026.01.30 コラム 税務調査は個人と法人で何が違う?担当部署・件数・調べられる点と追徴税額を比較【令和6事務年度】
  4. 2026.10.27 テックブログ Brotli 脆弱性:CVE-2026-111497の影響確認とNode.js・Python・.NETの更新手順
  5. 2026.10.27 テックブログ Joshin(ジョーシン)不正アクセス:最大600万件の対象とサブスク初期パスワードの対処

RELATED POSTS 関連記事

目次