Bootgen 支持使用 RSA-4096、ECDSA P384 曲线和 P521 曲线来执行 Versal 自适应 SoC 身份验证。NIST SHA-3 用于计算所有分区/头文件上的散列。散列上计算所得签名置于 PDI 中。
注释: 不同于 Zynq 器件和 Zynq UltraScale+ MPSoC,对于 Versal 自适应 SoC,身份验证证书置于分区之前。不支持使用 ECDSA P521 曲线对启动加载程序分区 (PLM) 进行身份验证,因为 BootROM 仅支持 RSA-4096 或 ECDSA-P384 身份验证。但是,可使用 P521 对任何其他分区进行身份验证。
Meta 头文件身份验证
对于 Versal 自适应 SoC,Bootgen 可根据 bif 属性“metaheader”下的参数对 meta 头文件进行身份验证。用法片段如下所示。
metaheader
{
authentication = rsa,
pskfile = psk.pem,
sskfile = ssk.pem
}
适用于 eFUSE 的 PPK 散列
Bootgen 可生成 PPK 散列并将其存储在 eFUSE 中以使 PPK 可信任。仅限含 eFUSE 模式的身份验证才需执行此步骤,针对启动头文件身份验证可跳过此步骤。来自 efuseppksha.txt 的值可编程到 eFUSE 中,以便使用 eFUSE 模式来执行身份验证。
BIF 文件示例
以下是一个简单的 BIF 文件:generate_hash_ppk.bif。
generate_hash_ppk:
{
pskfile = primary0.pem
sskfile = secondary0.pem
image
{
name = pmc_ss, id = 0x1c000001
{ type=bootloader, authentication=rsa, file=plm.elf}
{ type=pmcdata, load=0xf2000000, file=pmc_cdo.bin}
}
}
命令
用于生成 PPK 散列以进行 eFUSE 编程的命令如下所示:
bootgen –image generate_hash_ppk.bif –arch versal –w –o test.bin –efuseppkbits efuseppksha.txt
用于 Versal 自适应 SoC 的累积安全启动操作
启动类型 | 操作 | 硬件加密引擎 | ||
---|---|---|---|---|
身份验证 | 解密 | 完整性(校验和验证) | ||
非安全启动 | 否 | 否 | 否 | 无 |
非对称硬件信任根 (A-HWRoT) | 是(必需) | 否 | 否 | RSA/ECDSA(含 SHA3) |
对称硬件信任根 (S-HWRoT)(使用 eFUSE 黑密钥强制解密 PDI) | 否 | 是(必需的 PLM 和 Meta 头文件应使用 eFUSE KEK 来加密) | 否 | AES-GCM |
A-HWRoT + S-HWRoT | 是(必需) | 是(必需) | 否 | RSA/ECDSA(含 SHA3 和 AES-GCM) |
对 PDI 进行身份验证 + 解密 | 是 | 是(密钥源可为 BBRAM 或 eFUSE) | 否 | RSA/ECDSA(含 SHA3 和 AES-GCM) |
解密(使用用户所选密钥。密钥源可为以下任意类型,如 BBRAM/BHDR,甚至是 eFUSE) | 否 | 是 | 否 | AES-GCM |
校验和验证 | 否 | 否 | 是 | SHA3 |