IoT Security 01 · 組み込みセキュリティはなぜ難しいのか

Chapter 01

組み込みセキュリティはなぜ難しいのか

この章がなぜ必要なのか——「PC と同じつもり」で設計すると必ず破られる.

サーバやスマートフォンのセキュリティと、IoT 組み込み機器のセキュリティは、 前提条件が根本的に違う。

最大の違いは 1 つ。攻撃者が現物を手に持てることである。 ここから、他のすべての困難が派生する。

1. 決定的な違い — 攻撃者が現物を持っている

IT システムとの決定的な違いサーバ/クラウド攻撃者は手元に実物を持てないログインの試行回数を制限できる異常なアクセスを監視して遮断できる脆弱性が見つかれば即座に更新できる物理的な保護は データセンタが担う組み込み機器★ 攻撃者が現物を買って持ち帰れる★ 試行回数を制限できない(何度でも試せる)★ 誰も見ていない場所で解析される★ 更新が届くとは限らない。10 年動く★ 分解・加熱・給電を自由にされる
「攻撃者が現物を手に持てる」——この一点で、IT の常識がほとんど通用しなくなる

サーバは鍵のかかったデータセンターにある。スマホは持ち主が肌身離さず持っている。

IoT 機器は違う。 スマートロック、電力メータ、ネットワークカメラ、EV 充電器—— これらは誰でも買えるし、屋外に設置されている。

攻撃者は次のことができる。

できること意味
分解する基板を見て、チップの型番を読み、テストパッドを探せる
チップを剥がすフラッシュを外して読み出せる
電源を操作する電圧を落として演算を誤らせられる(10 章)
消費電流を測る鍵に依存する波形が取れる(09 章)
何度でも試せるオンラインサービスと違い、レート制限も監視もない
同じ製品を何台も買える1 台壊しても次がある。統計的な攻撃が成立する

これが最も重い制約である.

ネットワーク越しの攻撃には「試行回数の制限」「異常検知」「アカウントロック」という 防御が使える。物理的に手元にある機器には、それが一切効かない。

だから組み込みでは、「破られるまでのコスト」を上げるという考え方になる。 「絶対に破られない」は存在しない。「割に合わないほど高くつく」を目指す。

2. 攻撃コストと防御コストの非対称

守り方の基準は「割に合わない」ところまで上げること対策の強さ →コスト攻撃コスト資産の価値(守るものの値段)ここを超えれば、攻撃は割に合わない十分な領域
完全な安全は買えない。「守るものの価値より、破るコストのほうが高い」状態を作るのが目標になる

攻撃面を見る

機器の各部位をクリックすると、そこにどんな攻撃があり、いくらで実行でき、 何で防ぐのかが表示される。

攻撃の難度は、必要な設備と時間でおおむね決まる。

攻撃必要な設備費用の目安時間
デフォルトパスワードで入るなし0 円数秒
ネットワークスキャン・既知 CVEPC0 円数分
UART コンソールに繋ぐUSB シリアル変換数百円数分
SWD/JTAG でフラッシュを吸うデバッガ数千円数分
SPI フラッシュを外して読むクリップ、プログラマ数千円数十分
電圧グリッチ(10 章)ChipWhisperer 等の公開ツール数万円数時間〜数日
電力サイドチャネル解析(DPA、09 章)オシロ、解析 PC数万〜数十万円数時間〜数週間
レーザーフォルト・FIB(集束イオンビームでチップを直接加工する装置)・逆解析専用ラボ数百万〜数千万円数週間〜数か月

防御の投資は、この表のどこまでを想定するかで決まる。 一般消費者向け IoT なら、上から 5 番目くらいまでを止めれば実用上は十分である。 決済端末や自動車の ECU なら、下 3 行まで考える必要がある。

セキュリティは「レベル」ではなく「境界線をどこに引くか」である.

JIL(Joint Interpretation Library)という枠組みでは、攻撃の困難さを 経過時間・専門性・対象知識・機材へのアクセス・機材の高度さという項目で点数化し、 合計点で「Basic / Enhanced-Basic / Moderate / High / Beyond-High」に分類する。

