IoT Security 14 · ライフサイクル状態と廃棄

Chapter 14

ライフサイクル状態と廃棄

この章がなぜ必要なのか——「開発中は開けたい、量産では閉じたい」という矛盾.

デバッグポートは、開発中には必須である。だが出荷時には閉じなければならない。 鍵は、量産時には書き込む必要がある。だが運用中は書き換えられては困る。

時期によって、開けるべき穴が違う。 この切り替えを安全に行うのが、ライフサイクル状態管理(LCS)である。

そして最後に——廃棄と所有権移転という、最も忘れられる問題がある。

この章で使う既出の用語(定義は各リンク先). セキュアブート(02 章 3 節)、物理攻撃(04 章 6 節)、eFuse(06 章 2 節)、不可(06 章 1 節)、Secure(07 章 3 節)、TrustZone(07 章 2 節)、必要(09 章 6 節)、フラッシュ暗号化(11 章 5 節)、Renesas(12 章 3 節)、ライフサイクル状態(12 章 1 節)

1. ライフサイクル状態とは

チップの「今どの段階か」を、不可逆に進む状態として持つ。

ライフサイクル状態(LCS)Chip ManufacturingDevelopmentProductionDeployedLocked / RMAベンダの工場開発者の手元自社の量産ライン市場故障解析全部開いているデバッグ可能鍵を書き込む全部閉じる認証つきで開く★ 状態は一方向にしか進まない。戻せないだから「量産ビルドで全機能を検証してから」進める
LCS は焼き切りの状態機械。テストを飛ばして進めてしまうと、直せないまま出荷することになる
性質内容
不可逆一度進めたら戻せない(OTP に記録される)
状態ごとに権限が違うデバッグ、鍵の読み書き、フラッシュの消去などが状態で決まる
ハードウェアで強制されるソフトウェアの分岐ではなく、回路で制御される(望ましい)

ライフサイクル状態を遷移させる

各状態で何ができ、何ができなくなるかを確かめられる。

2. 各社の実装

名前は違うが、考え方はほぼ同じである。

ベンダ状態の呼び名章
Arm PSAAssembly & Test → PSA RoT Provisioning → Secured → Non-PSA RoT Debug → Recoverable PSA RoT Debug → Decommissioned17
ST(STM32H5 など)OPEN → PROVISIONING → IROT_PROVISIONED → TZ_CLOSED → CLOSED → LOCKED18
ST(従来の RDP)RDP Level 0 → Level 1 → Level 218
NXP(LPC55 など)Blank → Development → Deployed → Returned → Bricked19
Renesas RA(DLM)CM → SSD → NSECSD → DPL → LCK_DBG → LCK_BOOT → RMA_REQ → RMA_ACK21
TIGP → HS-FS(Field Securable)→ HS-SE(Security Enforced)21
EspressifeFuse のビット群で表現(明示的な「状態」名はない)20
Silicon LabsSecure Boot / Secure Debug の設定と Tamper 設定の組み合わせ21

Renesas の DLM(Device Lifecycle Management、21 章)は、状態の設計が特に丁寧なので参考になる.

状態意味
CM (Chip Manufacturing)ルネサス工場出荷時
SSD (Secure Software Development)セキュア領域の開発中。全デバッグ可
NSECSD (Non-Secure Software Development)非セキュア側だけデバッグ可。セキュア側は保護される
DPL (Deployed)市場投入。デバッグ不可
LCK_DBGデバッグを恒久的にロック
LCK_BOOTブートインタフェースも恒久ロック
RMA_REQ / RMA_ACK返品分析用。鍵を消去してからデバッグを開ける

NSECSD の存在が実用的である。 セキュリティ部分の開発が終わったら NSECSD に進めれば、 アプリ開発チームはデバッグを続けられるのに、鍵は保護される。

RMA の状態も重要である。 次節で扱う。

3. RMA — 「返ってきた機器をどう調べるか」

これが実務で最も悩ましい問題である。

RMA のジレンマ出荷時に完全ロック安全。攻撃者もデバッグできない★ だが自社も故障解析ができない「返ってきた不良品の原因が分からない」出荷時に開けておく解析できる。歩留まり改善が回る★ だが攻撃者も開けられるデバッグポートは最も安い攻撃経路(11 章)
どちらも成立しない。だから「認証つきで開ける」という第三の道が用意されている

3 つの解法

解法内容評価
解析を諦める完全ロックする。返品は廃棄する安全だが、品質改善ができない
認証付きデバッグメーカーの鍵でだけ開けられる(11 章)最も望ましい
RMA 状態への遷移鍵を消去してからデバッグを開ける実用的。多くのベンダが対応

