IoT Security 23 · 選定指針と設計チェックリスト

Chapter 23

選定指針と設計チェックリスト

この章の位置づけ.

ここまでの 22 章を、実際に使える形にまとめる。

01 章で述べたとおり、ハードウェアに関わる決定は後から変えられない。 だからこの章の内容は、基板を起こす前に通す必要がある。

この章で使う既出の用語(定義は各リンク先). デフォルトパスワード(01 章 5 節)、可用性(01 章 4 節)、決済(03 章 5 節)、物理攻撃(04 章 6 節)、署名検証(04 章 4 節)、OTFDEC(06 章 6 節)、不可(06 章 1 節)、完全性(06 章 6 節)、機密性(06 章 6 節)、鍵ラッピング(06 章 4 節)、TrustZone(07 章 2 節)、サイドチャネル(07 章 8 節)、フォールト(07 章 8 節)、割り込み(07 章 3 節)、AES(08 章 8 節)、エントロピーレート(08 章 3 節)、必要(09 章 6 節)、フラッシュ暗号化(11 章 5 節)、最も重要(11 章 2 節)、SFI(12 章 3 節)、ロールバック防止(13 章 1 節)、CRA(14 章 6 節)、市場(14 章 5 節)、認証付きデバッグ(14 章 3 節)、量産(14 章 5 節)、開発(14 章 5 節)、廃止(15 章 8 節)、窓口(15 章 7 節)、要件(15 章 8 節)、運用(15 章 8 節)、Matter(16 章 4 節)、RAM(16 章 3 節)、ポート(16 章 6 節)、PACBTI(17 章 1 節)、PSA(17 章 1 節)、TF-M(17 章 4 節)、アーキテクチャ(17 章 1 節)、ELE(19 章 5 節)、EdgeLock(19 章)、PRINCE(19 章 4 節)、ブート(19 章 8 節)、CPMS(21 章 2 節)、HSM(21 章 6 節)、RMA(21 章 5 節)、プリプロビジョニング(21 章 7 節)、独立セキュリティコア(21 章 7 節)、AVA_VAN(22 章 3 節)、標準的(22 章 2 節)、第三者評価(22 章 2 節)

1. 要件から機能へ

要件 → 機能 → 品種 の降ろし方要件(02・03 章)必要な機能(04〜08 章)品種の条件(17〜22 章)改ざんされた機器を動かさないセキュアブートROM ベースの検証と OTP 鍵1 台破られても波及させない機器固有鍵とその不可視化鍵ラッピング/KMU/SE出荷後 10 年、直し続けるセキュア OTA とロールバック防止A/B 容量と単調カウンタ解析されても鍵を守るデバッグ制御とライフサイクル認証つきデバッグと LCSこの表が埋まらない要件は、そもそも実現できない。基板を起こす前にここで気づく
「この機能が欲しい」から入ると必ず過不足が出る。要件から降ろすと、必要なものだけが残る

SoC 機能セレクタ

要件を選ぶと、必要なハードウェア機能と、それを持つベンダ・品種の傾向が表示される。

3 つのレベルで考える

要件から機能へ — 3 つのレベルレベル A: 基本セキュアブート/デバッグ無効化/機器固有鍵/セキュア OTA・ロールバック防止/TLSレベル B: 標準+ TrustZone による分離/鍵の不可視化/フラッシュ暗号化/認証付きデバッグ/良質な TRNGレベル C: 高+ DPA・フォールト対策/PUF/独立セキュリティコア/第三者認証クラス 1〜2規制の最低限クラス 3EU 市場の一般 IoTクラス 4〜5決済・重要インフラ・自動車評価コスト低
「この機能が欲しい」から入ると必ず過不足が出る。02 章で決めた攻撃者クラスからレベルを選び、レベルから必要な機能を降ろすと、必要なものだけが残る
レベル想定必要な機能
レベル A: 基本クラス 1〜2(好奇心・愛好家)。規制の最低限を満たすセキュアブート、デバッグ無効化、機器固有鍵、セキュア OTA、TLS
レベル B: 標準クラス 3(犯罪者)。EU 市場向けの一般的な IoT上記 + 分離(TrustZone)、鍵の不可視化、フラッシュ暗号化、認証付きデバッグ
レベル C: 高クラス 4〜5。決済・重要インフラ・自動車上記 + 物理攻撃対策(DPA / フォールト)、セキュアエレメント、第三者認証

レベル A — 必須の最低ライン

これを満たさない製品は、2025 年以降の市場では通用しない。

#要件必要な機能章
1ファームウェアの完全性セキュアブート(ROM ベース)、ROTPK を焼く OTP05
2ファームウェアの更新A/B 面が取れるフラッシュ容量、署名検証13
3ロールバック防止単調カウンタ(OTP ビットでも可)13
4機器固有の ID と鍵TRNG、鍵の保管先、プロビジョニング手段08, 12
5デバッグの遮断読み出し保護 / デバッグ無効化11, 14
6通信の保護TLS が動く RAM/フラッシュ、できれば公開鍵アクセラレータ08, 16
7デフォルトパスワードの廃止(ソフトウェア設計)03
8脆弱性対応の体制(プロセス)SBOM、開示ポリシー15

