Trusted Platform Module
Trusted Platform Module (TPM, also known as ISO/IEC 11889) is an international standard for a secure cryptoprocessor, a dedicated microcontroller designed to secure hardware through integrated cryptographic keys. The term can also refer to a chip conforming to the standard.

TPM is used for digital rights management (DRM), Windows Defender, Windows Domain logon, protection and enforcement of software licenses, and prevention of cheating in online games.

One of Windows 11's system requirements is TPM 2.0. Microsoft has stated that this is to help increase security against firmware and ransomware attacks.

History 
Trusted Platform Module (TPM) was conceived by a computer industry consortium called Trusted Computing Group (TCG), It evolved into TPM Main Specification Version 1.2 which was standardized by International Organization for Standardization (ISO) and International Electrotechnical Commission (IEC) in 2009 as ISO/IEC 11889:2009. TPM Main Specification Version 1.2 was finalized on March 3, 2011, completing its revision.

On April 9th, 2014 the Trusted Computing Group announced a major upgrade to their specification entitled TPM Library Specification 2.0.  The group continues work on the standard incorporating errata, algorithmic additions and new commands, with its most recent edition published as 2.0 in November 2019.  This version became ISO/IEC 11889:2015.

When a new revision is released it is divided into multiple parts by the Trusted Computing Group. Each part consists of a document that makes up the whole of the new TPM specification.

 Part 1 – Architecture (renamed from Design Principles)
 Part 2 – Structures of the TPM
Part 3 – Commands
Part 4 – Supporting Routines (added in TPM 2.0)

Overview
Trusted Platform Module provides
 A hardware random number generator
 Facilities for the secure generation of cryptographic keys for limited uses.
 Remote attestation: Creates a nearly unforgeable hash key summary of the hardware and software configuration.  One could use the hash to verify that the hardware and software have not been changed. The software in charge of hashing the setup determines the extent of the summary.
 Binding: Encrypts data using the TPM bind key, a unique RSA key descended from a storage key.
 Sealing: Similar to binding, but in addition, specifies the TPM state for the data to be decrypted (unsealed).
 Other Trusted Computing functions for the data to be decrypted (unsealed).

Computer programs can use a TPM to authenticate hardware devices, since each TPM chip has a unique and secret Endorsement Key (EK) burned in as it is produced. Security embedded in hardware provides more protection than a software-only solution.  Its use is restricted in some countries.

Uses

Platform integrity
The primary scope of TPM is to ensure the integrity of a platform. In this context, "integrity" means "behave as intended", and a "platform" is any computer device regardless of its operating system. This is to ensure that the boot process starts from a trusted combination of hardware and software, and continues until the operating system has fully booted and applications are running.

When TPM is used, the firmware and the operating system are responsible for ensuring integrity.

For example, Unified Extensible Firmware Interface (UEFI) can use TPM to form a root of trust: The TPM contains several Platform Configuration Registers (PCRs) that allow secure storage and reporting of security-relevant metrics. These metrics can be used to detect changes to previous configurations and decide how to proceed. Good examples can be found in Linux Unified Key Setup (LUKS), BitLocker and PrivateCore vCage memory encryption. (See below.)

Another example of platform integrity via TPM is in the use of Microsoft Office 365 licensing and Outlook Exchange.

An example of TPM use for platform integrity is the Trusted Execution Technology (TXT), which creates a chain of trust. It could remotely attest that a computer is using the specified hardware and software.

Disk encryption
Full disk encryption utilities, such as dm-crypt and BitLocker, can use this technology to protect the keys used to encrypt the computer's storage devices and provide integrity authentication for a trusted boot pathway that includes firmware and boot sector.

Other uses and concerns
Any application can use a TPM chip for:
 Digital rights management (DRM)
 Windows Defender
 Windows Domain logon
 Protection and enforcement of software licenses
 Prevention of cheating in online games

Other uses exist, some of which give rise to privacy concerns. The "physical presence" feature of TPM addresses some of these concerns by requiring BIOS-level confirmation for operations such as activating, deactivating, clearing or changing ownership of TPM by someone who is physically present at the console of the machine.

By organizations 
The United States Department of Defense (DoD) specifies that "new computer assets (e.g., server, desktop, laptop, thin client, tablet, smartphone, personal digital assistant, mobile phone) procured to support DoD will include a TPM version 1.2 or higher where required by Defense Information Systems Agency (DISA) Security Technical Implementation Guides (STIGs) and where such technology is available." DoD anticipates that TPM is to be used for device identification, authentication, encryption, and device integrity verification.

