簡単な回答
なぜ正しいシードでも危険なのか?
12単語や24単語が正しくても、形式が合っているだけで安全とは限りません。乱数生成器に問題があれば、攻撃者が再現できるごく少数のリストから見た目が普通のシードが作られることもあります。
これらの事例では、ビットコインのブロックチェーンや署名ルール自体は正常に機能しています。問題はウォレットの鍵生成段階で発生し、ブロックチェーンが取引を見る前にリスクが生じます。
目次
ブロックチェーンとウォレット
ブロックチェーンは署名を検証し、ウォレットが秘密を生成
ブロックチェーンは取引を検証し、ウォレットは承認用の鍵を生成・保護します。シードが弱いと、ブロックチェーンが安全でもウォレット層で失敗します。
ブロックチェーン
取引履歴を記録し、正しい署名があれば送金を承認します。
ウォレット
シード生成・秘密鍵の派生・アドレス表示・署名を行う
攻撃者
シードが予測・コピーされていれば、他の場所でも同じ鍵が再現されます。
デバイス自体を盗む必要はありません。コピーや予測されたシードがあれば、攻撃者は自分のPCでウォレットを再現し送金できます。
よくある2つの誤解
ハードウェア・コールドウォレットはリスク低減策ですが、漏洩した鍵自体は安全になりません
どちらの方法も有効ですが、守るべき境界は明確です。秘密が安全に生成され、漏洩しないことが前提です。
物理デバイスがなければ送金できない?
ハードウェアウォレットは通常のパソコンから秘密鍵を隔離しますが、シードがコピーされたり予測可能だった場合、同じ鍵は他の場所でも再現できます。
シードや秘密鍵が秘密である間だけ、デバイスは安全性を保ちます。オフラインウォレットはビットコインをネットワークから隔離します
ウォレットをオフラインにしても、そのシードや秘密鍵を持つ人が他の端末でアクセスするのは防げません。
オフライン保管は元のコピーを守りますが、複製された秘密までは消せません。弱点が生まれる場所
シード単語が表示される前にミスが起こることもある
ウォレットはまず予測できないデータを集め、これを安全な乱数生成器でシードに変換します。最初のデータが弱いと、見た目は正しい単語列でも実際は予測可能なシードになります。
エントロピー
エントロピーとは「予測困難さ」を示す技術用語です。エントロピーが高いほど、ウォレットが選べる値の幅が広がります。
安全な乱数生成器
予測困難な初期データを安全な鍵に変換するソフトウェアやハードウェア。
シードフレーズ
ウォレットが複数の秘密鍵を復元できるバックアップ(シードフレーズ)。シードがあれば誰でもウォレットを再現できます。
秘密鍵
特定アドレスからの送金を承認するための秘密の値(秘密鍵)。1つのシードから複数の秘密鍵が生成されます。
正しい形式でも安全とは限らない
12単語が正しくても安全の証明にはならない理由
宝くじの番号が長くても、実際は1,000通りしか使われていなければ、攻撃者はその1,000通りだけを試せば済みます。ウォレットの乱数生成器の不具合も同じです。
安全な12単語のシードは膨大な組み合わせから選ばれるべきですが、弱いウォレットはごく限られたリストから選ぶことがあります。単語を見たり正当性を確認しても違いは分かりません。
所有者が見るもの
12単語・正しいチェックサム・正常に開くウォレット
見えない部分
乱数生成器が十分な予測困難なデータを使わず、限られたシードしか作れませんでした。
攻撃者が得るもの
本来無数にあるはずのシード候補が、攻撃者にはごく少数のリストに絞られてしまいます。
1,000通りの例はあくまで例えで、実際の数は乱数生成器の不具合次第です。
実際の障害と異なる原因
乱数の弱さによるウォレット被害は過去にも発生
これらの事例は製品や原因が異なりますが、「見た目が立派なウォレットや長い秘密でも、予測困難とは限らない」という共通点があります。
Milk Sad / Libbitcoin Explorer
bx seedコマンドは、32ビットのシステム時刻のみを使ったメルセンヌツイスタ生成器を利用していました。出力は一見エントロピーが高そうに見えましたが、研究者は可能性の範囲を再現し、複数のブロックチェーンで実際の盗難と関連付けました。
出力が長くても、元の値が予測可能なら安全性は確保できません。RANDSTORM / BitcoinJS
古いブラウザウォレットはJavaScriptやブラウザ環境の乱数の弱さを引き継いでいる場合があり、数年後も当時作成されたウォレットが危険なままの可能性が指摘されています。
ウォレットの見た目やソフトが新しくなっても、古い鍵自体は変わりません。Android SecureRandom
Androidの乱数生成の脆弱性により、ビットコインウォレットが危険にさらされました。開発者は修正しましたが、既存の弱い鍵はアップデートでは安全にならず、ユーザーは新しいアドレスや鍵への移行が必要でした。
乱数生成器の修正は新しい鍵には有効ですが、既存の鍵は守れません。COLDCARD RNG
一部のCOLDCARDファームウェアは、想定よりもはるかに予測しやすいシードを生成していました。専用ハードでも、実際のシード生成経路で安全な乱数源が正しく使われなければ失敗することが示されました。
ハードウェアを使っても、鍵生成経路全体の検証は不可欠です。COLDCARDインシデントの詳細ガイドを読む実際のリスク確認
古いウォレットを危険と判断すべきタイミングは?
シードの単語を見ても安全性は判断できません。重要なのは、どこで・いつ・どのソフトやファームウェアで作られたかです。
シードの生成元が不明
リカバリーフレーズがどのアプリ・ウェブサイト・デバイス・ファームウェア・手順で作られたか分からない場合
ウォレットがセキュリティ警告に掲載されている
ベンダー警告・CVE・研究発表・移行案内で指摘されたバージョンでシードが作成された場合
古いシードを新しいウォレットにインポートした場合
同じリカバリーフレーズを新しいハードウェアウォレットに移しても、秘密自体は変わりません。
シードや秘密鍵が漏洩した可能性
ウェブサイトに入力・写真撮影・クラウド保存・サポートへの共有・他人に見られた場合など。
リスクに応じた対応を選ぶ
古い・不安なシードはどうすべき?
ウォレットが古いからと慌てる必要はありません。まずシードの生成方法や、その製品・バージョンが信頼できるセキュリティ情報に該当するか確認し、証拠に基づいて行動しましょう。
信頼できる生成元・漏洩の形跡なし
ウォレットやファームウェアを最新に保ち、バックアップを守り、信頼できるセキュリティ情報を確認しましょう。古いウォレットが必ずしも危険とは限りません。
シードの生成元が不明、または注意喚起で指摘されている場合
現在安全なソフトやハードで新しいシードを作成し、バックアップを確認したうえで少額テスト送金後に全額を移動しましょう。
シードや秘密鍵が他人に知られている可能性
その資産は危険と考え、新しいシードで作ったアドレスに移動しましょう。PINやパスワード、デバイスを変えても漏洩した鍵は変わりません。
弱い・漏洩したシードで効果がない対策
- 同じシードを新しいハードウェアウォレットにインポート
- PINやウォレットアプリのパスワードだけを変更
- 新しいシードを作らずにアップデートのみ実施
- 秘密が漏洩した後にデバイスをオフライン化
ウォレット開発者向け
鍵生成の全経路を検証
理論上安全なアルゴリズムだけでは不十分です。エントロピーの取得から乱数生成、最終的なシード生成まで、実際のファームウェアやOS、ブラウザ、ビルド、フォールバック動作も含めて検証が必要です。
- 暗号用乱数に設計されたプラットフォームやハードウェアの乱数源を使いましょう。
- 安全な乱数源が使えない場合は安全に失敗し、通常の乱数関数に自動で切り替えないようにしましょう。
- ビルド済み製品や実際の呼び出し経路もテストし、ソース単体だけでなく全体を検証しましょう。
- シードの生成方法や、問題発生時の移行手順を明記しましょう。
主な脆弱性情報・セキュリティガイド
事例と暗号ガイドを確認
本記事の解説や事例は、NISTガイド・Milk Sad脆弱性・UncipheredのRANDSTORM・Bitcoin.orgのAndroid警告・Bitcoin Optech・最新のウォレットセキュリティガイドに基づいています。
よくある質問
シードフレーズを知られるとビットコインを使われますか?
通常、完全なリカバリーフレーズがあればウォレットの秘密鍵を再現できます。攻撃者は対応ソフトや別の端末にインポートし、元のハードウェアウォレットやPINがなくても送金できます。
ビットコインはハードウェアウォレットの中に保管されていますか?
いいえ。ビットコイン自体はブロックチェーン上に記録され、ハードウェアウォレットは送金のための鍵を守ります。鍵のコピーを持つ人がいれば、物理デバイス以外からも送金が可能です。
コールドストレージは既知の秘密鍵も守れますか?
いいえ。コールドストレージは秘密鍵が漏れていない場合に有効です。一度でも他人に秘密鍵やシードが知られたら、その人は自分の端末から送金できます。
ファームウェア更新で古い弱いシードは安全になりますか?
いいえ。アップデートで今後のシード生成は安全になりますが、既存のシードの予測困難性は回復できません。通常は新しいシードを作り、資産を新アドレスに移すのが安全です。
シードの単語を見れば安全か分かりますか?
通常、単語数やチェックサムが正しくても弱いシードの可能性はあります。リスクは生成方法や場所によるため、元のアプリ・デバイス・ファームウェア・作成日・関連するセキュリティ情報を確認しましょう。
強いパスワードで弱いシードも安全になりますか?
いいえ。PINやアプリのパスワードは端末の不正利用を防ぎますが、シードが管理する秘密鍵自体は変わりません。別途強力なパスフレーズを追加できる設計もありますが、既知の弱いシードの修復策にはなりません。
1つの秘密鍵が漏れるとウォレット全体が危険ですか?
必ずしもそうではありません。秘密鍵が漏れるとその鍵の資産だけが危険ですが、シードが漏れるとそこから派生する複数の秘密鍵が危険になります。範囲はウォレット設計や漏洩した秘密によります。
24単語のシードでも弱い場合がありますか?
はい。単語数が多いほど組み合わせは増えますが、ウォレットが安全に値を選んだ場合のみです。不具合があれば24単語でもごく少数の予測可能な組み合わせしか使われないことがあります。
実際の事例で続ける