---
title: "OpenTitan Security Overview"
---

## Overview

OpenTitan's mission is to create a trustworthy, vendor-agnostic open source silicon Root of Trust (RoT) widely adopted across the industry.
We do this by implementing strong logical security integrity guarantees in the hardware and firmware components, and restricting licensing of the OpenTitan trademark to those implementations conforming to OpenTitan standards.

## Logical Security Model

The [OpenTitan Security Model][2] provides a high level framework for device provisioning and run-time operations.
It starts by enumerating the range of logical entities supported by the architecture, and their mapping into software stages.
Runtime isolation properties and baseline identity concepts are introduced in this document.

## Functional Guarantees

At the functional level OpenTitan aims to provide the following guarantees:

* Silicon Owners shall be able to deploy their own Root of Trust (RoT) Public Key Infrastructure (PKI) after taking ownership of the device.
* Silicon Creators shall endorse the authenticity of the hardware.
  Endorsement is contingent on the silicon adhering to the physical implementation guidelines and standard requirements stipulated by the project.
  The endorsement shall be measurable via a Transport Certificate.
* OpenTitan shall provide full boot attestation measurements to allow Silicon Owners to verify the boot chain configuration.
  The attestation chain shall be anchored in the Silicon Owner's RoT PKI.
* OpenTitan shall provide a key manager implementation strongly bound to the boot chain.
  Only a boot chain signed with the expected set of keys shall be able to unlock stored keys/secrets.
* OpenTitan shall provide a key versioning scheme with support for key migration bound to the firmware versioning and update implementation.

## Use Cases

The security goals of the project are derived from a list of target use cases.
See [OpenTitan's Use Cases][1] for more details.
The security goals are used to define OpenTitan's threat model, as well as functional and assurance security requirements.
Such requirements influence the system architecture, as well as the certification strategy for silicon implementations.

## Security Primitives

All hardware security primitives adhere to the OpenTitan [comportable][3] peripheral interface specification.
Implementations for some of these components are available for reference and may not meet production or certification criteria yet.

| Block Name | Description |
| ---------- | ----------- |
| TRNG Digital Wrapper | Digital wrapper for a NIST SP 800-90 compliant entropy source. <br> An additional emulated entropy source implementation will be available for FPGA functional testing. |
| DRBG | Proposed: DRBG-HMAC-SHA-2* NIST 800-90A.rev1 compliant. |
| [AES][8] | AES ECB/CBC/CFB/OFB/CTR 128/192/256 NIST 800-38A compliant. |
| [HMAC-SHA-2][9] | HMAC_SHA-2 NIST FIPS 180-4 compliant supporting both HMAC and SHA modes of operation. |
| Key Manager | Proposed: Hardware backed symmetric key generation and storage providing strong isolation properties. |
| Crypto Co-Processor | Proposed: Public key cryptography accelerator with support for bignum operations in hardware. |
| [Alert Handler][10] | Aggregates alert signals from other system components designated as potential security threats, converting them to processor interrupts. It also supports alert policy assignments to handle alerts completely in hardware. |


## Features

### Device Life Cycle

OpenTitan supports a set of operational states configured via One Time Programmable (OTP) memory, allowing the [Silicon Creator][4] 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][4] can be provisioned with [Silicon Owner][5] credentials.
This enables the [Silicon Owner][5] to run signed code on the device.

### 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.
Isolation between boot stages is enforced by a one way execution model where the current software stage is not allowed to call code in previous stages.

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][6] (PMP) unit.

### A/B Firmware Updates

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.

Each boot stage is expected to try to launch the newest available version of the next boot stage upon successful signature verification.
Newest is defined as the software with a more recent build timestamp or larger versioning value.

### Strong Cryptographic Identity

Each OpenTitan silicon device is personalized as part of the manufacturing process with entropy, a unique global identifier, and other values, which are the basis of the chip's cryptographic identity.
This identity is referred to as the Creator Identity, and it is fixed throughout the lifetime of the silicon.

The Creator Identity is endorsed via a Transport Creator Certificate which can be used in device authenticity attestation flows.

The Creator Identity is a component of other derived identities that are generated with additional input parameters from the software running on the device, as well as other components provisioned by the Silicon Owner.

### Ownership Transfer

The owner of the silicon is allowed to change in a process known as Ownership Transfer.
During this process, the existing owner shall wipe any stored secrets before relinquishing ownership of the device.
At this point a new party can take ownership of the device and provision its own identity.
This allows the new Silicon Owner to run its own signed code with attestation measurements anchored in the PKI of their choice.
Attested software can then proceed to provision entropy into the key manager plus additional constants to generate hidden keys strongly bound to the software configuration.

More details for this are available in the [OpenTitan Security Model][7].


[1]: {{< relref "doc/security/use_cases" >}}
[2]: {{< relref "doc/security/logical_security_model" >}}
[3]: {{< relref "doc/rm/comportability_specification" >}}
[4]: {{< relref "doc/security/logical_security_model#silicon-creator" >}}
[5]: {{< relref "doc/security/logical_security_model#silicon-owner" >}}
[6]: https://ibex-core.readthedocs.io/en/latest/pmp.html
[7]: {{< relref "doc/security/logical_security_model#owner-assignment" >}}
[8]: {{< relref "hw/ip/aes/doc" >}}
[9]: {{< relref "hw/ip/hmac/doc" >}}
[10]: {{< relref "hw/ip/alert_handler/doc" >}}
