我们正在使用 HSM、cst_signer、CST 3.4.0 对 imx-启动 和 linux-imx 进行签名。
在发出 ahab_close,使用 ahab_status 验证 SECO 事件之前,我们会在 u-启动 中看到以下内容:
=> ahab_status
生命周期:0x0020,恩智浦关闭SECO Event[0] = 0x0087FA00
CMD = AHAB_AUTH_CONTAINER_REQ (0x87)
IND = AHAB_BAD_KEY_HASH_IND (0xFA)sc_seco_get_event: idx: 1, res:3
从 u-boot 启动读取 SRK OTP 值,使用熔丝读取 0 730 16 会得到我们在 uuu 脚本中的值。
我们无法理解这种不匹配的原因何在。如果能帮助我们验证或指导我们如何调试,我们将不胜感激。
如果需要其他信息来帮助我们解决这个问题,我们可以提供。
---
我们正在运行的命令摘要,我们的版本是基于 yocto 的。
我们从 HSM 导出 4 份证书,我们称之为 cert{1,2,3,4}.pem。
创建 table.bin 和 熔丝.bin
.../cst-3.4.0/linux64/bin/srktool-a-s sha384-t table.bin\-e 熔丝.bin-f 1\-c cert1.pem、cert2.pem、cert3.pem、cert3.pem、cert4.pem
linux-imx:
.../cst_signer -d -i flash_os.bin -c csf.cfg -pkcs11
mv signed-flash_os.bin os_cntr_signed.bin
imx-启动:
cst_signer -d -i imx-启动-imx8qxp-d7-sd.bin-flash -c csf.cfg --pkcs11
注意:cst_signer 上的 --pkcs11 标志是我们添加的补丁。它只是在调用 cst 时添加了 -b pkcs11。
csf.cfg 看起来像这样
#Header
header_version=1.0
#Install SRK
srktable_file=SRK_1_2_3_4_table.bin
srk_source=pkcs11:model=YubiHSM;token=YubiHSM;object=./SRK1_sha384_p384_v3_usr;type=cert;pin-value=xxyyxxyyxxyyxxyy
srk_source_index=0
srk_source_set=OEM
srk_revocations=0x0
#安装证书
sgk_file=
sgk_permissions=
HSM 参数中的 PKI 树:
现有 CA:N
使用 ECC:Y
密钥长度:p384
摘要算法:sha384
有效期:5 年
SRK CA:N
该事件说明密钥哈希验证与 OTP 不匹配。
您的 SRK TABLE 哈希值计算可能有问题。试着比较 SRK TABLE 和 熔丝 的哈希值。
此致
哈维