| FazBrowse Wikipedia Viewer | Main Page | | |
| Viewing: https://en.wikipedia.org/wiki/Trusted_Platform_Module |
| Contents |
|---|
| Criticism |
| Endorsement keys |
| Software libraries |
| Trusted Platform Module | |
|---|---|
An example Trusted Platform Module, the Infineon SLB9655TT12 | |
| Abbreviation | TPM |
| Status | Published |
| Year started | 2009;17 years ago (2009) |
| Latest version | ISO/IEC 11889:2015 2015;11 years ago (2015) (reconfirmed 2021; revision in progress as of 2026) |
| Organization | Trusted Computing Group, ISO/IEC JTC 1 |
| Domain | Secure cryptoprocessor |
| Website | |
A Trusted Platform Module (TPM) is a secure cryptoprocessor that implements the ISO/IEC 11889 standard. Common uses are verifying that the boot process starts from a trusted combination of hardware and software and storing disk encryption keys.
A TPM 2.0 implementation is part of the Windows 11 system requirements.
| TPM 2.0 Reference Implementation | |
|---|---|
| Developer | Microsoft |
| Written in | C, C++ |
| Type | TPM implementation |
| License | BSD License |
| Website | trustedcomputinggroup.org/tpm-library-specification |
| Repository | github.com/Microsoft/ms-tpm-20-ref |
The official TCG reference implementation of the TPM 2.0 Specification has been developed by Microsoft. It is licensed under BSD License and the source code is available on GitHub.
In 2018, Intel open-sourced its Trusted Platform Module 2.0 (TPM2) software stack with support for Linux and Microsoft Windows. The source code is hosted on GitHub and licensed under BSD License.
Infineon funded the development of an open source TPM middleware that complies with the Software Stack (TSS) Enhanced System API (ESAPI) specification of the TCG. It was developed by Fraunhofer Institute for Secure Information Technology (SIT).
IBM's Software TPM 2.0 is an implementation of the TCG TPM 2.0 specification. It is based on the TPM specification Parts 3 and 4 and source code donated by Microsoft. It contains additional files to complete the implementation. The source code is hosted on SourceForge and GitHub and licensed under BSD License.
In 2022, AMD announced that under certain circumstances their fTPM implementation causes performance problems. A fix is available in form of a BIOS-Update.
The Trusted Computing Group (TCG) has faced resistance to the deployment of this technology in some areas, where some authors see possible uses not specifically related to Trusted Computing, which may raise privacy concerns. The concerns include the abuse of remote validation of software to decide what software is allowed to run, and possible ways to follow actions taken by the user and record them in a database in a manner that is completely undetectable to the user.
The TrueCrypt disk encryption utility, as well as its derivative VeraCrypt, do not support TPM. The original TrueCrypt developers were of the opinion that the exclusive purpose of the TPM is "to protect against attacks that require the attacker to have administrator privileges, or physical access to the computer". The attacker who has physical or administrative access to a computer can circumvent TPM, e.g., by installing a hardware keystroke logger, by resetting TPM, or by capturing memory contents and retrieving TPM-issued keys. The condemning text goes so far as to claim that TPM is entirely redundant. The VeraCrypt publisher has reproduced the original allegation with no changes other than replacing "TrueCrypt" with "VeraCrypt". The author is right that, after achieving either unrestricted physical access or administrative privileges, it is only a matter of time before other security measures in place are bypassed. However, stopping an attacker in possession of administrative privileges has never been one of the goals of TPM (see § Uses for details), and TPM can stop some physical tampering.
In 2015, Richard Stallman suggested replacing the term "trusted computing" with the term "treacherous computing" due to the danger that the computer can be made to systematically disobey its owner if the cryptographical keys are kept secret from them. He also considers that TPMs available for PCs in 2015 are not currentlytpmvscmgr, a command-line tool that allows creating and deleting TPM virtual smart cards on a computer.
TPM endorsement keys (EKs) are asymmetric key pairs unique to each TPM. They use the RSA and ECC algorithms. The TPM manufacturer usually provisions endorsement key certificates in TPM non-volatile memory. The certificates assert that the TPM is authentic. Starting with TPM 2.0, the certificates are in X.509 DER format. After the TPM was manufactured, the EKs cannot be changed. For fTPM, the EKs are stored on CPU / chipset when it was manufactured.
These manufacturers typically provide their certificate authority root (and sometimes intermediate) certificates on their web sites.
To utilize a TPM, the user needs a software library that communicates with the TPM and provides a friendlier API than the raw TPM communication. Currently, there are several such open-source TPM 2.0 libraries. Some of them also support TPM 1.2, but mostly TPM 1.2 chips are now deprecated and modern development is focused on TPM 2.0.
Typically, a TPM library provides an API with one-to-one mappings to TPM commands. The TCG specification calls this layer the System API (SAPI). This way, the user has more control over the TPM operations, but the complexity is high. To hide some of the complexity, most libraries also offer simpler ways to invoke complex TPM operations. The TCG specification call these two layers Enhanced System API (ESAPI) and Feature API (FAPI).
There is currently only one stack that follows the TCG specification. All the other available open-source TPM libraries use their own form of richer API.
| TPM Libraries | API | TPM 2.0 | TPM 1.2 | Attestation server or example | Microsoft Windows |
Linux | Bare metal | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| tpm2-tss | SAPI, ESAPI and FAPI from the TCG specification |
No, but there is a separate project | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
International Organization for Standardization (ISO) standards |
| 1–9999 |
| ||||||||||
| 10000–19999 |
| ||||||||||
| 20000–29999 |
| ||||||||||
| 30000+ | |||||||||||
| |||||||||||