秘密分散とは、ある秘密(たとえば暗号鍵やパスフレーズ)を複数の参加者に分割して配布し、一定数以上が集まらないと秘密を再構成できないようにする手法の総称です。各参加者は秘密の「一部」(シェア)だけを保持し、単独では元の秘密について意味のある情報を得られないようになっています。1979年にAdi ShamirとGeorge Blakleyがそれぞれ独立に提案した方式がよく知られており、一般に「シャミア法」「ブレイクリー法」と呼ばれます。

基本的な考え方(閾値スキーム)

もっとも基本的なモデルは「(t, n) 閾値スキーム」です。秘密を n 個のシェアに分割し、そのうち任意の t 個以上を集めると秘密を復元できるが、t-1 個以下では秘密について何もわからない、というものです。こうした仕組みは、単一障害点(single point of failure)を避け、分散管理での安全性と可用性を両立します。

シャミアの方法(Shamir の閾値秘密分散)

シャミア法は多項式補間の性質を使った方式です。簡潔に説明すると次のようになります:

  • 秘密 s を有限体(通常は十分大きな素数 p による mod p 演算の世界)上の値と見なす。
  • ランダムに次数 t-1 の多項式 f(x) を選び、定数項 f(0) = s とする。
  • i = 1, 2, ..., n に対してシェアとして (i, f(i)) を配布する。
  • 任意の t 個のシェアを集めると、ラグランジュ補間などで次数 t-1 の多項式 f(x) を復元でき、その定数項 f(0) が秘密 s になる。

この方式は情報理論的に「完全(perfect)」に安全です。すなわち t-1 個以下のシェアからは秘密についての確率分布が全く変わらず、秘密を推測する手がかりが得られません。

ブレイクリーの方法(Blakley の幾何学的アプローチ)

ブレイクリー法は幾何学を利用します。秘密を空間上の点(ベクトル)として扱い、各シェアはその点を通る超平面(ハイパープレーン)を与えます。t 個の独立な超平面の交点を計算すれば元の点(秘密)が得られます。数学的直感は異なりますが、目的は同じで、十分な数のシェアを集めなければ秘密が特定できないようにする点が特徴です。

情報理論的安全性と計算的安全性

シャミア法やブレイクリー法のような「完全な」秘密分散は情報理論的に安全であり、攻者が計算能力をどれだけ持っていても、閾値未満のシェアからは秘密に関する情報が得られないことが保証されます。一方、計算的安全性に依存する方式(たとえば一部の分散鍵生成や特定のプロトコル)は、現代暗号の難問題(素因数分解や離散対数など)の難しさに安全性を依存させます。

応用例

  • RSA の秘密鍵の分散保管:秘密鍵を分割して複数管理者に配り、一人では署名や復号を行えないようにする。これにより、内部者の不正や鍵の消失に対する耐性が高まります。
  • 暗号資産(仮想通貨)ウォレットの復元:プライベートキーを複数の保管者に分散しておき、一定数の承認でトランザクションに署名する。
  • 分散CAや鍵管理(KMS)システム:中央鍵管理の単一故障点をなくすための手法。
  • 軍事・銀行等の高セキュリティ用途:重要な操作に対して複数人の承認を要求することが可能。
  • バックアップとフォールトトレランス:シェアを複数の場所に分散保存し、いくつかが失われても復元できる。

ディーラーとディーラーレス(分散生成)

伝統的な秘密分散では「ディーラー」と呼ばれる信頼できる第三者が秘密を分割して各プレイヤーにシェアを配布します。しかしディーラーが不正を行うリスクや存在自体が問題となり得るため、ディーラーレス方式(Distributed Key Generation, DKG)では参加者全員が協力して秘匿値の分散生成を行い、信頼できるディーラーを不要にします。また、配布されたシェアの正当性を確認するための Verifiable Secret Sharing (VSS) と呼ばれる検証機構が用いられることが多いです。

ランプ方式やプロアクティブ秘密分散などの派生

秘密分散には多くの変種があります:

  • ランプ方式:t-1 個以下では全く秘密がわからない「完全」方式とは異なり、ある範囲内で部分的な情報は漏れるがシェアサイズを小さくできるトレードオフを持つ方式。
  • プロアクティブ秘密分散:時間経過や参加者の入れ替わりに伴う長期安全性を確保するため、定期的にシェアを更新(再分配)して古いシェアが漏洩しても安全性を保つ仕組み。

実装上の注意点と攻撃対策

  • シェアの完全性・認証:シェアが改竄されると復元が失敗するため、シェア配布時に署名やMACで整合性を保つ必要があります。
  • 不正なディーラーや不誠実な参加者:VSS や DKG を用いて不正を検出・防止する。
  • パラメータ選定:有限体の選び方や閾値 t の設定は、安全性と可用性のトレードオフに直結します。t を大きくすると安全だが可用性が下がり、逆に小さくすると可用性は上がるが安全性が下がる。
  • シェアの保管と寿命:シェア自体の保護(暗号化、物理的隔離)や定期的な更新(プロアクティブ再分配)を検討する。
  • 再構築手順の安全性:復元時の通信経路や復元プロセスで中間者攻撃や情報漏洩が起きないように設計する。

例としての直感的説明

記事にあった例を補足します。ある秘密を復元するのに合計 5 個のパーツが必要で、あなたが持っているのが 3 個のパーツだとします。もしその方式が「完全」な閾値スキームで t=5 なら、3 個では秘密について何も分かりません。一方、ランプ方式や不完全な分割だと、部分的な情報(たとえば秘密の一部のビット)が漏れ、残りの 2 個を推測しやすくなることがあります。設計時にはこの違いを理解して使い分けることが重要です。

まとめ

秘密分散は、鍵管理や承認制度、バックアップなど分散化によって安全性と可用性を両立する強力な技術です。シャミア法(多項式補間)やブレイクリー法(幾何学的手法)は代表的で、情報理論的に安全な仕組みを提供します。実運用ではディーラーの信頼性、シェアの保護、VSS や DKG の導入、閾値の設定などに注意し、用途に応じた方式を選択してください。