<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Parag Mali - tag: hardware-security</title><description>Posts tagged hardware-security.</description><link>https://paragmali.com/</link><language>en-US</language><lastBuildDate>Sun, 07 Jun 2026 04:13:09 GMT</lastBuildDate><atom:link href="https://paragmali.com/tags/hardware-security/rss.xml" rel="self" type="application/rss+xml"/><item><title>Apple Secure Enclave vs Microsoft Pluton: Two Roads to Hardware Root of Trust</title><link>https://paragmali.com/blog/apple-secure-enclave-vs-microsoft-pluton-two-roads-to-hardwa/</link><guid isPermaLink="true">https://paragmali.com/blog/apple-secure-enclave-vs-microsoft-pluton-two-roads-to-hardwa/</guid><description>How Apple SEP and Microsoft Pluton solve the same problem -- keeping your secrets safe from a compromised OS -- using two very different silicon strategies.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>
**Apple Secure Enclave and Microsoft Pluton solve the same problem -- keeping your keys, biometrics, and disk-encryption secrets safe even when the operating system is compromised -- by way of two different silicon strategies.** Apple gives the SEP its own physical CPU core, its own L4-derived microkernel (sepOS), and a mailbox API that no app can bypass. Microsoft drops Pluton onto the SoC die as a TPM 2.0-compatible subsystem patched through Windows Update. The differences shape everything downstream: who can patch the firmware, what attacks remain in scope, and which APIs developers actually call. This article walks through the architectures, the API surfaces, the published attacks (checkm8, LPC sniffing, faulTPM), and the cross-platform standards (FIDO2/WebAuthn) that paper over the divide.
&lt;h2&gt;1. The bus that taught everyone a lesson&lt;/h2&gt;
&lt;p&gt;In 2021, a researcher at Pulse Security wired a forty-dollar FPGA to the LPC bus of a Microsoft Surface Pro 3 and a Lenovo laptop, captured a handful of bytes as the machines powered on, and pulled the BitLocker Volume Master Key out of the air. Then they decrypted the drives. They wrote the whole thing up, with photos of the soldering and an open-source sniffer named &lt;code&gt;lpc_sniffer_tpm&lt;/code&gt; (Pulse Security: Sniff, there leaks my BitLocker key [@pulse-tpm-sniff]).&lt;/p&gt;
&lt;p&gt;The hardware was working exactly as designed.&lt;/p&gt;
&lt;p&gt;That is what makes the story interesting. The Trusted Platform Module released the disk-encryption key the moment the boot configuration matched its sealed policy. It then handed the key, in cleartext, to the CPU over a physical wire on the motherboard. Anyone who could touch that wire could read the key. The chip, the spec, the OS -- all of them did precisely what the standard required. The threat model just never accounted for somebody putting probes on a laptop.&lt;/p&gt;
&lt;p&gt;This is the problem hardware-rooted security has spent twenty years trying to dig itself out of. If you trust software, malware wins. If you trust software-plus-discrete-TPM, the bus wins. If you trust software-plus-firmware-TPM, the host operating system&apos;s privileged-mode bugs win. Every layer you add closes one class of attack and opens another.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; Hardware roots of trust exist because no purely software-defined boundary can survive an attacker who runs code at the same privilege level you do. The only way out is to put the secrets somewhere your main CPU literally cannot read.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apple and Microsoft both reached the same conclusion roughly a decade apart, and built almost opposite answers. Apple shipped the Secure Enclave Processor (SEP) with the A7 chip in the iPhone 5s in September 2013 [@apple-sep-chapter] -- a dedicated ARM core inside the application SoC, running its own microkernel, talking to the rest of the phone through a hardware mailbox. Microsoft announced Pluton in November 2020 [@ms-pluton-announce], but had been shipping Pluton-class silicon since the original Xbox One in 2013 [@ms-pluton-learn]; the Windows version is an on-die security subsystem that pretends to be a TPM 2.0 chip and accepts firmware updates over Windows Update.&lt;/p&gt;
&lt;p&gt;Both companies looked at the same threat -- a curious adversary with a screwdriver, an OS-level rootkit, or a $40 logic analyzer -- and decided the answer was to move the keys off the bus. They just disagreed about where to put them.&lt;/p&gt;

A piece of silicon that the rest of a system anchors its security claims to. Keys generated inside the RoT never leave; measurements taken by the RoT are signed by it; software running outside the RoT cannot rewrite the RoT&apos;s behavior. The &quot;root&quot; is the part the rest of the trust chain reduces down to.

A cryptoprocessor specified by the Trusted Computing Group. TPM 2.0 -- the current version, published in 2014 and revised since [@tcg-tpm2] -- defines Platform Configuration Registers (PCRs), an Endorsement Key burned at manufacture, key creation and sealing primitives, and the `TPM2_Quote` command for remote attestation. A TPM can be discrete (its own chip), firmware (running inside another security subsystem), or virtual.
&lt;p&gt;This article is the comparison nobody quite writes, partly because both vendors prefer to talk about themselves and partly because the technologies look superficially similar. They are not. The architectures differ. The threat models differ. The patch channels differ. The developer APIs differ enough that the same security goal -- &quot;store this key so nothing but the user&apos;s biometric can use it&quot; -- produces wildly different code on each side. By the end of this you should know which one is in your device, why it is there, what it actually defends against, and where the academic literature has already poked holes.&lt;/p&gt;

flowchart LR
    subgraph Discrete[&quot;Discrete TPM (sniffable bus)&quot;]
        CPU1[CPU] -- LPC/SPI --&amp;gt; TPM[Discrete TPM chip]
    end
    subgraph SEP[&quot;Apple SEP (separate core)&quot;]
        AP[Application Processor] -- mailbox --&amp;gt; SEPCore[SEP core + sepOS]
    end
    subgraph Pluton[&quot;Microsoft Pluton (on-die subsystem)&quot;]
        CPU2[CPU] -- on-die fabric --&amp;gt; PlutonSub[Pluton subsystem]
    end
&lt;p&gt;The journey from &quot;trust the OS&quot; to &quot;trust the silicon that even the OS cannot read&quot; is the story of the last fifteen years of platform security. The Surface Pro 3 attack is what happens when you do half of it. Apple&apos;s and Microsoft&apos;s answers are what it looks like when you do all of it -- in two opposite ways.&lt;/p&gt;
&lt;h2&gt;2. Apple&apos;s answer: a small computer inside your phone&lt;/h2&gt;
&lt;p&gt;The Apple Secure Enclave Processor is a separate physical CPU core, on the same die as the application processor, with its own memory, its own boot ROM, its own operating system, and its own random number generator. Apple&apos;s own framing in the Platform Security Guide [@apple-sep-chapter] is that the SEP &quot;provides the foundation for the secure generation and storage of the keys necessary for encrypting data at rest.&quot; That is what it does. &lt;em&gt;How&lt;/em&gt; it does it is what is interesting.&lt;/p&gt;
&lt;h3&gt;2.1 What sits on the die&lt;/h3&gt;
&lt;p&gt;Inside an A-series or M-series SoC, the SEP is a distinct cluster. According to Apple&apos;s published architecture, it includes (Apple Platform Security: Secure Enclave [@apple-sep-chapter]):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A dedicated processor core (not a SMT thread, not a shared core) running at a lower clock than the application cores.&lt;/li&gt;
&lt;li&gt;A Memory Protection Engine (MPE) that encrypts every cache line going to or from SEP-owned DRAM.&lt;/li&gt;
&lt;li&gt;A True Random Number Generator (TRNG) seeded by silicon noise.&lt;/li&gt;
&lt;li&gt;A hardware AES engine and a Public Key Accelerator (PKA) for ECC and RSA.&lt;/li&gt;
&lt;li&gt;A boot ROM masked in silicon at fabrication time.&lt;/li&gt;
&lt;li&gt;From A13 onward, a relationship with an external Secure Storage Component (SSC) [@apple-ssc] that provides monotonic counters and replay-protected non-volatile storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The lower clock speed is not an accident. Apple explicitly notes that the SEP &quot;is designed to operate efficiently at a lower clock speed that helps to protect it against clock and power attacks&quot; (Apple Platform Security [@apple-sep-chapter]). Side-channel-resistance starts at the timing budget.&lt;/p&gt;

Apple&apos;s dedicated security coprocessor, introduced in the A7 SoC in September 2013 [@apple-a-series]. Each Apple-designed SoC since contains one SEP. It runs `sepOS`, an Apple customization of the L4 microkernel, and exposes its services only via a tightly defined mailbox interface from the application processor.

The operating system the SEP runs. Apple describes it as &quot;an Apple-customized version of the L4 microkernel&quot; (Apple Platform Security: Secure Enclave [@apple-sep-chapter]). It is independent of iOS, iPadOS, or macOS, ships in the same firmware bundle as those operating systems, and is signed by Apple. The microkernel design constrains the trusted computing base and forces cross-service communication through IPC.
&lt;h3&gt;2.2 The boot chain, in order&lt;/h3&gt;
&lt;p&gt;When you press the power button, two CPUs come up at once. The application processor begins executing its boot ROM, and the SEP begins executing its own. They are independent boot processes that meet later, after both sides have verified their own firmware.&lt;/p&gt;

sequenceDiagram
    participant AP as Application Processor
    participant SEP as Secure Enclave Processor
    participant ROM as SEP Boot ROM (mask)
    participant Flash as System Storage
    Note over AP,SEP: Reset
    AP-&amp;gt;&amp;gt;AP: Execute AP Boot ROM
    SEP-&amp;gt;&amp;gt;ROM: Execute SEP Boot ROM
    ROM-&amp;gt;&amp;gt;Flash: Load sepOS image
    ROM-&amp;gt;&amp;gt;ROM: Verify signature against Apple root key
    alt Signature valid
        ROM-&amp;gt;&amp;gt;SEP: Launch sepOS
        SEP-&amp;gt;&amp;gt;SEP: Initialize MPE, derive UID-tangled keys
    else Signature invalid
        ROM-&amp;gt;&amp;gt;SEP: Halt
    end
    AP--&amp;gt;&amp;gt;SEP: Mailbox handshake
    SEP--&amp;gt;&amp;gt;AP: Available services advertised
&lt;p&gt;The SEP boot ROM is mask ROM. That phrase carries weight. It means the bits were etched into the silicon at fabrication and cannot be rewritten. Apple cannot patch the SEP boot ROM with a software update, even if Apple wants to. This is a feature -- nobody else can patch it either -- and a liability. We will return to it when we discuss checkm8.&lt;/p&gt;
&lt;p&gt;After the SEP boot ROM verifies and launches &lt;code&gt;sepOS&lt;/code&gt;, the SEP holds two values fused into the silicon at manufacture: a Unique ID (UID) and a Group ID (GID). The UID is per-device. The GID is per-product-family. Both are kept inside the SEP and never appear outside it. Keys derived from the UID are tangled to the specific piece of silicon; you cannot lift the wrapped key, move it to another phone, and unwrap it. The chip is physically the wrap-and-unwrap oracle.The UID is also why factory-reset really does erase your data. The data-protection key hierarchy roots at a key derived from the UID and a per-file random; rotate the right intermediate and every wrapped file becomes unrecoverable noise.&lt;/p&gt;
&lt;h3&gt;2.3 The Memory Protection Engine&lt;/h3&gt;
&lt;p&gt;The SEP&apos;s RAM is, physically, in the same DRAM module as everything else. A naive design would let the application processor read it. The MPE prevents that. Every cache line bound for SEP memory is encrypted with AES in XEX mode (a tweakable mode similar to disk-encryption XTS) and authenticated with a CMAC tag. The tweak includes the physical address, so an attacker cannot relocate ciphertext to a different location and have it still verify (Apple Platform Security: Secure Enclave [@apple-sep-chapter]).&lt;/p&gt;
&lt;p&gt;Starting with the A11 SoC, the MPE added an anti-replay value per protected block, with the anti-replay tree rooted in dedicated on-die SRAM. The threat that introduces is: an attacker who can capture the encrypted DRAM contents at time &lt;code&gt;T1&lt;/code&gt; and overwrite the DRAM with that snapshot at time &lt;code&gt;T2&lt;/code&gt; -- a &quot;store, rewind, replay&quot; attack. Tree-rooted anti-replay defeats it because the root in SRAM does not match the old leaves the attacker re-injected.&lt;/p&gt;
&lt;p&gt;The tweakable XEX construction has the property that two cache lines containing the same plaintext at different addresses produce different ciphertext, which prevents the pattern-leakage you get from ECB-style encryption. CMAC adds a 128-bit integrity tag.&lt;/p&gt;
&lt;p&gt;From the A14 and M1 generation onward, the MPE handles two ephemeral keys: one for SEP-private data and one for data shared with the Secure Neural Engine (used during Face ID matching). The keys are regenerated at every reset, so even capturing the DRAM ciphertext across a reboot leaks nothing.&lt;/p&gt;
&lt;h3&gt;2.4 The Secure Storage Component&lt;/h3&gt;
&lt;p&gt;Anti-hammering -- the property that a passcode-guessing attacker is rate-limited and eventually locked out -- requires reliable monotonic state that the attacker cannot rewind. Mask ROM and on-die SRAM are not enough on their own because power loss erases SRAM. From the A13 SoC onward, Apple solves this by adding a separate chip on the logic board: the Secure Storage Component (SSC) [@apple-ssc].&lt;/p&gt;
&lt;p&gt;The SSC is small, tamper-resistant, and only the SEP can talk to it. It stores monotonic counters and entropy values that the SEP uses to bind authenticated storage to wall-clock state. If you steal the phone, dump the encrypted blobs, &quot;rewind&quot; by overwriting the flash with an earlier copy, and try to brute-force the passcode again, the SSC&apos;s counters no longer match. Anti-hammering survives the rewind.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; A monotonic counter sounds easy until you remember that an attacker with the physical device can pull power at any instant, including in the middle of an increment. The SSC has to atomically commit counter updates while also defending against deliberate transient brown-outs. This is the kind of thing that takes a dedicated tamper-resistant chip rather than a software loop.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2.5 The mailbox API&lt;/h3&gt;
&lt;p&gt;Userspace apps never touch the SEP directly. The application processor reaches it through a hardware mailbox -- a small ring of registers and shared memory that defines the entire API surface from AP to SEP. The kernel exposes higher-level services on top: Touch ID and Face ID matching, Keychain entries flagged with &lt;code&gt;kSecAttrTokenIDSecureEnclave&lt;/code&gt; [@apple-keychain], Data Protection class keys, App Attest signing, and so on.&lt;/p&gt;
&lt;p&gt;The constraint is severe. The SEP exposes a fixed set of operations. No app, and no part of the OS, can ask the SEP to do something the firmware did not already implement. Compromise of the AP-side kernel does not produce an arbitrary-code-execution primitive on the SEP. It produces, at most, the ability to call SEP services from a hostile place -- and those services still require user authentication (FaceID, TouchID, passcode) before they release sensitive operations.This is the dual of the TPM 2.0 design philosophy. A TPM defines a wide command set in its spec; the firmware implements that command set; software calls those commands. The SEP defines a narrow service set bespoke to Apple&apos;s products; everything else is rejected.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The SEP is not a generic crypto coprocessor. It is a small fixed-purpose computer that knows how to do exactly the operations Apple&apos;s platforms need, and nothing else. Its security comes from being deliberately less programmable than a TPM.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you had to summarize what Apple built in one sentence: they put a second computer in the phone, gave it the keys, gave it a lock on its own door, and left a slot for messages to slide through. That is the design.&lt;/p&gt;
&lt;h2&gt;3. Microsoft&apos;s answer: kill the bus, keep the standard&lt;/h2&gt;
&lt;p&gt;Apple had the luxury of designing the application processor and the security processor together. Microsoft does not. Microsoft sells software that runs on AMD, Intel, and Qualcomm silicon, on chassis from Dell, HP, Lenovo, Acer, Asus, Microsoft itself, and a long tail of others. The discrete TPM 2.0 standard fixes a contract between Windows and a piece of trusted hardware that any vendor can implement. Pluton&apos;s job was to keep that contract while removing the parts that did not survive contact with reality.&lt;/p&gt;
&lt;p&gt;The first part of reality Pluton kills is the bus.&lt;/p&gt;
&lt;h3&gt;3.1 The Xbox lineage&lt;/h3&gt;
&lt;p&gt;Microsoft did not invent Pluton for Windows. The architecture started in the original Xbox One, shipping in 2013 [@ms-pluton-learn], where it served as the security subsystem that prevented modchipping and verified the boot chain. The same architecture was extended to the Azure Sphere MT3620 microcontroller in 2018 [@ms-pluton-learn], aimed at IoT devices. The Windows variant -- the one most people mean when they say &quot;Pluton&quot; -- was announced in November 2020 [@ms-pluton-announce].&lt;/p&gt;
&lt;p&gt;The first shipping Windows silicon containing Pluton was the AMD Ryzen 6000 series (&quot;Rembrandt&quot;) in January 2022. Qualcomm Snapdragon 8cx Gen 3 and the Snapdragon X family followed in 2023-2024. Intel&apos;s first Pluton-bearing CPU was Core Ultra Series 2 (&quot;Lunar Lake&quot;) in late 2024. As of the current Microsoft documentation, the supported matrix is &quot;AMD Ryzen 6000/7000/8000/9000 and Ryzen AI Series; Intel Core Ultra 200V Series, Ultra Series 3; Qualcomm Snapdragon 8cx Gen 3 and Snapdragon X Series&quot; (Microsoft Pluton Security Processor, Microsoft Learn [@ms-pluton-learn]).This is a deployment claim. Pluton&apos;s &lt;em&gt;presence&lt;/em&gt; on these CPUs is documented by the silicon vendors and Microsoft. Whether Pluton is &lt;em&gt;enabled by default&lt;/em&gt; on a given laptop varies by OEM. Practitioners verifying real fleets need to confirm via Windows&apos; Device Manager and &lt;code&gt;tpm.msc&lt;/code&gt; whether the active TPM advertises the Microsoft Pluton manufacturer ID rather than a discrete vendor.&lt;/p&gt;
&lt;h3&gt;3.2 What sits on the die&lt;/h3&gt;
&lt;p&gt;Pluton is a security subsystem placed inside the SoC, not on a separate chip on the motherboard. That single architectural decision eliminates the LPC/SPI bus that defeats discrete TPMs. Microsoft&apos;s framing in the announcement post: the design targets attacks &quot;where an attacker can steal or temporarily gain physical access to a PC ... on the communication channel between the CPU and TPM&quot; (Microsoft Security Blog [@ms-pluton-announce]).&lt;/p&gt;

Microsoft-authored security subsystem integrated into the SoC die of supported AMD, Intel, and Qualcomm processors. Pluton presents a TPM 2.0 interface to Windows but adds firmware-update via Windows Update and capsule, on-die placement (no external bus to sniff), and a Microsoft-maintained codebase that Microsoft describes as &quot;Rust-based&quot; from 2024 onward [@ms-pluton-learn] on AMD and Intel platforms.

Microsoft&apos;s name for keys that are &quot;never exposed outside the protected hardware, even to the Pluton firmware itself&quot; (Microsoft Security Blog, 2020 [@ms-pluton-announce]). Conceptually equivalent to Apple&apos;s UID-tangled keys: a hardware boundary that even the firmware running on top cannot cross.
&lt;p&gt;Inside the die, Pluton runs its own small processor (the vendors do not publish the ISA in customer-facing docs), with its own ROM, on-die RAM, hardware crypto engines, and a hardware-confined key store. It exchanges messages with the host through a mailbox interface analogous to SEP&apos;s, but the higher-level wire protocol it speaks back to the host is TPM 2.0.&lt;/p&gt;
&lt;h3&gt;3.3 TPM 2.0 as the personality, not the limit&lt;/h3&gt;
&lt;p&gt;Pluton implements the TPM 2.0 command set. That means BitLocker, Windows Hello, Credential Guard, System Guard, Measured Boot, and Device Health Attestation all work against Pluton with no modifications -- they think they are talking to a TPM 2.0 chip, and they are (Microsoft Pluton as TPM, Microsoft Learn [@ms-pluton-as-tpm]).&lt;/p&gt;
&lt;p&gt;TPM 2.0 compatibility is the compromise that buys Microsoft adoption. The entire Windows security stack was already designed against the TCG TPM 2.0 wire protocol. Forcing it onto a new API would have required years of platform engineering. Forcing it onto a new API and getting OEMs to adopt the new chip would have required forever.&lt;/p&gt;

You could read the Pluton design as &quot;TPM 2.0 with a software-update channel.&quot; That is mostly right and is how the documentation usually describes it. But Pluton also supports Pluton-specific paths beyond TPM 2.0 -- the Microsoft Learn documentation [@ms-pluton-learn] refers to Pluton-rooted credentials and attestation flows that ride alongside the TPM personality. The TPM interface is the lowest common denominator, not the ceiling.

flowchart TD
    subgraph Windows[&quot;Windows OS&quot;]
        BL[BitLocker]
        WH[Windows Hello]
        CG[Credential Guard]
        DHA[Device Health Attestation]
    end
    subgraph Pluton[&quot;Pluton subsystem on SoC&quot;]
        TPMpers[&quot;TPM 2.0 personality -- (PCRs, EK, AK, Quote, Seal)&quot;]
        MSrooted[&quot;Microsoft-rooted services -- (Pluton credentials, MS-signed firmware)&quot;]
    end
    BL --&amp;gt; TPMpers
    WH --&amp;gt; TPMpers
    CG --&amp;gt; TPMpers
    DHA --&amp;gt; TPMpers
    DHA --&amp;gt; MSrooted
    WH --&amp;gt; MSrooted
&lt;h3&gt;3.4 The patch channel&lt;/h3&gt;
&lt;p&gt;This is the design feature Microsoft most emphasizes and where the philosophical break with Apple is most visible. Pluton firmware can be updated through two paths (Microsoft Pluton Security Processor, Microsoft Learn [@ms-pluton-learn]):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;UEFI capsule update&lt;/strong&gt;. The Pluton firmware lives on the system&apos;s SPI flash and is loaded during early boot. A capsule update -- delivered via the same UEFI mechanism that updates BIOS -- can replace it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic loading via Windows Update&lt;/strong&gt;. Microsoft can ship a new Pluton firmware blob through Windows Update; the OS loader picks it up the next time the subsystem comes online.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Apple&apos;s update model is essentially the first path with a different label. The SEP firmware ships inside the iOS/macOS image bundle, signed by Apple, and is loaded at boot. There is no Windows-Update-style ambient channel separate from the OS image.&lt;/p&gt;

Patchable. By Microsoft. Through the channel users already trust. This is the single biggest practical advantage Pluton has over discrete TPMs, and the single biggest political problem.
&lt;p&gt;The structure of this difference is what makes the Apple-vs-Microsoft comparison sharp. Apple controls the entire silicon, OS, and update channel. The patch path is fast because everything is one vendor. Microsoft does not control the silicon -- AMD, Intel, and Qualcomm do -- but they wrote the firmware, signed it, and route it through Windows Update. The patch path is fast because Microsoft has been delivering OS-level updates to a billion machines for a quarter century.&lt;/p&gt;
&lt;h3&gt;3.5 Rust as the firmware base&lt;/h3&gt;
&lt;p&gt;In 2024 Microsoft began shipping Pluton firmware on AMD and Intel with what the documentation calls &quot;a Rust-based firmware foundation given the importance of memory safety&quot; (Microsoft Pluton Security Processor, Microsoft Learn [@ms-pluton-learn]). This is, as far as we can tell from primary sources, the most prominent shipping production use of Rust inside an x86 platform security subsystem. It addresses the most common class of TPM firmware bugs, which historically have been C memory-safety issues -- bounds errors, use-after-frees, integer overflows.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Rust eliminates the spatial and temporal memory-safety bugs that dominate CVE counts in C-based firmware. It does not prevent logic bugs, side-channel leaks, or fault-injection vulnerabilities. The faulTPM work, discussed in Section 7, exploits the underlying voltage rail rather than firmware bugs -- and the same physics apply whether the firmware is in C or Rust.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If the SEP&apos;s design philosophy is &quot;small fixed-purpose computer,&quot; the Pluton design philosophy is &quot;in-die TPM 2.0 we can actually patch, written carefully enough that we will not have to patch it often.&quot; Two different bets about which property mattered most.&lt;/p&gt;
&lt;h2&gt;4. The tightly-coupled vs SoC-integrated trade-off&lt;/h2&gt;
&lt;p&gt;So far we have two architectures: SEP as a separate physical core, Pluton as an on-die subsystem. They sound different. They are different. But &quot;separate core&quot; and &quot;on-die subsystem&quot; both refuse the discrete-TPM design where the security chip is &lt;em&gt;off&lt;/em&gt; the SoC and reachable over a motherboard bus. Why did both vendors converge there, and what is the trade-off between SEP-style and Pluton-style integration?&lt;/p&gt;
&lt;h3&gt;4.1 What both reject&lt;/h3&gt;
&lt;p&gt;The discrete TPM 2.0 model is the baseline. A separate chip, often a Nuvoton, Infineon, or ST device on the motherboard [@pulse-tpm-sniff], connected to the platform via LPC, SPI, or I²C. The TCG spec it implements is excellent. The physical placement is the problem.&lt;/p&gt;
&lt;p&gt;Pulse Security&apos;s attack is the canonical demonstration. With &lt;code&gt;lpc_sniffer_tpm&lt;/code&gt; on a $40 FPGA, they probed the LPC bus of a Surface Pro 3 as it booted, captured the bytes the TPM returned for the unsealed Volume Master Key, and used those bytes to decrypt the disk (Pulse Security: TPM Sniffing [@pulse-tpm-sniff]). The TPM was working correctly. The bus was the problem. There is a mitigation -- pre-boot PIN or USB key, so the VMK is bound to something not on the wire -- but the default BitLocker configuration on most enterprise hardware does not enable it.&lt;/p&gt;

The class of physical-access attacks in which an adversary attaches probes to the motherboard bus carrying TPM responses, captures the cleartext key material the TPM legitimately returns, and uses it directly. Defended against by either eliminating the external bus (Pluton, SEP) or by requiring authenticated/encrypted sessions plus pre-boot user authentication (TPM 2.0 parameter encryption, BitLocker TPM+PIN).
&lt;p&gt;Both SEP and Pluton refuse to expose that bus. The keys never appear on an external wire. That is the structural property both architectures buy by being on the SoC.&lt;/p&gt;
&lt;h3&gt;4.2 Tightly-coupled (SEP) vs subsystem-on-die (Pluton)&lt;/h3&gt;
&lt;p&gt;After agreeing on &quot;no external bus,&quot; the two diverge sharply on what &quot;on the SoC&quot; should look like.&lt;/p&gt;

flowchart TD
    subgraph SEPDie[&quot;Apple SoC (A14, M1, M2, etc.)&quot;]
        SEPCore[&quot;SEP core -- own voltage -- own clock -- own ROM&quot;]
        MPE[&quot;Memory Protection Engine&quot;]
        APCore[&quot;Application processor cores&quot;]
        SEPCore -- mailbox --&amp;gt; APCore
        SEPCore --&amp;gt; MPE
    end
    subgraph PlutonDie[&quot;AMD/Intel/Qualcomm SoC&quot;]
        PSub[&quot;Pluton subsystem -- (may share voltage rail -- with security die area)&quot;]
        PSP[&quot;Vendor security subsystem -- (AMD PSP / Intel CSME)&quot;]
        Cores[&quot;Application cores&quot;]
        PSub -- on-die fabric --&amp;gt; Cores
        PSub -.runs on top of.-&amp;gt; PSP
    end
&lt;p&gt;The SEP is a separate physical core with its own clock, its own voltage rail, and crucially no shared microarchitecture with the application processor. That last point matters because the family of cross-thread, cross-core, and frequency-scaling side channels -- Meltdown, Spectre, Foreshadow, Hertzbleed, and their cousins -- generally requires the attacker code to be co-resident on the same physical pipeline or share a microarchitectural resource. The SEP simply does not share execution resources with potentially hostile code on the application cores (Apple Platform Security: Secure Enclave Processor [@apple-sep-chapter]).&lt;/p&gt;
&lt;p&gt;Pluton-on-AMD is implemented inside the AMD Platform Security Processor environment. Pluton-on-Intel is implemented inside Intel&apos;s Converged Security and Management Engine. These are pre-existing vendor security subsystems Microsoft layered Pluton atop. The Pluton subsystem is logically separate, with its own firmware and its own key store. Whether it has a fully separate physical voltage rail and clock domain from the application cores is not something the public documentation states clearly, and the answer almost certainly varies by silicon partner.This is a place where the comparison is hardest to make crisply. Apple has a single answer because Apple makes one SoC family. Microsoft has three answers because Pluton lives inside whatever security subsystem AMD, Intel, or Qualcomm already provide. The detail-level guarantees vary.&lt;/p&gt;
&lt;h3&gt;4.3 The SGX cautionary tale&lt;/h3&gt;
&lt;p&gt;There is a third design point worth flagging because both vendors implicitly chose against it: putting the trusted execution environment &lt;em&gt;inside&lt;/em&gt; the application CPU cores themselves. Intel SGX, introduced in 2015 [@intel-sgx], did exactly that. Enclaves were memory regions with hardware access control inside the same cores running ordinary software.&lt;/p&gt;
&lt;p&gt;SGX was a beautiful idea and an academic catastrophe. Foreshadow, ZombieLoad, SgxPectre, Plundervolt, and a long sequence of related attacks reused the side-channel-rich microarchitecture of modern Intel cores to leak enclave contents. Intel deprecated SGX on most consumer processors in 2022 [@intel-sgx-deprecation], retaining it on server SKUs for confidential computing scenarios where the threat model is different.&lt;/p&gt;
&lt;p&gt;The lesson is something both Apple and Microsoft seem to have absorbed: a trusted execution environment that shares any microarchitectural state with the workloads it must protect from is structurally compromised, because microarchitecture is too rich and too leaky to perfectly isolate. The SEP rejects this by living on its own core. Pluton rejects it by living in a separate subsystem.&lt;/p&gt;

Arm TrustZone, introduced in Arm v7 around 2008 [@arm-trustzone], pioneered the &quot;secure world / normal world&quot; split inside a single core. TrustZone is closer to SGX than it is to SEP or Pluton in this respect: secure world and normal world share the same physical pipeline. TrustZone influenced both SEP and Pluton in the sense that &quot;you need a separate execution environment for security code&quot; became table stakes; both companies then moved that environment off the application core entirely.
&lt;h3&gt;4.4 The trade-off in one sentence&lt;/h3&gt;
&lt;p&gt;A dedicated core (SEP) maximises side-channel resistance and minimises attack surface, at the cost of vendor proprietary lock-in and zero portability. An on-die subsystem (Pluton) preserves the TPM 2.0 standard, ships on three silicon vendors, and inherits the security guarantees of the underlying vendor security subsystem -- whose history, as we will see, is less reassuring than Apple&apos;s monopoly on its own silicon.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; SEP wins on isolation. Pluton wins on portability. Neither wins on both. The choice you make at the SoC level constrains every API, every patch path, and every threat-model claim downstream.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;5. The APIs developers actually call&lt;/h2&gt;
&lt;p&gt;Architectures are interesting. What ships in production code is what determines whether developers use these things correctly. The API surfaces are wildly different, and the difference matters.&lt;/p&gt;
&lt;h3&gt;5.1 Apple: SecKey, App Attest, LocalAuthentication&lt;/h3&gt;
&lt;p&gt;On Apple platforms, the SEP is exposed through a handful of frameworks. The most common entry point is &lt;code&gt;SecKey&lt;/code&gt; in the Security framework, with key attributes that bind the key to the SEP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kSecAttrTokenIDSecureEnclave&lt;/code&gt; makes the key SEP-resident.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kSecAttrAccessControl&lt;/code&gt; with &lt;code&gt;LAContext&lt;/code&gt; adds biometric or passcode gating.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kSecAttrIsPermanent&lt;/code&gt; puts it in the Keychain [@apple-keychain].&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key itself never leaves the SEP. The application receives an opaque handle. Asking the framework to sign a message turns into a mailbox call to the SEP, which evaluates the access-control policy (e.g., &quot;the user must FaceID-authenticate within the last five seconds&quot;) and either signs or refuses.&lt;/p&gt;
&lt;p&gt;{`
// This is a conceptual model of what happens when iOS code asks the SEP
// to sign a message with a key whose private half lives inside the SEP.
// The real code is Swift + Security.framework; this JS captures the logic.&lt;/p&gt;
&lt;p&gt;function generateSEPKey(accessControl) {
  // SEP generates the keypair internally
  const priv = sepRandomBytes(32);            // never leaves SEP
  const pub  = ecP256ScalarMul(priv, BASE_G);
  const blob = aesKeyWrap(sepUIDDerivedKey, priv);
  return { publicKey: pub, handle: opaque(blob), policy: accessControl };
}&lt;/p&gt;
&lt;p&gt;function sign(handle, message) {
  const policy = lookupPolicy(handle);
  // SEP enforces the access control: must the user have authenticated recently?
  if (!policy.satisfied(LAContext.current)) {
    return { error: &quot;user authentication required&quot; };
  }
  const blob = lookup(handle);
  const priv = aesKeyUnwrap(sepUIDDerivedKey, blob);
  return ecdsaP256Sign(priv, sha256(message));
}&lt;/p&gt;
&lt;p&gt;const k = generateSEPKey({ requireBiometric: true });
console.log(&quot;Public key returned to the app:&quot;, k.publicKey);
console.log(&quot;Private key location: inside SEP, never accessible to app code&quot;);
`}&lt;/p&gt;
&lt;p&gt;Beyond &lt;code&gt;SecKey&lt;/code&gt;, the SEP underpins:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LocalAuthentication&lt;/strong&gt; -- Face ID / Touch ID matching happens inside the SEP. The biometric template never leaves the SEP, and the application is only told yes/no.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeviceCheck and App Attest&lt;/strong&gt; -- documented in the Apple Platform Security Guide [@apple-platform-security]. App Attest gives each app installation a SEP-rooted asymmetric key whose certificate chains to Apple&apos;s CA, letting servers verify that a sign-up came from a genuine app on a genuine Apple device.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Protection / FileVault&lt;/strong&gt; -- per-file class keys are wrapped under SEP-held intermediate keys.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apple Pay&lt;/strong&gt; -- payment credentials are SEP-resident and gated on biometric/passcode authentication.&lt;/li&gt;
&lt;/ul&gt;

