146 / 691SLIP39

SLIP-39

秘密をバックアップする閾値付き単語シェア

SLIP-39はグループとメンバーの閾値を持つ単語シェアに秘密を保存します。復元を決めるのは紙の枚数ではなく正しい組合せです。

SLIP-39はShamir's Secret Sharingに基づく、相互運用可能な単語シェアのSatoshiLabs仕様です。分割、メタデータ、誤り検査、passphraseを標準化し、シェアはBIP 39フレーズと交換できません。

BIP 32ウォレットのバックアップで主秘密となるのは入力シードであり、拡張秘密ルートではありません。まずencrypted master secret(EMS)を作り、その後シェアに分割します。計算はバイトごとにGF(256)で行い、仕様では秘密をf(255)、閾値が2以上なら検証用ダイジェストをf(254)に置きます。 [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [BIP 32 — Hierarchical Deterministic Wallets]

最初に必要な各グループのメンバー閾値を満たし、次にグループ閾値を満たします。例として3グループ中2グループ、各グループは3人中2人とします。Aの2シェアとBの2シェアは十分ですが、Aの3シェアとBの1シェアは同じ4枚でも不足します。基本的な2-of-3方式は一つのグループを使います。 [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

単語リストは1024の英単語で、画面の言語に合わせて翻訳しません。128ビットの秘密は20単語、256ビットなら33単語のシェアになります。識別子、extendableフラグ、反復指数、インデックス、閾値も含みます。結合時にはメタデータの一致とメンバーインデックスの一意性を確認し、同じシェアのコピー2枚は2人分になりません。 [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

最後の3単語はRS1024を構成し、最大3単語に及ぶ誤りを必ず検出します。シェアの出所や保有者の権限は証明せず、仕様は自動訂正を推奨しません。再構成ダイジェストは誤った組を検出する助けになります。この32ビット検査があるため、閾値未満で漏えいが完全にゼロという理想的主張をSLIP-39へ無条件には適用できません。 [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

暗号化はFeistelの4ラウンドで、各ラウンドにPBKDF2-HMAC-SHA256を2500×2^e回使います。仕様は印字可能なASCII 32–126を許し、passphraseがなければ空文字列を使います。正しいpassphraseかどうかを直接判定できず、別の入力は別の主秘密になります。有効なシェアでも意図したウォレットとは限らず、既知のアドレスを確認します。 [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

BIP 39は単語リスト、チェックサム、フレーズからシードへの変換が異なります。その単語を紙に分けてもSLIP-39やその閾値保護にはなりません。同じウォレットを維持する移行には正しいBIP 32シードと導出条件の維持が必要で、元のエントロピーを別の単語に再符号化するだけでは保証されません。具体的に対応する手順を確認してください。 [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [BIP 39 — Mnemonic code for generating deterministic keys]

extendableフラグが1なら、暗号化ソルトから識別子を除外します。これによりpassphraseを知らずに同じEMSを新しい識別子で再分割できます。Trezorは対応する単一シェアのバックアップを複数へ拡張する方法を説明しています。ただし新しい組は古い組を無効化せず、十分な元の組合せは同じ秘密を復元できます。 [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [Trezor — Multi-share Backup]

SLIP-39は復元時に一つの秘密を組み立てます。Multisigや各取引のオンチェーン承認は作りません。配置は同時紛失と攻撃者による十分な組合せの取得を抑える必要があります。信頼できる機器で復元を試し、passphraseとウォレット条件を保存し、参照実装とテストベクトルで互換性を確認してください。シェア数だけでは不十分です。 [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [Trezor — python-shamir-mnemonic reference implementation]

理解を深めるには、この項目とあわせて次もお読みください Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet. 次の項目からも参照されています BIP 39, Pavol “Stick” Rusnák, Shamir Secret Sharing.

DOC · 001SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes仕様 ↗DOC · 002BIP 32 — Hierarchical Deterministic Wallets仕様 ↗DOC · 003BIP 39 — Mnemonic code for generating deterministic keys仕様 ↗DOC · 004Trezor — Multi-share Backup文書 ↗DOC · 005Trezor — python-shamir-mnemonic reference implementation一次資料 ↗
一次資料を優先 · 投資助言ではありません