46 min read
Last updated on

The TPM in Windows: One Primitive, Twenty-Five Years, and the Chip Microsoft Bet On Twice

How a passive 1999 cryptoprocessor became the load-bearing pillar of Windows security, and what twenty-five years of attacks taught us about its limits.

Permalink

1. The chip nobody asked for

On June 24, 2021, Microsoft announced Windows 11 [1] -- and told hundreds of millions of working PCs they were no longer eligible to upgrade. Not because they were too slow. Because they did not have a small chip most users had never thought about: a TPM 2.0. The PR backlash was immediate; the technical rationale was almost invisible. Why was Microsoft willing to take that much heat over a piece of silicon?

The next morning, Microsoft's security team tried to explain [2]. The argument was four words long: hardware root of trust.

"All certified Windows 11 systems will come with a TPM 2.0 chip to help ensure customers benefit from security backed by a hardware root-of-trust."

That sentence sat awkwardly against the user experience: a green checkmark in the PC Health Check tool, or a red X telling you to buy a new computer. The deeper claim -- that a passive cryptoprocessor underwrote the security guarantees of half the operating system -- was not something Microsoft had ever asked consumers to think about. For OEMs, the requirement was old news. Since July 28, 2016 [3], every new Windows device model had been contractually required to "implement and enable by default TPM 2.0." The 2021 mandate did not introduce the chip. It made an existing OEM rule into a visible install gate.

Trusted Platform Module (TPM)

A small, isolated cryptoprocessor that holds keys, performs cryptographic operations, and records integrity measurements -- usually on a separate package or block of silicon that the host operating system cannot read directly. The TPM is "passive": it executes commands sent to it but never reaches into the host's memory.

This article is about that piece of silicon: what it does, why Windows needs it more than ever, and why twenty-five years of engineering and twenty-five years of attacks have together produced a chip that quietly defines what modern Windows can defend against -- and what it cannot.

The central claim, which the rest of this piece will earn: a passive cryptoprocessor designed in 1999 became the load-bearing pillar of half of Windows security, and the history of attacks against it has been a sustained empirical argument about exactly how passive that pillar is allowed to be.

2. The problem the TPM was built to solve

Picture an engineer at IBM in early 2000. The Windows kernel has just been rooted again. The newly shipped DPAPI master keys -- introduced with Windows 2000's general availability on February 17, 2000 [5] -- are recoverable in seconds once SYSTEM falls. Stolen ThinkPads come back with their fresh EFS volumes already decrypted. Where do you put a secret that the OS cannot read?

Software-only key storage was Generation 0. Windows had DPAPI, EFS, and LSA secrets [6], all deriving their wrapping keys from the user's logon credential or from system-level material. Every derivation had the same structural problem: the unwrapping key, sooner or later, lived in the kernel's address space. An attacker who reached SYSTEM (or who carried the disk away to a separate machine) could replay it. A volume encrypted "at rest" was decryptable as soon as the disk was readable -- and a disk you can read is a disk you can read offline. Microsoft now states the constraint plainly: a TPM-resident key, by contrast, "truly can't leave the TPM" [7]. That property cannot be retrofitted onto software-only storage.

Software-only key storage cannot defend against an attacker who reaches SYSTEM, and cannot defend against an attacker who carries the disk away. To survive both, the secret must live in silicon that the OS itself cannot read.

In October 1999 [8], five PC-industry incumbents took that observation and turned it into an industrial coalition: Compaq, Hewlett-Packard, IBM, Intel, and Microsoft incorporated the Trusted Computing Platform Alliance. The Wikipedia Trusted Computing Group article gives the day-precision date as October 11, 1999. The original TCPA press release URL has not survived; the founder list and date are consistent across secondary sources. TCPA's charter was narrow: define a chip that could hold keys an x86 OS could not export, record boot-time integrity measurements, and sign attestations about that boot. The first chip to ship against the resulting TPM Main Specification 1.1b [9] appeared in 2003 [10]. Atmel, Infineon, and STMicroelectronics built it.

In parallel, Microsoft Research ran its own bet. Paul England, Butler Lampson, John Manferdelli, Marcus Peinado, and Bryan Willman [11] published "A Trusted Open Platform" in IEEE Computer, July 2003. The codename inside Microsoft was Palladium; the public name was the Next-Generation Secure Computing Base, NGSCB. It described a Windows where high-assurance code could run isolated from a possibly-compromised OS kernel, anchored in a hardware secure coprocessor that looked very much like a TPM. The motivating sentence read like a thesis: NGSCB extends personal computers "to offer mechanisms that let high-assurance software protect itself from the operating systems, device drivers, BIOS, and other software running on the same machine."

NGSCB never shipped as advertised. By 2005, reports indicated [12] that Microsoft would ship "only part of the architecture, BitLocker, which can optionally use the Trusted Platform Module to validate the integrity of boot and system files prior to operating system startup." The "Nexus" hypervisor, the user-mode high-assurance "agents," the protected paths for keyboard and display -- all dropped against the Vista deadline. The deadline pressure on Vista is legendary. The architecture team chose to ship the smallest piece of NGSCB the existing chip could underwrite -- BitLocker -- and shelved the rest. That shelved piece eventually returned, fifteen years later, as Virtualization-Based Security and Credential Guard.

The shelved primitives, however, did not die. Measured boot -- the firmware measures the boot loader, the boot loader measures the kernel, each measurement extended into a register that cannot be rewound -- migrated into Vista BitLocker and, later, into Windows 8 Measured Boot. Sealed storage -- a key tied to a measured boot state, unreleasable unless the boot state matches -- became the defining property of every TPM-bound BitLocker volume. Remote attestation -- a device signing a quote of its own measurements for a remote verifier -- became Device Health Attestation. NGSCB shipped, just not as itself.

TCPA had built a chip that could hold a key the OS couldn't read. Which keys, under whose authority, against which threats? The first answer was almost good enough -- and it lasted about a decade.

3. Generation 1 and Generation 2: TPM 1.1b -> 1.2, and why they failed

If you opened a 2007 ThinkPad and looked at the LPC bus next to the Super-IO chip, you would see a small Infineon SLB chip [13]. That was your TPM 1.2. It did exactly one job, and Vista's BitLocker was the first feature to depend on it.

The architectural skeleton of TPM 1.x [10] was simple. At least sixteen Platform Configuration Registers, with the PC Client TPM Interface Specification mandating 24 per active bank. Hash algorithm: SHA-1. Asymmetric algorithm: RSA-2048. A single root of storage, the Storage Root Key, whose private half never left the chip. An Endorsement Key burned in at manufacture as the chip's permanent identity. An HMAC-SHA1 authorization model over command parameters. A "Take Ownership" ceremony where the platform owner created the SRK and bound it to an owner secret.

Platform Configuration Register (PCR)

A TPM-internal register modified only by a one-way "extend" operation: PCRnew=H(PCRoldmeasurement)\text{PCR}_{\text{new}} = H(\text{PCR}_{\text{old}} \,\|\, \text{measurement}). Static PCRs (0-15) cannot be rolled back without a full platform reset. TPM 2.0 also defines dynamic PCRs (16, 17-22, and 23 in the PC Client profile) that can be reset at specific localities via TPM2_PCR_Reset. DRTM uses PCRs 17-22 at locality 4 to re-launch a known measurement chain mid-run; PCRs 16 and 23 are resettable at lower localities for debug and application use. Either way, PCRs are the data structure that compresses a chain of measurements into a single attestable digest.

Endorsement Key (EK)

The TPM's permanent identity key, generated at manufacture and accompanied by an EK certificate from the chip vendor's CA. The EK is non-migratable and is used during attestation to prove that a given key was generated inside a genuine TPM. It is also the privacy-sensitive part of TPM identity: the EK is unique to one chip, so unrestricted use of the EK in attestation reveals which physical machine you are.

Storage Root Key (SRK)

The root of the TPM's key hierarchy. In TPM 1.x there was exactly one SRK per chip, created during the "Take Ownership" ceremony. Every protected key in the hierarchy was a child of the SRK -- if you cleared the SRK, every key tied to it was lost.

Attestation Identity Key (AIK / AK)

A restricted signing key the TPM uses to sign quotes of PCR values for a remote verifier. Naming changed with the spec: in TPM 1.x it was the Attestation Identity Key (AIK), a separate RSA key whose binding to a real TPM was asserted by a Privacy CA's certificate over the EK. In TPM 2.0 it is the Attestation Key (AK), a primary key in the Endorsement Hierarchy derived from the same Endorsement Primary Seed as the EK -- the AK is a sibling of the EK, not a copy, and it is certified by the EK rather than being an alias of it. Either way, the AIK/AK signs the quote; the EK never directly signs anything.

