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