The key storage region of the UICR can contain multiple keys of different type, including symmetrical keys, hashes, public/private key pairs and other device secrets. One of the key features of the KMU, is that these device secrets can be installed and made available for use in cryptographic operations without revealing the actual secret values.
Keys in this region will typically have a certain life span. The region is not designed to be used for per-session derived keys where the non-secure side (i.e. application) is participating in the key exchange.
All key storage is done through the concept of multiple key slots, where each key slot instance consists of one key header and an associated key value. Each key header supports the configuration of usage permissions and an optional secure destination address.
The key header secure destination address option enables the KMU to push the associated key value over a dedicated secure APB to a pre-configured secure location within the memory map. Such locations typically include a write-only key register of the hardware cryptograhic accelerator, allowing the KMU to distribute keys within the system without compromising the key values.
One key slot instance can store a key value of maximum 128 bits. If a key size exceeds this limit, the key value itself must be split over multiple key slot instances.
| State | Push | Read | Write | Description |
|---|---|---|---|---|
| Active (1) | Enabled (1) | Enabled (1) | Enabled (1) | Default flash erase value. Key slot cannot be pushed, write is enabled. |
| Active (1) | Enabled (1) | Enabled (1) | Disabled (0) | Key slot is active, push is enabled. Key slot VALUE registers can be read, but write is disabled. |
| Active (1) | Enabled (1) | Disabled (0) | Disabled (0) | Key slot is active, push is enabled. Read and write to key slot VALUE registers are disabled. |
| Active (1) | Disabled (0) | Enabled (1) | Disabled (0) | Key slot is active, push is disabled. Key slot VALUE registers can be read, but write is disabled. |
| Revoked (0) | - | - | - | Key slot is revoked and key value is set to zero. Cannot be read or pushed over secure APB regardless of the permission settings. |