| # Trusted Platform Module - TPM |
| |
| ## Overview |
| |
| OpenTitan can be used to implement the full Trusted Platform Module (TPM) 2.0 |
| specification to meet client and server platform use cases. When used as a TPM, |
| OpenTitan is provisioned with an endorsement seed and RSA and ECDSA endorsement |
| certificates (EK). TPM commands are served over either SPI or I2C device |
| peripherals. |
| |
| ## Certification Requirements |
| |
| * [ANSSI-CC-PP-2018/03](https://trustedcomputinggroup.org/wp-content/uploads/TCG_PCClient_PP_1p3_for_Library_1p59_pub_29sept2021.pdf) |
| Protection Profile Client Specific TPM[^1]. The minimum assurance level for |
| this Protection Profile (PP) is EAL 4 augmented with ALC\_FLR.1 and |
| AVA\_VAN.4. |
| |
| * ALC\_FLR.1: Basic flaw remediation. The developer provides flaw |
| remediation procedures to the Target of Evaluation (TOE) developers. |
| * AVA\_VAN.4: Methodical vulnerability analysis. Methodical vulnerability |
| analysis is performed by the evaluator to identify the presence of |
| potential vulnerabilities. Penetration testing is performed by the |
| evaluator with a _moderate _attack potential. |
| |
| ## Minimum Crypto Algorithm Requirements |
| |
| * TRNG: At least one internal entropy source is required. The entropy source |
| and collector should provide entropy to the state register in a manner that |
| is not visible to an outside process. The entropy collector should regularly |
| update the state register with additional, unbiased entropy. |
| * Hash Algorithms: |
| * An approved hash algorithm with approximately the same security strength |
| as its strongest asymmetric algorithm. For OpenTitan the target is |
| SHA2-256, SHA2-384. |
| * A TPM should support the extend function to make incremental updates to |
| a digest value. |
| * Symmetric Key Algorithms: |
| * HMAC as described in ISO/IEC 9797-2. XOR obfuscation for use in a hash |
| based stream cipher. |
| * A symmetric block cipher in CFB mode. For OpenTitan the target is |
| AES-CFB 128/192/256-bit. |
| * Asymmetric key algorithm: |
| * At least one of: |
| * RSA: |
| * Sign and verify support for 3072-bit or larger key sizes. |
| * Verify support for 3072-bit key size as part of secure boot |
| implementation. |
| * ECDSA |
| * For OpenTitan, the minimum requirement is to support signature |
| and verification on NIST P-256 and P-384 curves. |
| * Key derivation function: |
| * Counter mode use of SP800-108, with HMAC as the PRF. |
| |
| ## Provisioning Requirements |
| |
| OpenTitan used as a TPM has the following provisioning requirements: |
| |
| * **Unique Global Identifier**: 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. |
| * **Endorsement Seed**: Generation of endorsement seed for RSA and ECC |
| asymmetric operations. The seed is stored in encrypted or masked form with a |
| key bound to the device's key manager. |
| * **EK Certificate**: One EK Certificate for each asymmetric key type. Stored |
| in the device. Additional requirements which may be fulfilled by an |
| implementation relying on Ownership Transfer: |
| * The intermediate root certificate may be cross-signed by the Silicon |
| Owner. |
| * The intermediate root certificate may only be used for a class of |
| devices managed by the Silicon Owner. |
| * The intermediate root certificate must be chained to a well known root |
| CA. |
| * **Factory Firmware**: Baseline image with support for firmware update via |
| SPI or I2C, and TPM 2.0 full or subset of commands required by the target |
| platform. |
| |
| ## Packaging Constraints |
| |
| * Non-HDI packaging is required. |
| * (Optional) TPM-spec compatible packaging. |
| |
| ## Additional Requirements |
| |
| The requirements listed below are extracted from the |
| [TPM Profile (PTP) Specification version 1.03 revision 22](https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/), |
| referred to as the PTP spec in the following sections. |
| |
| ### Storage Requirements |
| |
| * Size requirements as specified in section 3.6.1 of the PTP spec: |
| * Minimum of 8KB bytes of NV storage. |
| * Follow the storage guidance for pre-provisioned EK Certificates if these |
| are available. |
| |
| ### External Peripherals |
| |
| * SPI device with support for TPM flow control protocol as specified in |
| section 6.4.5 of the PTP spec. It is preferred to implement flow control in |
| hardware. |
| * I2C interface as specified in section 7.1 of the PTP doc. |
| * GPIO: Additional pins used to implement platform security flows for a set of |
| integration use cases. |
| |
| ## Relevant specs |
| |
| * https://trustedcomputinggroup.org/resource/tpm-library-specification/ |
| |
| * https://trustedcomputinggroup.org/work-groups/trusted-platform-module/ |
| |
| <!-- Footnotes themselves at the bottom. --> |
| |
| ## Notes |
| |
| [^1]: TCG requires membership in order to obtain TPM certification. There are |
| additional compliance testing requirements. See TCG's certification portal |
| for more details: |
| https://trustedcomputinggroup.org/membership/certification/. |