Linux のブート
IV 0 F7F8FDE08674A28DC6ED8E37;
Key Opt 229C993D1310DD27B6713749B6D07FCF8D3DCA01EC9C64778CBAF457D613508F;
2. 操作キーをデバイス キーとして使用し、暗号化されたブートローダーと残りのパーティションをまとめて完全な イメージを作成します。
bootgen -arch zynqmp -image stage2a.bif -o final.bin -w on -log error stage2.bifの例:
stage2:
{ [bootimage]fsbl_e.bin [
destination_cpu=a53-0, encryption=aes,
aeskeyfile=aes-opt.nky ] hello.elf
[
destination_cpu=a53-1, encryption=aes,
aeskeyfile=aes-opt1.nky ] hello1.elf
}
stage2 の aes-opt.nky の例:
Device xc7z020clg484;
Key 0 229C993D1310DD27B6713749B6D07FCF8D3DCA01EC9C64778CBAF457D613508F;
IV 0 F7F8FDE08674A28DC6ED8E37;
方法 2
まず、チーム A が opt_key オプションを使用してデバイス キーでブートローダーを暗号化し、それをチーム B に渡 します。チーム B は、操作キーをデバイス キーとして使用し、パーティションごとに個別に暗号化されたイメージを 作成します。最後に、チーム B は Bootgen を使用して、暗号化されたパーティションすべてと 暗号化されたブートロ ーダーをまとめて完全なイメージを作成します。
stage1.bif の例:
stage1:
{ [fsbl_config] opt_key
[keysrc_encryption] bbram_red_key [
bootloader,
destination_cpu=a53-0,
encryption=aes,aeskeyfile=aes.nky ] fsbl.elf
}
stage1 の aes.nky の例:
Device xc7z020clg484;
Key 0 AD00C023E238AC9039EA984D49AA8C819456A98C124AE890ACEF002100128932;
IV 0 F7F8FDE08674A28DC6ED8E37;
Key Opt 229C993D1310DD27B6713749B6D07FCF8D3DCA01EC9C64778CBAF457D613508F 2. 操作キーをデバイス キーとして使用し、残りのパーティションを暗号化します。
bootgen -arch zynqmp -image stage2a.bif -o hello_e.bin -w on -log error stage2a.bif の例:
stage2a:
{ [
destination_cpu=a53-0, encryption=aes,
aeskeyfile=aes-opt.nky ] hello.elf
}bootgen -arch zynqmp -image stage2b.bif -o hello1_e.bin -w on -log error
stage2b.bifの例: stage2b:
{ [aeskeyfile] aes-opt.nky [
destination_cpu=a53-1, encryption=aes,
aeskeyfile=aes-opt.nky ] hello1.elf
}
stage2a および stage2b の aes-opt.nky の例:
Device xc7z020clg484;
Key 0 229C993D1310DD27B6713749B6D07FCF8D3DCA01EC9C64778CBAF457D613508F;
IV 0 F7F8FDE08674A28DC6ED8E37;
{ [bootimage]fsbl_e.bin [bootimage]hello_e.bin [bootimage]hello1_e.bin }
注記: aes.nky の opt_key は aes-opt.nky のキー 0 と同じで、IV 0 は両方の nky ファイルで同じである必要が あります。
シングル パーティション イメージ
この機能は、Bootgen の U-Boot プロンプトで作成されたシングル パーティション (ビットストリームなしの) イメー ジの認証および暗号化の両方またはいずれかをサポートします。
注記: 複数パーティションを含むイメージはサポートしません。
セキュア イメージを読み込む U-Boot コマンド
zynqmp secure <srcaddr> <len> [key_addr]
このコマンドは、アドレス $src で $len bytes\ long のセキュア イメージを検証します。暗号化にキーを使用する必要 がある場合は、オプションで key_addr を指定できます。
認証のみのユース ケース
U-Boot で認証のみを使用する場合は、次の例に示すように bif を使用して認証イメージを作成します。
1. U-Boot で認証されるシングル パーティション イメージを作成します。
注記: elf ファイルを指定する場合は、複数のロード可能なセクションが含まれていないことを確認してくださ い。elf ファイルに複数のロード可能なセクションが含まれる場合は、入力を .bin 形式に変換して、その .bin を bif で入力として指定します。次に、bif の例を示します。
the_ROM_image:
{ [pskfile]rsa4096_private1.pem [sskfile]rsa4096_private2.pem
[auth_params] ppk_select=1;spk_id=0x1 [authentication = rsa]Data.bin
}
2. イメージが生成されたら、その認証イメージを DDR にダウンロードします。
3. 次の例のように、U-Boot コマンドを実行してセキュア イメージを認証します。
ZynqMP> zynqmp secure 100000 2d000 Verified image at 0x102800
4. 問題なく認証されると、U-Boot から実際のパーティションの開始アドレスが返されます。エラーがあった場合 は、エラー コードが表示されます。RSA_EN eFUSE をプログラムする場合、イメージ認証は必須です。eFUSE RSA がイネーブルの場合、ブート ヘッダーの認証はサポートされません。
KUP キーの暗号化のみがサポートされます。
認証フロー
次の例は、FSBL およびアプリケーションに対して認証を有効にし、PPK ハッシュ値の検証をスキップしたブート ヘ ッダー認証を有効にしてブートイメージを作成する方法を示しています。
the_ROM_image:
{ [fsbl_config] bh_auth_enable
[auth_params] ppk_select=0; spk_id=0x00000000 [pskfile] PSK.pem
[sskfile] SSK.pem [
bootloader,
authentication=rsa, destination_cpu=a53-0 ] ZynqMP_Fsbl.elf
[destination_cpu=a53-0, encryption=aes] App_A53_0.elf }