2.4.4 Factory Secure Boot

In this mode, the System Controller reads the Secure Boot Image Certificate (SBIC) from eNVM and validates the SBIC. On successful validation, System Controller copies the factory secure boot code from its private, secure memory area and loads it into the DTIM of the E51 Monitor core. The default secure boot performs a signature check on the eNVM image using SBIC which is stored in eNVM. If no errors are reported, reset is released to the MSS Core Complex. If errors are reported, the MSS Core Complex is placed in reset and the BOOT_FAIL tamper flag is raised. Then, the System Controller activates a tamper flag which asserts a signal to the FPGA fabric for user action. This mode is implemented using the U_MSS_BOOTMODE=3 boot option.

The SBIC contains the address, size, hash, and Elliptic Curve Digital Signature Algorithm (ECDSA) signature of the protected binary blob. ECDSA offers a variant of the DSA, which uses elliptic curve cryptography. It also contains the reset vector for each Hardware thread/core/processor core (Hart) in the system.

Table 2-7. Secure Boot Image Certificate (SBIC)
OffsetSize (bytes)ValueDescription
04IMAGEADDRAddress of UBL in MSS memory map
44IMAGELENSize of UBL in bytes
84BOOTVEC0Boot vector in UBL for E51
124BOOTVEC1Boot vector in UBL for U540
164BOOTVEC2Boot vector in UBL for U541
204BOOTVEC3Boot vector in UBL for U542
244BOOTVEC4Boot vector in UBL for U543
281OPTIONS[7:0]SBIC options
283RESERVED

328VERSIONSBIC/Image version
4016DSNOptional DSN binding
5648HUBL image SHA-384 hash
104104CODESIGDER-encoded ECDSA signature
Total208Bytes

DSN
If the DSN field is non-zero, it is compared against the device's own serial number. If the comparison fails, then the boot_fail tamper flag is set and authentication is aborted.
VERSION
If SBIC revocation is enabled by U_MSS_REVOCATION_ENABLE, the SBIC is rejected unless the value of VERSION is greater than or equal to the revocation threshold.
SBIC REVOCATION OPTION
If SBIC revocation is enabled by U_MSS_REVOCATION_ENABLE and OPTIONS[0] is ‘1’, all the SBIC versions less than VERSION are revoked upon complete authentication of the SBIC. The revocation threshold remains at the new value until it increments again by a future SBIC with OPTIONS[0] = ‘1’ and a higher VERSION field. The revocation threshold may only be incremented using this mechanism and can only be reset by a bitstream.

When the revocation threshold is updated dynamically, the threshold is stored using the redundant storage scheme used for passcodes such that a power failure during device boot does not cause a subsequent device boot to fail. If the update of revocation threshold fails, it is guaranteed that the threshold value is either the new value or the previous one.

Table 2-8. U_MSS_BOOTCFG Usage in Factory Boot Loader Mode
Offset (bytes)Size (bytes)NameDescription
04U_MSS_SBIC_ADDRAddress of SBIC in MSS address space
44U_MSS_REVOCATION_ENABLEEnable SBIC revocation if non-zero

The following figure shows the factory secure boot flow.

Figure 2-26. Factory Secure Boot Flow