Chapter 17
セキュリティのブラックボックス — 守れているかを外から試す
この章のゴール.
機能ではなく守りを外から検証する視点をつかむこと。攻撃面の洗い出し、秘密の漏れ・ 認証認可の欠落・通信の平文化・デバッグポートの開放・サイドチャネルまで、 これまでの観測技を「攻撃者の目」で使い直す。あくまで自分の機器の防御確認として扱う。
前提と姿勢. ここで扱うのは、自分(または明示的に許可を得た)機器の防御を確かめる行為である。 他者の機器・通信への無許可のアクセスや電波の不正送信は違法になりうる。合法な範囲(自己所有・ 許可済み・シールド環境)を必ず守ること。本章は「守れているかの確認」であって加害の手引きではない。
この章で使う既出の用語(定義は各リンク先). USB(01 章 2 節)、オラクル(01 章 8 節)、デバッグポート(01 章 2 節)、ハーネス(02 章 7 節)、電源(02 章 2 節)、UART(05 章 1 節)、GATT(09 章 8 節)、mitmproxy(11 章 4 節)、中間(11 章 3 節)、CAN(13 章 5 節)、キャプチャ(13 章 3 節)
1. セキュリティは「機能しないこと」を確かめる
普通のテストは「できるべきことができる」を確かめる。セキュリティテストは逆で、「できてはいけないことができない」を確かめる。生成 AI 製ファームは、認証や暗号化を「とりあえず省略」しがちで、平文の秘密や無防備な書き込み口が残りやすい。これまでの観測・注入技(03 章〜16 章)を、そのまま防御確認に使い回す。
2. まず攻撃面を洗い出す
守るべき境界と、外から触れる入口(攻撃面)を地図にする。13 章までの発見を集約する。
- 物理: デバッグポート(SWD/JTAG、08 章)、UART コンソール、テストパッド、フラッシュチップ(バイナリ編と連携)
- 無線・ネット: BLE の GATT、Wi-Fi のポート・API、サブ GHz(09 章〜12 章)
- 有線: USB の記述子・ベンダコマンド、CAN(13 章)
- データ: 設定・ファーム更新・保存データ
3. 秘密は漏れていないか
最も多く、最も基本的な確認。
- 平文の秘密: 通信キャプチャ(06 章・09 章・11 章)に鍵・トークン・パスワード・個人データがそのまま流れていないか
- アドバタイズ/記述子/文字列にシリアルや内部情報が乗っていないか(09 章・13 章)
- フラッシュ吸い出し(バイナリ編)で鍵がべた書きされていないか——読み出し保護が効くか
- デフォルト認証情報(admin/admin、固定 PIN)が残っていないか
4. 認証・認可は効いているか
- 無認証で読める/書ける: BLE キャラクタリスティック、HTTP API、UART コマンドに、認証なしで重要操作が通らないか(09 章・11 章の列挙結果を精査)
- 認可の抜け: 認証は通るが、他人の資源を指定できる(ID を変えるだけ)、権限昇格できる
- リプレイ: 同じ通信を録ってそのまま送り直すと通ってしまう(12 章、毎回同じビット列は危険)
- 総当たり耐性: PIN・パスワードに回数制限・遅延があるか
5. 通信は保護されているか
- 暗号化の有無: そもそも暗号化しているか。TLS/BLE ペアリングを使っているか
- 証明書検証: HTTPS で検証をサボっていないか——中間者(11 章の mitmproxy)が素通りできたら不合格
- ダウングレード: 暗号化を拒否すると平文に落ちないか
- ペアリングの強度: BLE の Just Works(認証なしペアリング)で秘匿値を守っていないか
6. サイドチャネルとフォールト — 高度な確認
配線や無線に載らない情報が、電力・時間・電磁波から漏れることがある。深入りは専門領域だが、入口だけ。
- タイミング攻撃: PIN 照合などが一致した桁数で処理時間が変わると、時間を測って一桁ずつ当てられる(14 章の精密測定)。一定時間で答えるか
- 電力サイドチャネル: 暗号処理中の消費電流の波形から鍵が漏れる(03 章の高精度電流測定の応用)。対策(マスキング等)が入っているか
- フォールト注入: 電源グリッチ・クロックグリッチ・電磁パルスで処理を飛ばし、認証をスキップさせる。08 章の配線フォールトの物理版
これらは高価な装置と専門知識を要するが、「そういう漏れ・飛ばしがありうる」と知って設計・テスト項目に入れることが第一歩。
7. デバッグ面は閉じているか
- 製品でデバッグポートがロックされ、フラッシュ読み出し保護が有効か(08 章、バイナリ編)
- テスト用コマンド・バックドア・詳細ログが製品ビルドで無効か
- 更新(ファーム)に署名検証があり、改造ファームを弾くか
8. 何をオラクルにするか
- 秘密がどの経路にも平文で出ない、デフォルト認証情報がない
- 重要操作に認証・認可が必要で、リプレイ・総当たり・権限昇格を弾く
- 通信が暗号化・証明書検証され、ダウングレードしない
- デバッグ・更新の面が閉じている/署名検証される
- (高度)タイミング・電力の漏れ、フォールトへの耐性が考慮されている
9. 手を動かす
攻撃面を洗い出す
この章のポイント
- セキュリティは「できてはいけないことができない」を確かめる。観測・注入技を防御確認に転用
- まず攻撃面(物理・無線・有線・データ)を地図化する
- 基本は秘密の漏れ(平文・べた書き・デフォルト認証情報)と認証認可の欠落(無認証操作・リプレイ・権限昇格)
- 通信保護(暗号化・証明書検証・ダウングレード)とデバッグ/更新面の封鎖・署名を確認
- 高度なサイドチャネル(タイミング・電力)とフォールト注入は入口だけでも知って項目化
- 常に自己所有・許可・合法な範囲で行う