| RSS provisioning |
| ================ |
| |
| The LifeCycle Manager controls access to the RSS OTP, and includes a |
| state-machine that controls Lifecycle-state transitions. The LCM is derived from |
| the OTP management and state machine components of the CryptoCell-3XX series |
| accelerators, and will be familiar to those who have worked with them. |
| |
| When the chip hasn't been provisioned, the OTP is blank, which means the LCM is |
| in "Virgin" Test/Production mode "TP mode" state. The first step for |
| provisioning must be to set the LCM to either test-chip mode "TCI" or |
| production-chip mode "PCI". In TCI mode the RTL key is masked to avoid |
| disclosure, several OTP fields are changed from write-only to read-write, to aid |
| in debugging, and debugging is not limited in secure provisioning mode. |
| |
| Once the TP mode has been set, the chip is then is Chip Manufacturer |
| provisioning state "CM". This mode is intended for the provisioning of the HUK, |
| GUK, CM provisioning key, CM code-encryption key, the root-of-trust public key |
| and the CM config. To provision these fields, The firmware must first receive a |
| provisioning bundle via a side-band channel (UART or debug interface). This |
| bundle either contains just the keys, or more usually the keys and also |
| provisioning code. The chip must then enter secure provisioning mode by setting |
| the SP_ENABLE register. This causes a reset (but does not clear the RSS SRAMs), |
| and allows access to the RTL key by exporting it to the KMU. The RSS must then |
| decrypt and authenticate the bundle using the RTL key. Under TCI mode the RTL |
| key is zeroed, so encryption and signing must use a zeroed key. Once the CM |
| provisioning bundle has been unpacked, run if it contains code, and the CM |
| values have been set. The RSS must be cold-reset. |
| |
| After the cold reset, the RSS will then be in Device Manufacturer provisioning |
| state "DM". This state is designed to provision the DM provisioning key, the DM |
| code-encryption key and the DM config. The procedure follows the same steps as |
| the CM provisioning flow, with the exception that the bundle will now be |
| encrypted and signed using the CM provisioning key. Once the provisioning bundle |
| has been unpacked/run, the RSS must be cold-reset. |
| |
| After the cold reset, the device will now be in Secure Enable "SE" mode. Debug |
| may be limited based on the hardware DCU mask for SE state. Provisioning will |
| not be run on boot. |
| |
| -------------- |
| |
| *Copyright (c) 2022, Arm Limited. All rights reserved.* |