TPM implementations

In 2006, new laptops began being sold with a built-in TPM chip. In the future, this concept could be co-located on an existing motherboard chip in computers, or any other device where the TPM facilities could be employed, such as a cellphone. On a PC, either the LPC bus or the SPI bus is used to connect to the TPM chip.

The Trusted Computing Group (TCG) has certified TPM chips manufactured by Infineon Technologies, Nuvoton, and STMicroelectronics, having assigned TPM vendor IDs to Advanced Micro Devices, Atmel, Broadcom, IBM, Infineon, Intel, Lenovo, National Semiconductor, Nationz Technologies, Nuvoton, Qualcomm, Rockchip, Standard Microsystems Corporation, STMicroelectronics, Samsung, Sinosun, Texas Instruments, and Winbond.

There are five different types of TPM 2.0 implementations (listed in order from most to least secure):
 Discrete TPMs are dedicated chips that implement TPM functionality in their own tamper resistant semiconductor package. They are theoretically the most secure type of TPM because the routines implemented in hardware should be more resistant to  versus routines implemented in software, and their packages are required to implement some tamper resistance.
 Integrated TPMs are part of another chip. While they use hardware that resists software bugs, they are not required to implement tamper resistance. Intel has integrated TPMs in some of its chipsets.
 Firmware TPMs (fTPMs) are firmware-based (e.g. UEFI) solutions that run in a CPU's trusted execution environment. Intel, AMD and Qualcomm have implemented firmware TPMs.
 Hypervisor TPMs (vTPMs) are virtual TPMs provided by and rely on hypervisors, in an isolated execution environment that is hidden from the software running inside virtual machines to secure their code from the software in the virtual machines. They can provide a security level comparable to a firmware TPM. Google Cloud Platform has implemented vTPM.
 Software TPMs are software emulators of TPMs that run with no more protection than a regular program gets within an operating system. They depend entirely on the environment that they run in, so they provide no more security than what can be provided by the normal execution environment, and they are vulnerable to their own software bugs and attacks that are penetrating the normal execution environment. They are useful for development purposes.

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.
Microsoft provides a Visual Studio solution and Linux autotools build scripts.

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.

TPM 1.2 vs TPM 2.0 
While TPM 2.0 addresses many of the same use cases and has similar features, the details are different. TPM 2.0 is not backward compatible with TPM 1.2.

The TPM 2.0 policy authorization includes the 1.2 HMAC, locality, physical presence, and PCR. It adds authorization based on an asymmetric digital signature, indirection to another authorization secret, counters and time limits, NVRAM values, a particular command or command parameters, and physical presence. It permits the ANDing and ORing of these authorization primitives to construct complex authorization policies.

Reception
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 (where the manufacturerand not the user who owns the computer systemdecides what software is allowed to run) and possible ways to follow actions taken by the user being recorded 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. As such, 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  for details), and TPM can stop some physical tampering.

In 2015, Richard Stallman suggested to replace 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 him. He also considers that TPMs available for PCs are not currently dangerous and that there is no reason not to include one in a computer or support it in software due to failed attempts from the industry to use that technology for DRM.

Attacks
In 2010, Christopher Tarnovsky presented an attack against TPMs at Black Hat Briefings, where he claimed to be able to extract secrets from a single TPM. He was able to do this after 6 months of work by inserting a probe and spying on an internal bus for the Infineon SLE 66 CL PC.

In 2015, as part of the Snowden revelations, it was revealed that in 2010 a US CIA team claimed at an internal conference to have carried out a differential power analysis attack against TPMs that was able to extract secrets.

In 2018, a design flaw in the TPM 2.0 specification for the static root of trust for measurement (SRTM) was reported (). It allows an adversary to reset and forge platform configuration registers which are designed to securely hold measurements of software that are used for bootstrapping a computer. Fixing it requires hardware-specific firmware patches. An attacker abuses power interrupts and TPM state restores to trick TPM into thinking that it is running on non-tampered components.

Main Trusted Boot (tboot) distributions before November 2017 are affected by a dynamic root of trust for measurement (DRTM) attack , which affects computers running on Intel's Trusted eXecution Technology (TXT) for the boot-up routine.

