blob: 385076b742383bdb2154a326055fec26f9c33ab6 [file] [log] [blame] [view]
# 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.