ブログ

RP2350における物理的攻撃への耐性とレーザー故障注入の事例

今回は、Hackaday で紹介されていたRP2350のセキュリティ検証に関する記事を読み、ハードウェアレベルの攻撃手法がどのようなものか気になったので、自分なりに内容を整理してみました。

組込みネタですが…、これもなかなか凄いですね。レーザーを当てて内部レジスタを操作するとは。


Raspberry Pi財団が開発したRP2350は、以前のモデルと比較してもセキュリティ面が大幅に強化されたマイコンです。セキュアブートやARM TrustZoneといった機能に加え、外部からの電気的なノイズ(グリッチ)を検知して動作を停止させる「グリッチ検出機能」も備わっています。

しかし、セキュリティチームであるLedger Donjonは、物理的な接触を伴う「レーザー故障注入攻撃(Laser Fault Injection: LFI)」を用いることで、この強固な保護を突破できることを示しました。こちらの手法について、技術的な側面から見ていきたいと思います。

攻撃のプロセス:電気から光へのアプローチ

RP2350には、デバッグ機能を恒久的に無効化する設定がありますが、攻撃チームはレーザーを使ってこの設定を一時的に書き換えることを試みました。従来の電圧グリッチ攻撃などは、チップが異常な電圧を検知して防御してしまいますが、レーザーによる攻撃は特定の回路に対してピンポイントで影響を与えられるため、検知を回避できる可能性があります。

攻撃のおおまかな流れを整理すると、以下のようになります。

flowchart TD
  A["チップの裏面開封<br>(Backside Decapsulation)"] --> B["光電子放出顕微鏡による<br>ダイの調査"]
  B --> C["デバッグ制御レジスタの<br>物理的な位置を特定"]
  C --> D["赤外線レーザーによる<br>スポット照射"]
  D --> E["レジスタのビット反転<br>(Fault Injection)"]
  E --> F["デバッグモードの有効化と<br>秘密情報の取得"]

まず、チップのパッケージを裏面から削り、シリコンウェハーを露出させる「デキャップ」という作業が行われます。その後、特殊な顕微鏡を使って、デバッグのオン・オフを司るレジスタがチップ上のどこにあるかを突き止めます。

ターゲットが決まると、赤外線レーザーをその位置に照射します。シリコンは赤外線を透過する性質がありますが、特定の素子にレーザーが当たると一時的に電流が発生し、保存されているデータのビットが反転(0から1、または1から0へ変化)することがあります。この現象を利用して、無効化されていたデバッグ機能を無理やり有効化した、というわけです。

攻撃手法の比較

今回のレーザー攻撃と、一般的なグリッチ攻撃の違いを表にまとめてみました。

特徴 電圧・クロックグリッチ レーザー故障注入 (LFI)
攻撃の仕組み 電源や時計信号にノイズを混ぜる 光子によって素子内に電荷を発生させる
制御の精度 主に「時間軸」でのタイミング制御 「時間」と「空間(場所)」の両方で高精度
難易度・設備 比較的安価な機材でも可能 高額な光学機器やチップ開封設備が必要
防御の難しさ 検出回路による自動防御が一般的 物理的な遮蔽や回路配置の工夫が必要

たとえば、電圧グリッチが「家全体のブレーカーを揺らして、たまたま鍵が開くのを待つ」ようなものだとすれば、レーザー故障注入は「鍵穴の内部にある特定のピンだけを外側からレーザーで動かす」ようなイメージに近いかもしれません。

物理アクセスがもたらす影響

今回の事例では、最終的にメモリ内に隠されていたハッキングチャレンジ用の秘密情報が読み出されました。RP2350が持つソフトウェア的な保護機能や、電気的なグリッチ対策が正常に機能していても、物理的にチップを手に入れ、高価な設備を投じる攻撃者に対しては、完全な防御は難しいという現実が示されています。

とはいえ、この記事にあるような攻撃を実行するには、チップを開封する技術や数十万ドル規模の設備、そしてダイ上の正確な位置を特定する深い知識が求められます。一般的な製品利用において、すぐに脅威になるような性質のものではないかと思います。

ハードウェアを設計する側としては、論理的なセキュリティだけでなく、物理的な解析をいかに難しくするかという「耐タンパ性」の設計が、改めて重要視されることになるのかもしれません。物理層での攻防は、ソフトウェアの世界とはまた違った奥深さがあると感じました。

参照記事