In case of physical access, computers with TPM are vulnerable to cold boot attacks as long as the system is on or can be booted without a passphrase from shutdown or hibernation, which is the default setup for Windows computers with BitLocker full disk encryption.

In 2021, the Dolos Group showed an attack on a discrete TPM, where the TPM chip itself had some tamper resistance, but the other endpoints of its communication bus did not. They read a full-disk-encryption key as it was transmitted across the motherboard, and used it to decrypt the laptop's SSD.

2017 weak key generation controversy 

In October 2017, it was reported that a code library developed by Infineon, which had been in widespread use in its TPMs, contained a vulnerability, known as ROCA, which generated weak RSA key pairs that allowed private keys to be inferred from public keys. As a result, all systems depending upon the privacy of such weak keys are vulnerable to compromise, such as identity theft or spoofing.

Cryptosystems that store encryption keys directly in the TPM without blinding could be at particular risk to these types of attacks, as passwords and other factors would be meaningless if the attacks can extract encryption secrets.

Infineon has released firmware updates for its TPMs to manufacturers who have used them.

Availability
Currently, a TPM is used by nearly all PC and notebook manufacturers.

TPM 

The TPM is implemented by several vendors:

 Infineon provides both TPM chips and TPM software, which are delivered as OEM versions with new computers as well as separately by Infineon for products with TPM technology which comply with TCG standards. For example, Infineon licensed TPM management software to Broadcom Corp. in 2004.
 Microchip (formerly Atmel) manufactures TPM devices that it claims to be compliant to the Trusted Platform Module specification version 1.2 revision 116 and offered with several interfaces (LPC, SPI, and I2C), modes (FIPS 140-2 certified and standard mode), temperature grades (commercial and industrial), and packages (TSSOP and QFN). Their TPMs support PCs and embedded devices. They also provides TPM development kits to support integration of its TPM devices into various embedded designs.
 Nuvoton Technology Corporation provides TPM devices for PC applications. Nuvoton also provides TPM devices for embedded systems and Internet of Things (IoT) applications via I2C and SPI host interfaces. Nuvoton's TPM complies with Common Criteria (CC) with assurance level EAL 4 augmented with ALC_FLR.1, AVA_VAN.4 and ALC_DVS.2, FIPS 140-2 level 2 with Physical Security and EMI/EMC level 3 and Trusted Computing Group Compliance requirements, all supported within a single device. TPMs produced by Winbond are now part of Nuvoton. 
 STMicroelectronics has provided TPMs for PC platforms and embedded systems since 2005. The product offering  includes discrete devices with several interfaces supporting Serial Peripheral Interface (SPI) and I²C and different qualification grades (consumer, industrial and automotive). The TPM products are Common Criteria (CC) certified EAL4+ augmented with ALC_FLR.1 and AVA_VAN.5, FIPS 140-2 level 2 certified with physical security level 3 and also Trusted Computing Group (TCG) certified.

There are also hybrid types; for example, TPM can be integrated into an Ethernet controller, thus eliminating the need for a separate motherboard component.

Field upgrade 

Field upgrade is the TCG term for updating the TPM firmware. The update can be between TPM 1.2 and TPM 2.0, or between firmware versions. Some vendors limit the number of transitions between 1.2 and 2.0, and some restrict rollback to previous versions. Platform OEMs such as HP supply an upgrade tool.

Virtual TPM 

 Google Compute Engine offers virtualized TPMs (vTPMs) as part of Google Cloud's Shielded VMs product.
 The libtpms library provides software emulation of a Trusted Platform Module (TPM 1.2 and TPM 2.0). It targets the integration of TPM functionality into hypervisors, primarily into Qemu.

Operating systems 

 Windows 11 requires TPM 2.0 support as a minimum system requirement. On many systems TPM is disabled by default which requires changing settings in the computer's UEFI to enable it.
 The Trusted Platform Module 2.0 (TPM 2.0) has been supported by the Linux kernel since version 3.20.

Platforms 

 Google includes TPMs in Chromebooks as part of their security model.
 Oracle ships TPMs in their X- and T-Series Systems such as T3 or T4 series of servers. Support is included in Solaris 11.
 In 2006, with the introduction of first Macintosh models with Intel processors, Apple started to ship Macs with TPM. Apple never provided an official driver, but there was a port under GPL available. Apple has not shipped a computer with TPM since 2006.
 In 2011, Taiwanese manufacturer MSI launched its Windpad 110W tablet featuring an AMD CPU and Infineon Security Platform TPM, which ships with controlling software version 3.7. The chip is disabled by default but can be enabled with the included, pre-installed software.

