Hardware Interfaces

Referring to the Comportable guideline for peripheral device functionality, the module aes 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
  • Interrupts: none

Inter-Module Signals

Port NamePackage::StructTypeActWidthDescription
idleprim_mubi_pkg::mubi4unireq1
lc_escalate_enlc_ctrl_pkg::lc_txunircv1
ednedn_pkg::ednreq_rspreq1
keymgr_keykeymgr_pkg::hw_key_requnircv1
tltlul_pkg::tlreq_rsprsp1

Security Alerts

Alert NameDescription
recov_ctrl_update_errThis recoverable alert is triggered upon detecting an update error in the shadowed Control Register. The content of the Control Register is not modified (See Control Register). The AES unit can be recovered from such a condition by restarting the AES operation, i.e., by re-writing the Control Register. This should be monitored by the system.
fatal_faultThis fatal alert is triggered upon detecting a fatal fault inside the AES unit. Examples for such faults include i) storage errors in the shadowed Control Register, ii) any internal FSM entering an invalid state, iii) any sparsely encoded signal taking on an invalid value, iv) errors in the internal round counter, v) escalations triggered by the life cycle controller, and vi) fatal integrity failures on the TL-UL bus. The AES unit cannot recover from such an error and needs to be reset.

Security Countermeasures

Countermeasure IDDescription
AES.BUS.INTEGRITYEnd-to-end bus integrity scheme.
AES.LC_ESCALATE_EN.INTERSIG.MUBIThe global escalation input signal from life cycle is multibit encoded.
AES.MAIN.CONFIG.SHADOWMain control register shadowed.
AES.MAIN.CONFIG.SPARSECritical fields in main control register one-hot encoded.
AES.AUX.CONFIG.SHADOWAuxiliary control register shadowed.
AES.AUX.CONFIG.REGWENAuxiliary control register can be locked until reset.
AES.KEY.SIDELOADThe key can be loaded from a key manager via sideload interface without exposing it to software.
AES.KEY.SW_UNREADABLEKey registers are not readable by software.
AES.DATA_REG.SW_UNREADABLEData input and internal state registers are not readable by software.
AES.KEY.SEC_WIPEKey registers are cleared with pseudo-random data.
AES.IV.CONFIG.SEC_WIPEIV registers are cleared with pseudo-random data.
AES.DATA_REG.SEC_WIPEData input/output and internal state registers are cleared with pseudo-random data.
AES.DATA_REG.KEY.SCAInternal state register cleared with pseudo-random data at the end of the last round. This uses the same mechanism as KEY.SEC_WIPE and is active independent of KEY.MASKING.
AES.KEY.MASKING1st-order domain-oriented masking of the cipher core including data path and key expand. Can optionally be disabled via compile-time Verilog parameter for instantiations that don’t need SCA hardening.
AES.MAIN.FSM.SPARSEThe main control FSM uses a sparse state encoding.
AES.MAIN.FSM.REDUNThe main control FSM uses multiple, independent logic rails.
AES.CIPHER.FSM.SPARSEThe cipher core FSM uses a sparse state encoding.
AES.CIPHER.FSM.REDUNThe cipher core FSM uses multiple, independent logic rails.
AES.CIPHER.CTR.REDUNThe AES round counter inside the cipher core FSM is protected with multiple, independent logic rails.
AES.CTR.FSM.SPARSEThe CTR mode FSM uses a sparse state encoding.
AES.CTR.FSM.REDUNThe CTR mode FSM uses multiple, independent logic rails.
AES.CTRL.SPARSECritical control signals such as handshake and MUX control signals use sparse encodings.
AES.MAIN.FSM.GLOBAL_ESCThe main control FSM moves to a terminal error state upon global escalation.
AES.MAIN.FSM.LOCAL_ESCThe main control FSM moves to a terminal error state upon local escalation. Can be triggered by MAIN.FSM.SPARSE, MAIN.FSM.REDUN, CTRL.SPARSE, as well as CIPHER.FSM.LOCAL_ESC, CTR.FSM.LOCAL_ESC.
AES.CIPHER.FSM.LOCAL_ESCThe cipher core FSM moves to a terminal error state upon local escalation. Can be triggered by CIPHER.FSM.SPARSE, CIPHER.FSM.REDUN, CIPHER.CTR.REDUN, CTRL.SPARSE as well as MAIN.FSM.LOCAL_ESC.
AES.CTR.FSM.LOCAL_ESCThe CTR mode FSM moves to a terminal error state upon local escalation. Can be triggered by CTR.FSM.SPARSE, CTR.FSM.REDUN, and CTRL.SPARSE.
AES.DATA_REG.LOCAL_ESCUpon local escalation, the module doesn’t output intermediate state.

Other Signals

The table below lists other signals of the AES unit.

SignalDirectionTypeDescription
idle_ooutputlogicIdle indication signal for clock manager.
lc_escalate_en_iinputlc_ctrl_pkg::lc_tx_tLife cycle escalation enable coming from life cycle controller. This signal moves the main controller FSM within the AES unit into the terminal error state. The AES unit needs to be reset.
edn_ooutputedn_pkg::edn_req_tEntropy request to entropy distribution network (EDN) for reseeding internal pseudo-random number generators (PRNGs) used for register clearing and masking.
edn_iinputedn_pkg::edn_rsp_tEDN acknowledgment and entropy input for reseeding internal PRNGs.
keymgr_key_iinputkeymgr_pgk::hw_key_req_tKey sideload request coming from key manager.

Note that the edn_o and edn_i signals used to interface EDN follow a REQ/ACK protocol. The entropy distributed by EDN is obtained from the cryptographically secure random number generator (CSRNG).