概要
- 重要な秘密 を複数人で管理する必要性
- Shamir's Secret Sharing による秘密分割の原理
- 閾値k で秘密を守る数学的仕組み
- 実用例 としてEnteのLegacy Kitでの応用
- 追加資料や参考文献の紹介
1人では守れない秘密の分割と共有
- 1人だけに秘密を託すリスク 回避のための分割管理
- 例:会社のマスターキー利用に 3人の役員 が必要
- 例:家族のアカウント復旧に 複数封筒 を要求
- 例:チームで 誰かが欠けても復元可能 なバックアップ
- Adi Shamir (RSAのS)が1979年に発表した手法
- 秘密を複数の断片 に分割
- 指定数(閾値k)以上 が揃えば復元可能
- 閾値未満 では 一切情報が漏れない
- 「解読が難しい」ではなく、「 全く情報が得られない」性質
Shamir's Secret Sharingの基本原理
- 2点が直線を決定 する数学的性質
- 1点だけでは 無限に多くの直線 が通り、秘密は特定不能
- 例:秘密を y軸との交点 (例:7)に設定
- ランダムな傾きで直線を描き、各人に 直線上の1点 を配布
- 1点だけでは 全ての秘密が可能性として残る
- 2点 が揃うと 直線が一意に決定 し、秘密が復元可能
- 2-of-n方式 (n人中2人の協力で復元可能)
閾値を増やす場合の仕組み
- 3人必要なら 「放物線」(2次式)、 4人なら 「三次式」
- k人必要 なら 次数k-1の多項式 を利用
- 2人→直線
- 3人→放物線
- 4人→三次曲線
- k人必要 なら 次数k-1の多項式 を利用
- 実装では有限体演算 (整数の世界で計算)を使用
- 秘密は「 多項式の定数項(x=0の値)」
- ランダムな係数 が秘密を隠す役割
- 各人の断片は「 多項式上の1点(x, y)」
- 閾値未満では 「全ての秘密が等確率であり得る」ため 絶対に情報が漏れない
応用例:EnteのLegacy Kit
- Ente ではShamir's Secret Sharingを 一要素 として活用
- 課題:単に秘密を分割するだけでなく、「 復旧時に断片が直接復旧キーにならない」仕組み
- Legacy Kitでは カードが復旧キーを保持しない
- カードで 一時的な秘密 を復元し、その後 サーバー経由で復旧
- カードの無効化や紛失時の安全性 を確保
参考文献・さらなる学び
- Adi Shamir 「How to Share a Secret」
- Bruce Schneier 「Sharing Secrets Among Friends」
- Max Levchin のPayPalでの事例
- Ente のソースコード