デバイス内では、公開キーを使用して、bootROM が FSBL を検証し、FSBL または U-Boot のいずれかが続くパーティションを検証します。
- PPK の検証: この手順では、プライマリ キーの認証が確立されます。プライマリ キーは、セカンダリ キーの認証に使用します。
- ブート イメージの AC から PPK が読み出されます。
- PPK ハッシュ値を生成します。
- ハッシュ化された PPK と、eFUSE から取得された PPK ハッシュ値を比較します。
- 同じ場合はプライマリ キーが信頼されます。そうでない場合はセキュア ブート エラーとなります。
- セカンダリ キーの検証 - この手順では、セカンダリ キーの認証が確立されます。セカンダリ キーはパーティションの認証に使用します。
- ブート イメージの AC から SPK が読み出されます。
- SPK ハッシュ値を生成します。
- PPK を使用して AC に格納されている SPK 署名を検証し、SPK ハッシュ値を取得します。
- ステップ (b) およびステップ (c) からのハッシュ値を比較します。
- 同じ場合はセカンダリ キーが信頼されます。そうでない場合はセキュア ブート エラーとなります。
- パーティションの検証: この手順では、ブートされているパーティションの信頼性を確立します。
- ブート イメージからパーティションが読み出されます。
- パーティションのハッシュ値を生成します。
- SPK を使用して AC に格納されているパーティション署名を検証し、パーティション ハッシュ値を取得します。
- ステップ (b) およびステップ (c) からのハッシュ値を比較します。
- 同じ場合はパーティションが信頼されます。そうでない場合はセキュア ブート エラーとなります。
図 1. 検証のフロー図
Bootgen は、次の 2 つの方法で認証証明を作成できます。
- PSK と SSK を供給します。これらの 2 つの入力を使用し、SPK 署名がオンザフライで計算されます。
- PPK、SSK、および SPK 署名を入力として供給します。この方法は、PSK がわからない場合に使用されます。