Versal 身份验证支持 - 2023.2 简体中文

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

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

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 的累积安全启动操作

表 1. 累积安全启动操作
启动类型 操作 硬件加密引擎
身份验证 解密 完整性(校验和验证)
非安全启动
非对称硬件信任根 (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