Apple&apos;s hardware-backed app integrity service [@apple-platform-security]. Each install of each app receives a unique SEP-resident key whose attestation certificate, signed by Apple, lets a back-end server verify that the request originates from a non-tampered installation. The closest cross-platform analogue is Google Play Integrity API; the closest discrete-TPM analogue is TPM 2.0 attestation, but App Attest is more strongly bound to the specific app installation.
&lt;h3&gt;5.2 Microsoft: TBS, NCrypt, Pluton-rooted credentials&lt;/h3&gt;
&lt;p&gt;On Windows, the TPM 2.0 personality means Pluton is reached through the same APIs as any TPM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TPM Base Services (TBS)&lt;/strong&gt; -- the low-level Win32 API for sending TPM 2.0 commands.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNG (Cryptography Next Generation)&lt;/strong&gt; with &lt;code&gt;NCrypt&lt;/code&gt; and the Microsoft Platform Crypto Provider -- the higher-level key API that asks &quot;store this key in the TPM, gated on the user&apos;s PIN.&quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BCryptDecrypt / BCryptSignHash&lt;/strong&gt; as the in-process crypto API on top.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The DPAPI key-protection model -- file/blob protection rooted in user logon credentials -- has a CNG variant documented as CNG DPAPI [@ms-cng-dpapi] that integrates with TPM-rooted hierarchies. Above that sit the consumer-facing systems: BitLocker for disk encryption [@ms-bitlocker], Windows Hello for credential storage, Credential Guard for isolating LSA secrets in a virtualization-based security enclave, and Microsoft Entra ID conditional access for cloud sign-in.&lt;/p&gt;

The TCG TPM 2.0 Library Specification [@tcg-tpm2] defines the command set, object hierarchy, and key-handling semantics of TPM 2.0 chips. Commands include `TPM2_CreatePrimary`, `TPM2_Create`, `TPM2_Load`, `TPM2_Seal`, `TPM2_Unseal`, `TPM2_Quote`, and `TPM2_Certify`. Both discrete TPMs and Pluton implement this command set.

flowchart LR
    subgraph Apple[&quot;Apple application stack&quot;]
        App[App] --&amp;gt; Sec[&quot;Security.framework -- (SecKey, SecAccessControl)&quot;]
        App --&amp;gt; LA[&quot;LocalAuthentication -- (LAContext)&quot;]
        App --&amp;gt; DC[&quot;DeviceCheck / App Attest&quot;]
        Sec --&amp;gt; Mailbox[SEP mailbox]
        LA --&amp;gt; Mailbox
        DC --&amp;gt; Mailbox
        Mailbox --&amp;gt; SEPSvc[SEP services]
    end
    subgraph MS[&quot;Windows application stack&quot;]
        WApp[App] --&amp;gt; NCrypt[&quot;CNG / NCrypt&quot;]
        WApp --&amp;gt; Hello[&quot;Windows Hello&quot;]
        WApp --&amp;gt; Entra[&quot;Entra ID / Health Attestation&quot;]
        NCrypt --&amp;gt; TBS[&quot;TPM Base Services&quot;]
        Hello --&amp;gt; TBS
        Entra --&amp;gt; TBS
        TBS --&amp;gt; Pluton[&quot;Pluton (TPM 2.0 personality)&quot;]
        Entra --&amp;gt; PlutonMS[&quot;Pluton MS-rooted services&quot;]
    end
&lt;h3&gt;5.3 What the API shape tells you&lt;/h3&gt;
&lt;p&gt;The SEP API forces every call into the small set of operations the SEP firmware implements. There is no &lt;code&gt;TPM2_PolicyLocality(2)&lt;/code&gt; equivalent or &lt;code&gt;TPM2_PolicyOR&lt;/code&gt; combinator on the SEP. You ask for a key, you ask for a signature, you ask for a biometric match, and that is mostly the surface. From a developer&apos;s point of view, the SEP feels like a very small set of well-defined building blocks.&lt;/p&gt;
&lt;p&gt;The TPM 2.0 API, by contrast, is enormous. There are several hundred commands. The TPM has policy expressions, sessions, hierarchies (storage, endorsement, platform, owner), and a half-dozen attestation primitives. This expressiveness was the right call for an open standard -- the TCG had to accommodate every conceivable use case across two decades. It also means that &quot;wrote TPM 2.0 code correctly&quot; is a measurable engineering skill rather than a default.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; On Apple platforms, prefer &lt;code&gt;kSecAttrTokenIDSecureEnclave&lt;/code&gt; with &lt;code&gt;kSecAccessControl&lt;/code&gt; rather than rolling your own key handling. On Windows, prefer CNG with Microsoft Platform Crypto Provider over raw TBS unless you specifically need a TPM command not exposed by CNG. Both vendors put their good defaults in the higher-level APIs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;5.4 A note on what is &lt;em&gt;not&lt;/em&gt; exposed&lt;/h3&gt;
&lt;p&gt;Neither platform exposes the device&apos;s per-silicon root key to applications. On Apple, the UID is sealed inside the SEP; on Microsoft, the Pluton Endorsement Key is unique per chip but applications interact only with the AKs (Attestation Keys) derived from it. This is deliberate: per-device permanent keys, if exposed, enable cross-service tracking. The exposed primitives are either per-app/per-installation (App Attest), per-session (TPM2_Quote with a fresh AK), or ephemeral (a freshly-generated SEP key).&lt;/p&gt;
&lt;p&gt;That choice maps to a privacy property we will pick up in the next section: how each platform answers &quot;prove this is a real device&quot; without becoming &quot;track this specific user across every service.&quot;&lt;/p&gt;
&lt;h2&gt;6. Identity, attestation, and the privacy problem&lt;/h2&gt;
&lt;p&gt;The deepest difference between Apple and Microsoft is not architectural. It is the answer each one gives to a question that sounds simple: &lt;em&gt;what does it mean to prove a device is real?&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;6.1 Why attestation is hard&lt;/h3&gt;
&lt;p&gt;A naive answer is: burn a unique identifier into every chip and have the chip sign messages with the corresponding private key. That works for proof. It also creates a per-device pseudonym that every service can recognise and correlate. The naive answer is a surveillance disaster.&lt;/p&gt;
&lt;p&gt;A better answer keeps the unforgeability of &quot;this signature came from a real device&quot; and adds an unlinkability property: the signature does not identify &lt;em&gt;which&lt;/em&gt; device, only that it is genuine. This is what cryptographers call anonymous attestation, and the canonical construction is DAA.&lt;/p&gt;

A class of cryptographic protocols that let a hardware token sign messages in a way that proves it belongs to a group of legitimate devices without revealing *which* device. Introduced by Brickell, Camenisch, and Chen in 2004 [@brickell-2004-daa] as part of the TPM 1.2 specification work, with the elliptic-curve variant ECDAA standardized for TPM 2.0. See the Wikipedia overview [@daa-wikipedia] for the protocol skeleton.
&lt;p&gt;The mathematics of DAA rests on group signatures with selective linkability. A device runs the join protocol once with a group issuer (the &quot;Privacy CA&quot; or analogous authority) and receives a credential. It can then prove, via a Camenisch-Lysyanskaya-style signature of knowledge, that it holds such a credential without revealing which one. With ECDAA, the join and signing operations are roughly the cost of a couple of elliptic-curve multiplications.&lt;/p&gt;
&lt;p&gt;The privacy property comes with caveats. Verifiers can opt into &quot;basename&quot; linkability, where signatures from the same device addressed to the same service are linkable -- letting a service recognise a returning user without letting it correlate across services. The math has been deployed in TPM 2.0 since the 2014 spec.&lt;/p&gt;
&lt;h3&gt;6.2 The Microsoft path: TPM 2.0 attestation plus Microsoft-rooted services&lt;/h3&gt;
&lt;p&gt;Pluton inherits TPM 2.0&apos;s attestation primitives. The standard flow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Generate an Attestation Key (AK) inside the TPM, with a private half that never leaves.&lt;/li&gt;
&lt;li&gt;Certify the AK to a Privacy CA (or via ECDAA) using the Endorsement Key.&lt;/li&gt;
&lt;li&gt;Hash the boot configuration into Platform Configuration Registers (PCRs) during measured boot.&lt;/li&gt;
&lt;li&gt;Have the relying party send a fresh nonce.&lt;/li&gt;
&lt;li&gt;Issue &lt;code&gt;TPM2_Quote(AK, PCR_mask, qualifying_data=nonce)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Send the quote, the AK certificate, and the boot event log to the relying party.&lt;/li&gt;
&lt;li&gt;The relying party replays the event log, checks that the replayed PCRs match the quoted ones, validates the AK certificate chain, and validates the signature.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;attest(nonce, pcr_mask):
    AK = TPM2_Create(parent=EK, type=signing)
    AK_cert = privacy_CA.certify(AK_pub, EK_cert)    # or ECDAA group sig
    quote = TPM2_Quote(AK, pcr_mask, qualifying_data=nonce)
    return (quote, AK_cert, event_log)

verify(quote, AK_cert, event_log, expected_pcrs):
    assert privacy_CA.verify(AK_cert)
    assert ECDSA_verify(AK_cert.pub, quote.sig, quote.body)
    assert quote.qualifying_data == nonce
    assert replay_log(event_log) == quote.pcrs == expected_pcrs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That covers raw TPM 2.0. Microsoft layers on top a service called &lt;strong&gt;Device Health Attestation&lt;/strong&gt; that does the verifier work as a cloud service, supplying Reference Integrity Manifests for known-good Microsoft-signed boot states. Microsoft Entra ID conditional access policies can then refuse sign-in to devices whose Pluton-signed health attestation does not match an expected baseline (Microsoft Pluton Security Processor, Microsoft Learn [@ms-pluton-learn]).The interesting privacy property here is that ECDAA-grade unlinkability is &lt;em&gt;available&lt;/em&gt; through TPM 2.0, but Microsoft&apos;s deployed services tend to use Privacy-CA-style flows where the AK certificate is well-defined and reusable. Whether a given Microsoft attestation flow is anonymous-unlinkable or pseudonymous-linkable is a per-service detail rather than a platform property.&lt;/p&gt;
&lt;h3&gt;6.3 The Apple path: rooted in Apple&apos;s CA, scoped per app&lt;/h3&gt;
&lt;p&gt;Apple&apos;s DeviceCheck and App Attest [@apple-platform-security] take a different approach. App Attest gives each &lt;em&gt;installation of each app&lt;/em&gt; a unique SEP-resident key. The corresponding attestation certificate chains to Apple&apos;s CA. Apps prove integrity to their own back-end servers by having the server send a nonce, the SEP signing the nonce with the per-install key, and Apple&apos;s CA chain validating that the key was issued on a genuine Apple device.&lt;/p&gt;
&lt;p&gt;The privacy property is scoped differently from DAA. The key is per-installation, which means uninstalling and reinstalling the app generates a new key with no link to the old one. Across different apps on the same device, the keys are independent -- so two apps cannot collude with their respective back-ends to detect they are on the same phone. The trade-off: there is no formal anonymity within a group; the key is identifiable to its single installation, but that installation is fresh each install.&lt;/p&gt;
&lt;p&gt;DeviceCheck is older and weaker. It gives an app a two-bit value the developer can set per device, retrievable on future runs. It is fraud-signal infrastructure, not cryptographic proof.&lt;/p&gt;

DAA is a group-signature scheme; Apple&apos;s App Attest is a per-installation public-key scheme certified by Apple. They are not the same primitive. DAA gives &quot;I am in this group of devices&quot; without revealing which device. App Attest gives &quot;I am this specific installation, and Apple says it is genuine.&quot; The privacy distinction matters when the threat is correlation across services rather than correlation within a single service.
&lt;h3&gt;6.4 Where the two converge: FIDO2/WebAuthn&lt;/h3&gt;
&lt;p&gt;Both platforms expose their hardware-backed credentials through a single cross-platform standard: FIDO2/WebAuthn. When a browser asks &quot;create a credential bound to this origin, hardware-resident if possible,&quot; the underlying operating system asks SEP or Pluton to generate the key. The resulting public-key credential, signed by the device&apos;s attestation key, is what the relying party verifies (FIDO Alliance [@fido-alliance]).&lt;/p&gt;

sequenceDiagram
    participant Browser
    participant OS as OS Authenticator
    participant HW as SEP or Pluton
    participant RP as Relying Party
    RP-&amp;gt;&amp;gt;Browser: Challenge nonce, RP ID
    Browser-&amp;gt;&amp;gt;OS: navigator.credentials.create()
    OS-&amp;gt;&amp;gt;HW: Generate key bound to RP ID + user gesture
    HW--&amp;gt;&amp;gt;OS: Public key + attestation
    OS--&amp;gt;&amp;gt;Browser: Public key + signed attestation
    Browser-&amp;gt;&amp;gt;RP: Registration response
    Note over RP: Stores public key
    RP-&amp;gt;&amp;gt;Browser: Authentication challenge
    Browser-&amp;gt;&amp;gt;OS: navigator.credentials.get()
    OS-&amp;gt;&amp;gt;HW: Sign challenge (user gesture)
    HW--&amp;gt;&amp;gt;OS: Signature
    OS--&amp;gt;&amp;gt;Browser: Assertion
    Browser-&amp;gt;&amp;gt;RP: Authentication response
    RP-&amp;gt;&amp;gt;RP: Verify signature with stored pubkey
