セキュアエレメントに対するサイドチャネル解析とは
電磁サイドチャネル攻撃と、認証済みハードウェアの限界について公的な研究が示すもの。
多くのハードウェアセキュリティの脆弱性は、チップ自体やファームウェア、サプライチェーン、関連ソフトウェア、ユーザーの操作レベルで発生します。記録されている多くの事例では、Secure Element(セキュアエレメント)は破られるのではなく、バイパスされる形で回避されています。本シリーズの前回記事では、この点を詳しく解説しました。
しかし、チップ自体が物理的に突破された事例も存在します。実際にセキュアエレメントに対する直接的な物理攻撃が記録されており、これらの攻撃はチップ上の暗号処理を狙い、秘密鍵を抽出し、チップが本来備えているハードウェア防御をすり抜けて成功しています。
この記事では、電磁サイドチャネル解析に関する最も重要な記録事例を紹介します。
電磁サイドチャネル攻撃とは?
電磁サイドチャネル攻撃とは、チップが暗号処理を行う際に発生する電磁波を観測し、使用されている秘密鍵を推測する攻撃手法です。
この攻撃は、暗号処理を行う物理チップが、消費電力・タイミングの変化・電磁波放射など、観測可能な物理現象を通じて、処理中の秘密値に関連する情報を漏洩するという特性を利用します。
理想的な定時間暗号アルゴリズムでは、どの入力データでもすべての処理が同じ時間・同じ電力で行われます。これはタイミングや電力のサイドチャネル攻撃に対する標準的な防御策です。メーカーは信号を均一化し、観測可能な差が出ないように設計する必要があります。
しかし、実際に完全な定時間動作を暗号実装全体で実現するのは困難であり、わずかなズレが生じやすく、検出も難しいという課題があります。
SEに対するサイドチャネル解析の事例
事例1:NXP A700X / Google Titan Security Key
ELECTROMAGNETIC SIDE-CHANNEL · NinjaLab · USENIX Security 2021 · CVE-2021-3011
NXP A700Xは、NXP SemiconductorsのP5xファミリーに属するセキュアエレメントで、銀行のICカードや身分証明書、ハードウェア認証トークンなどに使用されるセキュアマイコンです。A700Xは、Googleのハードウェア2要素認証トークンであるGoogle Titan Security Keyにも搭載されています。また、YubicoのYubiKey NEOやFeitianの認証トークンにも使用されています。
このチップは、デバイス登録時にECDSA秘密鍵を生成・保存し、その鍵で認証チャレンジの署名を行います。FIDO U2Fプロトコルは秘密鍵がデバイス外に出ないよう設計されており、正規のインターフェースから鍵を抽出することはできません。
攻撃の実行方法
NXP ECDSA実装のソースコードがない中で、研究者らはまずNXP J3D081という、A700Xと同じ暗号ライブラリを使うオープンソースJavaCardプラットフォームを利用しました。
J3D081上でアルゴリズム構造をリバースエンジニアリングし、A700Xチップの脆弱な演算箇所を特定するための参考データを得ました。
物理的な準備:ホットエアガンとメスを使いTitanのプラスチックケースを開封し、NXP A700Xを露出させます。EMプローブをチップ表面近くに配置。恒久的な改造は不要なため、デバイスはそのまま動作可能です。
データ収集:認証チャレンジをTitanに送信し、約6,000回のECDSA署名処理を発生させてEM波形を取得。全収集は約6時間かかりました。
鍵の復元:EM波形をオフラインで格子ベースの鍵復元アルゴリズムで解析し、ECDSA秘密鍵の抽出に成功。その後、復元した鍵を使い、物理Titanと同じ認証応答を返すソフトウェアクローンを作成できました。
使用機材:Langer近接EMプローブ、Thorlabs三軸マニピュレーター、Pico Technology PicoScopeオシロスコープ。総額約13,000ドル。
物理アクセス要件:デバイスを数時間保持し、Titanのケースを開封する必要があります(改ざん痕が残る)。デバイス自体はその後も動作し、被害者に返却可能です。
この攻撃が示すもの
NXP A700Xへの攻撃は、抽出防止設計のチップから秘密鍵を直接抽出することに成功した事例です。FIDO U2Fプロトコルの「秘密鍵がデバイス外に出ない」という保証は、チップの物理実装から漏洩する情報を読み取ることで破られました。
NXPのP5xファミリーは2015年にCC認証を取得していますが、この攻撃は現行ハードウェアへの直接的な影響は限定的です。ただし、CC認証が見逃しうるリスクを示す上で重要な事例です。
事例2:Infineon SLE78 / EUCLEAK(YubiKey 5シリーズ)
ELECTROMAGNETIC SIDE-CHANNEL · NinjaLab · CHES 2024 · CVE-2024-45678
Infineon SLE78は、世界中で最も広く使われているセキュアエレメントファミリーのひとつです。YubiKey 5シリーズ(世界で最も普及しているハードウェアセキュリティキー)に内蔵されており、以下のような幅広いセキュリティ分野で利用されています:
- 電子パスポート
- 銀行ICカード
- 自動車用キーシステム
- IoT認証インフラ
- 暗号資産ハードウェアウォレット
SLE78はCC EAL6+認証(商用で最も高い保証レベルのひとつ)を取得し、さまざまな製品構成で約80回のCC評価をクリアしています。
Infineonの暗号ライブラリは独自仕様で、ファームウェアに組み込まれており公開されていません。
脆弱性の発見:オープンプラットフォームアプローチ
NinjaLabのThomas Roche氏は、2021年のGoogle Titan研究と同じ手法を用い、まずFeitian(同じInfineon SLE78チップを使い、YubiKey 5と同じ暗号ライブラリを搭載したオープンなプログラマブルプラットフォーム)を調査しました。
オープンなFeitianプラットフォームで脆弱性を特定した後、実際のYubiKey 5Ciに移行して検証を行いました。
物理的な準備:YubiKeyの外装を開封し、EMプローブをSLE78表面近くに設置。デバイスはそのまま動作します。
データ収集:ECDSA署名処理中にEM波形を取得(YubiKeyで認証するたびに発生する操作)。
鍵の復元:各波形でモジュラー逆数計算時のEM放射を捉え、格子ベースのアルゴリズムでECDSA秘密鍵を復元。
機材コスト:ノートPCを含めて約1万ユーロ。
物理アクセス時間:必要なEMデータの取得には数分の物理アクセスで十分。オフライン解析には追加時間がかかりますが、追加の物理アクセスは不要です。
この研究が示すもの
この手法により、YubiKeyのクローンが作成可能となります。高度な攻撃者が一時的にデバイスへ物理アクセスし、プローブとオフライン計算環境を用意すれば、登録済みアカウント全てに対して有効な認証応答を生成できるソフトウェアコピーを作成できます。
評価手法によっては、十分に高感度なEM測定機器が含まれていなかった可能性や、CC EAL評価者が署名ルーチン内の異なる数学的処理に着目していた可能性があります。
EUCLEAKは、CC EAL6+認証が「既知の手法」と定義された脅威モデルに対して評価されたことを示す、最も明確な公的証拠です。
両サイドチャネル事例が示すもの
NXP A700X攻撃とEUCLEAKは、セキュアエレメントやその周辺チップに対する直接的な物理攻撃の記録として残されています。異なるメーカーを同じ手法で狙い、いずれも成功しています。
チップ | 手法 | 年 | 主な発見 |
|---|---|---|---|
NXP P5xファミリー(CC EAL4+) | EMサイドチャネル(SCA) | 2021 | ECDSA秘密鍵を抽出し、FIDOトークンを検知されずにクローン化。NXP ECC暗号ライブラリの非定時間スカラー乗算に起因。 |
Infineon SLE78(CC EAL6+) | EMサイドチャネル(タイミング/EEA) | 2024 | EAL6+認証チップからECDSA秘密鍵を抽出。約14年・80回のCC評価でも脆弱性は検知されず。 |
セキュアエレメント設計の根本課題は、正しい暗号アルゴリズムだけでは不十分という点です。実装も定時間化・シールド・サイドチャネル耐性が求められます。
まとめ
本記事で紹介した2つの攻撃はいずれも、攻撃者がターゲットデバイスを数分〜数時間物理的に保持し、専門的かつ高価な実験機材(最低1万〜1万3千ユーロ相当)と電磁サイドチャネル解析・格子暗号解析の高度な知識を必要とします。いずれもリモートで実行できず、デバイス自体に損傷は残りません。
一般的なハードウェアウォレットユーザーにとって、現実的な脅威は国家機関のラボやLangerプローブではなく、フィッシング・ソーシャルエンジニアリング・悪意あるソフトウェア・シードフレーズの管理不備です。
主な参考文献
事例1 — NXP A700X / Google Titan:
- 論文全文:ninjalab.io/a-side-journey-to-titan/(英語)、eprint.iacr.org/2021/028(英語)
- USENIX Security 2021発表:usenix.org/conference/usenixsecurity21/presentation/roche
- CVE-2021-3011
事例2 — Infineon SLE78 / EUCLEAK:
- 論文・公式研究ページ:ninjalab.io/eucleak/(英語)
- Cryptology ePrint Archive:eprint.iacr.org/2024/1380(英語)
- Yubicoセキュリティアドバイザリ:YSA-2024-03
- CVE-2024-45678 — NVD/NIST
- CHES 2024発表:hardwear.io/netherlands-2024/presentation/eucleak.pdf