Shamir's Secret Sharing (SSS)とは?
Shamir's Secret Sharing (SSS)は秘密を複数の断片に分け、特定の数の断片がそろったときだけ元に戻せる方法です。1つの断片だけでは何もわかりません。複数の友人がそれぞれ鍵を持ち、必要な人数が集まったときだけ金庫が開くようなイメージです。
「SSSは鍵をたくさんコピーするだけ」というのは間違いです。Shamir's Secret Sharing (SSS)では、各シェアは単独では無意味で、特定の閾値に達したシェアだけが元の秘密を復元できます。
Shamir's Secret Sharing (SSS)の仕組み
24語のシードを5つのシェアに分け、任意の3つで復元できるようにすることを想像してください。これがShamir's Secret Sharing (SSS)の典型的な設定です。
- ステップ1:5つ中3つなど、復元に必要な閾値を決めます。
- ステップ2:ウォレットがシードを、単独ではランダムに見える数学的な点に変換します。
- ステップ3:5つのシェアを生成します。各人や各所に1つずつ渡します。
- ステップ4:後で任意の3つのシェアを集めると、ウォレットがそれらで秘密を復元します。
- ステップ5:3つ未満のシェアでは並べても秘密は明かされません。
そういうことです。
Shamir's Secret Sharing (SSS)が注目される理由
特に暗号分野で注目される理由は次の通りです:
- 利点:1つのシェアを失っても、閾値を満たしていれば問題ありません。時間と手間の節約になります。
- 観点:単一の鍵の保管は脆弱に感じられます。人や場所にリスクを分散でき、コミュニティ主導の暗号文化に合っています。
- 関連性:ハードウェアウォレット、DAOの資金管理、セキュリティ重視のカストディ計画などで使われています。
シェアは異なるカテゴリに分けて保管しましょう。信頼できる人に一つ、銀行の貸金庫に一つ、自宅の耐火金庫に一つなど。ひとつの保管場所がダメになっても復元できるよう閾値は低めに設定しつつ、個人の窃盗を防げる程度には高めにしておきます。
Shamir's Secret Sharing (SSS)の主な特徴
さっと確認できるポイント:
- 閾値:復元に必要なシェア数を選べます。例:5つ中3つや7つ中4つなど。
- プライバシー:単独のシェアからは秘密について何も分かりません。
- 柔軟性:閾値を変えずに、異なる相手向けに複数のシェアを作成できます。
- オフライン:ネットワーク不要でエアギャップ化された端末上で実行できます。
- 独立性:秘密に対する純粋な数学的処理なので、ブロックチェーンの変更や特別なスマートコントラクトは不要です。
バリエーション
基本は同じで、いくつかの派生があります:
- VSS:検証可能な共有は、秘密を明かさずにシェアの有効性を確認できるチェックを追加します。
- SLIP 39:ウォレットのバックアップ向けに設計されたニーモニックベースの方式です。
- Threshold sigs:鍵を一か所で復元せずに署名するための関連する考え方です。
Shamir's Secret Sharing (SSS)はマルチシグとは異なります。SSSはシードや秘密鍵のような秘密を保護する仕組みです。一方マルチシグは複数の鍵でオンチェーンの支出を保護します。両方を組み合わせて使うこともでき、多くのチームがそうしています。
例
あるDAOが資金のシードを7つのシェアに分け、閾値を4に設定して各理事に1つずつ配布し、復元を実際のチーム作業に委ねます。
豆知識
Adi ShamirはRSAの共同創作者でもあります。彼は1979年にSSSを考案しました。これはシードフレーズがCrypto Twitterで注目されるずっと前のことです。
まとめ
一言で言うと:Shamir's Secret Sharing (SSS)は鍵を一か所に全て託さずにバックアップする手段です。高級時計とネット掲示板のやり取りが混ざったようなイメージだと考えてください。
