電磁フォールトインジェクション(EMFI)攻撃入門

電磁フォールトインジェクション(EMFI)攻撃入門

電磁フォールトインジェクション(EMFI)は、短い電磁パルスを適用することで集積回路を乱す技術です。本概要では、EMFIの基本、必要なセットアップ、および現代システムの脆弱性を発見するための利用方法について説明します。
# フォルトインジェクション攻撃入門:電磁フォルトインジェクション(EMFI)を解き明かす

**目次**

- [フォルトインジェクション攻撃への導入](#フォルトインジェクション攻撃への導入)
- [電磁フォルトインジェクション(EMFI)とは何か?](#電磁フォルトインジェクションemfiとは何か)
- [EMFIの動作原理:理論から実践へ](#emfiの動作原理理論から実践へ)
  - [電磁干渉の理解](#電磁干渉の理解)
  - [EMFIが集積回路(IC)に与える影響](#emfiが集積回路icに与える影響)
- [コンパクトなEMFIセットアップ:構成および組み立て](#コンパクトなemfiセットアップ構成および組み立て)
  - [必要な機器](#必要な機器)
  - [一般的なセットアップ図](#一般的なセットアップ図)
  - [安全性の考慮事項](#安全性の考慮事項)
- [現実世界でのEMFI攻撃シナリオ](#現実世界でのemfi攻撃シナリオ)
  - [ケーススタディ1: 暗号キーの抽出](#ケーススタディ1-暗号キーの抽出)
  - [ケーススタディ2: セキュアマイクロコントローラへのフォルト攻撃](#ケーススタディ2-セキュアマイクロコントローラへのフォルト攻撃)
  - [ケーススタディ3: 組込みSoCでのEMFI](#ケーススタディ3-組込みsocでのemfi)
- [EMFIを用いた脆弱性の検出](#emfiを用いた脆弱性の検出)
  - [フォルト応答のスキャン](#フォルト応答のスキャン)
  - [PythonとBashを使ったフォルトインジェクションテストの自動化](#pythonとbashを使ったフォルトインジェクションテストの自動化)
- [フォルトインジェクション攻撃の軽減策](#フォルトインジェクション攻撃の軽減策)
- [知識を深めるためのリソースとコミュニティ](#知識を深めるためのリソースとコミュニティ)
- [結論](#結論)
- [参考文献](#参考文献)

---

## フォルトインジェクション攻撃への導入

フォルトインジェクション攻撃は、ハードウェア攻撃の一種であり、攻撃者が**意図的に装置の動作にエラー(フォルト)を誘発して**、セキュリティチェックを回避し、機密データを抽出し、システムの信頼性を低下させることを目的としています。この技術は、スマートカードからIoTデバイスに至るまで、組込みシステム上で動作する安全なアプリケーションの普及に伴って特に関連性があります。

フォルトインジェクションは以下のさまざまな方法で実施できます:
- 電圧/クロックグリッチング
- レーザフォルトインジェクション
- **電磁フォルトインジェクション(EMFI)**
- 温度/環境操作

これらの中で、**EMFI**は柔軟で非接触の技術として際立っており、短いパルスの電磁(EM)エネルギーを利用してシリコンの特定の領域を乱し、一時的なフォルトを引き起こします。本稿は、サイバーセキュリティ研究および実際の攻撃で使用されるEMFIに焦点を当てています。

---

## 電磁フォルトインジェクション(EMFI)とは何か?

**電磁フォルトインジェクション(EMFI)** は、制御された電磁エネルギーのバーストを集積回路(IC)やマイクロコントローラの特定部分に向ける高度な技術です。その意図は、**ビットの反転やタイミング違反、命令スキップなどのフォルトを誘発して、装置の正しい動作を乱すこと**です。

### 主な特徴:

- **非侵襲的**: パッケージを開く必要も、内部シリコンに物理的に接触する必要もありません。
- **精密**: チップ内の特定の機能単位(たとえば、CPUコアやI/O)をターゲットにできます。
- **再現可能**: 適切なセットアップにより、一貫した再現性のあるフォルトインジェクションが可能になります。
- **強力**: セキュアブートや暗号エンジン、タンパー抵抗などのセキュリティ機能を持つチップに対して特に強力です。

### 概念の概要

![EMFI Principle Diagram](https://i.imgur.com/LB3vYoG.png)
*図: 電磁フォルトインジェクションの原理(簡略化されています)*

EMFIの技術は一般に:
- EMフィールドを集中させるための**コイルベースのプローブ**(自作または市販)を使用します。
- ナノ秒単位の高電圧パルスを生成する**EMパルスジェネレータ**を使用します。
- システムクロックと同期して、センシティブな計算フェーズ中に意味のあるフォルトを引き起こす可能性を最大化します。

**出典:** [arXiv:2509.18341v1](https://arxiv.org/html/2509.18341v1), [Ledger Blog on Compact EMFI](https://www.ledger.com/blog/compact-em)

---

## EMFIの動作原理:理論から実践へ

### 電磁干渉の理解

**電磁干渉(EMI)** は、外部の電磁場が電子回路の通常の動作を攪乱する現象です。フォルトインジェクションの文脈では、攻撃は集中的で意図的かつ高度に制御されたものです。

**EMFIの物理学:**
- マクスウェル方程式は、EMフィールドがどのように伝播して材料と相互作用するかを決定します。
- 速く高エネルギーの過渡現象が、被害回路に意図しない電流を誘発します。
- デジタルシステムでは、これらは正確な瞬間にクリティカルなゲートやメモリセルに電圧(または電流)サージを引き起こし、フォルトを引き起こします。

### EMFIが集積回路(IC)に与える影響

デバイスに慎重に作成されたEMパルスを発射すると、いくつか攻撃効果が得られます:
- **タイミング違反**:データが正しくラッチされず、または制御シーケンスが順番を外れます。
- **命令スキップ**:CPUが誤って命令をスキップします。
- **ビットフリップ**:誘発された電流によりメモリやレジスタのビットが反転します。
- **セキュリティのバイパス**:セキュリティチェックや条件分岐が迂回される可能性があります。

**例:**  
マイクロコントローラが正しいパスワードかどうかをチェックするコードを実行しています。EMFI攻撃はこのチェックの結果を反転させ、認証を回避し、不正アクセスを許可する可能性があります。

---

## コンパクトなEMFIセットアップ:構成および組み立て

攻撃を開始する前に、セキュリティラボでの典型的なEMFIセットアップがどのように見えるかを理解します。

### 必要な機器

1. **パルスジェネレータ** — 高速で正確な高電圧パルスを生成(しばしば数百ボルトに達し、数ナノ秒までの幅)。
2. **EMインジェクションプローブ** — 通常、ターゲットチップの直上に配置される小型コイル(ループプローブ)。
3. **オシロスコープ/ロジックアナライザ** — システムの応答を監視し、タイミング校正を支援。
4. **トリガおよび同期装置** — 正確なタイミングでフォルトを注入。
5. **ターゲットデバイス** — 組み込みシステム、マイクロコントローラ、またはSoC
6. **位置決めシステム** — 精密なプローブ配置用XYZミクロポジショナー。
7. **シールドおよび安全装置** — 対象外の干渉とけがを防止。

**注意:** 一部の高度なセットアップは、モーター駆動のステージ、コンピュータ制御の遅延、さらには機械学習を使用してプロセスを自動化します。

### 一般的なセットアップ図

```plaintext
+---------------------+    Coaxial Cable     +-----------------------+
| Pulse Generator     |--------------------->| EM Probe (loop/coil)  |
+---------------------+                      +-----------------------+
                                                        |
                                                        V
                                                 +-----------+
                                                 |   Target  |
                                                 |   Device  |
                                                 +-----------+
                                                        |
                                                        v
      +---------+     Trigger/Sync      +-------------+   USB/Serial   +-----------+
      | Host PC |<--------------------->| Oscilloscope|--------------->| Host PC   |
      +---------+                      +-------------+                +-----------+
    (Control, Timing)               (Monitor Response)

安全性の考慮事項

  • 高電圧: パルスジェネレータは危険な電圧を提供する可能性があります。細心の注意を払って取り扱ってください。
  • EMフィールド: 攻撃を局所化し、放射を最小限にするためにシールドが必要です。
  • デバイスの損傷: 繰り返される高エネルギーのパルスはターゲットICを永久に損傷する可能性があります。

現実世界でのEMFI攻撃シナリオ

ケーススタディ1: 暗号キーの抽出

攻撃コンセプト

多くのデバイスは内部に保存された暗号キー(例:AES、RSAキー)に頼っています。暗号計算(RSAの掛け算など)の実行中に誤りを生じさせることにより、攻撃者は誤った出力を引き出し、そこから秘密キーを数学的に復元することができます。

例
  • ターゲット: RSA署名計算を行うスマートカード。
  • 手順: 秘密鍵計算中にEMFIを適用し、重要なビットを選択的にフォルトさせる。
  • 結果: 複数の誤った出力と元の暗号文を使用して、差分故障解析と呼ばれる技術を使って鍵を再構築する。
差分故障解析の流れ
flowchart TD
    A[デバイスが暗号アルゴリズムを実行] --> B[EMFIが計算にフォルトを誘発]
    B --> C[出力がキャプチャされる(誤った暗号/署名)]
    C --> D[攻撃者が既知の方程式と複数の誤った出力を使用]
    D --> E[代数技術によるキー回復]

ケーススタディ2: セキュアマイクロコントローラへのフォルト攻撃

支払いカード、TPM、認証トークンで使用される現代のマイクロコントローラはセキュリティ機能を備えていますが、EMFIはそれらを迂回して秘密をさらけ出すことができます。

例:認証チェックのスキップ

たとえば、ターゲットコードセグメントがパスワードチェックを行うとしましょう:

if (input_hash == stored_hash) {
    grant_access();
}

比較中にEMFIパルスをタイミング良く送ることで、CPUの制御フローレジスタやフラグを破壊し、条件をスキップし誤ってアクセスが許可されるようにします。

デモンストレーション: 制御フロー操作の可視化

サイクル 操作 レジスタ状態 EMFI効果 出力
T1 input_hashをロード R1にinput_hash - -
T2 input_hashとstoredの比較 R1, R2 EMパルス 誤った比較結果
T3 等しい場合分岐 条件チェック スキップ アクセス許可!

ケーススタディ3: 組込みSoCでのEMFI

組込みシステム(例:ARM Cortex-M、A53)では、EMFIは広範囲な攻撃面を提供します:

  • ブートROM
  • セキュアエンクレーブ
  • 暗号化を施しながらのコード実行
  • 実行時データ認証
例:セキュアブートへの攻撃

SoCがブート時にファームウェアの整合性をチェックする場合、攻撃者はEMFIパルスをCRC検証ルーチンに同期させ、その検証をスキップまたは誤計算させます。デバイスは攻撃者が改変した(悪意のある)ファームウェアを起動します。

現実世界の参考:
Creach Labs Seminarにおいて、SoC上で動作するTrusted Execution EnvironmentがEMFIでどのように妥協されうるかが示されました。


EMFIを用いた脆弱性の検出

セキュリティ研究者はしばしばEMFIを使用して新しいデバイスの脆弱性を特徴づける用途に使います。このプロセスには、系統的なプロービング、フォルトの注入、およびデバイスの応答の観察が含まれます。

フォルト応答のスキャン

ステップバイステッププロセス:
  1. センシティブコードを特定:ターゲットはどこになるべき(例:パスワード比較、暗号ルーチン)?
  2. パルスの同期:GPIO、シリアル出力、デバッグラインを使用して正確なタイミングを確保。
  3. パラメータのバリエーション:パルス幅、振幅、タイミングオフセット、およびプローブ位置を探索。
  4. アウトプットの収集:デバイス応答、誤った暗号文、またはデバッグログを保存して分析。
  5. フォルトを分類:スクリプトを使用して出力を解析し、フォルトの種類(スキップされた命令、ビットフリップ、全体的なデバイスリセットなど)で分類。
スキャンスクリプトの例(Bash + Python):

デバイスがUARTを介して診断情報を出力し、フォルト分類を自動化したいと仮定します。

Bash: フォルトスキャンを起動し、各インジェクションのためのシリアルログをキャプチャ:

for delay in $(seq 0 100 5000); do
    echo "Injecting at delay $delay ns"
    ./trigger_pulsegen --delay $delay --width 10 --voltage 200
    cat /dev/ttyUSB0 > log_${delay}.txt &
    sleep 0.5
    pkill -f "cat /dev/ttyUSB0"
done

Python: ログのフォルトパターンを解析(例:'FAULT DETECTED'を探す):

import glob

for logfile in glob.glob("log_*.txt"):
    with open(logfile) as f:
        content = f.read()
        if "FAULT DETECTED" in content:
            print(f"{logfile}: Fault observed")
        elif "RESET" in content:
            print(f"{logfile}: Device reset detected")
        else:
            print(f"{logfile}: No fault")

PythonとBashを使ったフォルトインジェクションテストの自動化

より大規模な研究では、すべての機器をソフトウェア自動化と統合します:

  • プローブ位置の自動化(モーターを使って)
  • プログラム的にパルスパラメータを制御する
  • リアルタイムなデータ収集と処理
  • 観察結果に基づく適応型ターゲティング

シンプルなPython自動化の例:

あなたのパルスジェネレータとオシロスコープのためのAPIがあると仮定します:

import pulsegen
import oscilloscope

# デバイス接続
pulse = pulsegen.connect("COM4")
scope = oscilloscope.connect("USB0::0x1AB1::0x0588::DS1ET141904883")

delays = range(1000, 5000, 200)  # in ns

for d in delays:
    pulse.setup(delay=d, width=10, voltage=250)  # インジェクションパラメータを設定
    pulse.fire()   # インジェクト!
    trace = scope.capture()
    # キャプチャしたトレースを保存、分析、可視化:
    filename = f"trace_{d}ns.csv"
    with open(filename, "w") as f:
        f.write(trace)

注意: 実際の自動化は複雑なライブラリ、エラーハンドリング、プローブ位置決め装置との統合を含むかもしれません。


フォルトインジェクション攻撃の軽減策

EMFIが進化するにつれ、対抗策も進化しています。ハードウェアメーカーは現在、フォルト耐性を設計に組み込んでいます。

  • センサー: 強力なEMフィールドまたは電圧の異常のオンチップ検出器。
  • 冗長計算: 重要な論理を複製し、結果を比較(デュアル・モジュラ冗長、DMR)。
  • ランダムな遅延/難読化: 実行のタイミングをノイズ化し、正確なターゲティングを難しくする。
  • 物理的なシールド: センシティブなIC領域に導電性のEM吸収バリアを追加。
  • ソフトウェアセンシング: 不可能な状態を監視するソフトウェア(例:不可能な分岐や論理ジャンプ)。

ソフトウェアの例:検証のために三重実行する:

// 疑似コード
result1 = calc_hash(input);
result2 = calc_hash(input);
result3 = calc_hash(input);

if ((result1 == result2) && (result2 == result3))
    use(result1);
else
    trigger_alert();

知識を深めるためのリソースとコミュニティ

基礎を超えて進みたい方には、次のリソースやコミュニティが非常に貴重です:


結論

電磁フォルトインジェクション(EMFI) は、ハードウェアセキュリティ研究の分野における魅力的でありながら手強い道具です。元は学者の好奇心から始まったものでしたが、今やセキュアなマイクロコントローラやチップの設計者が考慮しなければならない重大なリスクを形成しています。基本的な機器とスクリプティングを使用すれば、攻撃者(および研究者)は正確で再現性があり、非常に破壊的なハードウェアレベルの侵入を実施することができます。

ご覧の通り:

  • EMFIは暗号秘密のバイパス、ダウングレード、または抽出を可能にします。
  • 実用的なセットアップは、多くのラボやプロフェッショナルの手の届く範囲にあります。
  • SoCのセキュアブート、スマートカード、セキュアエレメントにおける現実の脆弱性はEMFIの重大性を示しています。
  • 防衛研究とセキュアチップ設計は絶えず適応し続ける必要があります。

初心者とベテランの方々にとって、EMFIは管理すべき脅威であると同時に、デジタル世界の将来の安全性を確保するための強力な診断法でもあります。


参考文献

  1. フォルトインジェクション攻撃入門 (arXiv:2509.18341v1)
  2. コンパクトな電磁フォルトインジェクションセットアップ — Ledger Blog
  3. 現代のシステムオンチップを信用するな:SoCに対する電磁フォルトインジェクション — Creach Labs Seminar
  4. ChipWhispererプロジェクト
  5. マクスウェル方程式とEMIの基本 — Wikipedia
  6. フォルトインジェクションと対抗策 — Embedded.com

この長編ガイドが役に立ったと思ったか、セキュリティチームまたはハードウェアエンジニアリングの仲間と共有してください! より高度な技術や例については、上記のリソースやハードウェアおよび組込みセキュリティの最新のカンファレンスプロシーディングを参照してください。

[フィードバック、修正、または貢献については、オリジナルのArXivプレプリントおよびオープンセキュリティ研究コミュニティを参照してください。]

🚀 レベルアップの準備はできていますか?

サイバーセキュリティのキャリアを次のレベルへ

このコンテンツが価値あるものだと感じたなら、私たちの包括的な47週間のエリートトレーニングプログラムで何が達成できるか想像してみてください。ユニット8200の技術でキャリアを transformed した1,200人以上の学生に参加しましょう。

97%の就職率
エリートユニット8200の技術
42の実践ラボ