Digitally signing and verifying all stages of the boot loading sequence.
A boot sequence describes the initial set of operations performed by a device at the start of the boot process. During this stage, available resources reside in some form of local, nonvolatile storage that is readily accessible by the device. The entity initiating the startup sequence is known as a boot loader (or bootstrap loader).
The boot loader enables forward progression throughout the startup sequence until completion, at which point the device enters its normal operational state. The boot loader flow consists of multiple stages, with each executing progressively more complex portions of the startup sequence, incorporating platform specific driver code for example. If the boot process is not secured, an adversary can insinuate counterfeit code into the boot process allowing them to take control of the system and/or execute malicious code.
With a Root of Trust, the boot flow can be implemented in a secure means by digitally signing and verifying all stages of the boot loading sequence. This is done through a multi-stage secure boot sequence proceeding through the following steps:
In the case of the secure boot sequence implemented in a Rambus Root of Trust, the first stage of the secure boot loader is stored in ROM and referred to as “fBoot” (first boot). This code validates and executes the next stage of the secure boot flow—and provides support for manufacturing and testing. The subsequent stage of the secure boot loader is “sBoot” (second boot) and is typically loaded into local, write-once non-volatile storage during an enrollment phase. This code typically handles any device-specific actions required to validate and enable execution for the next stage of the secure boot flow. Next up “tBoot,” which refers to the following stage of the secure boot loader, is typically stored in remote mass storage and enables the loading, verification, and execution of subsequent secure boot loader stages.
It goes without saying, any secure boot process needs to rely on fast but solid cryptographic concepts and robust implementation on top of a “trust anchor.” At a minimum, a set of so-called P-256 or P-521-based Elliptic Curve Digital Signature verification is required, that verifies against an on-chip private key. Additional protection can be provided by robust image decryption before loading and verifying. Note that preferably the Root of Trust handles securely booting both itself as well as securely booting the Host system in the SoC.
The multi-stage secure boot flow enabled in a Rambus Root of Trust is flexible and can accommodate boot loader sequences that vary in complexity. For example, sBoot isn’t necessary if a device or platform initialization (or configuration) isn’t required. Or sBoot and tBoot can be combined into one phase. Similarly, sBoot and tBoot aren’t needed if the entire secure boot loader can reside in local ROM storage. In addition, the secure boot flow mechanisms will need to be extended with secure firmware update capabilities, which is a story for another time.
To illustrate these concepts in practice, here are four methods of how a Root of Trust can secure a system’s boot sequence in descending order of robustness:
With the growing number and severity of threats, system designers should carefully evaluate the threat model for their system. Based on this analysis, the method of secure boot employing a Root of Trust can be selected. Rambus has over thirty years of security experience and the broadest line of Root of Trust solutions available in the industry. We can help you select the right Root of Trust, whatever your application, and the secure boot method that best fits your security needs.
Additional Resources:
Leave a Reply