[manuf] Preventing Re-execution of Perso Firmware #24610
Labels
Component:Software
Issue related to Software
Manufacturing
Issues related to manufacturing tasks (hw or sw)
Type:Task
Tasks, to-do list.
Milestone
Description
Currently, the perso firmware remains executable even after personalization is complete. Moreover, the Perso firmware lacks an embedded immutable ROM extension, despite having a valid signature. If the immutable ROM extension feature is enabled and the corresponding hash is provisioned, running perso again may result in ROM self-shutdown due to an invalid immutable ROM extension hash. Consequently, ROM will not attempt to boot from an alternative slot, eliminating the possibility of booting into a valid ROM extension under these circumstances. This situation renders the device bricked until another image is bootstrapped. To mitigate this, we propose binding the creator manufacturing state within usage constraints, ensuring the perso firmware's signature is invalidated once the device is fully personalized, and thus preventing the perso firmware from being executed again.
More details described here
The goal is to implement the new FT flow below
a. Skip the provisioning of
CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_EN
,CREATOR_SW_CFG_MANUF_STATE
,CREATOR_SW_CFG_FLASH_DATA_DEFAULT_CFG
,OWNER_SW_CFG_ROM_BOOTSTRAP_DIS
, andOWNER_SW_CFG_ROM_KEYMGR_OTP_MEAS_EN
.a. Configure the secret1 (flash and SRAM scrambling seeds) and provision
CREATOR_SW_CFG_FLASH_DATA_DEFAULT_CFG
.b. Reboot and re-bootstrap (required when flash scrambling is enabled); this time loading Perso FW in flash slot A and ROM_EXT + Owner FW in flash slot B.
c. Personalize the device.
d. Fully provision the SW_CFG partitions, including
CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_EN
,OWNER_SW_CFG_ROM_BOOTSTRAP_DIS
, andOWNER_SW_CFG_ROM_KEYMGR_OTP_MEAS_EN
.e. Transitions the CREATOR_SW_CFG_MANUF_STATE to
Personalized
.f. Write-lock both OTP *_SW_CFG partitions.
Tasks
Addressed in #24826 , #24783 , #24789 , and #24884
CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_EN
,CREATOR_SW_CFG_MANUF_STATE
andfrom FT individualization stage to the FT personalization stageOWNER_SW_CFG_ROM_KEYMGR_OTP_MEAS_EN
CREATOR_SW_CFG
andOWNER_SW_CFG
partitions to the end of FT personalization stageCREATOR_SW_CFG
andOWNER_SW_CFG
partitions used in the UDS certificate generation process.//hw/ip/otp_ctrl/data
) and the OTP tooling to:Addressed in #24789 , #24826
Initial
->Personalized
.Calculate the OTP measurement during the build of persoComment: Won't do.EnableComment: Won't do.OWNER_SW_CFG_ROM_KEYMGR_OTP_MEAS_EN
in the provisioning test flowPersonalized
state during the build of perso.Addressed in #24789
Set theComment: Won't do.binding_value
field to pre-calculated OTP measurement on perso’s manifestselector_bits
(mapped tomanuf_state_creator
) field to 1 on perso/rom_ext's manifest.Initial
CREATOR_MANUF_STATE
Personalized
CREATOR_MANUF_STATE
The text was updated successfully, but these errors were encountered: