September 2013
2
はじめに 車載用マイコンのセキュリティの課題 規格動向 セキュリティ ハードウェア 暗号アルゴリズム 32ビット車載用マイコン暗号エンジン 32ビット車載用マイコン Qorivva MPC5646C CSE (Cryptographic Services Engine) のデモ 応用例 まとめ 3
安全性と信頼性 車内ネットワークのハッキングについて いくつかの文献で報告されている もはやネットワーク接続された車はどれもハッカーの攻撃対象となりえる ソフトウェアは特に安全性に関するシステムでセキュアでなければいけない 不正複製された部品や ECU は乗用車の安全性と信頼性に影響する 車内ネットワークは外部の民生電子機器経由の攻撃から保護されなければいけない 資産の保護 走行距離情報の改ざんの保護 効果的な盗難防止と部品交換 改造からの保護 新機能ソフトウェアのダウンロードと実行可能化 プライバシと機密保持 車内情報 個人情報 使用者の嗜好 場所などは 外部から見えないように また追跡できないように保護されなければいけない 5
2012 年 4 月 ETAS (Bosch 関連会社 ) は Escrypt を買収 Audi, BMW and Escrypt Freescale Product with CSE first SHE imp. HIS - SHE MPC5646C - CSE Mission Design, verify, and prototype an architecture for automotive on-board networks EVITA - NEC, IFX, Bosch, Escrypt... EVITA - Low/Medium/High Sec. Modules 55nm Freescale Product with HSM MPC5746M / MPC5748G - HSM PRESERVE Escrypt, Renault, Fraunhofer Tier1 author of HIS-medium Spec. Mission Design, implement, and test a secure and scalable V2X Security Subsystem V2X Sec.System HIS - HSM 2008 2009 2010 2011 2012 6
欧州 OEM がサードパーティ escrypt に対し SHE 規格策定を指示 SHE 規格は公式にHIS (OEM initiative software) 規格として取り込まれる SHE はオープンソース規格として開発される フリースケールは2008 年からSHE 規格策定に協力 SHE 規格は技術部分についてのみ言及その実装方法 過程 最終形態については触れていない SHE 規格リンク : http://portal.automotive-his.de/index.php?option=com_content&task=view&id=31&itemid=41 7
SHEは機能についての規格で 実際にはMCUの周辺回路として実装する必要がある 暗号方式 : AES-128, ECB + CBC メッセージ認証符号 (MAC): AESベース CMAC SecureBoot: フラッシュメモリ サイズの5% (32-128 kbytes) 10ms 以内で処理 鍵 : 汎用鍵 KEY_<1..10> と付随する write protectionなど属性フラグ 28-bit カウンタ 120-bit UID value BOOT_MAC_KEY & BOOT_MAC MASTER_KEY RAM_KEY PRNG 疑似乱数生成器 ユーザ アクセス関数 19 個 ( 例えば 暗号化 復号化など ) SHE 規格では未対応 セキュリティをより強化する特別なプロセス デバイスの物理解析に対する防備 8
3 つのレベルのハードウェア セキュリティ モジュール High-Level (Vehicle Level) Medium-Level (ECU Level) Low-Level (Sensor/Actuator Level) UTC Clock AES-PRNG AES-128 EVITA HW-IF EVITA Security Modules Internal RAM 64 KBytes Internal NVM 32+10 KBytes Internal Core 50-250 MHz Sec. Counter Qorivva は Mid レベルをサポート AES-128, PRNG コア処理 25-100MHz ECC-256 NIST FIPS GF(p) WHIRLPOOL AES based HASH プロジェクトの目標セキュリティ関連部品とやりとりされる情報が外部からの攻撃に対し保護が必要な 車載向けネットワークの設計 検証 試作 2011 年にプロジェクトは完了 9
Tier1 主導のセキュリティ モジュール規格 : HSM First samples 2010 年 11 月 HIS は Mid レベルのセキュリティ モジュール規格化を目標 Evita MediumとTier 1の結果を再利用 2012 年 Evita Medium/HSM が HIS 規格に取り込まれることを期待 Evita に続くプロジェクト PRESERVE (Preparing Secure Vehicle-to-x Communication Systems) ミッション セキュアかつスケーラブルな V2X( 車 - 他間通信系 ) セキュリティ サブシステムの設計 実装 検証 Evita Full module をベースにしている 2011 年 1 月 2014 年 12 月 10
フリースケールはこれらセキュリティ規格に 完全対応した製品を既に提供済み セキュリティ規格 Evita Low HIS-SHE HIS-Medium (EVIT-Medium) EVIT-High 主な機能 CSE モジュール HSM モジュール Unique ID 暗号エンジン フラッシュメモリ固定コマンド supported by MPC5646C ユーザプログラマブル supported by MPC5746M & MPC5748G 公開鍵暗号 HASH 11
構成 共通鍵暗号 One 1つの共通鍵で暗号化 復号化 key for encoding and decoding Bob Alice 公開鍵暗号 Key 公開 pair / 秘密の (public/non-public) 2つの鍵で enc 暗号化 復号化 Bob Alice Qorivva では共通鍵暗号 AES をサポート 共通鍵 Alice の公開鍵 Alice の秘密鍵 長所 Compact 実装が容易 implementation N 鍵の配送問題を解決 High 高速 performance Supports verification Key 鍵長 lenght (<512 (<512 bits) bits) 短所 Key 鍵の交換が別途必要 exchange problem Long 計算量が大きい calculation time No 多数の相手先への配信不向き message broadcasting アルゴリズム DES, AES RSA, ECC 13
構成 Electronic codebook (ECB) 電子コードブック モード ブロック単位で暗号化 復号化 Each block is encoded/decoded indecently from the others Cipher-block chaining (CBC) 暗号ブロック連鎖モード 前回の暗号文と平文ブロックを revious result is XORed with actual XOR plaintext Ciphertext Plaintext Plaintext フロー Key Block Cipher Encryption IV Key Block Cipher Encryption Block Cipher Encryption Plaintext Ciphertext Ciphertext 長所ランダム アクセス可能 Rando ブロックサイズより長いメッセージに対応 Secure for messages longer as block size 短所 例 統計的にブロック サイズより長いメッ Insecure for message longer as the block セージはセキュアではない size (statistical analysis) ECB No ランダム アクセス不可 random access possible, (before the last ( メッセージの途中から復号化できない block can be decode all other must be ) decode) CBC 14
メッセージ認証符号 (Message Authentication Code) メッセージを認証するための短い符号 ( コード タグ ) 送信者と受信者の共通鍵でメッセージを暗号処理して生成する短い符号 メッセージの偽造や改ざんを検出 送信者の暗号化されていないメッセージが 他者から違法に改ざんされておらず信頼できると認証すること 代表的な方式 CBC-MAC, CMAC, 以下の HMAC 類 Qorivva では Secure Boot に必要な CMAC をサポート 15
NIST recommendation 800-38B 暗号処理として AES-128 を使ったメッセージ認証符号 インターネットで使われている IP Sec と同じ方式 送信者と受信者の共通鍵でメッセージを暗号処理 IV メッセージ P i-1 P i P i+1 L*u この CMAC 符号が Secure Boot 等に使われる E k E k E k C i-1 C i C i+1 暗号文 CMAC 符号 ( コード タグ ) 16
CSE モジュール - HIS 規格である SHE- Specification (Version 1.1) を実装 120 MHz 動作 32-bit セキュアコア AES 暗号モード ECB & CBC サポート 処理能力 100 Mbit/sec レイテンシ 2μs CSE モジュール インタフェース クロスバー (XBAR) マスタ コアコマンド用 IP SkyBule IF セキュア フラッシュに鍵情報 CSE しかアクセスできない PRNG 疑似乱数生成器 アナログ乱数素子をシードにする on/ off CSE Block Debugger connected DEBUG JTAG NEXUS FLASH Sec. FLASH Test Interface Array Test Interface BIU Host to CSE Interrupt IP SkyBlue-IF Peripheral Bridge PB-IF MI UTI INTC BIU INTC Secure Firewall Host Inter. CSE Core AES ROM XBAR-IF RAM Core edma FlexRay Slaves Masters XBAR MPU 鍵のプログラミング鍵の持ち主はセキュア フラッシュに鍵を書くことはできるが 読むことはできない 書いた人しか鍵は知りえない仕組み RNG SRAM 17
SHE コマンド例 ENC_ECB(Key ID, 平文ブロック ) -> 暗号文ブロック DEC_ECB(Key ID, 暗号文ブロック )-> 平文ブロック VERIFY_MAC(Key ID, メッセージ )-> CMAC 符号 SHE で規定する鍵の更新 管理方法 鍵のプログラム LOAD_KEY(KDF 暗号化した鍵の値 ) 鍵の消去 DEBUG_AUTH(KDF) 鍵の持ち主しか知りえない MASTER_ECU_KEY を用いたオフライン計算による値 KDF を使って 直接鍵の取り扱いをせずに鍵が入っているセキュア フラッシュを更新 管理 この SHE エンジンを CSE として Qorivva に実装 鍵の代わりに KDF を使うコアソースに鍵の値を直接書かない SHE のポイント SHE エンジンだけが鍵を直接扱うことができる MCU コアのソフトから SHE エンジンを見るとブラックボックスで鍵を直接扱えない コマンド KDF SHE の鍵の定義 MCU コア CSE (SHE エンジン ) 鍵 戻り値 18
e200z0h core @ 80MHz クロスバー (XBAR) 内部バス 割り込みコントローラ ホストから HSMへ メモリ 28 kbyte 内部 SRAM フラッシュ データ用 : 2x 16kBytes 命令用 : 2x 64 kbytes; 1x 16kBytes 暗号処理コア C3 AES-128 処理能力 67.2 Mbytes/sec TRNG 疑似乱数生成器 アナログ乱数素子をシードにする DMA 機能 モニタ監視用 Sensor Interface 電源電圧 温度 クロック周波数 Evita-Medium 対応ファームウェアはユーザ プログラマブル 19
起動時は Secure boot Censored でデバッガ接続にはパスワードが必要 PC Hyper Terminal Bolero_master.ht Sending >XdTpg1&G$eA Receiving >ACK PC Hyper Terminal Bolero_slave.ht Receiving >Hello Sending >D4j 起動時は Secure boot Un-censored でデバッガ接続可能 Bolero 3M Secure Master 鍵 A UART CAN UART CAN Bolero 3M Secure Slave 鍵 A UID 2 CAN 暗号通信 鍵を持っていないハッカーが Slave になりすましてアクセスするが通信成立しない UART CAN Bolero 512k Fake Slave 21
Step 1: 電源起動後は CPU コアはまだ停止していて CSE がブート ローダコードを読む MPC5646C CSE module MAC value Step 2: CSE モジュールはブート用の鍵でブート ローダコードの MAC を計算 Step 3: CSE モジュールは計算した MAC とセキュア フラッシュのブート MAC を比較 合致していたらホスト I/F 経由でそれを知らせて 他の鍵のロックを解除 Random number generator Bus master Unique ID AES-128 2a 2c 2b Keys Boot MAC Boot key Host Interface 3a Step 4: CPU コアがブート ローダ実行開始 4 ブート ローダコードブート ローダ実行開始 1 Flash 3b Secure Boot 成功 3c の表示フラグを1 鍵のロック解除 MAC はブート用鍵で生成されブート ローダの改ざんを検出 ブートローダの信頼性を認証 MAC 計算値とセキュア フラッシュのブート MAC が合致すると Secure Boot 成功 暗号エンジン CSE module はブラックボックスで外から鍵を直接扱えない 22
Master ECU with MPC5646C Random number generators CSE module Unique ID AES-128 Keys Slave ECU with MPC5646C Random number generators CSE module Unique ID AES-128 Keys E.g. Key #9 CAN Key #9 1 乱数 3 復号化 ( 乱数 ) 2 暗号化 ( 乱数 ) 暗号エンジン CSE module はブラックボックスで外から鍵を直接扱えない Step 1: Master ECU は乱数を生成し Slave ECU に送信 Step 2: Slave ECU は受け取った乱数を鍵 #9 で暗号化し Master ECU に送信 Step 3: Master ECU は受信したメッセージを鍵 #9 で復号化 Step 4: Master ECU は復号化した乱数と 期待する値と比較 合致すれば Slave ECU は OK とみなす Master ECU と Slave ECU の共通鍵を使って通信相手を認証する この方法により違法な部品交換 改造を検出できる 23
Master ECU with MPC5646C Random number generators CSE module Unique ID AES-128 Keys Slave ECU with MPC5646C Random number generators CSE module Unique ID AES-128 Keys E.g. Key #2 CAN Key #2 Flash UID 期待値 Step 1: Master ECU は乱数を生成し Slave ECU に送信 1 乱数 3 復号化 ( 乱数 ;UID) Step 2: Slave ECU は受け取った乱数と自身の UID を鍵 #2 で暗号化し Master ECU に送信 2 暗号化 ( 乱数 ;UID) Step 3: Master ECU は受信したメッセージを鍵 #2 で復号化 暗号エンジン CSE module はブラックボックスで外から鍵を直接扱えない Step 4: Master ECU は復号化した乱数と UID と 期待する値と比較 合致すれば Slave ECU は OK とみなす MCU 毎に異なる Unique ID を使った通信相手の認証 この方法により違法な部品交換 改造を検出できる 24
Master ECU with MPC5646C Random number generators CSE module Unique ID AES-128 Keys Random number generators Slave ECU CSE module Unique ID AES-128 Keys E.g. Key #6 CAN Key #6 Step 1: Master ECU は乱数を Slave ECU に送る 3 復号化 ( 平文メッセージ ) 1 乱数 Step 2: Slave ECU は乱数を IV として鍵 #6 を使い平文メッセージを暗号化して送信 2 暗号化 ( 暗号文メッセージ ) Step 3: Master ECU は受け取った暗号メッセージを鍵 #6 で復号化 平文メッセージ 暗号エンジン CSE module はブラックボックスで外から鍵を直接扱えない 乱数により再試行攻撃から保護 暗号により傍聴から保護 25
MPC5646C Shadow Flash 領域 Censorship Password NVPWD0 &1 JTAG Censorship Password Register JTAG Port デバッガから password をコマンド入力 SYStem.Option KEYCODE 0x89ABCDEF01234567 NVSCC0&1 Censorship 制御コード 1)Un-censored パスワード保護無効 2)Censored パスワード保護有効 3)Lockout デバッガ接続不可能 パスワードが一致すればデバッガ接続可能 26
車載用マイコンのセキュリティの課題と必要性 車載向け部品市場における規格動向 32 ビット車載用マイコンのセキュリティ ソリューション MPC5646C CSE のデモの紹介 セキュリティ規格 Evita Low HIS-SHE HIS-Medium (EVIT-Medium) EVIT-High 主な機能 Unique ID 暗号エンジン フラッシュメモリ固定コマンド ユーザプログラマブル 公開鍵暗号 HASH CSE モジュール HSM モジュール supported by MPC5646C supported by MPC5746M & MPC5748G 27