blob: 143246e8c866246cd7ccedf320d627772b084b22 [file] [log] [blame] [view]
---
title: "OpenTitan Use Cases"
---
## Overview
OpenTitan's mission is to raise the security bar industry wide by implementing a
transparent, logically secure hardware root of trust with wide application.
This document describes some of those use cases for OpenTitan. These range from
data center integrations, to embedded security applications such as security
keys and smart cards. References to relevant specifications and certification
targets are noted where use cases are backed by industry standards.
## Platform Integrity Module
An OpenTitan IC used as a Platform Integrity Module interposes between a
platform's boot flash and its main boot devices such as the Baseboard Management
Controller (BMC), the Platform Controller Hub (PCH) and the CPU.
<img src="use_cases_fig1.svg" alt="Fig1" style="width: 300px;"/>
Figure 1: Platform Integrity Module
The Platform Integrity Module use case implements the following security
properties:
* Measure integrity of first boot firmware stages before bringing the boot
devices out of reset accessing boot flash via SPI or similar interface.
* Monitor resets and heartbeat of downstream boot devices. Monitoring tasks
are handled by OpenTitan as Interrupt Service Routines (ISRs), and are not
expected to operate under real time constraints.
* Enforce runtime boot device access policies, and manage A/B firmware updates
for software stored in boot flash. The OpenTitan to boot device interface is
implemented on SPI or a similar interface.
* Provides root key store and attestation flows as part of the platform
integrity secure boot implementation.
### Minimum Crypto Algorithm Requirements
The current target for all crypto is at least 128-bit security strength. This is
subject to change based on the implementation timeline of any given
instantiation of OpenTitan. It is expected that a future implementation may be
required to target a minimum of 192-bit or 256-bit security strength.
* TRNG: NIST SP 800-90B compliant entropy source.
* DRBG: NIST SP 800-90A compliant DRBG.
* Hash Algorithms:
* SHA256: An approved hash algorithm with approximately the same security
strength as its strongest asymmetric algorithm.
* Asymmetric Key Algorithms:
* RSA-3072: Secure boot signature verification.
* ECDSA P-256: Signature and verification for identity and attestation
keys.
* Symmetric Key Algorithms:
* HMAC-SHA256: NIST FIPS 180-4 compliant. Used in integrity measurements
for storage and in transit data as well as secure boot.
* AES: AES-CTR NIST 800-38A. Used to wrap keys and encrypt data stored in
internal flash.
### Provisioning Requirements
Provisioning an OpenTitan device is performed in two steps:
* Device Personalization: The device is initialized with a unique
cryptographic identity endorsed by a Transit PKI which is only used to
support initial Ownership Transfer.
* Ownership Transfer: Ownership is assigned to a user that has the ability to
run software on the device. As Silicon Owner, the user can generate a
cryptographic identity strongly associated to the hardware and the software
version running on the device.
OpenTitan used as a Platform Integrity Module has the following provisioning
requirements:
* Unique Global Identifier: Non-Cryptographic big integer value (up to 256b)
used to facilitate tracking of the devices throughout their life cycle. The
identifier is stored in One Time Programmable (OTP) storage during
manufacturing.
* Hardware Cryptographic Identity: Symmetric and asymmetric keys associated
with the hardware, used to attest the authenticity of the chip and also as a
component of the Owner Cryptographic Identity. These keys are generated
inside the device by the secure manufacturing process.
* Hardware Transport Certificate: Used to endorse the asymmetric hardware
identity with a transit PKI trusted by the Silicon Owner at Ownership
Transfer time.
* Factory Firmware: Baseline image with support for firmware update and
Ownership Transfer. Firmware update may be actuated by writing an OpenTitan
update payload to boot flash. Upon reset, OpenTitan scans the boot flash
device for valid updates. The factory image may not be owned by the Silicon
Owner and its main purpose is to assist Ownership Transfer.
* Owner Cryptographic Identity: The Silicon Owner is required to generate an
identity as part of the Ownership transfer flow. Owner identities are bound
to the Hardware Identity and the software version running on the device.
Owner identities are used in Silicon Ownership attestation flows and as a
root component of Application keys.
* Application Keys: Keys bound to the owner identity and the application
version running on the device. Application keys are provisioned in most
cases when the application runs for the first time. The purpose of each key
is configured at the application layer and enforced by the kernel.
### Performance Requirements
Performance requirements are derived from integration-specific requirements. The
following performance requirements are presented for illustration purposes:
* Boot Time: Maximum time allowed to get to device kernel serving state from
cold reset.
* Resume Time: Maximum time allowed to get to device kernel serving state from
sleep.
* External Flash Verification Time: Maximum time allowed for verification of
external flash as part of platform boot verified boot implementation.
Defined in milliseconds for a given flash partition size.
### Packaging Constraints
* Non-HDI packaging is required.
* (Proposed) Device packaging QR code with device ID linkable to manufacturing
data.
### Additional Requirements
#### Memory Requirements
* At least 512KB of flash storage with 2 partitions, 4KB page size, 100K
endurance cycles. 1MB flash would be ideal to allow for future code size
growth.
* At least 16KB of isolated flash storage for manufacturing and device life
cycle operations.
* At least 8KB of OTP for manufacturing and device life cycle operations.
* At least 64KB of SRAM. 128KB would be ideal for future growth.
#### External Peripherals
The following list of peripheral requirements is speculative at the moment and
subject to change based on platform integration requirements:
* SPI Host/Device:
* Dual support. Quad support needs to be evaluated.
* Required features for EEPROM mode:
- Passthrough boot flash interface with support for EEPROM command
handling/filtering.
- Access to on-die ram and flash memory regions.
- Mailbox interface with support for custom opcode commands.
* UART: Debug console interface. May be disabled by production firmware.
* GPIO: Reset control and monitoring. Status signals.
* I2C interface compatible with SMBus interfaces.
## Universal 2nd-Factor Security Key
When used as a security key, OpenTitan implements the Universal 2nd Factor (U2F)
authentication standard, using a Universal Serial Bus (USB) 1.1 interface to
communicate with host devices. U2F requires the implementation of a
challenge-response authentication protocol based on public key cryptography. The
security key is provisioned with a unique identity in the form of an asymmetric
key, which may be self-endorsed by a certificate issued at manufacturing time.
When used as a security key, OpenTitan shall meet the FIDO Authenticator
security goals and measures described in the [FIDO Security Reference v1.2][1]
specification. See [Universal 2nd Factor (U2F) Overview v1.2][2] for more
details on the functional requirements of this use case.
### Certification Requirements
* [BSI-PP-CC-0096-V3-2018][3] FIDO Universal Second Factor (U2F)
Authenticator. The minimum assurance level for this Protection Profile (PP)
is EAL4 augmented. This PP supports composite certification on top of the
Security IC Platform Protection Profile with Augmentation Packages,
BSI-CC-PP-0084-2014 (referred to as PP84).
* [FIPS 140-2 L1 + L3 physical][4] certification is required for some use
cases.
### Minimum Crypto Algorithm Requirements
The current target for all crypto is at least 128-bit security strength. This is
subject to change based on the implementation timeline of any given
instantiation of OpenTitan. It is expected that a future implementation may be
required to target a minimum of 192-bit or 256-bit security strength.
* TRNG:
* Entropy source for ECDSA keypair generation (seed and nonce).
* (optional) Symmetric MAC key generation.
* Asymmetric Key Algorithms:
* ECDSA: Signature and verification on NIST P-256 curve for identity and
attestation keys.
* RSA-3072: Secure boot signature verification. Used to verify the
signature of the device's firmware.
* Symmetric Key Algorithms:
* AES-CTR:
- (optional) Used to wrap a user private key in a key handle.
Implementation dependent.
* HMAC-SHA256:
- For application key handle generation.
* Hash Algorithms:
* SHA-256:
- Code and hardware measurements used in internal secure boot
implementation.
- (optional) For key handle generation. Implementation dependent.
- (optional) Attestation cert generation, if generated on the fly.
### Provisioning Requirements
OpenTitan used as a security key has the following provisioning requirements:
* Unique Global Identifier: Non-Cryptographic big integer value (up to 256b)
used to facilitate tracking of the devices throughout their life cycle. The
identifier is stored in One Time Programmable (OTP) storage during
manufacturing.
* Attestation Key: Unique cryptographic identity used for attestation
purposes.
* Self-Signed Attestation Certificate: Self signed certificate and extracted
at manufacturing time for registration purposes. U2F backend servers can
create an allow-list of certificates reported by the secure key
manufacturer, and use them to perform authenticity checks as part of the
registration flow.
* Factory Firmware: Baseline image with support for firmware update via USB,
and the USB HID U2F command spec.
### Additional Requirements
* Physical Presence GPIO: U2F requires physical user presence checks for
registration and authentication flows. This is implemented either via a push
button or capacitive touch sensor connected to an input GPIO pin.
* At least 2 PWM peripherals can facilitate implementation of capacitive
touch sensor IO operations.
* Status LEDs GPIO: The security key may use LEDs to provide feedback to the
user. This requires up to 4 additional output GPIO pins.
* USB HID U2F Stack: The security key communicates with host devices via a USB
HID protocol. OpenTitan shall meet the USB 1.1 connectivity and protocol
requirements to interface with the host.
### Relevant specs
https://fidoalliance.org/specifications/download/
[1]: https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-security-ref-v1.2-ps-20170411.html
[2]: https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-overview-v1.2-ps-20170411.html
[3]: https://www.commoncriteriaportal.org/files/ppfiles/pp0096V3b_pdf.pdf
[4]: https://en.wikipedia.org/wiki/FIPS_140-2#Security_levels