画像
Satoshi Yamanaka
山中 聡
主任技師
掲載: 2021年12月20日

RH850 セキュリティソリューション

こんにちは、Renesas オートモーティブセキュリティ事業部 Principal Engineer  山中 聡です。私は3年間からルネサスのセキュリティチームに参加しました。私の部署は自動車セキュリティのカスタマーサポートを担当しています。このブログ記事を通じて、お客様にオートモーティブセキュリティの重要性を伝えられることを嬉しく思います。このブログ記事は、3 部構成のシリーズのパート 2 で、セキュア ブートとは何か、なぜそれが必要なのか、基本的な内容を読者に理解いただくことを目的としています。

RH850シリーズ用のセキュリティ用IPはICU-S、ICU-Mの2種類があります。ここでは、それぞれを利用した2パターンのセキュアブートの実現方法を紹介します。

ICU-S および ICU-M のセキュアブートは、HIS (現在の AUTOSAR) セキュアハードウェア拡張仕様(SHE仕様)に基づいて実装可能です。SHE仕様の詳細については、AUTOSAR SHE (URL: Specification of Secure Hardware Extensions (autosar.org))を参照してください。 SHE仕様はAUTOSAR SHEのサイトから現在は誰でも入手可能です。

画像
画像

ICU-Sを搭載したRH850製品におけるセキュアブートの実現方法

ICU-SはEVITA-light相当のインテリジェント暗号ユニットです。

セキュリティソフトウェアはICU-S搭載MCUのメインプロセッサエレメント (MainPE)上で動作します。MainPEはICU-S の特殊機能レジスタをインターフェイスとしてハードウェアリソース (暗号化アクセラレータやセキュアキーストレージなど)を使用します。

画像
Intelligent Cryptographic Unit - ICU-S

ICU-Sにはセキュリティ専用のCPUはありません。セキュアブートは非セキュアなCPU(PE1)から実行されます。改ざんを防ぐため、最初に実行されるセキュアブートプログラムはワンタイムプログラム (OTP)メモリに格納されます。また、リセットベクタはこの変更できないコードである必要があります。ICU-Sにおけるセキュアブートでは、OTPと共にICU-Sのみがアクセス可能な保護されたセキュアブートMAC鍵とセキュアブートMACスロットが使用されます。OTPメモリとICU-Sによってハードウェアによる”root of trust”が形成されます。

概要:

  • ハードウェアによる”root of trust”:
    • ICU-Sで保護された鍵のOTPメモリとストレージ
  • タンパ耐性:
    • MAC値およびMAC鍵は、ICU-Sのみアクセス可能なセキュアなメモリに格納されます。
  • 暗号アルゴリズム
画像

ICU-S 搭載RH850におけるセキュアブートの実行例:

  1. MCUリセット解除後、CPU(PE1)はOTPメモリにあるセキュアブートプログラムを実行します。
  2. セキュアブートプログラムは、ユーザプログラムAを検証します。
    • セキュアブートプログラムは、ユーザプログラムAおよびブートMAC鍵からCMAC値を計算します。
    • セキュアブートプログラムは、計算結果と"プログラムAのCMAC値"注1を比較します。
  3. Step 2での検証が成功した場合、PE1はユーザプログラムAを実行、ICU-Sの機能を使用して、ユーザプログラムBを検証します。
    • Step 2と同じです (プログラムA -> プログラムB)。
  4. Step 3での検証が成功した場合、ユーザプログラム (プログラムB)がPE1より実行されます。

注1:"プログラムAのCMAC値"はICU-Sが管理するSecure Data Flash内にも格納可能です。

ICU-Mを搭載したRH850製品におけるセキュアブートの実現方法

ICU-MはEVITA-medium相当のインテリジェント暗号ユニットです。

ICU-Mを搭載したMCUはインテリジェンス暗号ユニットプロセッサ (ICUP)と呼ばれる独自のCPUを持ちます。セキュリティソフトウェアはICUP上で実行されます。ICUPは暗号化アクセラレータやセキュアフラッシュメモリなど、ICU-Mのハードウェアリソースに排他的にアクセスできます。さらに、ICUPはメインプロセッサエレメント (MainPE)との通信のためのいくつかの共有リソースにアクセスすることができます。

