はじめに

2026年9月18日、Raspberry Pi の公式ブログに「Everything is better with lasers(何でもレーザーがあれば良くなる)」という記事が出ました。中身は、ハードウェアウォレットで知られる Ledger のセキュリティ研究チーム Ledger Donjon が、RP2350 の現行ダイ A4 で「永久にデバッグを無効化した」はずのチップにデバッガを再接続し、OTP(One-Time Programmable メモリ)に隠された秘密を読み出した、という責任開示(responsible disclosure)の報告です。同じ日に Donjon 側も技術記事を公開しました。

やったことを大づかみに言うと、チップの裏側を削って露出させたシリコンに赤外レーザーを当て、あるレジスタの 2 ビットを「1」に立てた。研究の難しさは「どこに当てるか」で、Donjon はトランジスタが動くときに出すごく弱い光を顕微鏡で撮り、狙うレジスタの位置を数 µm まで絞ってから照射しています。

Raspberry Pi の判断は「チップを作り直さない(再スピンしない)」でした。理由は 3 つ——パッケージを剥がす破壊的な攻撃であること、デバイスごとに鍵を変えていれば影響は 1 台で止まること、約 25 万ドルの設備と専門技能が要ること。この判断の意味は、記事の後半で RP2350 データシートのレジスタ記述と突き合わせて考えます。

当サイトでは ESP32-S31 の PUF・セキュアブートEU サイバーレジリエンス法を扱ってきましたが、「セキュアブートで何が守れて何が守れないか」を実物のレジスタ名で追える題材は今回が初めてです。筆者の手元に Pico 2 は無く、25 万ドルの設備もありません。代わりに、Raspberry Pi と Donjon の記事、前史となる Courk 氏の記事、RP2350 データシート(build-date 2025-07-29・以下ページ番号はこの版の紙面番号)にある事実だけを使って図解します。

この記事では次の 6 点を扱います。

  1. 基礎 — レーザー故障注入(LFI)・光子放射顕微鏡(PEM)・OTP のハードロック/ソフトロック・TrustZone-M の Secure/Non-secure・SWD の Mem-AP と RP-AP
  2. 何が起きたか — 2024 年の A2 世代の自作レーザー攻略から、2026 年 9 月の A4 の開示までの時系列
  3. 道筋のあらまし — なぜ位置特定に光子放射が要り、なぜ rescue reset が鍵になるのか
  4. Raspberry Pi の判断 — 「再スピンしない」を脅威モデルの境界として読む
  5. 自分の Pico 2 で OTP のロック状態を眺める手順(紹介のみ)
  6. 第 2 回 Hacking Challenge — サイドチャネル解析、2026 年 10 月末まで未攻略
⚠️ 数値の帰属と時点

本記事の事実・レジスタ名・ページ番号は、Raspberry Pi 公式ブログ(2026年9月18日・2025年7月29日・2025年1月14日ほか)、Ledger Donjon の技術記事(2026年9月18日)、Courk 氏の記事(2025年1月14日)、RP2350 データシート(build-date 2025-07-29 版)、Raspberry Pi の GitHub リポジトリにあるものだけを使っています(いずれも 2026年9月19日に取得)。X(旧 Twitter)の投稿は出典に使っていません。Donjon が試したのは A4 のみで、A2/A3 で同じ手順が通るかは両社とも書いていません。筆者は Pico 2 を持っておらず、本記事に実機の出力は載せていません。

📌 この記事の3行まとめ
  • Ledger Donjon が RP2350 A4 の永久デバッグ無効化(CRIT1.DEBUG_DISABLE)を解除し、OTP page 48 に隠された 128 ビットの秘密を読み出した。光子放射顕微鏡で DEBUGEN レジスタの位置を数 µm に絞り、980 nm・約 1.2 W・100 ns のレーザーパルスで PROC1PROC1_SECURE の 2 ビットを立てる。RP-AP の rescue reset でファームウェアのランタイムロック適用前に止め、Secure デバッグで読む。開示は 2026年7月28日、公開は 9月18日
  • Raspberry Pi は再スピンしないと判断。破壊的(パッケージを剥がす)・per-device key なら影響は 1 台・約 25 万ドルの設備と技能が要る、が理由。第 1 回 Hacking Challenge で「入賞していたはずの発見」と評価し、責任開示に謝意
  • 設計の非対称が核心。OTP の critical flag は 8 行中 3 行の多数決、ロックビットは 3 重多数決で守られる一方、それを上書きできる DEBUGEN はデータシートに冗長化の記述が無い単ビット。「守りの連鎖の中でいちばん柔らかい環」が実物で確定した

