標準的な6面ダイスは1回振るごとに約2.6ビットの予測不可能な情報を生み出します。これだけでは大したことないように思えるかもしれませんが、十分に繰り返せばソフトウェアや電子部品に頼ることなく、ビットコインウォレットのセキュリティを確保するために必要な生のランダム性を生み出すことができます。
サイコロの目次第でビットコインの鍵をオフラインに保管できますが、誰もがわざわざそうするわけではありません

要点:
- クロード・シャノンの式によると、公正な6面サイコロを1回振るだけで約2.585ビットのエントロピーが得られます。
- Coinkiteのドキュメントによると、50回のサイコロ振りでビットコインウォレットのシードに必要な128ビットの基準を満たすとのことです。
- Kevin Loaec氏による「Wizard Sardine」の分析では、Coldcardツールにおいてメインシード以外にもリスクが存在することが指摘されました。
なぜサイコロの目は予測しにくいのか
情報理論を確立した数学者クロード・シャノンは、結果の不確実性を測定するためにエントロピーを用いました。公正な6面ダイスでは、各面が出る確率は6分の1で等しいため、1回の振り出しにつき約2.585ビットのエントロピーが得られます。 コイン投げでは1ビット、8面ダイスでは3ビットのエントロピーが生まれます。
最近のColdcardをめぐる騒動をきっかけに、ソーシャルメディアではサイコロを用いたシード生成が注目されています。一部のユーザーはこれを不可欠なものと捉え、また別のユーザーはそれが自身の資金を守ったと述べていますが、経験豊富な運営者は、多くの初心者が時間がかかりエラーが発生しやすいセットアッププロセスを我慢できないだろうと指摘しています。
重要なのは、サイコロが原子レベルで本当にランダムに振る舞うか否かではありません。実際には、そうではありません。結果は物理法則によって支配されていますが、あまりにも多くの微細な変数が同時に変化するため、誰も結果を確実に計算することはできません。 サイコロは一定の速度、角度、高さ、回転で手から放たれ、テーブルに当たって跳ね返るたびに方向が変わります。
実際には、放出時のわずかな変化でさえ全く異なる結果を生み出す可能性があります。指の位置がわずかに違ったり投げ方がほんの少し強くなったりするだけで軌道が十分に変化し、動きを見ていても最終的な出目を予測することはできません。結果は理論上は決定論的かもしれませんが、ウォレット生成において重要なのは攻撃者がその結果を再現したり計算したりできないということです。
サイコロの出目を実用的なデータに変換する
コンピュータはサイコロの出目のリストを直接利用できません。まず、出目をバイナリデータに変換する必要があり、その変換方法が重要です。 基本的な「奇数か偶数か」という方法は理解しやすいものの、利用可能なエントロピーの多くを無駄にしてしまいます。 サイコロ1回の出目は約2.6ビットの情報量を持ちますが、各出目は1ビットに還元されてしまいます。より効率的な方法では、長い出目のシーケンスを収集し、通常は暗号ハッシュ関数を用いて文字列全体を処理します。これにより、ランダム性をはるかに多く保持することができます。
この原理は、安全なパスフレーズを作成するための長年にわたる手法である「ダイスウェア」や、手動によるビットコインウォレットの生成にも見られます。典型的な12語のウォレット復元フレーズは、128ビットのエントロピーから構成されています。 1回のサイコロ振りで約2.6ビットの情報を得られるとすると、約50回の公正なサイコロ振りでその閾値を超えるのに十分な生の情報が得られます。
ハードウェアウォレット「Coldcard」のメーカーであるCoinkiteは、256ビットに近いエントロピーを求めるユーザーに対し、99回以上のダイス振りを推奨しています。これにより、ウォレットの使い勝手が2倍悪くなるわけではありませんが、生成される秘密鍵にははるかに大きな数学的な安全マージンが確保されます。
サイコロで生成されたシードの実地テスト
この違いが重要になったのは、Coinkiteが2021年に遡るファームウェアの問題を公表した後です。一部のColdcardデバイスでは、ソフトウェアが内部のハードウェア乱数生成器をバイパスし、代わりに非機密のデバイス情報に関連付けられたセキュリティ強度が低い処理を使用してしまう可能性がありました。
その処理の一部は再構築可能であったため、攻撃者は鍵空間全体を検索するのではなく、候補となるウォレットの鍵を絞り込むことができてしまいました。この欠陥は、東部時間午後1時時点で、約1,100のアドレスから推定1,128.6633 BTCが盗まれた事件に関連していました。

