Keystoneから皆さまに素晴らしいお知らせがあります。同社は、誰もお客さまのシードフレーズに触れていないと断言しています。悪いお知らせは、自社ウォレットが本物であることを証明するマスターキーを失い、数万人の顧客の自宅住所を攻撃者に渡してしまったこと、そして今、真顔で「それ以外はすべて安全に鍵がかかっているので、言葉を信じてほしい」と求めていることです。

10月26日、Keystoneはインシデントに関する声明を公表しました。同社によれば、10月20日に公式サイトで侵入者に気づいたといいます。攻撃者はサードパーティ製データ監視ツールの脆弱性から侵入して権限を昇格させ、二つの戦利品を手に立ち去りました。配送先住所を含む顧客データベースと、Keystoneがすべてのウォレットの真正性を証明するために使うWebAuth暗号鍵です。

誰が訪れたのか、どのサードパーティ製ツールが破られたのか、そして10月20日以前に侵入者が何週間、あるいは何か月システム内でくつろいでいたのか、報告書は明らかにしていません。その代わり同社は、いささか誇らしげに、自社デバイスが何台産業用プレス機にかけられるかを伝えています。18,835台です。倉庫からの出荷は停止されましたが、「新しい鍵」を搭載した次のロットの予約受付はすぐに始まりました。4〜6週間待つだけでよいそうです。そしてもちろん、自宅住所をもう一度入力したうえで。

この工学的な皮肉には特別な称賛に値します。Keystoneは長年、「100%エアギャップ」セキュリティの最高水準を売りにしてきました。Bluetoothなし、Wi-Fiなし、USBによるデータ転送なし。カメラとQRコードだけで、ウォレットがどんな状況でもインターネットに触れないようにする、というものです。デバイスからは勇ましくケーブルを切り離しておきながら、ウェブサイトにはサードパーティ製のトラッカーを取り付け、通りすがりの攻撃者がそこを経由して工場認証の最も貴重な秘密にたどり着きました。そこで監視していた指標は、さぞ重要なものだったのでしょう。

1. この「マスターキー」とは何か、なぜ倉庫ごとシュレッダーに送られるのか

Keystoneの真贋確認はシンプルです。初めて電源を入れたら公式の認証ページを開きます。サイトにQRコードが表示されるので、ウォレットのカメラで読み取ります。ウォレットが数字の列を表示し、それをサイトに入力し返します。一致すれば、画面が「本物」のデバイスの所有者になったことを祝福してくれます。

Keystone 3のファームウェアのソースコードを開くと、舞台裏で何が起きているかがわかります。QRコードには、RSAで暗号化され、Keystoneの鍵で署名された検証値が含まれています。ウォレットは署名を確認し、RSA秘密鍵でその値を復号します。この鍵は工場で一度だけ書き込めるメモリ(OTP)に書き込まれ、正規のファームウェアでは上書きできません。

つまり、「真贋確認」全体が証明する事実はただ一つ、手元の装置がある秘密を知っているということだけです。「基板がKeystoneの工場で組み立てられた」でも、「内部に余計なチップがない」でも、「乱数生成器が誠実である」でもありません。ただ「秘密を知っている」だけです。そしてその秘密は、同社自身が認めるとおり、いまや攻撃者の手にあります。認証ページ自体は相変わらず時計のように正確に動いています。ただ、今ではどんな偽物でも、あの待望の緑のチェックマークを点灯させられるというだけです。

プレスリリースでKeystoneは急いで世間を安心させようとしています。盗まれた鍵はシードフレーズの生成にも、秘密鍵の導出にも、取引の署名にも関与していない、と。技術的にはすべて事実です。ただ、まさにこの鍵こそが、その箱にシードフレーズを預けてよいと購入者に確信させていたというだけのことです。些細な話です。

さらに興味深いのは、交換に関する説明で明らかになった細部です。倉庫にある18,835台のウォレットはすべて「旧」鍵で、次のロットには「新」鍵が入るといいます。ここから見事なアーキテクチャ上の結論が導かれます。Keystoneはデバイスごとに個別の証明書を持たせる代わりに、ロット全体に一つの共有秘密をスタンプのように押していたようです。模範的な節約ぶりです。鍵が一つ漏れただけで、失効させるべき特定のシリアル番号は残らず、倉庫の在庫がまるごと切り捨てられます。

しかも、認証用QRコードを生成するのにサイトが必要とするのは、鍵の公開側の半分だけでした。ところが、それがなければ誰もデバイスに代わって検証に応答できない秘密側の半分が、どうやらウェブサーバー経由で手の届く場所に悠々と置かれていたようです。工場シールのマスターキーをオンラインストアの玄関マットの下に保管する。暗号学のまったく新しい一章です。

