シャミアの秘密分散法の理解:信頼の数学

セキュリティの世界では、しばしばパラドックスに直面します。ある秘密は、単一の個人に託すにはあまりにも重要すぎますが、その人が利用できなくなった場合に失うこともまた許されません。複数の役員による承認を必要とする企業のマスターキーであれ、デジタル資産のための家族のリカバリプランであれ、あるいは技術チームのための分散バックアップシステムであれ、「閾値ベース」の信頼システムへのニーズは普遍的です。

RSAアルゴリズムの設計者の一人であるAdi Shamirは、1979年にこの問題を解決しました。彼は、秘密を複数の断片(シェア)に分割し、最小限の数のシェアがあれば秘密を再構成できる一方で、その閾値に満たない数のシェアでは元のデータについて一切何も明かさない手法を開発しました。

幾何学的な直感:2つの点は直線を作る

シャミアの秘密分散法(SSS)の仕組みを理解するために、幾何学の基本原則から始めましょう。2つの異なる点は、正確に1つの直線を決定します。

例えば、7という数字という秘密があると想像してください。この秘密を隠すために、グラフの垂直軸(y切片)にその値を配置します。次に、その点を通るランダムな直線を描きます。直線の傾きはランダムに選ばれます。このランダム性が秘密を隠蔽します。

もしこの直線上の1つの点を誰かに渡すと、その人は秘密を特定できません。1つの点では、その点を通る無限に多くの直線が考えられ、それぞれがy軸と異なる値で交差します。単一のシェアを持つ保持者にとって、考えられるすべての秘密は等しくあり得ることになります。

しかし、2人がそれぞれの点をつなぎ合わせた瞬間、直線は固定されます。2つの点があれば、可能な直線は1つしか存在せず、その直線がy軸と交差する場所で正確に秘密を読み取ることができます。これは 2-of-n の秘密分散方式です。いくらでも多くの点を配布できますが、再構成には任意の2つの点があれば十分です。

閾値を拡大する: 「曲がり」を加える

再構成に必要なシェアの数を増やすには、曲線の複雑さを高めるだけです。直線(1次多項式)には2つの点が必要ですが、放物線(2次多項式)には、一意に決定するために3つの点が必要です。

一般的に、k個のシェアが必要な閾値には、k-1 次の多項式が必要です。

  • 2 shares: 直線(1次)
  • 3 shares: 放物線(2次)
  • 4 shares: 立方曲線(3次)

実際の運用では、これらは方眼紙に描かれるのではなく、finite-field arithmetic(有限体演算)を用いて計算されます。これにより、シェアが整数に保たれ、攻撃者が近似や丸めを用いて秘密を鍵として推測することを防ぎます。核心となる特性は変わりません。閾値 k に達しない限り、秘密は単に「見つけにくい」だけでなく、数学的に不可視となります。

実用的な応用と実装

シャミアの秘密分散法は、単に理論的な好奇心ではありません。単一障害点を排除するために、極めて重要な環境で使用されています。

分散型鍵管理

Bitcoinコミュニティがプライベートキーに対して 3-of-5 スキームを使用していることから、二次的なシークレットストアのためのパスフレーズを配布するチームに至るまで、SSSはアクセスへの「民主的に安全な」アプローチを可能にします。コミュニティの実務家が指摘するように、この技術により、組織は誰か一人に「真に」フルキーを渡すことなく、アクセス権を配布することが可能になります。

強化されたリカバリフロー

Enteは、自社の「Legacy Kit」内でSSSを利用しています。シェアを恒久的なリカバリキーとして使用するのではなく、SSSをより大きなフローの一層として使用しています。シェアはローカルで別の秘密を再構成し、それがサーバーを介したリカバリプロセスに参加します。このアーキテクチャにより、発行されたカードを無効化することができ、失われたシェアが恒久的なセキュリティ上のリスクとなることを防ぐことができます。

技術的な検討事項とトレードオフ

SSSは強力ですが、大規模な実装においては特定の技術的な課題が生じます。

大きな秘密の扱い

もし秘密が多項式の1つの座標として扱うには大きすぎる場合、ペイロードを最初に暗号化するのが一般的な慣行です。その結果得られる暗号化キーをSSSで分割し、そのキーのシェアを暗号化されたペイロードと共に配布します。

SSS vs. Erasure Coding

一部の開発者は、SSSを Reed-Solomon や PAR2 のようなシステムと比較します。両方ともデータを分割することに関わりますが、セキュリティ面で決定的な違いがあります。Reed-Solomon は主に冗長性(erasure coding)のためのものであり、一方で SSS は information-theoretic security(情報理論的安全性)を提供します。あるコミュニティの貢献者が次のように指摘しています。

"The difference with Shamir is that you lose information-theoretic security [with Reed-Solomon]... the payload also needs to undergo an all-or-nothing-transform (AONT) because Reed-Solomon can have pathological cases where pieces leak information."

量子脅威

量子コンピューティングが進歩するにつれ、シェアのサイズや秘密分散法の長期的な生存性に関する疑問が生じます。SSSは、RSA のように大きな素数の因数分解の困難さに依存するのではなく、多項式補間に基づいているため、量子コンピュータの影響を直接的に受けるわけではありませんが、有限体の選択や、鍵の長さに対するシェアのサイズは、将来の的な暗号システムを構築するための重要な検討事項として残ります。

Sources