blob: f45f5832389ee6a4d3624283403825783cc85697 [file] [log] [blame] [view]
# 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 ROM.
The 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 devices 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]: ./attestation/README.md
[creator_identity]: ./identities_and_root_keys/README.md#creator-identity
[device_life_cycle]: ./device_life_cycle/README.md
[firmware_update]: ./firmware_update/README.md
[identities_and_root_keys]: ./identities_and_root_keys/README.md
[ownership_transfer]: ./ownership_transfer/README.md
[pmp]: https://ibex-core.readthedocs.io/en/latest/03_reference/pmp.html
[provisioning]: ./device_provisioning/README.md
[secure_boot]: ./secure_boot/README.md
[silicon_creator]: ../logical_security_model/README.md#silicon-creator
[silicon_owner]: ../logical_security_model/README.md#silicon-owner