使用 HSM 模式创建启动镜像:PSK 未共享 - 2023.2 简体中文

Vitis 统一软件平台文档 嵌入式软件开发 (UG1400)

Document ID
UG1400
Release Date
2023-12-13
Version
2023.2 简体中文

下图显示了使用 HSM 模式时的阶段 0 到阶段 2 启动栈。它通过分发 SSK 来减少步骤数量。

此图使用 AMD Zynq™ UltraScale+™ MPSoC 器件来演示各阶段。

图 1. 通用 3 阶段启动镜像

启动流程

使用 HSM 模式创建启动镜像与使用标准流程利用以下 BIF 文件创建启动镜像类似。

all:
{
	[auth_params] ppk_select=1;spk_id=0x8
	[keysrc_encryption]bbram_red_key
	[pskfile]primary.pem
	[sskfile]secondary.pem
	[
	 bootloader,
	 encryption=aes,
 	aeskeyfile=aes.nky,
	 authentication=rsa
	]fsbl.elf
	[destination_cpu=a53-0,authentication=rsa]hello_a53_0_64.elf
}

阶段 0:使用 HSM 模式创建启动镜像

可信人员使用主私钥创建 SPK 签名。SPK 签名位于身份验证证书头文件、SPK 和 SPK ID 上。要为上述对象生成散列,请使用以下 BIF 文件代码片段。

stage 0:
{
	[auth_params] ppk_select=1;spk_id=0x3
	[spkfile]keys/secondary.pub
}

以下是 Bootgen 命令:

bootgen -arch zynqmp -image stage0.bif -generate_hashes

此命令的输出为 secondary.pub.sha384

阶段 1:分发 SPK 签名

可信人员向开发团队分发 SPK 签名。

openssl rsautl -raw -sign -inkey keys/primary0.pem -in secondary.pub.sha384 > secondary.pub.sha384.sig 

此命令的输出为 secondary.pub.sha384.sig

阶段 2:在 FSBL 中使用 AES 进行加密

开发团队使用 Bootgen 创建所需数量的启动镜像。开发团队使用:

  • 来自可信人员的 SPK 签名。
  • SSK、SPK 和 SPKID
Stage2:
{
	[keysrc_encryption]bbram_red_key 
	[auth_params] ppk_select=1;spk_id=0x3
	[ppkfile]keys/primary.pub
	[sskfile]keys/secondary0.pem
	[spksignature]secondary.pub.sha384.sig 
	[bootloader,destination_cpu=a53-0, encryption=aes, aeskeyfile=aes0.nky, authentication=rsa] fsbl.elf 
	[destination_cpu=a53-0, authentication=rsa] hello_a53_0_64.elf 
}
Bootgen 命令为:
bootgen -arch zynqmp -image stage2.bif -o final.bin