ATrusted Platform Module (TPM) is asecure cryptoprocessor that implements theISO/IEC 11889 standard. Common uses are verifying that theboot process starts from a trusted combination of hardware and software and storing disk encryption keys.
A TPM 2.0 implementation is part of theWindows 11 system requirements.[1]
On April 9, 2014, theTrusted Computing Group announced a major upgrade to their specification entitledTPM Library Specification 2.0.[6] 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.[7] 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)
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.[8][9][10]
Specification
TPM 1.2
TPM 2.0
Architecture
A complete specification is intended to consist of a platform-specific protection profile which references a common three part TPM 1.2 library.[5] In practice, only a PC Client protection profile was created for TPM 1.2. Protection profiles forPDA andcellular were intended to be defined,[5] but were never published.
A complete specification consists of a platform-specific specification which references a common four-part TPM 2.0 library.[11][7] Platform-specific specifications define what parts of the library are mandatory, optional, or banned for that platform; and detail other requirements for that platform.[11] Platform-specific specifications include PC Client,[12] mobile,[13] and Automotive-Thin.[14]
Algorithms
SHA-1 andRSA are required.[15]AES is optional.[15]Triple DES was once an optional algorithm in earlier versions of TPM 1.2,[16] but has been removed from TPM 1.2 version 103.[17] The MGF1 hash-based mask generation function that is defined inPKCS#1 is required.[15]
The PC Client Platform TPM Profile (PTP) Specification requiresSHA-1 andSHA-256 for hashes;RSA,ECC using theNIST P-256 curve forpublic-key cryptography and asymmetricdigital signature generation and verification;HMAC for symmetric digital signature generation and verification; 128-bitAES forsymmetric-key algorithm; and the MGF1 hash-based mask generation function that is defined inPKCS#1.[18] Many other algorithms are also defined but are optional.[19] Note thatTriple DES was added into the TPM 2.0 library, but with restrictions to rejectweak keys.[20] Also, elliptic cryptographyDirect Anonymous Attestation (ECDAA) using Barreto-Naehrig ECC curves which was mandatory in earlier versions has been made optional in the PC Client profile version 1.59.[18]
Password,HMAC, and policy (which covers HMAC, PCR, locality, and physical presence).
NVRAM
Unstructured data
Unstructured data, counter, bitmap, extend, PIN pass and fail
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 theANDing and ORing of these authorization primitives to construct complex authorization policies.[23]
Facilities for the secure generation ofcryptographic keys for limited uses.
Remote attestation: Creates a nearly unforgeablehash 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: Data is encrypted using the TPM bind key, a uniqueRSA key descended from a storage key. Computers that incorporate a TPM can create cryptographic keys and encrypt them so that they can only be decrypted by the TPM. This process, often called wrapping or binding a key, can help protect the key from disclosure. Each TPM has a master wrapping key, called the storage root key, which is stored within the TPM itself. User-level RSA key containers are stored with the Windows user profile for a particular user and can be used to encrypt and decrypt information for applications that run under that specific user identity.[26][27]
Sealed storage: Specifies the TPM state[28] for the data to be decrypted (unsealed).[29]
Computer programs can use a TPM for theauthentication of 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.[31] Its use is restricted in some countries.[32]
Screenshot oftpm2-software showing the reading of Platform Configuration Registers (PCRs), the getrandom result taken from TPM device, and TPM version (2.0)
The primary scope of TPM is to ensure theintegrity of a platform during boot time. In this context, "integrity" means "behaves as intended", and a "platform" is any computer device regardless of itsoperating system. This is to ensure that theboot process starts from a trusted combination of hardware and software, and continues until the operating system has fully booted andapplications are running.
When TPM is used, the firmware and the operating system are responsible for ensuring integrity.
For example, theUnified Extensible Firmware Interface (UEFI) can use TPM to form aroot 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. Examples of such use can be found inLinux Unified Key Setup (LUKS),[33]BitLocker andPrivateCore vCage memory encryption. (See below.)
Another example of platform integrity via TPM is in the use ofMicrosoft Office 365 licensing and Outlook Exchange.[34]
Another example of TPM use for platform integrity is theTrusted Execution Technology (TXT), which creates a chain of trust. It could remotely attest that a computer is using the specified hardware and software.[35]
Full disk encryption utilities, such asdm-crypt, can use this technology to protect the keys used to encrypt the computer's storage devices and provide integrityauthentication for a trusted boot pathway that includes firmware and theboot sector.[36]
In 2006, newlaptops began being sold with a built-in TPM chip. In the future, this concept could be co-located on an existingmotherboard chip in computers, or any other device where the TPM facilities could be employed, such as acellphone. On a PC, either theLow Pin Count (LPC) bus or theSerial Peripheral Interface (SPI) bus is used to connect to the TPM chip.
There are five different types of TPM 2.0 implementations (listed in order from most to least secure):[39][40]
Discrete TPMs (dTPMs) are dedicated chips that implement TPM functionality in their own tamper resistant semiconductor package. They are the most secure, certified to FIPS-140 with level 3 physical security[41] resistance to attack versus routines implemented in software, and their packages are required to implement some tamper resistance. For example, the TPM for the brake controller in a car is protected from hacking by sophisticated methods.[42]
Integrated TPMs (iTPMs) 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 itschipsets.
Firmware TPMs (fTPMs) are firmware-based (e.g.UEFI) solutions that run in a CPU'strusted execution environment. Intel, AMD and Qualcomm have implemented firmware TPMs.
Virtual TPMs (vTPMs) are provided by and rely onhypervisors in isolated execution environments that are hidden from the software running insidevirtual 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.[43]
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. They are useful for development purposes.
The official TCG reference implementation of the TPM 2.0 Specification has been developed byMicrosoft. It is licensed underBSD License and thesource code is available onGitHub.[44]
In 2018,Intel open-sourced its Trusted Platform Module 2.0 (TPM2) software stack with support for Linux and Microsoft Windows.[45] The source code is hosted on GitHub and licensed underBSD License.[46][47]
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.[48] It was developed byFraunhofer Institute for Secure Information Technology (SIT).[49]
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 onSourceForge[50] andGitHub[51] 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 aBIOS-Update.[52][53]
TheTrusted Computing Group (TCG) has faced resistance to the deployment of this technology in some areas, where some authors see possible uses not specifically related toTrusted 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.[54]
TheTrueCrypt disk encryption utility, as well as its derivativeVeraCrypt, 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 hardwarekeystroke 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.[55] The VeraCrypt publisher has reproduced the original allegation with no changes other than replacing "TrueCrypt" with "VeraCrypt".[56] 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.[57][58] However, stopping an attacker in possession of administrative privileges has never been one of the goals of TPM (see§ Uses for details), and TPM canstop some physical tampering.[33][35][59][60][61]
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 currently[timeframe?] dangerous and that there is no reasonnot to include one in a computer or support it in software due to failed attempts from the industry to use that technology forDRM, but that the TPM2 released in 2022 is precisely the "treacherous computing" threat he had warned of.[62]
In August 2023,Linus Torvalds, who was frustrated with AMD fTPM's stuttering bugs, opined, "Let's just disable the stupid fTPMhwrnd thing." He said the CPU-based random number generation,rdrand, was equally suitable, despite having its share of bugs. Writing forNeowin, Sayan Sen quoted Torvalds' comments and called him "a man with a strong opinion".[63]
In 2010,Christopher Tarnovsky presented an attack against TPMs atBlack 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 aninternal bus for the Infineon SLE 66 CL PC.[64][65]
In case of physical access, computers with TPM 1.2 are vulnerable tocold boot attacks as long as the system is on or can be booted without a passphrase from shutdown,sleep orhibernation, which is the default setup for Windows computers with BitLocker full disk encryption.[66] A fix was proposed, which has been adopted in the specifications for TPM 2.0.
In 2009, the concept of shared authorisation data in TPM 1.2 was found to be flawed. An adversary given access to the data could spoof responses from the TPM.[67] A fix was proposed, which has been adopted in the specifications for TPM 2.0.
In October 2017, it was reported that a code library developed byInfineon, which had been in widespread use in its TPMs, contained a vulnerability, known asROCA, which generated weakRSA key pairs that allowed private keys to be inferred frompublic keys. As a result, all systems depending upon the privacy of such weak keys are vulnerable to compromise, such asidentity theft or spoofing.[71] Cryptosystems that store encryption keys directly in the TPM withoutblinding 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.[72] Infineon has released firmware updates for its TPMs to manufacturers who have used them.[73]
In 2018, a design flaw in the TPM 2.0 specification for the static root of trust for measurement (SRTM) was reported (CVE-2018-6622). 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.[74] Fixing it requires hardware-specific firmware patches.[74] An attacker abuses power interrupts and TPM state restores to trick TPM into thinking that it is running on non-tampered components.[70]
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.[75]
As of 2025[update], a TPM is provided by nearly all PC and notebook manufacturers in their products.
Vendors include:
Infineon provides both TPM chips and TPM software, which are delivered asOEM 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.[76]
Microchip (formerly Atmel) manufactured 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).[77][78][79] Its TPMs support PCs and embedded devices.[77] It also provides TPM development kits to support integration of its TPM devices into various embedded designs.[80]
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 withCommon 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 andTrusted Computing Group Compliance requirements, all supported within a single device. TPMs produced byWinbond are now part of Nuvoton.[81]
STMicroelectronics has provided TPMs for PC platforms and embedded systems since 2005. The product offering[82] includes discrete devices with several interfaces supportingSerial Peripheral Interface (SPI) andI2C and different qualification grades (consumer, industrial and automotive). The TPM products areCommon 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 alsoTrusted Computing Group (TCG) certified.
There are also hybrid types; for example, TPM can be integrated into anEthernet controller, thus eliminating the need for a separate motherboard component.[83][84]
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.[citation needed] Platform OEMs such asHP[85] supply an upgrade tool.
Since July 28, 2016, all new Microsoft device models, lines, or series (or updating the hardware configuration of an existing model, line, or series with a major update, such as CPU, graphic cards) implement, and enable by default TPM 2.0.
While TPM 1.2 parts are discrete silicon components, which are typically soldered on the motherboard, TPM 2.0 is available as a discrete (dTPM) silicon component in a single semiconductor package, an integrated component incorporated in one or more semiconductor packages - alongside other logic units in the same package(s), and as a firmware (fTPM) based component running in a trusted execution environment (TEE) on a general purpose System-on-a-chip (SoC).[86]
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.[89]
Windows 11 requires TPM 2.0 support as a minimum system requirement.[90][91] On many systems TPM is disabled by default which requires changing settings in the computer's UEFI to enable it.[92]
Windows 8 and later have native support for TPM 2.0.
Windows 7 can install an official patch to add TPM 2.0 support.[93]
Oracle ships TPMs in their X- and T-Series Systems such as T3 or T4 series of servers.[99] Support is included inSolaris 11.[100]
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 underGPL available.[101] Apple has not shipped a computer with TPM since 2006.[102] Starting in 2016, Apple products began adopting Apple's own trusted hardware component called "Secure Enclave", originally as a separate chip and later as an integrated part of Apple silicon CPUs. Apple Secure Enclave is not TPM-compatible.[103]
In 2011, Taiwanese manufacturerMSI launched its Windpad 110W tablet featuring anAMD 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.[104]
VMware ESXi hypervisor has supported TPM since 4.x, and from 5.0 it is enabled by default.[105][106]
Xen hypervisor has support of virtualized TPMs. Each guest gets its own unique, emulated, software TPM.[107]
KVM, combined withQEMU, has support for virtualized TPMs. As of 2012[update], 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.[108]
VirtualBox has support for virtual TPM 1.2 and 2.0 devices starting with version 7.0 released in October 2022.[109]
Microsoft operating systemsWindows Vista and later use the chip in conjunction with the included disk encryption component namedBitLocker. Microsoft had announced that from January 1, 2015, all computers will have to be equipped with a TPM 2.0 module in order to passWindows 8.1hardware certification.[110] However, in a December 2014 review of the Windows Certification Program this was instead made an optional requirement. However, TPM 2.0 is required forconnected standby systems.[111] Virtual machines running on Hyper-V can have their own virtual TPM module starting with Windows 10 1511 and Windows Server 2016.[112] Microsoft Windows includes two TPM relatedcommands:tpmtool, a utility that can be used to retrieve information about the TPM, andtpmvscmgr, acommand-line tool that allows creating and deleting TPM virtualsmart cards on a computer.[113][114]
TPM endorsement keys (EKs) are asymmetric key pairs unique to each TPM. They use theRSA andECC algorithms. The TPM manufacturer usually provisions endorsement key certificates in TPMnon-volatile memory. The certificates assert that the TPM is authentic. Starting with TPM 2.0, the certificates are inX.509DER format.
These manufacturers typically provide theircertificate 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.
^There is a separate project called "CHARRA" by Fraunhofer[142] 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[143] 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.
^Arthur, Will; Challener, David; Goldman, Kenneth (2015), Arthur, Will; Challener, David; Goldman, Kenneth (eds.), "History of the TPM",A Practical Guide to TPM 2.0: Using the New Trusted Platform Module in the New Age of Security, Berkeley, CA: Apress, pp. 1–5,doi:10.1007/978-1-4302-6584-9_1,ISBN978-1-4302-6584-9
^"Part 1: Architecture"(PDF),Trusted Platform Module Library, Trusted Computing Group, October 30, 2014,archived(PDF) from the original on October 28, 2016, retrievedOctober 27, 2016
^abcde"Archived copy"(PDF).Archived(PDF) from the original on October 30, 2016. RetrievedOctober 29, 2016.{{cite web}}: CS1 maint: archived copy as title (link)
^"Archived copy"(PDF).Archived(PDF) from the original on October 30, 2016. RetrievedOctober 29, 2016.{{cite web}}: CS1 maint: archived copy as title (link)
^"Archived copy"(PDF).Archived(PDF) from the original on October 31, 2016. RetrievedOctober 30, 2016.{{cite web}}: CS1 maint: archived copy as title (link)
^"Archived copy"(PDF).Archived(PDF) from the original on January 23, 2019. RetrievedJanuary 23, 2019.{{cite web}}: CS1 maint: archived copy as title (link)
^"Archived copy"(PDF).Archived(PDF) from the original on October 31, 2016. RetrievedOctober 30, 2016.{{cite web}}: CS1 maint: archived copy as title (link)
^"Archived copy"(PDF).Archived(PDF) from the original on October 28, 2016. RetrievedOctober 27, 2016.{{cite web}}: CS1 maint: archived copy as title (link)
^Alin Suciu; Tudor Carean (2010). "Benchmarking the True Random Number Generator of TPM Chips".arXiv:1008.2223 [cs.CR].
^TPM Main Specification Level 2(PDF), vol. Part 1 Design Principles (Version 1.2, Revision 116 ed.),archived(PDF) from the original on 24 February 2021, retrieved12 September 2017
^TPM Main Specification Level 2(PDF), vol. Part 3 – Commands (Version 1.2, Revision 116 ed.), Trusted Computing Group,archived(PDF) from the original on September 28, 2011, retrievedJune 22, 2011
^Lich, Brian; Browers, Nick; Hall, Justin; McIlhargey, Bill; Farag, Hany (27 October 2017)."TPM Recommendations".Microsoft Docs.Microsoft.Archived from the original on 11 January 2018. Retrieved10 January 2018.
^Stallman, Richard Matthew."Project GNU". Free Software Foundation.Archived from the original on 29 June 2011. Retrieved21 July 2016.
^"TrueCrypt User Guide"(PDF).truecrypt.org. TrueCrypt Foundation. 7 February 2012. p. 129.Archived(PDF) from the original on 25 December 2019. Retrieved20 February 2018 – via grc.com.
^"FAQ".veracrypt.fr. IDRIX. 2 July 2017.Archived from the original on 25 February 2025. Retrieved11 January 2018.
^Chen, Liqun; Ryan, Mark (2009).Attack, solution and verification for shared authorisation data in TCG TPM. Sixth International Workshop on Formal Aspects in Security and Trust (FAST'09). LNCS Springer.
^Chabaud, Florent (November 15–16, 2022)."Setting Hardware Root-of-Trust from Edge to Cloud, and How to Use it"(PDF). In le Guernic, Gurvan (ed.).Proceedings of the 29th Computer & Electronics Security Application Rendezvous. Rennes, France: C&ESAR 2022. pp. 115–130.Archived(PDF) from the original on 2025-03-06. Retrieved2024-01-08. Location: Université de Rennes 1, Campus de Beaulieu, IRISA/Inria Rennes, 263 avenue du Général Leclerc, 35042 RENNES cedex.
^tpm2-software/tpm2-tss, Linux TPM2 & TSS2 Software, 2020-11-18,archived from the original on November 12, 2020, retrieved2020-11-20
^Fraunhofer-SIT/charra, Fraunhofer Institute for Secure Information Technology, 2020-08-26,archived from the original on October 29, 2020, retrieved2020-11-20