HSM 模式 - 2023.2 简体中文

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

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

对于量产 (Production) 版本,FPGA 使用 HSM 模式,并且还可使用标准 (Standard) 模式。

标准模式

标准模式可生成包含嵌入式身份验证签名的比特流。在此模式下,私钥应可供用户用于生成经过身份验证的比特流。按如下方式运行 Bootgen:

bootgen -arch fpga -image all.bif -o rsa_ref.bit -w on -log error

下列步骤描述了如何在 HSM 模式下生成经过身份验证的比特流,其中私钥由安全团队进行维护,不可供用户使用。下图显示了 HSM 模式流程:

图 1. HSM 模式流程

阶段 0:使用虚拟密钥进行身份验证

这是针对给定比特流的一次性任务。对于阶段 0,Bootgen 可生成 stage0.bif 文件。

bootgen -arch fpga -image stage0.bif -w -o dummy.bit -log error

stage0.bif 的内容如下所示。如需了解格式,请参阅后续阶段。

the_ROM_image:
{
	[sskfile] dummykey.pem
	[authentication=rsa] plain.bit
}
注释: 经过身份验证的比特流包含头文件、实际比特流、签名和脚注。创建此 dummy.bit 的目的是以虚拟签名获取与经过验证的比特流格式相同的比特流。现在,将虚拟比特文件提供给 Bootgen 时,它会计算签名并在偏移处插入,以提供经过身份验证的比特流。

阶段 1:生成散列

bootgen -arch fpga
          -image stage1.bif -generate_hashes -log error

Stage1.bif 如下所示:

the_ROM_image:
{
	[authentication=rsa] dummy.bit
}

阶段 2:对散列 HSM 进行签名

这里使用 OpenSSL 进行演示。

openssl rsautl -sign
  -inkey rsaPrivKeyInfo.pem -in dummy.sha384 > dummy.sha384.sig

阶段 3:使用真实签名来更新 RSA 证书

Stage3.bif 如下所示:

bootgen -arch fpga -image stage3.bif -w -o rsa_rel.bit -log error
the_ROM_image:
{
	 [spkfile] rsaPubKeyInfo.pem
	 [authentication=rsa, presign=dummy.sha384.sig]dummy.bit
}
注释: 公钥摘要必须烧录到 eFUSE 中,在 HSM 模式下的阶段 3 的 rsaPubKeyInfo.pem.nky 文件中可找到此公钥摘要。