RMA 状態の仕組み

RMA 遷移 — 消してから開けるDeployedデバッグ不可、鍵ありRMA_REQ機器がチャレンジを出力するRMA_ACK★ 鍵とユーザデータを消去してから、デバッグポートを開く故障解析ができるだが機密は既に消えている順番が命。「開けてから消す」では、開いた瞬間に読まれる
消去と開放を不可分な 1 つの遷移にしてあるのがポイント。順番を選べる実装は危ない

「消してから開ける」という順序が肝である.

ただし——「鍵が消えた後の機器」では、 鍵が絡む不具合の解析はできない。トレードオフである。

認証付きデバッグとの組み合わせ

理想的には、次の 2 段階を用意する。

レベル開ける条件消去
限定デバッグメーカーの鍵で認証消去しない。鍵絡みの不具合も解析できる
フルデバッグメーカーの鍵で認証鍵を消去してから開く

Arm の ADAC(Authenticated Debug Access Control)は、 証明書に権限を記述することで、こうした段階的な制御を可能にしている。

4. 状態遷移の安全性

状態を進める処理そのものが攻撃対象になる。

攻撃内容対策
遷移を飛ばす「Production に進める」処理をグリッチで飛ばし、開いたままにする冗長チェック(10 章)、ハードウェアラッチ
状態を偽装する状態レジスタを書き換えるOTP に記録し、起動時にハードウェアが読む
戻す不可逆のはずの状態を戻すOTP のビットは物理的に戻せない設計にする
中断させる遷移の途中で電源を切る中間状態でも安全側に倒れる設計

「出荷時に状態を進め忘れる」が最も多い事故である.

量産ラインの手順書に「LCS を Production にする」が入っていないと、 全数が開いたまま出荷される。

対策:

これは技術ではなくプロセスの問題だが、実際に頻発している。

5. 開発と量産の切り分け

段階デバッグ鍵ファームウェア
開発全部開くテスト鍵(本番鍵は絶対に使わない)デバッグビルド
検証開くテスト鍵量産と同じビルド(デバッグ機能なし)
量産閉じる本番鍵量産ビルド
市場閉じる本番鍵量産ビルド

「テスト鍵と本番鍵を分ける」は絶対の原則である.

テスト鍵は開発者全員の PC にあり、CI にあり、時にはリポジトリにある。 これが本番に使われたら終わりである。

対策:

最後の点が重要で、LCS と鍵を連動させると、間違いが物理的に起きなくなる。

検証段階の重要性

量産ビルドで検証するよくある失敗開発ビルドでテスト動く量産ビルドを作って出荷→ 動かない正しい手順量産ビルドで全機能を検証動くそのまま量産するデバッグ機能を切り、LCS を Production 相当にした状態で検証すること。セキュア機能を有効にすると動かなくなる、は極めてよくある
「開発では動いた」は保証にならない。有効化した状態で通しの検証をしない限り、出荷後に必ず問題が出る

セキュリティ機能を有効にすると、動かなくなることは頻繁にある。

有効にすると壊れがちなもの理由
TrustZoneメモリ配置・周辺の割り当てミス
フラッシュ暗号化XIP のアドレス、ブート時間の増加
セキュアブート署名の付け忘れ、イメージ形式の不整合
デバッグ無効化「ログが出ないと分からない」ことに気づく
読み出し保護書き込みツールが動かなくなる

「セキュリティを有効にした状態」を、開発の早い段階から常用すること.

出荷直前に有効化すると、必ず問題が出て、 「時間がないから今回は無効のままで」という最悪の判断につながる。

6. 廃棄と所有権移転

最も忘れられる領域である。 だが規制は明確に要求している。

規制要求
ETSI EN 303 645 規定 11ユーザが個人データを削除できること
GDPR削除権(忘れられる権利)
CRAセキュアなデフォルトと、データ保護

消すべきもの

対象内容
ユーザデータ設定、履歴、映像、音声、位置情報
認証情報Wi-Fi パスワード、クラウドのトークン、ペアリング情報
機器固有鍵(場合による)所有権移転なら残す、廃棄なら消す
ログ動作履歴、ネットワークの痕跡

3 つのシナリオ

シナリオやること
工場出荷時リセットユーザデータと認証情報を消す。機器固有鍵は残す(再セットアップできるように)
所有権移転(中古売却)上に加えて、クラウド側の紐づけも解除する
廃棄すべて消す。機器固有鍵も含む