MainPEで動作するアプリケーションソフトウェアは、暗号化アクセラレータやセキュアフラッシュなどのICU-Mのリソースに直接アクセスすることはできません。そのため、MainPEは定義されたインターフェイスを介してICUPにセキュリティサービスを要求する必要があります。このインターフェイスは、ICU-Mファームウェアの設計によって定義されます。ICU-Mを搭載したMCUは、共有メモリやメールボックスを介したプロセッサ間通信、およびプロセッサ間の割り込みをサポートします。

画像
Intelligent Cryptographic Unit - ICU-M

ICU-Mを使用する場合、セキュアブートはセキュアなICUPから実行されます。最初に実行されるセキュアブートプログラムはICU-Mのみがアクセス可能なセキュアコードストレージに格納されます。セキュアブートではICU-Mのみがアクセス可能なセキュアデータフラッシュ内に格納されているセキュアブートキーを使用してアプリケーションを検証します。セキュアブートキーとICU-Mによってハードウェアによる"root of trust"が形成されます。検証後、ICUPはMCU内の他のプロセッサエレメント(PE)をリセット状態から解放、各PEは動作を開始します。前述のように、暗号化アクセラレータやセキュアフラッシュメモリなどのICU-MのハードウェアリソースはICUPからのみアクセスされます。

概要:

  • ハードウェアによる”root of trust”:
    ICU-Mのセキュアコードストレージおよびセキュアブートプログラム。(攻撃者はICU-Mで保護されたセキュアブートプログラムを変更できません)
  • タンパ耐性:
    ブートMACはICU-Mにしかアクセスできないセキュアなデータフラッシュに格納されます。
  • 暗号アルゴリズム:
画像

ICU-M搭載RH850におけるセキュアブートの実行例 (対称アルゴリズム)

  1. MCUのリセット解除後、ICUPがブートプロセッサとして設定されます。
  2. セキュアブートプログラムは、ユーザプログラムAを検証します。
    • セキュアブートプログラムは、ユーザプログラムAおよびブートMAC鍵からCMAC値を計算します。
    • セキュアブートプログラムは、計算結果と"プログラムAのCMAC値"を比較します。
  3. Step 2での検証が成功した場合、ICU-M (セキュリティソフトウェア) はCPU(PE1)を起動します。
  4. PE1はユーザプログラムAを実行、ユーザプログラムAはICU-M (セキュリティソフトウェア)を使用してユーザプログラムBを検証します。
    • Step 2と同じです (プログラムA -> プログラムB)。
  5. Step 4での検証が成功した場合、ユーザプログラムBがPE1によって実行されます。
画像

ICU-S 搭載RH850におけるセキュアブートの実行例(非対称アルゴリズムの場合):

  1. ICUP は、MCUのリセット後にブートプロセッサとして設定されます。
  2. セキュアブートプログラムは、ユーザプログラムAを検証します。
    • セキュアブートプログラムは、ユーザプログラムAからメッセージダイジェスト (hash)を計算します。
    • セキュアブートプログラムは、ユーザプログラムAと公開鍵の署名からメッセージダイジェストを計算します。
    • セキュアブートプログラムは、両方のメッセージ ダイジェストを比較します。
  3. Step 2 での検証が成功した場合、ICU-M (セキュリティソフトウェア) はCPU(PE1)を起動します。
  4. PE1はユーザプログラムAを実行、ICU-M (セキュリティソフトウェア)を使用してユーザプログラムBを検証します。
    • Step 2と同じです (プログラムA -> プログラムB)。
  5. Step 4での検証が成功した場合、ユーザプログラムBがPE1によって実行されます。

結論

要約すると..

  1. ICU-SとICU-Mは「root of trust」と「root of chain」を確立することができます。
  2. ICU-S および ICU-Mにおけるセキュアブートは、AUTOSAR (SHE) HIS に基づいて実装できます。
  3. ICU-Mのセキュアブートは、署名検証に基づいて実装できます。

セキュアブートシリーズの第3部では、Philip Lapczynski氏がR-Car SOCデバイスにおけるセキュアブートコンセプトについて紹介しますので、ご期待ください。

この記事をシェアする