COLDCARD RNG Incident (2026) は、2026年7月に公表された、ソフトウェアの不具合で seed の生成が弱くなった事件です。seed はウォレットの鍵を導く秘密の基礎で、RNG は乱数生成器を意味します。リスクを判断するには、seed の作られ方と当時のファームウェアを確認します。Bitcoin のルールの欠陥でも、機器の遠隔乗っ取りでもありません。
Coinkite と Block は資金喪失の報告を受け、2026年7月30日に初期分析を公開しました。メーカーによれば、攻撃者は他人の機器を操作せずに、弱い方法で生成された秘密を再現し、対応する秘密鍵を得られました。秘密鍵があれば送金に署名できるため、機器をインターネットから切り離すだけでは足りません。ただし、この説明で個々の損失原因まで確定するわけではなく、機器のブランドだけでも判断できません。 [2] [3]
ウォレットは TRNG と呼ぶハードウェアの乱数源を使う設計でした。ところが libNgU ライブラリの組み込み後、ngu.random.bytes は MicroPython の rng_get 関数と、そのソフトウェア生成器 Yasmarang を呼んでいました。プログラムをビルドする際に、誤った部品が結び付けられたのです。MICROPY_HW_ENABLE_RNG は 0 でしたが、#ifndef は設定の有無だけを調べ、値を確認しませんでした。そのため正しいハードウェア用コードがファイルにあっても、seed の生成に使われませんでした。チップの故障や意図した緊急モードではありません。 [1]
秘密が少ない候補から選ばれるほど、攻撃者は探しやすくなります。ここではプログラムの状態が、機器のデータ、タイマー、過去の呼び出しに依存していました。Block は Mk4、Mk5、Q の追加の状態更新が 32 ビットに制限され、ほかの状態を固定すると出力列は最大 2^32 通りになると説明しています。Coinkite の暫定推定では、不確実さの量を表す総エントロピーは Mk2/Mk3 で約 40 ビット、新しい機種で 72 ビットでした。前提の異なる数字なので、あらゆる攻撃の費用や、どのウォレットも即座に破れることを示すものではありません。 [3] [1]
公式警告は Mk2/Mk3 の 4.0.1–4.1.9 を挙げています。Block の初期分析は 4.0.0 と、2021年3月の変更から対象に含めています。開始の境界に資料間の違いがあり、推測で埋めるべきではありません。seed の出所が不明なら、移行ガイドは影響を受けたウォレットとして扱うよう勧めています。Mk4/Mk5 と Q も、各ファームウェア系列の修正前は対象でした。当初の「すべての製品版」という記述は、その後の修正版を表しません。 [2] [3] [5]
最初の修正版は Mk2/Mk3 4.2.0、Mk4/Mk5 Standard 5.6.0、Q Standard 1.5.0Q、Mk4/Mk5 Edge 6.6.0X、Q Edge 6.6.0QX です。Standard と Edge は別系列なので、ほかの系列の数字が大きいだけでは判断できません。本稿の確認時点でメーカーが勧めるのは、Mk4/Mk5 の Standard 5.6.3 と Q の 1.5.3Q です。インストール前に現在の公式ページ、ファイルのハッシュ、公開版の署名を確認してください。ハッシュは内容の指紋、署名は由来を確かめる助けです。正しく更新しても、既存の seed は変わりません。 [4]
弱い方法で作られた seed を新しい機器で復元したと考えてください。機器は変わっても秘密は同じです。ウォレットの複製や転送にも同じ限界があります。ハッシュはデータの指紋を計算しますが、入力の候補を増やしません。BIP39 Checksum は単語の誤りを見つける助けであり、不足した乱数を補いません。逆に、ほかで安全に作られた seed を COLDCARD に取り込むだけなら、この特定の不具合で弱くなるわけではありません。重要なのは生成時の条件です。 [3] [5]
メーカーの例外は、公平なサイコロを独立に少なくとも 50 回振り、当初の Add Dice Rolls 機能で入力した場合です。出目の列は記録も公開もされず、追加後に表示された最終的な単語を使っている必要があります。回数が少ない、または不確かなら移行を勧めています。BIP39 Passphrase は別の対策で、seed と組み合わせて別のウォレットを決める追加の秘密の文字列です。強く固有の passphrase は攻撃の障害を増やしますが、seed を修復しないため、使用者にも移行が勧められます。PIN は機器へのアクセスを守るものです。現在の新規 seed のルールと、この過去の例外は区別してください。 [2]
まず元のウォレットを復元できるバックアップがあるか確認します。移行ガイドに従い、修正済みファームウェアで本当に新しい seed を作り、そのバックアップを確認します。ウォレットの短い識別子である fingerprint と、機器の画面上の受取アドレスを照合してください。少額を試しに送り、送金先と着金を確認してから残りを移します。残高のあるすべての口座、passphrase ウォレット、派生ウォレット、multisig を含めます。移行全体が確認できるまで古いバックアップを残します。不一致があれば送金も削除もせず、復元用の秘密をウェブフォームに入力してはいけません。 [5]
Multisig は、複数の鍵のうち指定された数の署名を送金に必要とします。攻撃者がその条件を満たす鍵を得れば、保護は足りなくなります。残る鍵を評価し、新しい署名ルールを用意して機器上で確認し、資金を移す必要があります。Block は同じ生成器の別用途として、独立した Paper Wallet の鍵や一部の一時的な暗号化鍵も挙げています。影響は具体的な用途と攻撃者が持つ情報によって異なり、すべての機能で同じではありません。 [3] [5]
状況ページには、実機 Mk4 でのハードウェア生成器の試験、ソースコードの確認、特定の修正版の独立した再ビルドが記載されています。これらは記された仕組みの確認であり、公開された全ファイルの安全性を証明しません。現在の Standard は、新しい seed を作る際に利用者自身の乱数の提供も求めます。常に任意だとしていた古い案内は、この系列の現在の手順ではありません。ページは対策の進展を記録し、別途詳細な技術的原因報告を準備中としています。 [4]
機器を更新しても元の問題は残る
利用者が Mk3 4.1.9 で、自分のサイコロの出目を追加せず seed を作りました。4.2.0 を入れ、同じ単語を別の機器で復元しても、秘密は元のままです。移行ガイドに従うなら、修正済みファームウェアで新しい seed を作り、バックアップとアドレスを確認して少額送金を試します。その後に残りを移し、全体が確認できるまで古いバックアップを残します。
理解を深めるには、この項目とあわせて次もお読みください Cryptographic Entropy, Deterministic RNG, Seed Generation, BIP39 checksum, BIP39 passphrase, Dice Roll Entropy.
01新しい機器を買うだけで十分ですか?+
同じ影響対象の seed を復元するなら不十分です。新しい機器は秘密が作られた経緯を変えません。対応は seed の由来と、独立したサイコロ入力の例外条件によります。対象の seed では、機器交換だけでなく新しいウォレットへの移行が問題になります。
0232 ビットなら全機種が同じように攻撃しやすいのですか?+
違います。Block の分析では、ほかの状態と呼び出し履歴を固定した場合の追加の状態変更を指します。機器のデータやタイミングが不明なら攻撃者の課題は変わります。一般的な攻撃速度の測定でも、個別の seed の安全保証でもありません。