&lt;p&gt;FIDO2/WebAuthn is the most boring and most important fact about modern hardware roots of trust: from the application&apos;s point of view, you no longer need to know whether you are talking to SEP or Pluton or a discrete TPM. The same JavaScript runs on all of them. We will return to FIDO2 in Section 8.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Attestation is where Apple and Microsoft diverge most sharply on privacy philosophy. Microsoft uses TPM 2.0 with anonymous-group cryptography available but not always deployed. Apple uses per-installation keys rooted at Apple&apos;s CA. FIDO2/WebAuthn is the layer where both meet the developer at the door.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;7. What has actually broken&lt;/h2&gt;
&lt;p&gt;Architecture is a story you tell about a system. Attacks are the system&apos;s reply. Both SEP and Pluton have a public attack history; reading it carefully is the fastest way to understand the real threat model rather than the marketing one.&lt;/p&gt;
&lt;h3&gt;7.1 checkm8 and the unpatchable boot ROM&lt;/h3&gt;
&lt;p&gt;In late 2019, the researcher axi0mX published &lt;code&gt;ipwndfu&lt;/code&gt; [@ipwndfu], an exploit against a use-after-free in the SecureROM USB DFU stack of Apple SoCs from A5 through A11. The advisory carries CVE-2019-8900 [@nvd-checkm8] and CERT/CC VU#941987 [@cert-checkm8]. Because SecureROM is mask ROM -- etched into the silicon, immutable -- Apple cannot patch it. The only mitigation was new silicon. A12 and later are immune; earlier devices are permanently affected.&lt;/p&gt;
&lt;p&gt;What checkm8 buys an attacker is application-processor code execution at boot time, on a device they have physical access to. That is significant. It enables forensically sound extraction tooling -- the Elcomsoft writeup walks through exactly which iPhone models and iOS versions are supported [@elcomsoft-checkm8]. It also covers the Apple T2 chip used in 2018-2020 Intel Macs [@apple-a-series], which is built on the same A10-family silicon.&lt;/p&gt;
&lt;p&gt;But checkm8 does not, by itself, break SEP secrets. The SEP is still gated by the device passcode and the data-protection class keys. An attacker with checkm8 can run code on the AP, but they still need the passcode to unlock the user&apos;s protected data (CERT/CC VU#941987 [@cert-checkm8]). The forensic value of checkm8 comes from being able to brute-force passcodes more effectively, capture keyboard state, and access classes of data not bound to a passcode -- not from extracting SEP-held keys directly.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If your organization still has 2018-2020 Intel Macs (T2-bearing) in service, they remain physical-access-attackable. The exploit is mature, the tooling is public, and the silicon will never be patched. For high-value users, retire T2 hardware in favor of Apple Silicon Macs (M1 and later, which use A14-derived SoCs immune to checkm8) (Elcomsoft: using checkm8 [@elcomsoft-checkm8]).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Pangu team&apos;s &quot;Blackbird&quot; SEPROM exploit, presented at MOSEC 2019, reportedly compromised SEPROM on A10/A10X devices. Apple has not published a detailed advisory for that work and the original presentation materials are not in the verified-sources list, so we mention it only by way of acknowledging that even SEP boot ROMs have a finite security lifetime. The architectural point stands: any unpatchable ROM becomes a permanent liability when a bug is found in it.&lt;/p&gt;
&lt;h3&gt;7.2 LPC sniffing and discrete TPMs&lt;/h3&gt;
&lt;p&gt;We opened with this attack and it deserves a second pass in the context of Pluton&apos;s design. The Pulse Security writeup [@pulse-tpm-sniff] demonstrates extraction of the BitLocker Volume Master Key from a Microsoft Surface Pro 3 (TPM 2.0) and a Lenovo laptop (TPM 1.2) using a $40 FPGA on the LPC bus. The attack requires physical access for under an hour and modest soldering skill.&lt;/p&gt;
&lt;p&gt;This is the textbook case where Pluton is structurally better than discrete TPMs: there is no external bus to sniff because the security subsystem lives on the SoC die. The same attack against a Pluton-enabled CPU is not just hard, it is geometrically impossible. There is no bus to attach probes to.&lt;/p&gt;
&lt;p&gt;That is not the same as &quot;Pluton is unattackable&quot; -- it just means this specific attack class is closed.&lt;/p&gt;
&lt;h3&gt;7.3 faulTPM and the AMD PSP&lt;/h3&gt;
&lt;p&gt;The most consequential publication on Pluton-adjacent silicon is Werling, Buhren, Jacob, and Seifert&apos;s 2023 USENIX WOOT paper &quot;faulTPM&quot; [@faultpm]. The attack: voltage fault injection against AMD&apos;s Platform Security Processor (PSP), the TEE on which AMD&apos;s fTPM runs, on Zen 2 and Zen 3 CPUs. The result: full extraction of the fTPM key derivation seed. With that seed, the attackers decrypted all sealed objects regardless of PCR policy or anti-hammering, and recovered the BitLocker VMK on a Lenovo Ideapad. The reproducible attack code is PSPReverse/ftpm_attack on GitHub [@faultpm-repo].&lt;/p&gt;
&lt;p&gt;Several careful observations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The published attack targets non-Pluton AMD fTPM.&lt;/strong&gt; Pluton-on-AMD is a separate code path; faulTPM as published does not directly extract Pluton state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pluton-on-AMD runs in the PSP environment.&lt;/strong&gt; The underlying TEE that faulTPM compromises is the same TEE Pluton-on-AMD rides on. Whether the additional hardening Pluton adds is sufficient to defeat fault injection at the PSP level is an open empirical question.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There is no published voltage-glitch attack against Microsoft Pluton specifically as of May 2026&lt;/strong&gt; in the verified sources surveyed. Absence of evidence is not evidence of absence; serious researchers are reportedly working on it.&lt;/li&gt;
&lt;/ul&gt;

A physical attack class in which the attacker briefly reduces or perturbs the supply voltage to a target chip at a precisely timed moment, causing it to mis-execute an instruction in a controlled way. With sufficient practice, VFI can be used to skip authentication checks, leak intermediate values, or corrupt key derivation. Defenses include redundant voltage sensors, double-execution of sensitive operations, and physically separating the voltage domain of the security subsystem -- mitigations Apple alludes to for SEP and Microsoft alludes to for Pluton, but neither vendor publishes a complete defensive model.

If your adversary is a state-level laboratory with \$50K of equipment and a few hours of physical access, no commodity hardware root of trust on the market today is fully resistant to fault injection. The realistic question is &quot;how much does extracting the key cost, and is that cost above the value of what is protected?&quot; For consumer threat models, faulTPM is exotic; for high-value enterprise or dissident use cases, it is in scope.
&lt;h3&gt;7.4 What is &lt;em&gt;not&lt;/em&gt; known to be broken&lt;/h3&gt;
&lt;p&gt;Modern SEP (A14+/M-series) has no publicly disclosed extraction attack as of the May 2026 verified sources reviewed. The combination of dedicated core, MPE with anti-replay, lower clock, and SSC-backed replay protection has held up. This is consistent with -- but does not prove -- the architectural claim that the dedicated-core design closes the side-channel and co-execution attack surface.&lt;/p&gt;
&lt;p&gt;Pluton with the 2024+ Rust firmware foundation has no publicly disclosed direct extraction attack. The faulTPM family of attacks remains an open concern at the PSP layer; the LPC bus class is closed by design; firmware bugs are reduced (not eliminated) by the move to memory-safe code.&lt;/p&gt;

flowchart TD
    A[&quot;Attack class&quot;] --&amp;gt; B{&quot;Discrete TPM&quot;}
    A --&amp;gt; C{&quot;AMD fTPM&quot;}
    A --&amp;gt; D{&quot;Pluton&quot;}
    A --&amp;gt; E{&quot;Apple SEP A14+&quot;}
    B --&amp;gt; B1[&quot;LPC sniffing: yes (Pulse Security)&quot;]
    B --&amp;gt; B2[&quot;Firmware bug: rare patches&quot;]
    C --&amp;gt; C1[&quot;faulTPM: full extraction&quot;]
    C --&amp;gt; C2[&quot;Patches: BIOS only&quot;]
    D --&amp;gt; D1[&quot;LPC sniffing: not applicable&quot;]
    D --&amp;gt; D2[&quot;faulTPM-like on PSP: open&quot;]
    D --&amp;gt; D3[&quot;Patches: Windows Update + capsule&quot;]
    E --&amp;gt; E1[&quot;checkm8 on A5-A11: AP code exec&quot;]
    E --&amp;gt; E2[&quot;Direct SEP extraction A14+: none public&quot;]
    E --&amp;gt; E3[&quot;Patches: iOS/macOS update, mask ROM never&quot;]
&lt;p&gt;The honest summary is that as you move from discrete TPMs to fTPMs to Pluton to SEP, the attack surface shrinks but the residual attacks get more expensive rather than disappearing. The faulTPM line is still the academic state of the art in showing this.&lt;/p&gt;
&lt;h2&gt;8. Cross-platform standards: the layer where the divide gets papered over&lt;/h2&gt;
&lt;p&gt;If you are a web developer in 2026 and a user asks &quot;how do I sign into your site with my Touch ID or my Windows Hello fingerprint?&quot; the answer is the same in either case: WebAuthn. The standard does not care which hardware root of trust the OS happens to expose underneath.&lt;/p&gt;
&lt;h3&gt;8.1 FIDO2/WebAuthn as the lingua franca&lt;/h3&gt;
&lt;p&gt;The FIDO Alliance [@fido-alliance] defines the protocols. WebAuthn is the W3C JavaScript API; CTAP (Client to Authenticator Protocol) is the underlying transport between the browser/OS and the authenticator. The authenticator can be a USB security key, a phone, a built-in platform authenticator backed by SEP or Pluton, or something else entirely. The relying party sees the same registration and authentication ceremony in all cases.&lt;/p&gt;
&lt;p&gt;The handful of properties WebAuthn guarantees -- origin binding, user gesture, fresh signature per challenge -- are independent of the silicon underneath. The handful of properties it does &lt;em&gt;not&lt;/em&gt; try to guarantee -- &quot;is this device freshly compromised by a kernel rootkit&quot; -- are not fixable at the protocol layer either; that is what attestation extensions are for.&lt;/p&gt;
&lt;h3&gt;8.2 Where attestation extensions vary&lt;/h3&gt;
&lt;p&gt;WebAuthn defines optional attestation extensions that let a relying party request a hardware-backed proof that the authenticator is genuine. Apple&apos;s attestation through WebAuthn rides on App Attest infrastructure; Microsoft&apos;s rides on TPM 2.0 attestation. The receipts differ in format and certificate chain, but the higher-level question &quot;does the public key come from genuine hardware&quot; gets answered on both platforms.&lt;/p&gt;
&lt;p&gt;For most relying parties, the cross-platform truth is simpler than the underlying mechanics: ask for a hardware-backed credential, accept the WebAuthn response, validate the signature, and let the platform handle what kind of silicon was involved.&lt;/p&gt;

WebAuthn looks like it should be the climax of the article. From an architecture perspective, it is the anticlimax. The whole point is that, at the application layer, SEP and Pluton are interchangeable. That is what the standard is for. The differences resurface only when you care about device-class attestation or about the privacy property of the attestation key -- both of which are extension-level concerns rather than core-protocol concerns.
&lt;h3&gt;8.3 TPM 2.0 as the other lingua franca&lt;/h3&gt;
&lt;p&gt;TPM 2.0 itself plays this role in non-web contexts. Enterprise tools that need to attest a device&apos;s boot state -- Microsoft Entra ID conditional access, MDM compliance evaluators, Linux remote attestation frameworks -- speak TPM 2.0. Pluton exposes the TPM 2.0 wire protocol, so these tools work unchanged (Microsoft Pluton as TPM, Microsoft Learn [@ms-pluton-as-tpm]).&lt;/p&gt;
&lt;p&gt;Linux on Apple Silicon (Asahi) currently cannot use SEP for analogous attestation; Apple does not expose the SEP to non-Apple operating systems, and there is no TPM 2.0 emulation. This is a real gap for users who want Apple hardware with a non-Apple OS.&lt;/p&gt;
&lt;h3&gt;8.4 The Android third corner&lt;/h3&gt;
&lt;p&gt;This article is about Apple vs Microsoft, but a complete picture must mention that Android has its own hardware root of trust story rooted in Trusty/TEE-style designs on ARM TrustZone plus discrete StrongBox elements on Pixel-class hardware. Cross-platform mobile development frequently abstracts SEP and Android StrongBox under a common interface (e.g., React Native&apos;s keychain modules), and the privacy and attestation properties of the two systems are not identical but rhyme. Google Play Integrity API plays the role App Attest plays on iOS.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; At the application layer, the right question is not &quot;SEP or Pluton&quot; but &quot;are you using WebAuthn or TPM 2.0 or App Attest at the right point in the trust path.&quot; The platform-specific differences sit beneath those interfaces, and the standards are explicitly designed to be the place developers can stop caring.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;9. Deployment dynamics: who ships what, where, when&lt;/h2&gt;
&lt;p&gt;The two industries have different shapes, and that shapes the deployment story.&lt;/p&gt;
&lt;h3&gt;9.1 Apple: vertical integration, total reach&lt;/h3&gt;
&lt;p&gt;Every shipping Apple device since the iPhone 5s contains a SEP, by virtue of every shipping Apple SoC containing one. That includes (Apple Platform Security: Secure Enclave [@apple-sep-chapter]):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iPhone 5s and later (A7+)&lt;/li&gt;
&lt;li&gt;iPad Air and later&lt;/li&gt;
&lt;li&gt;Apple Watch Series 1 and later&lt;/li&gt;
&lt;li&gt;Apple TV HD and later&lt;/li&gt;
&lt;li&gt;HomePod and HomePod mini&lt;/li&gt;
&lt;li&gt;Apple Vision Pro&lt;/li&gt;
&lt;li&gt;All Apple Silicon Macs (M1, M2, M3, M4 families)&lt;/li&gt;
&lt;li&gt;All Intel Macs from 2018 to 2020 (via the T2 chip)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is no SKU differentiation. There is no &quot;Pro vs Air&quot; split on whether security hardware is present. You buy a current-generation Apple device, you get the SEP. This is the upside of vertical integration: deployment by default.&lt;/p&gt;
&lt;p&gt;The downside is that nothing else gets the SEP. Linux on Apple Silicon -- the Asahi Linux project -- cannot use the SEP for keychain operations, FileVault wrapping, or attestation. Apple does not expose the SEP outside of macOS, iOS, iPadOS, watchOS, tvOS, and visionOS. The hardware is universal in Apple&apos;s product line and absent everywhere else.&lt;/p&gt;
&lt;h3&gt;9.2 Microsoft: open multivendor, opt-in adoption&lt;/h3&gt;
&lt;p&gt;Pluton ships in silicon Microsoft does not make. That changes the deployment story in two ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Vendor availability&lt;/strong&gt;. As of the current Microsoft documentation [@ms-pluton-learn], Pluton is present in AMD Ryzen 6000 and later, Intel Core Ultra Series 2 and later, and Qualcomm Snapdragon 8cx Gen 3 and Snapdragon X Series. Anything older still uses discrete TPM 2.0 or vendor fTPM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OEM enablement&lt;/strong&gt;. The chip can be physically present and disabled in UEFI. Microsoft has been pushing OEMs to ship Pluton enabled by default on Copilot+ PCs, but the universe of laptops is heterogeneous, and the practitioner answer is &quot;check &lt;code&gt;tpm.msc&lt;/code&gt; to see what manufacturer ID is reported.&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Default-enabled-on-shipping-hardware is documented for Surface Laptop 7 and Surface Pro 11 Copilot+ PCs. Various Lenovo ThinkPad Z, Dell Latitude, and HP EliteBook configurations follow (Microsoft Pluton Security Processor, Microsoft Learn [@ms-pluton-learn]). On other devices Pluton may be present but disabled in firmware, falling back to discrete TPM or vendor fTPM.This is a deployment claim that ages quickly. The shipping matrix shifts every six to twelve months as new SoCs come to market and OEMs rev their UEFI defaults. The verification workflow is the same regardless: &lt;code&gt;Get-PnpDevice&lt;/code&gt; and &lt;code&gt;tpm.msc&lt;/code&gt; on the actual hardware tell you what is active.&lt;/p&gt;
&lt;h3&gt;9.3 The patch-channel difference, made concrete&lt;/h3&gt;
&lt;p&gt;Apple ships SEP firmware inside its OS update. When the user installs iOS 19.4 or macOS 16.2, the bundle includes a new sepOS image; the device verifies and loads it during the next boot (Apple Platform Security [@apple-platform-security]).&lt;/p&gt;
&lt;p&gt;Microsoft ships Pluton firmware through Windows Update and UEFI capsules. The OS-driven path lets Microsoft push a firmware refresh to billions of machines without OEM cooperation. The capsule path covers the case where the firmware is needed during early boot before Windows itself is in control.&lt;/p&gt;
&lt;p&gt;Discrete TPMs occupy the third position: firmware updates exist but require an OEM-issued utility that few users ever run. This is why most enterprise TPMs in the field run firmware from 2020 or earlier.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; A serious bug in a discrete TPM chip is, in practice, never fully fixed because the patch never reaches the bulk of deployed devices. A serious bug in Pluton can be patched globally inside a Patch Tuesday cycle. A serious bug in SEP can be patched globally inside an iOS/macOS minor release. The same bug class produces three different incident-response time scales.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;9.4 The economic and political layer&lt;/h3&gt;
&lt;p&gt;Apple controls every step from sand to support page. The benefit is consistency. The cost is that Apple decides what the SEP can and cannot do, with no externally visible audit, and the customer cannot verify the firmware. For the Apple-customer market, that has not been a deal-breaker.&lt;/p&gt;
&lt;p&gt;Microsoft controls the Pluton firmware. The benefit is that one team&apos;s engineering effort propagates across three silicon vendors and thousands of OEM SKUs. The cost is that the OS update channel and the security update channel collapse into one Microsoft-controlled flow. Critics describe this as platform lock-in; supporters describe it as the only way to actually patch the silicon at scale. Both readings have evidence behind them.&lt;/p&gt;

The same patch channel that protects users from unpatched silicon bugs is the patch channel a hypothetical compelled-update scenario would use. There is no commodity product that gives the device owner an independent veto on root-of-trust firmware updates.
&lt;p&gt;This is a real open problem, not a fictional one. The Trusted Computing Group has a notion of &quot;owner-authorized&quot; TPM hierarchies; Azure Sphere uses a three-key model in which device owner, vendor, and Microsoft all hold signing capabilities for different scopes. Nothing in the commodity consumer space has yet shipped a model where the device owner can veto a vendor-signed firmware update on the security subsystem.&lt;/p&gt;
&lt;h2&gt;10. Where this goes next&lt;/h2&gt;
&lt;p&gt;The honest answer is that the immediate future is more of the same with three new pressures.&lt;/p&gt;
&lt;h3&gt;10.1 Post-quantum migration&lt;/h3&gt;
&lt;p&gt;The cryptographic primitives currently rooted in both platforms -- ECDSA P-256 in the SEP, RSA-2048 and ECDSA in TPM 2.0 -- are not post-quantum-safe. NIST standardized ML-KEM and ML-DSA in FIPS 203 and FIPS 204 in 2024 (the NIST publication URLs are outside our verified-source set, so this paragraph states the timeline at the policy level only). Migrating &lt;em&gt;hardware-fused&lt;/em&gt; attestation roots to post-quantum schemes is genuinely hard because the silicon-burned UID-equivalent keys are baked at fabrication time and cannot easily be replaced.&lt;/p&gt;
&lt;p&gt;The likely path: hardware retains agility at the wrapping layer (the unique chip key) while the attestation key types evolve. TPM 2.0 already supports algorithm agility in the spec, which is the kind of foresight you only appreciate a decade after it was added. SEP&apos;s key wrapping is bespoke; Apple has not published a PQC migration plan in the verified sources reviewed.&lt;/p&gt;
&lt;p&gt;This is a place where the comparison gets uncertain. Both vendors will need to migrate. Neither has shipped a primary post-quantum-rooted attestation flow in their public 2026 documentation as far as we can verify.&lt;/p&gt;
&lt;h3&gt;10.2 Confidential computing convergence&lt;/h3&gt;
&lt;p&gt;The same silicon technologies that build SEP and Pluton are now powering confidential computing -- AMD SEV-SNP, Intel TDX, ARM CCA. These extend the &quot;untrusted host kernel&quot; threat model from disk encryption and credential storage to entire virtual machines. The trust roots of confidential computing currently live in the same chips&apos; security subsystems: AMD&apos;s PSP holds SEV-SNP attestation keys; Intel&apos;s CSME, working with TDX, holds equivalent keys.&lt;/p&gt;
&lt;p&gt;Pluton-on-Intel and Pluton-on-AMD will likely inherit responsibilities here as Microsoft consolidates more of the security subsystem under the Pluton name. Apple has not publicly signaled equivalent ambitions for SEP on the server -- Apple&apos;s server presence is mostly internal.&lt;/p&gt;
&lt;h3&gt;10.3 The AI agent identity problem&lt;/h3&gt;
&lt;p&gt;This is the next decade&apos;s question. When your laptop runs an autonomous AI agent that signs cloud API requests on your behalf, what attests to &lt;em&gt;the agent&apos;s&lt;/em&gt; identity? The current architectures attest to the device and to user gestures, not to the agent. There is no shipping primitive in either SEP or Pluton that says &quot;this signature came from agent X running on device Y, gated by user policy Z that the user actually consented to.&quot;&lt;/p&gt;
&lt;p&gt;A defensible reading is that both vendors are moving slowly toward agent-bound credentials, but neither has published a clean primitive. This is an open design space. We mark it as a place to watch rather than a place where shipping products have answers.&lt;/p&gt;

There is no shipping commodity hardware root of trust with simultaneously: post-quantum attestation, owner-vetoable updates, independently audited firmware, and agent identity. There may not be one for a decade. The current architectures -- SEP and Pluton -- are the strongest commodity options available, and they are still incomplete relative to the design space.
&lt;h3&gt;10.4 The convergence that probably will not happen&lt;/h3&gt;
&lt;p&gt;People periodically suggest that Apple should expose the SEP via TPM 2.0 for cross-platform compatibility, or that Microsoft should ship a dedicated security core like SEP. Neither is likely. Apple&apos;s value proposition rests on vertical integration; opening the SEP to non-Apple operating systems would dilute it. Microsoft&apos;s value proposition rests on multi-vendor compatibility; mandating a SEP-style dedicated core would fragment their silicon partner relationships.&lt;/p&gt;
&lt;p&gt;The structural diversity is here to stay. FIDO2/WebAuthn and TPM 2.0 are how the two systems will continue to interoperate without converging on a single hardware architecture. That is fine. It is even, arguably, good -- a monoculture would be worse for security than a duopoly with different threat-model trade-offs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; The interesting question for the next decade is not whether Apple or Microsoft picks a different silicon strategy. It is whether the cross-platform standards layer -- WebAuthn, TPM 2.0, FIDO2 -- evolves fast enough to expose new security primitives (post-quantum attestation, agent identity, owner-vetoable updates) before any one vendor ships proprietary equivalents.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;11. Frequently asked questions&lt;/h2&gt;

Pluton presents a TPM 2.0 personality to Windows -- so BitLocker, Windows Hello, Credential Guard, and TPM-aware enterprise tools work unchanged -- but it is also more than a TPM 2.0. It exposes Microsoft-rooted services beyond the TCG spec, accepts firmware updates through Windows Update rather than only OEM utilities, lives on the SoC die rather than the motherboard (closing the LPC sniffing attack class), and -- from 2024 -- runs a Rust-based firmware foundation on AMD and Intel platforms (Microsoft Pluton Security Processor, Microsoft Learn [@ms-pluton-learn]).

Two reasons. First, the SEP was designed before TPM 2.0 became the relevant cross-platform standard for Apple&apos;s product mix; SEP&apos;s API surface is bespoke to Apple&apos;s frameworks (`SecKey`, App Attest, LocalAuthentication, Keychain [@apple-keychain]). Second, exposing the SEP via TPM 2.0 would mean making the SEP usable from non-Apple operating systems on Apple hardware -- which is not how Apple ships its platforms. The SEP&apos;s lack of TPM 2.0 personality is a deliberate product decision, not a technical limitation.

No -- not directly. Checkm8 (CVE-2019-8900) [@nvd-checkm8] exploits the SecureROM USB DFU stack on A5-A11 Apple SoCs and the T2 chip in 2018-2020 Intel Macs, giving an attacker with physical access application-processor code execution at boot. The SEP itself remains gated by the device passcode and the data-protection class keys (CERT/CC VU#941987 [@cert-checkm8]). The forensic value of checkm8 is the ability to mount passcode brute-force more effectively and access classes of data not bound to a passcode, not direct SEP-key extraction.

Yes. The Pulse Security TPM-sniffing attack [@pulse-tpm-sniff] works because the discrete TPM returns the Volume Master Key over an external motherboard bus that an attacker can probe. Pluton lives on the SoC die; there is no external bus to attach probes to. The attack is structurally impossible against Pluton-rooted BitLocker. On laptops with discrete TPMs, the mitigation remains BitLocker with pre-boot PIN or USB key authentication.

The published faulTPM attack [@faultpm] targets AMD&apos;s fTPM running in the AMD Platform Security Processor (PSP) on Zen 2 and Zen 3 CPUs, not Pluton specifically. However, Pluton-on-AMD is implemented atop the same PSP environment, so the underlying TEE is fault-attackable in principle. There is no publicly disclosed Pluton-targeted voltage-glitch attack as of May 2026 in the verified sources reviewed; whether Pluton&apos;s additional hardening blocks the fault-injection class is an open empirical question.

For most purposes, no. FIDO2/WebAuthn [@fido-alliance] hides the difference at the API layer -- the same browser code talks to a SEP-backed credential on iOS/macOS and a Pluton-backed credential on Windows. You care about the difference when you need device-class attestation (Apple&apos;s App Attest vs Microsoft&apos;s Device Health Attestation), when privacy of the attestation key matters (Microsoft offers ECDAA-grade options via TPM 2.0; Apple offers per-installation keys), or when you need to support Linux on Apple Silicon (where neither path is available).

Not in any current shipping commodity product. Apple devices ship SEP and no TPM 2.0; Windows devices ship Pluton, discrete TPM, or vendor fTPM but no SEP. The closest historical case is the Apple T2 chip in 2018-2020 Intel Macs [@apple-a-series]: the Mac ran macOS rooted at the T2 SEP, but if you booted Windows on the same hardware via Boot Camp, the T2 still provided the secure-boot anchor though Windows did not interact with it as a TPM.
&lt;h2&gt;12. Closing observation&lt;/h2&gt;
&lt;p&gt;There is a temptation, when comparing two designs as deeply considered as SEP and Pluton, to declare one the winner. Resist that temptation. The two architectures answer different questions for different markets, and the differences are exactly where each one shines. SEP is what you build when you own the silicon, the OS, and the patch channel. Pluton is what you build when you control the OS and the patch channel but need to ride on three other companies&apos; silicon.&lt;/p&gt;
&lt;p&gt;The closing observation worth keeping is the one Pulse Security demonstrated by accident: most hardware security failures are not failures of the math. They are failures of the physical placement and the patch flow. SEP and Pluton both close the historical bus-sniffing attack class. They both retain a slow channel for fault-injection research to chip away at. They both depend on the device owner trusting the vendor&apos;s signing infrastructure. The next big shift -- if it comes -- will probably be in &lt;em&gt;who controls the patch channel&lt;/em&gt;, not in the silicon itself.&lt;/p&gt;
&lt;p&gt;That is the bet to watch.&lt;/p&gt;
&lt;p&gt;&amp;lt;StudyGuide slug=&quot;apple-secure-enclave-vs-microsoft-pluton&quot; keyTerms={[
  { term: &quot;SEP&quot;, definition: &quot;Apple Secure Enclave Processor, a dedicated security coprocessor with its own CPU core, sepOS, and mailbox API.&quot; },
  { term: &quot;sepOS&quot;, definition: &quot;Apple&apos;s L4-microkernel-derived OS running inside the SEP.&quot; },
  { term: &quot;MPE&quot;, definition: &quot;Memory Protection Engine: encrypts and authenticates SEP-bound DRAM cache lines with anti-replay protection.&quot; },
  { term: &quot;SSC&quot;, definition: &quot;Secure Storage Component: external tamper-resistant chip storing monotonic counters used by the SEP for anti-hammering, present from A13 onward.&quot; },
  { term: &quot;Pluton&quot;, definition: &quot;Microsoft&apos;s on-die security subsystem present on supported AMD, Intel, and Qualcomm SoCs; presents a TPM 2.0 personality and accepts firmware updates via Windows Update and UEFI capsule.&quot; },
  { term: &quot;SHACK&quot;, definition: &quot;Microsoft&apos;s name for keys that never leave the protected hardware, even to the Pluton firmware itself.&quot; },
  { term: &quot;TPM 2.0&quot;, definition: &quot;Trusted Computing Group&apos;s standard cryptoprocessor spec, defining PCRs, EK, AK, sealing, and the TPM2_Quote attestation primitive.&quot; },
  { term: &quot;Direct Anonymous Attestation (DAA)&quot;, definition: &quot;Group-signature scheme letting a device prove membership in a class of legitimate devices without revealing which one. ECDAA is the elliptic-curve variant standardized in TPM 2.0.&quot; },
  { term: &quot;App Attest&quot;, definition: &quot;Apple&apos;s per-installation SEP-rooted attestation service; produces a key chained to Apple&apos;s CA proving the running app is genuine on a genuine Apple device.&quot; },
  { term: &quot;checkm8&quot;, definition: &quot;CVE-2019-8900: unpatchable boot-ROM use-after-free affecting A5-A11 Apple SoCs and the T2 chip; gives AP code execution at boot to physical attackers.&quot; },
  { term: &quot;faulTPM&quot;, definition: &quot;USENIX WOOT 2023 voltage-fault-injection attack against AMD&apos;s PSP, extracting fTPM key derivation seed and recovering BitLocker VMK on a Lenovo Ideapad.&quot; },
  { term: &quot;WebAuthn&quot;, definition: &quot;W3C JavaScript API for hardware-backed credentials, implemented over CTAP, that hides SEP-vs-TPM differences from web developers.&quot; }
]} questions={[
  { q: &quot;Why was the Pulse Security TPM-sniffing attack possible on a Surface Pro 3 despite the TPM working correctly?&quot;, a: &quot;The TPM correctly unsealed and returned the BitLocker VMK over the LPC bus on the motherboard; the attacker could read it because the bus is physically exposed. Pluton eliminates this attack class by living on the SoC die.&quot; },
  { q: &quot;Why does Apple ship the SEP as a separate physical core rather than as an enclave inside the application CPU?&quot;, a: &quot;A separate core eliminates the microarchitectural-side-channel and co-execution attack classes (Meltdown/Spectre/Hertzbleed family) that destroyed Intel SGX. The SEP simply does not share execution resources with potentially hostile code on the application cores.&quot; },
  { q: &quot;What does Pluton&apos;s firmware update model buy that discrete TPMs do not?&quot;, a: &quot;In-field patchability via Windows Update and UEFI capsule, signed by Microsoft. Discrete TPM updates require an OEM utility most users never run, so serious TPM firmware bugs remain unpatched on most deployed devices.&quot; },
  { q: &quot;How does App Attest&apos;s privacy property differ from TPM 2.0 ECDAA?&quot;, a: &quot;App Attest is per-installation: each install of each app gets a unique key chained to Apple&apos;s CA. ECDAA is a group signature: a device proves it belongs to a set of legitimate devices without revealing which one. Different threat models against different correlation adversaries.&quot; },
  { q: &quot;What does faulTPM tell us about the security of Pluton-on-AMD?&quot;, a: &quot;It tells us the underlying AMD PSP TEE that Pluton-on-AMD rides on is fault-attackable. Whether Pluton&apos;s additional hardening blocks the fault-injection class is open; no Pluton-specific extraction attack is publicly disclosed as of May 2026 in the verified sources.&quot; }
]} /&amp;gt;&lt;/p&gt;
</content:encoded><category>hardware-security</category><category>secure-enclave</category><category>pluton</category><category>tpm</category><category>root-of-trust</category><category>attestation</category><category>platform-security</category><author>noreply@paragmali.com (Parag Mali)</author></item><item><title>Pluton: A TPM On Silicon Microsoft Can Patch</title><link>https://paragmali.com/blog/pluton-a-tpm-on-silicon-microsoft-can-patch/</link><guid isPermaLink="true">https://paragmali.com/blog/pluton-a-tpm-on-silicon-microsoft-can-patch/</guid><description>How Microsoft moved the TPM onto the SoC die, ran it on Rust firmware, and patched it through Windows Update -- and what that cost in trust centralisation.</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><content:encoded>
**Microsoft Pluton is the architectural answer to a TPM threat model that broke between 2019 and 2024.** It moves the TPM onto the application SoC die, runs Microsoft-authored Rust firmware on a dedicated TEE, and ships updates through Windows Update -- closing every attack surface that defeated discrete TPM (Andzakovic 2019), Intel PTT (TPM-Fail 2019), and AMD fTPM (faulTPM 2023). Each design choice retires a 2014-2024 attack class and places a new trust in Microsoft: silicon supply chain, firmware compiler, signing key, update channel. The chip is the cheapest part of the system; the cost is a single Microsoft signing key as the trust anchor for every Pluton-equipped Windows 11 client.
&lt;h2&gt;1. The question Microsoft answered architecturally before the prior article posed it&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&quot;The TPM was supposed to be the part of the system you didn&apos;t have to trust anyone for. Twenty-five years later, the trust question is back -- and the answer is now political.&quot;&lt;/em&gt; That was the closing line of the previous article in this series [@prior-tpm-in-windows]. The counterintuitive fact: by the time that question was asked, Microsoft had been shipping its architectural answer to it for twelve years already, inside an Xbox.&lt;/p&gt;
&lt;p&gt;The Xbox One launched in November 2013 with an on-die, Microsoft-signed security processor and a Microsoft-controlled firmware update path. Microsoft&apos;s own announcement seven years later named the lineage explicitly: &lt;em&gt;&quot;the Pluton design was introduced as part of the integrated hardware and OS security capabilities in the Xbox One console released in 2013 by Microsoft in partnership with AMD&quot;&lt;/em&gt; [@ms-pluton-blog-2020]. The November 17, 2020 announcement that Pluton would ship on Windows PCs was not the introduction of a new design. It was a decision to apply a console design pattern to the general-purpose PC, with all the political and supply-chain consequences that come with that decision.&lt;/p&gt;
&lt;p&gt;The prior article ended with three sets of broken engineering. A NZ$40 iCE40 FPGA on an LPC bus defeats discrete TPM in the time it takes a laptop to finish Trusted Boot [@andzakovic-2019-tpm-sniffing]. A network packet defeats Intel PTT through a 5-hour timing side channel against the ECDSA implementation in CSME [@tpmfail-microsite]. A few hours of physical access defeats AMD fTPM via a voltage glitch on the SVI2 power-management bus, walking out with the entire fTPM internal state [@jacob-2023-faultpm]. All three are documented in the prior article&apos;s section 5 and will not be re-derived here.&lt;/p&gt;
&lt;p&gt;This article is what those three results forced into shape. Microsoft&apos;s reply is structural: move the TPM onto the SoC die so the bus disappears; run it on a dedicated TEE so a faulTPM-class glitch cannot drop everything; rewrite the firmware in a memory-safe language so the next decade of TPM-Fail-class CVEs has somewhere shorter to live; and route updates through Windows Update so the patch latency stops being measured in OEM-capsule quarters and starts being measured in Patch Tuesday weeks. Each design choice closes a specific 2014-2024 attack class. Each design choice also names a new trust. &lt;em&gt;The bus is closed by trusting the silicon supply chain. The TEE is dedicated by trusting Microsoft&apos;s chip-level isolation. The firmware is memory-safe by trusting Microsoft&apos;s compiler and SDLC. The update path is fast by trusting Microsoft&apos;s signing key and Windows Update infrastructure.&lt;/em&gt; That is the article in five sentences.&lt;/p&gt;
&lt;p&gt;The route from here is historical, then technical, then practical. Section 2 traces the design pattern from Xbox One (2013) through Project Sopris (2015), the &lt;em&gt;Seven Properties of Highly Secure Devices&lt;/em&gt; paper (2017), Project Cerberus (2017), and Azure Sphere (2018). Section 3 shows why every other architectural option for &quot;where the TPM lives&quot; was systematically broken in public between 2019 and 2024. Section 4 walks the five generations of Microsoft security silicon side by side. Section 5 takes the four design choices in the November 17, 2020 announcement one at a time. Section 6 lists what is shipping in 2026, who has it on by default, and how to verify. Section 7 puts Pluton next to Apple&apos;s Secure Enclave Processor, Google&apos;s Titan M2 / OpenTitan, Caliptra, and the still-shipping Project Cerberus. Section 8 is what Pluton still cannot do, including the worked example of CVE-2025-2884. Section 9 is the open problems Pluton has named but not solved. Section 10 is the Monday-morning checklist. Section 11 is the FAQ and the closing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; A single design pattern -- on-die security processor, Microsoft-signed firmware, online firmware updates -- migrating across product domains for thirteen years until it lands on the general-purpose PC. That migration is the subject of this article. Its cost is the subject of its closing.&lt;/p&gt;
&lt;/blockquote&gt;

gantt
    title Microsoft on-die security silicon 2013-2025
    dateFormat YYYY-MM
    axisFormat %Y
    section Lineage
    Xbox One on-die security processor :2013-11, 2018-12
    Project Sopris (Codename 4x4) :2015-01, 2017-04
    Seven Properties paper (MSR-TR-2017-16) :2017-03, 2017-12
    Project Cerberus (OCP) :2017-11, 2025-12
    Azure Sphere (MT3620, Pluton MCU) :milestone, 2018-04, 1d
    section Pluton on PC
    November 17 2020 announcement :milestone, 2020-11, 1d
    AMD Ryzen 6000 first silicon :milestone, 2022-01, 1d
    Linux 6.3 tpm_crb merged :milestone, 2023-02, 1d
    Caliptra 1.0 (parallel path) :milestone, 2024-04, 1d
    Rust-based firmware foundation :2024-01, 2026-12
    section Stress test
    CVE-2025-2884 (TCG ref code OOB) :milestone, 2025-06, 1d
&lt;p&gt;Where did the design pattern come from, and why was it ready for the PC in 2020 and not earlier?&lt;/p&gt;
&lt;h2&gt;2. Origins -- Xbox One (2013), Sopris (2015), Seven Properties (2017), Cerberus (2017), Azure Sphere (2018)&lt;/h2&gt;
&lt;p&gt;The November 2020 announcement is retroactive. The &lt;em&gt;design&lt;/em&gt; dates to Xbox One in 2013; the &lt;em&gt;name&lt;/em&gt; &quot;Pluton&quot; first appears publicly in April 2018, in an Azure Blog post on the Azure Sphere MCU [@azure-blog-anatomy-secured-mcu]. The five-year gap is the architecture maturing from &quot;console-only thing the SoC team built&quot; to &quot;thing Microsoft Research thinks every device should have.&quot;&lt;/p&gt;
&lt;h3&gt;2013 -- Xbox One&lt;/h3&gt;
&lt;p&gt;A console adversary has full physical access, unlimited time, and an economic incentive measured in hundreds of thousands of pirated units. Microsoft and AMD co-designed the Xbox One SoC with an on-die security subsystem, Microsoft-signed firmware, and a hardware-enforced separation between the Game OS and the System OS. The 2020 Pluton announcement [@ms-pluton-blog-2020] names the lineage explicitly. The architectural shape that the Pluton-on-PC program would later put under TCG TPM 2.0 wire compatibility was already running in production at consumer-console scale by 2014. The motivation matters because it is the &lt;em&gt;only&lt;/em&gt; domain where Microsoft had hands-on experience deploying an on-die security processor against an adversary who owned the hardware. (Note: that the design was driven specifically by RGH-class console-modding adversaries is architectural inference, not a Microsoft statement.)&lt;/p&gt;
&lt;h3&gt;2015 -- Codename 4x4 / Project Sopris&lt;/h3&gt;
&lt;p&gt;In 2015, a small team in Microsoft AI+Research NExT, led by Galen Hunt, began exploring whether the same architectural shape could secure a $4 microcontroller [@msr-blog-azure-sphere]. The internal codename was &lt;em&gt;Codename 4x4&lt;/em&gt; -- a reference to the technical requirements that the chip would have at least 4 MB of RAM and 4 MB of Flash [@msr-blog-azure-sphere]. The Microsoft Research blog post is the surviving primary source on Sopris [@msr-blog-azure-sphere].The &quot;Codename 4x4&quot; name was internal team shorthand. Hunt&apos;s MSR Blog post records both the meaning and the constraint: &lt;em&gt;&quot;This was the origin of the project, internally called &apos;Codename 4x4&apos;, referring to the technical requirements that the chip will have at least 4 MB of RAM and 4 MB of Flash&quot;&lt;/em&gt; [@msr-blog-azure-sphere]. The point was not the storage budget; the point was that a $4 MCU must afford the same architectural properties as a console SoC.&lt;/p&gt;
&lt;h3&gt;March 2017 -- Seven Properties of Highly Secure Devices&lt;/h3&gt;
&lt;p&gt;Hunt, George Letey, and Edmund Nightingale published &lt;em&gt;The Seven Properties of Highly Secure Devices&lt;/em&gt; as Microsoft Research Technical Report MSR-TR-2017-16 in March 2017 [@msr-2017-seven-properties]. The paper makes a single normative claim: &lt;em&gt;&quot;This paper makes two contributions to the field of device security. First, we identify seven properties we assert are required in all highly secure devices&quot;&lt;/em&gt; [@msr-2017-seven-properties]. The seven are: hardware-based root of trust, small trusted computing base, defense in depth, compartmentalisation, certificate-based authentication, &lt;em&gt;renewable security&lt;/em&gt;, and failure reporting. Property #6 is the one the rest of this article turns on. &lt;em&gt;Renewable security via online firmware updates&lt;/em&gt; is precisely the property that distinguishes Pluton-on-PC from a 2014 dTPM. The chip is allowed to be wrong, as long as the chip can be made right again, fast.&lt;/p&gt;

A 2017 Microsoft Research framework (Hunt, Letey, Nightingale; MSR-TR-2017-16) listing the architectural properties any &quot;highly secure device&quot; must satisfy: hardware-based root of trust, small TCB, defense in depth, compartmentalisation, certificate-based authentication, *renewable security via online updates*, and failure reporting [@msr-2017-seven-properties]. Renewable security is the property the Pluton-on-PC update path operationalises; it also names the new trust the program places in Microsoft.
&lt;h3&gt;November 9, 2017 -- Project Cerberus&lt;/h3&gt;
&lt;p&gt;Microsoft announced Project Cerberus at the OCP Summit on November 9, 2017 [@siliconangle-2017-cerberus]. Kushagra Vaid, then Microsoft Azure GM, described the architecture as &lt;em&gt;&quot;a cryptographic microcontroller running secure code which intercepts accesses from the host to flash over the SPI bus (where firmware is stored), so it can continuously measure and attest these accesses to ensure firmware integrity&quot;&lt;/em&gt; [@siliconangle-2017-cerberus]. Microsoft contributed a five-PDF specification set to OCP under Project Olympus [@ocp-cerberus]: Architecture Overview, Challenge Protocol, Firmware Update, Host Processor Firmware Requirements, and Processor Cryptography. The reference implementation lives at &lt;code&gt;Azure/Project-Cerberus&lt;/code&gt; on GitHub [@azure-cerberus-github] -- platform-agnostic core, FreeRTOS and Linux ports, &lt;em&gt;&quot;designed to be a hardware root of trust (RoT) for server platforms&quot;&lt;/em&gt; [@azure-cerberus-github]. Microsoft Learn describes Cerberus as &lt;em&gt;&quot;a NIST 800-193 compliant hardware root-of-trust with an identity that cannot be cloned&quot;&lt;/em&gt; [@ms-learn-cerberus] [@nist-sp-800-193]. This was Microsoft&apos;s first public commitment to publishing a hardware-RoT design and to running it in production at fleet scale.&lt;/p&gt;
&lt;p&gt;Cerberus matters here for what it &lt;em&gt;cannot&lt;/em&gt; do, not what it can. It is a discrete chip. It needs board area, a BOM line, and per-OEM design-in cost. It works on a $20,000 server motherboard. It does not work on a $700 ultrabook -- and putting it on one would reintroduce the very external-bus surface that Andzakovic 2019 showed to be sniffable [@andzakovic-2019-tpm-sniffing]. Cerberus solves the server problem definitively. It does not solve the PC problem, and its existence makes the PC-side need explicit.&lt;/p&gt;
&lt;h3&gt;April 16, 2018 -- Azure Sphere preview at RSA 2018&lt;/h3&gt;
&lt;p&gt;Hunt&apos;s announcement of Azure Sphere at the 2018 RSA Conference is the first public, named appearance of &quot;Pluton.&quot; The Azure Blog launch post promised &lt;em&gt;&quot;custom silicon security technology from Microsoft, inspired by 15 years of experience and learnings from Xbox, to secure this new class of MCUs and the devices they power&quot;&lt;/em&gt; [@azure-blog-2018-azure-sphere]. The companion &lt;em&gt;Anatomy of a Secured MCU&lt;/em&gt; post is the first technical description: &lt;em&gt;&quot;our Pluton Security Subsystem is the heart of our security story&quot;&lt;/em&gt; [@azure-blog-anatomy-secured-mcu]. Three components, one trust anchor: the MediaTek MT3620 MCU with the Pluton subsystem on die; the Microsoft-managed Linux-based Azure Sphere OS; and the Azure Sphere Security Service (AS3) cloud, which signed firmware updates and consumed device attestations. Wikipedia records the general-availability date as February 24, 2020 [@wikipedia-azure-sphere], also describing Pluton as &lt;em&gt;&quot;a Microsoft-designed security subsystem that implements a hardware-based root of trust for Azure Sphere&quot;&lt;/em&gt; [@wikipedia-azure-sphere].&lt;/p&gt;

Each chip includes custom silicon security technology from Microsoft, inspired by 15 years of experience and learnings from Xbox, to secure this new class of MCUs and the devices they power. -- Galen Hunt, Azure Blog, April 16, 2018 [@azure-blog-2018-azure-sphere]
&lt;p&gt;By April 2018, Microsoft had three architectural pieces in production. Xbox One proved the on-die security processor. Project Cerberus proved that Microsoft could publish an open RoT design and operate the back end at hyperscale. Azure Sphere proved that the Pluton block could be licensed onto a third-party SoC, attested to a Microsoft-operated cloud service, and serviced over the air. &lt;em&gt;None of those three pieces was on a Windows PC.&lt;/em&gt;&lt;/p&gt;

flowchart LR
    Xbox[Xbox One 2013&lt;br /&gt;on-die security processor&lt;br /&gt;console form factor]
    Sopris[Project Sopris 2015&lt;br /&gt;4 MB RAM + 4 MB Flash&lt;br /&gt;research prototype]
    Seven[Seven Properties 2017&lt;br /&gt;MSR-TR-2017-16&lt;br /&gt;renewable security]
    Cerberus[Project Cerberus 2017&lt;br /&gt;discrete RoT&lt;br /&gt;server BMC]
    Sphere[Azure Sphere 2018&lt;br /&gt;Pluton-on-MCU&lt;br /&gt;MediaTek MT3620]
    PC[Pluton-on-PC 2020&lt;br /&gt;general-purpose Windows PC]
    Xbox --&amp;gt; Seven
    Sopris --&amp;gt; Seven
    Seven --&amp;gt; Sphere
    Xbox --&amp;gt; Sphere
    Cerberus --&amp;gt; PC
    Sphere --&amp;gt; PC
&lt;p&gt;Microsoft had a working architecture by 2018. Why did it take until November 17, 2020 to put it on a PC, and what changed between 2018 and 2020 that made the PC mandatory?&lt;/p&gt;
&lt;h2&gt;3. The threat model that closed every other door (2019-2024)&lt;/h2&gt;
&lt;p&gt;The answer to &quot;what changed between 2018 and 2020&quot; is that, between 2019 and 2024, every alternative architecture for &lt;em&gt;where the TPM lives&lt;/em&gt; was systematically broken in public. Not by intention. By research. By the time Microsoft made the November 17, 2020 announcement, Pluton-on-PC was the only architectural option that simultaneously closed the bus, contained the TEE blast radius, and gave Microsoft a fast firmware-patch path. This section is the prior article&apos;s section 5, recast as the story Microsoft was watching unfold while the Pluton design was being prepared for PC.&lt;/p&gt;
&lt;h3&gt;March 13, 2019 -- Andzakovic&apos;s $40 LPC sniffer&lt;/h3&gt;
&lt;p&gt;Denis Andzakovic, working at Pulse Security, published an end-to-end attack on the Trusted Boot path of an HP business laptop [@andzakovic-2019-tpm-sniffing]. A NZ$40 iCE40 FPGA, seven wires (LFRAME, LAD0-LAD3, LCLK, GND) soldered to the LPC bus between the CPU and the discrete TPM, the BitLocker Volume Master Key falling off the wire in plaintext during boot. The prior article walks the bit-level details. What matters here is that the November 17, 2020 Pluton announcement names this attack class as motivation: &lt;em&gt;&quot;attackers have begun to innovate ways to attack [the TPM], particularly in situations where an attacker can ... gain physical access to a PC ... target[ing] the communication channel between the CPU and TPM&quot;&lt;/em&gt; [@ms-pluton-blog-2020]. Discrete TPM as a class is broken against a determined adversary with physical access. The bus is the surface.&lt;/p&gt;
&lt;h3&gt;November 12, 2019 -- TPM-Fail&lt;/h3&gt;
&lt;p&gt;Daniel Moghimi and colleagues published &lt;em&gt;TPM-Fail&lt;/em&gt; later in 2019 [@tpmfail-microsite]: timing side channels in the ECDSA implementation in Intel PTT (CVE-2019-11090) and the STMicro ST33 dTPM (CVE-2019-16863). Local key recovery in 4-20 minutes; remote, over the network, in approximately 5 hours. The fixes shipped as firmware patches. The lesson Microsoft took from TPM-Fail is not in the bug, it is in the &lt;em&gt;deploy mechanism&lt;/em&gt;. PTT lives in CSME; CSME ships through the OEM&apos;s UEFI capsule path. ST33 lives behind the TPM vendor&apos;s signed flash and ships through the OEM&apos;s UEFI capsule path. The OEM UEFI capsule path is measured in quarters to years for high-volume client OEMs. &lt;em&gt;A fix existed but the deploy mechanism was insufficient.&lt;/em&gt; This is the architectural lesson that the next generation has to internalise: the patch path is part of the security property.The deploy-mechanism lesson is the one that gets quietly swallowed into Pluton&apos;s design. The bug count in firmware-TPM territory is not zero; it is steady. What changes is whether a fix can reach the fleet before its dwell time becomes a procurement problem. TPM-Fail&apos;s structural lesson is therefore not &quot;ECDSA timing leaks&quot; -- it is &quot;the channel that delivers the fix is the security property that matters.&quot;&lt;/p&gt;
&lt;h3&gt;April 28, 2023 -- faulTPM&lt;/h3&gt;
&lt;p&gt;Hans Niklas Jacob, Christian Werling, Robert Buhren, and Jean-Pierre Seifert published &lt;em&gt;faulTPM: Exposing AMD fTPMs Deepest Secrets&lt;/em&gt; at IEEE EuroS&amp;amp;P 2023 [@jacob-2023-faultpm]. &lt;em&gt;&quot;In this paper, we analyze a new class of attacks against fTPMs: Attacking their Trusted Execution Environment can lead to a full TPM state compromise. We experimentally verify this attack by compromising the AMD Secure Processor&quot;&lt;/em&gt; [@jacob-2023-faultpm]. The mechanism: a voltage glitch on the SVI2 power-management bus, against the AMD PSP (an ARM TrustZone Cortex-A5 inside modern Ryzen SoCs [@wikipedia-amd-psp]), in 2-3 hours of physical access. The output: the entire fTPM internal state, including the EK and any sealed material.&lt;/p&gt;
&lt;p&gt;The structural failure in faulTPM is not the glitch. It is that the PSP is a &lt;em&gt;shared&lt;/em&gt; TEE. The same coprocessor that runs the fTPM service also runs SEV memory-encryption setup, secure-boot enforcement, and platform initialisation. One fault drops everything. &lt;em&gt;Shared-TEE fTPM is broken because the TEE is shared.&lt;/em&gt; The architectural conclusion that this forces is hard: a fTPM that lives next to memory-encryption services, alongside boot-policy enforcement, in a coprocessor that also handles fuse provisioning, is not separable in failure. To restore TEE isolation, you need a &lt;em&gt;dedicated&lt;/em&gt; TEE.&lt;/p&gt;
&lt;h3&gt;The architecture cascade&lt;/h3&gt;
&lt;p&gt;Three results in five years close every architectural option Microsoft had on the PC.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Realization&lt;/th&gt;
&lt;th&gt;Structural failure&lt;/th&gt;
&lt;th&gt;First public proof&lt;/th&gt;
&lt;th&gt;What survives the failure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Discrete TPM (LPC / SPI)&lt;/td&gt;
&lt;td&gt;External bus is sniffable&lt;/td&gt;
&lt;td&gt;Andzakovic 2019 [@andzakovic-2019-tpm-sniffing]&lt;/td&gt;
&lt;td&gt;Hardened dTPM with encrypted bus (TPM 2.0 ENC sessions); not retrofittable to existing fleets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Intel PTT in CSME&lt;/td&gt;
&lt;td&gt;Slow OEM UEFI capsule patch path&lt;/td&gt;
&lt;td&gt;TPM-Fail 2019 [@tpmfail-microsite]&lt;/td&gt;
&lt;td&gt;The cryptographic primitive; not the deploy channel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AMD fTPM in PSP&lt;/td&gt;
&lt;td&gt;Shared TEE -- one fault drops everything&lt;/td&gt;
&lt;td&gt;faulTPM 2023 [@jacob-2023-faultpm]&lt;/td&gt;
&lt;td&gt;The compatibility surface; not the secrets the chip held&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pluton on the SoC die&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;(subject of sections 5-8)&lt;/td&gt;
&lt;td&gt;--&lt;/td&gt;
&lt;td&gt;--&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The reasoning chain that lands the design is short. dTPM is broken because the bus is sniffable. Shared-TEE fTPM is broken because the TEE is shared. Therefore: dedicated TEE on the SoC die, with a deploy channel that is not the OEM UEFI capsule. That is Pluton-on-PC. &lt;em&gt;On-die&lt;/em&gt; is not a Microsoft engineering preference. It is the only shape left after every other architecture has been broken in public.&lt;/p&gt;

flowchart TD
    dTPM[Discrete TPM&lt;br /&gt;external LPC/SPI bus]
    PTT[Intel PTT&lt;br /&gt;fTPM inside CSME]
    fTPM[AMD fTPM&lt;br /&gt;fTPM inside PSP]
    AND[Andzakovic 2019&lt;br /&gt;\$40 FPGA bus sniff]
    TF[TPM-Fail 2019&lt;br /&gt;5-hour ECDSA recovery]
    FT[faulTPM 2023&lt;br /&gt;SVI2 voltage glitch]
    Forced[On-die dedicated TEE&lt;br /&gt;OS-channel update path&lt;br /&gt;= Pluton-on-PC]
    dTPM --&amp;gt; AND
    PTT --&amp;gt; TF
    fTPM --&amp;gt; FT
    AND --&amp;gt; Forced
    TF --&amp;gt; Forced
    FT --&amp;gt; Forced
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; By 2024, all three production options for the TPM realization had been defeated by public research. dTPM by the bus surface (Andzakovic 2019). Intel PTT by the patch latency of CSME (TPM-Fail 2019). AMD fTPM by the shared-TEE blast radius (faulTPM 2023). On-die is not an aesthetic choice; it is the only architectural shape left after every other option has been demonstrably broken. The &quot;Pluton design&quot; is the negative space these three results leave behind.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If Microsoft had a working on-die-RoT architecture as early as 2013, and the threat model demanded it on PC by 2020, why did Microsoft go through Cerberus and Azure Sphere first? What did each generation contribute that the previous one could not?&lt;/p&gt;
&lt;h2&gt;4. Five generations of Microsoft security silicon&lt;/h2&gt;
&lt;p&gt;Microsoft&apos;s path to Pluton-on-PC was not linear. The architecture took shape across five generations of Microsoft security silicon -- three direct predecessors, the PC deployment itself, and one parallel path. Each generation contributed a piece the next one needed. The shape of Pluton-on-PC was determined by what Xbox One &lt;em&gt;was&lt;/em&gt;, what Cerberus &lt;em&gt;could not be on a client&lt;/em&gt;, what Azure Sphere &lt;em&gt;proved at scale&lt;/em&gt;, and what Caliptra &lt;em&gt;would later make visible as a choice rather than a technical necessity&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This article counts Microsoft on-die security-silicon programs (Generations 3-7 = Xbox One, Cerberus, Azure Sphere Pluton, Pluton-on-PC, Caliptra). The prior article counts TPM realisations (Generations 1-3 = standalone hardware TPM, firmware TPM, on-die TPM) [@prior-tpm-in-windows]. The two schemes share an index space but count different things. Project Cerberus appears as Generation 4 here even though it is &lt;em&gt;discrete&lt;/em&gt; (not on-die), because the count is over Microsoft security-silicon programs, not over TPM realisations.&lt;/p&gt;
&lt;/blockquote&gt;

A hardware element that anchors three separable services: Root of Trust for Storage (the chip can hold private keys that never leave it), Root of Trust for Reporting (the chip can sign attestations of its own state and of code it measured), and Root of Trust for Measurement (the chip records integrity hashes of code as it loads). The TPM 2.0 specification names all three; Pluton, Apple SEP, Caliptra, and OpenTitan implement subsets and combinations of them.
&lt;h3&gt;Generation 3 -- Xbox One on-die security processor (2013)&lt;/h3&gt;
&lt;p&gt;Existence proof. Microsoft and AMD co-designed the Xbox One SoC with an on-die security subsystem [@ms-pluton-blog-2020]. Console signing key. Hardware-enforced separation between Game OS and System OS. The Xbox One demonstrated, at consumer-console scale, that Microsoft and a chip vendor could ship an on-die security processor that survived a determined adversary with full physical access. Limitation: console-only. No TCG TPM 2.0 wire surface. Microsoft did not commit publicly that this design would ever leave the Xbox.&lt;/p&gt;
&lt;h3&gt;Generation 4 -- Project Cerberus (November 9, 2017)&lt;/h3&gt;
&lt;p&gt;Discrete RoT chip on the server BMC. NIST SP 800-193 alignment [@ms-learn-cerberus] [@nist-sp-800-193]. Open spec at OCP [@ocp-cerberus]; reference implementation on GitHub [@azure-cerberus-github]. Architecturally the inverse of Pluton: external chip, separate flash interception, dedicated authority. &lt;em&gt;That&lt;/em&gt; shape is right for a server motherboard. &lt;em&gt;That&lt;/em&gt; shape is wrong for a $700 ultrabook -- BOM cost, board area, and per-OEM design-in cost rule it out, and reintroducing an external bus would re-expose the very Andzakovic-class surface the program is trying to close. Cerberus is not a rejected design; it is the &lt;em&gt;server-side&lt;/em&gt; answer that runs alongside the client-side answer Pluton would later be. The two coexist in the November 17, 2020 announcement, which describes Cerberus as &lt;em&gt;&quot;providing a secure identity for the CPU that can be attested by Cerberus&quot;&lt;/em&gt; [@ms-pluton-blog-2020]. Server-side RoT and client-side RoT compose; they do not compete.&lt;/p&gt;
&lt;h3&gt;Generation 5 -- Azure Sphere Pluton MCU (April 2018)&lt;/h3&gt;
&lt;p&gt;The first public, named appearance of &quot;Pluton.&quot; MediaTek MT3620 SoC; Linux-based MCU OS; Azure Sphere Security Service in the cloud [@azure-blog-2018-azure-sphere] [@azure-blog-anatomy-secured-mcu]. &lt;em&gt;&quot;Our Pluton Security Subsystem is the heart of our security story&quot;&lt;/em&gt; [@azure-blog-anatomy-secured-mcu]. Three things became operationally proven in this generation. First, Microsoft-designed on-die security IP could be licensed to a third-party SoC and taped out under another vendor&apos;s process. Second, Microsoft-operated cloud-side firmware servicing was viable at MCU scale. Third, the &lt;em&gt;Seven Properties&lt;/em&gt; mapped cleanly onto the silicon-plus-firmware-plus-cloud triple. Limitation: MCU-class power and instruction set; not Windows; product retiring in 2027.The precision matters. The &lt;em&gt;design pattern&lt;/em&gt; -- on-die security processor, Microsoft-signed firmware, cloud or OS-channel updates -- dates to Xbox One in 2013. The &lt;em&gt;name&lt;/em&gt; &quot;Pluton&quot; first appears publicly in the April 2018 &lt;em&gt;Anatomy of a Secured MCU&lt;/em&gt; Azure Blog post [@azure-blog-anatomy-secured-mcu]. The 2020 PC announcement uses the name retroactively for the 2013 design. When narrating: the design is Xbox-era, the name is Azure-Sphere-era.&lt;/p&gt;
&lt;h3&gt;Generation 6 -- Pluton on Windows-PC SoCs (November 17, 2020)&lt;/h3&gt;
&lt;p&gt;The subject of section 5. Brief hand-off here. Microsoft, AMD, Intel, and Qualcomm announced that the Pluton design would ship on Windows-PC SoCs [@ms-pluton-blog-2020]. AMD Ryzen 6000 was the first silicon to actually ship, at CES 2022 [@phoronix-2022-amd-ryzen-pluton]. Microsoft Learn currently lists AMD Ryzen 6000 / 7000 / 8000 / 9000 / Ryzen AI; Intel Core Ultra 200V Series, Ultra Series 3, and Series 3; and Qualcomm Snapdragon 8cx Gen 3 and Snapdragon X Series [@ms-learn-pluton]. This is the generation the rest of the article lives in.&lt;/p&gt;
&lt;h3&gt;Generation 7 -- Caliptra 1.0 (April 2024)&lt;/h3&gt;
&lt;p&gt;Open-source datacenter Root of Trust. Co-designed by Microsoft, Google, AMD, and NVIDIA. Specification, RTL, ROM, and runtime all public on CHIPS Alliance [@caliptra-github] [@caliptra-spec]. &lt;em&gt;&quot;Caliptra targets datacenter-class SoCs like CPUs, GPUs, DPUs, TPUs. It is the specification, silicon logic, ROM and firmware for implementing a Root of Trust for Measurement (RTM) block inside an SoC&quot;&lt;/em&gt; [@caliptra-github]. Caliptra is not a successor to Pluton. It is a &lt;em&gt;parallel path&lt;/em&gt;, and that distinction is what makes Caliptra structurally important for this article: it makes the single-signer choice in Pluton visible as a choice, not a technical necessity. Caliptra exists. The single-signer property of Pluton-on-PC is therefore not the only design that 2024 hardware can support; it is the one Microsoft chose for the client.&lt;/p&gt;
&lt;p&gt;The five generations side by side:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Generation&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;On-die?&lt;/th&gt;
&lt;th&gt;Discrete?&lt;/th&gt;
&lt;th&gt;Open RTL?&lt;/th&gt;
&lt;th&gt;Multi-signer?&lt;/th&gt;
&lt;th&gt;Trust anchor&lt;/th&gt;
&lt;th&gt;Where it ships&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;3 -- Xbox One sec proc&lt;/td&gt;
&lt;td&gt;2013&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Microsoft (Xbox CA)&lt;/td&gt;
&lt;td&gt;Xbox One console&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 -- Project Cerberus&lt;/td&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (spec/RI)&lt;/td&gt;
&lt;td&gt;No (per-deployment signer)&lt;/td&gt;
&lt;td&gt;Microsoft Azure CA (operator)&lt;/td&gt;
&lt;td&gt;Server BMC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5 -- Azure Sphere Pluton&lt;/td&gt;
&lt;td&gt;2018&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Microsoft (AS3)&lt;/td&gt;
&lt;td&gt;MCU (MediaTek MT3620)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6 -- Pluton-on-PC&lt;/td&gt;
&lt;td&gt;2020&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Microsoft (Windows Update)&lt;/td&gt;
&lt;td&gt;Windows 11 client SoCs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7 -- Caliptra 1.0&lt;/td&gt;
&lt;td&gt;2024&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Multi-vendor by deployment&lt;/td&gt;
&lt;td&gt;Per-chip integrator&lt;/td&gt;
&lt;td&gt;Datacenter SoCs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

flowchart TD
    Gen3[Gen 3: Xbox One 2013&lt;br /&gt;existence proof at scale]
    Gen4[Gen 4: Cerberus 2017&lt;br /&gt;open spec + NIST 800-193]
    Gen5[Gen 5: Azure Sphere 2018&lt;br /&gt;Pluton-on-MCU + cloud servicing]
    Gen6[Gen 6: Pluton-on-PC 2020&lt;br /&gt;TCG TPM 2.0 surface + Windows Update]
    Gen7[Gen 7: Caliptra 2024&lt;br /&gt;open-source datacenter RoT]
    Gen3 --&amp;gt;|console-only existence| Gen5
    Gen3 --&amp;gt;|client-side&lt;br /&gt;architecture| Gen6
    Gen4 --&amp;gt;|server-side&lt;br /&gt;composes with Gen 6| Gen6
    Gen4 --&amp;gt;|open governance&lt;br /&gt;refined into| Gen7
    Gen5 --&amp;gt;|MCU-scale to PC-scale| Gen6
    Gen6 -.parallel path.-&amp;gt; Gen7
&lt;p&gt;What, exactly, makes Generation 6 different from the four generations that came before it -- and what new trust does each of its design choices ask the reader to place in Microsoft?&lt;/p&gt;
&lt;h2&gt;5. The breakthrough -- on-die plus dedicated TEE plus Rust plus Windows Update&lt;/h2&gt;
&lt;p&gt;The November 17, 2020 announcement [@ms-pluton-blog-2020] is shorter than its consequences suggest. It makes four design choices explicit. Each one closes a specific architectural gap that 2014-2024 had opened. Each one also names a new trust that is now placed in Microsoft. This section walks the four choices, the gap each one closes, and the trust each one creates.&lt;/p&gt;
&lt;h3&gt;Design choice 1 -- on-die SoC integration&lt;/h3&gt;
&lt;p&gt;There is no off-package bus between the CPU and the Pluton block. The November 2020 announcement names this property as the structural answer to the bus-sniffing class: &lt;em&gt;&quot;attackers have begun to innovate ways to attack [the TPM], particularly in situations where an attacker can ... gain physical access to a PC ... target[ing] the communication channel between the CPU and TPM&quot;&lt;/em&gt; [@ms-pluton-blog-2020]. With Pluton, that communication channel is silicon, not a board trace. Andzakovic-class attacks have nothing to attack [@andzakovic-2019-tpm-sniffing].&lt;/p&gt;
&lt;p&gt;The new trust: the silicon supply chain. Microsoft licenses the IP block; AMD, Intel, and Qualcomm tape it out on TSMC or another foundry; the OEM integrates the resulting SoC into a finished product. None of those steps is on the public record at the bit level. (See open problem 5 in section 9 -- supply-chain integrity beyond firmware signing.)&lt;/p&gt;
&lt;h3&gt;Design choice 2 -- dedicated TEE, not shared&lt;/h3&gt;
&lt;p&gt;Pluton is &lt;em&gt;not&lt;/em&gt; the same coprocessor that runs SEV memory encryption (AMD) or CSME runtime services (Intel). It is a separate block on the SoC die, with its own ROM, its own firmware, and its own boundary. faulTPM-class attacks on the AMD PSP do not transitively drop Pluton secrets [@jacob-2023-faultpm], because Pluton is not running inside the PSP. The structural failure that defeated AMD fTPM -- one fault drops everything because the TEE is shared -- does not apply to Pluton-as-Pluton. (AMD-Ryzen-6000-class chips can ship Pluton silicon next to the existing PSP-based fTPM; the OEM picks which the host advertises as the system TPM via the Pluton (HSP) BIOS toggle and PSP-directory 0xB BIT36 soft fuse Garrett 2022 documents [@garrett-2022-pluton-rev]. Windows TBS exposes one TPM at a time. On systems the OEM exposes as fTPM, faulTPM-class attacks remain valid; on systems exposed as Pluton-as-TPM they no longer reach the chip&apos;s secret state.)&lt;/p&gt;
&lt;p&gt;The new trust: Microsoft&apos;s chip-level isolation engineering. The TEE is dedicated only because Microsoft and the chip vendor agreed to dedicate it. There is no public peer-reviewed audit demonstrating that the Pluton boundary is bit-for-bit non-shared with PSP / CSME on shipping silicon. The independent CHES 2024 study TPMScan [@tpmscan-2024] [@tpmscan-iacr] sampled 78 TPM 2.0 versions across 6 vendors, and the IACR TCHES record states explicitly that the corpus &lt;em&gt;&quot;include[s] recent Pluton-based iTPMs&quot;&lt;/em&gt; alongside dTPM, fTPM, and earlier iTPM variants from Microsoft, AMD, Intel, Infineon, ST, and Nuvoton [@tpmscan-iacr]. The paper&apos;s per-vendor findings centre on RSA / ECDSA nonce-leakage and command-timing observability across the corpus; the paper does not single Pluton out for a per-implementation audit, and it does not characterise Pluton&apos;s specific timing surface as worse or better than the iTPM cohort it sits in. The TPMScan study therefore &lt;em&gt;places&lt;/em&gt; Pluton inside the audited iTPM population without singling it out -- a useful baseline, not a Pluton-specific clean bill of health.&lt;/p&gt;
&lt;h3&gt;Design choice 3 -- Microsoft-authored Rust firmware&lt;/h3&gt;
&lt;p&gt;Microsoft Learn states it explicitly: &lt;em&gt;&quot;Pluton platforms in 2024 AMD and Intel systems will start to use a Rust-based firmware foundation given the importance of memory safety&quot;&lt;/em&gt; [@ms-learn-pluton]. Memory-safe firmware is a direct response to the firmware-CVE history -- TPM-Fail [@tpmfail-microsite], the long Intel ME / AMD PSP CVE backlog, and CVE-2025-2884 (worked example in section 8 below). The class of bug that a memory-safe runtime structurally rules out is large; it is not the entirety of the bug surface (logic bugs survive Rust), but it is the part that has driven the CVE economy in firmware-TPM territory for a decade.&lt;/p&gt;

Microsoft Learn commits to *&quot;a Rust-based firmware foundation&quot;* on 2024+ AMD and Intel platforms [@ms-learn-pluton]. Secondary technology press has named the runtime as Tock OS, the memory-safe embedded operating system maintained by an open community [@tock-github]. Tock is a plausible candidate -- it is the most mature publicly reviewed memory-safe embedded RTOS for the kind of constraints Pluton operates under. But Microsoft has not made the Tock attribution publicly. The honest reading is: Rust on the PC firmware path is committed; the specific runtime has not been named by Microsoft as of 2026. The reader who wants to track this should watch the Microsoft Learn Pluton page for an explicit runtime name.&lt;p&gt;The reason this hedge matters: &quot;Pluton runs Tock&quot; is widely repeated in tech press, and the difference between &quot;memory-safe Rust embedded OS&quot; and &quot;specifically Tock&quot; is the difference between an architectural commitment and a procurement choice. Both are interesting, but they are not the same statement.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Garrett&apos;s April 2022 reverse-engineering [@garrett-2022-pluton-rev] documented that the Pluton firmware blob on the 2022 AMD Ryzen 6000 BIOS he disassembled was an ARM image derived from the TCG TPM 2.0 reference code (section 6 carries the verbatim quote and section 8 carries the CVE-2025-2884 connection). That is the 2022 firmware on a 2022-vintage chip; it is not the 2024+ Rust runtime. Both observations are consistent: the 2022 ARM blob is what existed on the first silicon, and the 2024+ Rust runtime is what Microsoft Learn now commits to. CVE-2025-2884 (section 8) reaches this firmware exactly through the TPM 2.0 reference-code derivation Garrett identified.&lt;/p&gt;
&lt;p&gt;The new trust: Microsoft&apos;s compiler and SDLC. The chip ships running code that Microsoft authored. Whatever the compiler optimised away, whatever the test suite did not catch, whatever subtle un-&lt;code&gt;unsafe&lt;/code&gt;-block reasoning passed code review -- that becomes the property of the chip&apos;s trust anchor.&lt;/p&gt;
&lt;h3&gt;Design choice 4 -- Windows Update servicing path&lt;/h3&gt;
&lt;p&gt;Microsoft Learn: &lt;em&gt;&quot;Pluton platform supports loading new firmware delivered through operating system updates&quot;&lt;/em&gt; [@ms-learn-pluton]. The change in shape is this: from quarters-to-years (the OEM UEFI capsule rollout that TPM-Fail had to crawl through) to days-to-weeks (the Patch Tuesday cadence that already delivers Windows kernel updates to roughly 1.4 billion endpoints, the deployment scale Microsoft itself reports for Windows monthly active devices). Microsoft has not published a numerical SLA for Pluton firmware delivery; this article will not assert one. The change in &lt;em&gt;channel&lt;/em&gt; is the architectural fact.&lt;/p&gt;
&lt;p&gt;The new trust: Microsoft&apos;s signing key and Windows Update infrastructure. Whoever can sign for the Windows Update channel can, in principle, push firmware to every Pluton chip the channel reaches. This is the same trust that already underwrites the rest of Windows; Pluton extends it to the chip itself.&lt;/p&gt;
&lt;h3&gt;The trust shift, named explicitly&lt;/h3&gt;
&lt;p&gt;Pull the four choices together. Each closes a specific 2014-2024 attack class -- bus, shared-TEE, firmware-CVE, OEM-capsule patch latency. Each names a new trust placed in Microsoft -- silicon supply chain, chip-level isolation engineering, compiler and SDLC, signing key and Windows Update infrastructure. &lt;em&gt;On-die alone is not the breakthrough. The breakthrough is the combination.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The November 2020 announcement also commits to a property beyond TCG TPM 2.0: SHACK. &lt;em&gt;&quot;Pluton also provides the unique Secure Hardware Cryptography Key (SHACK) technology that helps ensure keys are never exposed outside of the protected hardware, even to the Pluton firmware itself&quot;&lt;/em&gt; [@ms-pluton-blog-2020]. The TCG TPM 2.0 specification requires that keys be non-exportable from the chip; SHACK extends the boundary one ring inward, naming a class of keys that the firmware running on Pluton itself cannot read. This is Microsoft&apos;s claim that Pluton offers a &lt;em&gt;stronger&lt;/em&gt; property than the TCG TPM 2.0 spec requires. Verifying that claim from outside Microsoft requires source access Microsoft has not published.&lt;/p&gt;

A Pluton property named in the November 17, 2020 announcement [@ms-pluton-blog-2020]; Microsoft&apos;s claim that Pluton&apos;s non-exportability boundary extends one ring inside the TCG TPM 2.0 boundary, so keys are unreadable even by Pluton firmware. See the §5 prose paragraph above for the verbatim Microsoft quote and the article&apos;s hedge that no external peer-reviewed validation of SHACK exists as of 2026.
&lt;h3&gt;How the chip boots and how the chip gets patched&lt;/h3&gt;
&lt;p&gt;The boot-and-attest sequence below is the public shape of how Pluton starts and how new firmware reaches it. The exact ROM-to-FMC-to-runtime chain is generic to on-die RoT designs (Caliptra exposes this shape openly in its source [@caliptra-github]); Pluton&apos;s specific protocol details are not all on the public record, so the diagram captures the architectural shape rather than a Microsoft-internal protocol.&lt;/p&gt;

sequenceDiagram
    participant SoC as SoC reset
    participant ROM as Pluton ROM
    participant FMC as Pluton FMC
    participant RT as Pluton runtime
    participant Win as Windows + WU
    SoC-&amp;gt;&amp;gt;ROM: power-on, Pluton enters ROM
    ROM-&amp;gt;&amp;gt;ROM: verify FMC signature against on-die public key
    ROM-&amp;gt;&amp;gt;FMC: hand off after measurement
    FMC-&amp;gt;&amp;gt;FMC: verify runtime signature
    FMC-&amp;gt;&amp;gt;RT: hand off, runtime exposes TPM 2.0 CRB
    RT--&amp;gt;&amp;gt;Win: TPM 2.0 commands over CRB
    Win-&amp;gt;&amp;gt;Win: Patch Tuesday delivers signed Pluton blob
    Win-&amp;gt;&amp;gt;RT: stage new firmware via OS update channel
    RT-&amp;gt;&amp;gt;FMC: queue new runtime, reboot to apply
    FMC-&amp;gt;&amp;gt;FMC: verify new runtime signature, commit
&lt;p&gt;The detection logic that follows is the structural shape of the &lt;code&gt;Get-Tpm&lt;/code&gt; PowerShell query that section 10 will revisit. It is mocked here to make the four-letter &lt;code&gt;MSFT&lt;/code&gt; check explicit.&lt;/p&gt;
&lt;p&gt;{&lt;code&gt;// Mock of the Windows TPM Base Services (TBS) manufacturer query. // Real Get-Tpm reads ManufacturerIdTxt from the TPM 2.0 capability // response and matches the four-character ASCII manufacturer. const manufacturers = {   &apos;MSFT&apos;: &apos;Microsoft Pluton&apos;,   &apos;INTC&apos;: &apos;Intel PTT (firmware TPM in CSME)&apos;,   &apos;AMD &apos;: &apos;AMD fTPM (firmware TPM in PSP)&apos;,   &apos;IFX&apos;:  &apos;Infineon discrete TPM&apos;,   &apos;STM&apos;:  &apos;STMicro discrete TPM&apos;,   &apos;NTC&apos;:  &apos;Nuvoton discrete TPM&apos;, }; function classify(mfr) {   return manufacturers[mfr] || &apos;Unknown / non-TCG TPM&apos;; } console.log(&apos;MSFT  =&amp;gt;&apos;, classify(&apos;MSFT&apos;)); console.log(&apos;INTC  =&amp;gt;&apos;, classify(&apos;INTC&apos;)); console.log(&apos;AMD   =&amp;gt;&apos;, classify(&apos;AMD &apos;)); console.log(&apos;IFX   =&amp;gt;&apos;, classify(&apos;IFX&apos;));&lt;/code&gt;}&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; The Pluton breakthrough is the &lt;em&gt;combination&lt;/em&gt;, not on-die alone. On-die plus dedicated TEE plus memory-safe firmware plus OS-channel updates -- four design choices, each closing a different 2014-2024 attack class, each placing a new trust in Microsoft. The chip is the cheapest part of the system. The cost is what those four trusts add up to.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What is actually shipping in 2026? Hardware lists, default-on / default-off behavior, vendor pushback that survived from 2022 into 2026 -- the gap between marketing claim and shipping reality.&lt;/p&gt;
&lt;h2&gt;6. Pluton in 2026 -- what is shipping, where, and how to verify&lt;/h2&gt;
&lt;p&gt;The 2020 announcement is now five and a half years old. The 2022 first-silicon shipment is four. What is the actual fleet shape in 2026?&lt;/p&gt;
&lt;h3&gt;The Microsoft-published hardware list&lt;/h3&gt;
&lt;p&gt;The current Microsoft Learn Pluton page enumerates the supported silicon: AMD Ryzen 6000, 7000, 8000, 9000, and Ryzen AI; Intel Core Ultra 200V Series, Ultra Series 3, and Series 3; and Qualcomm Snapdragon 8cx Gen 3 and Snapdragon X Series [@ms-learn-pluton]. Every chip on that list ships with Pluton silicon present on the die. &lt;em&gt;Present&lt;/em&gt; and &lt;em&gt;enabled by default&lt;/em&gt; are not the same property, which is the point of the next subsection.&lt;/p&gt;
&lt;h3&gt;Default-on versus default-off varies by OEM SKU&lt;/h3&gt;
&lt;p&gt;The first x86 silicon to ship with Pluton was AMD Ryzen 6000 &quot;Rembrandt&quot;, at CES 2022. Phoronix&apos;s launch coverage [@phoronix-2022-amd-ryzen-pluton] confirms that the CES 2022 keynote disclosed the integration. The vendor responses that followed in March 2022 set the OEM-by-OEM posture that the fleet still reflects in 2026. The Register obtained vendor statements [@register-2022-pluton]. Lenovo deployed the chip on AMD Ryzen 6000 ThinkPads but disabled it: &lt;em&gt;&quot;AMD Ryzen 6000 ThinkPads will include Pluton as it&apos;s present in those AMD chips, though the feature will be disabled by default&quot;&lt;/em&gt;; Intel-powered ThinkPads &lt;em&gt;&quot;will not support Microsoft Pluton at launch&quot;&lt;/em&gt;; the Snapdragon 8cx Gen 3 Lenovo X13s did include Pluton [@register-2022-pluton]. Dell&apos;s reply was the most direct: &lt;em&gt;&quot;Pluton does not align with Dell&apos;s approach to hardware security and our most secure commercial PC requirements&quot;&lt;/em&gt; [@register-2022-pluton] [@pcworld-2022-pluton]. HP declined to comment.&lt;/p&gt;
&lt;p&gt;The 2024 inflection is the Copilot+ PC program. Microsoft Surface and Qualcomm Snapdragon X Elite / Snapdragon X Series Copilot+ devices ship Pluton enabled by default [@ms-learn-pluton]. This is the first product class where retail-bought Windows 11 hardware turns Pluton on at the factory.The 2024 Copilot+ inflection is the first time a high-volume consumer Windows-PC SKU ships Pluton on by default. Prior to Copilot+, Pluton was either off (Lenovo AMD Ryzen 6000 ThinkPads), absent (Dell), or behind a BIOS toggle the user had to find. Copilot+ collapses the discoverability problem because Windows 11 itself depends on the secure-boot and credential-protection primitives that Pluton hosts when the OEM has enabled it.&lt;/p&gt;
&lt;h3&gt;Linux 6.3 -- February 20, 2023&lt;/h3&gt;
&lt;p&gt;The standard TCG Command Response Buffer (CRB) interface that Pluton exposes is reachable from Linux. Phoronix records the merge: &lt;em&gt;&quot;Linus Torvalds merged to Linux 6.3 Git the TPM CRB support for Microsoft&apos;s controversial Pluton security co-processor&quot;&lt;/em&gt; [@phoronix-2023-pluton-linux63] [@kernel-org-pluton-merge]. The driver author was Matthew Garrett [@kernel-org-pluton-merge]. Pluton-as-TPM is now reachable from non-Windows operating systems via the standard TCG CRB transport. This constrains -- although it does not eliminate -- the &quot;Microsoft-only black box&quot; narrative. The chip speaks the open TCG wire protocol that any operating system can talk to.&lt;/p&gt;
&lt;h3&gt;Garrett&apos;s reverse-engineering -- April 2022&lt;/h3&gt;
&lt;p&gt;Matthew Garrett&apos;s April 2022 disassembly of the Asus ROG Zephyrus G14 BIOS [@garrett-2022-pluton-rev] yielded two facts that matter for the rest of this article. First, the user-controllable BIOS Pluton (HSP) toggle on AMD Ryzen 6000 may not be a hardware power-down. Garrett&apos;s reading: &lt;em&gt;&quot;PSP directory entry 0xB BIT36 ... if bit 36 is set, the PSP tells Pluton to turn itself off and will no longer send any commands to it&quot;&lt;/em&gt; [@garrett-2022-pluton-rev]. The toggle is a soft fuse. Inventory queries that report &quot;Pluton present&quot; do not always distinguish enabled from soft-disabled. Second, &lt;em&gt;&quot;there&apos;s a blob starting at 0x0069b610 that appears to be firmware for Pluton -- it contains chunks that appear to be the reference TPM2 implementation, and it broadly decompiles as valid ARM code&quot;&lt;/em&gt; [@garrett-2022-pluton-rev]. The Pluton firmware blob is, on the silicon Garrett looked at, an ARM image derived from the TCG TPM 2.0 reference code. That is the observation that makes CVE-2025-2884 (section 8) reachable inside Pluton firmware too.&lt;/p&gt;

On AMD Ryzen 6000 / 7000 / 8000 platforms, the OEM can set PSP directory entry 0xB bit 36 in the AMD-firmware part of the BIOS to instruct the PSP to *&quot;tell Pluton to turn itself off&quot;* [@garrett-2022-pluton-rev]. This is a soft fuse, not a hardware power-down. The host&apos;s TPM advertisement (`Get-Tpm`) does not always distinguish enabled-Pluton from soft-disabled-Pluton; verification requires inspecting the BIOS-level Pluton (HSP) toggle directly, or correlating against the Plug-and-Play device list.
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Garrett&apos;s PSP-directory soft-fuse documentation [@garrett-2022-pluton-rev] is the practical pitfall of any 2026 Pluton procurement audit. An OEM can ship AMD Ryzen 6000 / 7000 / 8000 silicon with Pluton soft-disabled at boot. Inventory queries that count &quot;Pluton-present&quot; SKUs without correlating against the BIOS-level Pluton (HSP) toggle will overcount by an unknown margin. Section 10 walks the practical detection path.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The fleet shape, in one comparison table:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;First shipped&lt;/th&gt;
&lt;th&gt;Default state at launch&lt;/th&gt;
&lt;th&gt;Vendor posture today&lt;/th&gt;
&lt;th&gt;Linux support&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;AMD Ryzen 6000 mobile&lt;/td&gt;
&lt;td&gt;January 2022 [@phoronix-2022-amd-ryzen-pluton]&lt;/td&gt;
&lt;td&gt;Off on Lenovo ThinkPad [@register-2022-pluton]; Dell declined [@pcworld-2022-pluton]&lt;/td&gt;
&lt;td&gt;Per-OEM; soft-fuse trap on Lenovo&lt;/td&gt;
&lt;td&gt;Linux 6.3 CRB driver [@phoronix-2023-pluton-linux63]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AMD Ryzen 7000 / 8000 / 9000 / Ryzen AI&lt;/td&gt;
&lt;td&gt;2023-2025&lt;/td&gt;
&lt;td&gt;Per-OEM SKU&lt;/td&gt;
&lt;td&gt;Microsoft Learn lists as supported [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;Same CRB driver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Intel Core Ultra 200V / Series 3&lt;/td&gt;
&lt;td&gt;2024-2025&lt;/td&gt;
&lt;td&gt;Per-OEM SKU&lt;/td&gt;
&lt;td&gt;Microsoft Learn lists as supported [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;Same CRB driver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Snapdragon 8cx Gen 3 (Lenovo X13s)&lt;/td&gt;
&lt;td&gt;2022&lt;/td&gt;
&lt;td&gt;On at launch [@register-2022-pluton]&lt;/td&gt;
&lt;td&gt;Shipping&lt;/td&gt;
&lt;td&gt;Same CRB driver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Snapdragon X Series Copilot+ PCs&lt;/td&gt;
&lt;td&gt;2024&lt;/td&gt;
&lt;td&gt;On by default [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;Microsoft + Qualcomm core program&lt;/td&gt;
&lt;td&gt;Same CRB driver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Surface Copilot+&lt;/td&gt;
&lt;td&gt;2024&lt;/td&gt;
&lt;td&gt;On by default [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;First-party Microsoft hardware&lt;/td&gt;
&lt;td&gt;Same CRB driver&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

flowchart LR
    AMD[AMD Ryzen 6000-9000&lt;br /&gt;+ Ryzen AI]
    Intel[Intel Core Ultra 200V&lt;br /&gt;Series 3]
    Qualcomm[Qualcomm Snapdragon&lt;br /&gt;8cx Gen 3 + X Series]
    Lenovo[Lenovo&lt;br /&gt;ThinkPad / X13s]
    Dell[Dell&lt;br /&gt;commercial]
    HP[HP&lt;br /&gt;commercial]
    Surface[Microsoft Surface&lt;br /&gt;Copilot+]
    OEMx[Snapdragon X&lt;br /&gt;Copilot+ OEMs]
    Off[Default off&lt;br /&gt;at launch]
    Vendor[Vendor declined&lt;br /&gt;to ship]
    On[Default on&lt;br /&gt;at retail]
    AMD --&amp;gt; Lenovo
    AMD --&amp;gt; Dell
    AMD --&amp;gt; HP
    Intel --&amp;gt; Lenovo
    Qualcomm --&amp;gt; Lenovo
    Qualcomm --&amp;gt; Surface
    Qualcomm --&amp;gt; OEMx
    Lenovo --&amp;gt;|2022 Ryzen 6000| Off
    Dell --&amp;gt;|&quot;does not align&quot;| Vendor
    HP --&amp;gt;|declined comment| Vendor
    Lenovo --&amp;gt;|X13s 8cx Gen 3| On
    Surface --&amp;gt; On
    OEMx --&amp;gt; On
&lt;p&gt;The detection logic for the Garrett soft-fuse trap, mocked here so the structural shape is explicit:&lt;/p&gt;
&lt;p&gt;{&lt;code&gt;// Mock of the PSP directory entry 0xB inspection that Garrett 2022 // documented. Real verification reads the AMD-firmware bytes off the // SPI flash; this demonstrates the bit-36 check that decides // &quot;enabled&quot; vs &quot;soft-disabled&quot;. function plutonState(plutonPresent, pspDir0xB_BIT36) {   if (!plutonPresent) return &apos;absent&apos;;   if (pspDir0xB_BIT36 === 1) return &apos;soft-disabled&apos;;  // PSP told to silence Pluton   return &apos;enabled&apos;; } console.log(&apos;Pluton present, BIT36=0 =&amp;gt;&apos;, plutonState(true, 0)); console.log(&apos;Pluton present, BIT36=1 =&amp;gt;&apos;, plutonState(true, 1)); console.log(&apos;No Pluton silicon       =&amp;gt;&apos;, plutonState(false, 0));&lt;/code&gt;}&lt;/p&gt;
&lt;p&gt;Pluton is not the only on-die security processor in 2026. Apple has the Secure Enclave Processor. Google has Titan M2. The OCP coalition has Caliptra. How does Pluton compare, and what does the comparison reveal about Microsoft&apos;s design choices?&lt;/p&gt;
&lt;h2&gt;7. Competing approaches -- Apple SEP, Google Titan M2, OpenTitan, Caliptra, Cerberus&lt;/h2&gt;
&lt;p&gt;Pluton is not alone. The platforms below are its nearest analogues -- the strongest evidence that Microsoft&apos;s design choices were &lt;em&gt;choices&lt;/em&gt;, not technical necessities.&lt;/p&gt;
&lt;h3&gt;Apple Secure Enclave Processor&lt;/h3&gt;
&lt;p&gt;Apple&apos;s &lt;em&gt;Apple Platform Security&lt;/em&gt; documentation describes SEP as &lt;em&gt;&quot;a dedicated secure subsystem integrated into Apple [SoC] ... isolated from the main processor to provide an extra layer of security&quot;&lt;/em&gt; [@apple-sep]. By deployment count it is the most mature single-vendor on-die security processor on the planet -- shipping in every iPhone since the iPhone 5s (2013), every iPad since iPad Air, and every Apple-silicon Mac [@apple-sep] [@wikipedia-apple-silicon]. The architecture has matured generation by generation: a Boot ROM as the hardware root of trust; an Apple-customised L4 microkernel; a Memory Protection Engine that combines AES-XEX with CMAC and an anti-replay tree on A11 / S4 and later; a Boot Monitor on A13 and later that hashes the loaded image and updates the SCIP (System Coprocessor Integrity Protection) settings before transferring control; and on A14 / M1 and later, the Memory Protection Engine &lt;em&gt;&quot;supports two ephemeral memory protection keys&quot;&lt;/em&gt; -- one for SEP-private data and a second one shared with the Secure Neural Engine [@apple-sep].&lt;/p&gt;
&lt;p&gt;The trade-off versus Pluton is not the architecture -- it is the &lt;em&gt;governance model&lt;/em&gt;. Apple owns the silicon, the operating system, the signing key, and the device. The multi-signer political question never arises because there is only one signer for every layer of the stack. The cost: complete lock-in. The Apple T2 line, which shipped in 2017-2020 Intel Macs as a discrete A10-derived security chip running bridgeOS, inherited the A10 Boot ROM [@wikipedia-apple-t2]. The A10 Boot ROM has the structurally important property that no Boot-ROM-resident bug can be patched without silicon respin -- which the &lt;em&gt;checkm8&lt;/em&gt; / &lt;em&gt;blackbird&lt;/em&gt; class of jailbreaks demonstrated end-to-end. T2 was discontinued June 5, 2023 [@wikipedia-apple-t2]. The lesson is direct: &lt;em&gt;renewable security&lt;/em&gt; (Seven Properties #6) is not optional. Even Apple&apos;s vertically integrated stack pays the price when a generation ships without it.&lt;/p&gt;

A dedicated secure subsystem integrated into Apple [SoC] ... isolated from the main processor to provide an extra layer of security. -- Apple, *Apple Platform Security* [@apple-sep]
&lt;h3&gt;Google Titan M / Titan M2 and OpenTitan&lt;/h3&gt;
&lt;p&gt;Google announced Titan M with the Pixel 3 launch in October 2018 [@pixel-3-titan-m]: &lt;em&gt;&quot;This year, with Pixel 3, we&apos;re advancing our investment in secure hardware with Titan M, an enterprise-grade security chip custom built for Pixel 3...&quot;&lt;/em&gt; [@pixel-3-titan-m]. Titan M2 followed with Pixel 6 in October 2021 [@pixel-6-titan-m2]. Both are discrete or in-package security chips on Pixel for Android Verified Boot, StrongBox-grade key storage, anti-rollback, and lock-screen verification. Both are Google-vertical: Google designs the chip, Google operates the cloud back end, Google ships the OS.&lt;/p&gt;
&lt;p&gt;OpenTitan is the open-source descendant. Hosted by lowRISC, it is &lt;em&gt;&quot;the first open source project building a transparent, high-quality reference design and integration guidelines for silicon root of trust (RoT) chips&quot;&lt;/em&gt; [@opentitan-home]. RISC-V Ibex core; hardware AES, HMAC, KMAC, and OTBN big-number engines; full RTL, ROM, and verification stack public; Apache 2.0 license. OpenTitan reached commercial availability on February 13, 2024 [@opentitan-commercial] -- the first open-source silicon project to do so. The press release names the nine coalition members verbatim: &lt;em&gt;&quot;Google, Winbond, Nuvoton, zeroRISC, Rivos, Western Digital, Seagate, ETH Zurich and Giesecke+Devrient, hosted by the non-profit lowRISC CIC&quot;&lt;/em&gt; [@opentitan-commercial]. OpenTitan is the closest existing answer to &quot;what would an open-source Pluton look like?&quot; -- but as of 2026 it is discrete or in-package, not on-die in an application SoC.The lowRISC press release is precise on a point that secondary press has frequently flubbed. lowRISC is the &lt;em&gt;host&lt;/em&gt; organisation for OpenTitan; it is not a member of the nine. The nine commercially announced coalition members on February 13, 2024 are Google, Winbond, Nuvoton, zeroRISC, Rivos, Western Digital, Seagate, ETH Zurich, and Giesecke+Devrient [@opentitan-commercial]. The distinction matters because lowRISC&apos;s role is governance, not deployment.&lt;/p&gt;
&lt;h3&gt;Caliptra&lt;/h3&gt;
&lt;p&gt;The OCP coalition&apos;s open-source datacenter Root of Trust. Specification, RTL, ROM, FMC, and runtime are public on CHIPS Alliance [@caliptra-github] [@caliptra-spec]. Founders: Microsoft, Google, AMD, NVIDIA. Google Cloud&apos;s Caliptra-1.0 announcement reports: &lt;em&gt;&quot;the Caliptra specification and open-source hardware and software implementation is complete, reaching the revision 1.0 milestone.&quot;&lt;/em&gt; The Google Cloud post adds that the Caliptra IP block is being integrated by member companies into chips expected in the market in 2026. Caliptra targets &lt;em&gt;&quot;datacenter-class SoCs like CPUs, GPUs, DPUs, TPUs&quot;&lt;/em&gt; [@caliptra-github]. It is not a Pluton substitute on Windows clients -- the form factor is different and the threat model assumes server-side operators.&lt;/p&gt;

The instinct, on reading that Caliptra is open-source and multi-vendor, is to ask why Microsoft does not just put Caliptra into the next Surface. Three reasons. First, form factor: Caliptra is a datacenter-SoC IP block; the integration target is a CPU / GPU / DPU / TPU package on a \$20,000 server motherboard, not a \$700 ultrabook. Second, signer model: Caliptra is multi-vendor *by deployment*, but each Caliptra-equipped chip still has *one* signer -- the integrating chip vendor (AMD signs AMD&apos;s Caliptra firmware; NVIDIA signs NVIDIA&apos;s). The choice of signer moved; the count of signers per chip did not. Third, threat model: Caliptra&apos;s RTM serves a server attestation flow ending at a fleet operator (Google, Microsoft, NVIDIA, the rack owner), not a client BitLocker flow that has to survive a powered-off laptop on an airport conveyor belt.&lt;p&gt;Caliptra is the right counter-design to the &lt;em&gt;governance&lt;/em&gt; of Pluton, not its &lt;em&gt;form factor&lt;/em&gt;. It is what makes the single-signer-per-chip choice in Pluton-on-PC visible as a choice, not a technical necessity. That visibility is the whole reason this section exists.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Project Cerberus -- still in production&lt;/h3&gt;
&lt;p&gt;Cerberus has not been retired. Microsoft Learn describes it as &lt;em&gt;&quot;a NIST 800-193 compliant hardware root-of-trust with an identity that cannot be cloned&quot;&lt;/em&gt; [@ms-learn-cerberus] [@nist-sp-800-193] running in Azure datacenters; the GitHub reference implementation [@azure-cerberus-github] is actively maintained. In the November 2020 Pluton announcement, Microsoft framed Cerberus as the &lt;em&gt;server-side&lt;/em&gt; counterpart to Pluton&apos;s client-side root of trust [@ms-pluton-blog-2020] -- the two are designed to compose, with Pluton providing the per-CPU identity that an upstream Cerberus chip (or Caliptra-equipped server) can attest. The distinction between Pluton-as-client-RoT and Cerberus-as-server-RoT is operational, not architectural rivalry.&lt;/p&gt;
&lt;h3&gt;The cross-design comparison&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Pluton-on-PC&lt;/th&gt;
&lt;th&gt;Apple SEP&lt;/th&gt;
&lt;th&gt;Google Titan M2&lt;/th&gt;
&lt;th&gt;Caliptra&lt;/th&gt;
&lt;th&gt;Cerberus&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Physical location&lt;/td&gt;
&lt;td&gt;On-die in application SoC&lt;/td&gt;
&lt;td&gt;On-die in Apple SoC&lt;/td&gt;
&lt;td&gt;Discrete or in-package on Pixel&lt;/td&gt;
&lt;td&gt;On-die in datacenter SoC&lt;/td&gt;
&lt;td&gt;Discrete on server BMC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trust anchor&lt;/td&gt;
&lt;td&gt;Microsoft (chip-firmware signer)&lt;/td&gt;
&lt;td&gt;Apple (vertical)&lt;/td&gt;
&lt;td&gt;Google (vertical)&lt;/td&gt;
&lt;td&gt;Per-chip integrator&lt;/td&gt;
&lt;td&gt;Operator (Microsoft on Azure)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Update channel&lt;/td&gt;
&lt;td&gt;Windows Update [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;iOS / macOS update&lt;/td&gt;
&lt;td&gt;Android / Pixel update&lt;/td&gt;
&lt;td&gt;Server-side platform update&lt;/td&gt;
&lt;td&gt;OEM / operator update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firmware language&lt;/td&gt;
&lt;td&gt;Rust (2024+) [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;Apple-customised L4 [@apple-sep]&lt;/td&gt;
&lt;td&gt;Not publicly disclosed&lt;/td&gt;
&lt;td&gt;Open-source firmware [@caliptra-github]&lt;/td&gt;
&lt;td&gt;C / C++ (open) [@azure-cerberus-github]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;td&gt;Closed&lt;/td&gt;
&lt;td&gt;Closed&lt;/td&gt;
&lt;td&gt;Closed (driver public)&lt;/td&gt;
&lt;td&gt;Open (RTL + firmware)&lt;/td&gt;
&lt;td&gt;Open (RI on GitHub)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-signer&lt;/td&gt;
&lt;td&gt;Single&lt;/td&gt;
&lt;td&gt;Single&lt;/td&gt;
&lt;td&gt;Single&lt;/td&gt;
&lt;td&gt;Multi-vendor by deployment&lt;/td&gt;
&lt;td&gt;Per-deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standards exposure&lt;/td&gt;
&lt;td&gt;TCG TPM 2.0 over CRB&lt;/td&gt;
&lt;td&gt;Apple-private&lt;/td&gt;
&lt;td&gt;Android Verified Boot, StrongBox&lt;/td&gt;
&lt;td&gt;Caliptra spec; SPDM 1.3 in 2.0&lt;/td&gt;
&lt;td&gt;NIST SP 800-193&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best-known structural attack&lt;/td&gt;
&lt;td&gt;None peer-reviewed Pluton-specific (TPMScan corpus only [@tpmscan-2024])&lt;/td&gt;
&lt;td&gt;T2 inherits A10 Boot ROM (checkm8) [@wikipedia-apple-t2]&lt;/td&gt;
&lt;td&gt;None public on Titan M2&lt;/td&gt;
&lt;td&gt;Reviewed open-source RTL&lt;/td&gt;
&lt;td&gt;Mature; deployed since 2017&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best suited for&lt;/td&gt;
&lt;td&gt;Windows 11 client procurement&lt;/td&gt;
&lt;td&gt;Apple devices&lt;/td&gt;
&lt;td&gt;Pixel devices&lt;/td&gt;
&lt;td&gt;Datacenter SoC integration&lt;/td&gt;
&lt;td&gt;Server BMC RoT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Form factor&lt;/td&gt;
&lt;td&gt;General-purpose PC&lt;/td&gt;
&lt;td&gt;Apple devices&lt;/td&gt;
&lt;td&gt;Pixel phones&lt;/td&gt;
&lt;td&gt;Datacenter SoCs&lt;/td&gt;
&lt;td&gt;Server motherboards&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The political question made architectural. Caliptra and OpenTitan answer &quot;what would multi-signer / open-source look like?&quot; in the &lt;em&gt;datacenter&lt;/em&gt;. Apple SEP demonstrates that the single-vendor / single-signer model is operationally durable at consumer scale -- but only when the vendor owns the entire stack. Pluton sits in the awkward middle: single-signer but multi-OEM, closed-firmware but open-Linux-driver, on-die but the chip vendor is not the firmware vendor. That middle position is what makes the procurement debate hard, and it is what makes the open problems in section 9 unresolved.&lt;/p&gt;
&lt;p&gt;Pluton is the strongest on-die RoT for Windows clients in 2026, with the fastest patch cadence, the broadest hardware list, and the most mature design pedigree. What can it still not do?&lt;/p&gt;
&lt;h2&gt;8. What Pluton still cannot do&lt;/h2&gt;
&lt;p&gt;Two structural limits inherited from the prior article, and a third that is specific to single-signer on-die firmware. The first two say what &lt;em&gt;no&lt;/em&gt; on-die RoT can do. The third says what no &lt;em&gt;Microsoft-only-signer&lt;/em&gt; RoT can do. The worked example is CVE-2025-2884.&lt;/p&gt;
&lt;h3&gt;Limit 1 -- RTS+RTR, not RTE&lt;/h3&gt;
&lt;p&gt;A passive cryptoprocessor -- including Pluton -- cannot detect that the &lt;em&gt;wrong code&lt;/em&gt; measured itself. It can only refuse to release sealed material when PCRs do not match the stored policy. The prior article&apos;s section 7.1 [@prior-tpm-in-windows] walks the bit-level reasoning. On-die does not change this. Pluton implements Root of Trust for Storage and Root of Trust for Reporting; it does not implement a Root of Trust for Execution that runs the code outside the chip on the reader&apos;s behalf.&lt;/p&gt;
&lt;h3&gt;Limit 2 -- The VMK transits OS RAM at unseal&lt;/h3&gt;
&lt;p&gt;The Volume Master Key must enter RAM during Trusted Boot, and once unsealed it lives in OS-controlled memory. An attacker who reads OS RAM at the release moment, or any time after, defeats TPM-only BitLocker regardless of TPM strength (prior article sections 7.2 and 7.3 [@prior-tpm-in-windows]). Pluton&apos;s on-die location eliminates the dTPM &lt;em&gt;bus&lt;/em&gt; surface; it does not change which side of the unseal boundary the VMK lives on. This is why Virtualization-Based Security, Credential Guard, DRTM, and System Guard Secure Launch exist as &lt;em&gt;complements&lt;/em&gt;, not substitutes, to the TPM/Pluton primitive.&lt;/p&gt;
&lt;h3&gt;Limit 3 -- Single-signer revocation impossibility&lt;/h3&gt;
&lt;p&gt;This is the new one. State the result precisely: &lt;em&gt;if the on-die RoT firmware can only be authenticated by a single signer S, then the chip&apos;s trust anchor cannot be retired without bricking the chip&apos;s firmware-update path, regardless of whether S is compromised, coerced, or jurisdictionally constrained.&lt;/em&gt; This is not a cryptographic impossibility. It is a key-management impossibility. Revocation requires either (a) a second trust anchor provisioned at chip manufacture and held outside S&apos;s control -- i.e., multi-signer at the &lt;em&gt;chip&lt;/em&gt; level, not just at the &lt;em&gt;deployment&lt;/em&gt; level -- or (b) physical replacement of the silicon. Caliptra and Cerberus weaken the failure mode by &lt;em&gt;moving&lt;/em&gt; the signer to the integrating chip vendor or to the operator, but they do not eliminate it; each chip still has one signing root.&lt;/p&gt;

A key-management (not cryptographic) impossibility: a chip whose firmware-authentication root has one signer in ROM cannot have that signer retired without bricking the firmware-update path or replacing the silicon. Pluton-on-PC silicon shipping today bakes a Microsoft-rooted public key into ROM. See the §8 prose paragraph above and the Callout below for the precise statement of conditions and the operational reasoning (FIDO2 / threshold-signature analogues; §5 trust-shift cross-anchor).
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; There is no cryptographic objection to multi-signer RoT firmware. The math has been understood since the FIDO2 multi-credential work, and threshold signatures have been a primitive for decades. The objection is operational: replacing public keys after the chip is in the field requires either fab-time multi-signer or hardware replacement. Section 5 named the choice; this Callout names what makes it hard to undo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Worked example -- CVE-2025-2884&lt;/h3&gt;
&lt;p&gt;On June 10, 2025, NVD published CVE-2025-2884 [@cve-2025-2884]. The CERT/CC coordination ticket is VU#282450 [@cert-cc-vu-282450]. The vulnerability is an out-of-bounds read in the &lt;code&gt;CryptHmacSign&lt;/code&gt; function of the TCG TPM 2.0 reference implementation, Level 00, Revision 01.83 (March 2024). The CERT/CC document describes the impact: &lt;em&gt;&quot;An authenticated local attacker can send malicious commands to a vulnerable TPM interface, resulting in information disclosure or denial of service of the TPM&quot;&lt;/em&gt; [@cert-cc-vu-282450].&lt;/p&gt;
&lt;p&gt;Crucially for attribution, the CERT/CC ticket is explicit about who reported it and who wrote it up: &lt;em&gt;&quot;Thanks to the reporter, who wishes to remain anonymous. This document was written by Vijay Sarvepalli&quot;&lt;/em&gt; [@cert-cc-vu-282450]. The reporter is anonymous; the CERT/CC document author is Vijay Sarvepalli. Tech press accounts that have attributed the disclosure to Quarkslab are incorrect; the primary CERT/CC record is dispositive.The Quarkslab attribution that some 2025 tech-press accounts use for CVE-2025-2884 is contradicted by the primary CERT/CC record VU#282450, which says verbatim: &lt;em&gt;&quot;Thanks to the reporter, who wishes to remain anonymous. This document was written by Vijay Sarvepalli&quot;&lt;/em&gt; [@cert-cc-vu-282450]. The reporter is anonymous. The document author is Vijay Sarvepalli. This article uses that attribution and only that attribution.&lt;/p&gt;
&lt;p&gt;Multiple downstream products are affected. Intel published Security Advisory SA-01209 [@intel-sa-01209]. Siemens published SSA-628843 [@siemens-ssa-628843]. The libtpms project assigned CVE-2025-49133 [@cve-2025-49133] for its own derivative; the upstream fix landed in libtpms commit &lt;code&gt;04b2d8e9&lt;/code&gt; [@libtpms-commit-04b2d8e9]. The TCG itself coordinated VRT0009 [@tcg-vrt0009-advisory] and a TPM 2.0 Library Specification v1.83 errata (cited via NVD as the verifiable mirror -- the TCG site returns 403 to non-browser User-Agents).&lt;/p&gt;
&lt;p&gt;Why this is the right worked example for Pluton. Garrett&apos;s April 2022 reverse-engineering [@garrett-2022-pluton-rev] documented that the Pluton firmware blob in the AMD Ryzen 6000 BIOS is &lt;em&gt;&quot;firmware for Pluton -- it contains chunks that appear to be the reference TPM2 implementation, and it broadly decompiles as valid ARM code.&quot;&lt;/em&gt; The Pluton firmware blob &lt;em&gt;is&lt;/em&gt; an ARM image derived from the TCG TPM 2.0 reference code. So a &lt;code&gt;CryptHmacSign&lt;/code&gt; OOB read in the TCG reference code &lt;em&gt;was&lt;/em&gt; present in Pluton firmware too, on the silicon Garrett looked at, until the firmware was rebuilt against the patched reference implementation. &lt;em&gt;On-die location did not stop the bug from existing.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;What did matter for outcomes was the &lt;em&gt;dwell time&lt;/em&gt; before the vulnerable code was replaced. The structural change that distinguishes Pluton from a 2014 dTPM is not &quot;where the chip is&quot; but &quot;who can patch it, and how fast.&quot; A discrete TPM with the same bug would wait for the dTPM vendor to push a firmware build, the OEM to package a UEFI capsule, the OEM to test it across its product lines, and the user to install it. Microsoft&apos;s Pluton patch path is the Windows Update channel -- the same channel that already delivers kernel updates to roughly 1.4 billion endpoints on a Patch Tuesday cadence. Section 5 design choice 4 walked the channel-shape change and the no-SLA hedge; this is what makes the channel the security property that matters here.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Realization&lt;/th&gt;
&lt;th&gt;Patch path&lt;/th&gt;
&lt;th&gt;Approximate latency&lt;/th&gt;
&lt;th&gt;Bottleneck&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Discrete TPM&lt;/td&gt;
&lt;td&gt;dTPM vendor build -&amp;gt; OEM UEFI capsule&lt;/td&gt;
&lt;td&gt;Quarters to years&lt;/td&gt;
&lt;td&gt;OEM fleet test + per-OEM rollout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Intel PTT (CSME)&lt;/td&gt;
&lt;td&gt;Intel ME firmware -&amp;gt; OEM UEFI capsule&lt;/td&gt;
&lt;td&gt;Months to quarters&lt;/td&gt;
&lt;td&gt;OEM UEFI capsule path (TPM-Fail lesson)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AMD fTPM (PSP)&lt;/td&gt;
&lt;td&gt;AMD AGESA -&amp;gt; OEM UEFI capsule&lt;/td&gt;
&lt;td&gt;Months to quarters&lt;/td&gt;
&lt;td&gt;Same OEM UEFI capsule path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pluton-on-PC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Microsoft signs -&amp;gt; Windows Update&lt;/td&gt;
&lt;td&gt;Days to weeks (no published SLA)&lt;/td&gt;
&lt;td&gt;Microsoft signing key + WU infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

flowchart TD
    Ref[TCG TPM 2.0 reference&lt;br /&gt;Level 00 Rev 01.83&lt;br /&gt;March 2024]
    CVE[CVE-2025-2884&lt;br /&gt;CryptHmacSign OOB read&lt;br /&gt;NVD published 2025-06-10]
    Pluton[Pluton firmware&lt;br /&gt;ARM blob&lt;br /&gt;per Garrett 2022]
    Intel[Intel SA-01209]
    Siemens[Siemens SSA-628843]
    Libtpms[libtpms&lt;br /&gt;CVE-2025-49133&lt;br /&gt;commit 04b2d8e9]
    TCG[TCG VRT0009&lt;br /&gt;+ TPM 2.0 v1.83 errata]
    Ref --&amp;gt; CVE
    CVE --&amp;gt; Pluton
    CVE --&amp;gt; Intel
    CVE --&amp;gt; Siemens
    CVE --&amp;gt; Libtpms
    CVE --&amp;gt; TCG
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; Pluton&apos;s structural advantage is the patch path, not the silicon location. CVE-2025-2884 demonstrates that on-die location does not stop a TCG-reference-code bug from existing on a Pluton chip. What changes between a 2014 dTPM and a 2025 Pluton is not &quot;where the chip is&quot; but &quot;who can patch it, and how fast.&quot; On-die is necessary but not sufficient. The breakthrough is the update path. The cost of the update path is the political question section 1 promised.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If single-signer revocation is impossible, what would multi-signer Pluton look like? And what other open problems does this design choice leave unsolved?&lt;/p&gt;
&lt;h2&gt;9. Open problems Pluton has named but not solved&lt;/h2&gt;
&lt;p&gt;Five concrete open problems sit in front of any 2026 reader of the Pluton design. Each is mapped below to the closest existing partial result. None has a public solution.&lt;/p&gt;
&lt;h3&gt;Open problem 1 -- Multi-signer firmware for on-die client RoTs&lt;/h3&gt;
&lt;p&gt;No public proposal exists for multi-signer Pluton on a Windows client. Caliptra moves the signer to the integrating chip vendor [@caliptra-github], so the count of signers per &lt;em&gt;chip&lt;/em&gt; remains one even when the count per &lt;em&gt;deployment&lt;/em&gt; is many. There is no public proposal for two simultaneous signers on a single client RoT (e.g., Microsoft &lt;em&gt;and&lt;/em&gt; a sovereign signer; or AMD &lt;em&gt;and&lt;/em&gt; Microsoft for a Pluton-on-AMD chip). The closest existing analogues live elsewhere -- IETF KEYTRANS for transparency-logged keys [@ietf-keytrans-wg], HSM-cluster split-signing for operational continuity -- but none has a hardware-RoT counterpart that has shipped. The unresolved engineering question, named in the prior article&apos;s section 8, is whether multi-signer can be added without losing the timely-update property that motivated Pluton in the first place.The IETF KEYTRANS working group [@ietf-keytrans-wg] is the closest active venue for the multi-signer thread, although KEYTRANS is concerned with end-user identity-key transparency rather than firmware-signing keys. The transparency-log primitive is the same (a Merkle tree of signed claims, auditable by independent verifiers); the hardware-RoT integration is missing. A reader interested in the multi-signer thread should track KEYTRANS and the OpenTitan / Caliptra governance discussions in parallel.&lt;/p&gt;
&lt;h3&gt;Open problem 2 -- Regulatory jurisdiction of single-signer firmware&lt;/h3&gt;
&lt;p&gt;Pluton&apos;s signing key is, in effect, a US export-controlled artifact. The EU Cyber Resilience Act entered into force on December 10, 2024, with the bulk of its security obligations applying from December 11, 2027 and reporting obligations applying from September 11, 2026 [@eu-commission-cra]; from the 2027 date it will require demonstrable security properties for products with digital elements, without specifying &lt;em&gt;who&lt;/em&gt; the signer must be. Sovereign fleets -- the German Federal Office for Information Security (BSI), Singapore, Switzerland -- have varying postures on whether a non-domestic RoT is acceptable. Read in 2026, the Dell and Lenovo statements of March 2022 [@register-2022-pluton] [@pcworld-2022-pluton] are the first public push-back along this axis. The procurement debate is not technical; it is jurisdictional. There is no current proposal for a Pluton variant that satisfies a non-US sovereign procurement requirement.&lt;/p&gt;

The EU Cyber Resilience Act entered into force on December 10, 2024 [@eu-commission-cra]. Reporting obligations apply from September 11, 2026; the main security obligations apply from December 11, 2027 [@eu-commission-cra]. CRA does not name signers; it requires demonstrable security properties, vulnerability handling, and update channels for products sold into the EU. A single-signer foreign-rooted RoT can satisfy CRA. Whether it satisfies *sovereign* procurement requirements is a separate question.&lt;p&gt;The German BSI&apos;s Common Criteria PP-0084 protection profile [@bsi-pp-0084] (used historically for Infineon SLB 9670 / 9672 dTPMs) bakes in expectations of the chip-supplier governance that a US-rooted Pluton does not satisfy without a parallel certification path. Switzerland&apos;s federal IT procurement, Singapore&apos;s CSA, and a number of EU member-state ministries take comparable positions. None of these is a formal ban on Pluton; all of them are formal preferences that procurement officers must navigate.&lt;/p&gt;
&lt;p&gt;The architectural fix -- a sovereign signing-root variant of Pluton -- has not been publicly proposed by Microsoft. The economic incentives for such a variant are not obviously favourable: every additional signer adds operational cost to the Windows Update path that Pluton&apos;s design specifically optimises. The procurement market is, as of 2026, deciding both ways, and the 2022 Dell statement is the most-cited public datapoint of a vendor declining to take the bet.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Open problem 3 -- SPDM 1.3 component attestation on PC&lt;/h3&gt;
&lt;p&gt;Pluton attests the host SoC. It does not yet attest individual components -- NICs, NVMe SSDs, PCIe accelerators -- on Windows clients. The DMTF&apos;s Security Protocol and Data Model (DSP0274) is the wire protocol for component-to-component attestation: a publication cadence of 1.3.0 in June 2023, 1.3.2 in September 2024, and 1.3.3 in December 2025 [@dmtf-dsp0274]. The Caliptra MCU project&apos;s Rust SPDM responder design page is the most explicit public reference for what an SPDM 1.3 endpoint looks like inside an on-die RoT: SPDM is &lt;em&gt;&quot;a protocol designed to ensure secure communication between hardware components by focusing on mutual authentication and the establishment of secure channels over potentially insecure media... using X.509v3 certificates&quot;&lt;/em&gt; [@caliptra-mcu-spdm], with a fixed message inventory (&lt;code&gt;GetVersion&lt;/code&gt;, &lt;code&gt;GetCapabilities&lt;/code&gt;, &lt;code&gt;NegotiateAlgorithms&lt;/code&gt;, &lt;code&gt;GetDigests&lt;/code&gt;, &lt;code&gt;GetCertificate&lt;/code&gt;, &lt;code&gt;Challenge&lt;/code&gt;, &lt;code&gt;GetMeasurements&lt;/code&gt;, &lt;code&gt;KeyExchange&lt;/code&gt;, &lt;code&gt;Finish&lt;/code&gt;) carried over an MCTP transport binding. Caliptra 2.0&apos;s RTL design freeze in October 2024 [@caliptra-ocp-2024-news] commits SPDM as part of the Caliptra Subsystem reference stack: &lt;em&gt;&quot;Reference Stack: MCTP PLDM, SPDM&quot;&lt;/em&gt; [@caliptra-ocp-2024-news]. That is the server-side commitment.&lt;/p&gt;
&lt;p&gt;The PC-client equivalent is not on the public record as of May 2026. Microsoft Learn&apos;s Pluton page does not mention SPDM, DSP0274, MCTP, or component attestation [@ms-learn-pluton]. There is no Microsoft-published Windows feature or Pluton-firmware milestone that names &quot;SPDM responder&quot; or &quot;component attestation on PC&quot; as a roadmap deliverable. The architectural question -- whether Pluton becomes the platform&apos;s SPDM responder, whether each component (NVMe controller, Wi-Fi card) is its own responder and Pluton aggregates the evidence, or whether Windows Defender System Guard owns the Windows-side appraiser -- is not answered by any published Microsoft document on the public record as of May 2026. The closest existing reference design lives in &lt;code&gt;chipsalliance/caliptra-mcu-sw&lt;/code&gt; (Rust SPDM responder, X.509-anchored mutual auth), and the most likely standards venues for a PC-client profile are the DMTF SPDM WG (the wire protocol owner) and the OCP Security WG (the appraisal-framework owner). Until Microsoft publishes a Windows-feature surface that owns the SPDM responder on PC, &quot;Pluton attests the host SoC, period&quot; is the article&apos;s honest description of the 2026 state.&lt;/p&gt;
&lt;h3&gt;Open problem 4 -- Pluton-Caliptra interoperation&lt;/h3&gt;
&lt;p&gt;A Pluton-rooted client should, in principle, be able to attest to a Caliptra-rooted server in a single end-to-end protocol with both roots of trust visible in the resulting evidence chain. The wire-protocol candidates exist and are largely standardised. What is missing is the &lt;em&gt;composite-attestation profile&lt;/em&gt; that wires them into a single client-to-server flow.&lt;/p&gt;
&lt;p&gt;The candidate stack as of May 2026 lives across three SDOs and one OCP project. The DMTF owns SPDM 1.3 for component-to-component attestation [@dmtf-dsp0274] [@caliptra-mcu-spdm]. The IETF Remote Attestation Procedures (RATS) Working Group owns the architectural primitives for what an evidence-and-results message &lt;em&gt;contains&lt;/em&gt;: RFC 9711 (April 2025, Standards Track) is the Entity Attestation Token (EAT), a CBOR Web Token (CWT) or JSON Web Token (JWT) form for &lt;em&gt;&quot;an attested claims set that describes the state and characteristics of an entity&quot;&lt;/em&gt; [@ietf-rfc9711]; &lt;code&gt;draft-ietf-rats-corim-10&lt;/code&gt; (in WG Last Call as of March 2026) is the Concise Reference Integrity Manifest, the appraisal-time profile for &lt;em&gt;&quot;Endorsements and Reference Values in CBOR format&quot;&lt;/em&gt; [@ietf-corim]; &lt;code&gt;draft-ietf-rats-msg-wrap-23&lt;/code&gt; (in the RFC Editor queue since December 2025) is the Conceptual Message Wrapper, a CBOR-tag / JWT / CWT / X.509-extension envelope for &lt;em&gt;composing&lt;/em&gt; evidence, attestation results, endorsements, and reference values across protocols [@ietf-msg-wrap]. The full RATS WG document inventory at &lt;code&gt;datatracker.ietf.org/wg/rats/documents/&lt;/code&gt; shows additional active drafts on multi-verifier composition, posture-assessment, EAR (an evidence-appraisal-results profile), and PKIX key attestation [@ietf-rats-wg-docs]. The OCP Security WG owns the third-party appraisal framework: OCP S.A.F.E. v2.0 (March 2026) added explicit CoRIM SFR support and is the public mechanism by which a fleet operator certifies that a vendor&apos;s firmware-appraisal evidence has been independently audited [@ocp-safe-framework]. Caliptra 2.0&apos;s reference stack already wires SPDM, MCTP, and PLDM [@caliptra-ocp-2024-news]; the Caliptra MCU Rust responder shows the SPDM endpoint shape [@caliptra-mcu-spdm].&lt;/p&gt;
&lt;p&gt;What is &lt;em&gt;missing&lt;/em&gt; is a single published profile that walks the chain end to end: a Pluton-rooted Windows client emits a &lt;code&gt;Get-Tpm&lt;/code&gt;-derived attestation (Pluton acting as evidence producer); the network carries CMW-wrapped evidence with a CoRIM endorsement set the verifier consumes; the verifier emits an EAT-formatted attestation result; a Caliptra-rooted server consumes the result and gates fleet membership. Each leg has a draft. No public SDO document binds them into a single Pluton-Caliptra composite-attestation profile with reference implementations on both ends. The natural venue is a joint DMTF SPDM WG and OCP Security WG profile, with IETF RATS as the architectural reference; the natural reference implementation pair is &lt;code&gt;chipsalliance/caliptra-mcu-sw&lt;/code&gt; on the responder side and a Windows-feature surface (which Microsoft has not named publicly) on the client side. Until that joint profile exists and ships reference implementations, Pluton-Caliptra interoperation in 2026 is two roots-of-trust deployed, with no published end-to-end protocol that visibly carries both signatures into a single evidence chain.&lt;/p&gt;
&lt;h3&gt;Open problem 5 -- Supply-chain integrity beyond firmware signing&lt;/h3&gt;
&lt;p&gt;The Pluton signing root protects firmware integrity &lt;em&gt;after&lt;/em&gt; the chip ships. Listing the supply-chain steps in chronological order makes the residual trust gap concrete: (1) the IP-licensing handshake from Microsoft to AMD / Intel / Qualcomm; (2) tape-out and process-design-kit integration at TSMC; (3) wafer fabrication; (4) per-vendor package assembly; (5) OEM motherboard integration; (6) OEM firmware integration (BIOS / UEFI vendor code that surrounds the Pluton block); (7) retail distribution. None of these steps is presently attested by Pluton itself; the on-die signing root is &lt;em&gt;applied&lt;/em&gt; at step 6 and &lt;em&gt;exercised&lt;/em&gt; from step 7 onward, but steps 1-5 are out of band of the chip&apos;s RoT.&lt;/p&gt;
&lt;p&gt;The closest existing partial answer is a layered combination of three primitives. First, DICE -- TCG&apos;s Device Identifier Composition Engine -- gives every component a &lt;em&gt;Hardware Root of Trust (HRoT) which uniquely identifies the component and attests component firmware&lt;/em&gt; [@tcg-dice], anchored by a per-die Unique Device Secret (UDS) that derives a Compound Device Identifier (CDI) per layer; the Open Profile for DICE v2.6 [@open-dice] is the reference profile and explicitly cites the TCG normative parent. DICE answers step 4-5 (per-package and per-board identity) provided the integrator provisions a UDS on the die. Second, SPDM 1.3 [@dmtf-dsp0274] [@caliptra-mcu-spdm] is the wire protocol that surfaces those DICE identities to a verifier at runtime: a per-component SPDM responder (carried over MCTP / PLDM in Caliptra 2.0&apos;s stack [@caliptra-ocp-2024-news]) emits a measurement set tied to its CDI. Third, OCP S.A.F.E. (Security Appraisal Framework and Enablement) v2.0 [@ocp-safe-framework] is the third-party-audit framework that lets a fleet operator certify that a Device Vendor&apos;s firmware was assessed by a Security Review Provider; the v2.0 March 2026 revision explicitly added CoRIM SFR support, wiring S.A.F.E. into the IETF RATS appraisal stack [@ietf-corim]. Together, DICE + SPDM + S.A.F.E. answer &quot;is each component what its vendor said it was, and has the firmware been independently appraised?&quot;&lt;/p&gt;
&lt;p&gt;What is &lt;em&gt;not&lt;/em&gt; built is the verifier infrastructure that consumes that evidence end to end. There is no public per-component-EK transparency log analogous to Certificate Transparency for the web PKI; there is no Pluton-rooted client-side appraiser that consumes per-component SPDM evidence and gates Windows boot on it; there is no shipping fleet-side hardware-bill-of-materials (HBOM) audit pipeline that ingests S.A.F.E. reports and Caliptra-rooted server attestations together. The supply-chain trust is &lt;em&gt;named&lt;/em&gt; by DICE + SPDM + S.A.F.E.; it is not &lt;em&gt;operationalised&lt;/em&gt; end to end on a 2026 Windows 11 client. The honest framing is: Pluton&apos;s signing root closes step 6 and step 7; DICE + SPDM + S.A.F.E. are the public standards that, if implemented in the Windows feature stack, would close steps 4-5; steps 1-3 (IP licensing, tape-out, wafer) remain out of band of any of the public standards above.&lt;/p&gt;
&lt;h3&gt;The 10-property scoreboard for an ideal client-PC on-die RoT&lt;/h3&gt;
&lt;p&gt;Five open problems converge onto a single scoreboard. This article&apos;s SOTA review enumerates ten properties an ideal client-PC on-die Root of Trust in 2026 would satisfy (expanding the prior article&apos;s six TPM-ideal properties [@prior-tpm-in-windows] with multi-signer governance, public RTL, native PQC, and component attestation): (1) on-die location with no off-package bus; (2) an isolated TEE shared with nothing else; (3) memory-protected DRAM with AES + authenticated + anti-replay protection; (4) OS-channel firmware updates; (5) memory-safe firmware language; (6) multi-signer firmware authentication; (7) public RTL and verification flow; (8) native post-quantum primitives (ML-DSA, ML-KEM); (9) component attestation across PCIe / NVMe / NIC via SPDM 1.3; (10) high-assurance certification depth (Common Criteria EAL4+ and FIPS 140-3). No shipping method satisfies all ten; the matrix below shows where each design sits.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Pluton-on-PC 2026&lt;/th&gt;
&lt;th&gt;Apple SEP (A14/M1+)&lt;/th&gt;
&lt;th&gt;OpenTitan (Earl Grey / Darjeeling)&lt;/th&gt;
&lt;th&gt;Caliptra 2.0 (RTL freeze Oct 2024)&lt;/th&gt;
&lt;th&gt;Cerberus (current production)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;1. On-die, no bus&lt;/td&gt;
&lt;td&gt;Yes [@ms-pluton-blog-2020]&lt;/td&gt;
&lt;td&gt;Yes [@apple-sep]&lt;/td&gt;
&lt;td&gt;Discrete or in-package&lt;/td&gt;
&lt;td&gt;Yes [@caliptra-github]&lt;/td&gt;
&lt;td&gt;No (discrete on BMC)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Isolated TEE&lt;/td&gt;
&lt;td&gt;Yes (dedicated)&lt;/td&gt;
&lt;td&gt;Yes [@apple-sep]&lt;/td&gt;
&lt;td&gt;Yes (whole chip)&lt;/td&gt;
&lt;td&gt;Yes (RTM block)&lt;/td&gt;
&lt;td&gt;Yes (whole chip)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. AES + authenticated + anti-replay DRAM&lt;/td&gt;
&lt;td&gt;Not on public record&lt;/td&gt;
&lt;td&gt;Yes (A14/M1+) [@apple-sep]&lt;/td&gt;
&lt;td&gt;Limited (chip-internal SRAM)&lt;/td&gt;
&lt;td&gt;N/A (no DRAM responder role)&lt;/td&gt;
&lt;td&gt;N/A (server BMC)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. OS-channel firmware updates&lt;/td&gt;
&lt;td&gt;Yes (Windows Update) [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;Yes (iOS / macOS) [@apple-sep]&lt;/td&gt;
&lt;td&gt;Project-managed&lt;/td&gt;
&lt;td&gt;Server platform updates&lt;/td&gt;
&lt;td&gt;OEM / operator updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Memory-safe firmware&lt;/td&gt;
&lt;td&gt;Yes (Rust 2024+) [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;Apple-customised L4 [@apple-sep]&lt;/td&gt;
&lt;td&gt;Rust runtime in OpenTitan codebase&lt;/td&gt;
&lt;td&gt;Rust [@caliptra-github] [@caliptra-mcu-spdm]&lt;/td&gt;
&lt;td&gt;C / C++ [@azure-cerberus-github]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Multi-signer&lt;/td&gt;
&lt;td&gt;No (Microsoft only)&lt;/td&gt;
&lt;td&gt;No (Apple only)&lt;/td&gt;
&lt;td&gt;No (per-deployment)&lt;/td&gt;
&lt;td&gt;Multi-vendor by deployment, single per chip [@caliptra-github]&lt;/td&gt;
&lt;td&gt;Per-deployment signer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Public RTL and verification&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes [@opentitan-home] [@opentitan-commercial]&lt;/td&gt;
&lt;td&gt;Yes [@caliptra-github]&lt;/td&gt;
&lt;td&gt;Yes (reference impl) [@azure-cerberus-github]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. Native PQC (ML-DSA, ML-KEM)&lt;/td&gt;
&lt;td&gt;No public commitment date&lt;/td&gt;
&lt;td&gt;No public commitment date&lt;/td&gt;
&lt;td&gt;On roadmap [@opentitan-home]&lt;/td&gt;
&lt;td&gt;Yes (RTL freeze incl. Dilithium + Kyber) [@caliptra-ocp-2024-news]&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9. Component attestation (SPDM 1.3)&lt;/td&gt;
&lt;td&gt;No (open problem 3)&lt;/td&gt;
&lt;td&gt;Apple-private equivalents&lt;/td&gt;
&lt;td&gt;Not yet&lt;/td&gt;
&lt;td&gt;Yes (Reference Stack: MCTP PLDM, SPDM) [@caliptra-ocp-2024-news] [@caliptra-mcu-spdm]&lt;/td&gt;
&lt;td&gt;NIST SP 800-193 framing [@ms-learn-cerberus]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10. EAL4+ and FIPS 140-3&lt;/td&gt;
&lt;td&gt;No equivalent posture in 2026 [@bsi-slb-9670-cc]&lt;/td&gt;
&lt;td&gt;Not pursued for SEP&lt;/td&gt;
&lt;td&gt;In assessment&lt;/td&gt;
&lt;td&gt;Not pursued&lt;/td&gt;
&lt;td&gt;Some certifications via OEM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Properties satisfied&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4 (1, 2, 4, 5)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4 (1, 2, 3, 4)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2 (5, 7)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3 (5, 7, 8) -- on track for 9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1-2 (7 + partial 9)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The matrix says two things at once. First, no shipping on-die RoT in 2026 satisfies more than four of the ten properties; the scoreboard is sparse on purpose. Second, the closest &lt;em&gt;trajectory&lt;/em&gt; to the ten-property ideal is not any single design; it is the union of Pluton&apos;s properties (1, 2, 4, 5), Caliptra&apos;s open RTL and PQC commitments (7, 8, 9), and OpenTitan&apos;s open RTL (7). A hypothetical Pluton variant that adopted Caliptra-style multi-signer governance, OpenTitan-style RTL transparency, and the Caliptra 2.0 SPDM responder reference stack would satisfy 1, 2, 4, 5, 6, 7, 8, 9 -- eight of the ten -- with high-assurance certification (10) the residual procurement question. That hypothetical Pluton has not been publicly proposed by Microsoft. It is, however, the design the matrix names as the destination if all five open problems above were closed.&lt;/p&gt;
&lt;h3&gt;The shape of the unanswered question&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Open problem&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;th&gt;Closest existing partial result&lt;/th&gt;
&lt;th&gt;Outstanding gap&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Multi-signer client RoT&lt;/td&gt;
&lt;td&gt;Single-signer revocation impossibility&lt;/td&gt;
&lt;td&gt;Caliptra (multi-vendor by deployment, single-signer per chip) [@caliptra-github]&lt;/td&gt;
&lt;td&gt;No two-signer-per-chip proposal for client&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regulatory jurisdiction&lt;/td&gt;
&lt;td&gt;Sovereign procurement, EU CRA (in force Dec 10 2024, reporting from Sep 11 2026, main obligations from Dec 11 2027) [@eu-commission-cra]&lt;/td&gt;
&lt;td&gt;March 2022 Dell / Lenovo posture [@register-2022-pluton] [@pcworld-2022-pluton]&lt;/td&gt;
&lt;td&gt;No sovereign Pluton variant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SPDM 1.3 on PC&lt;/td&gt;
&lt;td&gt;Component attestation beyond the SoC&lt;/td&gt;
&lt;td&gt;Caliptra 2.0 reference stack with SPDM [@caliptra-ocp-2024-news] [@caliptra-mcu-spdm]&lt;/td&gt;
&lt;td&gt;No PC-client SPDM responder named on Microsoft Learn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pluton-Caliptra interop&lt;/td&gt;
&lt;td&gt;Composite client-to-server attestation&lt;/td&gt;
&lt;td&gt;RATS EAT [@ietf-rfc9711] + CoRIM [@ietf-corim] + CMW [@ietf-msg-wrap] + S.A.F.E. [@ocp-safe-framework]&lt;/td&gt;
&lt;td&gt;No joint DMTF / OCP / RATS profile binding the chain end to end&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supply-chain integrity beyond firmware signing&lt;/td&gt;
&lt;td&gt;Pre-ship trust (steps 1-5 of the chain)&lt;/td&gt;
&lt;td&gt;DICE [@tcg-dice] [@open-dice] + SPDM [@dmtf-dsp0274] + S.A.F.E. [@ocp-safe-framework]&lt;/td&gt;
&lt;td&gt;Verifier infrastructure (per-component-EK transparency, HBOM appraiser) not built&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;All five share the same shape. Pluton has &lt;em&gt;narrowed&lt;/em&gt; but not eliminated structural classes of trust. On-die narrowed but did not eliminate the silicon supply chain trust. Microsoft-rooted firmware servicing narrowed but did not eliminate the firmware-signing trust. Component attestation, when it ships on PC, will narrow but not eliminate the per-component supply-chain trust. Each Pluton design choice trades one trust for another; the residual trusts are the ones the article cannot answer technically and must label politically.&lt;/p&gt;
&lt;p&gt;On Monday morning, what does the Windows engineer reading this actually do?&lt;/p&gt;
&lt;h2&gt;10. The Pluton checklist for 2026&lt;/h2&gt;
&lt;p&gt;Five questions. Each has a one-paragraph answer and a verifiable command or check. The reader who skipped sections 6 and 8 will still avoid the most expensive mistake -- counting &quot;Pluton present&quot; as &quot;Pluton enabled.&quot;&lt;/p&gt;
&lt;h3&gt;Q1 -- Is Pluton present on this device?&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Get-Tpm&lt;/code&gt; in PowerShell reports &lt;code&gt;ManufacturerIdTxt&lt;/code&gt;. The four-character ASCII manufacturer string distinguishes the realisation. &lt;code&gt;MSFT&lt;/code&gt; is Pluton; &lt;code&gt;INTC&lt;/code&gt; is Intel PTT; &lt;code&gt;AMD &lt;/code&gt; (with trailing space) is AMD fTPM; &lt;code&gt;IFX&lt;/code&gt;, &lt;code&gt;STM&lt;/code&gt;, and &lt;code&gt;NTC&lt;/code&gt; cover Infineon, STMicro, and Nuvoton discrete TPMs respectively. The prior article&apos;s section 9 [@prior-tpm-in-windows] documents the broader manufacturer-string discovery path. The new Pluton-specific check is the four-letter &lt;code&gt;MSFT&lt;/code&gt; value.&lt;/p&gt;

Open PowerShell as administrator and run:&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;Get-Tpm | Select-Object ManufacturerIdTxt, ManufacturerVersion, TpmPresent, TpmReady
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A &lt;code&gt;ManufacturerIdTxt&lt;/code&gt; of &lt;code&gt;MSFT&lt;/code&gt; indicates Microsoft Pluton. &lt;code&gt;INTC&lt;/code&gt; is Intel PTT (the firmware TPM in CSME). &lt;code&gt;AMD &lt;/code&gt; (with the trailing space) is AMD fTPM (the firmware TPM in the PSP). The same logic is captured in the JavaScript &lt;code&gt;&amp;lt;RunnableCode&amp;gt;&lt;/code&gt; mock in section 5 above. For richer detail, run &lt;code&gt;tpm.msc&lt;/code&gt; -- the Microsoft Management Console snap-in shows the full TPM identity.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Q2 -- Is Pluton &lt;em&gt;enabled&lt;/em&gt;, not just &lt;em&gt;present&lt;/em&gt;?&lt;/h3&gt;
&lt;p&gt;This is the §6 soft-fuse trap. On AMD Ryzen 6000 / 7000 / 8000 silicon, &lt;code&gt;Get-Tpm&lt;/code&gt; returning &lt;code&gt;MSFT&lt;/code&gt; proves Pluton is &lt;em&gt;exposed&lt;/em&gt; as the TPM but does not, on its own, prove Pluton is &lt;em&gt;enabled&lt;/em&gt; in firmware (§6&apos;s Definition + Callout walk the PSP directory 0xB BIT36 mechanism Garrett 2022 documents [@garrett-2022-pluton-rev]). The procurement-relevant action is to audit BIOS-level Pluton (HSP) toggles and correlate &lt;code&gt;Get-Tpm&lt;/code&gt;&apos;s manufacturer string with &lt;code&gt;Get-PnpDevice&lt;/code&gt; / Device Manager before counting an AMD-Ryzen-6000-class device as Pluton-protected. On Lenovo AMD Ryzen 6000 ThinkPads specifically, the launch posture was Pluton present but disabled by default [@register-2022-pluton] -- so a 2022 ThinkPad inventory query that finds Ryzen 6000 silicon will not, on its own, tell the operator whether Pluton is doing any work.&lt;/p&gt;
&lt;h3&gt;Q3 -- Is Pluton firmware current?&lt;/h3&gt;
&lt;p&gt;Microsoft publishes Pluton firmware via Windows Update [@ms-learn-pluton]. Microsoft does not publish a per-release notes feed for Pluton firmware, so the operator must rely on the general Windows Update history and the chip vendor&apos;s advisory feed (Intel SA-* for Intel-Pluton silicon; AMD&apos;s security bulletins for AMD-Pluton silicon). The procurement-relevant property is that the channel exists and ships. The procurement-relevant &lt;em&gt;question&lt;/em&gt; is whether the operator&apos;s organisation is willing to depend on that channel.&lt;/p&gt;
&lt;h3&gt;Q4 -- When to &lt;em&gt;prefer&lt;/em&gt; Pluton over dTPM, PTT, or AMD fTPM&lt;/h3&gt;
&lt;p&gt;Three procurement scenarios where Pluton is the right answer in 2026.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default Windows 11 client procurement.&lt;/strong&gt; Pluton on AMD Ryzen 6000 and later, Intel Core Ultra 200V Series and Series 3, and Snapdragon X Series [@ms-learn-pluton]. The Microsoft-supported configuration; the path of least administrative resistance; the only realisation that ships memory-safe firmware on the Patch Tuesday cadence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adversary model includes physical access.&lt;/strong&gt; Andzakovic-class bus sniffing [@andzakovic-2019-tpm-sniffing], faulTPM-class voltage glitching [@jacob-2023-faultpm]. Pluton (on-die, dedicated TEE) closes both surfaces structurally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Need fast firmware updates for security responses to TCG-reference-code bugs.&lt;/strong&gt; CVE-2025-2884 is the worked example [@cve-2025-2884]. Pluton&apos;s Windows Update servicing is the only realisation in 2026 that does not depend on the OEM UEFI capsule path.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Q5 -- When to &lt;em&gt;not&lt;/em&gt; prefer it&lt;/h3&gt;
&lt;p&gt;Three procurement scenarios where Pluton is not the right answer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Regulated fleets requiring a non-US trust anchor.&lt;/strong&gt; German BSI PP-0084-class procurement [@bsi-pp-0084], EU sovereign workloads. Hardened dTPM (Infineon SLB 9670 / 9672, STMicro ST33TPHF) has the certified posture [@bsi-slb-9670-cc]; Pluton has no equivalent EAL4+ certification path on the public record as of 2026 [@bsi-slb-9670-cc].&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Air-gapped fleets that cannot accept Windows-Update-delivered firmware.&lt;/strong&gt; Offline UEFI capsule servicing remains the only operationally feasible patch path; dTPM is the mechanically right choice for that fleet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-vendor sourcing requirements.&lt;/strong&gt; dTPM has multiple silicon vendors (Infineon, STMicro, Nuvoton). Pluton has one signer per chip and only the AMD / Intel / Qualcomm silicon paths Microsoft has licensed. Datacenter operators who need multi-vendor sourcing should look at Caliptra [@caliptra-github] -- not a Pluton substitute on Windows clients, but the right answer for datacenter SoC procurement.&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Choose Pluton when...&lt;/th&gt;
&lt;th&gt;Choose dTPM (or Caliptra) when...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Default Windows 11 client procurement [@ms-learn-pluton]&lt;/td&gt;
&lt;td&gt;Sovereign procurement (German BSI, EU sovereign)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adversary model includes physical access&lt;/td&gt;
&lt;td&gt;Air-gapped fleet, no Windows Update channel acceptable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need Patch Tuesday firmware response cadence&lt;/td&gt;
&lt;td&gt;Need EAL4+ / FIPS 140-3 certification posture today&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Want memory-safe Rust firmware (2024+ silicon)&lt;/td&gt;
&lt;td&gt;Need multi-vendor silicon sourcing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Want on-die dedicated TEE versus shared PSP/CSME&lt;/td&gt;
&lt;td&gt;Datacenter SoC integration (Caliptra)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

flowchart TD
    Start[Need a TPM/RoT in 2026?]
    Q1{Datacenter SoC?}
    Q2{Sovereign / non-US RoT required?}
    Q3{Air-gapped fleet?}
    Q4{Default Windows 11 enterprise?}
    Caliptra[Caliptra 1.0]
    DTPM[Hardened dTPM&lt;br /&gt;Infineon SLB 9670/9672&lt;br /&gt;or STMicro ST33TPHF]
    DTPMcap[Hardened dTPM&lt;br /&gt;offline UEFI capsule path]
    Pluton[Pluton on AMD Ryzen 6000+&lt;br /&gt;or Intel Core Ultra 200V+&lt;br /&gt;or Snapdragon X Series]
    Start --&amp;gt; Q1
    Q1 --&amp;gt;|Yes| Caliptra
    Q1 --&amp;gt;|No| Q2
    Q2 --&amp;gt;|Yes| DTPM
    Q2 --&amp;gt;|No| Q3
    Q3 --&amp;gt;|Yes| DTPMcap
    Q3 --&amp;gt;|No| Q4
    Q4 --&amp;gt;|Yes| Pluton
    Q4 --&amp;gt;|No| DTPM
&lt;p&gt;We started with the question Microsoft answered architecturally before the prior article posed it. Where does that leave the political question that even the architectural answer cannot resolve?&lt;/p&gt;
&lt;h2&gt;11. Frequently asked questions, and one more political question&lt;/h2&gt;
&lt;p&gt;The architectural answer to &quot;what is the cost of letting Microsoft sign the chip&apos;s firmware?&quot; is partial and has been answered by every section above. The remaining piece is a set of common misconceptions, then a closing tied to the prior article.&lt;/p&gt;

No. fTPM is a TPM 2.0 task running inside an existing TEE -- Intel CSME (PTT) or AMD PSP. Pluton is a *dedicated* IP block on the SoC die that does not share a TEE with anything else. The threat-model gap that faulTPM exposed [@jacob-2023-faultpm] only closes for Pluton-as-Pluton, not for fTPM running on Pluton-equipped silicon. AMD-Ryzen-6000-class chips can ship Pluton silicon next to the existing PSP-based fTPM; §5 documents the OEM-picks-one mechanism via the Pluton (HSP) BIOS toggle [@garrett-2022-pluton-rev], and faulTPM-class attacks remain valid only on systems the OEM exposes as fTPM.

No. Pluton implements the TCG TPM 2.0 specification plus Microsoft-specific extensions like SHACK [@ms-pluton-blog-2020]. From Windows&apos;s perspective, Pluton *is* a TPM, with a different update story (Windows Update versus OEM UEFI capsule) and a different trust anchor (Microsoft as firmware signer). Whether the OEM exposes Pluton &quot;as the TPM&quot; or alongside a discrete TPM is an OEM choice [@ms-learn-pluton-as-tpm]: *&quot;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, while having Pluton available to the system as a security processor for use cases beyond the TPM&quot;* [@ms-learn-pluton-as-tpm].

No. Pluton firmware is Microsoft-authored and Microsoft-signed [@ms-learn-pluton]. Caliptra is Microsoft-co-contributed and open source [@caliptra-github] -- but Caliptra is datacenter-class, not a Pluton substitute on Windows clients. The closest open-source on-die RoT for clients is OpenTitan [@opentitan-home] [@opentitan-commercial], which as of 2026 is discrete or in-package, not on-die in an application SoC. Tock OS [@tock-github] is the most mature publicly reviewed memory-safe embedded RTOS that *could* host Pluton-class workloads; whether it is the actual runtime on Pluton-on-PC is not on the public record.

No. Pluton centralises firmware *signing*, not key access. The November 17, 2020 announcement specifies SHACK -- Secure Hardware Cryptography Key -- which states that keys *&quot;are never exposed outside of the protected hardware, even to the Pluton firmware itself&quot;* [@ms-pluton-blog-2020]. Microsoft signs the firmware that runs on Pluton; the keys Pluton creates and seals stay inside Pluton. (The prior article&apos;s FAQ entry on this point [@prior-tpm-in-windows] makes the same observation about the underlying TPM 2.0 non-exportability property.)

Three things, in order. First, no off-package bus to sniff -- Andzakovic-class attacks [@andzakovic-2019-tpm-sniffing] have nothing to attack on Pluton silicon. Second, Patch Tuesday-cadence firmware fixes for TCG-reference-code bugs -- CVE-2025-2884 [@cve-2025-2884] is the worked example; the Pluton Windows Update path collapses the dwell time that a discrete-TPM fix would otherwise spend in OEM UEFI capsule queues. Third, Microsoft-authored Rust firmware on 2024+ AMD and Intel silicon [@ms-learn-pluton]; the bug class that memory-safe firmware structurally rules out is large. The cost of all three is a Microsoft signing key as the chip&apos;s trust anchor.

Pluton inherits the TCG TPM 2.0 algorithm-agility property the prior article documented in section 8.1 [@prior-tpm-in-windows]. Caliptra 2.0 has a stated commitment to ML-DSA and ML-KEM [@caliptra-github]; Pluton-firmware post-quantum migration tracks similar primitives, but no Microsoft public commitment to a specific date for a post-quantum Pluton firmware release exists in 2026. The point of the algorithm-agility property is that the migration is a firmware change, not a silicon respin -- which is precisely the property the Pluton update path is designed to operationalise.

Generally no. Disabling Pluton on AMD Ryzen 6000+ via the BIOS toggle does not return the system to a *stronger* security posture; it returns it to AMD fTPM (or no TPM at all, depending on the OEM&apos;s BIOS design). The faulTPM-class attack surface that motivated the move to Pluton in the first place re-opens [@jacob-2023-faultpm]. The procurement scenarios in section 10 list the narrow cases where dTPM is the right answer; in those cases the right action is to procure dTPM-equipped silicon, not to disable Pluton on Pluton-equipped silicon.
&lt;h3&gt;A closing tied to the prior article&lt;/h3&gt;
&lt;p&gt;Return to the line that opened this article. &lt;em&gt;&quot;The TPM was supposed to be the part of the system you didn&apos;t have to trust anyone for. Twenty-five years later, the trust question is back -- and the answer is now political&quot;&lt;/em&gt; [@prior-tpm-in-windows]. The architectural answer to that question existed inside an Xbox before the question was asked. Twelve years of Microsoft security silicon -- Xbox One in 2013, Project Sopris in 2015, the &lt;em&gt;Seven Properties&lt;/em&gt; paper in 2017, Project Cerberus in 2017, Azure Sphere in 2018, Pluton-on-PC in 2020, AMD Ryzen 6000 silicon in 2022, Linux 6.3 driver in 2023, Caliptra 1.0 in 2024, the CVE-2025-2884 dwell-time test in 2025 -- have shaped the on-die security processor on the modern Windows 11 client.&lt;/p&gt;
&lt;p&gt;The article&apos;s own answer is direct. Pluton makes the political question concrete and unavoidable, but it does not resolve it. On-die closes the bus surface. Dedicated TEE closes the shared-TEE blast radius that defeated AMD fTPM. Memory-safe Rust firmware narrows the bug class that has driven the firmware-CVE economy for a decade. Windows Update collapses the patch latency from OEM-capsule quarters to Patch Tuesday weeks. &lt;em&gt;Each design choice retires a 2014-2024 attack class. Each design choice places a new trust in Microsoft.&lt;/em&gt; The trust question is now visible at every level of the stack: silicon supply chain, firmware language, signing key, update channel, regulatory jurisdiction. It does not go away because Microsoft engineered the chip well. It goes from being a technical question to being a procurement question.&lt;/p&gt;

Pluton makes the political question concrete and unavoidable, but it does not resolve it.
&lt;p&gt;The closing image is operational. An engineer running &lt;code&gt;Get-Tpm&lt;/code&gt; on a Windows 11 laptop in 2026 reads a four-letter token in the manufacturer string. &lt;code&gt;MSFT&lt;/code&gt; is what twelve years of Microsoft security silicon buys you. It is what closed the bus surface that the prior article&apos;s $40 FPGA exploited. It is what closed the shared-TEE surface that faulTPM extracted state from. It is what gives the Patch Tuesday channel something to deliver. It is also what places a single Microsoft signing key as the trust anchor for every Pluton-equipped Windows 11 client. That four-letter token is the article&apos;s subject, the prior article&apos;s epilogue, and the next decade&apos;s procurement question.&lt;/p&gt;
&lt;p&gt;&amp;lt;StudyGuide slug=&quot;microsoft-pluton-continuation&quot; keyTerms={[
  { term: &quot;Pluton&quot;, definition: &quot;Microsoft-designed on-die security processor; named publicly first in April 2018 (Azure Sphere); shipped on Windows-PC SoCs from November 17, 2020 (announcement) and CES 2022 (AMD Ryzen 6000 first silicon). Implements TCG TPM 2.0 plus Microsoft-specific extensions including SHACK.&quot; },
  { term: &quot;On-die Root of Trust (RoT)&quot;, definition: &quot;A hardware Root of Trust integrated as an IP block on the same silicon die as the application processor, with no off-package bus between the CPU and the RoT. Eliminates the bus-sniffing attack surface that defeats discrete TPMs.&quot; },
  { term: &quot;SHACK (Secure Hardware Cryptography Key)&quot;, definition: &quot;Pluton property named in the November 17, 2020 announcement: keys are &apos;never exposed outside of the protected hardware, even to the Pluton firmware itself.&apos; Extends the TCG TPM 2.0 non-exportability boundary inward by one ring.&quot; },
  { term: &quot;Soft-fuse Pluton disable (PSP directory 0xB BIT36)&quot;, definition: &quot;On AMD Ryzen 6000+ platforms, an OEM-controlled bit in the PSP directory that instructs the PSP to silence Pluton without a hardware power-down. Inventory queries that report &apos;Pluton present&apos; may not distinguish enabled from soft-disabled.&quot; },
  { term: &quot;Single-signer revocation impossibility&quot;, definition: &quot;If an on-die RoT firmware can only be authenticated by a single signer S, the chip&apos;s trust anchor cannot be retired without bricking the chip&apos;s firmware-update path, regardless of whether S is compromised, coerced, or jurisdictionally constrained. A key-management impossibility, not a cryptographic one.&quot; },
  { term: &quot;Caliptra&quot;, definition: &quot;Open-source datacenter-class on-die Root of Trust IP, hosted at CHIPS Alliance and co-contributed by Microsoft, Google, AMD, and NVIDIA. Reached 1.0 in April 2024. Multi-vendor by deployment; single-signer per chip.&quot; },
  { term: &quot;OpenTitan&quot;, definition: &quot;Open-source silicon Root of Trust descendant of Google Titan M; commercially available February 13, 2024 with nine coalition members hosted by lowRISC. RISC-V Ibex core with hardware AES, HMAC, KMAC, and OTBN engines.&quot; },
  { term: &quot;SPDM 1.3&quot;, definition: &quot;DMTF DSP0274 wire protocol for component attestation. Caliptra 2.0 commits to it on the server side; the PC-client equivalent is not yet shipping.&quot; },
  { term: &quot;Tock OS&quot;, definition: &quot;Memory-safe Rust embedded operating system for Cortex-M and RISC-V platforms. The most mature publicly reviewed Rust embedded RTOS; whether it is the actual runtime on Pluton-on-PC is not on the public record.&quot; },
  { term: &quot;Seven Properties of Highly Secure Devices&quot;, definition: &quot;Hunt, Letey, Nightingale 2017 framework (MSR-TR-2017-16): hardware-based root of trust, small TCB, defense in depth, compartmentalisation, certificate-based authentication, renewable security via online updates, and failure reporting. Property #6 is the property that distinguishes Pluton-on-PC from a 2014 dTPM.&quot; }
]} /&amp;gt;&lt;/p&gt;
</content:encoded><category>pluton</category><category>tpm</category><category>windows-security</category><category>hardware-security</category><category>caliptra</category><category>on-die-rot</category><category>firmware-security</category><author>noreply@paragmali.com (Parag Mali)</author></item><item><title>The TPM in Windows: One Primitive, Twenty-Five Years, and the Chip Microsoft Bet On Twice</title><link>https://paragmali.com/blog/the-tpm-in-windows-one-primitive-twenty-five-years-and-the-c/</link><guid isPermaLink="true">https://paragmali.com/blog/the-tpm-in-windows-one-primitive-twenty-five-years-and-the-c/</guid><description>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.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><content:encoded>
The TPM (1.2 since 2007, 2.0 since 2014) is the hardware root of trust under almost every Windows security feature shipped since Vista -- BitLocker, Measured Boot, Credential Guard, Windows Hello, device attestation. Twenty-five years of engineering refined a single primitive (measure, extend, seal, quote) into something one chip could underwrite. Twenty-five years of attacks (Andzakovic 2019, TPM-Fail 2020, faulTPM 2023) have argued empirically about how passive that chip can be. The current state of the art -- Microsoft Pluton on the CPU die, Microsoft-signed Rust firmware (on 2024 AMD and Intel platforms) delivered via Windows Update -- closes the bus and the TEE attack surfaces, but centralizes firmware trust on Microsoft. Post-quantum migration is the next frontier.
&lt;h2&gt;1. The chip nobody asked for&lt;/h2&gt;
&lt;p&gt;On June 24, 2021, Microsoft announced Windows 11 [@ms-windows-experience-blog-2021] -- 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. &lt;em&gt;Why was Microsoft willing to take that much heat over a piece of silicon?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The next morning, Microsoft&apos;s security team tried to explain [@ms-security-blog-windows11-2021]. The argument was four words long: hardware root of trust.&lt;/p&gt;

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.
&lt;p&gt;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 [@ms-learn-oem-tpm], every new Windows device model had been contractually required to &quot;implement and enable by default TPM 2.0.&quot; The 2021 mandate did not introduce the chip. It made an existing OEM rule into a visible install gate.&lt;/p&gt;

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 &quot;passive&quot;: it executes commands sent to it but never reaches into the host&apos;s memory.

The PC Health Check tool was pulled and re-released. Reddit and Hacker News spent a weekend arguing about whether Microsoft had effectively bricked older hardware to sell new licenses. Microsoft&apos;s reply -- that TPM-by-default produces measurable population-level security gains even when individual users do not understand it -- was correct, but never quite the rebuttal that a consumer audience could engage with. The politics of &quot;Trusted Computing&quot; had returned, twenty years after the original Stallman objection [@wikipedia-trusted-computing].
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2&gt;2. The problem the TPM was built to solve&lt;/h2&gt;
&lt;p&gt;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&apos;s general availability on February 17, 2000 [@wikipedia-windows-2000] -- 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?&lt;/p&gt;
&lt;p&gt;Software-only key storage was Generation 0. Windows had DPAPI, EFS, and LSA secrets [@ms-learn-cryptography-portal], all deriving their wrapping keys from the user&apos;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&apos;s address space. An attacker who reached SYSTEM (or who carried the disk away to a separate machine) could replay it. A volume encrypted &quot;at rest&quot; 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, &quot;truly can&apos;t leave the TPM&quot; [@ms-learn-how-windows-uses-tpm]. That property cannot be retrofitted onto software-only storage.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In October 1999 [@wikipedia-tcg], 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&apos;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 [@tcg-tpm-main-spec] appeared in 2003 [@wikipedia-tpm]. Atmel, Infineon, and STMicroelectronics built it [@wikipedia-tpm].&lt;/p&gt;
&lt;p&gt;In parallel, Microsoft Research ran its own bet. Paul England, Butler Lampson, John Manferdelli, Marcus Peinado, and Bryan Willman [@england-2003-trusted-open-platform] published &quot;A Trusted Open Platform&quot; in &lt;em&gt;IEEE Computer&lt;/em&gt;, 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 &quot;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.&quot;&lt;/p&gt;
&lt;p&gt;NGSCB never shipped as advertised. By 2005, reports indicated [@wikipedia-ngscb] that Microsoft would ship &quot;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.&quot; The &quot;Nexus&quot; hypervisor, the user-mode high-assurance &quot;agents,&quot; 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.&lt;/p&gt;
&lt;p&gt;The shelved primitives, however, did not die. &lt;em&gt;Measured boot&lt;/em&gt; -- 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 &lt;a href=&quot;https://paragmali.com/blog/bitlocker-on-windows-architecture-attacks-and-the-limits-of-/&quot; rel=&quot;noopener&quot;&gt;BitLocker&lt;/a&gt; and, later, into Windows 8 Measured Boot. &lt;em&gt;Sealed storage&lt;/em&gt; -- a key tied to a measured boot state, unreleasable unless the boot state matches -- became the defining property of every TPM-bound BitLocker volume. &lt;em&gt;Remote attestation&lt;/em&gt; -- a device signing a quote of its own measurements for a remote verifier -- became Device Health Attestation. NGSCB shipped, just not as itself.&lt;/p&gt;

In the early 2000s, Richard Stallman and the Free Software Foundation framed Trusted Computing as &quot;treacherous computing&quot; [@wikipedia-trusted-computing]: hardware secured &quot;for its owner, but also against its owner.&quot; That objection has aged unevenly. The DRM concerns the FSF predicted did not dominate -- Hollywood never got the protected video paths it wanted on PCs. The trust-centralization concern has aged well: the modern Pluton debate raises a structurally similar question about who holds the signing key on the world&apos;s PC fleet, and the answer is now political rather than technical.
&lt;p&gt;TCPA had built a chip that could hold a key the OS couldn&apos;t read. Which keys, under whose authority, against which threats? The first answer was almost good enough -- and it lasted about a decade.&lt;/p&gt;
&lt;h2&gt;3. Generation 1 and Generation 2: TPM 1.1b -&amp;gt; 1.2, and why they failed&lt;/h2&gt;
&lt;p&gt;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 [@andzakovic-2019-tpm-sniffing]. That was your TPM 1.2. It did exactly one job, and Vista&apos;s BitLocker was the first feature to depend on it.&lt;/p&gt;
&lt;p&gt;The architectural skeleton of TPM 1.x [@wikipedia-tpm] 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&apos;s permanent identity. An HMAC-SHA1 authorization model over command parameters. A &quot;Take Ownership&quot; ceremony where the platform owner created the SRK and bound it to an owner secret.&lt;/p&gt;

A TPM-internal register modified only by a one-way &quot;extend&quot; operation: $\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.

The TPM&apos;s permanent identity key, generated at manufacture and accompanied by an EK certificate from the chip vendor&apos;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.

The root of the TPM&apos;s key hierarchy. In TPM 1.x there was exactly one SRK per chip, created during the &quot;Take Ownership&quot; 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.

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&apos;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.
&lt;p&gt;TPM 1.2 [@wikipedia-tpm], 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 [@wikipedia-ngscb] reached volume-license RTM in late 2006 and broad availability in early 2007, BitLocker [@ms-learn-bitlocker] (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 [@ms-learn-oem-secure-boot] shipped with Windows 8 in 2012.&lt;/p&gt;

flowchart TD
    EK[&quot;Endorsement Key (EK)&lt;br /&gt;RSA-2048, burned at manufacture&quot;]
    Owner[&quot;Owner secret&lt;br /&gt;(Take Ownership)&quot;]
    SRK[&quot;Storage Root Key (SRK)&lt;br /&gt;RSA-2048, single per chip&quot;]
    K1[&quot;Storage key&lt;br /&gt;(child)&quot;]
    K2[&quot;Binding key&lt;br /&gt;(child)&quot;]
    K3[&quot;Signing key&lt;br /&gt;(child)&quot;]
    AIK[&quot;Attestation Identity Key&lt;br /&gt;(independent RSA key)&quot;]
    PCA[&quot;Privacy CA&quot;]&lt;pre&gt;&lt;code&gt;Owner --&amp;gt; SRK
SRK --&amp;gt; K1
SRK --&amp;gt; K2
SRK --&amp;gt; K3
AIK --&amp;gt; PCA
EK -. cert .-&amp;gt; PCA
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;NIST SP 800-131A deprecated SHA-1 [@nist-sp-800-131a-r2] digital signatures starting in 2011. The 2017 SHAttered collision [@google-2017-shattered] 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 &quot;SHA-1 in PCRs is fine because nobody can collide it.&quot; 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&apos;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.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Generation&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Hash&lt;/th&gt;
&lt;th&gt;Asym&lt;/th&gt;
&lt;th&gt;Hierarchies&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Software-only (LSA / PStore)&lt;/td&gt;
&lt;td&gt;1996+ [@wikipedia-windows-nt-4]&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;NT 4.0 baseline; disk-readable wrapping keys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Software-only (DPAPI / EFS)&lt;/td&gt;
&lt;td&gt;2000+&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;RSA-1024 (EFS)&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;Defeated by offline disk theft and by SYSTEM compromise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TPM 1.1b&lt;/td&gt;
&lt;td&gt;2003&lt;/td&gt;
&lt;td&gt;SHA-1&lt;/td&gt;
&lt;td&gt;RSA-2048&lt;/td&gt;
&lt;td&gt;1 (SRK)&lt;/td&gt;
&lt;td&gt;First mass deployment; superseded by 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TPM 1.2&lt;/td&gt;
&lt;td&gt;2003-2014&lt;/td&gt;
&lt;td&gt;SHA-1&lt;/td&gt;
&lt;td&gt;RSA-2048&lt;/td&gt;
&lt;td&gt;1 (SRK)&lt;/td&gt;
&lt;td&gt;Vista/7/8 BitLocker baseline; algorithm-rigid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TPM 2.0&lt;/td&gt;
&lt;td&gt;2014+&lt;/td&gt;
&lt;td&gt;SHA-1 + SHA-256 (+ SHA-3, future PQC)&lt;/td&gt;
&lt;td&gt;RSA, ECC&lt;/td&gt;
&lt;td&gt;4 (Platform / Endorsement / Storage / Null)&lt;/td&gt;
&lt;td&gt;Current; ISO/IEC 11889:2015&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;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?&lt;/p&gt;
&lt;h2&gt;4. Generation 3: TPM 2.0 -- one primitive, many algorithms&lt;/h2&gt;
&lt;p&gt;On April 9, 2014 [@wikipedia-tpm], the Trusted Computing Group [@tcg-tpm2-library-spec] 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 [@iso-iec-11889-1-2015], which removed the &quot;industry consortium&quot; objection from procurement teams in regulated environments. By July 28, 2016 [@ms-learn-oem-tpm], Microsoft had quietly made TPM 2.0 a contractual must-have for every new Windows OEM SKU.&lt;/p&gt;
&lt;p&gt;Four conceptual changes carry the architecture.&lt;/p&gt;
&lt;h3&gt;4.1 Algorithm agility&lt;/h3&gt;
&lt;p&gt;Every cryptographic algorithm in TPM 2.0 carries an integer identifier. PCRs no longer have a single hash; they have &lt;em&gt;banks&lt;/em&gt;, one per supported algorithm, all extended in parallel by a single command. Microsoft&apos;s own documentation [@ms-learn-how-windows-uses-tpm] describes the contract: when firmware extends PCR[0] with the IBV&apos;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.&lt;/p&gt;

A property of a cryptographic protocol or device whereby the choice of hash, signature, or encryption algorithm is decoupled from the protocol&apos;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.
&lt;h3&gt;4.2 Four hierarchies, four primary seeds&lt;/h3&gt;
&lt;p&gt;Where TPM 1.x had a single SRK, TPM 2.0 has four hierarchies -- Platform, Endorsement, Storage, Null -- each rooted in a per-hierarchy &lt;em&gt;primary seed&lt;/em&gt;. Primary keys are derived deterministically: call &lt;code&gt;TPM2_CreatePrimary&lt;/code&gt; 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 [@arthur-challener-goldman-2015] -- 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&apos;s endorsement identity.&lt;/p&gt;

flowchart TD
    subgraph Platform[&quot;Platform Hierarchy&lt;br /&gt;(firmware-only)&quot;]
      PSeed[&quot;Platform Primary Seed&quot;]
      PSRK[&quot;Platform SRK&quot;]
      PSeed --&amp;gt; PSRK
    end
    subgraph Endorsement[&quot;Endorsement Hierarchy&lt;br /&gt;(privacy-sensitive)&quot;]
      ESeed[&quot;Endorsement Primary Seed&quot;]
      EK[&quot;EK&quot;]
      AK[&quot;AK&lt;br /&gt;(restricted signing)&quot;]
      ESeed --&amp;gt; EK
      ESeed --&amp;gt; AK
      EK -. cert .-&amp;gt; AK
    end
    subgraph Storage[&quot;Storage Hierarchy&lt;br /&gt;(owner-cleared)&quot;]
      SSeed[&quot;Storage Primary Seed&quot;]
      SRK[&quot;SRK&quot;]
      Sealed[&quot;Sealed VMK&lt;br /&gt;(BitLocker)&quot;]
      Bound[&quot;Hello key&lt;br /&gt;(per-user)&quot;]
      SSeed --&amp;gt; SRK
      SRK --&amp;gt; Sealed
      SRK --&amp;gt; Bound
    end
    subgraph Null[&quot;Null Hierarchy&lt;br /&gt;(reset on every reboot)&quot;]
      NSeed[&quot;Null Primary Seed&lt;br /&gt;(per-boot random)&quot;]
    end
&lt;h3&gt;4.3 Enhanced Authorization&lt;/h3&gt;
&lt;p&gt;The most interesting change is how TPM 2.0 talks about access control. Every protected object has a &lt;code&gt;policyDigest&lt;/code&gt;, an algorithm-agile hash of an arbitrarily complex set of conditions. To use the object, the caller starts a policy session (&lt;code&gt;TPM2_StartAuthSession&lt;/code&gt; with &lt;code&gt;SE_POLICY&lt;/code&gt;) and walks predicates -- &lt;code&gt;TPM2_PolicyPCR&lt;/code&gt;, &lt;code&gt;TPM2_PolicyAuthorize&lt;/code&gt;, &lt;code&gt;TPM2_PolicySigned&lt;/code&gt;, &lt;code&gt;TPM2_PolicyCommandCode&lt;/code&gt;, &lt;code&gt;TPM2_PolicyAuthValue&lt;/code&gt; -- each extending the running session digest. At the end, the TPM checks that the session digest matches the object&apos;s &lt;code&gt;policyDigest&lt;/code&gt;, and only then authorizes the operation. BitLocker, in its current Microsoft Learn description [@ms-learn-bitlocker], 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.&lt;/p&gt;

TPM 2.0&apos;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.
&lt;h3&gt;4.4 The unifying primitive: measure, extend, seal, quote&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Measure.&lt;/strong&gt; A piece of code computes the hash of the next piece of code (or configuration) about to run.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extend.&lt;/strong&gt; That hash is folded into a PCR via &lt;code&gt;PCR_new = H(PCR_old || hash)&lt;/code&gt;. The operation is one-way: PCRs cannot be rewound.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seal.&lt;/strong&gt; A symmetric key (or arbitrary blob) is encrypted under the TPM&apos;s Storage hierarchy with a &lt;code&gt;policyDigest&lt;/code&gt; that names a specific set of PCR values. &lt;code&gt;TPM2_Unseal&lt;/code&gt; releases the blob if and only if the live PCR state matches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quote.&lt;/strong&gt; 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.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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&apos;s Trusted Boot description [@ms-learn-secure-boot-process] walks the chain.&lt;/p&gt;

sequenceDiagram
    participant FW as Firmware (CRTM)
    participant BM as Bootmgr
    participant Win as Windows kernel
    participant TPM as TPM
    FW-&amp;gt;&amp;gt;TPM: PCR_Extend(PCR[0], H(firmware))
    FW-&amp;gt;&amp;gt;BM: Hand off
    BM-&amp;gt;&amp;gt;TPM: PCR_Extend(PCR[4], H(bootmgr))
    BM-&amp;gt;&amp;gt;TPM: PCR_Extend(PCR[7], H(SecureBoot policy))
    BM-&amp;gt;&amp;gt;Win: Hand off
    Win-&amp;gt;&amp;gt;TPM: PCR_Extend(PCR[11], H(BitLocker control))
    Win-&amp;gt;&amp;gt;TPM: TPM2_Unseal(VMK, policyDigest = PCR[7],PCR[11])
    TPM--&amp;gt;&amp;gt;Win: VMK if PCRs match policy, else error
&lt;p&gt;Now compress the Windows feature catalogue against those four operations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BitLocker [@ms-learn-bitlocker] seals the VMK to a PCR policy.&lt;/li&gt;
&lt;li&gt;Measured Boot and Device Health Attestation [@ms-learn-azure-measured-boot] quote PCRs to a remote verifier.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://paragmali.com/blog/the-windows-secure-kernel/&quot; rel=&quot;noopener&quot;&gt;Credential Guard&lt;/a&gt; [@ms-learn-credential-guard] seals the VBS-isolated NTLM/Kerberos secrets with a policy that includes the VBS measurement.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://paragmali.com/blog/your-face-is-not-your-password-inside-windows-hellos-hardwar/&quot; rel=&quot;noopener&quot;&gt;Windows Hello for Business&lt;/a&gt; [@ms-learn-hello-for-business] creates a per-user RSA-2048 or P-256 key whose authorization policy requires the PIN gesture and is bounded by the TPM&apos;s anti-hammering counter.&lt;/li&gt;
&lt;li&gt;Virtual smart cards, DPAPI-NG, and TPM key attestation [@ms-learn-tpm-key-attestation] for ADCS-issued certificates all sit on the same primitives.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; BitLocker, Measured Boot, Credential Guard, Windows Hello, virtual smart cards, DPAPI-NG, and TPM key attestation are not seven independent uses of a chip. They are seven &lt;em&gt;policy expressions&lt;/em&gt; over the same four operations -- measure, extend, seal, quote -- on the same PCR set. The TPM is not a checkbox shared by features. It is one primitive that &lt;em&gt;defines&lt;/em&gt; what hardware-rooted security can do in Windows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; One primitive -- measure, extend, seal, quote -- underwrites every Windows hardware-rooted security feature shipped since Vista. The TPM&apos;s value to Windows is not a list of cryptographic operations. It is a single, composable contract: &quot;this key only releases when the boot looks like &lt;em&gt;this&lt;/em&gt;.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2&gt;5. The threat model collapses inward (2019-2024)&lt;/h2&gt;
&lt;p&gt;On March 13, 2019, a New Zealand security researcher named Denis Andzakovic posted a blog entry [@andzakovic-2019-tpm-sniffing] that, in retrospect, started the modern era of TPM offense. He demonstrated two LPC-bus sniffing attacks on two different machines. On an HP business laptop running TPM 1.2, he used a DSLogic Plus logic analyzer connected via the laptop&apos;s debug header (7 wires: LCLK, LFRAME, LAD[0:3], and ground) to lift the BitLocker Volume Master Key off the LPC bus. On a Surface Pro 3 running TPM 2.0, he spent $40 NZD on a Lattice iCE40 ICEStick FPGA (8 connections: GND, LCLK, LFRAME#, LRESET#, LAD[0:3]) and replicated the attack. 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 [@andzakovic-lpc-sniffer-code] the same day.Andzakovic credits Hector Martin (&lt;code&gt;@marcan&lt;/code&gt;) for prototyping LPC sniffing earlier; the 2019 write-up was the first end-to-end public demonstration with reproducible code.&lt;/p&gt;
&lt;p&gt;The structural insight, which has not been backed away from, is that Windows does not enable TPM 2.0 &lt;em&gt;parameter encryption&lt;/em&gt; on the BitLocker boot path. The VMK travels in plaintext at the LPC bus&apos;s 33 MHz clock across a few millimetres of PCB.Why doesn&apos;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.&lt;/p&gt;
&lt;p&gt;The attack would not stay a one-laptop curio. In late 2020, WithSecure&apos;s Henri Nurmi released an SPI variant [@withsecure-2020-spi-sniffing] and a public BitLocker-key extraction tool. A year later, Thomas Dewaele and Julien Oberson at SCRT reproduced the LPC attack [@scrt-2021-tpm-sniffing] on a Lenovo ThinkPad L440 with a chip (labeled P24JPVSP, identified by SCRT as probably equivalent to the ST33TPM12LPC) and published a tutorial. By October 2024, SCRT had industrialized the attack [@scrt-2024-bitlocker-pin] across &quot;the three major enterprise-grade laptop manufacturers (i.e. Lenovo, HP, and Dell)&quot; in &quot;a few minutes.&quot;&lt;/p&gt;
&lt;p&gt;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 [@wikipedia-intel-me]) and AMD (fTPM-in-PSP) had already done this for cost reasons. The second reassurance lasted eight months.&lt;/p&gt;
&lt;p&gt;In November 2019, Daniel Moghimi, Berk Sunar, Thomas Eisenbarth, and Nadia Heninger -- soon to be USENIX Security 2020 -- released TPM-Fail [@tpmfail-microsite]. 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:&lt;/p&gt;

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 [@tpmfail-microsite], 2019
&lt;p&gt;NVD assigned CVE-2019-11090 [@cve-2019-11090] to Intel PTT and CVE-2019-16863 [@cve-2019-16863] to STMicroelectronics&apos; ST33TPHF2ESPI. The latter entry is blunt: &quot;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.&quot; Both chips were certified at the moment of disclosure -- the STMicro chip held both Common Criteria EAL4+ and FIPS 140-2 Level 2, while the Intel chip held FIPS 140-2 [@tpmfail-microsite]. Certification did not catch the bug. The presentation is preserved in the USENIX Security 2020 proceedings [@moghimi-2020-usenix-tpmfail].&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Removing the bus did not remove the attack surface. It relocated it from the PCB to the trusted execution environment that hosted the firmware TPM. The fTPM closes one channel and opens another -- and the certification regime that was supposed to catch both missed the timing leak in chips that had passed their respective certification programmes (STMicro: Common Criteria EAL4+ and FIPS 140-2 Level 2; Intel: FIPS 140-2). The &quot;fTPM has no bus to sniff&quot; reassurance was a category error.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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) [@jacob-2023-faultpm], with reproducible code at github.com/PSPReverse/ftpm_attack [@pspreverse-ftpm-attack]. The attack: voltage-glitch the AMD Platform Security Processor and walk out with the entire internal TPM state. The paper&apos;s own claim is the sentence that, more than any other, framed the modern TPM threat model.&lt;/p&gt;

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) [@jacob-2023-faultpm]
&lt;p&gt;Two to three hours of physical access. Anti-hammering bypassed because anti-hammering is enforced by the TPM, and once the TPM&apos;s internal state is on your bench you set the counter to zero. PCR-policy bypassed because the sealed blob&apos;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 &lt;em&gt;less&lt;/em&gt; secure than a TPM-less passphrase (a corollary the faulTPM paper makes explicit [@jacob-2023-faultpm]): the TPM concentrates all your trust into a chip whose internal state can be exfiltrated.&lt;/p&gt;

timeline
    title Three generations of TPM attack
    section Bus sniffing
      2019 March : Andzakovic - \$40 FPGA, BitLocker VMK off LPC bus
      2020 December : WithSecure - SPI variant and key-extraction tool
      2021 November : SCRT reproduces on Lenovo ThinkPad L440
      2024 October : SCRT - few-minute attack on Lenovo, HP, Dell
    section Side channel in fTPM
      2019 November : TPM-Fail (Moghimi, Sunar, Eisenbarth, Heninger)
      2019 November : CVE-2019-11090 (Intel PTT), CVE-2019-16863 (STMicro)
    section Fault injection in fTPM
      2023 April : faulTPM - full AMD fTPM state extracted in 2-3 h
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attack class&lt;/th&gt;
&lt;th&gt;TPM form&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;LPC bus sniffing (BitLocker VMK)&lt;/td&gt;
&lt;td&gt;Discrete TPM 1.2 / 2.0&lt;/td&gt;
&lt;td&gt;$0 (logic analyzer) -- ~$40 NZD (iCE40 FPGA, Surface Pro 3)&lt;/td&gt;
&lt;td&gt;Minutes once wired&lt;/td&gt;
&lt;td&gt;Andzakovic 2019; SCRT 2021/2024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SPI bus sniffing&lt;/td&gt;
&lt;td&gt;Discrete TPM 2.0&lt;/td&gt;
&lt;td&gt;~$50 (logic analyzer)&lt;/td&gt;
&lt;td&gt;Minutes once wired&lt;/td&gt;
&lt;td&gt;WithSecure 2020-2024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timing side channel on ECDSA&lt;/td&gt;
&lt;td&gt;Intel PTT, STMicro ST33&lt;/td&gt;
&lt;td&gt;Software-only&lt;/td&gt;
&lt;td&gt;4-20 min local; 5 h remote VPN&lt;/td&gt;
&lt;td&gt;TPM-Fail 2019/2020&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voltage glitch on PSP&lt;/td&gt;
&lt;td&gt;AMD fTPM&lt;/td&gt;
&lt;td&gt;~$200 (glitching rig)&lt;/td&gt;
&lt;td&gt;2-3 h physical&lt;/td&gt;
&lt;td&gt;faulTPM 2023&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;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&apos;s answer was on the CPU die itself.&lt;/p&gt;
&lt;h2&gt;6. State of the art: five realizations of one specification&lt;/h2&gt;
&lt;p&gt;All five chips in this section pass the same TCG conformance suite. They expose the same &lt;code&gt;TPM2_*&lt;/code&gt; command surface to Windows. They fail to completely different attackers. The architecture is identical; the &lt;em&gt;attack surface&lt;/em&gt; is everything.&lt;/p&gt;

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.

A zero-knowledge protocol that lets a TPM prove &quot;I am a real TPM certified by vendor X&quot; 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.
&lt;h3&gt;6.1 Discrete TPM&lt;/h3&gt;
&lt;p&gt;The classical chip. Infineon, STMicroelectronics, Nuvoton. Hangs off the motherboard&apos;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.&lt;/p&gt;
&lt;h3&gt;6.2 Intel PTT&lt;/h3&gt;
&lt;p&gt;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 [@tpmfail-microsite] timing side channel; firmware-patched, but inherits CSME&apos;s broader attack surface and CSME&apos;s update story (UEFI capsule via OEM, lifecycle entirely under the OEM&apos;s control).&lt;/p&gt;
&lt;h3&gt;6.3 AMD fTPM (PSP)&lt;/h3&gt;
&lt;p&gt;TPM 2.0 inside the AMD Platform Security Processor [@wikipedia-amd-psp] (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 [@jacob-2023-faultpm] 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.&lt;/p&gt;
&lt;h3&gt;6.4 Microsoft Pluton&lt;/h3&gt;
&lt;p&gt;A Microsoft IP block on the CPU SoC die, with Microsoft-authored Rust firmware (on 2024 AMD and Intel platforms) [@ms-learn-pluton] delivered through Windows Update. According to Microsoft&apos;s hardware list, Pluton &quot;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.&quot; The same page notes that &quot;Pluton platforms in 2024 AMD and Intel systems will start to use a Rust-based firmware foundation given the importance of memory safety.&quot;&lt;/p&gt;
&lt;p&gt;The thesis is laid out in Microsoft&apos;s November 17, 2020 announcement post [@ms-pluton-blog-2020], which links explicitly to Andzakovic. The architectural framing is unusually direct.&lt;/p&gt;

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 [@ms-pluton-blog-2020]
&lt;p&gt;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: &quot;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.&quot; [@ms-learn-pluton-as-tpm] 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.&lt;/p&gt;
&lt;h3&gt;6.5 vTPM&lt;/h3&gt;
&lt;p&gt;A software TPM emulation, typically inside a hypervisor. Azure Trusted Launch [@ms-learn-azure-trusted-launch] is Microsoft&apos;s flagship implementation: &quot;Trusted Launch is the default state for newly created Azure Gen2 VM and scale sets.&quot; 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 &quot;the hypervisor host is honest,&quot; this is the right shape; for adversarial physical access, it is not.&lt;/p&gt;
&lt;h3&gt;6.6 Head-to-head&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;dTPM&lt;/th&gt;
&lt;th&gt;Intel PTT&lt;/th&gt;
&lt;th&gt;AMD fTPM&lt;/th&gt;
&lt;th&gt;Pluton&lt;/th&gt;
&lt;th&gt;vTPM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Physical location&lt;/td&gt;
&lt;td&gt;Separate chip&lt;/td&gt;
&lt;td&gt;CSME (PCH die)&lt;/td&gt;
&lt;td&gt;PSP (CPU die)&lt;/td&gt;
&lt;td&gt;Dedicated IP block on CPU die&lt;/td&gt;
&lt;td&gt;Hypervisor memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bus to host&lt;/td&gt;
&lt;td&gt;LPC / SPI / I2C&lt;/td&gt;
&lt;td&gt;None (on-die)&lt;/td&gt;
&lt;td&gt;None (on-die)&lt;/td&gt;
&lt;td&gt;None (on-die)&lt;/td&gt;
&lt;td&gt;None (virtual)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TEE shared with&lt;/td&gt;
&lt;td&gt;none (own die)&lt;/td&gt;
&lt;td&gt;CSME&lt;/td&gt;
&lt;td&gt;PSP (large)&lt;/td&gt;
&lt;td&gt;none (Pluton-only)&lt;/td&gt;
&lt;td&gt;host kernel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Side-channel exposure&lt;/td&gt;
&lt;td&gt;Implementation-dependent&lt;/td&gt;
&lt;td&gt;TPM-Fail patched&lt;/td&gt;
&lt;td&gt;faulTPM unaddressed structurally&lt;/td&gt;
&lt;td&gt;Limited public research&lt;/td&gt;
&lt;td&gt;host-dependent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Update channel&lt;/td&gt;
&lt;td&gt;UEFI capsule&lt;/td&gt;
&lt;td&gt;UEFI capsule (CSME)&lt;/td&gt;
&lt;td&gt;UEFI capsule (PSP)&lt;/td&gt;
&lt;td&gt;Windows Update&lt;/td&gt;
&lt;td&gt;hypervisor patch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Certifications&lt;/td&gt;
&lt;td&gt;EAL4+, FIPS 140-2/3&lt;/td&gt;
&lt;td&gt;EAL4+&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;varies&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OEM cost&lt;/td&gt;
&lt;td&gt;per-chip BOM&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best-known attack&lt;/td&gt;
&lt;td&gt;LPC/SPI sniffing in minutes&lt;/td&gt;
&lt;td&gt;TPM-Fail timing&lt;/td&gt;
&lt;td&gt;faulTPM full state&lt;/td&gt;
&lt;td&gt;None public at faulTPM depth&lt;/td&gt;
&lt;td&gt;host compromise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Algorithm agility&lt;/td&gt;
&lt;td&gt;spec-required&lt;/td&gt;
&lt;td&gt;spec-required&lt;/td&gt;
&lt;td&gt;spec-required&lt;/td&gt;
&lt;td&gt;spec-required + Rust firmware updates&lt;/td&gt;
&lt;td&gt;spec-required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best fit&lt;/td&gt;
&lt;td&gt;Compliance-driven, high-assurance fleets&lt;/td&gt;
&lt;td&gt;Existing Intel platforms&lt;/td&gt;
&lt;td&gt;Existing AMD platforms&lt;/td&gt;
&lt;td&gt;Default for Windows 11 client&lt;/td&gt;
&lt;td&gt;Cloud workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

flowchart LR
    subgraph TPMs[&quot;Five realizations&quot;]
      dTPM[&quot;Discrete TPM&lt;br /&gt;(LPC/SPI/I2C)&quot;]
      PTT[&quot;Intel PTT&lt;br /&gt;(CSME)&quot;]
      AMD[&quot;AMD fTPM&lt;br /&gt;(PSP)&quot;]
      Pluton[&quot;Microsoft Pluton&lt;br /&gt;(on-die, Rust, WU)&quot;]
      vTPM[&quot;vTPM&lt;br /&gt;(Hyper-V / Azure)&quot;]
    end
    subgraph Surface[&quot;TCG2 command surface&quot;]
      TCG[&quot;TPM2_* commands&quot;]
    end
    dTPM --&amp;gt; TCG
    PTT --&amp;gt; TCG
    AMD --&amp;gt; TCG
    Pluton --&amp;gt; TCG
    vTPM --&amp;gt; TCG
    TCG --&amp;gt; BL[&quot;BitLocker VMK seal&quot;]
    TCG --&amp;gt; MB[&quot;Measured Boot / DHA&quot;]
    TCG --&amp;gt; CG[&quot;Credential Guard&quot;]
    TCG --&amp;gt; WH[&quot;Windows Hello&quot;]
    TCG --&amp;gt; VSC[&quot;Virtual smart cards&quot;]
    TCG --&amp;gt; DPAPI[&quot;DPAPI-NG&quot;]
    TCG --&amp;gt; KA[&quot;TPM key attestation (ADCS)&quot;]
&lt;p&gt;The deep claim of the Pluton design is not that it is a better cryptoprocessor. It is that the previous decade&apos;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 [@ms-secured-core-blog-2019] was the first public step; Pluton is its descendant.&lt;/p&gt;
&lt;p&gt;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?&lt;/p&gt;
&lt;h2&gt;7. Theoretical limits: what a passive cryptoprocessor cannot do&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Three impossibility-style results follow from the architecture itself, regardless of which of the five realizations you pick.&lt;/p&gt;
&lt;h3&gt;7.1 The TPM is a Root of Trust for Storage and Reporting, not Execution&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Stronger guarantees require an &lt;em&gt;active&lt;/em&gt; 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&apos;s System Guard Secure Launch [@ms-learn-system-guard] on Secured-core PCs all implement this. The TPM is a participant in DRTM; on its own, it is not sufficient.&lt;/p&gt;
&lt;h3&gt;7.2 TPM-only BitLocker has a structural lower bound&lt;/h3&gt;
&lt;p&gt;The VMK must enter RAM during Trusted Boot before the user authenticates. This is not a bug; it is the threat-model definition of &quot;TPM-only.&quot; Therefore &lt;em&gt;any&lt;/em&gt; 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.&lt;/p&gt;
&lt;p&gt;Microsoft&apos;s countermeasures documentation [@ms-learn-bitlocker-countermeasures] names the mitigation in plain terms: preboot authentication. Adding TPM+PIN raises the bound to &quot;guess the PIN against intact anti-hammering&quot; -- but only as long as the TPM&apos;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.&lt;/p&gt;
&lt;p&gt;The complexity of guessing an $n$-digit PIN against intact anti-hammering [@ms-learn-bitlocker-countermeasures] with a per-failure delay $\Delta t$ is approximately $\frac{1}{2} \cdot 10^n \cdot \Delta t$ in the average case. For $n = 8$ and $\Delta t \geq 1\text{s}$ this is roughly $5 \times 10^7$ seconds, or about 1.6 years. For $n = 4$, it is hours.&lt;/p&gt;

CVE-2023-21563 [@cve-2023-21563] -- the BitLocker Security Feature Bypass that the offensive-security community calls &quot;Bitpixie&quot; -- is a useful reminder that breaking BitLocker does not require breaking the TPM. The NVD entry reads simply &quot;BitLocker Security Feature Bypass Vulnerability,&quot; and the bypass operates against the boot path that consumes the unsealed VMK, not against the chip that sealed it. (NVD does not use the &quot;Bitpixie&quot; name; it is community-known-as.)
&lt;h3&gt;7.3 Once a key is unsealed, it lives in the OS&apos;s address space&lt;/h3&gt;
&lt;p&gt;A runtime-compromised OS reads any key the TPM has unsealed for it. The TPM defends against the &lt;em&gt;offline&lt;/em&gt; attacker (disk theft, post-shutdown tamper) and the &lt;em&gt;pre-OS&lt;/em&gt; 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.&lt;/p&gt;
&lt;p&gt;This is why VBS, Credential Guard, and DRTM exist as separate disciplines: they answer &quot;what protects the unsealed key once it is in RAM?&quot; 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.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What would an &lt;em&gt;ideal&lt;/em&gt; 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. &lt;em&gt;No shipping TPM today satisfies all six properties.&lt;/em&gt; 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.&lt;/p&gt;
&lt;p&gt;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?&lt;/p&gt;
&lt;h2&gt;8. Open problems: PQC, supply chain, and trust centralization&lt;/h2&gt;
&lt;p&gt;On August 13, 2024, NIST finalized FIPS 203 (ML-KEM) [@nist-fips-203-mlkem], FIPS 204 (ML-DSA) [@nist-fips-204-mldsa], and FIPS 205 (SLH-DSA) [@nist-fips-205-slhdsa] -- the first federal post-quantum cryptography standards. ML-DSA-87&apos;s public keys are 2,592 bytes. A typical TPM has 6 to 32 KiB of NV memory total. The math gets uncomfortable quickly.&lt;/p&gt;
&lt;h3&gt;8.1 Post-quantum migration&lt;/h3&gt;
&lt;p&gt;The NIST Post-Quantum Cryptography project page [@nist-pqc-project] describes the timeline: &quot;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.&quot; That is the deadline driving every TPM roadmap, and the August 14, 2024 Federal Register notice [@federal-register-2024-fips-pqc] made it formal U.S. policy.&lt;/p&gt;
&lt;p&gt;Three concrete obstacles. &lt;strong&gt;First&lt;/strong&gt;, 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 [@ms-tpm-20-ref-releases] tracks TCG: the V1.83 release notes describe it as &quot;the first revision in sync with Trusted Computing Group 1.83,&quot; and that revision still does not expose PQC algorithm IDs. The Fraunhofer SIT Post-Quantum Cryptography for TPM [@fraunhofer-pqc-tpm] programme has prototyped PQC primitives inside reference TPM stacks, but those changes are research artefacts, not normative TCG output.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Second&lt;/strong&gt;, 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) [@nist-fips-205-slhdsa] routinely exceed the typical 1-4 KiB response-buffer cap (&lt;code&gt;TPM_PT_MAX_RESPONSE_SIZE&lt;/code&gt; in the PC Client Platform TPM Profile [@tcg-pc-client-ptp-spec]); the related &lt;code&gt;TPM_PT_NV_BUFFER_MAX&lt;/code&gt; (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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Third&lt;/strong&gt;, 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 [@ietf-lamps-pq-composite-sigs] specifies &quot;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&quot; for X.509 PKIX. The TLS hybrid key-exchange draft [@ietf-tls-hybrid-design] does the same for TLS 1.3 handshakes. Neither defines a hybrid &lt;code&gt;TPM2_Sign&lt;/code&gt; profile, and no shipping Windows TPM exposes one.&lt;/p&gt;
&lt;p&gt;Microsoft&apos;s Quantum Safe Security blog (August 2025) [@ms-quantum-safe-2025] describes the broader effort -- &quot;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&quot; -- but is silent on Pluton-firmware PQC support specifically.&lt;/p&gt;
&lt;p&gt;The architectural punchline: Pluton&apos;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.&lt;/p&gt;
&lt;h3&gt;8.2 The supply-chain trust of EK certificates&lt;/h3&gt;
&lt;p&gt;The Microsoft TPM key attestation documentation [@ms-learn-tpm-key-attestation] describes the trust-chain assumption plainly: the requestor proves &quot;to a CA that the RSA key in the certificate request is protected by either &apos;a&apos; or &apos;the&apos; TPM that the CA trusts.&quot; That trust is anchored on the EK certificate the chip&apos;s vendor issued at manufacture. A vendor-CA compromise therefore equals collapse of TPM-bound device identity for an entire OEM cohort.&lt;/p&gt;
&lt;p&gt;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 [@crocs-muni-roca] 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 [@cve-2017-15361] is precise about scope: &quot;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.&quot; The Wikipedia summary [@wikipedia-roca] reports the team&apos;s own estimate that the bug &quot;affected around one-quarter of all current TPM devices globally.&quot;&lt;/p&gt;
&lt;p&gt;The Estonian e-ID program -- about 750,000 cards issued since 2014 [@arstechnica-2017-roca-estonia], all using the affected Infineon chip -- had to be re-enrolled. Microsoft published advisory ADV170012 [@msrc-adv170012] 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&apos;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.&lt;/p&gt;
&lt;h3&gt;8.3 Attestation freshness in zero-trust networks&lt;/h3&gt;
&lt;p&gt;A TPM Quote proves &quot;this device booted clean,&quot; not &quot;this device is currently clean.&quot; Microsoft Intune&apos;s default device-compliance check-in is on the order of hours; Microsoft Entra&apos;s Continuous Access Evaluation documentation [@ms-learn-cae] specifies the upper-bound numerics: &quot;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.&quot;&lt;/p&gt;
&lt;p&gt;A 15-minute revocation window for critical events is good. But it propagates &lt;em&gt;signed&lt;/em&gt; 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.&lt;/p&gt;
&lt;p&gt;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 [@ms-learn-cng-dpapi] describes the API as &quot;secure[ly] shar[ing] secrets (keys, passwords, key material) and messages by protecting them to a set of principals.&quot; The protection-descriptor grammar [@ms-learn-protection-descriptors] permits five descriptor keywords -- &lt;code&gt;SID&lt;/code&gt;, &lt;code&gt;SDDL&lt;/code&gt;, &lt;code&gt;LOCAL&lt;/code&gt;, &lt;code&gt;WEBCREDENTIALS&lt;/code&gt;, &lt;code&gt;CERTIFICATE&lt;/code&gt; -- across three logical authorization classes (AD-forest groups, web credentials, certificate-store entries). Notably absent: any literal &lt;code&gt;TPM=true&lt;/code&gt; clause. DPAPI-NG can be backed by a TPM-bound CNG key, but the &lt;em&gt;authorization&lt;/em&gt; 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.&lt;/p&gt;
&lt;h3&gt;8.4 The Pluton political question&lt;/h3&gt;
&lt;p&gt;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&apos;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.&lt;/p&gt;
&lt;p&gt;In March 2022, The Register obtained vendor statements [@register-2022-pluton] from Dell, Lenovo, and HP. Dell&apos;s reply was unusually direct: &quot;Pluton does not align with Dell&apos;s approach to hardware security and our most secure commercial PC requirements.&quot; Lenovo deployed the chip but disabled it: &quot;[ThinkPads] will not support Microsoft Pluton at launch ... But ThinkPads introduced in January with AMD Ryzen 6000 processors will include Pluton as it&apos;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.&quot; PCWorld followed up [@pcworld-2022-pluton] with Lenovo&apos;s articulated reasoning: &quot;Pluton is disabled by default on 2022 Lenovo ThinkPad laptops using AMD Ryzen PRO 6000 Series processors because that&apos;s what Lenovo customers have asked for, the choice to enable or not.&quot;&lt;/p&gt;
&lt;p&gt;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) [@phoronix-2023-pluton-linux63] -- published the closest thing to a public engineering analysis of Pluton&apos;s controllability. His April 2022 reverse-engineering write-up [@garrett-2022-pluton-rev] of the ASUS ROG Zephyrus G14 BIOS documents two firmware-level disable mechanisms on AMD Ryzen 6000 platforms: an x86-firmware &quot;do not communicate&quot; toggle, and a PSP directory entry 0xB BIT36 soft-fuse that &quot;will NOT put HSP hardware in disable state, to disable HSP hardware, you need setup PSP directory entry 0xB, BIT36 to 1.&quot; Garrett&apos;s caveat is honest: &quot;My interpretation of this is that it doesn&apos;t directly influence Pluton, but disables all mechanisms that would allow the OS to communicate with it.&quot; It is not a multi-signer proposal. There is no public peer-reviewed proposal for multi-signer or open-source Pluton firmware.&lt;/p&gt;
&lt;p&gt;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&apos;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.&lt;/p&gt;
&lt;p&gt;The TPM was supposed to be the part of the system you didn&apos;t have to trust anyone for. Twenty-five years later, the trust question is back -- and the answer is now political.&lt;/p&gt;
&lt;h2&gt;9. A Windows practitioner&apos;s TPM reference&lt;/h2&gt;
&lt;p&gt;What does this mean for the engineer running &lt;code&gt;Get-Tpm&lt;/code&gt; on Monday morning? Three concrete things: discovery, choosing a form factor, and avoiding the pitfalls.&lt;/p&gt;
&lt;h3&gt;9.1 Discovery&lt;/h3&gt;
&lt;p&gt;Three commands establish ground truth on any Windows 11 device. &lt;code&gt;Get-Tpm&lt;/code&gt; returns presence, ownership, and command-availability state. &lt;code&gt;Get-TpmEndorsementKeyInfo&lt;/code&gt; returns the EK public and certificate. &lt;code&gt;tpm.msc&lt;/code&gt; opens the Microsoft Management Console snap-in. The TCG event log lives at &lt;code&gt;C:\Windows\Logs\MeasuredBoot\*.log&lt;/code&gt; and contains the per-PCR measurement history for every boot. Microsoft&apos;s BitLocker page [@ms-learn-bitlocker] documents the protector model that pairs with the TPM state.&lt;/p&gt;
&lt;p&gt;{`
// Demonstrates the logic of:
//   Get-Tpm
//   (Get-BitLockerVolume -MountPoint &apos;C:&apos;).KeyProtector
//
// Mirrors the PowerShell decision tree without requiring a real TPM.&lt;/p&gt;
&lt;p&gt;const tpm = {
  TpmPresent: true,
  TpmReady: true,
  ManufacturerVersion: &apos;7.2.0.1&apos;,
  PhysicalPresenceVersionInfo: &apos;1.3&apos;,
};&lt;/p&gt;
&lt;p&gt;// Sample KeyProtector list as PowerShell would return it.
const protectors = [
  { KeyProtectorType: &apos;Tpm&apos; },
  { KeyProtectorType: &apos;RecoveryPassword&apos; },
  // Uncomment to model TPM+PIN:
  // { KeyProtectorType: &apos;TpmPin&apos; },
];&lt;/p&gt;
&lt;p&gt;function classify(tpm, protectors) {
  if (!tpm.TpmPresent) return &apos;no-tpm&apos;;
  if (!tpm.TpmReady) return &apos;tpm-not-ready&apos;;&lt;/p&gt;
&lt;p&gt;  const types = protectors.map(p =&amp;gt; p.KeyProtectorType);
  const hasPin = types.includes(&apos;TpmPin&apos;) || types.includes(&apos;TpmPinStartupKey&apos;);
  const hasStartupKey = types.includes(&apos;TpmStartupKey&apos;);
  const hasRecovery = types.includes(&apos;RecoveryPassword&apos;);&lt;/p&gt;
&lt;p&gt;  if (hasPin) return &apos;tpm-plus-pin&apos;;
  if (hasStartupKey) return &apos;tpm-plus-startup-key&apos;;
  if (types.includes(&apos;Tpm&apos;)) return &apos;tpm-only&apos;;
  return &apos;no-tpm-protector&apos;;
}&lt;/p&gt;
&lt;p&gt;const verdict = classify(tpm, protectors);
console.log(&apos;TPM present:&apos;, tpm.TpmPresent);
console.log(&apos;TPM ready  :&apos;, tpm.TpmReady);
console.log(&apos;Configuration:&apos;, verdict);
if (verdict === &apos;tpm-only&apos;) {
  console.log(&apos;WARN: TPM-only is vulnerable to bus-sniffing on dTPM.&apos;);
  console.log(&apos;Mitigation: enable TPM+PIN with PIN length &amp;gt;= 8.&apos;);
}
console.log(&apos;Recovery key escrowed:&apos;, protectors.some(p =&amp;gt; p.KeyProtectorType === &apos;RecoveryPassword&apos;));
`}&lt;/p&gt;
&lt;h3&gt;9.2 Choosing a TPM form when the OEM gives you a choice&lt;/h3&gt;
&lt;p&gt;A short decision tree, distilled from the SOTA analysis above:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Opportunistic theft, low-skill attacker.&lt;/strong&gt; 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.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Determined targeted adversary.&lt;/strong&gt; 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.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance-driven.&lt;/strong&gt; Discrete TPM with EAL4+ / FIPS 140-2 certification is still the easiest procurement story. Verify the OEM has not enabled &lt;code&gt;Pluton-as-TPM&lt;/code&gt; if the auditor&apos;s checklist requires a discrete chip.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud workload.&lt;/strong&gt; Azure Trusted Launch with vTPM [@ms-learn-azure-trusted-launch] is the default for Gen2 VMs and underwrites Confidential VM offerings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Surface Copilot+, AMD Ryzen 6000+, Intel Core Ultra 200V, Snapdragon X.&lt;/strong&gt; Pluton-as-TPM [@ms-learn-pluton] is the OEM default in many SKUs; verify the Pluton firmware is current via Windows Update.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.3 Five common pitfalls&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Clearing the TPM invalidates BitLocker recovery on every TPM-bound protector. Always verify recovery key escrow first -- in Microsoft Entra ID for Azure-AD-joined devices, in Active Directory for AD-joined devices, or in a printed/saved location for personal devices. If the recovery key is unescrowed and the TPM is cleared, the volume is unrecoverable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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 &quot;TPM hardening&quot;; and Windows Hello silently falls back to no-TPM credential storage if the TPM is unhealthy, so periodically check &lt;code&gt;Get-Tpm&lt;/code&gt; on enrolled devices.&quot;Anti-hammering&quot; 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.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The Group Policy setting &quot;Require additional authentication at startup&quot; with a minimum PIN length of 8 buys you the most security against published attacks for the least operational cost. It defeats Andzakovic-style bus sniffing (the VMK is no longer the only secret on the bus) and forces an attacker on AMD fTPM to either compromise the TPM state out-of-band or guess the PIN against anti-hammering. The exception is a fully-extracted AMD fTPM where faulTPM has already obtained the unsealed material -- in that case the PIN is bypassed.&lt;/p&gt;
&lt;/blockquote&gt;

From an elevated PowerShell prompt:&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;Suspend-BitLocker -MountPoint &quot;C:&quot; -RebootCount 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;RebootCount 1&lt;/code&gt; argument auto-resumes after the next reboot, which is what you want when the firmware update reboots the device. After the update completes, run &lt;code&gt;Get-BitLockerVolume -MountPoint C:&lt;/code&gt; and confirm &lt;code&gt;ProtectionStatus&lt;/code&gt; is &lt;code&gt;On&lt;/code&gt; again. If you forget, the next boot will land on the BitLocker recovery prompt because PCR[0] no longer matches the sealed policy.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The TPM does exactly what it was designed to do, no more. Which is exactly enough -- if you understand what &quot;exactly&quot; means.&lt;/p&gt;
&lt;h2&gt;10. FAQ and closing&lt;/h2&gt;
&lt;p&gt;A handful of questions get asked again and again about the TPM. The answers do not always match the marketing.&lt;/p&gt;

No. TPM keys are non-exportable and held inside the chip; the Microsoft documentation [@ms-learn-how-windows-uses-tpm] is explicit that &quot;if a key stored in a TPM has properties that disallow exporting the key, that key truly can&apos;t leave the TPM.&quot; 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.

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 [@tpmfail-microsite] showed timing-side-channel ECDSA key recovery on Intel PTT, and faulTPM [@jacob-2023-faultpm] showed 2-3 hour state extraction on AMD PSP. Pluton sits between the two with a smaller TEE surface but less public scrutiny.

Yes -- Microsoft mandates it. The OEM mandate has been in force since July 28, 2016 [@ms-learn-oem-tpm]; 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 [@ms-learn-azure-measured-boot] -- are real, measurable, and not realistically replaceable by software-only equivalents.

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 [@jacob-2023-faultpm] proved that AMD fTPM internal state can be *extracted* in 2-3 hours of physical access; that is closer to &quot;extracted&quot; than &quot;cloned&quot; but the practical effect is the same for keys the chip held.

Because ransomware operates after the OS has loaded -- by definition outside the TPM&apos;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&apos;s BitLocker countermeasures page [@ms-learn-bitlocker-countermeasures] 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 implements TPM 2.0 plus Microsoft-specific extensions. From Windows&apos;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 &quot;as the TPM&quot; or alongside a discrete TPM is an OEM choice [@ms-learn-pluton-as-tpm].
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&amp;lt;StudyGuide slug=&quot;tpm-in-windows&quot; keyTerms={[
  { term: &quot;TPM (Trusted Platform Module)&quot;, definition: &quot;A passive cryptoprocessor on a separate chip or block of silicon that holds keys and records integrity measurements.&quot; },
  { term: &quot;PCR (Platform Configuration Register)&quot;, definition: &quot;A TPM register modified only by one-way extend operations, which fold a measurement into the running hash.&quot; },
  { term: &quot;Sealing&quot;, definition: &quot;Encrypting a blob under the TPM with a policy that names a specific PCR state; unseal succeeds only when the live PCRs match.&quot; },
  { term: &quot;Quote&quot;, definition: &quot;A TPM-signed snapshot of selected PCRs, used by remote verifiers in attestation.&quot; },
  { term: &quot;Endorsement Key (EK)&quot;, definition: &quot;The TPM&apos;s permanent identity key, generated at manufacture and certified by the chip vendor&apos;s CA.&quot; },
  { term: &quot;Enhanced Authorization&quot;, definition: &quot;TPM 2.0&apos;s policy-session mechanism, which lets a callable&apos;s authorization rule be an arbitrary composition of PCR, signed, and command-code predicates.&quot; },
  { term: &quot;Algorithm agility&quot;, definition: &quot;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.&quot; },
  { term: &quot;fTPM (firmware TPM)&quot;, definition: &quot;A TPM 2.0 implementation running inside an existing TEE: Intel CSME (PTT), AMD PSP, or Microsoft Pluton.&quot; },
  { term: &quot;DRTM (Dynamic Root of Trust for Measurement)&quot;, definition: &quot;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&apos;s static RTM.&quot; },
  { term: &quot;Anti-hammering&quot;, definition: &quot;A persistent TPM-enforced rate-limit counter against repeated authValue or PIN failures; survives reboots and forces lockout after a configurable threshold.&quot; }
]} /&amp;gt;&lt;/p&gt;
</content:encoded><category>tpm</category><category>windows-security</category><category>bitlocker</category><category>pluton</category><category>hardware-security</category><category>measured-boot</category><category>post-quantum-cryptography</category><author>noreply@paragmali.com (Parag Mali)</author></item></channel></rss>