🧭 1. まず基礎 — LFI・PEM・OTP ロック・TrustZone-M・SWD の AP とは

本論に入る前に、5 つの言葉を押さえます。すべて RP2350 データシートと Donjon・Courk の記事に出てくる範囲です。

1-1. レーザー故障注入(LFI)とは

故障注入(Fault Injection)は、動作中のチップに外から物理的な乱れを与えて、本来と違う挙動を引き起こす手法です。もっとも手軽なのが電源電圧を一瞬落とす電圧グリッチで、Raspberry Pi 自身が「われらが Pico は電圧故障注入の人気ツール」とデータシートに書いています(p.817)。RP2350 はこれに備えて、システムクロック領域でセットアップ/ホールドのマージン喪失を検出すると 1 システムクロック以内にリセットをかけるグリッチ検出器を、物理的に離れた 4 か所に置いています(10.9 節・p.869〜870)。

レーザー故障注入(Laser Fault Injection, LFI)は、電圧を揺らす代わりに、光をピンポイントで当てて特定の場所だけを乱す手法です。狙いを絞れるぶん、離れた場所にあるグリッチ検出器を避けやすい——というのが攻撃者側の発想で、実際 Courk 氏は「検出回路から外して撃てば引っかからないだろう」と考えて 2024 年の挑戦に臨んでいます。RP2350 のグリッチ検出器はクロック/電源の乱れには反応しますが、局所的な光には反応しない、という前提が土台にあります。

💡 ワード解説:なぜ「裏側」から「赤外」なのか

チップの回路(トランジスタ)は表面に近い側にあり、その上を何層もの金属配線が覆っています。表からレーザーを当てると金属で遮られてしまうため、Donjon も Courk 氏もパッケージ裏面を削ってシリコン基板を露出させ(backside decapsulation)、裏側から照射しています。ただしシリコンは可視光をほとんど通さないので、シリコンを透過する赤外線を使います。Donjon は 980 nm、Courk 氏は 1064 nm の波長を使ったと書いています。この「裏を剥がす」工程が、Raspberry Pi の言う「破壊的(destructive)」の中身です。

1-2. 光子放射顕微鏡(PEM)とは — 「どこを撃つか」を先に知る道具

LFI で 1 ビットだけを狙うには、そのビットを記憶している場所が数 µm の精度で分かっていないといけません。Donjon はこれを「干し草の山から針を探す問題」と表現しています。命令をスキップさせる古典的な LFI なら、CPU パイプラインのどのフリップフロップを乱しても同じ結果が出るので当てやすいのですが、特定レジスタの 1 ビットとなると話が別です。

そこで使われたのが光子放射顕微鏡(Photon-Emission Microscopy, PEM)です。トランジスタはスイッチングするとき、活動に応じてごく弱い近赤外の光子を出します。Donjon は、狙うビットだけを切り替えるループをソフトウェアで回し、その放射を何度も撮って平均することで、「どこが動いているか」の地図を作りました。単独のフレームでは弱すぎて何も見えないため、対象ビットの違うループの平均像を引き算し、両者で共通の背景・センサーのオフセット・熱放射などを打ち消す——という差分イメージングで、狙うビットに連動する場所だけを浮かび上がらせています。この地図で、その後のレーザー探索の範囲を数 µm の領域に狭められた、というのが PEM の役割です。

1-3. OTP とは — そして「ハードロック」と「ソフトロック」

OTP(One-Time Programmable)メモリは、各ビットを 0 から 1 へ一度だけ書き換えられ、二度と戻せない不揮発メモリです。RP2350 は 8 kB の OTP を持ち、セキュアブートの公開鍵の指紋やセキュリティ設定を格納します。OTP は 128 バイト(64 行)ごとに 64 ページへ区切られ、ページ単位でアクセス権を設定できます(13.5 節・p.1274〜)。

