You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[feat] Add Stable Owner Key derivation from HEK seed (#3625)
* [feat] Add Stable Owner Key derivation from HEK seed
ROM derives a Stable Owner Root Key from HEK seed via HKDF into KV15
during cold boot. CM_DERIVE_STABLE_KEY gains OwnerKey (0x3) which uses
CMAC-KDF + HMAC-KDF with label "Stable Owner Key" to produce child
keys as encrypted CMKs.
Both ROM firmware processor and runtime handle the new key type with
identical derivation logic. Adds integration tests for all three key
types (IDevId, LDevId, OwnerKey) and a separate test verifying
different personalization seeds produce different keys.
* Addressing feedback + updating ROM hash
* Addressing PR feedback
* Addressing PR feedback
* Additional tests
* Addressing feedback
* Adding derivation documentation
* Updating ROM hash
* Filtering tests for FPGA
| SS_STRAP_GENERIC[3]|[0]| Stable Owner Key enable. When set to 1, ROM derives the Stable Owner Root Key from the HEK seed and allows `CM_DERIVE_STABLE_KEY` with `key_type = OwnerKey` when the other availability requirements are met. When clear, Stable Owner Key derivation is disabled. |
105
+
106
+
When the feature is available, ROM derives the Stable Owner Root Key during the IDevID stage before clearing DOE secrets:
107
+
108
+
1. DOE decrypts the obfuscated HEK seed into `KEY_ID_HEK_SEED` (`KeyId14`) with HMAC block usage.
109
+
2. HKDF-Extract uses HMAC-SHA512 with salt `stable_owner_root_key`, zero-padded to 64 bytes, and reads `KEY_ID_HEK_SEED` as HMAC block data. The resulting PRK overwrites `KEY_ID_HEK_SEED` with HMAC key usage.
110
+
3. HKDF-Expand uses HMAC-SHA512 with the PRK and label `stable_owner_root_key` to populate `KEY_ID_STABLE_OWNER` (`KeyId15`) with AES key usage.
111
+
4. ROM write-locks `KEY_ID_STABLE_OWNER` and erases the temporary `KEY_ID_HEK_SEED` slot.
112
+
113
+
If subsystem mode is not active, the strap is clear, or OCP LOCK is enabled, ROM skips this derivation and `CM_DERIVE_STABLE_KEY` with `key_type = OwnerKey` is unavailable.
114
+
98
115
For a comprehensive overview of the SOC interface registers, please refer to the following link::
0 commit comments