十分な数の独立したサイコロの振り出し結果のみから生成されたウォレットシードは、この経路を通じて漏洩することはありませんでした。これらのユーザーは独自のエントロピーを提供していたため、欠陥のあるハードウェア乱数生成器は、ウォレットの主要な秘密情報の生成に関与していなかったのです。
ただし、この保護はサイコロで生成したシードにのみ適用されるものであり、デバイスによって生成されたその他の秘密情報を自動的に保護するものではありませんでした。
ウィザード・サーディンが細部を検証
セキュリティ研究者のケビン・ロアエク氏は8月1日、ウィザード・サーディンのウェブサイトでColdcardの脆弱性に関する分析を公表しました。彼の最も重要な指摘は、主要なウォレットシードとは別に独自の秘密鍵を生成するColdcardの機能に関するものでした。
「サイコロでシードをインポートまたは生成したユーザーでも、以下の機能を使用している場合は脆弱である点を強調することが極めて重要だと考えます」とロアエック氏はXに投稿し、影響を受けるシステムの図を示しました。
この図は、欠陥のある乱数生成器がColdcardのいくつかの二次機能にデータを供給している様子を示しています。これには、ペーパーウォレットの作成、デバイスのクローン作成、USBセッションの暗号化、「Secret Teleport」転送機能、共同署名キーの作成、内蔵パスワード生成機能、およびハードウェアセキュリティモジュール(HSM)の認証コードが含まれていました。

99回のサイコロ振りで作成されたプライマリウォレットはシステムの別の部分に保存されていました。しかし、他のツールも依然としてこの欠陥のある乱数生成器から新しい乱数を要求できてしまう点が問題でした。その結果、安全なシードを使用しても、同じデバイス上で作成されたすべてのパスワード、バックアップ、認証コード、またはセカンダリキーが同等に安全であるとは保証されませんでした。
なぜほとんどの新規ユーザーがサイコロを振らないのか
サイコロで生成されるエントロピーは、正しく実施されれば技術的には妥当ですが、ほとんどの新規ユーザーにとって現実的なデフォルト設定とは言えません。サイコロを50回または99回振り、すべての結果を正確に入力し、振りが飛ばされたり重複したりしていないことを確認するには、忍耐力と多大な集中力が必要です。 数字を一つでも間違えると最終的なウォレットが全く変わってしまう可能性があり、ほとんどのデバイスではその誤りがサイコロの出目の不備によるものか、入力ミスか、あるいは説明書の誤解によるものかを判別できません。

さらに、このプロセスには正常に動作するハードウェアジェネレーターには存在しないリスクが伴います。ユーザーはサイコロの出目を紙に書き留めたり、写真を撮ったり、オンラインツールに入力したり、あるいは他人が見つけられる場所にリストを置き忘れたりしてしまう可能性があります。 中には、同じ要領でサイコロを振り続けたり、不正に細工されたサイコロを使ったり、煩雑さに耐えかねて途中でやめてしまう人もいます。数学的な根拠は堅固でも、結果の安全性はユーザーの手順次第です。

そのため、経験豊富なビットコインユーザーであっても、サイコロを振る方法は必ずしも最善とは見なされていません。これは、デバイスへの信頼を手動プロセスへの信頼に置き換えるためです。エントロピーを理解し、方法を検証し、サイコロの振った順序を秘密にできるような技術的に慎重なユーザーにとっては、そのトレードオフは合理的なかもしれません。 一方、初めてウォレットを設定する一般的な購入者にとっては、取り返しのつかないミスを犯す機会が増えるだけでなく、そのプロセス自体が煩わしいものにもなります。

また、資金を受け取り安全に取引を行うために、人々がテーブルを囲んで99回のサイコロの結果を記録しなければならないような状況では、ビットコインが広く普及することは想像しづらいです。セキュリティ対策は、実際の家庭環境や多忙なスケジュール、注意散漫、そして暗号学を学びたくないユーザーといった状況にも耐えうるものでなければなりません。 手動によるエントロピーの生成は上級者向けのオプションとして残すべきですが、長期的な目標は、強力なランダム性を正しく生成し、何が起きているかを明確に説明し、専門知識を可能な限り必要としないハードウェアおよびソフトウェアの実現です。
Coldcard所有者が確認すべきこと
影響を受けるColdcardデバイスの所有者は、まずデバイスにインストールされているファームウェアのバージョンを確認する必要があります。その後、メインウォレットのシードがどのように生成されたかにのみ注目するのではなく、古いファームウェアを実行中にどの機能を使用していたかを確認する必要があります。
影響を受けるデバイスでペーパーウォレット、クローン用シークレット、パスワード、共同署名キー、認証コードを生成した場合は、それらの資料を直ちに交換する必要がある可能性があります。アップデートをインストールすることで、新しいシークレットが同じ問題の影響を受けるのを防ぐことはできますが、以前に作成されたものを修復することはできません。
また、このインシデントはマルチベンダーによるウォレット構成の実用性をより強く裏付ける事例となっています。マルチシグネチャの仕組みでは、取引を承認するために異なるメーカー製の別々のハードウェアデバイスが必要となる場合があります。この構造によってファームウェアのバグが完全に排除されるわけではありませんが、1つの欠陥のある乱数生成器だけでウォレット全体が危険にさらされることを防ぐことは可能です。
この記事はAIを使用して英語から翻訳されました。英語の原文が正式な情報源であり、自動翻訳には、特に法律および規制に関する用語において不正確な部分が含まれる場合があります。
















