Referring to the Comportable guideline for peripheral device functionality, the module keymgr_dpe has the following hardware interfaces defined
- Primary Clock:
clk_i
- Other Clocks:
clk_edn_i
- Bus Device Interfaces (TL-UL):
tl
- Bus Host Interfaces (TL-UL): none
- Peripheral Pins for Chip IO: none
| Port Name | Package::Struct | Type | Act | Width | Description |
| edn | edn_pkg::edn | req_rsp | req | 1 | |
| aes_key | keymgr_pkg::hw_key_req | uni | req | 1 | |
| kmac_key | keymgr_pkg::hw_key_req | uni | req | 1 | |
| otbn_key | keymgr_pkg::otbn_key_req | uni | req | 1 | |
| kmac_data | kmac_pkg::app | req_rsp | req | 1 | |
| creator_root_key | keymgr_dpe_pkg::keymgr_dpe_creator_root_key | uni | rcv | 1 | |
| creator_seed | keymgr_dpe_pkg::keymgr_dpe_creator_seed | uni | rcv | 1 | |
| owner_seed | keymgr_dpe_pkg::keymgr_dpe_owner_seed | uni | rcv | 1 | |
| device_id | keymgr_dpe_pkg::keymgr_dpe_device_id | uni | rcv | 1 | |
| lc_keymgr_en | lc_ctrl_pkg::lc_tx | uni | rcv | 1 | |
| lc_keymgr_div | lc_ctrl_pkg::lc_keymgr_div | uni | rcv | 1 | |
| rom_digest | rom_ctrl_pkg::keymgr_data | uni | rcv | NumRomDigestInputs | |
| kmac_en_masking | logic | uni | rcv | 1 | |
| tl | tlul_pkg::tl | req_rsp | rsp | 1 | |
| Interrupt Name | Type | Description |
| op_done | Event | Operation complete |
| Alert Name | Description |
| recov_operation_err | Alert for key manager operation errors. These errors could have been caused by software |
| fatal_fault_err | Alert for key manager faults. These errors cannot be caused by software |
| Countermeasure ID | Description |
| KEYMGR_DPE.BUS.INTEGRITY | End-to-end bus integrity scheme. |
| KEYMGR_DPE.CONFIG.SHADOW | Various critical registers are shadowed: including operation control, reseed interval, and key max version (creator, owner intermediate, owner). |
| KEYMGR_DPE.OP.CONFIG.REGWEN | Various controls locked during the duration of an operation: including operation start, operation control, sideload clear, salt and key version. |
| KEYMGR_DPE.RESEED.CONFIG.REGWEN | Reseed interval is software lockable. |
| KEYMGR_DPE.SW_BINDING.CONFIG.REGWEN | Software binding is lockable by software in each stage. When keymgr successfully advances, the lock is released to allow the next stage the freedom to program. |
| KEYMGR_DPE.MAX_KEY_VER.CONFIG.REGWEN | Max key version is software lockable. |
| KEYMGR_DPE.LC_CTRL.INTERSIG.MUBI | Life cycle control signal is multibit |
| KEYMGR_DPE.CONSTANTS.CONSISTENCY | Basic consistency checks (all 0’s or all 1’s) for keymgr diversification constants |
| KEYMGR_DPE.INTERSIG.CONSISTENCY | Basic consistency checks (all 0’s or all 1’s) for otp diversification inputs |
| KEYMGR_DPE.HW.KEY.SW_NOACCESS | Sideload keys are not directly accessible by software. |
| KEYMGR_DPE.OUTPUT_KEYS.CTRL.REDUN | Software and sideload keys are redundantly controlled. Each generate operation creates a valid and a data enable (software and sideload specific). In order for a key to be populated into the software register, both the software valid and the software data enable must be asserted. The same is true for sideload. This makes it more difficult for an attack to fault a sideload key into the software key slot. An attacker would need to fault both the software valid and the software data enable. During a sideload operation, if an attacker manages to fault the valid but not the data enable, the software key is populated with random data. If an attacker manages to fault the data enable but not the valid, then the software key retains its previous value. |
| KEYMGR_DPE.CTRL.FSM.SPARSE | Main control fsm is sparsely encoded. |
| KEYMGR_DPE.CTRL.FSM.LOCAL_ESC | Main control fsm locally escalates based on any detected fault in keymgr. When a fault is detected (sync or async) the fsm transitions to invalid state to prevent further legal operations from executing. |
| KEYMGR_DPE.CTRL.FSM.GLOBAL_ESC | When the system globally escalates, the main control fsm also transitions to invalid state to prevent further legal operations from executing. |
| KEYMGR_DPE.CTRL.CTR.REDUN | Primary count is duplicated. |
| KEYMGR_DPE.CTRL.KEY.INTEGRITY | Internal secret key is protected with ECC. |