「クラウド側の紐づけ解除」が抜けがちである.

機器をリセットしても、クラウド上では元の所有者のアカウントに紐づいたまま、 ということが起きる。すると——

機器側のリセットと、クラウド側の解除を連動させる設計が必要である。 ETSI EN 303 645 の規定 11 でも、この点が触れられている。

確実に消す

手法内容注意
上書き0 やランダム値で上書きするフラッシュのウェアレベリングで残ることがある
暗号消去 (Crypto Erase)データを暗号化しておき、鍵だけを消す最も確実で速い
フラッシュの消去コマンドブロック消去予備ブロックに残ることがある
タンパー時の即時消去ハードウェア機能物理攻撃への対策も兼ねる

暗号消去(Crypto Erase)が最も優れている.

暗号消去 — 鍵を消せばデータは消えたのと同じ設計ユーザデータは常に機器固有の鍵 K で暗号化する消去K を消すだけフラッシュ全体を上書き消去すると時間もかかり、摩耗もする。鍵 1 個(数十バイト)を消せば、残ったデータは復元不可能になる
所有権移転・廃棄・工場出荷リセットのすべてで使える。設計段階から「全部暗号化」にしておくことが条件

これは SSD の「Secure Erase」や、 スマートフォンのファクトリーリセットで使われている手法と同じである。

設計の初期段階で「データは常に暗号化して保存する」と決めておくこと。 後から追加するのは難しい。

7. 経年と保守

長寿命機器(01 章)では、時間そのものが問題になる。

問題内容対策
証明書の期限切れ機器の証明書、サーバの証明書、CA 証明書更新の仕組み、期間の設計(12 章)
暗号の陳腐化SHA-1、RSA-1024、TLS 1.0 が使えなくなる暗号アジリティ(04 章)
時刻同期の喪失NTP サーバの停止、RTC の電池切れ複数の時刻源、証明書検証の設計
クラウドサービスの終了メーカーがサービスを止めるローカル動作へのフォールバック
PUF の劣化ビット反転率が上がる(06 章)誤り訂正の余裕、定期的な再エンロール
フラッシュの劣化データ保持期間(高温では短い)リフレッシュ、ECC

「サービス終了後の機器」は、規制の観点でも問題になりつつある.

メーカーがクラウドを止めると、機器が文鎮化する。 消費者保護の観点から、 「サービス終了後もローカルで動くこと」を求める動きがある。

03 章の PSTI・CRA の「サポート期間の明示」も、この文脈にある。 設計時に「クラウドがなくなったらどう動くか」を決めておくこと。

8. ライフサイクル設計のチェックリスト

#項目
1LCS の遷移が量産手順書に明記されているか
2出荷検査で LCS を確認しているか
3テスト鍵と本番鍵が分離されているか
4本番鍵は HSM にのみあるか(人が値を見られないか)
5量産と同じ設定で全機能の検証をしているか
6RMA の手順が決まっているか(認証付きデバッグ or RMA 状態)
7工場出荷時リセットで、消すものと残すものが定義されているか
8クラウド側の紐づけ解除が連動しているか
9ユーザデータが暗号化されて保存されているか(暗号消去のため)
10サポート終了後の動作が定義されているか
11証明書の有効期限が機器寿命と整合しているか
12LCS の遷移処理がフォールト耐性を持つか(10 章)

9. この章のまとめ

ポイント内容
LCS の役割時期によって開けるべき穴が違う。それを不可逆な状態で管理する
実装ベンダごとに名前が違うが、考え方はほぼ同じ
Renesas DLM の NSECSD非セキュア側だけデバッグ可。実用的な中間状態
RMA のジレンマ完全ロックすると故障解析できない
RMA の解法認証付きデバッグ、または鍵を消してから開けるRMA 状態
最多の事故出荷時に LCS を進め忘れる。プロセスで防ぐ
鍵の分離テスト鍵と本番鍵を絶対に分ける。本番鍵は HSM のみ
検証量産と同じ設定で全機能を検証する。早い段階から常用する
廃棄ユーザデータ・認証情報・鍵。シナリオごとに消すものが違う
クラウド連動紐づけ解除を忘れると、元所有者が新所有者を覗ける
確実な消去暗号消去(鍵だけ消す)が最も速く確実。設計初期に決めておく
経年証明書期限・暗号の陳腐化・サービス終了後の動作

ここまでで第 IV 部は終わりである。 次章から第 V 部——ソフトウェアと通信のセキュリティに入る。