フラッシュ容量が最初の関門になることが多い.

\[ \text{必要なフラッシュ} \approx \text{ブートローダ(20〜60 KB)} + \text{アプリケーション} \times 2 + \text{スクラッチ} + \text{データ} \]

アプリケーションが 200 KB なら、最低でも 512 KB、実用上は 1 MB 欲しい。 企画段階でここを見誤ると、後で更新機能が入らなくなる。

レベル B — 標準的な IoT 製品

レベル A に加えて:

#要件必要な機能章
9脆弱性を突かれても鍵を守るTrustZone-M(Armv8-M)、周辺と DMA の分離07
10鍵を CPU に見せない鍵ラッピング / KMU / DS ペリフェラル / SE06
11外部フラッシュの保護オンザフライ復号(OTFDEC / PRINCE / Flash Encryption)06
12RMA 対応認証付きデバッグ、または鍵消去つき RMA 状態11, 14
13ライフサイクル管理不可逆な状態遷移の機構14
14良質な乱数NIST SP 800-90B / AIS 31 準拠の TRNG08
15認証取得の下地PSA Certified Level 2 以上を取得したチップ03, 17

レベル C — 高セキュリティ

レベル B に加えて:

#要件必要な機能章
16サイドチャネル耐性DPA 対策済みの暗号エンジン(ST の SAES など)09
17フォールト耐性電圧/クロック/温度/光センサ、冗長化された保護判定10
18鍵が保存されないPUF06
19最強の分離独立したセキュリティコア(ELE / HSE / HSM)07, 19, 21
20長期鍵の保護セキュアエレメント(CC EAL6+ / AVA_VAN.5)22
21第三者評価PSA Certified Level 3 / SESIP 4+ / CC AVA_VAN.4+03

2. SoC 選定の実務

評価すべき項目

カテゴリ項目
コアArmv8-M(TrustZone)か。Armv8.1-M(PACBTI)か
メモリフラッシュ容量(A/B + ブートローダ + TF-M)、RAM
RoTROM ベースのセキュアブート。ROTPK のスロット数と失効機構
OTP容量。何を焼けるか。読み出し保護の粒度
鍵の保管鍵ラッピング/PUF/鍵スロット。平文が CPU に出ないか
分離TrustZone、周辺の割り当て粒度、DMA の分離
暗号AES(モード)、SHA、公開鍵アクセラレータの性能、DPA 対策
乱数標準準拠、エントロピーレート、健全性テスト
外部メモリオンザフライ復号の有無、完全性の扱い
デバッグ認証付きデバッグ、権限の粒度
ライフサイクル状態の種類、RMA 対応、遷移の認証
プロビジョニングベンダの支援(SFI / EdgeLock 2GO / CPMS など)
認証PSA Certified のレベル、SESIP、CC
ソフトウェアTF-M / MCUboot の対応、ドキュメントの充実度
サポート脆弱性開示ポリシー、セキュリティアドバイザリの発行実績
供給長期供給の保証(10〜20 年)

最後の 3 つが、実は最も差が出る.

データシートの機能一覧だけでなく、 「そのベンダが過去にどう振る舞ったか」を調べること。

調べ方

  1. 候補チップの Security Application Note を全部読む → 「機能の一覧」ではなく「どう使うか」が書かれているか
  2. PSA Certified の Web サイトで認証状況を確認する → Level 1 / 2 / 3 のどれか。証明書の日付
  3. 公知の攻撃事例を検索する → 「チップ名 + glitch」「チップ名 + fault injection」「チップ名 + CVE」 → 事例があること自体は失格ではない。★ 対応したかを見る
  4. ベンダのセキュリティアドバイザリのページを見る → 過去の発行実績。対応の速さ。情報の詳しさ
  5. リファレンス実装を実際にビルドして動かす → ★ これが最も重要。ドキュメントどおりに動くか

5 番目を必ずやること.

「TrustZone 対応」「TF-M 提供」と書かれていても、 実際にビルドすると通らない、サンプルが古い、ドキュメントと合わない ということが起こりうる。

評価ボードで、セキュリティ機能を全部有効にしたサンプルを動かす。 ここで詰まるなら、量産開発ではもっと詰まる。

3. 設計チェックリスト

設計レビュー用チェックリスト

分野を選んで、設計・コードレビューで使える形で確認できる。

企画・アーキテクチャ段階

SoC 選定段階

鍵とプロビジョニング

実装

検証・出荷

運用

4. よくある失敗パターン

