メインコンテンツに移動

Root of Trust を実現する車載MCU RH850 および 車載SOC R-Car における Secure Boot の紹介 #3

画像
Philip Lapczynski
Philip Lapczynski
Principal Engineer, S/W
掲載: 2021年12月21日

本セキュリティブログを読む時間をとっていただき、ありがとうございます。このブログはセキュアブートに関する 3 部構成のシリーズのPart 3 です。前の2 つの記事をチェックされていない場合は、 ( パート1 – セキュアブートの概要 ) と (パート 2 – MCU デバイスのセキュアブート) をご覧ください。前回の記事では、同僚の山中さんがRH850 MCUデバイスにおけるセキュアブートを説明しました。このブログでは、私たちのArmベースであるルネサスR-Car Gen 3 SoCデバイスにおけるセキュアブートをカバーします。

R-Carでのセキュアブート

システム・オン・チップ(SoC)デバイスは、一般的なマイクロコントローラ・デバイスよりも複雑なブートシーケンスを持ちます。セキュアブートはブートチェーン全体を通じて完全性と信頼性を保証します。また、そのソフトウェアを秘密情報として保護するために、任意の暗号化された形で保存します。

画像
Example boot sequence

信頼の連鎖(CoT: Chain of Trust)を築く

R-Carではセキュアブートを提供するために、ルネサス製ハードウェアに根ざした信頼の連鎖(CoT: Chain of Trust) を構築します。Mask ROM と HBK (Boot Key Hash) は、変更できないトラストアンカー(Trust Anker) として機能します。これらは生産フェーズでは変更できません。ブートチェーン全体におけるCoTの各部品は、それ以前の (承認済みの) 部品によって検証されます。各要素を連鎖させることで、鎖の繋ぎのように、すべてのステージでの検証が元の信頼のルートを指し示すことができます。この検証プロセスの起点はR-Car のMask ROM になります。これらはリセット直後に実行されます。

画像
R-Car デバイスの信頼の連鎖

重要なポイント: ルネサスは、ハードウェアに根ざしたCoTを構築します

  • Mask ROMとHBK 機能は不変のトラストアンカーです。これらは変更することはできません。
  • CoTの各部品は、それ以前の (承認済みの) 部品によって検証されます。
  • この検証プロセスの起点は、R-Carデバイスの「Root of Trust」であるMask ROMです。

セキュアブート環境の準備

R-Car デバイスでは、セキュアブートは署名チェーンの準備から始まります。署名プロセスの前提条件としては、2 つの RSA 鍵 ペア (デバイス ルート 鍵ペアとセキュアブート 鍵ペア) の生成と、デバイス ルート公開鍵 ハッシュ (HBK)の生成が含まれます。お客様は、安全なOT環境で制御される固有のルート鍵を持つことになります。デバイス ルートおよびセキュアブートの秘密鍵は、システム全体のセキュリティを確保するために安全に格納する必要があります。鍵ペアが作成されると、ルネサスが提供するツールはルート公開鍵の暗号ハッシュを生成します。このルート公開鍵ハッシュ(HBK)はルネサスに提供され、ルネサスの製造工程内でR-Carデバイスにプログラムされます。HBKは、ルート公開鍵の完全性と信頼性を確認するためにセキュアブート・チェーンで使用されます。

画像
Secure Boot Sequence
セキュアブート シーケンス

ソフトウェアイメージの署名

環境の準備が完了すると、署名プロセスを開始できます。ツール(Signing Tool)はルート 鍵とセキュアブート鍵のペアとソフトウェアイメージを入力として取り込み、2つの証明書を生成します:  1) ルート公開鍵を含むルート鍵証明書と、2) セキュア ブート公開鍵とソフトウェアイメージ署名の内容を含むコンテンツ証明書。ソフトウェアイメージと証明書は、R-Carデバイスのメモリにプログラムされます。R-Car デバイスには公開鍵のみが格納されます。

画像
Secure boot signing process

R-Car デバイスでのセキュアブート

画像
Secure boot on an R-Car device

リセット後 (1) セキュアブート機能を呼び出します (2)。 セキュアブート機能は、ルート鍵とコンテンツ証明書を使用してソフトウェアを検証します (3)。 展開されたソフトウェアは、検証プロセスが成功した場合にのみデバイスによって実行されます (4)。

セキュアブート シーケンスの展開バージョンを次に示します。

画像

ステップ:

  1. デバイスがリセットされます。
  2. デバイスはMask ROMを実行します。デバイスのセキュリティが有効な状態の場合は、セキュアブートが実行されます。
  3. Mask ROMは、外部フラッシュから証明書とコンテンツをロードします
  4. Mask ROM はルート鍵証明書を解析し、ルート鍵を抽出します。ルート 鍵 ハッシュが計算され、既知のルート 鍵 ハッシュ (HBK) と比較されます。鍵が正しい場合は、次のステップに進みます。
  5. Mask ROMは、セキュアブート コンテンツ証明書内のブート 鍵のハッシュを、ルート鍵証明書 (前の手順で確認) にあるセキュアブート 鍵 ハッシュと比較します。チェックが成功した場合、公開鍵を使用してセキュアブート コンテンツ証明書の署名を検証します。セキュアブート コンテンツ証明書が有効な場合、コンテンツ証明書のデータを使用して次のブート ステージの有効性と完全性を計算します。すべての検証が正しかった場合、次のブートステージにジャンプします。
画像

ステップ:

  1. 以降のブートステージでは、Mask ROM セキュアブート関数を呼び出して、後のステージの内容を検証できます。この例では、IPL(Initial Program Loader)はMask ROM APIを呼び出してアプリケーション 1 から 3 を検証しています。ユーザは以降のステージにおいて、Mask ROM API を呼び出すことで、RSA 署名チェック用のハードウェアアクセラレータとハッシュ用の SHA アクセラレータを利用できます。
  2. Mask ROM は 、コンテンツ証明書が次のブート ステージをロードされていることを確認します。
  3. IPLは、すべてのソフトウェアイメージを検証することも、ロードするソフトウェアイメージのサブセットのみを検証することもできます。この例では、アプリケーション 1~3 と、アプリケーション 4 ~ 5 がそれぞれ別の方法でセキュアブート API を使用しています。
  4. IPLがコンテンツのロードと検証を完了すると、次のブートステージにジャンプします。

結論:

SoC は MCU デバイスよりも長いブート チェーンを持っています。R-Car デバイスのセキュアブート ロジックにより、設計者はブート プロセス全体で署名検証のハードウェア アクセラレーションを利用できます。ルネサスR-Carデバイスは 、信頼性の高い安全なシステムを構築するための信頼できる安全なルートとしてハードウェアを活用しています。 R-Car デバイスでのセキュアブートについて詳しく知ってくれてありがとう!

この記事をシェアする