Miguel Osorio | 5e8ee61 | 2019-12-02 18:10:56 -0800 | [diff] [blame] | 1 | --- |
| 2 | title: "OpenTitan Use Cases" |
| 3 | --- |
| 4 | |
| 5 | |
| 6 | ## Overview |
| 7 | |
| 8 | OpenTitan's mission is to raise the security bar industry wide by implementing a transparent, logically secure hardware root of trust with wide application. |
| 9 | |
| 10 | This document describes some of those use cases for OpenTitan. |
| 11 | These range from data center integrations, to embedded security applications such as security keys and smart cards. |
| 12 | References to relevant specifications and certification targets are noted where use cases are backed by industry standards. |
| 13 | |
| 14 | |
| 15 | ## Platform Integrity Module |
| 16 | |
| 17 | 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. |
| 18 | |
| 19 | <img src="use_cases_fig1.svg" alt="Fig1" style="width: 300px;"/> |
| 20 | |
| 21 | Figure 1: Platform Integrity Module |
| 22 | |
| 23 | |
| 24 | The Platform Integrity Module use case implements the following security properties: |
| 25 | |
| 26 | * Measure integrity of first boot firmware stages before bringing the boot devices out of reset accessing boot flash via SPI or similar interface. |
| 27 | * Monitor resets and heartbeat of downstream boot devices. |
| 28 | Monitoring tasks are handled by OpenTitan as Interrupt Service Routines (ISRs), and are not expected to operate under real time constraints. |
| 29 | * Enforce runtime boot device access policies, and manage A/B firmware updates for software stored in boot flash. |
| 30 | The OpenTitan to boot device interface is implemented on SPI or a similar interface. |
| 31 | * Provides root key store and attestation flows as part of the platform integrity secure boot implementation. |
| 32 | |
| 33 | ### Minimum Crypto Algorithm Requirements |
| 34 | |
| 35 | The current target for all crypto is at least 128-bit security strength. |
| 36 | This is subject to change based on the implementation timeline of any given instantiation of OpenTitan. |
| 37 | It is expected that a future implementation may be required to target a minimum of 192-bit or 256-bit security strength. |
| 38 | |
| 39 | * TRNG: Entropy source for chip identity generation and KDF operations. |
| 40 | In both cases, raw entropy is processed by a pseudorandom function before any key generation is done. |
| 41 | * Hash Algorithms: |
| 42 | * SHA256: An approved hash algorithm with approximately the same security strength as its strongest asymmetric algorithm. |
| 43 | * Asymmetric Key Algorithms: |
| 44 | * RSA-3072-bit: Secure boot signature verification. |
| 45 | * ECDSA P-256: Signature and verification for identity and attestation keys. |
| 46 | * Symmetric Key Algorithms: |
| 47 | * HMAC-SHA256: NIST FIPS 180-4 compliant. Used in integrity measurements for storage and in transit data as well as secure boot. |
| 48 | * AES: AES-CTR NIST 800-38A. Used to wrap keys and encrypt data stored in internal flash. |
| 49 | |
| 50 | |
| 51 | ### Provisioning Requirements |
| 52 | |
| 53 | Provisioning an OpenTitan device is performed in two steps: |
| 54 | |
| 55 | * 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. |
| 56 | * Ownership Transfer: Ownership is assigned to a user that has the ability to run software on the device. |
| 57 | As Silicon Owner, the user can generate a cryptographic identity strongly associated to the hardware and the software version running on the device. |
| 58 | |
| 59 | OpenTitan used as a Platform Integrity Module has the following provisioning requirements: |
| 60 | |
| 61 | * Unique Global Identifier: Non-Cryptographic big integer value (up to 256b) used to facilitate tracking of the devices throughout their life cycle. |
| 62 | The identifier is stored in One Time Programmable (OTP) storage during manufacturing. |
| 63 | * 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. |
| 64 | These keys are generated inside the device by the secure manufacturing process. |
| 65 | * Hardware Transport Certificate: Used to endorse the asymmetric hardware identity with a transit PKI trusted by the Silicon Owner at Ownership Transfer time. |
| 66 | * Factory Firmware: Baseline image with support for firmware update and Ownership Transfer. |
| 67 | Firmware update may be actuated by writing an OpenTitan update payload to boot flash. |
| 68 | Upon reset, OpenTitan scans the boot flash device for valid updates. |
| 69 | The factory image may not be owned by the Silicon Owner and its main purpose is to assist Ownership Transfer. |
| 70 | * Owner Cryptographic Identity: The Silicon Owner is required to generate an identity as part of the Ownership transfer flow. |
| 71 | Owner identities are bound to the Hardware Identity and the software version running on the device. |
| 72 | Owner identities are used in Silicon Ownership attestation flows and as a root component of Application keys. |
| 73 | * Application Keys: Keys bound to the owner identity and the application version running on the device. |
| 74 | Application keys are provisioned in most cases when the application runs for the first time. |
| 75 | The purpose of each key is configured at the application layer and enforced by the kernel. |
| 76 | |
| 77 | ### Performance Requirements |
| 78 | |
| 79 | Performance requirements are derived from integration-specific requirements. |
| 80 | The following performance requirements are presented for illustration purposes: |
| 81 | |
| 82 | * Boot Time: Maximum time allowed to get to device kernel serving state from cold reset. |
| 83 | * Resume Time: Maximum time allowed to get to device kernel serving state from sleep. |
| 84 | * External Flash Verification Time: Maximum time allowed for verification of external flash as part of platform boot verified boot implementation. |
| 85 | Defined in milliseconds for a given flash partition size. |
| 86 | |
| 87 | ### Packaging Constraints |
| 88 | |
| 89 | * Non-HDI packaging is required. |
| 90 | * (Proposed) Device packaging QR code with device ID linkable to manufacturing data. |
| 91 | |
| 92 | ### Additional Requirements |
| 93 | |
| 94 | #### Memory Requirements |
| 95 | |
| 96 | * At least 512KB of flash storage with 2 partitions, 4KB page size, 100K endurance cycles. |
| 97 | 1MB flash would be ideal to allow for future code size growth. |
| 98 | * At least 16KB of isolated flash storage for manufacturing and device life cycle operations. |
| 99 | * At least 8KB of OTP for manufacturing and device life cycle operations. |
| 100 | * At least 64KB of SRAM. 128KB would be ideal for future growth. |
| 101 | |
| 102 | #### External Peripherals |
| 103 | |
| 104 | The following list of peripheral requirements is speculative at the moment and subject to change based on platform integration requirements: |
| 105 | |
| 106 | * SPI Host/Device: |
| 107 | * Dual support. Quad support needs to be evaluated. |
| 108 | * Required features for EEPROM mode: |
| 109 | - Passthrough boot flash interface with support for EEPROM command handling/filtering. |
| 110 | - Access to on-die ram and flash memory regions. |
| 111 | - Mailbox interface with support for custom opcode commands. |
| 112 | * eSPI: Enhanced Serial Peripheral (eSPI) which enables asynchronous processing of boot flash commands issued by a boot device supporting the eSPI protocol and serviced by OpenTitan. |
| 113 | * UART: Debug console interface. May be disabled by production firmware. |
| 114 | * GPIO: Reset control and monitoring. Status signals. |
| 115 | * I2C interface compatible with SMBus interfaces. |
| 116 | |
| 117 | ## Universal 2nd-Factor Security Key |
| 118 | |
| 119 | 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. |
| 120 | U2F requires the implementation of a challenge-response authentication protocol based on public key cryptography. |
| 121 | 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. |
| 122 | |
| 123 | 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. |
| 124 | See [Universal 2nd Factor (U2F) Overview v1.2][2] for more details on the functional requirements of this use case. |
| 125 | |
| 126 | ### Certification Requirements |
| 127 | |
| 128 | * [BSI-PP-CC-0096-V3-2018][3] FIDO Universal Second Factor (U2F) Authenticator. |
| 129 | The minimum assurance level for this Protection Profile (PP) is EAL4 augmented. |
| 130 | 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). |
| 131 | * [FIPS 140-2 L1 + L3 physical][4] certification is required for some use cases. |
| 132 | |
| 133 | ### Minimum Crypto Algorithm Requirements |
| 134 | |
| 135 | The current target for all crypto is at least 128-bit security strength. |
| 136 | This is subject to change based on the implementation timeline of any given instantiation of OpenTitan. |
| 137 | It is expected that a future implementation may be required to target a minimum of 192-bit or 256-bit security strength. |
| 138 | |
| 139 | * TRNG: |
| 140 | * Entropy source for ECDSA keypair generation (seed and nonce). |
| 141 | * (optional) Symmetric MAC key generation. |
| 142 | * Asymmetric Key Algorithms: |
| 143 | * ECDSA: Signature and verification on NIST P-256 curve for identity and attestation keys. |
| 144 | * RSA-3072-bit: Secure boot signature verification. Used to verify the signature of the device's firmware. |
| 145 | * Symmetric Key Algorithms: |
| 146 | * AES-CTR: |
| 147 | - (optional) Used to wrap a user private key in a key handle. Implementation dependent. |
| 148 | * HMAC-SHA256: |
| 149 | - For application key handle generation. |
| 150 | * Hash Algorithms: |
| 151 | * SHA-256: |
| 152 | - Code and hardware measurements used in internal secure boot implementation. |
| 153 | - (optional) For key handle generation. Implementation dependent. |
| 154 | - (optional) Attestation cert generation, if generated on the fly. |
| 155 | |
| 156 | |
| 157 | ### Provisioning Requirements |
| 158 | |
| 159 | OpenTitan used as a security key has the following provisioning requirements: |
| 160 | |
| 161 | * Unique Global Identifier: Non-Cryptographic big integer value (up to 256b) used to facilitate tracking of the devices throughout their life cycle. |
| 162 | The identifier is stored in One Time Programmable (OTP) storage during manufacturing. |
| 163 | * Attestation Key: Unique cryptographic identity used for attestation purposes. |
| 164 | * Self-Signed Attestation Certificate: Self signed certificate and extracted at manufacturing time for registration purposes. |
Scott Johnson | 6ecf499 | 2020-07-07 10:38:16 -0700 | [diff] [blame] | 165 | 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. |
Miguel Osorio | 5e8ee61 | 2019-12-02 18:10:56 -0800 | [diff] [blame] | 166 | * Factory Firmware: Baseline image with support for firmware update via USB, and the USB HID U2F command spec. |
| 167 | |
| 168 | ### Additional Requirements |
| 169 | |
| 170 | * Physical Presence GPIO: U2F requires physical user presence checks for registration and authentication flows. |
| 171 | This is implemented either via a push button or capacitive touch sensor connected to an input GPIO pin. |
| 172 | * At least 2 PWM peripherals can facilitate implementation of capacitive touch sensor IO operations. |
| 173 | * Status LEDs GPIO: The security key may use LEDs to provide feedback to the user. |
| 174 | This requires up to 4 additional output GPIO pins. |
| 175 | * USB HID U2F Stack: The security key communicates with host devices via a USB HID protocol. |
| 176 | OpenTitan shall meet the USB 1.1 connectivity and protocol requirements to interface with the host. |
| 177 | |
| 178 | ### Relevant specs |
| 179 | |
| 180 | https://fidoalliance.org/specifications/download/ |
| 181 | |
| 182 | [1]: https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-security-ref-v1.2-ps-20170411.html |
| 183 | [2]: https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-overview-v1.2-ps-20170411.html |
| 184 | [3]: https://www.commoncriteriaportal.org/files/ppfiles/pp0096V3b_pdf.pdf |
| 185 | [4]: https://en.wikipedia.org/wiki/FIPS_140-2#Security_levels |