| --- | |
| title: "OpenTitan Security Model Specification" | |
| --- | |
| The current version of the security model targets discrete silicon | |
| implementations of OpenTitan. The architecture for an integrated IP solution | |
| will be covered in a future release of this specification. | |
| The following diagram shows the interaction between the different specification | |
| components. | |
| <img src="documents.svg" style="width: 900px;"> | |
| ## [Device Life Cycle][device_life_cycle] | |
| OpenTitan supports a set of operational states configured via One Time | |
| Programmable (OTP) memory, allowing the [Silicon Creator][silicon_creator] to | |
| manage the state of the device as it is being manufactured and provisioned for | |
| shipment. | |
| An additional set of life cycle states are also available to encapsulate the | |
| device ownership state. A device that has been personalized with a unique | |
| [Creator Identity][creator_identity] can be provisioned with | |
| [Silicon Owner][silicon_owner] credentials. This enables the | |
| [Silicon Owner][silicon_owner] to run signed code on the device. | |
| ## [Secure Boot][secure_boot] | |
| OpenTitan supports a secure boot implementation anchored in the silicon mask | |
| ROM. The mask ROM contains a set of public keys used to verify the first boot | |
| stage stored in flash. | |
| Each boot stage is in charge of verifying the signature of the next stage and | |
| locking out portions of the chip that are not required by later stages. Once the | |
| boot flow reaches kernel execution, the implementation may opt to implement | |
| dynamic isolation between applications using the available | |
| [Physical Memory Protection][pmp] (PMP) unit. | |
| ## [Firmware Update][firmware_update] | |
| OpenTitan supports a firmware layout with two flash partitions, supporting | |
| active and non-active instances of each software component. This enables a | |
| firmware update implementation in which the active partition flashes the new | |
| software into the non-active region with minimal downtime. Secure boot ensures | |
| the integrity and stability of the new software before marking it as active. | |
| ## [Identities and Root Keys][identities_and_root_keys] | |
| This document describes the composition of the Silicon Creator and Silicon Owner | |
| cryptographic identities, as well as the device’s key derivation scheme. This | |
| scheme is based on a symmetric key manager with support for software binding and | |
| key versioning. | |
| ## [Attestation][attestation] | |
| Covers the mechanism in which software verifies the authenticity and integrity | |
| of OpenTitan's hardware and software configuration. | |
| ## [Ownership Transfer][ownership_transfer] | |
| The owner of the silicon is allowed to change in a process known as Ownership | |
| Transfer. During this process, a new party can take ownership of the device and | |
| provision its own identity. This allows the new owner to run its own signed code | |
| and configure its attestation chain. | |
| ## [Provisioning][provisioning] | |
| Describes manufacturing and post-ownership transfer provisioning flows. Secrets | |
| required to personalize the identity of the device and initialize security | |
| countermeasures are provisioned at manufacturing time. Silicon owners have the | |
| option of provisioning additional secrets after taking ownership of the device. | |
| [attestation]: {{< relref "doc/security/specs/attestation" >}} | |
| [creator_identity]: {{< relref "doc/security/specs/identities_and_root_keys#creator-identity" >}} | |
| [device_life_cycle]: {{< relref "doc/security/specs/device_life_cycle" >}} | |
| [firmware_update]: {{< relref "doc/security/specs/firmware_update" >}} | |
| [identities_and_root_keys]: {{< relref "doc/security/specs/identities_and_root_keys" >}} | |
| [ownership_transfer]: {{< relref "doc/security/specs/ownership_transfer" >}} | |
| [pmp]: https://ibex-core.readthedocs.io/en/latest/03_reference/pmp.html | |
| [provisioning]: {{< relref "doc/security/specs/device_provisioning" >}} | |
| [secure_boot]: {{< relref "doc/security/specs/secure_boot" >}} | |
| [silicon_creator]: {{< relref "doc/security/logical_security_model#silicon-creator" >}} | |
| [silicon_owner]: {{< relref "doc/security/logical_security_model#silicon-owner" >}} |