Common Criteria の AVA_VAN や、GlobalPlatform の SESIP はこの点数を使う。 「どのレベルまで耐えるか」を最初に決めることが設計の出発点になる。

3. 5 つの構造的な困難

困難 1: リソースが足りない

資源サーバ典型的な IoT MCU
RAM数十 GB数十〜数百 KB
フラッシュ/ストレージTB 級数百 KB〜数 MB
CPU数 GHz × 多コア数十〜数百 MHz × 1 コア
電力無制限(AC 電源)コイン電池で数年

これが効いてくるのは、たとえばこういうところである。

だからハードウェアアクセラレータが重要になる.

AES・SHA・公開鍵演算・乱数生成をハードウェアで持っているかどうかで、 できる設計が変わる。08 章と 17 章〜21 章で、各社が何を持っているかを見る。

困難 2: 寿命が長い

製品寿命と脆弱性の時間軸出荷ここで作り込んだものが確定する2 年後使っている OSS に CVE が出る5 年後暗号アルゴリズムが非推奨になる10 年後まだ現場で動いている設計時に「更新できる仕組み」を入れておかなければ、この 10 年のどこかで必ず詰む
組み込み機器は出荷後 10 年動く。「今は安全」では足りず、「後から直せる」ことが要件になる
製品想定寿命
スマートフォン3〜5 年
PC5〜7 年
スマートメータ15〜20 年
産業用センサ・PLC10〜20 年
自動車15 年以上
ビル設備(空調・エレベータ)20 年以上

今日安全な暗号が、20 年後も安全とは限らない。

「暗号アジリティ」という要件.

アルゴリズムを後から差し替えられる設計にしておくこと。 ハードウェアアクセラレータが特定のアルゴリズムに固定されていると、これができない。

特にブート ROM に焼かれた署名検証アルゴリズムは変更できない。 20 年使う機器なら、RoT の署名アルゴリズムを何にするかは重い判断である。

困難 3: 更新が難しい

サーバなら毎日パッチを当てられる。IoT ではそうはいかない。

障害内容
通信帯域LPWA(LoRaWAN・NB-IoT)では数 KB の転送に数分〜数十分かかる
電力電池駆動機器では、OTA 1 回が電池寿命を大きく削る
稼働中断産業機器は「止められない」。再起動のタイミングが取れない
物理アクセス不能壁の中、地中、電柱の上に設置されている
A/B 面のフラッシュ二面持ちにする容量がない機器がある
失敗すると文鎮化更新中の停電でブートできなくなる恐怖

それでも更新機能は必須である.

EU CRA は「脆弱性に対処し、セキュリティ更新を提供すること」を法的義務にした(03 章)。 更新できない機器は、脆弱性が 1 つ見つかった時点で製品として終わる。

13 章で、この難しさに正面から取り組む。

困難 4: 開発チームに専門家がいない

これは技術的な困難ではないが、実際には最大の要因である。

典型的な事故.

どれも「知らなかった」で起きる。23 章のチェックリストは、これを防ぐためにある。

困難 5: サプライチェーンが長い

サプライチェーン — 「誰が鍵を持つのか」が決まっていないシリコンベンダモジュールメーカーODM / EMS設計・製造の受託会社ブランドメーカー販売設置業者ユーザ誰が鍵を持つ?誰がファームウェアを署名する?この線のどこかに必ず「決まっていない」箇所がある。そこが最初の穴になる
組み込み機器は多くの会社の手を渡って市場に出る。責任の切れ目が、そのままセキュリティの切れ目になる

鍵を誰が握るかという問題が、ここで発生する。

これへの技術的な答えが 12 章の「プロビジョニング」である.

「工場に平文の鍵を渡さずに、機器ごとに固有の鍵を入れる」ための仕組みが、 各社から提供されている(ST の SFI、NXP の secure provisioning、 Microchip の Trust&GO など)。18 章〜22 章で具体的に見る。

4. 何を守るのか — 保護資産の 4 分類

「セキュリティ」と一括りにせず、何を守るのかを分けて考える。

