使用身份验证 - 2023.2 简体中文

Bootgen 用户指南 (UG1283)

Document ID
UG1283
Release Date
2023-10-18
Version
2023.2 简体中文

AES 加密属于含对称密钥的自验证算法,即要加密的密钥与要解密的密钥相同。此密钥必须加以保护,因为它属于私钥(因此存储至内部密钥空间内)。存在另一种身份验证格式,即 Rivest-Shamir-Adleman (RSA) 格式。RSA 属非对称算法,即要验证的密钥与用于签名的密钥不同。要进行身份验证,需一对密钥。

  • 使用私钥/专用密钥来执行签名
  • 验证是使用公钥完成的

此公钥无需受保护,并且无需特殊安全存储空间。这种形式的身份验证可配合加密一起用于确保真实性和保密性。RSA 可配合已加密分区或未加密分区一起使用。

RSA 不仅拥有使用公钥的优势,而且还具有先验证后解密的优势。RSA 公钥的散列必须存储在 eFUSE 中。AMD SoC 器件支持先对分区数据进行身份验证,然后再将其发送到 AES 解密引擎。此方法可用于帮助预防对解密引擎本身发起的攻击,因为它可确保在执行任何解密操作前,分区数据已经过验证。

AMD SoC 中,使用两对公钥和私钥 - 主公钥和私钥以及辅助公钥和私钥。主公钥/私钥对的功能是用于对辅助公钥/私钥对进行身份验证。辅助密钥的功能是签署/验证分区。

用于描述密钥的首字母缩略词的第一个字母为 P(表示主 (primary) 密钥)或 S(表示辅助 (secondary) 密钥)。用于描述密钥的首字母缩略词的第二个字母为 P(表示公钥 (public))或 S(表示私钥 (secret))。存在 4 种可能的密钥:

  • PPK = 主公钥
  • PSK = 主私钥
  • SPK = 辅助公钥
  • SSK = 辅助私钥

Bootgen 可通过 2 种方式创建身份验证证书:

  • 提供 PSK 和 SSK。SPK 签名使用这 2 项输入来即时计算。
  • 提供 PPK 和 SSK,并提供 SPK 签名作为输入。在 PSK 未知的情况下,可使用此方法。

主密钥采用散列化并存储在 eFUSE 中。此散列将与 FSBL 存储在启动镜像中的主密钥的散列进行比对。可使用随 Vitis 提供的独立驱动将此散列写入 PS eFUSE 内存。

以下是 BIF 文件示例:

image:
{ 
	[pskfile]primarykey.pem
	[sskfile]secondarykey.pem
	[bootloader,authentication=rsa] fsbl.elf
	[authentication=rsa]uboot.elf
}

如需了解特定于器件的身份验证信息,请参阅: