HSM、cst_signer、CST 3.4.0 を使用して、imx-boot と linux-imx に署名しています。
ahab_close を発行する前に、ahab_status を使用して SECO イベント情報を確認すると、u-boot で次のようになります。
=> ahab_status
ライフサイクル: 0x0020、NXP 終了SECOイベント情報[0] = 0x0087FA00
コマンド = AHAB_AUTH_CONTAINER_REQ (0x87)
IND = AHAB_BAD_KEY_HASH_IND (0xFA)sc_seco_get_event: idx: 1、res:3
fuse read 0 730 16 を使用して u-boot から SRK OTP 値を読み取ると、uuu スクリプトにある値が得られます。
その不一致がどこから来ているのかはCAN理解できません。それを検証するためのご助力やデバッグ方法に関するご指導をいただければ幸いです。
この問題を解決するために追加の情報が必要な場合は、CAN提供できます。
---
実行しているコマンドの概要。ビルドは yocto ベースです。
HSM 4 証明書をエクスポートします。cert{1,2,3,4}.pem と呼びます。
table.binとfuse.binを作成する
.../cst-3.4.0/linux64/bin/srktool -a -s sha384 -t table.bin \
-e fuse.bin -f 1 \
-c cert1.pem、cert2.pem、cert3.pem、cert4.pem
linux-imx:
.../cst_signer -d -i flash_os.bin -c csf.cfg --pkcs11
mv 署名済みフラッシュOS.bin os_cntr_signed.bin
imx-ブート:
cst_signer -d -i imx-boot-imx8qxp-d7-sd.bin-flash -c csf.cfg --pkcs11
注: cst_signer の --pkcs11 フラグは、追加したパッチです。cst の呼び出しに -b pkcs11 を追加するだけです。
csf.cfgは次のようになります
#ヘッダ
ヘッダーバージョン=1.0
#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 と Fuse ハッシュ値を比較してみましょう。
よろしくお願いします。
Harvey