秘密分散(Secret Sharing)とシャミア秘密分散(Shamir's Secret Sharing)
1. 概要
A. 定義
一つの秘密(secret)をn個の断片(share)に分けて複数の参加者に分散保管し、あらかじめ定めた閾値(threshold)k個以上が集まって初めて元の秘密を復元でき、k個未満の断片からは秘密について何の情報も得られないように設計した暗号技術である。 このように「k-of-n」の復元条件をもつ方式を特に (k, n) 閾値秘密分散(threshold secret sharing) と呼び、1979年にAdi ShamirとGeorge Blakleyがそれぞれ独立に提案した。
秘密分散は「一つの鍵を安全に保管せよ」という古くからの問題を、「鍵を分割して 単一の保管者も単一の侵害点も存在しない ようにする」という発想で覆す。従来の暗号が「秘密をどう 隠すか(暗号化)」を扱うのに対し、秘密分散は「秘密をどう 分けて託すか(分散保管)」を扱う。核心は、断片一つひとつがそれ自体では元の秘密への手がかりを一切与えないにもかかわらず、定足数(k)が集まれば完全に復元されるという 「全か無か(all-or-nothing)」 の性質である。
秘密分散の主な特徴を整理すると次のとおりである。第一に 機密性(confidentiality) ——k-1個以下の断片では秘密の確率分布がまったく変わらない(情報理論的安全性)。第二に 可用性(availability) ——n個のうち最大n-k個が紛失・破損しても復元が可能で、単一障害点(SPOF)を除去する。第三に 分権(decentralization) ——いかなる個人・機関も単独では秘密を握れず、内部脅威と権限濫用を構造的に抑制する。第四に、これらの強みの代償として 断片の配布・保管・更新という運用上の複雑さ と 復元の瞬間に秘密が一点に再組立てされる露出リスク を抱える。この四つの均衡が秘密分散設計の本質である。
これらの特徴は、秘密分散を 鍵管理(key management)と信頼分散(trust distribution)の暗号学的基盤 として位置づける。マスター鍵やルート証明書の秘密鍵のように「これ一つが破られれば全てが崩れる」最上位の秘密ほど、それを単一のHSMや単一の担当者に委ねることは可用性(紛失)と機密性(窃取・強要)を同時に脅かす。秘密分散はこの最上位の秘密を複数の主体にばらまき、「単独では何もできず、定足数が集まって初めて使える」構造を作る。これは [[multi-party-computation]]・[[attribute-based-encryption]] とともに、「信頼を一箇所に集中させない」分散信頼設計の一軸をなす。
B. 登場背景と必要性
暗号システムの安全性は究極的には鍵の安全性に帰着し、結局「その鍵をどこにどう保管するか」という 鍵管理問題 に行き着く。ところが単一保管は相反する二つのリスクを同時に高める。鍵を一箇所に厳重に隠しておけば、その場所が破壊されたり担当者が事故に遭ったりしたときに鍵を永久に失う 可用性リスク が高まり、逆にバックアップを複数複製しておけばそのうち一つが漏れただけで全体が破られる 機密性リスク が高まる。「安全に保管しつつ失いもするな」という要求は、単純な複製では決して同時に満たされない。
このジレンマは組織運用の現実と出会うとさらに先鋭化する。企業のコード署名鍵や金融機関のマスター鍵を一人の保安担当者に委ねると、その人が退職・死亡したり脅迫・買収されたりした瞬間、組織全体が人質になる。これを「信頼の単一集中(single point of trust)」と呼び、可用性の単一障害点(SPOF)とあわせて必ず解消すべき構造的弱点である。重要な資産ほど「一人・一装置を信じて初めて成立する」構造は、それ自体が危険である。
この空白を埋めようとする最も単純な組織的代替が「二人が同時に鍵を回して初めて金庫が開く」二重統制(dual control) だが、これは特定の二人に固定されて柔軟性がなく、そのうち一人でも席を外せば業務が麻痺する。必要なのは「n人に分け与えつつ任意のk人が集まればよい」柔軟な定足数体系である。たとえば役員5人に断片を分け与え、そのうち3人だけ集まれば復元できるようにすれば、2人まで欠員が生じても業務が続きつつ、どの2人が共謀しても秘密は安全である。
Shamirは1979年の論文 How to Share a Secret で、この要求を多項式補間という優雅な数学で正確に解決した。彼は「k個の点でk-1次多項式が一意に決まるが、k-1個の点では無限に多くの多項式が可能である」という性質を用いて、k-1個以下の断片が秘密について 情報理論的に完全な無知(perfect secrecy) を保つようにした。同じ年にBlakleyは高次元超平面の交点という幾何学的アプローチで同様の目標を達成した。これにより秘密分散は単なる運用上の心得ではなく数学的に安全性が証明される暗号技術として確立し、今日ではHSM鍵バックアップ・ブロックチェーンウォレット・分散認証の基盤となった。
2. 動作原理と構造
A. 全体構造
flowchart LR
S["秘密 S(マスター鍵/ルート鍵)"] --> D["分配者 Dealer<br/>(k,n) 閾値設定"]
D -->|"share 1"| P1["参加者 P1"]
D -->|"share 2"| P2["参加者 P2"]
D -->|"share 3"| P3["参加者 P3"]
D -->|"...share n"| Pn["参加者 Pn"]
P1 -->|"k個以上提出"| R["復元者 Combiner<br/>(Lagrange 補間)"]
P2 -->|"k個以上提出"| R
P3 -->|"k個以上提出"| R
R -->|"k個集まれば成功"| OUT["復元された秘密 S"]
秘密分散システムは 分配(Share/Distribute) と 復元(Reconstruct/Combine) の二段階からなる。まず信頼できる 分配者(dealer) が秘密 S と閾値 k、参加者数 n を入力として受け取り、n個の断片 (s₁, s₂, …, sₙ) を生成して各参加者へ安全な経路で一つずつ渡す。その後、ある時点で復元が必要になれば、任意の参加者 k人以上 が自分の断片を 復元者(combiner) に提出し、復元者はこれを結合して元の S を蘇らせる。k-1人以下が集まっても復元者は何も得られない。
ここで決定的な性質は、断片数と機密性の関係が 滑らかな比例ではなく閾値での急激な転移 であるという点である。断片が0個でも1個でも……k-1個でも秘密についての知識はまったく増えず、k番目の断片が集まる瞬間に秘密が完全に現れる。この「閾(threshold)」があるため、攻撃者はk個を集めるまでいかなる部分情報も得られず、これは情報を少しずつ漏らす単純分割(例:128ビット鍵を64ビットずつ二つの断片に切る)と根本的に異なる。単純分割は一つの断片を得ただけで探索空間が半分に減るが、まっとうな秘密分散はk-1個を得ても空間がまったく減らない。
具体的な事例としてHashiCorp Vaultの 封印解除(unseal) を見よう。Vaultはストレージ暗号化に使うマスター鍵をシャミア秘密分散で分割し、既定で5個の断片を異なる運用者に分け与える。サーバが再起動すると「封印(sealed)」状態になり、既定で3人の運用者がそれぞれの断片を入力して初めて封印が解け、サービスが可能になる。運用者が一人二人休暇中でも残り3人でサービスを復旧でき、逆に断片2個を窃取した攻撃者はマスター鍵をまったく復元できない。この一つの事例が、秘密分散がもたらす可用性と機密性の同時確保を凝縮して示している。
B. シャミア秘密分散——多項式補間の原理
flowchart TB
subgraph GEN["分配段階 (Share Generation)"]
A1["秘密Sを定数項a0に設定<br/>f(x)=S + a1·x + ... + a(k-1)·x^(k-1)"]
A2["係数 a1..a(k-1) を乱数で選択<br/>(有限体 GF(p) 上で)"]
A3["各参加者iに点 (i, f(i)) を渡す"]
A1 --> A2 --> A3
end
subgraph REC["復元段階 (Reconstruction)"]
B1["任意のk個の点を収集<br/>(x1,y1)...(xk,yk)"]
B2["Lagrange 補間で f(x) を一意に復元"]
B3["秘密の復元: S = f(0)"]
B1 --> B2 --> B3
end
GEN --> REC
シャミア方式の数学的核心は 「k個の点はk-1次多項式を一意に決定する」 という補間定理である。分配者は復元したい秘密 S をk-1次多項式の 定数項 a₀ = S に置き、残りの係数 a₁, …, a_{k-1} を有限体 GF(p) 上で無作為に選ぶ。すると多項式 f(x) = S + a₁x + a₂x² + … + a_{k-1}x^{k-1} が定まり、参加者iにはこの曲線上の一点 (i, f(i)) を断片として与える。秘密Sそのものは f(0) に隠れている。
復元は逆方向である。任意の相異なるk個の点が集まれば ラグランジュ補間(Lagrange interpolation) でk-1次多項式 f(x) が一意に再構成され、f(0) を計算すればすなわち秘密 S が出る。一方、点がk-1個しかなければ、それらの点をすべて通るk-1次多項式が GF(p) 上に p通り(定数項がどんな値でも可能)存在するので、攻撃者の立場ではSの候補がすべて等しくもっともらしく、何の情報も得られない。まさにこれが「k-1個以下は完全な無知」という 完全秘匿性(perfect secrecy) の数学的根拠であり、この性質ゆえにシャミア方式は計算量仮定(素因数分解の困難性など)に依存しない 情報理論的に安全な 技術に分類される。
有限体上で演算する理由も味わう価値がある。もし実数(real number)上で多項式を扱えば、断片のサイズが大きくなるほど秘密の桁数を推し量る手がかりが漏れ出る。一方、すべての演算を 秘密より大きい素数p に対する GF(p) 上で行えば、断片値が 0 から p-1 の間に一様に分布し、いかなる統計的偏りも残らない。たとえば (3, 5) 設定で秘密S=1234を分散するなら、pに十分大きな素数(たとえば1613)を取り、f(x)=1234 + 166x + 94x² mod 1613 のように乱数係数で曲線を作って5個の点を分け与えれば、任意の3人がラグランジュ補間で f(0)=1234 を蘇らせる一方、2人では1234を1613通りの候補の一つにすら絞れない。
C. ブレイクリー方式と二つの方式の比較
flowchart LR
subgraph SH["Shamir (代数的)"]
SH1["k-1次多項式の曲線"]
SH2["断片 = 曲線上の点"]
SH3["k個の点 -> 曲線一意 -> f(0)=S"]
SH1 --> SH2 --> SH3
end
subgraph BL["Blakley (幾何学的)"]
BL1["k次元空間の超平面群"]
BL2["断片 = 一つの超平面"]
BL3["k個の超平面の交点 -> 秘密座標 S"]
BL1 --> BL2 --> BL3
end
Blakleyは同じ1979年にまったく異なる 幾何学的 発想で閾値秘密分散を実現した。秘密をk次元空間の一点(座標)に置き、各参加者にその点を通る相異なる 超平面(hyperplane) 一つずつを断片として与える。k個の超平面が集まればその交点が一意に一つの点として決まり秘密が復元されるが、k-1個では交わりが直線・平面などの無限集合になり秘密座標を特定できない。発想はシャミアと双子のように似ているが、断片一つが空間をある程度狭めてくれるため、k-1個の断片が「完全な無知」ではなく「候補集合を縮小」 するという点で機密性がシャミアより弱い。
二つの方式の実務的な違いは単なる好みではなく 断片サイズ(空間効率)と安全性等級のトレードオフ に行き着く。ブレイクリー断片は座標ベクトルなので秘密よりk倍ほど大きいが、シャミア断片は秘密と同じサイズ(理想的、ideal)なので保管・伝送に有利である。またシャミアは完全秘匿性を数学的に保証する一方でブレイクリーはそうでないため、今日の実務標準はほぼ全面的にシャミア系である。下表は二つの方式と基本的な性質を比較したものだが、その違いがなぜ生じるかは上の散文で説明したとおりである。
| 区分 | シャミア(Shamir) | ブレイクリー(Blakley) | 単純分割(XOR split) |
|---|---|---|---|
| 数学的原理 | 多項式補間(GF(p)) | 超平面交点(線形代数) | ビット分割/XOR |
| 断片サイズ | 秘密と同一(ideal) | 秘密の約k倍 | 秘密/n |
| 閾値 (k,n) | 自由に設定可能 | 自由に設定可能 | n-of-n のみ |
| 機密性 | 完全(情報理論的) | 部分(候補縮小) | n-of-n なら完全 |
| 耐障害(可用性) | n-k個紛失を許容 | n-k個紛失を許容 | 1個でも失えば復元不可 |
表のとおり単純XOR分割は「n人が全員集まって(n-of-n)復元」しかできず耐障害性がまったくなく、一つの断片を失っただけで秘密が永久に消える。シャミアはこれと正反対に、kとnを独立に設計して 「安全水準(k)と可用性の余裕(n-k)を別々に調律」 できる。たとえば (2, 3) は可用性重視(1個の欠員を許容、共謀2人が必要)、(4, 5) は安全重視(共謀4人が必要)で、同じ技術が組織のリスク選好に合わせて柔軟に変形するという点が実務採用の決定的理由である。
3. 拡張技術——検証・更新・演算
A. 検証可能秘密分散(VSS)
基本的なシャミア方式は 「分配者が正直である」という仮定 に依存する。悪意ある分配者がわざと曲線上にない偽の断片を特定の参加者に渡せば、その参加者は復元に参加しても見当違いの値を誘導したり復元そのものを妨害したりできる。検証可能秘密分散(VSS, Verifiable Secret Sharing) はこの信頼仮定を取り除くために、参加者が自分の断片が「他の断片と同じ一意の多項式上にあるか」を秘密を露出せずに検証できるようにする。Feldman(1987)は公開コミットメントを指数部に載せ(g^{a_i})断片の整合性を確認させ、Pedersen(1991)はそこに情報理論的な秘匿性を加えた。VSSは後続の分散鍵生成(DKG)と閾値署名の前提となる中核部品である。
B. 能動的秘密分散(PSS)
長期間保管される秘密にはもう一つの脅威がある。攻撃者が 数年にわたって断片を一つずつゆっくり窃取 すれば、ある時点でk個を集めて秘密を復元できる。能動的(事前対応)秘密分散(PSS, Proactive Secret Sharing) は秘密Sそのものはそのままに 断片だけを定期的に再生成(re-sharing) し、この「遅い浸透」を無力化する。原理は「0を分散した新しい多項式」を各参加者が加え、以前の断片と新しい断片が両立不能になるようにすることである。過去に窃取した断片は更新以降役に立たなくなるので、攻撃者は 一つの更新周期のうちにk個すべて を集めねばならないというはるかに強い条件に直面する。Herzbergら(1995)が体系化し、長寿命鍵・ブロックチェーンカストディの運用安全性に必須である。
C. 閾値暗号・閾値署名(Threshold Cryptography)
秘密分散の最も強力な拡張は 「復元せずに使う」 ことである。基本技術は復元の瞬間に秘密が一点に再組立てされ、その刹那が露出の急所となる。閾値暗号(threshold cryptography) とりわけ 閾値署名(threshold signature, TSS) は秘密鍵を一度も一箇所に集めず、各参加者が自分の断片で部分署名を作った後、これを結合して ただ一つの正常な署名 を完成させる。外から見れば平凡な単一鍵署名と区別がつかないが、実際にはk人が協力して初めて署名が出る。これは [[multi-party-computation]] の特殊・高効率な事例であり、秘密鍵が平文で存在する瞬間がそもそもないという点で単純な秘密分散より露出リスクが根本的に小さい。
4. 適用事例と他技術との比較
実務で秘密分散は「最上位の秘密の生存性と非集中」を同時に要求する領域で広く使われる。第一に HSM・KMSの鍵バックアップ/復旧:金融機関は暗号モジュールのマスター鍵を複数のスマートカードに (3, 5) 式で分散して異なる職員・金庫に保管し、災害復旧時に定足数だけ集めて復元する。第二に インターネットのルート信頼の儀式(ceremony):DNSSECのルートゾーンの鍵署名鍵(KSK)運用には、世界から選抜された信頼コミュニティ代表が参加する多者統制手続きが使われ、いかなる一機関もルート信頼を単独掌握できないようにする。第三に ブロックチェーンウォレットのカストディ:取引所・受託業者はウォレット秘密鍵を閾値署名(MPCウォレット)で分散し、単一サーバ侵害で資産が丸ごと窃取される事故を防ぐ。
秘密分散を隣接技術と混同しないことが重要である。下表とそれに続く説明は「何が異なるか」を違いの 原因と含意 まで押さえる。
| 技術 | 目的 | 核心的な違い | 秘密の露出点 |
|---|---|---|---|
| 秘密分散(SSS) | 秘密の分散保管・復元 | 復元時に秘密が再組立てされる | 復元の瞬間(1回) |
| データ二重化/バックアップ(RAID) | 可用性(耐障害性) | 各複製がそれ自体で完全な平文 | 全複製が常時 |
| 暗号化(Encryption) | 機密性(秘匿) | 鍵一つで戻せ、鍵管理に帰着 | 鍵漏洩時 |
| 多者間計算(MPC) | 非公開入力の共同演算 | 秘密を復元せず関数のみ計算 | (理想的には)なし |
RAID・バックアップは可用性を高めるが、各複製が それ自体で完全な平文 なので複製一つが漏れただけで全てが破られる——可用性は上がるが機密性はむしろ悪化する。秘密分散はこれと正反対に、断片が多くなってもk-1個以下では何も露出されず、可用性を高めながら機密性を同時に守る。暗号化は秘密を隠すが結局「その鍵をどこに置くか」という問題を残し、まさにその鍵を秘密分散で分割することが両者を結合する典型的設計である。MPCは秘密分散を下部構成要素として使いつつ「復元せずに演算」まで進んだ上位概念であり、閾値署名がその交わりに当たる。
5. 深化——最新動向と標準化
秘密分散はブロックチェーン・分散信頼の需要と噛み合い、閾値署名(TSS)の標準化 へとその重心が移動している。2024年6月、IETFは FROST(Flexible Round-Optimized Schnorr Threshold signatures) をRFC 9591として公表し、2ラウンドで動く効率的な閾値Schnorr署名の標準文書を提供した。FROSTはn個の断片のうちk個が協力して一つのSchnorr署名を作りつつ秘密鍵を再組立てせず、ビットコイン(Taproot)・分散認証などで次世代カストディの既定値として注目される。ECDSA系ではGennaro–GoldfederのGG18/GG20系閾値ECDSAが多数の商用MPCウォレット(受託プラットフォーム)の基盤として使われてきた。
標準化の観点では米国NISTの 多者閾値暗号(MPTC, Multi-Party Threshold Cryptography)プロジェクト が中心軸である。NISTはNIST IR 8214シリーズを通じて閾値方式の用語・セキュリティモデル・評価基準を整理してきており、閾値EdDSA・ECDSAなどの署名だけでなく復号や鍵生成まで包括する範疇体系を立てている最中である。さらに量子耐性への移行と噛み合い、閾値ML-DSA(格子ベース署名の閾値化)のようにポスト量子閾値署名を狙う研究がNISTのワークショップで活発に議論されている。ただしこれらの相当数はまだ草案・研究段階であるため、具体的な採用の際には当該文書の最新状態を必ず確認すべきである。
産業適用では2022年前後から MPCウォレット がハードウェアウォレット・マルチシグの代替として急速に広がった。マルチシグがブロックチェーンプロトコル水準で複数の署名を要求してチェーンごとの互換性・手数料負担・プライバシー露出があるのに対し、閾値署名ベースのMPCウォレットは チェーンには単一署名に見えつつ 内部的にk-of-n統制を実装し、運用柔軟性とプライバシーを同時に得る。業界では新しいビットコインカストディがFROST式Schnorr閾値署名を既定値とし、マルチチェーン環境ではECDSAベースのMPCが当面並存するだろうという見通しが示される(これは予測であり確定した事実ではない)。
6. 考慮事項および示唆点
技術士の観点から秘密分散の導入を設計する際に留意すべき点は次のとおりである。
第一に、(k, n) パラメータは組織のリスク選好をコード化した決定 である。kを高めれば共謀耐性(安全)は強くなるが復元難度(可用性低下)が大きくなり、n-kの余裕を増やせば耐障害性は良くなるが断片がより広く散らばって管理表面が広がる。重要資産の重要度・運用人員の地理的分布・欠員の可能性を総合して (2,3)・(3,5) のような具体的数値に換算し、定期的に再評価するガバナンスが必要である。
第二に、復元の瞬間が最大の急所 であるため「復元せずに使う」閾値暗号への進化を積極的に検討すべきである。単純な秘密分散は復元時に秘密が一つのメモリ空間に平文で再組立てされ、そのホストが感染していれば全てのセキュリティが無力化される。資産価値が大きい領域(鍵署名・ブロックチェーンカストディ)ほど、TSS/MPCで設計して秘密鍵が平文で存在する瞬間そのものをなくすことがトレードオフ上有利である。
第三に、運用・手続きリスクが数学的安全性と同じくらい重要 である。分配段階の安全チャネル、断片保管媒体(スマートカード・HSM・分離金庫)の物理セキュリティ、担当者の離職時の断片回収・再分散、そしてPSSによる定期的な断片更新までが一つのライフサイクルとして管理されねばならない。いくら完全秘匿性が証明されても断片の配布過程が平文メールであれば全体が崩れる。すなわち秘密分散は「暗号技術」であると同時に「鍵管理の運用体系」であると認識すべきである。
第四に、量子耐性・標準動向との連携を先制的に反映 すべきである。シャミア方式自体は情報理論的安全性なので量子コンピュータに直接脅かされないが、それと結合して使う署名・鍵交換が脆弱であれば全体の安全性が壊れる。閾値署名を導入するならRFC 9591(FROST)・NIST MPTC・[[post-quantum-cryptography]] 移行ロードマップを共に追跡し、長寿命資産ほどポスト量子閾値方式への移行経路を設計にあらかじめ反映することが望ましい。
参考資料
- Shamir, A. (1979). How to Share a Secret. Communications of the ACM. https://dl.acm.org/doi/10.1145/359168.359176
- IETF RFC 9591, The Flexible Round-Optimized Schnorr Threshold (FROST) Protocol for Two-Round Schnorr Signatures (2024). https://www.rfc-editor.org/rfc/rfc9591
- NIST, Multi-Party Threshold Cryptography (MPTC) Project. https://csrc.nist.gov/projects/threshold-cryptography
- Wikipedia, Threshold cryptosystem. https://en.wikipedia.org/wiki/Threshold_cryptosystem
一言まとめ: 秘密分散は一つの秘密をn個の断片に分けてk個以上が集まって初めて復元されるようにする技術であり、シャミアの多項式補間が完全秘匿性を数学的に保証し、今日ではHSM鍵バックアップ・ブロックチェーンMPCウォレット・閾値署名(FROST)の基盤へと進化している。