権限には 2 種類あります(10.1.2 節・p.816、13 章冒頭・p.1268)。

  • ハードロック(hard lock) — OTP 自体にロック状態を焼き込み、読み/書きを恒久的に制限する。一度きつくすると緩められない
  • ソフトロック(soft lock) — SW_LOCK0SW_LOCK63 レジスタへ書き込み、次に OTP がリセットされるまでの間だけ権限をさらに制限する。リセットで初期状態(OTP から読んだ値)に戻る

ロックの進み方はどちらも Read/Write → Read-only → Inaccessible の一方向で、緩む方向には動きません(13.5.1 節・p.1274)。表にすると差はこうなります。

ロックの種類 保存先 効き方 OTP リセットで
ハードロック OTP に焼き込み 恒久(一方向に厳しくなるだけ) 戻らない
ソフトロック SW_LOCKn レジスタ 次の OTP リセットまで 初期値に戻る

さらに Secure 用と Non-secure 用のロック状態は別々に持てます(LOCK_SLOCK_NS・p.1324)。第 1 回課題の page 48 は「Non-secure は不可・Secure は読み書き可(LOCK_S = READ_WRITE)」に設定され、ファームウェアが起動のたびにソフトロックでさらに締める、という二段構えでした。この「ソフトロックはリセットで戻る」という性質が、後で効いてきます。

1-4. TrustZone-M の Secure / Non-secure とは

RP2350 の Cortex-M33 コアは、Arm の TrustZone(Armv8-M セキュリティ拡張)を実装しています(10.2 節・p.819)。プロセッサは常に SecureNon-secure のどちらかの状態にあり、暗号鍵や電圧レギュレータのような重要な資源へのアクセスを Secure 側に限定できます。バス上のすべてのアクセスには「どちらの状態が出したか」の印が付き、周辺回路やバスがその印でアクセスを弾けます。Raspberry Pi 自身、ブート ROM の USB コードは Non-secure で走らせ、署名検証のような肝心な部分から切り離しています。

1-5. SWD の Mem-AP と RP-AP とは

外部デバッガは Arm の SWD(Serial Wire Debug)でチップと話します。要求はまず SW-DP(デバッグポート)に届き、そこからアクセスポート(AP)へ振り分けられます(Donjon の解説と 3.5 節)。

  • Mem-AP(メモリアクセスポート) — 各コアのシステムバスにつながる。有効ならデバッガはメモリや周辺を読み書きでき、コアを止めてレジスタを覗ける。「Secure デバッグ」とは、この Mem-AP が Secure 属性でアクセスできる状態を指す
  • RP-AP — Raspberry Pi 独自の、常時アクセスできる小さな AP。リセットや復旧のための制御を持つ。デバッグが無効でもアクセスできる
