セキュアエレメントは「唯一の信頼ポイント」ではない理由
ウォレットの多くの侵害は、セキュアエレメントの「外側」で発生します。
このセキュアエレメント解説シリーズの第1回では、セキュアエレメントとは何かを説明しました。第2回では、どのような攻撃者を防げるのか、また防げないのかを解説しました。今回の記事では、さらに一歩踏み込んで、「チップ自体が完全に安全でも、それだけで十分なのか?」という視点から考えます。
The short answer is no. And the reason has nothing to do with the chip's engineering. Most successful attacks against hardware wallet users do not break the secure element. They don't need to. They exploit the layers around it, the seed phrase written on a piece of paper, the firmware that tells the chip what to do, and the PIN that controls access to the device. The secure element can be technically impenetrable while the wallet it lives inside is thoroughly compromised.
これが「ウォレットのセキュリティはチップ単体ではなく、システム全体で守るもの」という意味です。セキュアエレメントはその中核となる最も強固な防御ですが、それ自体はシステムの一部にすぎません。セキュアエレメントだけがすべてだと考えるのは、攻撃者にとって都合の良い誤解です。
中世の城は「天守」だけで成り立っていたわけではありません。堀、外壁、内壁、門、そして中心の天守といった多層的な防御システムがありました。それぞれの層が異なる目的と役割を持ち、異なる攻撃者を食い止めていました。ひとつの層が突破されても、すぐに陥落するわけではなく、次の防御へと戦いが続きます。天守がどれだけ強固でも、外壁が放棄されていれば、その城は決して「守られている」とは言えません。
レイヤー1:ファームウェアの完全性とセキュアブート
セキュアエレメントは秘密鍵を保管・保護します。しかし、エレメント自体が単独で何をするかを決めるわけではありません。命令はファームウェア、つまりハードウェアウォレットのメインプロセッサ上で動作するプログラムから与えられます。
ここで重要な疑問が生じます。「セキュアエレメントに命令を出しているファームウェアが、本当にメーカー純正で改ざんされていないと、どうやって確認できるのか?」
ファームウェアの完全性とは
ファームウェアの完全性とは、デバイス上で動作しているコードが、メーカーが出荷したままの改ざんされていない本物である、という保証です。ハードウェアウォレットでは、ファームウェアがデバイスの挙動やトランザクションの作成・署名確認など、ユーザーが目にする全てを制御します。
もし攻撃者がファームウェアを差し替えたり改変できれば、大きなリスクとなります。悪意あるファームウェアは、画面上に本来とは異なるアドレスを表示したり、トランザクション金額を密かに改ざんしたり、UIを操作してPINを盗み出したり、特定の設計ではセキュアエレメントの防御を回避しやすい状況を作り出すこともできます。これらの攻撃はセキュアエレメント自体を破る必要はありません。送信・表示される内容を制御することで成立します。
セキュアブート
ファームウェア改ざんへの主な技術的対策が「セキュアブート」です。これは、ファームウェアの暗号署名を検証し、正規のものだけを実行可能にする仕組みです。メーカーは秘密鍵で各ファームウェアを署名し、デバイス起動時に公開鍵で署名の正当性を確認します。署名が一致しなければ(改ざん・差し替え・破損など)、デバイスは起動を拒否します。
これは有効な防御ですが、万能ではありません。セキュアブートは「メーカー署名済みのファームウェアのみが動作する」ことを保証しますが、「メーカーの署名基盤が絶対に侵害されない」「ファームウェア自体に脆弱性が一切ない」「今後のアップデートで新たなリスクが生じない」ことまでは保証しません。これらは残留リスクであり、信頼できるメーカーなら通常は非常に低いものです。
この層でカバーできないこと
セキュアブートは、正規かつ署名済みのファームウェアに含まれる脆弱性までは防げません。たとえ意図せず導入されたバグでも、悪用される可能性があります。そのため、ファームウェアは常に最新に保ち、既知の脆弱性を修正していく「アップデート管理」が重要です。ただし、アップデートごとに新たな信頼判断も必要です。
信頼できるハードウェアウォレットメーカーは、ファームウェアの変更履歴を公開し、ファームウェアを不変化(イミュータブル化)したり、独立したレビューを実施したり、インストール前にユーザー自身がハッシュ値を検証できる機能を提供しています。
レイヤー2:PINとアクセス制御
ファームウェアが正規でセキュアエレメントが無事であれば、次の防御は「誰がこのデバイスを使えるか」というアクセス制御です。
多くのハードウェアウォレットは、PIN(数字コード)の入力を求めます。PINは、デバイスを物理的に手に入れた第三者が勝手に操作するのを防ぐ仕組みです。正しいPINがなければ、トランザクションの署名やアドレス表示、各種機能の利用はできません。
セキュアエレメントとPIN保護の仕組み
PINの検証は、デバイスのメインプロセッサではなく、セキュアエレメント内部で行われます。これは重要な設計上のポイントです。もしPINチェックがメインプロセッサ上のソフトウェアで行われていた場合、攻撃者が任意のコードを実行できればバイパスされてしまいます。セキュアエレメント内部でPINチェックが行われることで、秘密鍵の保管と同じ耐タンパー性の恩恵を受けます。
多くの認証済みハードウェアウォレットは、PIN試行回数制限もセキュアエレメント内で管理しています。通常3〜10回の誤入力で、デバイスが自動消去・永久ロック、あるいはTangemの場合はセキュリティ遅延を増加させます。これによりPINの総当たり攻撃はほぼ不可能です。たとえば4桁PINでも10回しか試せなければ、偶然当てるのは現実的に不可能です。
PIN保護が強い場合
置き引きや盗難などでデバイスだけ奪われても、PINを知られなければ、PIN検証と試行回数制限の組み合わせが極めて有効です。攻撃者はロックされたデバイスしか扱えず、コードを推測する前に自動消去されます。まさに門が役割を果たしている状態です。
PIN保護が弱い場合
PINはデバイスの不正使用を防ぎますが、シードフレーズ自体は守れません。これは城の異なる2つの層で、それぞれ別のものを守っています。
もしデバイスと書き留めたシードフレーズが同時に盗まれた場合、PINは無意味です。デバイスがなくても、シードフレーズさえあれば互換性のあるソフトウェアウォレットで資産を復元できます。門を迂回されてしまうイメージです。
また、PINは見られないことが前提です。公共の場でPINを入力しカメラに映ったり、周囲に見られたりすれば、セキュアエレメントがどれほど強固でもPINは危険にさらされます。
さらに、PINは不正利用には有効ですが、強要による正規利用(脅迫されてPINを教えさせられる等)には無力です。これは設計上の欠陥ではなく、技術的なセキュリティの範囲外です。
レイヤー3:シードフレーズの保管
シードフレーズ(12語または24語)は、ハードウェアウォレットのセットアップ時に生成される、人が読める秘密鍵の表現です。これはリカバリ用の仕組みであり、デバイスを紛失・破損しても、新しいデバイスでウォレットを復元できます。各単語がチェックポイントとなり、全てを組み合わせてセキュアエレメントが守っていた鍵を再構築します。
この仕組みは不可欠である一方、ほとんどのハードウェアウォレットにおける最大の構造的な脆弱性でもあります。
なぜシードフレーズが「城」の比喩を壊すのか
ここまで説明したセキュアブート、PIN保護、セキュアエレメントの耐タンパー性は、「秘密鍵はチップ内にのみ存在し、そこからしかアクセスできない」という前提に基づいています。
しかし、シードフレーズはこの前提を覆します。シードフレーズは秘密鍵のコピーであり、紙や金属プレート、自宅など、チップ外の複数の場所に平文で存在し得ます。誰かがそれを入手すれば、ハードウェアウォレットに触れずとも秘密鍵を復元でき、チップの防御は一瞬で無意味となります。
これは設計上の欠陥ではなく、「デバイス紛失=資産消失」とならないための意図的なトレードオフです。リカバリの仕組みは、同時にリカバリ脆弱性も生み出します。重要なのは、そのリスクをどう管理するかです。
シードフレーズが直面する脅威
シードフレーズは、ハードウェアチップでは対処できない以下のような脅威にさらされます:
物理的な盗難:紙に書かれたシードフレーズが自宅に保管されていて、空き巣に入られれば、見つけた人は誰でも利用できます。技術知識がなくても、互換性のあるウォレットアプリさえあれば資産にアクセス可能です。
火災・水害:ハードウェアウォレット本体は買い替え可能ですが、シードフレーズが消失・破損した場合は復元手段がなく、資産は永久に失われます。
うっかりした漏洩:シードフレーズを写真に撮ったり、クラウドのメモアプリに保存したり、デジタルで入力した場合、リモートから盗まれるリスクが生じます。
相続・遺産管理:信頼できる人がアクセスできるリカバリ計画がなければ、所有者が死亡・判断不能になった際に資産が永久に取り出せなくなります。
シードフレーズ保管の強化方法
基本は、耐久性のある素材(最低でも紙、より安全を求めるなら専用の金属プレート)に物理的にバックアップし、金庫や貸金庫など本人の身元と結びつきにくい安全な場所に保管することです。
さらにリスクを減らすため、いくつかのアーキテクチャ的アプローチがあります:
Passphrase protection (25th word):多くのシードフレーズ規格では、任意のパスフレーズ(25語目)を追加して鍵を導出できます。シードフレーズだけを盗まれても、パスフレーズがなければ資産にアクセスできません。パスフレーズは記憶するか、別途安全に保管する必要があり、追加の秘密情報となります。
Shamir's Secret Sharing:シードフレーズを複数の分割片に暗号的に分け、単独では無意味にし、一定数(例:5分割中3つ)を集めて初めて復元できる方式です。これにより地理的・管理者間でリスクを分散できます。
Multi-signature wallets:単一のシードフレーズではなく、複数の独立した鍵で署名が必要なマルチシグ構成にすることで、1つの鍵やシードフレーズが漏洩しても資産は守られます。これは単なるシードフレーズの強化ではなく、脅威モデル自体を変えるものです。
技術だけでは完全に解決できないこと
シードフレーズのセキュリティは最終的に「どこに保管するか」「誰が知っているか」「どう管理・更新するか」といった人間の判断に依存します。どんなチップでも、紙の置き場所まで良識を組み込むことはできません。ここが「城」の中で最も人に依存する層です。
システム全体としての視点
この3層構造を「城」の比喩で整理すると、ハードウェアウォレットのセキュリティがどのように機能し、どこで破綻するのかが見えてきます。
The secure element is the keep: 実際に鍵が存在し、ほとんどの攻撃者から直接的な攻撃を防ぐ、最も守りの堅いポイントです。突破が最も困難な層となります。
Firmware integrity and secure boot are the outer walls: どんなコードが天守に近づけるかを制御し、チップが受け取る命令が正規であることを保証します。外壁のない城は、天守がいくら強くても守られていません。
The PIN and access controls are the gatehouse: 不正利用者を門で止める、人が操作するチェックポイントです。偶発的な侵入には有効ですが、標的型攻撃には限界があります。
The seed phrase is the secret passage: 正当な復元手段である一方、悪意ある第三者の手に渡ればすべての防御を迂回できてしまう抜け道です。その安全性は、どこに保管し誰が知っているかにほぼ全てがかかっています。
この構造の実際的な帰結は、「最も強い層」ではなく「最も弱い層」がシステム全体の安全性を決定する、ということです。たとえば、セキュアエレメントがEAL6+認証でも、シードフレーズをスマホの平文メモアプリに保存していれば、実質的な防御力はそのメモアプリの強度に依存します。
ウォレットのセキュリティはシステム全体で成り立っています。セキュアエレメントはその中で最も重要な構成要素ですが、「セキュアエレメントが強固=ウォレットが安全」とは限りません。両者は別の話です。
セキュアエレメントは、その中心的な役割を果たしています。秘密鍵をリモート・物理両面から守るという最も難しい課題を解決します。しかし、それだけでなく、ファームウェア・アクセス制御・バックアップといった広いアーキテクチャ全体の中でこそ意味を持ちます。
システム全体を理解することは、ハードウェアウォレットやセキュアエレメントを否定するものではありません。むしろ、各層の役割と限界を理解し、システム全体で安全性を高めることの重要性を示しています。