# 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 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]: ./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