flowchart TD A["外部デバッガ"] -->|SWD| B["SW-DP
デバッグポート"] B --> C["コア0 Mem-AP"] B --> D["コア1 Mem-AP"] B --> E["RP-AP
常時アクセス可"] C -->|システムバス| F["メモリ・周辺・OTP"] D -->|システムバス| F E --> G["rescue reset など
リセット・復旧制御"]

「デバッグを無効化する」とは、この Mem-AP の経路を塞ぐことです。ただし RP-AP は塞がれても生きている——この差が今回の道筋の入口になります。


📜 2. 何が起きたか — A2 世代の自作レーザーから A4 の開示まで

RP2350 のセキュリティは、Raspberry Pi 自身が「透明性によるセキュリティ(security through transparency)」を掲げ、賞金付きの Hacking Challenge を 2 度開いて外部に破らせにいく、という珍しい進め方をしています。今回の A4 の開示は、その延長線上にあります。時系列で整理します。

timeline title RP2350 セキュリティ検証の流れ 2024年 : 8月 RP2350発表 A2向け挑戦開始 : 12月末 締切 有効提出4件 2025年 : 1/14 結果公表 Courk氏が攻略 : 7/29 A4出荷 第2回SCA挑戦 2026年 : 7/28 Donjon が Pi へ開示 : 9/18 両社が同時公開 : 10/31 第2回は延長中

第 1 回(2024年)— A2 世代を自作レーザーで破った Courk 氏

RP2350 は 2024 年 8 月に発表され、DEF CON 2024 に合わせて第 1 回 Hacking Challenge が始まりました。課題は「OTP の row 0xc08 に隠した 128 ビットの秘密を、セキュアブートを掻いくぐって取り出す」こと(GitHub のリポジトリ)。締切までに攻略はなく賞金は 1 万→2 万ドルへ倍増、最終的に 2024 年末までに 4 件の有効な提出が集まりました(2025年1月14日の結果報告)。

その 1 人が Kévin Courdesses(Courk)氏です。同氏は市販の彫刻ツール(約 30 ユーロ)でパッケージを削り、アリババで調達した 1064 nm レーザーダイオード(5 個で約 300 ユーロ)を核にした自作のレーザー故障注入プラットフォームを組み上げ、当時の A2 世代のセキュアブートを破りました。狙ったのは、ファームウェアを RAM に読み込んでから署名を検証する SHA-256 計算の直前で、ここに 1 発の乱れを入れると「検証対象と違うデータのハッシュ」を計算させられる、という一点です。この発見は erratum RP2350-E24 として記録され、A4 のブート ROM で修正されました(データシート付録 E・p.1362〜1363、クレジットは Courk 氏)。

Courk 氏の記事は、自作装置の設計ファイルまで公開している点で「予算重視でもレーザー故障注入は可能」という前例になりました。今回の Donjon の開示でも脚注で参照されています。

第 2 回(2025年〜)— サイドチャネルへ、そして A4 の開示

A4 の出荷(2025年7月29日)と同時に、第 2 回 Hacking Challenge が始まりました。今度のテーマは、暗号化ブートに使う SCA ハードン化 AES 実装へのサイドチャネル解析(SCA)です(賞金 2 万ドル)。こちらは 2026 年に入っても攻略されず、締切は複数回延長されて 2026 年 10 月末まで続いています(後述)。

その第 2 回が進行中の 2026 年 7 月 28 日、Ledger Donjon が Raspberry Pi に新しい発見を開示しました。今度は SCA ではなく、A4 でも残っていた故障注入の穴です。Raspberry Pi は「第 1 回のときに提出されていれば入賞していたはずの発見」と評価し、2026 年 9 月 18 日に両社そろって公開しました。


🔬 3. 道筋のあらまし — なぜ位置特定が要り、なぜ rescue reset が鍵なのか

ここが記事の中心です。Donjon の開示は、大きく 3 つの段階からなります。攻撃の再現手順ではなく、「守りのどこが、どういう理屈で越えられたか」を追います。数値はすべて Donjon の記事とデータシートの記述です。

flowchart TD A["1. 位置を特定する
光子放射顕微鏡で
DEBUGEN の場所を数µmに"] --> B["2. 2ビットを立てる
レーザーで PROC1 と
PROC1_SECURE を 1 に"] B --> C["3. ロック前に止めて読む
rescue reset でファーム実行前に
停止し OTP page 48 を読む"] C --> D["結果
128ビットの秘密を回収"]

段階 1 — 「どこを撃つか」を光子放射で先に知る

前提として Donjon は、第 1 回課題と同じ設定を自前の A4 デバイスに再現しました(公開鍵の指紋を書き、セキュアブートを有効化、CRIT1.DEBUG_DISABLE を立て、グリッチ検出器を最高感度にし、page 48 のロックを課題どおりに設定)。「守りをすべて掛けた」状態から始めています。

そのうえで、狙いは DEBUGEN レジスタに定まりました。CRIT1.DEBUG_DISABLE を立てると両コアの Mem-AP がバスにアクセスできなくなりますが、データシートには抜け道が書かれています——「Secure ソフトウェアは OTP の DEBUGEN レジスタに書くことでデバッグを再有効化できる」「DEBUG_DISABLE は、このレジスタの全ビットを立てることで完全に上書きできる」(3.5.9 節・p.91、DEBUGEN レジスタ表・p.1288)。本来は「Secure ソフトウェアが認証後に自分でデバッグを開けるため」の正規の仕組みですが、それを外部から故障で立てられれば、無効化を上書きできる。この「上書き経路」が狙いになりました。

位置特定に PEM を使ったのは 1-2 で述べたとおりです。DEBUGEN はメモリマップされたレジスタなので、Secure ソフトウェアで対象ビットをループで切り替えられます。その放射の差分像から、DEBUGEN のビット 0〜3 に対応する場所を、カメラ視野の 3 領域に絞り込みました。Donjon は「これらの領域は記憶セルそのものとは限らず、関連ロジックの可能性もある。レイアウト情報が無いので区別できないが、探索範囲は大きく減る」と慎重に書いています。

💡 ワード解説:DEBUGEN の 5 ビット

DEBUGEN レジスタ(OTP・オフセット 0x150)には機能ビットが 5 つあります(データシート p.1288〜1289)。ビット 0 PROC0(コア 0 の Mem-AP を有効化)、ビット 1 PROC0_SECURE(コア 0 の Secure アクセスを許可)、ビット 2 PROC1(コア 1 の Mem-AP を有効化)、ビット 3 PROC1_SECURE(コア 1 の Secure アクセスを許可)、ビット 8 MISC(CTI や RISC-V デバッグモジュールなど)。あるコアで Secure デバッグを使うには、そのコアの「Mem-AP を有効化するビット」と「Secure アクセスを許すビット」の両方が要ります。 Donjon はコア 1 の 2 ビット(PROC1=ビット2 と PROC1_SECURE=ビット3)を立てました。

段階 2 — 2 ビットを「1」にする

位置が決まれば、そこへ赤外レーザーのパルスを撃ちます。Donjon が使ったのは 980 nm・最大 2.97 W のパルスレーザーを約 40%(約 1.2 W)で運用、パルス幅 100 ns、50 倍の対物レンズ、という構成です。PEM で絞った領域の中を走査し、SWD からの応答(デバッグポートが反応するか)を手掛かりに、数 µm 離れた 2 か所を「効く点」として校正しました。片方で PROC1 が、もう片方で PROC1_SECURE が立ちます。

興味深いのは、一方を立てるパルスが他方を消してしまうため、2 点を交互に撃つ反復が必要だった点です。Donjon は「20 倍の対物では再現できなかった。2 点が数 µm しか離れていないため、広いスポットでは『立てる領域』と『消す領域』の両方に当たってしまう」と述べています。狙いの細かさが攻撃の難しさをそのまま表しているわけです。校正が済むと、この反復は数秒で Secure デバッグを有効化できたといいます。一度立った 2 ビットは、追加のパルスやソフトウェア書き込みなしで立ったまま保たれました。

なお Donjon は、書き込みを防ぐはずの DEBUGEN_LOCK(対応ビットを 1 にすると DEBUGEN の該当ビットへのソフト書き込みを禁じる。一度立てると戻せない。p.1289)についても検証し、「ロックが 1 のままでもレーザーで DEBUGEN を立てられた」「レーザーはロックビット自体も立てうる」と報告しています。ソフトウェアの誤書き込みは防げても、物理的な故障は防げなかった、ということです。

💡 この段階でできること・できないこと

Secure デバッグが開くと、デバッガはコアを止めてレジスタを覗き、Secure なメモリ資源に触れます。ただし Donjon は線を引いています——これはブート ROM に未署名ファームを受け入れさせるものではありません。通常起動すればセキュアブートは従来どおり署名を検証します。破れるのは「検証後の実行時状態がデバッガから見える」という一点で、TrustZone の実行時の隔離が破られるという意味です。

段階 3 — ロックが掛かる前に止めて、OTP page 48 を読む

Secure デバッグが開いても、第 1 回課題の秘密(page 48)にはまだ届きません。課題ファームウェアは、起動のたびに page 48 のソフトロック(sw_lock[48])へ最も厳しい値を書き込み、Secure でも Non-secure でも読めないようにするからです。

ここで効くのが 1-3 の「ソフトロックはリセットで戻る」という性質です。page 48 のハードロック(PAGE48_LOCK1)は Non-secure の読みを禁じますが Secure の読み書きは残す設定になっている(LOCK_S = READ_WRITE)。つまりファームウェアがソフトロックを掛ける前なら、Secure 属性で page 48 を読める。問題は「ファームウェアを走らせずにチップをリセットする方法」です。

答えが RP-AP の rescue reset です。データシートは、CTRL.RESCUE_RESTART を立ててから下ろすと、システム全体をリセットしたうえでブート ROM に「ユーザーソフトを動かす前に止まれ」という旗を立てる、と説明しています(3.5.8 節・p.90、RP-AP CTRL レジスタ・p.95)。ブート ROM はウォッチドッグやフラッシュ/USB ブートより前にこの旗を確認し、旗が立っていればコアを待機ループに保持します。署名済みファームウェアは走らないので、sw_lock[48] はきつくならず、ハードロック由来の緩い値(LOCK_S = READ_WRITE)のまま——この状態で Secure デバッグから page 48(OTP rows 0xc080xc0f)を読み、128 ビットの秘密を回収した、という流れです。

Donjon はこの一連を「守りの各機構はそれぞれ文書どおりに働いた。しかしレーザーによる故障との相互作用が Secure デバッグの復活と秘密の回収を許した」とまとめています。個々の仕組みではなく、OTP 設定→可変の制御レジスタ→リセット挙動という『連鎖の全体』を見ないと守りは評価できない、という教訓です。


🛡️ 4. Raspberry Pi の判断 — 「再スピンしない」を境界として読む

Raspberry Pi は今回、A4 の作り直し(再スピン)をしないと決めました。ネガティブに響く決定に見えますが、公式の説明を読むとむしろ脅威モデルの境界を実物で確定させたという前向きな話です。挙げた理由は 3 つ。

理由 中身 意味するところ
破壊的である チップを基板から外し、パッケージ裏面を剥がす必要がある 遠隔・非接触では起こせない。対象を物理的に 1 個ずつ壊す
単一デバイスの範囲 per-device key(デバイスごとに違う鍵)を使っていれば影響は 1 台 1 個破っても他の製品の鍵は割れない。量産全体は守られる
設備と技能 顕微鏡・レーザーなど約 25 万ドル相当と、専門の技能が要る 費用と難度が「その 1 台に見合うか」の壁になる

この 3 点は、そのまま「どこまでが RP2350 の守れる範囲か」の線引きになっています。RP2350 のセキュアブートは、フラッシュを抜き取っての解析や、ネットワーク越しの侵入といった非破壊・遠隔の脅威に対しては設計どおり機能します。破れたのは「攻撃者が現物を 1 個手にし、壊してよく、25 万ドルと専門技能を注ぐ」という条件の下だけです。Raspberry Pi はこれを隠さず、第 1 回のときと同じ「透明性によるセキュリティ」の姿勢で公開し、Donjon の責任開示に謝意を示しました。「破られた」ではなく「守りの外周がどこにあるかを、実物のレジスタと費用で測れた」と読むのが正確でしょう。

なお、第 1 回では別チーム(IOActive)が OTP の物理構造そのものから隣接ビットの OR を読み取る手法(PVC)も示しており、Raspberry Pi は「秘密は OTP に生のまま置かず、チャフ(かさ増し)してハッシュで復元する形で格納せよ」という指針を出しています(2025年7月29日の A4 記事)。今回の Donjon の件と合わせ、「鍵の置き場と守り方の設計が、チップ任せにできない領域として残る」ことが繰り返し示された形です。

📌 筆者の見方(ハードウェアセキュリティは専門外ですが)

筆者は電子工作・組み込みが本業で、レーザー故障注入も光子放射顕微鏡も触ったことはありません。ここから先は、手元の設計感覚に引き寄せた受け止めです。事実は上の節、ここは意見として読んでください。

今回いちばん腑に落ちたのは、「同じチップの中で、守りの強さがそろっていない」という一点でした。OTP の critical flag は 8 行のうち 3 行が一致すれば有効という多数決(3-of-8)で守られ、ロックビットも 3 重の多数決で守られる(データシート p.1274〜1275)。1 ビット壊されても倒れないよう、わざわざ冗長化してある。ところが、その DEBUG_DISABLE を上書きできる DEBUGEN には、データシートを読む限り冗長化・パリティ・多数決の記述が見当たらない単ビットです(Donjon も同じ指摘をしています)。8 重にした扉の隣に、上書き用の単ビットのスイッチがある——鎖はいちばん弱い環で切れる、を地で行く構図に見えました。

これは自分の基板で「秘密をどこに置くか」を考えるときに、そのまま刺さります。筆者はふだん ESP32 で自宅用の小物を作る程度で、per-device key を焼くような製品は作っていません。それでも、Wi-Fi のパスワードや API トークンをソースに直書きして平気だった過去の自分を思い出します。今回の話が教えてくれるのは、「ロックを掛けたつもりの場所が、実行のどの時点で・どの経路から見えるのか」を最後まで追わないと、掛けたロックの意味が確定しない、ということです。page 48 のソフトロックが rescue reset で外れたのは、ロック自体の欠陥ではなく「リセットで初期化される」という正しい仕様の使われ方でした。秘密の守りは 1 つの機構ではなく、電源投入からロック適用までの時間の流れ全体で決まる——増幅する前にプローブをグラウンドに落として基準を確かめるのと同じで、「守れていること」もどこかの状態で必ず一度は確かめるしかないのだと、あらためて思いました。


🧰 5. 自分の Pico 2 で OTP のロック状態を眺めるには(紹介のみ)

25 万ドルの設備は要らなくても、「OTP のページごとのロックがどうなっているか」を自分の Pico 2 で眺めることはできます。Raspberry Pi の公式ツール picotoolotp サブコマンドがあり、行やフィールドを名前で読めます(picotool README)。

  • picotool otp list — 既知のレジスタ/フィールドの一覧を出す
  • picotool otp get <セレクタ> — 行やフィールドの値を読む(例:picotool otp get CRIT1 で critical flag、OTP_DATA_PAGE48_LOCK1 でページ 48 のロック設定)
  • picotool otp dump — OTP 全体を吸い出す

セレクタは ROW_NAME(名前)/ROW_NUMBER(番号)/PAGE:PAGE_ROW_NUMBER(ページと行)で指定でき、.FIELD_NAME でフィールドだけを読めます。書き込み系(set / load / permissions)は一度きりで戻せないので、まず読み取り系だけで構造を把握するのが安全です。

⚠️ ここは実機で確かめていません

上の手順は picotool の公式ドキュメントに基づく紹介で、筆者は Pico 2 を持っていないため実際の出力は確認していません。OTP は書き換え不可なので、set / load / permissions を試すのは中身を理解してからにしてください。第 1 回課題のリポジトリにある lock_chip.sh のように DEBUG_DISABLE を立てる操作は恒久的にデバッグを塞ぎ、RISC-V コアも無効化します(GitHub の README とスクリプト)。読み取りだけなら壊れませんが、書き込みは「戻せない」を常に意識してください。


⏳ 6. 第 2 回 Hacking Challenge — サイドチャネルは 10 月末まで未攻略

今回の LFI は「故障注入」の話でしたが、進行中の第 2 回 Hacking Challenge のテーマはサイドチャネル解析(SCA)です。暗号化ブートで使う AES 実装から、消費電力や電磁波の波形(トレース)を何十万〜何百万回も測って鍵の手がかりを漏らせないか、という挑戦で、賞金は 2 万ドル(2025年7月29日の告知)。

Raspberry Pi はこの AES 実装を、秘密値を複数のランダムな成分に分ける多重秘密分散や、演算順序のランダム化・ジッタで守っています。2026 年 2 月には「トレースを揃えやすくするためランダム化とジッタを外した緩めの設定でも良い」とルールを緩和し(「less randomisation, more correlation」)、締切は複数回延長のすえ 2026 年 10 月末まで続いています。9 月 18 日の Raspberry Pi 記事は「いくつかのチームがかなり近づいているようだ。来月末まで走るので、まもなく続報がある見込み」としています。故障注入とは別の守りが、いままさに試されている最中です。


まとめ

  • 2026年9月18日、Ledger Donjon が RP2350 A4 の永久デバッグ無効化(CRIT1.DEBUG_DISABLE)を解除し、OTP page 48 の 128 ビットの秘密を読み出したと責任開示。開示は 7月28日、Raspberry Pi との合意のうえで同日公開された
  • 道筋は 3 段。①光子放射顕微鏡で DEBUGEN レジスタの位置を数 µm に絞る → ②980 nm・約 1.2 W・100 ns のレーザーで PROC1PROC1_SECURE の 2 ビットを立てて Secure デバッグを復活 → ③RP-AP の rescue reset でファームウェアのランタイムロック適用前に止め、Secure 属性で page 48 を読む
  • Raspberry Pi は再スピンしないと判断。破壊的・per-device key なら影響は 1 台・約 25 万ドルの設備と技能が要る、が理由。「破られた」ではなく「守りの外周が実物で確定した」と読むのが正確
  • 設計の非対称が核心。OTP の critical flag は 3-of-8 の多数決、ロックビットは 3 重多数決で守られる一方、それを上書きできる DEBUGEN は冗長化の記述が無い単ビット。鎖はいちばん弱い環で切れる
  • 前史は 2024 年の A2。Courk 氏が自作レーザーでセキュアブートを破った erratum RP2350-E24 は A4 のブート ROM で修正済み。進行中の第 2 回チャレンジ(SCA)は 2026 年 10 月末まで未攻略

よくある質問(FAQ)

Q. 手元の Pico 2 は危険ですか? 秘密が盗まれますか?

通常の使い方では影響しません。この手法は、攻撃者があなたのチップを物理的に手に入れて、基板から外し、パッケージ裏面を削ってから、約 25 万ドルの設備と専門技能で行うものです。遠隔やネットワーク越しには起こせず、非破壊でもありません。心配なのは「現物を奪われうる高価値な製品に、デバイスごとの秘密を焼いている」ような用途に限られます。

Q. なぜ Raspberry Pi はチップを作り直さないのですか?

破壊的で・単一デバイスの範囲に留まり・約 25 万ドルの設備と技能を要する攻撃だからです(公式ブログ)。per-device key を使っていれば 1 台破られても他の製品の鍵は割れません。Raspberry Pi は隠さず公開し、これを「脅威モデルの境界が実物で確定した」情報として扱っています。ただし「秘密は OTP に生で置かずチャフしてハッシュで復元せよ」という設計指針は別途出しています。

Q. DEBUGEN の 1 ビットを立てるだけで、なぜそんなに難しいのですか?

「どこに当てるか」が難しいからです。特定レジスタの 1 ビットを記憶する場所は数 µm 単位で、盲目的に走査しても当たりません。Donjon は光子放射顕微鏡でそのビットに連動する場所を先に地図化し、探索範囲を数 µm に絞ってからレーザーを撃っています。しかも狙う 2 点が数 µm しか離れておらず、一方を立てるパルスが他方を消すため、交互に撃つ反復が必要でした。位置特定の道具が無ければ成立しない攻撃です。

Q. セキュアブートは破られたのですか? 未署名のコードが動くのですか?

いいえ。Donjon は「これはブート ROM に未署名ファームを受け入れさせるものではない」と明記しています。通常起動すればセキュアブートは従来どおり署名を検証します。今回破れたのは「検証後の実行時状態がデバッガから見えてしまう」点、つまり TrustZone の実行時の隔離です。なお、署名検証そのものを狙った 2024 年の Courk 氏の攻略(RP2350-E24)は A4 のブート ROM で修正済みです。

Q. 自分のマイコン設計に活かせる教訓は?

「ロックを掛けたつもりの場所が、実行のどの時点で・どの経路から見えるのか」を最後まで追うことです。今回、page 48 のソフトロックは rescue reset で初期値に戻りました。これはロックの欠陥ではなく「リセットで初期化される」という正しい仕様の使われ方です。秘密の守りは 1 つの機構ではなく、電源投入からロック適用までの流れ全体で決まります。冗長化された強い守りの隣に、それを上書きできる弱い単ビットがないか——という視点も、Donjon の指摘から学べます。

関連記事

参考

本記事の一次資料は front matter の references に列挙しています(Raspberry Pi 公式ブログ各記事・Ledger Donjon の技術記事・Courk 氏の記事・RP2350 データシート build-date 2025-07-29 版・Raspberry Pi の GitHub リポジトリ・picotool README)。いずれも 2026年9月19日に取得しました。X(旧 Twitter)の投稿は出典に使っていません。