#失敗結果対策
1全台に同じ鍵1 台の解析で全台が破られる機器固有鍵(12 章)
2デバッグポートを開けたまま出荷ファームウェアと鍵が抜かれるLCS の遷移を量産手順に(14 章)
3TLS の証明書検証を無効化中間者攻撃が成立する実機で拒否試験(16 章)
4ファームウェアに鍵をハードコードstrings で出るCI で自動チェック(11 章)
5ロールバック防止を実装していない修正前の版に戻されるSVN + 単調カウンタ(13 章)
6フラッシュ容量が足りず OTA を諦める脆弱性が直せない企画段階で容量を確保(13 章)
7出荷直前にセキュリティを有効化して動かない「今回は無効で出そう」早い段階から常用(14 章)
8署名検証で公開鍵を OTP と照合していない攻撃者の鍵で通る実装レビュー(05 章)
9サンプルコードのテスト鍵をそのまま使用誰でも署名を作れる鍵の分離(14 章)
10UART に root シェルが出ている分解するだけで乗っ取られる量産ビルドから除去(11 章)
11クラウド側の紐づけ解除を忘れる元所有者が新所有者を覗けるリセット処理の設計(14 章)
12脆弱性情報を追跡していない既知の脆弱性を放置。CRA 違反SBOM + 自動照合(15 章)

1〜4 番が圧倒的に多い.

どれも高度な技術を必要としない。 知っていれば防げるものばかりである。

DPA 対策や PUF を検討する前に、この 4 つを潰すこと。

5. 段階的な導入計画

段階的な導入計画 — 全部を一度にやろうとすると何も進まない第 1〜2 歩数週間第 3〜4 歩1〜4 か月第 5〜6 歩2〜4 か月+継続第 7〜8 歩次期製品以降既存製品にも適用できる① EN 303 645 の基本項目② 出荷前チェックリスト鍵と起動の土台③ 機器固有鍵の導入④ セキュアブート(MCUboot)運用の体制⑤ セキュア OTA とロールバック防止⑥ SBOM と脆弱性管理(CRA の中核)次の世代⑦ 分離⑧ 物理対策第 1 歩と第 2 歩は、ハードウェアを変えずに設定とビルド構成の見直しだけで効くいま出荷している製品にも今日から適用できる——ここから始めるのが最も費用対効果が高い
順番が大事になる。鍵の入れ物(SoC)を決める前に OTA の体制を作っても回らないし、逆に OTA なしでセキュアブートだけ入れても更新できない機器が残る

すべてを一度にやろうとすると、何も進まない。

段階やること期間の目安
第 1 歩ETSI EN 303 645 の ★1 項目(デフォルトパスワード廃止、報告窓口、攻撃面の削減)(03 章)数週間
第 2 歩出荷前チェックリスト(11 章)を通す。デバッグ遮断、秘密の除去数週間
第 3 歩機器固有鍵の導入(12 章)。プロビジョニング済み SE を検討1〜3 か月
第 4 歩セキュアブートの導入(05 章)。MCUboot を使う2〜4 か月
第 5 歩セキュア OTA(13 章)。ロールバック防止まで2〜4 か月
第 6 歩SBOM と脆弱性管理の体制(15 章)。CRA 対応の中核継続
第 7 歩分離(TrustZone)の導入(07 章)。次の SoC 世代から次期製品
第 8 歩物理攻撃対策(09 章・10 章)。必要な製品のみ必要に応じて

第 1 歩と第 2 歩は、既存製品にも適用できる.

ハードウェアを変えずに、 設定とビルド構成の見直しだけで大きく改善する。

今日から始められるのは、ここである。

6. 姉妹シリーズとの関係

このシリーズは、暗号やスケジューリングの詳細には踏み込んでいない。 より深く知りたい部分は、以下を参照してほしい。

内容参照先
有限体、CRC、RSA、楕円曲線、AES の中身動いて理解する暗号と誤り訂正
RTOS の分離、割り込み、排他制御動いて理解する OS(FreeRTOS)
信号処理動いて理解する DSP
統計・リスク評価の基礎動いて理解する統計学
スマートホーム機器の実装動いて理解する Matter

7. このシリーズのまとめ

部学んだこと
I. 前提攻撃者が現物を持てる。守るのは「破られない」ではなく「割に合わない」。規制が要件を決める
II. 信頼の基点RoT は小さく不変に。セキュアブートは公開鍵の照合が核心。鍵はCPU に見せない。分離で壊れても鍵は守る。乱数が全部の土台
III. 物理攻撃DPA は1 バイトずつ独立に破れる。グリッチは数万円でできる。攻撃はファームウェア解析から始まる
IV. ライフサイクル機器固有鍵が最大の防御。更新できない機器は終わり。時期で開ける穴が違う
V. ソフトと通信セキュアブートは脆弱なコードを止めない。TLS は正しく使えば安全
VI. 各社の実装独立セキュリティコアへの収束、プリプロビジョニングの普及。どの会社も同じ概念を違う名前で呼んでいる

最後に、最も重要なことを繰り返す。

高度な対策より先に、基本の穴を全部塞ぐこと。

この 5 つができていない製品に、DPA 対策は必要ない。 攻撃者は、常に最も安い経路を選ぶからである。