注释: 对于 SHA-3 身份验证,请始终使用 Keccak SHA-3 来计算启动头文件、PPK 散列和启动镜像上的散列。NIST-SHA3 适用于 ROM 未加载的所有其他分区。
生成的签名使用基于下表的 Keccak-SHA3 或 NIST-SHA3:
所用身份验证证书 (AC) | 签名 | SHA 算法和 SPK eFUSE | 用于生成签名的私钥 |
---|---|---|---|
分区头文件 AC(由 FSBL/FW 加载) | SPK 签名 | 如果使用 SPKID eFUSE,则使用 Keccak;如果使用用户 eFUSE,则使用 NIST | PSK |
BH 签名 | 始终使用 Keccak | SSKheader | |
头文件签名 | 始终使用 Nist | SSKheader | |
BootLoader (FSBL) AC(由 ROM 加载) | SPK 签名 | 始终使用 Keccak;针对 SPK 始终使用 SPKID eFUSE | PSK |
BH 签名 | 始终使用 Keccak | SSKBootloader | |
FSBL 签名 | 始终使用 Keccak | SSKBootloader | |
其他分区 AC(由 FSBL FW 加载) | SPK 签名 | 如果使用 SPKID eFUSE,则使用 Keccak;如果使用用户 eFUSE,则使用 NIST | PSK |
BH 签名 | 始终使用 Keccak 填充 | SSKPartition | |
分区签名 | 始终使用 NIST 填充 | SSKPartition |
示例
示例 1:以下 BIF 文件利用一组密钥文件对分区进行身份验证:
image:
{
[fsbl_config] bh_auth_enable
[auth_params] ppk_select=0; spk_id=0x00000000
[pskfile] primary_4096.pem
[sskfile] secondary_4096.pem
[pmufw_image] pmufw.elf
[bootloader, authentication=rsa, destination_cpu=a53-0] fsbl.elf
[authenication=rsa, destination_cpu=r5-0] hello.elf
}
示例 2:以下 BIF 文件针对每个分区使用一个独立辅助密钥对分区进行身份验证:
image:
{
[auth_params] ppk_select=1
[pskfile] primary_4096.pem
[sskfile] secondary_4096.pem
// FSBL (Partition-0)
[
bootloader,
destination_cpu = a53-0,
authentication = rsa,
spk_id = 0x01,
sskfile = secondary_p1.pem
] fsbla53.elf
// ATF (Partition-1)
[
destination_cpu = a53-0,
authentication = rsa,
exception_level = el-3,
trustzone = secure,
spk_id = 0x02,
sskfile = secondary_p2.pem
] bl31.elf
// UBOOT (Partition-2)
[
destination_cpu = a53-0,
authentication = rsa,
exception_level = el-2,
spk_id = 0x03,
sskfile = secondary_p3.pem
] u-boot.elf
}