保護資産具体例守られないと
機器の完全性ファームウェア、設定乗っ取られてボットネットになる
機密情報秘密鍵、証明書、ユーザデータなりすまし、プライバシー侵害
知的財産アルゴリズム、モデル、ノウハウコピー品が出回る
可用性動き続けることサービス停止、安全機能の喪失

この 4 つは、必要な対策が違う。

保護資産主な対策章
完全性セキュアブート、セキュア OTA、ロールバック防止05, 13
機密性鍵の保管、フラッシュ暗号化、サイドチャネル対策06, 09
知的財産コード読み出し保護、フラッシュ暗号化、デバッグ無効化06, 11
可用性ウォッチドッグ、フェイルセーフ、DoS 耐性15, 16

「知的財産の保護」と「セキュリティ」を混同しないこと.

コードのコピー防止(IP protection)と、ユーザを守るセキュリティは別の目的である。 両方とも同じハードウェア機能(フラッシュ読み出し保護など)を使うので混ざりやすいが、 脅威モデルが違う。前者の敵は競合他社、後者の敵は攻撃者である。

そして——規制が要求するのは後者だけである。

5. 事故の実例から学ぶ

具体的な事例は、抽象論より遥かに説得力がある。代表的なものを挙げる。

事例何が起きたか教訓
Mirai ボットネット(2016)ネットワークカメラ等のデフォルトパスワードを総当たりして大規模 DDoSデフォルト認証情報の禁止は全規制の第 1 項目になった
Jeep Cherokee のリモート操作(2015)車載インフォテインメント経由で CAN バスに到達し、走行中の車を制御ネットワーク分離の欠如。ドメイン間の境界設計が要る
スマートメータの鍵共有複数の実例で、全台に同じ鍵が使われていた1 台の解析で全台が破られる(12 章)
家庭用ルータの UART シェル基板上の UART に root シェルが出ていた事例が多数出荷時のデバッグインタフェース無効化(11 章)
MCU の読み出し保護のグリッチ突破複数ベンダの MCU で、電圧グリッチによる保護解除が公開実証された保護機能にも耐フォールト設計が要る(10 章)
BLE スタックの脆弱性群複数のチップベンダの BLE スタックに、リモートコード実行を含む脆弱性サードパーティコードの脆弱性管理(15 章)

共通しているのは「基本の欠落」である.

高度な暗号技術が破られた例より、 「パスワードが初期値だった」「デバッグポートが開いていた」「全台同じ鍵だった」 という基本の欠落による事故のほうが、圧倒的に多い。

だから 23 章のチェックリストが実務では最も価値がある。 高度な対策より先に、基本の穴を全部塞ぐこと。

6. 「セキュリティは後付けできない」

これは決まり文句だが、組み込みでは文字どおりの意味を持つ。

決定後から変えられるか
SoC の選定変えられない(基板の作り直し)
Root of Trust の方式変えられない(ブート ROM は焼かれている)
鍵の保管場所(OTP のサイズ)変えられない
フラッシュ容量(A/B 面が取れるか)変えられない
デバッグポートの構造基板改版が要る
工場での鍵注入プロセス変えられるが、量産開始後は非常に高くつく
ファームウェアのロジック変えられる(OTA があれば)
TLS の設定変えられる

上 4 つは、基板を起こす前に決めなければならない.

つまりセキュリティ設計は、SoC 選定と同じタイミングで始める必要がある。 「ソフトウェアが完成したらセキュリティを追加しよう」では、 ハードウェアが要求を満たさないという結論になる。

23 章の選定指針は、まさにこの局面のためのものである。

7. この章のまとめ

ポイント内容
決定的な違い攻撃者が現物を手に持てる。試行回数の制限も監視も効かない
目標「破られない」ではなく「割に合わないほど高くつく」
5 つの困難リソース不足・長寿命・更新困難・専門家不在・長いサプライチェーン
暗号アジリティ20 年使う機器では、アルゴリズムを差し替えられる設計が要る
保護資産完全性・機密性・知的財産・可用性。対策が違うので分けて考える
事故の実態高度な攻撃より、基本の欠落による事故が圧倒的に多い
タイミングハードウェアに関わる決定は基板を起こす前。後付けできない

次章では、「何から守るか」を体系的に決める方法—— 脅威モデリングを扱う。