2. この鍵で今、何ができるのか

主な攻撃シナリオはKeystone自身が説明しています。盗まれた秘密を使えば、犯罪者はサイトの公式な真贋確認を難なく通過する偽造ウォレットを大量生産し、再販業者や中古市場を通じて販売したうえで、購入者の残高を根こそぎ奪うことができます。現時点で、市場で偽造品が見つかったという報告はありません。

所有者から資産を奪うために、偽造品に正規のKeystoneファームウェアも、工場のコード署名鍵(同社は影響を受けていないと誓っています)も必要ありません。そっくりなプラスチックケースの中身は、セットアップ時に泥棒があらかじめ用意した24語のシードフレーズを差し出す、安価な基板なら何でも構わないのです。盗まれたOTPの秘密がこの罠に役立つのはただ一つ、最初のQRコードに正しく応答し、慎重な購入者を「Verification Successful」の文字で安心させることだけです。

だからこそ、完成済みのウォレット18,835台がスクラップになるのです。メモリは一度しか書き込めないため、鍵をリモートで更新できません。「旧」鍵の正規ウォレットと、同じ鍵を使った手作りの複製品をサイトで見分けることも、もはや不可能です。結局、設計に用意されていた唯一の「鍵のローテーション」手段は産業用シュレッダーだったことになります。Keystoneはロットの廃棄を仰々しく「高くつくが正しい決断」と呼んでいますが、実際には自社のアーキテクチャがほかの選択肢を残していなかっただけです。

ブランド表示のない同一の電子機器が、コンベヤーに乗って産業用シュレッダーのローラーへと運ばれていく様子。
イメージ · Blackwood

3. ナイフを手にベッドの脇に立つ人:ハッキングされた側を保証人に任命したのは誰か

すでにウォレットを購入した方に向けたKeystoneの公式な推奨事項を見てみましょう。

  • 10月20日以前にデバイスを受け取り、確認に合格した場合 — そのまま使い続けて構わず、暗号資産を別のウォレットに移す必要はないとされています。
  • 10月20日以降に旧鍵のデバイスを受け取った場合 — サポート(support@keyst.one)が手動で真正性を確認するまで使用しないでください。同社自身が無力さを認めています。そのようなウォレットがサイトの確認に合格しても、偽造品である可能性をもはや排除できないというのです。購入者が自分のウォレットが「旧」鍵か「新」鍵かを具体的にどう見分ければよいのか、The Hacker Newsによれば10月27日時点でKeystoneは説明し忘れています。破られた暗号技術の代わりにサポートが何を使うのかも謎のままです。箱の写真で占いでもするのでしょうか。
  • リコールはありません。誰にも何かを返送するよう求めておらず、「ウォレット交換」や「資金保護」に関するメールや電話はすべて詐欺だとされています。

この救済マニュアル全体が、10月20日という日付に結びついています。自社投稿への返信で、Keystoneの担当者は鍵が漏洩したのは10月20日だと自信たっぷりに断言しています。ところがプレスリリース自体は、10月20日を侵害を発見した日として記しており、攻撃者が最初にシステムへアクセスした日付は控えめに伏せられています。19日に荷物を受け取った人は皆、奇跡的な偶然を信じるよう求められているわけです。ハッカーがまさにその日に侵入し、鍵ごとデータベースを持ち出し、現行犯で捕まったという偶然を。

しかし、根本的な問いはさらに厳しいものです。Keystoneは、何が盗まれ何が盗まれなかったのかを、そもそもどうやって知っているのでしょうか。

今、皆さまの前で専門家を演じているのが誰なのかをご覧ください。「ファームウェアの署名鍵は安全だ」「古いデバイスは影響を受けていない」「1か月後に安全な新ロットを届ける」——こうした呪文はすべて、自社サイトのサードパーティ製プラグインを通じてつい先ほど丸裸にされた会社から発せられています。昨日まで彼らは、自社ハードウェア認証の根幹となる秘密が目の前で持ち出されていることにまったく気づいていませんでした。丸2年間、顧客の住所を消去する自社スクリプトが動いていないことにも気づきませんでした。そして今日、その同じ人たちが真顔で免罪符を差し出し、ハッカーがどのフォルダを覗き、どのフォルダを紳士的に素通りしたのかを保証すると言っているのです。

漏洩を許した者は、もはや保証人ではありません。昨日この侵害を知らなかったのなら、明日の次の侵害をどうやって知るのでしょうか。今まさに予約を集めている「新しい鍵」が、生産ラインから最初の千箱が出てくる前に別の穴から漏れ出さないという保証はどこにあるのでしょうか。