TPM 1.2 [10], shipped in late 2003 and standardized as ISO/IEC 11889:2009, layered on the practical machinery: locality (a way for code at different privilege levels to extend different PCRs), monotonic counters, NV indices, transport sessions, and the eight-PCR split between firmware (PCR[0..7]) and OS (PCR[8..15]). It was the chip that mass-deployed in essentially every business PC from 2006 to 2014. When Windows Vista [12] reached volume-license RTM in late 2006 and broad availability in early 2007, BitLocker [14] (Enterprise and Ultimate editions only) became the first mainstream Windows feature whose security depended on the chip: BitLocker sealed the Volume Master Key to PCR values describing the boot-loader chain, so that a stolen disk could not be decrypted offline. Secure Boot binding (PCR[7]) would not arrive until UEFI Secure Boot [15] shipped with Windows 8 in 2012.

Ctrl + scroll to zoom
TPM 1.x key hierarchy: a single Storage Root Key roots all child keys, and the Attestation Identity Key is an independent RSA signing key whose binding to a specific TPM is certified by a Privacy CA over the EK.

The problem with all of this was not that anyone broke it. The problem was that the architecture hard-coded its cryptographic primitives into its data structures. SHA-1 was not a configurable algorithm; it was the literal width of the PCR register and of every hash field in the spec. RSA-2048 was not a configurable algorithm; it was the literal layout of the EK, the SRK, and every protected key blob. If the world deprecated SHA-1, you did not patch the firmware. You replaced the chip.

NIST SP 800-131A deprecated SHA-1 [16] digital signatures starting in 2011. The 2017 SHAttered collision [17] drove the point home. The 2017 SHAttered SHA-1 collision does not retroactively break Vista BitLocker in practice -- to do that, an attacker would have to choose firmware blobs whose hashes collide, not merely demonstrate a collision exists. But it ended any defense of "SHA-1 in PCRs is fine because nobody can collide it." Algorithm flexibility cannot be retrofitted onto silicon whose data structures hard-code SHA-1. There were other limitations: a single SRK hierarchy meant clearing the chip's storage hierarchy also reset chip identity; the Privacy CA model for attestation never deployed at scale; ECC was missing; and the HMAC-based authorization model made every command exchange a piece of bespoke crypto plumbing.

GenerationYearHashAsymHierarchiesStatus
Software-only (LSA / PStore)1996+ [18]variesvariesn/aNT 4.0 baseline; disk-readable wrapping keys
Software-only (DPAPI / EFS)2000+variesRSA-1024 (EFS)n/aDefeated by offline disk theft and by SYSTEM compromise
TPM 1.1b2003SHA-1RSA-20481 (SRK)First mass deployment; superseded by 1.2
TPM 1.22003-2014SHA-1RSA-20481 (SRK)Vista/7/8 BitLocker baseline; algorithm-rigid
TPM 2.02014+SHA-1 + SHA-256 (+ SHA-3, future PQC)RSA, ECC4 (Platform / Endorsement / Storage / Null)Current; ISO/IEC 11889:2015

TCG accepted the constraint in 2014 and started over. The 2.0 design did not add features to 1.2. It answered a different question: how do you let one TPM survive twenty years of cryptographic transitions?

4. Generation 3: TPM 2.0 -- one primitive, many algorithms

On April 9, 2014 [10], the Trusted Computing Group [19] did something rare in standards bodies: they threw away a working specification and started from a different question. The result was the TPM 2.0 Library Specification, Family 2.0, Level 00, Revision 116. A year later it became ISO/IEC 11889-1:2015 Edition 2 [20], which removed the "industry consortium" objection from procurement teams in regulated environments. By July 28, 2016 [3], Microsoft had quietly made TPM 2.0 a contractual must-have for every new Windows OEM SKU.

Four conceptual changes carry the architecture.

4.1 Algorithm agility

Every cryptographic algorithm in TPM 2.0 carries an integer identifier. PCRs no longer have a single hash; they have banks, one per supported algorithm, all extended in parallel by a single command. Microsoft's own documentation [7] describes the contract: when firmware extends PCR[0] with the IBV's CRTM measurement, the TPM extends both the SHA-1 bank and the SHA-256 bank, and on newer parts the SHA-384 bank as well. The PC Client Platform TPM Profile mandates SHA-1 + SHA-256 minimum, not SHA-256-only. Backwards compatibility had a cost. Future-proofing against SHA-3 and post-quantum algorithms is now a matter of registering a new ID, not replacing silicon.

Algorithm agility

A property of a cryptographic protocol or device whereby the choice of hash, signature, or encryption algorithm is decoupled from the protocol's data structures. Algorithm-agile systems carry algorithm identifiers alongside their cryptographic blobs, so a new algorithm can be added by registering an ID rather than by re-laying out the wire format. TPM 2.0 is algorithm-agile; TPM 1.x was not.

4.2 Four hierarchies, four primary seeds

Where TPM 1.x had a single SRK, TPM 2.0 has four hierarchies -- Platform, Endorsement, Storage, Null -- each rooted in a per-hierarchy primary seed. Primary keys are derived deterministically: call TPM2_CreatePrimary with the same template against the same seed, and you get the same key back, byte-for-byte. The Apress textbook by Arthur, Challener, and Goldman [21] -- the de-facto developer reference for the spec -- describes this as the architectural fix to a real operational problem: the platform owner can clear the storage hierarchy without losing the device's endorsement identity.

Ctrl + scroll to zoom
TPM 2.0 four-hierarchy architecture. Each hierarchy is rooted in its own primary seed; primary keys are deterministically derived via TPM2_CreatePrimary.

4.3 Enhanced Authorization

The most interesting change is how TPM 2.0 talks about access control. Every protected object has a policyDigest, an algorithm-agile hash of an arbitrarily complex set of conditions. To use the object, the caller starts a policy session (TPM2_StartAuthSession with SE_POLICY) and walks predicates -- TPM2_PolicyPCR, TPM2_PolicyAuthorize, TPM2_PolicySigned, TPM2_PolicyCommandCode, TPM2_PolicyAuthValue -- each extending the running session digest. At the end, the TPM checks that the session digest matches the object's policyDigest, and only then authorizes the operation. BitLocker, in its current Microsoft Learn description [14], uses this to seal the Volume Master Key to PCR[7] (Secure Boot policy) and PCR[11] (BitLocker control flags). Any tampering with Secure Boot configuration -- or any non-BitLocker boot path -- causes unseal to fail.

Enhanced Authorization (policy session)

TPM 2.0's flexible authorization mechanism. Each protected object carries a hash (policyDigest) of the predicates required to use it. A caller builds an equivalent digest by walking a sequence of TPM2_Policy* commands inside a policy session; the TPM only authorizes the operation if the two digests match. This is the mechanism that lets BitLocker bind the VMK to specific PCR values, lets Hello bind a key to a PIN gesture with anti-hammering, and lets attestation servers compose policies they did not design into the chip.

4.4 The unifying primitive: measure, extend, seal, quote

The reason any of this matters for Windows is that the entire feature surface compresses down to four operations on the same set of registers.

  • Measure. A piece of code computes the hash of the next piece of code (or configuration) about to run.
  • Extend. That hash is folded into a PCR via PCR_new = H(PCR_old || hash). The operation is one-way: PCRs cannot be rewound.
  • Seal. A symmetric key (or arbitrary blob) is encrypted under the TPM's Storage hierarchy with a policyDigest that names a specific set of PCR values. TPM2_Unseal releases the blob if and only if the live PCR state matches.
  • Quote. The TPM signs a snapshot of selected PCRs with an Attestation Key. A remote verifier can check the signature against a known AKpub and an EK certificate chain.

The boot of a measured Windows machine is exactly this loop. The Core Root of Trust for Measurement -- a small piece of immutable firmware -- measures the next stage and extends PCR[0]. Each stage measures the next: PCR[2] for option ROMs, PCR[4] for the Windows Boot Manager, PCR[7] for the Secure Boot policy, PCR[11] for BitLocker volume control flags, and on through ELAM and the kernel. Microsoft's Trusted Boot description [22] walks the chain.

Ctrl + scroll to zoom
Measured boot to seal/unseal flow: each stage extends PCRs through the boot chain, and BitLocker only releases the VMK when the policy digest matches the live PCR state.

Now compress the Windows feature catalogue against those four operations.

  • BitLocker [14] seals the VMK to a PCR policy.
  • Measured Boot and Device Health Attestation [23] quote PCRs to a remote verifier.
  • Credential Guard [24] seals the VBS-isolated NTLM/Kerberos secrets with a policy that includes the VBS measurement.
  • Windows Hello for Business [25] creates a per-user RSA-2048 or P-256 key whose authorization policy requires the PIN gesture and is bounded by the TPM's anti-hammering counter.
  • Virtual smart cards, DPAPI-NG, and TPM key attestation [26] for ADCS-issued certificates all sit on the same primitives.

One primitive -- measure, extend, seal, quote -- underwrites every Windows hardware-rooted security feature shipped since Vista. The TPM's value to Windows is not a list of cryptographic operations. It is a single, composable contract: "this key only releases when the boot looks like this."

