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