購入したハードウェアウォレットが正常なものか判断する方法
今週は読者様からの質問に回答します。
(購入した)ハードウェアウォレットがcompromizedされてないかどうかってどうやって確認するのが良いのでしょうか?オフィシャルで買えば問題ないと考えて良いのでしょうか
質問者様がおっしゃるとおり、ハードウェアウォレットはセキュリティを意識して買うものなので、届いてからの確認も大事です。自分で一から作ったものでない限り、100%安全という確証は手に入らないかもしれませんが、できる限りのことはしておきたいところです。
今日は購入したハードウェアウォレットが不正でないことを確認するために用意されている様々な方法を解説します。メーカーによって対応している方法・していない方法がありますのでご注意ください。
・購入編
・ハードウェア編
・ファームウェア編
・ソフトウェア編
購入編
今日紹介する方法を使えば世に出回っている不正な(Compromizedな)ハードウェアウォレットのうち多くは検出できると思います。しかし、一番の対策は最初から不正なハードウェアウォレットを掴んでしまう可能性を減らすことです。購入するときの流通経路をしっかり守ることができれば、対策すべき不正は製造業者とその上流によるものに限られるためです。
一般的に、ハードウェアウォレットは製造業者の公式ウェブサイトから購入するのが良いとされています。流通過程でタンパリング(不正なファームウェアのインストールやハードウェアの加工)されているリスクが一番少ないためです。私もこれを推奨します。
もし信用できるカンファレンスなどで製造業者による対面販売が行われていたら、そこで購入するのもありでしょう。

今回の質問とは趣旨が少しずれてしまいますが、ハードウェアウォレット自体以外にも守るべきものがあります。プライバシーです。
例えば、公式サイトから購入したハードウェアウォレットの配送先住所として自宅を指定したり、ビットコインで支払ったりすると、住所やトランザクションの情報がHWWを購入した事実と紐づいて保存されてしまいます。実際にLedger社などで住所を含む顧客名簿が流出したことがありますし、それを元に恐喝や強盗が発生したケースもありました。
匿名性を確保するためには、可能なら配送先住所を職場やバーチャルオフィス、私書箱や局留めにできるならしたほうが良いでしょう。決済手段はできればビットコイン以外が良いのではないでしょうか。ビットコインで買うなら、あまり大きなUTXOを使うのはやめておきましょう。(そのUTXOは価格が10倍になっても小さなUTXOですか?)
項目まとめ
・最初から不正なハードウェアウォレットを掴まないためには、製造業者以外による不正を防ぐため流通経路をしっかり固めるのが一番の対策。
・したがって安全性の観点では、公式サイト、または公式がやっている対面販売で買うのが安心。(本当に公式のものか注意する)
・匿名性の観点では、公式サイトから購入するなら配送先住所に自宅を使うことを避けたい。また、多額のビットコインと紐づかないように気をつける。
ハードウェア編
さて、ハードウェアウォレットが手元に届きました。実際に流通経路でタンパリングされていないか確認しましょう。(もし製造業者かそれ以前の段階で細工されていたら、筐体やパッケージングからは検出できません)
大抵のハードウェアウォレットはパッケージに耐タンパ性を持たせています。例えばシュリンクラップ、開封検知シールなどです。モデルにもよりますが、これらがすべて新品同様であることを確認しましょう。オンラインで他の人が上げている写真などと比べるといいかもしれません。
重要なのは、開封検知シールなどもある程度の知識があればバイパスできてしまう程度のセキュリティなため、この段階は簡単なチェックで良いでしょう。「ぱっと見て違和感がない」くらいで直感に任せましょう。
Coldcardは開封検知バッグに入った状態で配送されますが、ちゃんと封が閉まっていない場合が比較的よくあって返品の原因になりがちらしいです。おそらく糊の材質やオペレーションの問題ですが、疑わしいのでそういう場合は返品交換を求めましょう。
外装が大丈夫そうであれば、ファームウェアやソフトウェアを使って中身の検証に移りましょう。
項目まとめ
・パッケージが破損していたり、事前に開封されていないかを、開封検知シールなども見ながら確認していく。ある程度のノウハウとリソースがあれば偽装できるので気休め程度。外装でわかることはそれくらい。
ファームウェア編
HWWには最初からファームウェアがインストールされている機種と、セットアップ時にインストールする必要がある機種があります。まず自分が買ったHWWがどちらに該当するか、初期設定前はどのような状態にあるべきかを確認して、「インストールされていないはずなのにインストールされている」「初期設定がすでにされている」という状況に該当しないかだけ確かめましょう。この場合はタンパリングが疑われます。
購入したばかりなのにすでにセットアップされていた(シードフレーズがすでに生成されていた)、というようなケースはここに含まれます。
なお、公式のファームウェアがクローズドソースで、そこにバックドアがある場合などはこれだけでは防ぎきれません。オープンソースのファームウェアで自分でビルドできる状態であっても、自分でHWWに書き込むところまでいけるかも別問題ですが気休め程度にはマシかもしれません。(例えばデバイス側でファームウェアの署名検証などがある場合は自分で再現できません)
ファームウェア自体を確かめる
最初から入っているものであれば、ファームウェアを公式サイトなどから取得してきて焼き直すという手は悪くないかもしれません。在庫期間中にファームウェアアップデートが出されていることも少なくないので、せめてバージョンのチェックはしましょう。
ファームウェアを自分でダウンロードしてインストールする場合は署名の検証などを行えると100点です。基本的にPGPを使っているため、署名(.ascファイル)の検証などで方法は調べてください。ここで不正なファームウェアを入れてしまわないのが肝心です。ファームウェアインストール後は、本体側で正しいバージョン情報などが表示されることを確認しましょう。
英語になりますが、Coldcard Paranoid Guideなどが署名検証なども含めて割と網羅的なセットアップ手順を示しています。(具体的な内容はColdcardに限定したものになりますが)
ファームウェアを使って本体を確かめる
ファームウェア自体にハードウェアが改変されていないか確かめる機能が搭載されていることがあります。また、それ以外の機能を使って不正なファームウェアを検出することができる場合もあります。
後者の例で言えば、一番簡単なのは1回お試しのシードを問題のHWW以外のデバイスあるいはアナログな方法で生成して、それを問題のHWWおよび別のHWWで復元し、同じ形式のアドレスが一致するか確かめる方法です。ソフトウェアウォレットと接続し、4つの画面(PC画面×2、HWW画面×2)が一致するか確かめましょう。あくまでアドレスの比較が目的なので、別のHWWがなければ、別のPCやスマホに入れたウォレットでも問題ありません。

