---
title: "OpenTitan Security"
url: "security/"
---

## 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.

## [OpenTitan Security Model Specification][security_model]

The [OpenTitan Security Model Specification][security_model] defines the logical
security properties of the discrete IC. It covers device and software
attestation, provisioning, secure boot, chip lifecycle, firmware update, chip
identity, and chip ownership transfer.

## [Logical Security Model][logical_security_model]

The [OpenTitan Security Model][logical_security_model] 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.

## [Secure Hardware Design Guidelines][implementation_guidelines]

Silicon designs for security devices require special guidelines to protect the designs against myriad attacks.
To that end, the team established [Secure Hardware Design Guidelines][implementation_guidelines] which are followed when developing OpenTitan security IP.

## 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][use_cases] 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][comportable_ip] peripheral interface specification.
Implementations for some of these components are available for reference and
may not meet production or certification criteria yet.

### [Entropy source][entropy_source]

Digital wrapper for a NIST SP 800-90B compliant entropy source. An additional
emulated entropy source implementation will be available for FPGA functional
testing.

### [CSRNG][csrng]

Cryptographically Secure Random Number Generator (CSRNG) providing support for
both deterministic (DRBG) and true random number generation (TRNG).

The DRBG is implemented using the `CTR_DRBG` construction specified in
NIST SP 800-90A.

### [AES][aes]

Advanced Encryption Standard (AES) supporting Encryption/Decryption using
128/192/256 bit key sizes in the following cipher block modes:

*   Electronic Codebook (ECB) mode,
*   Cipher Block Chaining (CBC) mode,
*   Cipher Feedback (CFB) mode with fixed data segment size of 128 bits,
*   Output Feedback (OFB) mode, and
*   Counter (CTR) mode.

### [HMAC][hmac]

HMAC with SHA-2 FIPS 180-4 compliant hash function, supporting both
HMAC-SHA256 and SHA256 modes of operation.

### [Key Manager][keymgr]

Hardware backed symmetric key generation and storage providing key isolation
from software.

### [OTBN][otbn]

Public key algorithm accelerator with support for bignum operations in hardware.

### [Alert Handler][alert_handler]

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 depending on
the assigned severity.

[aes]: {{< relref "hw/ip/aes/doc" >}}
[alert_handler]: {{< relref "hw/top_earlgrey/ip_autogen/alert_handler/doc" >}}
[comportable_ip]: {{< relref "doc/rm/comportability_specification" >}}
[csrng]: {{< relref "hw/ip/csrng/doc" >}}
[entropy_source]: {{< relref "hw/ip/entropy_src/doc" >}}
[hmac]: {{< relref "hw/ip/hmac/doc" >}}
[keymgr]: {{< relref "hw/ip/keymgr/doc" >}}
[logical_security_model]: {{< relref "doc/security/logical_security_model" >}}
[implementation_guidelines]: {{< relref "doc/security/implementation_guidelines/hardware" >}}
[otbn]: {{< relref "hw/ip/otbn/doc" >}}
[security_model]: {{< relref "doc/security/specs" >}}
[use_cases]: {{< relref "doc/security/use_cases" >}}
