在器件中,BootROM 可验证 FSBL,而 FSBL 或 U-Boot 则会使用公钥来验证后续分区。
- 验证 PPK:此步骤用于确定主密钥的真实性,主密钥用于对辅助密钥进行身份验证。
- PPK 可从启动镜像的 AC 中读取
- 生成 PPK 散列
- 散列化 PPK 将与从 eFUSE 检索得到的 PPK 进行比对
- 如果两者相同,则主密钥可信,否则安全启动失败
- 验证辅助密钥:此步骤用于确定辅助密钥的真实性,辅助密钥用于对分区进行身份验证。
- SPK 可从启动镜像的 AC 中读取
- 生成 SPK 散列
- 使用 PPK 通过验证 AC 中存储的 SPK 签名来获取 SPK 散列
- 将步骤 (b) 和步骤 (c) 中的散列进行比对
- 如果两者相同,则辅助密钥可信,否则安全启动失败。
- 验证分区:此步骤用于确定要启动的分区的真实性。
- 分区可从启动镜像读取。
- 生成分区散列。
- 使用 SPK 通过验证 AC 中存储的分区签名来获取分区散列。
- 将步骤 (b) 和步骤 (c) 中的散列进行比对
- 如果两者相同,则分区可信,否则安全启动失败
图 1. 验证流程图示
Bootgen 可通过 2 种方式创建身份验证证书:
- 提供 PSK 和 SSK。SPK 签名使用这 2 项输入来动态计算。
- 提供 PPK 和 SSK,并提供 SPK 签名作为输入。在 PSK 未知的情况下,可使用此方法。