Shamirバックアップとシードフレーズの分割
Shamirバックアップは、ウォレットの復元用シークレットを複数のシェアに分割し、どのコピー単体でも資金を盗めないようにします。その仕組みと、シードフレーズを半分に分けることが危険な理由を解説します。
Shamirバックアップは、ウォレットの復元用シークレットを複数のシェアに分割し、それぞれを独立した単語のセットとして書き留める方式です。あらかじめ決めた数のシェア(たとえば3つのうち任意の2つ)があればウォレットを復元でき、それより少ないシェアからは役に立つ情報が何も得られません。これにより、どの場所にも完全な鍵を置かずに、バックアップを複数の場所に保管できます。
これは現実のジレンマを解決します。シードフレーズのバックアップが1つだけだと、それが単一障害点になります。なくせば資金を失い、誰かに見つかれば資金を盗まれる可能性があります。コピーを増やせば紛失のリスクは下がりますが、盗難のリスクは上がります。Shamirバックアップはその両方を同時に減らすよう設計されていますが、仕組みが複雑になり、やり方を誤ると自分自身が締め出されることもあります。
Shamirの秘密分散法の仕組み
Shamirの秘密分散法は、1979年に暗号学者Adi Shamirによって発表されました。中心となる考え方は、曲線を決めるには一定数の点が必要だという数学的事実に基づいています。2点で直線が、3点で放物線が決まり、以下同様です。
簡単に言うと次のとおりです。
- 1秘密を、ランダムに選んだ曲線上の1つの点として符号化します。
- 2その曲線上の別々の点をシェアとして配ります。
- 3十分な数のシェア(しきい値)があれば、曲線を再構成して秘密を復元できます。
- 4それより少ないと当てはまる曲線が無数に存在するため、シェアから秘密については何もわかりません。
この最後の性質こそが、フレーズを単に分割することとの違いです。
ウォレットにおけるShamirバックアップ:SLIP-39
Trezorを手がけるハードウェアウォレットメーカーのSatoshiLabsは、Shamirバックアップ用の規格SLIP-39を公開しました。これに対応したウォレットは、シェアを単語のリストとして生成します。シードフレーズに似ていますが、単語リストも形式も異なります。
Shamirバックアップを設定するときは、通常次の項目を選びます。
- シェアの数:たとえば3つまたは5つ。
- しきい値:復元に必要なシェアの数。たとえば2つまたは3つ。
実装によっては、より複雑な構成のために「家族グループから1つ、個人グループから2つ」といったグループ機能を使えるものもあります。
互換性に関する注意
SLIP-39のシェアは、BIP-39にしか対応していないウォレットには入力できません。BIP-39は、ほとんどのウォレットが12語または24語のシードフレーズに使っている規格です。Shamirバックアップに頼る前に、どのウォレットで復元できるかを確認し、その情報を計画と一緒に記録しておきましょう。
シードフレーズを半分に分けるだけではいけない理由
よくある自己流のやり方は、1〜12番目の単語を1枚の紙に、13〜24番目を別の紙に書くことです。賢い方法に見えますが、2つの問題があります。
| 方法 | 1つが盗まれた場合 | 1つを紛失した場合 |
|---|---|---|
| 完全なシードフレーズ1つ | 資金を奪われうる | ウォレットも故障すれば資金を失う |
| 半分に分けたシードフレーズ | 攻撃者が秘密の半分を知り、残りの推測がはるかに容易になる | ウォレットも故障すれば資金を失う |
| Shamir 2-of-3 | 攻撃者は役に立つ情報を何も得られない | 残り2つのシェアで復元できる |
フレーズを分割すると、どの断片も泥棒にとって価値があり、しかもどの断片も欠かせなくなります。両方の欠点を抱えることになるのです。分散したバックアップが必要なら、きちんとした方式を使いましょう。さらに詳しく知りたい方は、ウォレットの導出パスの解説をお読みください。
Shamirバックアップと他の選択肢の比較
| 選択肢 | 仕組み | 主な利点 | 主な欠点 |
|---|---|---|---|
| 単一のシードフレーズ | 1つの単語リスト | シンプルで幅広く対応 | 単一障害点 |
| シードフレーズ+パスフレーズ | シードに秘密の追加ワードを加える | シードを見つけられただけでは足りない | パスフレーズを忘れると資金を失う |
| Shamirバックアップ | しきい値付きのシェア | 分散保管でき、シェアの紛失に耐えられる | SLIP-39対応が必要で、管理する物が増える |
| マルチシグウォレット | 複数の鍵による署名が必要 | どの鍵も単独では資金を動かせない | 設定と復元がより複雑 |
それらの選択肢については、パスフレーズと共有資金のためのマルチシグのガイドで解説しています。
Shamirバックアップを安全に設定する方法
- 1対応しているウォレットを使い、公式の入手先からダウンロードまたは購入してください。
- 2適切なしきい値を選びましょう。2-of-3はよく使われる出発点です。1つのシェアをなくしても復元でき、盗まれたシェア1つだけでは役に立ちません。
- 3各シェアを手書きで丁寧に書き写し、シェア番号としきい値を記入しておきます。写真は絶対に撮らないでください。
- 4シェアは別々の場所に保管しましょう。たとえば自宅と、信頼できる別の場所です。すべてのシェアを同じ引き出しに入れておいては意味がありません。
- 5ウォレットに多額の資金を入れる前に、しきい値の数のシェアで復元をテストしてください。
- 6信頼できる人が、この方式の存在、必要なシェアの数、どの種類のウォレットで復元できるかを把握できるよう、計画を文書にまとめておきましょう。暗号資産の相続対策のガイドもご覧ください。
- 7火災や水害に備えて、各シェアに金属製のバックアップを検討してください。
よくある間違い
- しきい値をシェアの総数と同じに設定し、1つなくしただけですべてを失う状態にしてしまう。
- 互いに知り合いで、シェアを持ち寄れてしまう人たちに多くのシェアを渡しすぎる。
- シェアがどのウォレット規格を使っているかを忘れる。
- 復元を一度もテストしない。
- Shamirを署名用端末のマルウェア対策だと考える。実際にはそうではありません。
まとめ
Shamirバックアップを使えば、ウォレットの復元用シークレットを複数の場所に分散でき、シェアを1つなくしたり盗まれたりしても資金を失わずに済みます。シードフレーズを半分に分けるよりはるかに安全ですが、対応ウォレットと丁寧な記録が必要です。Bitcoinなどの暗号資産を自己管理しているほとんどの人にとっては、しっかり保管した単一のバックアップで十分です。Shamirは、金額と計画が追加の手間に見合う場合に検討する価値があります。まずはシードフレーズの正しいバックアップ方法のガイドで基本から始めましょう。
よくある質問
Shamirバックアップとは何ですか?
Shamirバックアップは、ウォレットの復元用シークレットを複数のシェアに分割し、それぞれを独立した単語リストとして書き留める方式です。復元に必要なシェアの数は、たとえば3つのうち任意の2つというように自分で選べます。それより少ないシェアからはシークレットについて役に立つ情報が何も得られないため、1つのシェアを紛失したり盗まれたりしても資金が危険にさらされることはありません。
24語のシードフレーズを半分に分けるだけではだめですか?
おすすめしません。それぞれの半分はシークレットの一部をそのまま明かしてしまい、攻撃者が残りを推測するのに必要な手間を大幅に減らします。また、どちらか一方をなくすと復元できなくなるおそれがあります。Shamirバックアップやマルチシグウォレットは、この両方の問題を避けるために設計されています。
Shamirバックアップはすべてのウォレットに対応していますか?
いいえ。ウォレットでのShamirバックアップの一般的な規格であるSLIP-39は、ほとんどのウォレットが使うBIP-39のシードフレーズとは異なります。ShamirのシェアはSLIP-39に対応したウォレットでしか復元できないため、互換性を確認し、どの種類のウォレットでシェアを作成したかを記録しておきましょう。
Shamirバックアップはマルチシグと同じですか?
いいえ。Shamirバックアップは1つの鍵のバックアップをシェアに分割するものですが、復元後のウォレットは引き続き1つの鍵で署名します。マルチシグは複数の独立した鍵を使い、それぞれが取引に署名する必要があります。マルチシグは1台の端末が侵害された場合から守り、Shamirは主にバックアップの保管方法を守ります。