ランダムなシードフレーズをサイコロとペンで生成する方法をこちらの記事に書いています
問題のHWW以外で生成したシードを使って正しいアドレスが表示できる場合は、不正な秘密鍵が仕込まれていることはない可能性が高いです。また、不正なファームウェアが時間を書けてマスター秘密鍵を流出させてしまうDark Skippy攻撃のようなものも、最初から不正なファームウェアを入れないように注意することが対策となります。
1つのHWWが不正であっても大丈夫なように、複数のベンダのHWWを組み合わせてマルチシグ運用するという手も比較的ポピュラーです。目的が不正HWW対策だけなら地理分散も必要ありません。ただ、手間と費用と必要な知識レベルはその分増加するので万人向けではないかもしれません。
項目まとめ
・ファームウェアや初回セットアップが「本来の工場出荷状態」より進んでいないか確認する。
・初回はアップデート確認を含めてファームウェアインストールからすると良い
・自分で正しいファームウェアを入れる。この段階で不正なファームウェアをインストールしてしまわないことが重要。
・ファームウェアダウンロード時に、署名検証などができるならする。インストール後は、正しいバージョン情報が本体で表示できているか確認する。
・時間があるなら、お試し用のシードフレーズを信頼できるデバイスまたはアナログな手段で生成して、買ったHWWと別のウォレットに復元し、アドレス一覧を比較する。HWWの画面にも表示して比較する。
ソフトウェア編
ハードウェアウォレットによっては、一緒に使う「公式ソフトウェアウォレット」が存在するものがあります。もちろん、それ以外のソフトウェアウォレットと組み合わせて使うこともできますが、公式ソフトウェアにハードウェアやファームウェアの検証を行う機能が搭載されていることがあります。
ソフトウェアを確かめる
いかなるウォレットアプリも悪意あるソフトウェアではないことを確認してインストール・利用しましょう。
例えばTrezor Suiteにはウェブ版とアプリ版があります。ウェブ版を使うなら、リスクはフィッシングサイトと公式サイトの乗っ取りだと考えられるため、公式サイトのURLであることを慎重に確認した上で、直近で公式SNSなどに乗っ取りを知らせる告知などが出ていないか確認しましょう。
アプリの場合は、Google PlayやApp Store経由の流通も含めて、やはり公式SNSからなりすましや乗っ取りの告知がされていないかだけ確かめてから、公式サイトのリンク経由でダウンロードしましょう。もしサイトから直接ダウンロードする場合は、署名ファイルも合わせてダウンロードして検証できると100点です。Trezorのヘルプサイトや他のソースでやり方を確認しましょう。
なお、使用を始めてからも定期的に公式のSNSをチェックして脆弱性情報やアップデートの情報などを手に入れておくとより安全に使用できるでしょう。以前紹介した、不正なファームウェアを使って長期間かけてシードフレーズを抜く攻撃の対策にもなります。アップデートのタイミングについての記事と合わせてどうぞ。
ソフトウェアを使って本体を確かめる
純正のウォレットソフトウェアを使って本体の真正性を検証する機能があったりします。
例えばTrezor SuiteにはTrezor Safe 3/5の本体に搭載されているセキュアエレメントを使って、実際にそのTrezor Safe 3/5が本物であることを検証する機能があります。接続するたびに本体に入っているファームウェアのバージョンやハッシュ値などを検証する機能もあります。初回セットアップ時のファームウェアインストールに必須であるなど、TrezorはTrezor Suiteの併用でセキュリティ強化を図り、ユーザーの囲い込みも目指していることがわかります。
初回セットアップ以降はファームウェアが勝手に変更されないと想定できるなら、公式アプリ以外のソフトウェアウォレットと併用しても問題ないように思います。誰かにタンパリングされているリスクがあるなら、公式アプリを使用するのも最悪の手段ではありませんが、先述した注文時の個人情報とウォレットの利用状況が紐づくことだけはできる限り避けたいところです。
もちろん、使用するハードウェアウォレットに付属する公式ソフトウェアウォレットがなければこの手順はありません。それでも、ウェブサイトなどに行くと様々な方法でHWWを検証する方法などについての記述があったりするので、ぜひ説明書を読むくらいの気持ちでFAQページなどをご覧ください。
項目まとめ
・ウェブ版、アプリ版ともにフィッシングサイトに引っかかっていないこと、公式ウェブサイトが乗っ取られていないことを確認(できる限り)してから、公式ウェブサイトから使用・ダウンロードする。
・公式ソフトウェアにHWWのファームウェアやセキュアエレメントを検証する機能があれば使ってみる。
・それ以外の目的で必ずしも公式のウォレットソフトと併用しなくてもよい。
それぞれの段階でけっこうたくさんの手法があるため、手間と感じられるかもしれません。しかし、多くの場合、公式のセットアップガイドにこれらの手順の多くが含まれているので、セキュリティを改善する目的があってやっていることを意識しながらセットアップに挑んでください。(強いて言えば、テスト用のシードを用意して他のウォレットと比較するようなやり方は公式のセットアップガイドには書いていないでしょう)
フィッシングサイト対策などを含めて、ビットコインを扱う人は基本的なソフトウェアセキュリティの知識は必須といえます。これに関しては先月原さんが投稿した質問回答記事をご覧ください。
製造業者より上流のサプライヤーなどが悪意ある部品(模造半導体など)を混入させてそれが気づかれないようなリスクなども含めると、DIYで汎用的な部品を自分で調達してHWWを作ったほうが信用できる!として、ハードウェアウォレットを自作する人たちもいます。これについては片山さんの記事でどうぞ。

長くなってしまいましたが、今日の記事はハードウェアウォレットが不正に改造(設計)されていないか確かめる方法を色々紹介しました。次にハードウェアウォレットを購入されたときにセットアップ手順を見て思い出していただければ幸いです。
もしどこかで問題に引っかかった場合は、ぜひ製造元に問い合わせてください。その際も、なりすましアカウントなどに連絡を取ってしまわないようにご注意ください。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション