▸ HSM hardware architectures: SHE (Secure Hardware Extension, HIS spec): 16 key slots (SECRET_KEY, MASTER_ECU_KEY, BOOT_MAC_KEY, KEY_1–KEY_10, RAM_KEY); 128-bit AES-ECB/CBC/CMAC; Boot MAC: CMAC-AES-128 over app code region, stored in BOOT_MAC_KEY slot; Cry_SheSecureBoot(startAddr, length) → returns SHE_ERC_NO_ERROR or SHE_ERC_SEQUENCE_ERROR; HSM (Hardware Security Module - full, e.g., S32K3 HSE): dedicated Cortex-M3/M7 core, runs HSE firmware; isolated flash region; exposes mailbox IPC to host CPU; capabilities: RSA-4096, ECDSA-P256/P384, AES-128/256, SHA-256/384/512, TRNG, monotonic counters, key management
▸ S32K3 HSE IPC integration: HSM2HTF/HTF2HSM mailbox registers; host sends HSE_SRV_DESC (service descriptor) → HSE processes → returns response via MU (Message Unit); HSE service IDs relevant to FBL: HSE_SRV_ID_HASH (SHA-256 of code), HSE_SRV_ID_ECDSA_VERIFY (verify signature), HSE_SRV_ID_AES_GCM_ENC/DEC (encrypt update package), HSE_SRV_ID_OEM_BOOT_CFG (monotonic counter, secure boot config), HSE_SRV_ID_KEY_IMPORT (provisioning); MU channels: CH0–CH3; FBL code: HSE_Send(MU_CH0, &hseReq); while(HSE_IsBusy(MU_CH0)); result = HSE_Read(MU_CH0, &hseResp); error codes: HSE_SRV_RSP_OK (0x55A5AA33), HSE_SRV_RSP_NOT_ALLOWED (0xAA55A533); typical SHA-256 + ECDSA-P256 verify < 5 ms on S32K344
▸ Key provisioning workflow: manufacturing line: HSE lifecycle state = CUST_DEL (customer delivery); NXP HSE host demo tool or custom HSE provisioning app; steps: (1) HSE_SRV_ID_FORMAT_KEY_CATALOGS: define key catalog (NVM key slots); (2) HSE_SRV_ID_IMPORT_KEY: import OEM ECDSA public key (keyType=HSE_KEY_TYPE_ECC_PUB, keyBitLen=256, keyInfo.keyFlags=HSE_KF_USAGE_VERIFY); (3) Advance lifecycle to OEM_PROD: HSE_SRV_ID_CHANGE_LIFE_CYCLE; (4) Lock JTAG debug: HSE_SRV_ID_SET_ATTR(HSE_DEBUG_AUTH_MODE_ATTR); post-provisioning: public key immutable in HSE NVM; SHE: CMD_LOAD_KEY with M1/M2/M3/M4/M5 protocol (AES-based key update protocol); MASTER_ECU_KEY loaded first, then other keys derived
▸ AUTOSAR Crypto Stack integration: CryptoDriver (CryDrv) → CryptoInterface (CryIf) → CryptoServiceManager (CSM) → SecM (Security Module); AUTOSAR CSM job config: CsmJob_FblVerifySignature { CsmKeyRef → CryKey_OEM_PubKey; CsmPrimitiveRef → CsmPrimitive_EcdsaP256Verify }; CSM call: Csm_SignatureVerify(jobId, mode, dataPtr, dataLen, sigPtr, sigLen, resultPtr); CryDrv implementation: CryDrv_EcdsaP256Verify() → HSE IPC call; key handle: Crypto_KeyElementSet(keyId, CRYPTO_KE_SIGNATURE_KEY, pubKeyDer, 91); error mapping: HSE_SRV_RSP_VERIFY_FAILED → CRYPTO_E_VER_NOT_OK → Csm returns E_NOT_OK → SecM returns SECM_NOT_OK → FBL writes DEM event + NRC 0x72; FBL_E_APPLICATION_SIGNATURE_FAILURE DTC stored in Dem for field traceability