By July 28, 2016, TPM 2.0 was a hidden contractual requirement under the entire Windows OEM channel. By June 24, 2021, Microsoft made the same chip the visible install gate for Windows 11. The architecture had won the building. Then attackers started taking it apart.

5. The threat model collapses inward (2019-2024)

On March 13, 2019, a New Zealand security researcher named Denis Andzakovic posted a blog entry [13] that, in retrospect, started the modern era of TPM offense. He had spent $40 NZD on an iCE40 FPGA stick, soldered four wires to an HP business laptop, and lifted the BitLocker Volume Master Key off the LPC bus. With the disk in hand and the motherboard accessible, a thief could decrypt a TPM-only BitLocker volume in the time it took to boot it once. Andzakovic open-sourced the FPGA gateware [27] the same day. Andzakovic credits Hector Martin (@marcan) for prototyping LPC sniffing earlier; the 2019 write-up was the first end-to-end public demonstration with reproducible code.

The structural insight, which has not been backed away from, is that Windows does not enable TPM 2.0 parameter encryption on the BitLocker boot path. The VMK travels in plaintext at the LPC bus's 33 MHz clock across a few millimetres of PCB. Why doesn't Windows turn on parameter encryption for BitLocker? The boot-time pressure is real -- pre-OS code lives in a tight memory budget and parameter encryption requires HMAC-signed sessions. The pragmatic mitigation Microsoft documents is preboot authentication (PIN or startup key), which makes the bus-sniffed VMK insufficient on its own.

The attack would not stay a one-laptop curio. In late 2020, WithSecure's Henri Nurmi released an SPI variant [28] and a public BitLocker-key extraction tool. A year later, Thomas Dewaele and Julien Oberson at SCRT reproduced the LPC attack [29] on a Lenovo ThinkPad L440 with an ST33TPM12LPC chip and published a tutorial. By October 2024, SCRT had industrialized the attack [30] across "the three major enterprise-grade laptop manufacturers (i.e. Lenovo, HP, and Dell)" in "a few minutes."

The first reassurance the industry reached for was: ship the TPM inside the chipset. No bus, no sniff. Both Intel (Platform Trust Technology, fTPM-in-CSME [31]) and AMD (fTPM-in-PSP) had already done this for cost reasons. The second reassurance lasted eight months.

In November 2019, Daniel Moghimi, Berk Sunar, Thomas Eisenbarth, and Nadia Heninger -- soon to be USENIX Security 2020 -- released TPM-Fail [32]. Their finding: Intel PTT and a STMicro ST33 dTPM both leaked ECDSA private keys through ordinary timing side channels in their scalar multiplication. The numbers were brutal:

"A local adversary can recover the ECDSA key from Intel fTPM in 4-20 minutes depending on the access level. We even show that these attacks can be performed remotely on fast networks, by recovering the authentication key of a virtual private network (VPN) server in 5 hours." -- TPM-Fail, tpm.fail [32], 2019

NVD assigned CVE-2019-11090 [33] to Intel PTT and CVE-2019-16863 [34] to STMicroelectronics' ST33TPHF2ESPI. The latter entry is blunt: "STMicroelectronics ST33TPHF2ESPI TPM devices before 2019-09-12 allow attackers to extract the ECDSA private key via a side-channel timing attack because ECDSA scalar multiplication is mishandled, aka TPM-FAIL." Both chips were certified -- the STMicro chip held Common Criteria EAL4+, and the Intel chip held FIPS 140-2 [32] -- at the moment of disclosure. Certification did not catch the bug. The presentation is preserved in the USENIX Security 2020 proceedings [35].

The final beat came four years later. In April 2023, Hans Niklas Jacob, Christian Werling, Robert Buhren, and Jean-Pierre Seifert posted faulTPM (arXiv:2304.14717) [36], with reproducible code at github.com/PSPReverse/ftpm_attack [37]. The attack: voltage-glitch the AMD Platform Security Processor and walk out with the entire internal TPM state. The paper's own claim is the sentence that, more than any other, framed the modern TPM threat model.

"this vulnerability exposes the complete internal TPM state of the fTPM. It allows us to extract any cryptographic material stored or sealed by the fTPM regardless of authentication mechanisms such as Platform Configuration Register validation or passphrases with anti-hammering protection." -- Jacob, Werling, Buhren, Seifert, faulTPM (2023) [36]

Two to three hours of physical access. Anti-hammering bypassed because anti-hammering is enforced by the TPM, and once the TPM's internal state is on your bench you set the counter to zero. PCR-policy bypassed because the sealed blob's wrapping key is in the extracted state. The structural punch is that this makes BitLocker TPM+PIN on AMD fTPM with a low-entropy PIN less secure than a TPM-less passphrase (a corollary the faulTPM paper makes explicit [36]): the TPM concentrates all your trust into a chip whose internal state can be exfiltrated.

Ctrl + scroll to zoom
Three generations of TPM attack, 2019-2024. Each generation invalidated the previous reassurance.
Attack classTPM formCostTimeSource
LPC bus sniffing (BitLocker VMK)Discrete TPM 1.2 / 2.0~$40 (iCE40 FPGA)Minutes once wiredAndzakovic 2019; SCRT 2021/2024
SPI bus sniffingDiscrete TPM 2.0~$50 (logic analyzer)Minutes once wiredWithSecure 2020-2024
Timing side channel on ECDSAIntel PTT, STMicro ST33Software-only4-20 min local; 5 h remote VPNTPM-Fail 2019/2020
Voltage glitch on PSPAMD fTPM~$200 (glitching rig)2-3 h physicalfaulTPM 2023

If a $40 FPGA defeats discrete TPM, a network packet defeats Intel PTT, and a few hours of physical access defeats AMD fTPM completely -- where does the next generation of TPM live? Microsoft's answer was on the CPU die itself.

6. State of the art: five realizations of one specification

All five chips in this section pass the same TCG conformance suite. They expose the same TPM2_* command surface to Windows. They fail to completely different attackers. The architecture is identical; the attack surface is everything.

Discrete TPM (dTPM) and firmware TPM (fTPM)

A discrete TPM is a separate chip on the motherboard, talking to the host over LPC, SPI, or I2C. A firmware TPM is a TPM 2.0 implementation running inside an existing trusted execution environment on the host -- Intel CSME (Platform Trust Technology), AMD PSP (fTPM), or a dedicated Microsoft IP block (Pluton). Both pass the same TCG specification; they differ in physical location, attack surface, and update channel.

Direct Anonymous Attestation (DAA / ECDAA)

A zero-knowledge protocol that lets a TPM prove "I am a real TPM certified by vendor X" without revealing which chip is talking. Replaces the TPM 1.2 Privacy CA model, which required a third-party CA to mediate every attestation. ECDAA is the elliptic-curve variant standardized in TPM 2.0.

6.1 Discrete TPM

The classical chip. Infineon, STMicroelectronics, Nuvoton. Hangs off the motherboard's LPC, SPI, or I2C bus. Best certifications (Common Criteria EAL4+, FIPS 140-2/3). One bug class: bus sniffing in minutes for $40 against the BitLocker boot path that Windows leaves in plaintext.

6.2 Intel PTT

