“Authentication Certificate”(身份验证证书)是包含分区身份验证相关所有信息的结构。此结构具有公钥和 BootROM/FSBL 需验证的所有签名。在每个“身份验证证书”内都包含一个“Authentication Header”(身份验证头文件),可提供诸如密钥大小、用于签名的算法等信息。“身份验证证书”附加到启用身份验证的实际分区内。如果针对任一分区启用身份验证,那么头文件表同样需进行身份验证。“头文件表身份验证证书”将附加到头文件表内容末尾。
Zynq®-7000 SoC 将 RSA-2048 身份验证与 SHA-256 散列算法结合使用,这表示主密钥和辅助密钥大小均为 2048 位。由于 SHA-256 用作为安全散列算法,因此 FSBL、分区和身份验证证书必须填充至 512 位边界。
Zynq®-7000 SoC 中的身份验证证书格式如下表所示。
身份验证证书位 | 描述 | |
---|---|---|
0x00 | 身份验证头文件 = 0x0101000。请参阅 Zynq-7000 SoC 身份验证证书头文件。 | |
0x04 | 证书大小 | |
0x08 | UDF(56 个字节) | |
0x40 | PPK | 模数(256 个字节) |
0x140 | 模数扩展(256 个字节) | |
0x240 | 指数 | |
0x244 | 填充(60 个字节) | |
0x280 | SPK | 模数(256 个字节) |
0x380 | 模数扩展(256 个字节) | |
0x480 | 指数(4 个字节) | |
0x484 | 填充(60 个字节) | |
0x4C0 | SPK 签名 = RSA-2048 (PSK, 填充 || SHA-256 (SPK)) | |
0x5C0 | FSBL 分区签名 = RSA-2048 (SSK, SHA256 (启动头文件 || FSBL 分区)) | |
0x5C0 | 其它分区签名 = RSA-2048 (SSK, SHA-256 (分区 || 填充 || 身份验证头文件 || PPK || SPK || SPK 签名)) |