4. 2年にわたる偽りの削除の約束と、何も買っていない1万3千人

破られた鍵は、少なくとも新しいハードウェアで交換できます。しかし、皆さまの自宅住所を予約注文で再発行することはできません。

攻撃者は、Keystoneの公式Shopifyストアから2024〜2026年の顧客記録25,964件を持ち去りました。氏名、電話番号、メールアドレス、詳細な自宅配送先住所、さらに各注文の内容と金額です。それに加えて、氏名・電話番号・住所を含む未決済の下書き注文12,873件も流出しました。つまり、約1万3千人はこの不運なウォレットを一度も買っていないのです。サイトを訪れ、送料を確認するために住所を入力し、気が変わってタブを閉じただけ。それでも、流出した暗号資産保有者リストに載ってしまいました。

しかし、この話の本当のどん底は、これらの記録の大半がそもそもデータベースに存在してはならなかったという点です。Keystoneは配送データを180日後に削除すると顧客に公式に約束していました。人々は半年後には痕跡が消えると信じて、ハードウェアウォレットを自宅住所に注文したのです。ハッカーがデータベースを持ち去った後になって突然、Shopifyの一括削除ツールがずっとエラーを出していたこと、そして社内の誰も一行でも削除されているかを確認すらしていなかったことが判明しました。今、Keystoneはばつが悪そうにお手上げの姿勢を見せ、保存期間を90日に短縮すると約束し、11月3日までに古いアーカイブを消去すると厳かに誓っています。攻撃者がすでにすべてダウンロードした、まさにその後で。

2年間、データを削除していると誓いながら、実際にはハッカーのための貯金箱に貯め込んでいた会社であれば、その言葉に値する信頼はきっかりゼロです。真夜中に目を覚ますと、身近な人がナイフを手にベッドの脇に立っていると想像してみてください。そしてその人が落ち着いてこう言うのです。「心配しないで、ただナイフを持ってここに立っていたかっただけ。もしかしたら一度刺したかったのかもしれないけど、寝返りを打ってまた寝て。この件は把握したし、検討もした。まさにこの件は二度と起こらないから」。住所を180日ではなく90日後に削除し、次のマスターキーはもっと慎重に扱うという今日のKeystoneの約束は、おおよそこのように聞こえます。

流出したデータベースが実際に何を意味するのかは、説明するまでもないでしょう。自宅に確実に価値あるものを置いている人々の、すぐに使える住所録です。しかも氏名、電話番号、部屋番号まで揃っています。電話詐欺師にとっては、実際の注文内容で武装した電話になります。ある購入者はすでに、詐欺師から電話があり本名で呼ばれたとKeystoneのスレッドに書き込んでいます。空き巣のために家を下見する者や「5ドルのレンチ攻撃」の愛好家にとっては、完成されたルートマップです。盗まれたWebAuth鍵で稼ぐには、偽の基板をはんだ付けし、流通網を築く必要があります。流出したShopifyデータベースで稼ぐには、バール1本と電車の切符1枚があれば足ります。

5. 結論:「工場シール」の代償

全体の構図を組み立ててみましょう。購入者には、シードフレーズを自ら生成し、封印された箱の中で送金に署名する「完全エアギャップ」のハードウェアウォレットが販売されます。その箱に貯蓄を預けることを恐れないよう、メーカーはウェブサイトで真贋を確認するよう勧めます。実際には、その確認は倉庫のロット全体で共有される単一の秘密に依存しており、その秘密自体は、ウェブサーバーに取り付けられた穴だらけのサードパーティ製トラッカー経由で手の届く場所に置かれていました。

それだけではありません。その大切な箱を受け取るために、皆さまは半年後に記録を消去するという約束を信じて、姓、電話番号、自宅住所をストアに預けます。削除スクリプトは2年間動かず、誰も気づかず、アーカイブ全体が認証のマスターキーとともに攻撃者のもとへ流れていきました。そして惨事が明るみに出ると、侵害の間ずっと眠っていて、2年間皆さまの住所を溜め込んできたまさにその会社が壇上に上がり、言葉を信じてほしいと言うのです。残りの鍵は無事で、10月20日以前のウォレットは安全で、1か月後には確実に信頼できる新ロットが届く、と。

Keystoneは、自社製品と偽造品をもはや見分けられないという理由だけで、自社デバイス約1万9千台を産業用プレス機に送ります。その過程で、38,837人が正確な自宅住所とともに犯罪者のデータベースに永住権を得ました。メーカーのサイトに表示されるきれいな緑のチェックマークと箱に書かれた「Air-Gapped」の文字が本物のセキュリティの代わりになると今も信じているすべての人にとって、見事な教訓です。