对于量产 (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 文件中可找到此公钥摘要。