Virtualization 

 VMware ESXi hypervisor has supported TPM since 4.x, and from 5.0 it is enabled by default.
 Xen hypervisor has support of virtualized TPMs. Each guest gets its own unique, emulated, software TPM.
 KVM, combined with QEMU, has support for virtualized TPMs. , it supports passing through the physical TPM chip to a single dedicated guest. QEMU 2.11 released in December 2017 also provides emulated TPMs to guests.

Software 

 Microsoft operating systems Windows Vista and later use the chip in conjunction with the included disk encryption component named BitLocker. Microsoft had announced that from January 1, 2015, all computers will have to be equipped with a TPM 2.0 module in order to pass Windows 8.1 hardware certification. However, in a December 2014 review of the Windows Certification Program this was instead made an optional requirement. However, TPM 2.0 is required for connected standby systems. Virtual machines running on Hyper-V can have their own virtual TPM module starting with Windows 10 1511 and Windows Server 2016. Microsoft Windows includes two TPM related commands: , a utility that can be used to retrieve information about the TPM, and , a command-line tool that allows creating and deleting TPM virtual smart cards on a computer.

Endorsement keys 

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 format.

These manufacturers typically provide their certificate authority root (and sometimes intermediate) certificates on their web sites.

 AMD
 Infineon
 Intel 
 NationZ 
 Nuvoton
 ST Micro

TPM software libraries 
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 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, however the complexity is high. Therefore, most libraries also offer rich API to invoke complex TPM operations and hide some of the complexity. 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.

(*) There is a separate project called "CHARRA" by Fraunhofer that uses the tpm2-tss library for Remote Attestation. The other stacks have accompanying attestation servers or directly include examples for attestation. IBM offer their open-source Remote Attestation Server called "IBM ACS" on SourceForge and Google have "Go-Attestation" available on GitHub, while "wolfTPM" offers time and local attestation examples directly in its open-source code, also on GitHub.

(**) There is an application note about an example project for the AURIX 32-bit SoC using the tpm2-tss library.

(***) Requires additional libraries (dotnet) to run on Linux.

These TPM libraries are sometimes also called TPM stacks, because they provide the interface for the developer or user to interact with the TPM. As seen from the table, the TPM stacks abstract the operating system and transport layer, so the user could migrate one application between platforms. For example, by using TPM stack API the user would interact the same way with a TPM, regardless if the physical chip is connected over SPI, I2C or LPC interface to the Host system.

Developer communities 
The increasing relevance of computer security and especially hardware-backed security has made the potential use of TPM popular among developers and users. There are several developer communities around using a TPM.

TPM.dev 
This community has a forum-like platform for sharing information and asking questions. In the platform, one finds articles and video tutorials from community members and guests. There is a regular weekly online call. The main focus of this community is lowering the barrier to adoption of TPM and existing TPM Software Libraries. Specific focus is put on Remote Attestation and trusted applications.

tpm2-software 
This community is centered around the use of TPM with the tpm2-tss library. The community engages in developing it and other TPM 2.0 related software that can be found at their GitHub account. There also is a tutorials and external section with links to conference talks and presentations.

IBM TSS 
Nominally addressing the IBM TSS most discussions relate to more general application development.

IBM software TPM 
Nominally addressing the IBM implementation of a software TPM 2.0, most discussions relate to more general application development.

Nokia Attestation Engine 
Open-source remote attestation server research project that is designed to communicate with (theoretically) any attestatable element, eg: TPM 2.0, SGX enclave, containers etc.

Keylime project 
Open-source project that uses TPM 2.0 for boot and runtime attestation of computers and devices.

Linux Security mailing list 
linux-integrity@vger.kernel.org is a high volume mailing list. It is more appropriate for TPM device driver issues than general how-to questions.

See also 
 AMD Platform Security Processor
 ARM TrustZone
 Crypto-shredding
 Hardware security
 Hardware security module
 Hengzhi chip
 Intel Management Engine
 Microsoft Pluton
 Next-Generation Secure Computing Base
 Threat model

References

Further reading 

 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .

Computer hardware standards
Cryptographic hardware
Cryptographic software
Cryptography standards
ISO standards
Random number generation
Trusted computing