次に、秘密レッド キーを管理するチーム A (セキュア チーム) とチーム B (非セキュア チーム) の 2 つの開発チームが共同で作業している場合に、秘密レッド キーを共有せずに暗号化されたイメージをビルドする手順を説明します。チーム A は秘密レッド キーを管理します。チーム B は、開発およびテスト用に暗号化されたイメージをビルドしますが、秘密レッド キーにはアクセスできません。
チーム A はデバイス キー (Op_key
(操作キー) オプションを使用) を使用してブートローダーを暗号化し、それをチーム B に渡します。チーム B は Op_key
を使用してその他すべてのパーティションを暗号化します。
チーム B は、Bootgen を使用して、暗号化したパーティションとチーム A から受け取った暗号化されたブートローダーを 1 つの boot.bin にまとめます。
次に、イメージを作成する手順を説明します。
手順 - 1
まず、チーム A が opt_key
を使用してデバイス キーでブートローダーを暗号化し、それをチーム B に渡します。チーム B は、操作キーをデバイス キーとして使用し、すべてのパーティションと暗号化されたブートローダーをまとめて完全なイメージを作成します。
- ブートローダーをデバイス キーで暗号化します。
例 stage1.bif:bootgen -arch zynqmp -image stage1.bif -o fsbl_e.bin -w on -log error
stage1 のstage1: { [fsbl_config] opt_key [keysrc_encryption] bbram_red_key [ bootloader, destination_cpu=a53-0, encryption=aes,aeskeyfile=aes.nky ] fsbl.elf }
aes.nky
の例:Device xc7z020clg484; Key 0 AD00C023E238AC9039EA984D49AA8C819456A98C124AE890ACEF002100128932; IV 0 F7F8FDE08674A28DC6ED8E37; Key Opt 229C993D1310DD27B6713749B6D07FCF8D3DCA01EC9C64778CBAF457D613508F;
- 操作キーをデバイス キーとして使用し、暗号化されたブートローダーと残りのパーティションをまとめて完全なイメージを作成します。
stage2.bif の例:bootgen -arch zynqmp -image stage2a.bif -o final.bin -w on -log error
stage2 の aes-opt.nky の例: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 }
Device xc7z020clg484; Key 0 229C993D1310DD27B6713749B6D07FCF8D3DCA01EC9C64778CBAF457D613508F; IV 0 F7F8FDE08674A28DC6ED8E37;
手順 - 2
まず、チーム A が opt_key オプションを使用してデバイス キーでブートローダーを暗号化し、それをチーム B に渡します。チーム B は、操作キーをデバイス キーとして使用し、パーティションごとに個別に暗号化されたイメージを作成します。最後に、チーム B は Bootgen を使用して、暗号化されたパーティションすべてと暗号化されたブートローダーをまとめて完全なイメージを作成します。
- ブートローダーをデバイス キーで暗号化します。
例 stage1.bif:bootgen -arch zynqmp -image stage1.bif -o fsbl_e.bin -w on -log error
stage1 のstage1: { [fsbl_config] opt_key [keysrc_encryption] bbram_red_key [ bootloader, destination_cpu=a53-0, encryption=aes,aeskeyfile=aes.nky ] fsbl.elf }
aes.nky
の例:Device xc7z020clg484; Key 0 AD00C023E238AC9039EA984D49AA8C819456A98C124AE890ACEF002100128932; IV 0 F7F8FDE08674A28DC6ED8E37; Key Opt 229C993D1310DD27B6713749B6D07FCF8D3DCA01EC9C64778CBAF457D613508F
- 操作キーをデバイス キーとして使用し、残りのパーティションを暗号化します。
stage2a.bif の例:bootgen -arch zynqmp -image stage2a.bif -o hello_e.bin -w on -log error
stage2b.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
stage2a および stage2b のstage2b: { [aeskeyfile] aes-opt.nky [ destination_cpu=a53-1, encryption=aes, aeskeyfile=aes-opt.nky ] hello1.elf }
aes-opt.nky
の例:Device xc7z020clg484; Key 0 229C993D1310DD27B6713749B6D07FCF8D3DCA01EC9C64778CBAF457D613508F; IV 0 F7F8FDE08674A28DC6ED8E37;
- Bootgen を使用して上記の例をまとめて完全なイメージを作成します。
stage3.bif の例:Use bootgen to stitch the above, to form a complete image.
stage3: { [bootimage]fsbl_e.bin [bootimage]hello_e.bin [bootimage]hello1_e.bin }
注記:aes.nky
の opt_key はaes-opt.nky
のキー 0 と同じで、IV 0 は両方の nky ファイルで同じである必要があります。