TPM 2.0 inside the Converged Security and Management Engine -- historically on the Platform Controller Hub die, and increasingly on the SoC die in integrated-platform Intel processors since Tiger Lake. Either way, no physical bus to sniff. Defeated by TPM-Fail [32] timing side channel; firmware-patched, but inherits CSME's broader attack surface and CSME's update story (UEFI capsule via OEM, lifecycle entirely under the OEM's control).

6.3 AMD fTPM (PSP)

TPM 2.0 inside the AMD Platform Security Processor [38] (an ARM TrustZone Cortex-A5 core integrated into every modern Ryzen SoC). Ships in essentially all Ryzen-class client SoCs since 2017. No physical bus to sniff. Defeated end-to-end by the faulTPM [36] voltage-glitch attack against the PSP. The structural problem is shared TEE: the same coprocessor is responsible for memory encryption setup, secure-boot enforcement, and TPM service, and a single fault-injection path drops all of those.

6.4 Microsoft Pluton

A Microsoft IP block on the CPU SoC die, with Microsoft-authored Rust firmware [39] delivered through Windows Update. According to Microsoft's hardware list, Pluton "is currently available on devices with the following chipsets running on Windows 11: AMD: Ryzen 6000, 7000, 8000, 9000 and Ryzen AI Series ... Intel: Core Series Processors -- Ultra 200V Series, Ultra Series 3 and Series 3 ... Qualcomm: Snapdragon 8cx Gen 3 and Snapdragon X Series." The same page notes that "Pluton platforms in 2024 AMD and Intel systems will start to use a Rust-based firmware foundation given the importance of memory safety."

The thesis is laid out in Microsoft's November 17, 2020 announcement post [40], which links explicitly to Andzakovic. The architectural framing is unusually direct.

"The Pluton design removes the potential for that communication channel to be attacked by building security directly into the CPU." -- Microsoft Security Blog, November 17, 2020 [40]

Three things change at once. The bus is gone -- Pluton is on-die, so dTPM bus-sniffing has no surface to attack. The TEE host is dedicated -- Pluton is not the same coprocessor that runs SEV memory encryption or ME runtime services. And the firmware ships through Windows Update -- so when a Pluton firmware vulnerability is found (and one will be found), the patch reaches the deployed fleet through Windows Update rather than through OEM UEFI capsule rollouts. The Pluton-as-TPM page makes the trade-off explicit: "Microsoft Pluton can be used as a TPM, or with a TPM. Although Pluton builds security directly into the CPU, device manufacturers might choose to use discrete TPM as the default TPM." [41] Several enterprise security teams have publicly cited the Pluton update model as a reason to keep dTPM as their default for high-assurance fleets even where Pluton silicon is available.

6.5 vTPM

A software TPM emulation, typically inside a hypervisor. Azure Trusted Launch [42] is Microsoft's flagship implementation: "Trusted Launch is the default state for newly created Azure Gen2 VM and scale sets." The vTPM lives in a host-protected memory region and inherits the trust of the host. For cloud workloads where the threat model already includes "the hypervisor host is honest," this is the right shape; for adversarial physical access, it is not.

6.6 Head-to-head

DimensiondTPMIntel PTTAMD fTPMPlutonvTPM
Physical locationSeparate chipCSME (PCH die)PSP (CPU die)Dedicated IP block on CPU dieHypervisor memory
Bus to hostLPC / SPI / I2CNone (on-die)None (on-die)None (on-die)None (virtual)
TEE shared withnone (own die)CSMEPSP (large)none (Pluton-only)host kernel
Side-channel exposureImplementation-dependentTPM-Fail patchedfaulTPM unaddressed structurallyLimited public researchhost-dependent
Update channelUEFI capsuleUEFI capsule (CSME)UEFI capsule (PSP)Windows Updatehypervisor patch
CertificationsEAL4+, FIPS 140-2/3EAL4+variesvariesn/a
OEM costper-chip BOMbundledbundledbundledn/a
Best-known attackLPC/SPI sniffing in minutesTPM-Fail timingfaulTPM full stateNone public at faulTPM depthhost compromise
Algorithm agilityspec-requiredspec-requiredspec-requiredspec-required + Rust firmware updatesspec-required
Best fitCompliance-driven, high-assurance fleetsExisting Intel platformsExisting AMD platformsDefault for Windows 11 clientCloud workloads
Ctrl + scroll to zoom
Five TPM realizations and the Windows features each underwrites. The TCG2 command surface is the same; the attack surface is everything.

The deep claim of the Pluton design is not that it is a better cryptoprocessor. It is that the previous decade's lesson -- TEE memory-safety bugs are systemic, certification did not catch them, and OEM UEFI capsule patching is too slow -- argues for moving the firmware signer to Microsoft and the firmware language to Rust. That is a political choice, not just a technical one. The October 2019 Secured-core PCs initiative [43] was the first public step; Pluton is its descendant.

If you can sniff a dTPM, time-attack an Intel PTT, glitch an AMD fTPM, and trust Microsoft to sign your Pluton firmware -- which threat are you actually defending against?

7. Theoretical limits: what a passive cryptoprocessor cannot do

A famous joke in the trusted-computing community: the TPM cannot make a compromised OS uncompromised. It can only make sure that nothing else helped.

Three impossibility-style results follow from the architecture itself, regardless of which of the five realizations you pick.

7.1 The TPM is a Root of Trust for Storage and Reporting, not Execution

The Core Root of Trust for Measurement -- the immutable code that bootstraps the measurement chain -- lives in firmware, not in the TPM. The TPM cannot detect that the wrong code measured itself; it can only refuse to release sealed material when the PCRs do not match the stored policy. If the CRTM is compromised (or a downstream measurement is forged before extension), the TPM has no way to know.

Stronger guarantees require an active root of trust: a Dynamic Root of Trust for Measurement, where the CPU enters a known good state late in the boot and re-measures from there. Intel TXT, AMD SVM-SKINIT, and Microsoft's System Guard Secure Launch [44] on Secured-core PCs all implement this. The TPM is a participant in DRTM; on its own, it is not sufficient.

7.2 TPM-only BitLocker has a structural lower bound

The VMK must enter RAM during Trusted Boot before the user authenticates. This is not a bug; it is the threat-model definition of "TPM-only." Therefore any attacker who intercepts the VMK at the moment of release defeats TPM-only BitLocker, regardless of TPM strength. This is what every dTPM bus-sniffing attack actually exploits -- not a weakness of the TPM, but the structural condition that the key must traverse the boot path.

Microsoft's countermeasures documentation [45] names the mitigation in plain terms: preboot authentication. Adding TPM+PIN raises the bound to "guess the PIN against intact anti-hammering" -- but only as long as the TPM's anti-hammering counter cannot be exfiltrated. faulTPM violates that condition for AMD fTPM. On a Pluton or hardened dTPM, anti-hammering still holds, and a sufficiently random PIN closes the bound.

The complexity of guessing an nn-digit PIN against intact anti-hammering [45] with a per-failure delay Δt\Delta t is approximately 1210nΔt\frac{1}{2} \cdot 10^n \cdot \Delta t in the average case. For n=8n = 8 and Δt1s\Delta t \geq 1\text{s} this is roughly 5×1075 \times 10^7 seconds, or about 1.6 years. For n=4n = 4, it is hours.

7.3 Once a key is unsealed, it lives in the OS's address space

A runtime-compromised OS reads any key the TPM has unsealed for it. The TPM defends against the offline attacker (disk theft, post-shutdown tamper) and the pre-OS attacker (boot-time integrity violation that fails the unseal). It does not defend against a privileged runtime attacker. This is a general impossibility, not a TPM weakness; no passive cryptoprocessor can decide whether the OS asking to unseal a key is itself trustworthy at the moment it asks.

This is why VBS, Credential Guard, and DRTM exist as separate disciplines: they answer "what protects the unsealed key once it is in RAM?" by isolating the key inside a VTL1 enclave or by re-measuring the OS after launch. The TPM is a participant; it is not the answer.

The TPM defends against the offline attacker and the pre-OS attacker. It does not defend against a runtime-compromised OS. This is by design, and is the most a passive cryptoprocessor can do. Stronger guarantees require an active component (DRTM, VBS, hypervisor isolation) -- and none of those are the TPM.

What would an ideal TPM look like? On-die (no bus), in an isolated TEE shared with nothing else, with the host-firmware-update path replaced by an OS-channel update path, with high-assurance certification depth, with an authenticated wire protocol always on, and with native support for post-quantum primitives. No shipping TPM today satisfies all six properties. Pluton plus future PQC firmware updates is the closest existing trajectory; it is on-die, isolated, OS-channel-updated, and Rust-implemented, but it does not yet expose PQC primitives and its certification depth is still evolving.

If the TPM cannot defeat a runtime-compromised OS by design, and the best fTPM can be extracted in three hours, where is the security frontier actually moving?

8. Open problems: PQC, supply chain, and trust centralization

On August 13, 2024, NIST finalized FIPS 203 (ML-KEM) [47], FIPS 204 (ML-DSA) [48], and FIPS 205 (SLH-DSA) [49] -- the first federal post-quantum cryptography standards. ML-DSA-87's public keys are 2,592 bytes. A typical TPM has 6 to 32 KiB of NV memory total. The math gets uncomfortable quickly.

8.1 Post-quantum migration

The NIST Post-Quantum Cryptography project page [50] describes the timeline: "In August 2024, NIST released its principal PQC standards ... Under the transition timeline in NIST IR 8547, NIST will deprecate and ultimately remove quantum-vulnerable algorithms from its standards by 2035, with high-risk systems transitioning much earlier." That is the deadline driving every TPM roadmap, and the August 14, 2024 Federal Register notice [51] made it formal U.S. policy.

Three concrete obstacles. First, the TCG algorithm registry has not yet normatively added ML-KEM, ML-DSA, or SLH-DSA; a TCG PQC working group exists, but its output is in flight. The Microsoft TPM 2.0 reference code [52] tracks TCG: the V1.83 release notes describe it as "the first revision in sync with Trusted Computing Group 1.83," and that revision still does not expose PQC algorithm IDs. The Fraunhofer SIT Post-Quantum Cryptography for TPM [53] programme has prototyped PQC primitives inside reference TPM stacks, but those changes are research artefacts, not normative TCG output.

Second, the constrained NV-memory budget on a typical TPM cannot hold many simultaneous PQC keys at the larger parameter sets. Quick arithmetic against ML-DSA-87 (FIPS 204): 2,592-byte public key plus 4,896-byte private key plus protocol overhead pushes a single persistent key blob past 7.5 KiB. A 16-KiB-NV TPM can hold at most two persistent ML-DSA-87 slots before exhausting NV. The larger SLH-DSA-256s signatures (29,792 bytes per FIPS 205 Table 2) [49] routinely exceed the typical 1-4 KiB response-buffer cap (TPM_PT_MAX_RESPONSE_SIZE in the PC Client Platform TPM Profile [54]); the related TPM_PT_NV_BUFFER_MAX (the maximum NV read/write chunk) is in the same order of magnitude and complicates persistent-storage cases as well. The chip cannot return such a signature in a single command without fragmentation extensions. PQC support on commodity TPMs is not just a software upgrade; it is an NV-budget renegotiation.

Third, hybrid signing schemes (composite RSA + ML-DSA, or ECDSA + ML-DSA) are well-defined for transitional certificates. The IETF LAMPS WG draft on composite ML-DSA signatures [55] specifies "combinations of US NIST Module-Lattice-Based Digital Signature Algorithm (ML-DSA) in hybrid with traditional algorithms RSASSA-PKCS1-v1.5, RSASSA-PSS, ECDSA, Ed25519, and Ed448" for X.509 PKIX. The TLS hybrid key-exchange draft [56] does the same for TLS 1.3 handshakes. Neither defines a hybrid TPM2_Sign profile, and no shipping Windows TPM exposes one.

Microsoft's Quantum Safe Security blog (August 2025) [57] describes the broader effort -- "Our PQC effort began in 2014 when we published research on post-quantum algorithms ... We participated in four submissions to the original 2017 NIST PQC call and one submission to the current call" -- but is silent on Pluton-firmware PQC support specifically.

The architectural punchline: Pluton's Windows-Update firmware delivery channel is the only realization that can plausibly add a PQC primitive across the deployed fleet without a hardware refresh. Every other realization will need new silicon to ship native PQC.

8.2 The supply-chain trust of EK certificates

The Microsoft TPM key attestation documentation [26] describes the trust-chain assumption plainly: the requestor proves "to a CA that the RSA key in the certificate request is protected by either 'a' or 'the' TPM that the CA trusts." That trust is anchored on the EK certificate the chip's vendor issued at manufacture. A vendor-CA compromise therefore equals collapse of TPM-bound device identity for an entire OEM cohort.

The 2017 ROCA incident is the canonical event for why this matters. In February 2017, Matúš Nemec, Marek Sýs, Petr Švenda, Dušan Klinec, and Vashek Matyáš at Masaryk University [58] disclosed to Infineon a flaw in its RSA key-generation library that drastically reduced the entropy of generated keys and made factoring tractable. The NVD entry for CVE-2017-15361 [59] is precise about scope: "The Infineon RSA library 1.02.013 in Infineon Trusted Platform Module (TPM) firmware ... mishandles RSA key generation, which makes it easier for attackers to defeat various cryptographic protection mechanisms via targeted attacks, aka ROCA. Examples of affected technologies include BitLocker with TPM 1.2, YubiKey 4 (before 4.3.5) PGP key generation, and the Cached User Data encryption feature in Chrome OS." The Wikipedia summary [60] reports the team's own estimate that the bug "affected around one-quarter of all current TPM devices globally."

The Estonian e-ID program -- about 750,000 cards issued since 2014 [61], all using the affected Infineon chip -- had to be re-enrolled. Microsoft published advisory ADV170012 [62] on the same coordinated disclosure date. There is still no scalable revocation mechanism for individual EK certificates: vendor-level revocation breaks every device whose EKpub was issued by that vendor's CA, and ADCS-template OEM-pinning limits scope but does not solve in-scope CA compromise. Pluton centralizes one part of trust (Microsoft as firmware signer); EK certificate issuance for the silicon is unchanged, and supply-chain integrity remains a per-vendor question.

8.3 Attestation freshness in zero-trust networks

A TPM Quote proves "this device booted clean," not "this device is currently clean." Microsoft Intune's default device-compliance check-in is on the order of hours; Microsoft Entra's Continuous Access Evaluation documentation [63] specifies the upper-bound numerics: "By default, access tokens are valid for one hour ... The goal for critical event evaluation is for response to be near real time, but latency of up to 15 minutes might be observed because of event propagation time."

A 15-minute revocation window for critical events is good. But it propagates signed policy decisions, not fresh TPM measurements. A device that was clean at boot, was compromised five minutes ago, and just made a request now will pass CAE if its existing access token is valid. Closing that window requires either much shorter token lifetimes, runtime attestation (TCG DICE, Project Cerberus), or a hypervisor-mediated re-measurement -- and none of them are the TPM.

DPAPI-NG, the CNG-layer successor to classic DPAPI that Windows uses to encrypt secrets to a set of authorization principals, is a useful test case. The DPAPI-NG documentation [64] describes the API as "secure[ly] shar[ing] secrets (keys, passwords, key material) and messages by protecting them to a set of principals." The protection-descriptor grammar [65] permits five descriptor keywords -- SID, SDDL, LOCAL, WEBCREDENTIALS, CERTIFICATE -- across three logical authorization classes (AD-forest groups, web credentials, certificate-store entries). Notably absent: any literal TPM=true clause. DPAPI-NG can be backed by a TPM-bound CNG key, but the authorization is expressed in principal terms, not in TPM terms. The TPM is a key-residence property, not a policy primitive at this layer -- the right architectural choice, but it means TPM-bound DPAPI-NG inherits the freshness limits of whatever principal authorization decides who is currently authorized.

8.4 The Pluton political question

Centralizing firmware on a single Microsoft signing key is a deliberate trade-off, not an oversight. The benefit is the patch path: a Pluton firmware vulnerability becomes a Windows Update release rather than a multi-quarter OEM capsule rollout. The cost is that the chip's trust anchor is now a Microsoft signing key, in a way that even the most conservative dTPM is not. The market response in 2022 was openly mixed.

In March 2022, The Register obtained vendor statements [66] from Dell, Lenovo, and HP. Dell's reply was unusually direct: "Pluton does not align with Dell's approach to hardware security and our most secure commercial PC requirements." Lenovo deployed the chip but disabled it: "[ThinkPads] will not support Microsoft Pluton at launch ... But ThinkPads introduced in January with AMD Ryzen 6000 processors will include Pluton as it's present in those AMD chips, though the feature will be disabled by default. AMD has provided an option for users to turn the feature on and off." PCWorld followed up [67] with Lenovo's articulated reasoning: "Pluton is disabled by default on 2022 Lenovo ThinkPad laptops using AMD Ryzen PRO 6000 Series processors because that's what Lenovo customers have asked for, the choice to enable or not."

Matthew Garrett -- who later contributed the upstream Linux kernel support for the Pluton TPM CRB interface in Linux 6.3 (merged February 2023, released April 2023) [68] -- published the closest thing to a public engineering analysis of Pluton's controllability. His April 2022 reverse-engineering write-up [69] of the ASUS ROG Zephyrus G14 BIOS documents two firmware-level disable mechanisms on AMD Ryzen 6000 platforms: an x86-firmware "do not communicate" toggle, and a PSP directory entry 0xB BIT36 soft-fuse that "will NOT put HSP hardware in disable state, to disable HSP hardware, you need setup PSP directory entry 0xB, BIT36 to 1." Garrett's caveat is honest: "My interpretation of this is that it doesn't directly influence Pluton, but disables all mechanisms that would allow the OS to communicate with it." It is not a multi-signer proposal. There is no public peer-reviewed proposal for multi-signer or open-source Pluton firmware.

The unresolved engineering question: whether a multi-signer model is feasible without losing the timely-update property that motivated Pluton in the first place. The answer is genuinely unknown. The political question -- whether one signing key on the world's PC fleet is the right cost for the Windows-Update patch latency it enables -- is no longer a technical argument. It is a procurement-policy and procurement-jurisdiction argument, and high-assurance fleets are deciding both ways.

The TPM was supposed to be the part of the system you didn't have to trust anyone for. Twenty-five years later, the trust question is back -- and the answer is now political.

9. A Windows practitioner's TPM reference

What does this mean for the engineer running Get-Tpm on Monday morning? Three concrete things: discovery, choosing a form factor, and avoiding the pitfalls.

9.1 Discovery

Three commands establish ground truth on any Windows 11 device. Get-Tpm returns presence, ownership, and command-availability state. Get-TpmEndorsementKeyInfo returns the EK public and certificate. tpm.msc opens the Microsoft Management Console snap-in. The TCG event log lives at C:\Windows\Logs\MeasuredBoot\*.log and contains the per-PCR measurement history for every boot. Microsoft's BitLocker page [14] documents the protector model that pairs with the TPM state.

JavaScript Inspect a Windows TPM (Get-Tpm equivalent)
// Demonstrates the logic of:
//   Get-Tpm
//   (Get-BitLockerVolume -MountPoint 'C:').KeyProtector
//
// Mirrors the PowerShell decision tree without requiring a real TPM.

const tpm = {
TpmPresent: true,
TpmReady: true,
ManufacturerVersion: '7.2.0.1',
PhysicalPresenceVersionInfo: '1.3',
};

// Sample KeyProtector list as PowerShell would return it.
const protectors = [
{ KeyProtectorType: 'Tpm' },
{ KeyProtectorType: 'RecoveryPassword' },
// Uncomment to model TPM+PIN:
// { KeyProtectorType: 'TpmPin' },
];

function classify(tpm, protectors) {
if (!tpm.TpmPresent) return 'no-tpm';
if (!tpm.TpmReady) return 'tpm-not-ready';

const types = protectors.map(p => p.KeyProtectorType);
const hasPin = types.includes('TpmPin') || types.includes('TpmPinStartupKey');
const hasStartupKey = types.includes('TpmStartupKey');
const hasRecovery = types.includes('RecoveryPassword');

if (hasPin) return 'tpm-plus-pin';
if (hasStartupKey) return 'tpm-plus-startup-key';
if (types.includes('Tpm')) return 'tpm-only';
return 'no-tpm-protector';
}

const verdict = classify(tpm, protectors);
console.log('TPM present:', tpm.TpmPresent);
console.log('TPM ready  :', tpm.TpmReady);
console.log('Configuration:', verdict);
if (verdict === 'tpm-only') {
console.log('WARN: TPM-only is vulnerable to bus-sniffing on dTPM.');
console.log('Mitigation: enable TPM+PIN with PIN length >= 8.');
}
console.log('Recovery key escrowed:', protectors.some(p => p.KeyProtectorType === 'RecoveryPassword'));

Press Run to execute.

9.2 Choosing a TPM form when the OEM gives you a choice

A short decision tree, distilled from the SOTA analysis above:

  • Opportunistic theft, low-skill attacker. Default TPM-only is acceptable but not ideal. TPM+PIN with at least 8 random digits closes the bus-sniffing window on dTPM and the low-PIN-entropy window on AMD fTPM.
  • Determined targeted adversary. TPM+PIN is necessary but not sufficient. Add FIDO2 or smart-card preboot authentication where supported, and prefer Pluton or hardened dTPM over commodity AMD fTPM for the device class.
  • Compliance-driven. Discrete TPM with EAL4+ / FIPS 140-2 certification is still the easiest procurement story. Verify the OEM has not enabled Pluton-as-TPM if the auditor's checklist requires a discrete chip.
  • Cloud workload. Azure Trusted Launch with vTPM [42] is the default for Gen2 VMs and underwrites Confidential VM offerings.
  • Surface Copilot+, AMD Ryzen 6000+, Intel Core Ultra 200V, Snapdragon X. Pluton-as-TPM [39] is the OEM default in many SKUs; verify the Pluton firmware is current via Windows Update.

9.3 Five common pitfalls

The other four pitfalls in brief: firmware updates change PCR[0] and PCR[7], so suspend BitLocker before applying them; dual-boot Linux extends PCRs differently than Windows, so PCR-only sealing breaks under it -- escape with TPM+PIN; Windows does not enable parameter encryption on the BitLocker boot path, so the actual mitigation against dTPM bus sniffing is preboot authentication, not "TPM hardening"; and Windows Hello silently falls back to no-TPM credential storage if the TPM is unhealthy, so periodically check Get-Tpm on enrolled devices. "Anti-hammering" is the persistent rate-limit counter the TPM enforces against authValue and policy-PIN failures. It survives reboots and only resets after a long lockout period.

Suspend BitLocker before a firmware update

From an elevated PowerShell prompt:

Suspend-BitLocker -MountPoint "C:" -RebootCount 1

The RebootCount 1 argument auto-resumes after the next reboot, which is what you want when the firmware update reboots the device. After the update completes, run Get-BitLockerVolume -MountPoint C: and confirm ProtectionStatus is On again. If you forget, the next boot will land on the BitLocker recovery prompt because PCR[0] no longer matches the sealed policy.

The TPM does exactly what it was designed to do, no more. Which is exactly enough -- if you understand what "exactly" means.

10. FAQ and closing

A handful of questions get asked again and again about the TPM. The answers do not always match the marketing.

Frequently asked questions

Does TPM mean Microsoft has my keys?

No. TPM keys are non-exportable and held inside the chip; the Microsoft documentation [7] is explicit that "if a key stored in a TPM has properties that disallow exporting the key, that key truly can't leave the TPM." The Endorsement Key is a privacy concern (it uniquely identifies the chip) but it is not a Microsoft backdoor. Pluton centralizes firmware signing, not key access -- Microsoft signs the firmware that runs on Pluton, but the keys Pluton creates and seals stay inside Pluton.

Is fTPM secure enough?

Depends on threat model. Against software attackers, fTPM is sufficient -- the no-bus property defeats the cheap LPC/SPI sniffing class. Against well-funded physical attackers, fTPM is weaker than dTPM: TPM-Fail [32] showed timing-side-channel ECDSA key recovery on Intel PTT, and faulTPM [36] showed 2-3 hour state extraction on AMD PSP. Pluton sits between the two with a smaller TEE surface but less public scrutiny.

Do I really need TPM 2.0 for Windows 11?

Yes -- Microsoft mandates it. The OEM mandate has been in force since July 28, 2016 [3]; the consumer mandate became visible on June 24, 2021 with the Windows 11 announcement. The defensive primitives the TPM underwrites -- BitLocker, Credential Guard, Windows Hello, Device Health Attestation [23] -- are real, measurable, and not realistically replaceable by software-only equivalents.

Can a TPM be cloned?

Practically no for dTPM and Pluton; the EK private key never leaves the chip, and replicating it would require silicon-level extraction that no public attack has achieved. faulTPM [36] proved that AMD fTPM internal state can be extracted in 2-3 hours of physical access; that is closer to "extracted" than "cloned" but the practical effect is the same for keys the chip held.

Why doesn't TPM stop ransomware?

Because ransomware operates after the OS has loaded -- by definition outside the TPM's threat model. The TPM secures keys at rest and attests boot integrity. It does not run anti-malware, sign user files, or detect runtime compromise. Microsoft's BitLocker countermeasures page [45] is explicit that BitLocker is a data-protection feature, not an anti-malware feature; the same logic applies to the TPM that underwrites it.

Pluton vs TPM -- is Pluton replacing TPM?

Pluton implements TPM 2.0 plus Microsoft-specific extensions. From Windows's perspective it is a TPM with a different update story (Windows Update instead of UEFI capsule) and a different trust anchor (Microsoft as firmware signer). Whether the OEM exposes Pluton "as the TPM" or alongside a discrete TPM is an OEM choice [41].

Return to June 24, 2021. The PR backlash about a Trusted Platform Module made the chip visible for the first time to a consumer audience that had owned one for a decade. The technical rationale Microsoft gave was four words long; the actual rationale is the rest of this article.

A passive cryptoprocessor designed in 1999 quietly became the load-bearing pillar of half of Windows security. Twenty-five years of engineering refined a single primitive -- measure, extend, seal, quote -- into something one chip could underwrite. Twenty-five years of attacks, from a $40 FPGA on an LPC bus to a voltage glitch against the AMD PSP, argued empirically about how passive that chip can be allowed to be. The current state of the art is on the CPU die, in Rust, signed by Microsoft, patched through Windows Update -- and post-quantum migration is the next argument.

The TPM is not a checkbox. It is the point at which Windows decided integrity must be measurable. It is not a panacea -- the runtime-compromised OS still wins once the key is unsealed -- but it is a primitive, with a clean boundary. Now you know what it can prove, and what it cannot. The chip is the cheapest part of the system. The cost was twenty-five years of getting it right.

Study guide

Key terms

TPM (Trusted Platform Module)
A passive cryptoprocessor on a separate chip or block of silicon that holds keys and records integrity measurements.
PCR (Platform Configuration Register)
A TPM register modified only by one-way extend operations, which fold a measurement into the running hash.
Sealing
Encrypting a blob under the TPM with a policy that names a specific PCR state; unseal succeeds only when the live PCRs match.
Quote
A TPM-signed snapshot of selected PCRs, used by remote verifiers in attestation.
Endorsement Key (EK)
The TPM's permanent identity key, generated at manufacture and certified by the chip vendor's CA.
Enhanced Authorization
TPM 2.0's policy-session mechanism, which lets a callable's authorization rule be an arbitrary composition of PCR, signed, and command-code predicates.
Algorithm agility
The architectural property of TPM 2.0 that decouples cryptographic algorithms from data-structure layout, allowing new algorithms to be added by registering an identifier rather than re-laying out the spec.
fTPM (firmware TPM)
A TPM 2.0 implementation running inside an existing TEE: Intel CSME (PTT), AMD PSP, or Microsoft Pluton.
DRTM (Dynamic Root of Trust for Measurement)
A late-launch boot mechanism (Intel TXT, AMD SVM-SKINIT, System Guard Secure Launch) that re-establishes a known good measurement chain after the OS has started, complementing the TPM's static RTM.
Anti-hammering
A persistent TPM-enforced rate-limit counter against repeated authValue or PIN failures; survives reboots and forces lockout after a configurable threshold.

References

  1. Panos Panay (2021). Introducing Windows 11. https://blogs.windows.com/windowsexperience/2021/06/24/introducing-windows-11/ - June 24, 2021 Windows 11 announcement.
  2. David Weston (2021). Windows 11 enables security by design from the chip to the cloud. https://www.microsoft.com/en-us/security/blog/2021/06/25/windows-11-enables-security-by-design-from-the-chip-to-the-cloud/ - Microsoft's hardware-root-of-trust framing for the Windows 11 TPM 2.0 mandate (June 25, 2021).
  3. Microsoft (2016). TPM 2.0 -- OEM mandate. https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-tpm - July 28, 2016 OEM mandate that all new Windows device models implement and enable TPM 2.0 by default.
  4. Wikipedia contributors (2024). Trusted Computing. https://en.wikipedia.org/wiki/Trusted_Computing - Wikipedia overview of Trusted Computing concepts and Stallman's 'treacherous computing' framing.
  5. Wikipedia contributors (2024). Windows 2000. https://en.wikipedia.org/wiki/Windows_2000 - Wikipedia article giving the February 17, 2000 general-availability date.
  6. Microsoft (2024). Cryptography portal (Win32). https://learn.microsoft.com/en-us/windows/win32/seccrypto/cryptography-portal - Index of Win32 cryptography APIs including DPAPI, EFS, and LSA secrets.
  7. Microsoft (2024). How Windows uses the TPM. https://learn.microsoft.com/en-us/windows/security/hardware-security/tpm/how-windows-uses-the-tpm - Microsoft's authoritative description of TPM-resident keys, PCR algorithm banks, and BitLocker sealing.
  8. Wikipedia contributors (2024). Trusted Computing Group. https://en.wikipedia.org/wiki/Trusted_Computing_Group - Wikipedia article giving the October 11, 1999 TCPA founding date.
  9. Trusted Computing Group (2003). TPM Main Specification. https://trustedcomputinggroup.org/resource/tpm-main-specification/ - TPM 1.1b (2002) and 1.2 (2003, ISO/IEC 11889:2009); the pre-2.0 normative spec.
  10. Wikipedia contributors (2024). Trusted Platform Module. https://en.wikipedia.org/wiki/Trusted_Platform_Module - Wikipedia article on TPM history (1.1b in 2003; TPM 2.0 announced April 9, 2014).
  11. Paul England, Butler Lampson, John Manferdelli, Marcus Peinado, & Bryan Willman (2003). A Trusted Open Platform. https://www.microsoft.com/en-us/research/publication/trusted-open-platform/ - IEEE Computer (July 2003) NGSCB / Palladium architectural manifesto.
  12. Wikipedia contributors (2024). Next-Generation Secure Computing Base. https://en.wikipedia.org/wiki/Next-Generation_Secure_Computing_Base - Wikipedia article on NGSCB / Palladium and the BitLocker-only Vista shipping decision.
  13. Denis Andzakovic (2019). Extracting BitLocker keys from a TPM. https://pulsesecurity.co.nz/articles/TPM-sniffing - March 13, 2019 reproducible LPC bus-sniffing of BitLocker VMK on HP and Surface Pro 3.
  14. Microsoft (2024). BitLocker overview. https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/ - BitLocker protector model: TPM-only / TPM+PIN / TPM+startup key.
  15. Microsoft (2017). OEM UEFI Secure Boot. https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-secure-boot - OEM UEFI Secure Boot requirement that ships with Windows 8 (2012) and later.
  16. Elaine Barker & Allen Roginsky (2019). NIST SP 800-131A Rev. 2 -- Transitioning the Use of Cryptographic Algorithms and Key Lengths. https://csrc.nist.gov/pubs/sp/800/131/a/r2/final - March 2019 update of SP 800-131A; deprecated SHA-1 digital signatures starting in 2011.
  17. Marc Stevens, Elie Bursztein, Pierre Karpman, Ange Albertini, & Yarik Markov (2017). Announcing the first SHA-1 collision. https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html - February 2017 Google Security Blog announcement of the SHAttered collision.
  18. Wikipedia contributors (2024). Windows NT 4.0. https://en.wikipedia.org/wiki/Windows_NT_4.0 - Wikipedia article giving the 1996 release of NT 4.0 and the LSA / PStore software-only baseline.
  19. Trusted Computing Group (2014). TPM 2.0 Library Specification. https://trustedcomputinggroup.org/resource/tpm-library-specification/ - TCG Family 2.0, Level 00, Revision 116 (April 9, 2014); the foundation document for TPM 2.0.
  20. ISO/IEC (2015). ISO/IEC 11889-1:2015 -- Information technology -- Trusted platform module library -- Part 1: Architecture. https://www.iso.org/standard/66510.html - International standardisation of TPM 2.0 architecture (Edition 2, August 2015; corrected March 2016; reviewed 2021).
  21. Will Arthur, David Challener, & Kenneth Goldman (2015). A Practical Guide to TPM 2.0. https://link.springer.com/book/10.1007/978-1-4302-6584-9 - Apress 2015 textbook; the de-facto TPM 2.0 developer reference.
  22. Microsoft (2024). Secure the Windows boot process. https://learn.microsoft.com/en-us/windows/security/operating-system-security/system-security/secure-the-windows-10-boot-process - Secure Boot, Trusted Boot, Measured Boot, and ELAM described end-to-end.
  23. Microsoft (2024). Measured boot and host attestation. https://learn.microsoft.com/en-us/azure/security/fundamentals/measured-boot-host-attestation - Azure-side Host Attestation Service description of TCG event log and PCR semantics.
  24. Microsoft (2024). Credential Guard overview. https://learn.microsoft.com/en-us/windows/security/identity-protection/credential-guard/ - VBS-isolated NTLM/Kerberos secrets; default-on in Windows 11 22H2 domain-joined hardware.
  25. Microsoft (2024). How Windows Hello for Business works. https://learn.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/how-it-works - Per-user RSA-2048 / P-256 credential bound to the device and protected by the TPM.
  26. Microsoft (2024). TPM key attestation. https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/tpm-key-attestation - EK certificate trust model and ADCS template-based attestation.
  27. Denis Andzakovic (2019). lpc_sniffer_tpm. https://github.com/denandz/lpc_sniffer_tpm - iCE40 FPGA gateware open-sourced alongside Andzakovic's 2019 TPM-sniffing write-up.
  28. Henri Nurmi (2020). Sniff, there leaks my BitLocker key. https://labs.withsecure.com/publications/sniff-there-leaks-my-bitlocker-key - December 21, 2020 WithSecure SPI-bus sniffing variant with public BitLocker-key extraction tool.
  29. Thomas Dewaele & Julien Oberson (2021). TPM sniffing. https://blog.scrt.ch/2021/11/15/tpm-sniffing/ - November 2021 SCRT reproduction of LPC sniffing on a Lenovo ThinkPad L440 with ST33TPM12LPC.
  30. SCRT (2024). Privilege escalation through TPM sniffing when BitLocker PIN is enabled. https://blog.scrt.ch/2024/10/28/privilege-escalation-through-tpm-sniffing-when-bitlocker-pin-is-enabled/ - October 2024 industrialised TPM sniffing across Lenovo, HP, and Dell in a few minutes.
  31. Wikipedia contributors (2024). Intel Management Engine. https://en.wikipedia.org/wiki/Intel_Management_Engine - Wikipedia article on Intel ME / CSME that hosts Intel PTT.
  32. Daniel Moghimi, Berk Sunar, Thomas Eisenbarth, & Nadia Heninger (2019). TPM-Fail. https://tpm.fail/ - TPM-Fail microsite with reproducible demos, CVE numbers, and 4-20 minute / 5 hour recovery claims.
  33. NIST NVD (2019). CVE-2019-11090 -- Intel PTT timing leak (TPM-Fail). https://nvd.nist.gov/vuln/detail/CVE-2019-11090 - NVD entry for the Intel PTT ECDSA scalar-multiplication timing leak.
  34. NIST NVD (2019). CVE-2019-16863 -- STMicroelectronics ST33 TPM-FAIL. https://nvd.nist.gov/vuln/detail/CVE-2019-16863 - NVD entry naming TPM-FAIL on the ST33TPHF2ESPI chip.
  35. Daniel Moghimi, Berk Sunar, Thomas Eisenbarth, & Nadia Heninger (2020). TPM-FAIL: TPM meets Timing and Lattice Attacks. https://www.usenix.org/conference/usenixsecurity20/presentation/moghimi - USENIX Security 2020 paper proving timing-side-channel ECDSA recovery on Intel PTT and STMicro ST33.
  36. Hans Niklas Jacob, Christian Werling, Robert Buhren, & Jean-Pierre Seifert (2023). faulTPM: Exposing AMD fTPMs' Deepest Secrets. https://arxiv.org/abs/2304.14717 - arXiv:2304.14717; voltage-glitch attack extracting full AMD fTPM internal state in 2-3 hours.
  37. PSPReverse (2023). ftpm_attack -- proof-of-concept code for faulTPM. https://github.com/PSPReverse/ftpm_attack - GitHub PoC repository accompanying faulTPM; replays the attack against captured Lenovo Ideapad data.
  38. Wikipedia contributors (2024). AMD Platform Security Processor. https://en.wikipedia.org/wiki/AMD_Platform_Security_Processor - Wikipedia article on the AMD PSP (ARM TrustZone Cortex-A5) used as the AMD fTPM host.
  39. Microsoft (2024). Microsoft Pluton security processor. https://learn.microsoft.com/en-us/windows/security/hardware-security/pluton/microsoft-pluton-security-processor - Pluton chipset list (Ryzen 6000+, Core Ultra 200V, Snapdragon X) and Rust firmware foundation.
  40. David Weston (2020). Meet the Microsoft Pluton processor -- The security chip designed for the future of Windows PCs. https://www.microsoft.com/en-us/security/blog/2020/11/17/meet-the-microsoft-pluton-processor-the-security-chip-designed-for-the-future-of-windows-pcs/ - Microsoft's November 17, 2020 Pluton announcement explicitly attributing the bus-sniffing motivation to Andzakovic.
  41. Microsoft (2024). Microsoft Pluton as TPM. https://learn.microsoft.com/en-us/windows/security/hardware-security/pluton/pluton-as-tpm - OEM choice between Pluton-as-TPM and discrete TPM with Pluton as secondary.
  42. Microsoft (2024). Trusted launch for Azure VMs. https://learn.microsoft.com/en-us/azure/virtual-machines/trusted-launch - vTPM / Trusted Launch as the default for new Azure Gen2 VMs.
  43. Microsoft Security (2019). Microsoft and partners design new device security requirements to protect against targeted firmware attacks. https://www.microsoft.com/en-us/security/blog/2019/10/21/microsoft-and-partners-design-new-device-security-requirements-to-protect-against-targeted-firmware-attacks/ - October 2019 Secured-core PCs initiative announcement; introduced System Guard Secure Launch (DRTM).
  44. Microsoft (2024). System Guard Secure Launch and SMM protection. https://learn.microsoft.com/en-us/windows/security/hardware-security/system-guard-secure-launch-and-smm-protection - Microsoft's DRTM implementation on Secured-core PCs.
  45. Microsoft (2024). BitLocker countermeasures. https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/countermeasures - Anti-hammering, MOR bit, preboot authentication as the documented bus-sniffing mitigation.
  46. NIST NVD (2023). CVE-2023-21563 -- BitLocker Security Feature Bypass. https://nvd.nist.gov/vuln/detail/CVE-2023-21563 - NVD entry for the BitLocker SFB (community-known as 'Bitpixie').
  47. NIST (2024). FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard (ML-KEM). https://csrc.nist.gov/pubs/fips/203/final - Finalised August 13, 2024; first federal post-quantum KEM standard.
  48. NIST (2024). FIPS 204: Module-Lattice-Based Digital Signature Standard (ML-DSA). https://csrc.nist.gov/pubs/fips/204/final - Finalised August 13, 2024; ML-DSA-87 public-key/private-key sizes drive TPM NV-budget constraints.
  49. NIST (2024). FIPS 205: Stateless Hash-Based Digital Signature Standard (SLH-DSA). https://csrc.nist.gov/pubs/fips/205/final - Finalised August 13, 2024; SLH-DSA-256s 29,792-byte signatures exceed typical TPM response buffer.
  50. NIST (2024). Post-Quantum Cryptography project. https://csrc.nist.gov/projects/post-quantum-cryptography - NIST PQC migration timeline; NIST IR 8547 transition reference; 2035 deprecation horizon.
  51. U.S. Federal Register (2024). Announcing Issuance of Federal Information Processing Standards (FIPS) -- FIPS 203, 204, and 205. https://www.federalregister.gov/documents/2024/08/14/2024-17956/announcing-issuance-of-federal-information-processing-standards-fips-fips-203-module-lattice-based - August 14, 2024 Federal Register notice formalising the three PQC FIPS standards.
  52. Microsoft (2024). ms-tpm-20-ref releases. https://github.com/microsoft/ms-tpm-20-ref/releases - Microsoft's TPM 2.0 reference code release list; latest sync with TCG 1.83.
  53. Fraunhofer SIT (2024). Post-Quantum Cryptography for TPM. https://www.sit.fraunhofer.de/en/pqcryptography/post-quantum-cryptography-for-tpm/ - Fraunhofer SIT research programme prototyping PQC primitives in reference TPM stacks.
  54. Trusted Computing Group (2020). PC Client Platform TPM Profile (PTP) Specification. https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/ - PC Client TPM platform profile; defines minimum NV budget and command response sizes.
  55. Mike Ounsworth, John Gray, Massimiliano Pala, Jan Klaussner, & Scott Fluhrer (2026). Composite ML-DSA for X.509 (IETF LAMPS WG draft). https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-sigs/ - IETF LAMPS WG draft defining hybrid ML-DSA + RSA/ECDSA/EdDSA composite signatures for X.509.
  56. Douglas Stebila, Scott Fluhrer, & Shay Gueron (2024). Hybrid key exchange in TLS 1.3 (IETF TLS WG draft). https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/ - IETF TLS WG draft for hybrid (classical + post-quantum) KEMs in TLS 1.3 handshakes.
  57. Microsoft Security (2025). Quantum-safe security: Progress towards next-generation cryptography. https://www.microsoft.com/en-us/security/blog/2025/08/20/quantum-safe-security-progress-towards-next-generation-cryptography/ - August 2025 Microsoft Quantum Safe Program update; references SymCrypt PQC roadmap.
  58. CRoCS Masaryk University (2017). ROCA detection tool. https://github.com/crocs-muni/roca - Detection-tool repo accompanying the ROCA paper (CCS 2017).
  59. NIST NVD (2017). CVE-2017-15361 -- Infineon ROCA. https://nvd.nist.gov/vuln/detail/CVE-2017-15361 - NVD entry for the ROCA Infineon RSA key-generation flaw affecting BitLocker-with-TPM-1.2 and YubiKey 4.
  60. Wikipedia contributors (2024). ROCA vulnerability. https://en.wikipedia.org/wiki/ROCA_vulnerability - Wikipedia article on ROCA / CVE-2017-15361; reports ~25% of TPM devices globally affected.
  61. Dan Goodin (2017). Crypto failure cripples millions of high-security keys, 750k Estonian IDs. https://arstechnica.com/information-technology/2017/10/crypto-failure-cripples-millions-of-high-security-keys-750k-estonian-ids/ - October 2017 Ars Technica primary press coverage of the Estonian e-ID re-enrollment.
  62. Microsoft Security Response Center (2017). MSRC Advisory ADV170012 -- Vulnerability in TPM Could Allow Security Feature Bypass. https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV170012 - Microsoft's ROCA coordinated-disclosure advisory; links to vendor TPM firmware updates.
  63. Microsoft (2024). Continuous access evaluation. https://learn.microsoft.com/en-us/entra/identity/conditional-access/concept-continuous-access-evaluation - Microsoft Entra CAE: 1-hour default token lifetime; up to 15-minute critical-event propagation.
  64. Microsoft (2024). CNG DPAPI (DPAPI-NG). https://learn.microsoft.com/en-us/windows/win32/seccng/cng-dpapi - DPAPI-NG primitives (NCryptProtectSecret / NCryptUnprotectSecret) and protection-to-principals model.
  65. Microsoft (2024). DPAPI-NG protection descriptors. https://learn.microsoft.com/en-us/windows/win32/seccng/protection-descriptors - Five descriptor keywords (SID, SDDL, LOCAL, WEBCREDENTIALS, CERTIFICATE) across three principal classes.
  66. Brandon Vigliarolo (2022). Dell, Lenovo and HP responses to Microsoft Pluton. https://www.theregister.com/2022/03/09/dell_pluton_microsoft/ - March 9, 2022 Register collection of Dell / Lenovo / HP statements on Pluton adoption.
  67. Mark Hachman (2022). Why the biggest laptop vendors are ignoring Microsoft's Pluton security tech. https://www.pcworld.com/article/621767/why-the-biggest-laptop-vendors-are-ignoring-microsofts-pluton-security-tech.html - PCWorld follow-up on Lenovo's customer-choice rationale and Dell's Pluton non-alignment.
  68. Michael Larabel (2023). Pluton TPM CRB driver merged for Linux 6.3. https://www.phoronix.com/news/Pluton-TPM-CRB-Merged-Linux-6.3 - February 21, 2023 Phoronix article on Garrett's tpm_crb upstream contribution; kernel released April 2023.
  69. Matthew Garrett (2022). How does Pluton actually work? (ASUS ROG Zephyrus G14 firmware analysis). https://mjg59.dreamwidth.org/58879.html - April 2022 reverse-engineering of the AMD Ryzen 6000 BIOS Pluton soft-fuse disable mechanisms.


Revisions (1)
  1. · Cross-reference pass: linked the first mention of BitLocker, Credential Guard, and Windows Hello for Business to their dedicated posts.
  2. · Published.