ビットコインを使う前に、サイコロを50回振る人たちがいます
ビットコインを守るためだけに作られた端末があります。電卓くらいの大きさで、中の鍵は一歩も外に出さない。2026年7月末から、その端末で管理していたビットコインが相次いで盗まれています。盗んだ側は、端末に一度も触っていません。
この端末には、使い始める前にサイコロを50回振るという作法があります。手間がかかるので、そこまでするのかと言われてきた手順でした。その一手間が、今回は分かれ目になっています。
端末が守っているもの、守っていないもの
ビットコインの持ち主を決めているのは、秘密鍵です。正体は長い数字ひとつで、これを持っている人が、そのぶんを動かせます。パソコンやスマホの中に置くと、その1台が一度でも覗かれた時点で終わります。
そこで生まれたのが、ハードウェアウォレットと呼ばれる端末でした。秘密鍵を中に閉じ込め、外へ一歩も出さない。送金のときは取引の中身を端末に見せ、署名だけを中で済ませます。つないだパソコンが乗っ取られていても、そこから秘密鍵を抜き取ることはできない、という設計です。今回問題が見つかったのは、カナダのコインカイト(Coinkite)が作るColdcard(コールドカード)という、ビットコイン専用に絞った端末です。
盗まれた人たちも、この端末を正しく使っていました。ブロックチェーン上の動きを追ったギャラクシー・リサーチによれば、7月30日の1時間足らずのあいだに、多くのアドレス(ビットコインの置き場所)からまとめて抜き出されています。
その秘密鍵は、使うたびに作られるのではありません。最初のセットアップで一度だけでたらめな数字(乱数)を作り、それを12語や24語の英単語に変換したもの。端末が壊れたときに元へ戻せるよう、紙や金属板に書き写して保管しておくよう案内される単語列です。以後の秘密鍵は、すべてここから導かれます。箱の守りがどれだけ堅くても、最初のでたらめが弱ければ、端末に触らないまま秘密鍵にたどり着けます。
サイコロを、50回
サイコロの出番は、この単語列を作るときです。手元の6面サイコロを実際に振り、出た目を端末に打ち込みます。回数は、どれだけ厚く守るかで変わります。12語なら50回で、これが最低ライン。24語を選ぶなら99回です。細工のないサイコロで、毎回きちんと振り直し、誰にも見られず記録もされていないこと、というのが条件です。
狙いははっきりしています。端末が作る乱数を信じなくてよくする、ということ。振った目は自分しか知らないので、メーカーがどんなミスをしていようと、そこだけは自分の手の中にある。そのぶん、手間はかかります。
端末が振ってくれる、はずでした
とはいえ、50回も振るのは大変です。ふつうは端末が代わりに振ってくれます。中に電子のサイコロにあたる部品が入っていて、これが人の代わりに目を出します。
ところが、コインカイトが2021年3月に配った更新版から、Coldcardはこの電子サイコロを振らなくなっていました。代わりに目を出していたのは、ソフトの中の簡単な計算です。しかもその計算の出発点は、端末の製造番号と時計。どちらも、隠されている値ではありません。
だから攻撃者は、端末に触る必要がありませんでした。問題のある更新版が作りそうな単語列を自分のパソコンで片っ端から作り、そこから生まれるはずのアドレスを計算して、誰でもダウンロードできるブロックチェーンの記録と突き合わせる。当たりが出たら、そのまま持ち出す。
この間、端末そのものは破られていません。鍵を外に出さず、署名は中で済ませる。その仕事は最後まで正しく働いていました。読まれていたのは、箱にしまう鍵を作った最初の一回、端末が代わりに振ったあの数字のほうです。
では、試す候補は何通りあったのでしょうか。コインカイトの見積もりをもとにすると、いちばん古い世代の機種で1兆通りあまり。人が1秒に1つ試して3万年以上かかる数です。でも機械になら計算可能です。実際に盗まれたのも、これまでのところ主にこの世代の端末です。
さきほどの1兆通りを、サイコロの回数に直してみます。1兆通りは、手で振るなら15回ぶんほど。本来、12語の単語列が持つはずのでたらめさは、50回ぶんです。あとから出た機種でも28回ぶんで、そこには届いていません。だからコインカイトは、修正前の更新版で単語列を作った端末は、機種を問わず作り直すよう呼びかけています。
5年間、通り続けた確認
原因は、たった一行の取り違えでした。「ほんものの乱数を使う設定になっているか」を確かめるはずのコードが、その設定という欄があるかどうかだけを見ていました。書類でいえば、「はい」に丸が付いているかを確かめるはずが、「はい/いいえ」の欄が印刷されているかどうかしか見ていない。欄はいつでもあるので、確認は毎回だまって通ります。
ビットコインには発行元も運営会社もないので、公認の端末というものもありません。仕様が公開されているので、どの会社でも自由に作れます。世界に何社もあり、中身のソフトはそれぞれが別々に書いています。Coldcardのファームウェア(端末を動かすソフト)も公開されていて、誰でも読める状態にありました。それでも2021年から2026年まで、この一行は見過ごされています。弱い乱数から鍵を作ってしまう見落としは、2023年にも別のビットコイン向けソフトで起きました。公開されているからといって必ず誰かが見つけるとはかぎらない、という見方もあります。
最初の持ち出しが起きたのは、コインカイトが注意喚起を出すより前でした。
コインカイトは2026年7月31日、影響を受ける全機種に緊急の修正版を出し、共同創業者でCEOのロドルフォ・ノヴァクが同日、公の場で謝罪して責任を認めています。修正版のあとに作られた単語列は、この弱さを引き継ぎません。ただし更新しても、すでに作られた単語列のほうは直らないので、新しく作り直して資金を移すしかありません。
手で振っていた人たち
50回のサイコロを自分で振っていた人は、端末の乱数に頼っていませんでした。ソフトの数列がどれだけ弱くても、上から自分の手で作ったでたらめさが被さっています。コインカイトも、条件を満たしたサイコロで作られた単語列は、今回の乱数の問題だけで危険にさらされたとはみなさない、としています。
無事だったのは、その人たちだけではありません。問題の版が配られるより前に単語列を作っていた人も、はじめから別の会社の端末で単語列を作っていた人もいます。
自分で持つ側に残るもの
銀行にも取引所にも口座を持たずに、ビットコインは持てます。預けた先で流出や破綻が起きても巻き込まれず、送るのに許可を待つ必要もありません。暗号資産取引所での流出や破綻が相次いだあと、この持ち方が広く語られるようになりました。
一方で受け入れなければいけないこともあります。一度出ていった送金を取り消してくれる窓口はなく、道具そのものに欠陥があったときも、その結果を引き受けるのは自分です。条件を満たしたサイコロを自分で振り続けること自体が大半の人には現実的でない、という声も業界の中から出ています。
預ければ、秘密鍵を作る手間やミスからは解放されます。そのかわり、大きな額が集まる場所は、そのぶん攻撃の的になりやすくなります。
自分で持つという選択は、誰も信じなくてよくなるかのように見えます。しかし今回明らかになったのは、そこにも信じている相手がいたということでした。端末を作った会社、その中で動くコード、そして2021年に書かれた一行。
サイコロを50回振るという手順は、そういった信じる相手をひとつ減らすための作法でした。