# No Secrets to Steal: How Windows Hello Eliminated the Shared Secret

> How Windows Hello replaced passwords with TPM-backed biometrics, survived a decade of attacks, and helped make passwordless the default.

*Published: 2026-04-28*
*Canonical: https://paragmali.com/blog/your-face-is-not-your-password-inside-windows-hellos-hardwar*
*License: CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/*

---
<TLDR>
**Windows Hello replaces passwords with biometric authentication backed by hardware cryptography.** Your face or fingerprint unlocks a private key sealed inside a TPM chip -- no biometric data ever leaves your device, and no shared secret crosses the network. After a decade of enterprise growing pains and a cat-and-mouse security arms race, Microsoft made passwordless the default for new accounts in May 2025, with passkeys now achieving a 98% sign-in success rate. The password's 64-year reign is ending -- but open problems in biometric spoofing, credential portability, and quantum-resistant cryptography mean the replacement is still under construction.
</TLDR>

## Why Passwords Must Die

In 2024, Microsoft observed 7,000 password attacks every second [@ms-passkeys] -- more than double the rate from 2023. Picture this: a user types their carefully memorized 16-character password into what looks like a corporate login page. The page is a phishing replica. In under a second, that password -- the one they have been rotating every 90 days for three years -- belongs to someone else.

<PullQuote>
Microsoft observed 7,000 password attacks per second in 2024. The password Corbato invented as a quick fix in 1961 had become the single greatest attack surface in computing.
</PullQuote>

The problem is not weak passwords. The problem is passwords themselves. They are shared secrets -- a piece of information that both you and the server know. Anything a server stores can be stolen. Anything you type can be intercepted. Anything you memorize can be phished. These are not implementation bugs. They are design properties.

It was not supposed to be this way. In 1961, Fernando Corbato [@corbato-ctss; @wiki-password] introduced computer passwords at MIT as a quick fix for multi-user mainframes. Users needed separate file spaces on the Compatible Time-Sharing System (CTSS), and a secret string was the simplest way to provide per-user isolation. It was a temporary measure for a specific engineering constraint.

That temporary measure lasted 64 years.

What if authentication did not require a secret at all? What if your face unlocked a cryptographic key -- and that key never left your device? That is the promise of Windows Hello. But the story of how we got here passes through a gelatin finger, a low-cost USB device, and a near-infrared camera that shattered assumptions about what "secure" really means.

---

## The Password's 64-Year Reign: A Brief History of Authentication Failure

In 1966, a software bug in MIT's CTSS printed the master password file to every user's terminal -- the first known password breach [@wiki-password].

<Sidenote>
The 1966 CTSS incident was not a hack. A system administrator accidentally swapped the login message file with the master password file. Every user who logged in that day saw everyone else's password on screen.
</Sidenote>

It was a sign of things to come. For the next six decades, every generation of authentication would solve one problem -- and reveal a deeper one.

<Mermaid caption="64 years of authentication evolution, from plaintext passwords to passkeys">
gantt
    title Authentication Evolution
    dateFormat YYYY
    axisFormat %Y
    section Passwords
    Plaintext passwords on CTSS       :1961, 1979
    section Hashed
    UNIX crypt / hashed passwords     :1979, 1993
    section Network Auth
    NTLM challenge-response           :1993, 2000
    Kerberos / Windows AD             :2000, 2015
    section Biometrics
    Software biometrics via WBF       :2007, 2015
    section Windows Hello
    Hello + TPM asymmetric auth       :2015, 2021
    ESS + VBS + Cloud Trust           :2021, 2024
    Passkeys and passwordless default :2024, 2026
</Mermaid>

### Generation 0: Plaintext passwords (1961)

Corbato's CTSS stored passwords in plaintext [@wiki-password] in a file accessible to administrators. The model was simple: the user enters a string, the system compares it to a stored copy, and access is granted on match. The key assumption -- that only the legitimate user knows the password -- held exactly as long as the system remained uncompromised. Which was about five years.

### Generation 1: Hashed passwords (1970s)

The obvious fix: do not store passwords in plaintext. In 1979, Robert Morris and Ken Thompson published the design behind UNIX's `crypt()` function [@wiki-crypt], a one-way hash based on a modified DES algorithm with a 12-bit salt. Even if an attacker stole the hash file, they could not directly read the passwords. They would have to try every possible password and compare hashes -- a brute-force attack.

For a while, that was computationally infeasible. Then Moore's Law caught up. By the late 1990s, EFF's DES Cracker and distributed.net had reduced 56-bit DES keysearch to under 22 hours [@eff-des], making DES-based `crypt()` increasingly untenable against well-funded attackers. Users also chose weak, predictable passwords, and attackers built rainbow tables that mapped common passwords to their hashes instantly.

Windows made this worse. LAN Manager (LM) hashes [@ms-lm-hash] uppercased every password, limited them to 14 characters, and split them into two 7-byte halves hashed independently.

<Sidenote>
The LM hash design was spectacularly bad. By splitting a 14-character password into two 7-character halves, it reduced the brute-force search space from 95^14 to 2 x 95^7 -- a reduction of over 10 billion times. An attacker could crack each half separately.
</Sidenote>

Rainbow tables could crack LM hashes in seconds. Microsoft eventually disabled LM hashing by default in Windows Vista, but the damage to enterprise networks had been done.

### Generation 2: Network challenge-response (1990s)

The next insight: stop transmitting passwords over the network. NTLM [@ms-lm-hash] used a challenge-response protocol -- the server sends a random nonce, the client computes a response using the nonce and the password hash, and the server verifies the response. The password never crosses the wire.

Kerberos [@ms-kerberos], adopted in Windows 2000, improved further with mutual authentication, time-limited tickets, and single sign-on. It was elegant protocol engineering.

But the fundamental problem remained: shared secrets. NTLM was vulnerable to pass-the-hash attacks [@mitre-pth] -- an attacker who obtains the password hash can authenticate without ever knowing the password. Kerberos tickets could be stolen (Golden Ticket, Silver Ticket attacks). Both systems still depended on users choosing strong passwords, which they consistently failed to do.

### Generation 3: First software biometrics (2000s)

By the early 2000s, fingerprint readers appeared on Windows laptops. The idea was appealing: replace "something you know" with "something you are." No password to remember, no password to steal.

Microsoft introduced the Windows Biometric Framework (WBF) [@ms-wbf] in Windows 7 (2009), standardizing the API and driver interface. Before WBF, each fingerprint reader vendor -- AuthenTec, Validity, UPEK -- shipped proprietary middleware that injected into the Windows logon process. The result was inconsistent security, driver conflicts, and no centralized management.

But WBF solved the wrong problem. It standardized the API while leaving the security model unchanged: biometric templates stored with weak encryption in user-accessible files, matching running in OS user space, and no hardware isolation whatsoever.

In 2002, Tsutomu Matsumoto at Yokohama National University demonstrated the "gummy finger" attack -- creating gelatin replicas of fingerprints that fooled approximately 80% of commercial readers [@gummy-finger]. The materials cost less than $10. Without liveness detection and hardware protection, biometrics were security theater.

**The pattern was unmistakable.** Each generation protected a different layer -- plaintext storage, hash computation, network transmission, biometric convenience -- but each left the next layer exposed. By 2013, passwords were fundamentally broken, and software-only biometrics were not the answer. Then Apple proved something nobody expected.

---

## The Catalyst: How Touch ID Changed Everything

September 2013. Apple unveils the iPhone 5S [@apple-touchid] with a fingerprint sensor embedded in the home button. It was not the first phone with a fingerprint reader -- Motorola's ATRIX 4G shipped with a biometric fingerprint reader in 2011 [@motorola-atrix]. But it was the first one that hundreds of millions of people actually used.

What made Touch ID different was not the sensor. It was the Secure Enclave -- a dedicated secure subsystem integrated into Apple's system-on-chip and isolated from the main processor [@apple-secure-enclave]. The enclave runs its own microkernel, stores biometric material in protected memory, and keeps the matching pipeline outside the reach of normal iOS processes. Apple designed it so the biometric path stayed inside the enclave boundary rather than becoming just another app-visible API.

> **Note:** Apple controlled the sensor, the SoC, the Secure Enclave hardware, and iOS. This vertical integration meant the entire biometric pipeline -- from sensor capture through template matching to key release -- could be designed as a single trust chain. No Windows OEM could match this in 2013 because the sensor, CPU, and OS came from three different vendors with no unified security model.

That architecture established a pattern that Windows Hello would later follow with the TPM. Both isolate secrets in hardware, but they do different jobs: the Secure Enclave is a richer coprocessor that protects both biometric processing and keys, while the TPM is a narrower trust anchor for key storage, signing, and attestation. Apple's newer Secure Enclave documentation also emphasizes encrypted enclave memory, whereas Windows later needed ESS and VBS to give its broader PC ecosystem a comparable isolation boundary [@apple-secure-enclave; @ms-ess].

Touch ID proved two things simultaneously: that consumer biometrics could be both secure and delightful, and that the key to secure biometrics was hardware isolation, not better algorithms.

The FIDO Alliance had already been working on the standards side. Founded in July 2012 [@fido-launch] by Michael Barrett (PayPal's CISO), Ramesh Kesanupalli (Nok Nok Labs), and partners including Lenovo, Validity Sensors, and Infineon, the Alliance set out to create open standards for strong authentication that would replace passwords. Its first protocols split the problem in two: UAF defined a passwordless flow where a device-local biometric or PIN unlocks a per-service key pair [@fido-uaf], while U2F defined a hardware-token second factor that signs a challenge after the user taps the device [@fido-u2f]. FIDO2 later unified these ideas into the WebAuthn + CTAP stack used for passkeys today [@fido-how].

The convergence was forming: consumer demand (Apple proved people wanted biometrics), open standards (FIDO defined how it should work), and enterprise need (Microsoft tracked thousands of password attacks per second). Apple showed *what* was possible. The FIDO Alliance defined *how* it should work. Microsoft was about to show how to do it at the scale of an entire operating system.

---

## The Breakthrough: Windows Hello's Architecture

On March 17, 2015, Joe Belfiore announced Windows Hello. The key insight was not an algorithm -- it was an architecture. What if the biometric never leaves the device, and the authentication secret is a cryptographic key that even the server never sees?

<Definition term="Trusted Platform Module (TPM)">
A dedicated security chip soldered to a computer's motherboard (or implemented in firmware) that generates, stores, and manages cryptographic keys. The TPM can create key pairs where the private key is physically bound to the chip and cannot be exported -- even the operating system cannot extract it. Windows Hello uses TPM 2.0 to seal authentication keys.
</Definition>

<Definition term="Asymmetric cryptography">
A cryptographic system using two mathematically related keys: a public key (shared openly) and a private key (kept secret). Data encrypted with one key can only be decrypted with the other. In Windows Hello, the TPM holds the private key and signs authentication challenges; the server holds only the public key, which is useless to an attacker.
</Definition>

Here is how Windows Hello authentication [@ms-whfb] works:

<Mermaid caption="Windows Hello authentication flow -- biometric unlocks TPM, TPM signs challenge, server verifies with public key">
sequenceDiagram
    participant U as User
    participant B as Biometric Sensor
    participant D as Device OS
    participant T as TPM Chip
    participant S as Identity Server
    U->>B: Present face or fingerprint
    B->>D: Capture biometric sample
    D->>D: Match against stored template
    Note over D: Local verification only
    D->>T: Request private key release
    T->>T: Verify TPM-bound policy
    T-->>D: Private key available for signing
    S->>D: Send challenge nonce
    D->>D: Sign nonce with private key
    D->>S: Return signed assertion
    S->>S: Verify signature with public key
    S->>D: Authentication success
</Mermaid>

**Step 1: Enrollment.** The TPM generates an asymmetric key pair -- RSA-2048 or ECDSA P-256. The private key is sealed inside the TPM and cannot be exported. The public key is registered with the identity provider (Azure AD, Entra ID, or on-premises AD) [@ms-whfb].

**Step 2: Biometric enrollment.** The user registers their face (via a near-infrared camera) or fingerprint. The biometric template is stored locally on the device, protected by the OS.

**Step 3: Authentication.** The user presents their biometric gesture. The device verifies it locally against the stored template. If the match succeeds, the TPM releases the private key. The identity server sends a random challenge nonce; the device signs it with the private key and returns the signed assertion. The server verifies the signature using the stored public key. No shared secret ever crosses the network.

> **Key idea:** Windows Hello's breakthrough was architectural, not algorithmic. By pairing biometrics with hardware-backed asymmetric cryptography, it eliminated shared secrets entirely. No biometric data ever leaves the device. No password hash sits on a server waiting to be stolen. Each authentication is a fresh, unreplayable cryptographic signature.

<Definition term="False Acceptance Rate (FAR)">
The probability that a biometric system incorrectly accepts an unauthorized person. Windows Hello requires a facial recognition FAR below 0.001% (1 in 100,000) [@ms-biometric-reqs]. Apple's Face ID is documented at less than 0.0001% (1 in 1,000,000) for a single enrolled face [@apple-faceid-security]. Lower is better -- but zero is theoretically impossible.
</Definition>

<Definition term="Near-infrared (NIR) imaging">
A camera technology that captures light in the 700--1000 nanometer wavelength range, invisible to the human eye. Windows Hello uses NIR cameras because infrared illumination works regardless of ambient lighting and is harder to spoof with printed photos or screens -- standard displays do not emit near-infrared light. Or so everyone assumed until 2025.
</Definition>

> **Note:** Without a TPM, Windows Hello falls back to software key storage, dramatically weakening the security model. The private key becomes a file protected by the OS rather than a secret sealed in tamper-resistant silicon. Always verify TPM 2.0 is present and active before relying on Hello's security properties.

<Aside label="How the TPM Works">
A Trusted Platform Module is not a general-purpose processor. It is a purpose-built chip (or firmware module) designed for a narrow set of cryptographic operations: key generation, key storage, signing, and attestation.

When Windows Hello enrolls a user, the TPM generates a key pair using its internal random number generator. The private key never exists outside the chip's boundary -- it is generated inside the TPM and stays there. The TPM enforces access policies: it will only release the key for signing after the device OS confirms that the biometric match succeeded. Even a compromised operating system kernel cannot extract the private key from a hardware TPM.

This is fundamentally different from software key storage, where the key is a file on disk that any sufficiently privileged process can read.
</Aside>

### The PIN paradox

Windows Hello also revived the humble PIN -- and made it more secure than a complex password. A Hello PIN [@ms-whfb] is device-bound: it unlocks the TPM-stored private key on that specific device. A stolen PIN is useless without physical access to the hardware. Compare this to a password, which works from any device on earth. A 4-digit PIN on Windows Hello is architecturally more secure than a 20-character password reused across services.

<Sidenote>
Microsoft Passport was briefly announced as a separate product in early 2015 -- the cryptographic key infrastructure behind Windows Hello. By late 2015, the branding was merged. "Microsoft Passport" was retired and its functionality absorbed into "Windows Hello" and "Windows Hello for Business." The separate brand caused market confusion and was quickly abandoned.
</Sidenote>

The biometric FAR can be expressed mathematically. For a face recognition system with $n$ enrolled users and a per-comparison FAR of $p$, the probability of at least one false acceptance across all comparisons is:

$$P(\text{false accept}) = 1 - (1 - p)^n$$

For Windows Hello's required FAR of $10^{-5}$ [@ms-biometric-reqs] and a single user, this gives a 0.001% chance per authentication attempt. With 1,000 attempts, the cumulative probability rises to roughly 1% -- which is why lockout policies and anti-hammering protections exist.

<RunnableCode lang="js" title="Simulating Hello's asymmetric challenge-response">{`
// This demonstrates the core idea behind Windows Hello's authentication.
// In the real system, the private key lives in the TPM and never leaves.

async function simulateHelloAuth() {
  // Step 1: Enrollment -- generate key pair (TPM does this in hardware)
  const keyPair = await crypto.subtle.generateKey(
    { name: "ECDSA", namedCurve: "P-256" },
    true, // extractable for demo only; TPM keys are NOT extractable
    ["sign", "verify"]
  );
  console.log("Key pair generated (simulating TPM enrollment)");

  // Step 2: Server sends a challenge nonce
  const challenge = crypto.getRandomValues(new Uint8Array(32));
  console.log("Server challenge:", Array.from(challenge.slice(0, 8)).map(b => b.toString(16).padStart(2, '0')).join(''));

  // Step 3: Device signs the challenge with the private key
  const signature = await crypto.subtle.sign(
    { name: "ECDSA", hash: "SHA-256" },
    keyPair.privateKey,
    challenge
  );
  console.log("Signed assertion:", new Uint8Array(signature).slice(0, 16).join(',') + '...');

  // Step 4: Server verifies with the public key
  const valid = await crypto.subtle.verify(
    { name: "ECDSA", hash: "SHA-256" },
    keyPair.publicKey,
    signature,
    challenge
  );
  console.log("Server verification:", valid ? "SUCCESS" : "FAILED");
  console.log("\\nNote: The private key never left the device.");
  console.log("The server only has the public key -- useless to an attacker.");
}

simulateHelloAuth();
`}</RunnableCode>

Windows Hello solved the fundamental password problem: no shared secrets ever traverse the network. But the story does not end here -- because researchers would soon discover that protecting the key was not enough if you could not trust the camera.

---

## The Enterprise Gambit: Windows Hello for Business

Windows Hello delighted consumers. But enterprise IT administrators asked a harder question: how do I deploy this to 50,000 machines managed by Active Directory?

<Definition term="WebAuthn">
The W3C Web Authentication API -- a browser standard that lets websites request public-key-based authentication from platform authenticators (like Windows Hello) or roaming authenticators (like security keys). WebAuthn became a W3C Recommendation on March 4, 2019, forming the browser-side component of the FIDO2 standard alongside CTAP (Client-to-Authenticator Protocol).
</Definition>

Windows Hello for Business (WHfB) [@ms-whfb] launched in 2016 with two trust types, each carrying its own infrastructure burden:

**Certificate Trust** required a full Public Key Infrastructure -- a Certificate Authority hierarchy, CRL distribution points, certificate templates, and ADFS (Active Directory Federation Services). For organizations that already had PKI, this was a natural fit. For everyone else, it meant weeks of setup.

**Key Trust** required Windows Server 2016+ domain controllers with AD schema extensions. Simpler than Certificate Trust, but still demanded on-premises infrastructure that many cloud-first organizations were trying to eliminate.

<Sidenote>
Yogesh Mehta, Principal Group Program Manager at Microsoft, evangelized Windows Hello for Business at Ignite 2016. He would later be credited as a key figure in the FIDO2 certification effort. The original Belfiore blog post URL announcing Windows Hello is now lost to link rot.
</Sidenote>

Two milestones accelerated adoption. In March 2019, WebAuthn became a W3C Recommendation [@w3c-webauthn] -- a universal browser API for public-key authentication. Android had already been FIDO2-certified in February 2019 [@fido-android-certification]; two months after WebAuthn's recommendation, Windows Hello became one of the first FIDO2-certified platform authenticators built into a desktop operating system [@fido-certification]. Together, these meant that Windows Hello could authenticate not just to Windows, but to any FIDO2-supporting website through any modern browser.

> **Note:** Unless you have specific PKI requirements, Cloud Trust -- announced by Microsoft in 2022 [@ms-cloud-trust-ga] -- eliminates much of the complexity of certificate and key trust deployments. It requires Entra ID configuration and Microsoft Entra Kerberos rather than a full on-prem PKI or ADFS stack, which is why Microsoft now treats it as the default recommendation for many hybrid organizations.

<Aside label="Choosing a WHfB Trust Model">
</Aside>

<Mermaid caption="Decision tree for choosing a Windows Hello for Business trust model">
flowchart TD
    A[Choose a WHfB Trust Model] --> B&#123;Cloud-native org using Entra ID?&#125;
    B -->|Yes| C[Cloud Trust -- Recommended]
    B -->|No| D&#123;On-prem AD still required?&#125;
    D -->|Yes| E&#123;Existing PKI infrastructure?&#125;
    D -->|No| C
    E -->|Yes| F[Certificate Trust]
    E -->|No| G[Key Trust]
    C --> H[Simplest deployment: Entra ID only]
    F --> I[Most complex: CA + CRL + ADFS]
    G --> J[Moderate: Server 2016+ DCs required]
</Mermaid>

**Cloud Trust** delegates all validation to Entra ID. No on-premises PKI, no ADFS, no certificate templates. Best for organizations that are cloud-native or hybrid with Azure AD.

**Key Trust** requires Windows Server 2016+ domain controllers with AD schema extensions. Choose this if you need on-premises AD support but do not have PKI.

**Certificate Trust** requires the full PKI stack -- CA hierarchy, CRL distribution, ADFS. Choose this only if your organization already has PKI infrastructure and needs certificate-based authentication for regulatory compliance.

Enterprise deployment was painful -- multiple trust models confused administrators, and adoption was slower than hoped. But it was about to get much worse. In July 2021, a researcher with a low-cost USB board would demonstrate that Windows Hello's most basic assumption was wrong.

---

## The Security Arms Race: When Researchers Fought Back

Omer Tsarfati had a simple question: what happens if you plug in a USB device that *claims* to be an IR camera? The answer would force Microsoft to rethink Windows Hello's entire trust model.

### The USB camera bypass (CVE-2021-34466)

In July 2021, Tsarfati at CyberArk Labs [@cyberark-bypass] revealed that Windows Hello's facial recognition accepted input from any USB device presenting itself as an IR camera -- with no attestation, no hardware trust verification, and no device identity check.

<Sidenote>
Tsarfati's attack required only a single IR frame -- not video, not a 3D reconstruction, just one static infrared image of the target's face. The simplicity of the attack was what made it so alarming.
</Sidenote>

Using an NXP evaluation board [@msrc-cve-2021], Tsarfati constructed a custom USB device that replayed a single IR frame of a target's face. Plug it in, and Windows Hello authenticated the attacker as the target. At the time, 85% of Windows 10 users employed Windows Hello [@cyberark-bypass] -- making this a massive attack surface.

The insight was devastating: the TPM protected the key, but nobody protected the camera. Windows Hello's threat model assumed trusted camera hardware. The USB specification makes no such guarantee.

<Definition term="Virtualization-Based Security (VBS)">
A Windows feature that uses the hardware hypervisor to create an isolated virtual environment (Virtual Trust Level 1, or VTL1) separated from the main OS kernel (VTL0). Even if an attacker gains SYSTEM-level access to the Windows kernel, they cannot read memory in VTL1. Windows Hello's Enhanced Sign-in Security uses VBS to isolate biometric processing.
</Definition>

### Microsoft's response: ESS and VBS

Microsoft's answer came with Windows 11: Enhanced Sign-in Security (ESS) [@ms-ess], which moved biometric matching into the VBS-protected enclave described above. Even a compromised Windows kernel cannot access templates or tamper with the comparison pipeline there.

<Mermaid caption="VBS/ESS isolation architecture -- biometric processing runs in a hypervisor-protected enclave">
flowchart TD
    subgraph VTL0["VTL0: Normal OS Environment"]
        A[Windows Kernel]
        B[Applications]
        C[Standard Drivers]
    end
    subgraph VTL1["VTL1: Secure World -- ESS"]
        D[Biometric Matching Engine]
        E[Encrypted Template Storage]
        F[Credential Isolation]
    end
    G[Hypervisor] --- VTL0
    G --- VTL1
    H[Secure Biometric Sensor] --> D
    A -.->|Blocked by Hypervisor| D
    B -.->|Blocked by Hypervisor| E
</Mermaid>

Alongside ESS, Microsoft rolled out Cloud Trust in 2022 [@ms-cloud-trust-ga], eliminating the need for on-premises PKI for many deployments. Two problems -- biometric isolation and deployment complexity -- were finally being addressed in parallel.

### Red Bleed: the NIR assumption shatters (CVE-2025-26644)

The arms race was not over. In August 2025, researchers Bowen Hu, Kuo Wang, and Chip Hong Chang at Nanyang Technological University presented "Red Bleed" [@red-bleed] at USENIX Security 2025. Microsoft had already patched CVE-2025-26644 [@wiz-cve] in April 2025, but the full attack was now public.

Windows Hello's NIR facial recognition relied on a critical assumption: no commercial display can emit near-infrared light. The researchers shattered this assumption [@nvd-red-bleed] with a custom-built LCD screen costing less than $400 that could display NIR images. They trained a Variational Autoencoder to convert widely available RGB photos -- from social media, video calls, public sources -- into convincing NIR facial videos. The result: a presentation attack that bypassed Windows Hello face authentication and prompted liveness-detection hardening [@red-bleed-pdf]. <MarginNote>The Red Bleed attack name references the "red bleed" phenomenon in LCD panels where a small amount of near-infrared light leaks through the color filters -- the researchers amplified this effect with a custom panel.</MarginNote>

Microsoft's April 2025 patch strengthened liveness detection and anti-spoofing measures for NIR authentication.

### Faceplant: the template swap (CVE-2026-20804)

The third major attack came from ERNW Research in August 2025. At Black Hat USA 2025, Baptiste David and Tillmann Oßwald's official conference briefing "Windows Hell No for Business" [@blackhat-windows-hell-no] detailed the Faceplant template-injection attack, which they later documented technically on ERNW's research blog [@faceplant].

In practice, an attacker with local administrator privileges could enroll their own face on one machine, extract the resulting template, and transplant it into the victim's biometric database on the target device. After injection, Windows Hello accepted the attacker's face for the victim's account. ERNW traced the weakness to software-protected templates that a local administrator could extract and replace on non-ESS systems [@faceplant].

ESS blocks this attack completely -- biometric templates in VTL1 are inaccessible even to local administrators. But many enterprise PCs lack ESS-compatible hardware.

> **Note:** Many enterprise PCs -- particularly those with AMD processors or older Intel chipsets -- lack ESS-compatible biometric sensors. On these machines, biometric templates remain in software-protected storage vulnerable to the Faceplant attack. Verify hardware compatibility before assuming biometric isolation is active.

<Mermaid caption="The security arms race -- each attack revealed a new layer that needed protection">
flowchart TD
    A["2015: Windows Hello Launch"] --> B["2021: CVE-2021-34466\nUSB Camera Spoofing"]
    B --> C["Microsoft Response:\nESS + VBS Isolation"]
    C --> D["2025: CVE-2025-26644\nRed Bleed NIR Attack"]
    D --> E["Microsoft Response:\nLiveness Detection Update"]
    E --> F["2025: CVE-2026-20804\nFaceplant Template Injection"]
    F --> G["Defense: ESS Hardware\nIsolation Blocks Attack"]
    G --> H["Ongoing: Adversarial ML\nArms Race"]
    style B fill:#f66,stroke:#333
    style D fill:#f66,stroke:#333
    style F fill:#f66,stroke:#333
    style C fill:#6f6,stroke:#333
    style E fill:#6f6,stroke:#333
    style G fill:#6f6,stroke:#333
</Mermaid>

> **Key idea:** Each generation of authentication protected a new layer -- but every layer revealed the next attack surface. The TPM protected the key. ESS protected the biometric pipeline. Liveness detection hardened NIR authentication. Security is never a single solution. It is a stack, and each layer needs its own defense.

The arms race revealed a humbling truth: biometric authentication is not a silver bullet. It is a layered defense -- and each layer needs its own protection. But while researchers probed Windows Hello's defenses, the industry was converging on something bigger.

---

## The Convergence: Passkeys and the Passwordless Future

May 5, 2022. Apple, Google, and Microsoft [@passkeys-announcement] -- three companies that agree on almost nothing -- issued a joint announcement: they were all committing to passkeys.

<Definition term="Passkey">
A FIDO2/WebAuthn credential built on the same public-key model as Windows Hello. Passkeys can be device-bound (like traditional Hello credentials, stored in the TPM) or synced across devices through a credential manager such as iCloud Keychain or Google Password Manager. The local biometric or PIN check stays on-device; the relying party only sees public keys and signatures.
</Definition>

FIDO2 had a usability problem. Credentials were bound to a single device. Lose your laptop, lose your credentials. Passkeys solved this by introducing synced credentials -- private keys encrypted and distributed across a user's devices through their platform credential manager. The FIDO Alliance's protocol [@fido-how] maintained the cryptographic guarantees (no shared secrets, phishing resistance) while adding the portability users demanded.

<Sidenote>
"World Password Day" was symbolically renamed "World Passkey Day" in May 2025, when Microsoft announced that new accounts would default to passwordless authentication.
</Sidenote>

### The numbers tell the story

By May 2025, Microsoft made new accounts passwordless by default [@ms-passkeys]:

- Nearly 1 million passkey registrations daily [@ms-passkeys]
- 98% passkey sign-in success rate [@ms-passkeys] vs. 32% for passwords
- Passkey sign-ins 8x faster [@ms-passkeys] than password + MFA

### How the platforms compare

| Dimension | Windows Hello (WHfB) | Apple Face ID / Passkeys | Google Passkeys | FIDO2 Hardware Keys |
|---|---|---|---|---|
| **Hardware root of trust** | TPM 2.0 | Secure Enclave | TEE / Titan M | On-key secure element |
| **Credential sync** | No (device-bound) | Yes (iCloud Keychain) | Yes (Google PM) | No (hardware-bound) |
| **Cross-platform** | Windows only | Apple + QR/BT bridge | Android/Chrome + QR/BT | Universal USB/NFC/BT |
| **FAR (face)** | < 0.001% | < 0.0001% | Varies by OEM | N/A |
| **Enterprise management** | Intune, GP, Conditional Access | Limited (Apple MDM) | Android Enterprise | Manual provisioning |
| **Recovery on device loss** | Re-enroll on new device | iCloud backup restore | Google Account restore | Requires backup key |
| **NIST AAL level** | AAL2 | AAL2 | AAL2 | AAL3-eligible |
| **Best suited for** | Windows enterprise | Apple platform | Android / cross-platform web | High-assurance regulated |

Sources: Microsoft biometric requirements [@ms-biometric-reqs], Apple passkey security [@apple-passkeys-security], Google passkeys [@google-passkeys], FIDO specifications [@fido-specs]

Google's passkey story is centered on Google Password Manager: passkeys created on Android or Chrome sync across Android, ChromeOS, Windows, macOS, Linux, and Chrome browsers where the same account is available [@google-passkeys]. FIDO2 hardware security keys (YubiKey, Google Titan) take the opposite approach: the credential stays on a dedicated secure element, works across platforms via USB/NFC/Bluetooth, and must be provisioned deliberately on each account [@fido-u2f; @fido-how]. That trade-off buys the highest assurance available today; multi-factor cryptographic hardware authenticators are the mainstream route to NIST AAL3 [@nist-aal].

<Mermaid caption="FIDO2 passkey registration flow -- how a new credential is created">
sequenceDiagram
    participant U as User
    participant B as Browser
    participant A as Platform Authenticator
    participant S as Relying Party Server
    U->>B: Click Register with Passkey
    B->>S: Request registration options
    S->>B: Return challenge + relying party info
    B->>A: navigator.credentials.create()
    A->>U: Prompt biometric verification
    U->>A: Present face / fingerprint / PIN
    A->>A: Generate key pair in TPM
    A->>B: Return public key + attestation
    B->>S: Send credential to server
    S->>S: Store public key for user
    S->>B: Registration complete
</Mermaid>

<RunnableCode lang="js" title="WebAuthn passkey registration options (browser API)">{`
// This shows the structure of a WebAuthn registration request.
// In production, the challenge comes from your server.

const registrationOptions = {
  publicKey: {
    // Random challenge from the server (32 bytes)
    challenge: crypto.getRandomValues(new Uint8Array(32)),

    // Your service identity
    rp: {
      name: "Example Corp",
      id: "example.com"
    },

    // User identity
    user: {
      id: new Uint8Array([1, 2, 3, 4]),
      name: "alice@example.com",
      displayName: "Alice"
    },

    // Acceptable key types (ES256 = ECDSA P-256)
    pubKeyCredParams: [
      { type: "public-key", alg: -7 }  // ES256
    ],

    // Request a resident/discoverable credential (passkey)
    authenticatorSelection: {
      residentKey: "required",
      userVerification: "required"  // Biometric or PIN
    },

    // 5-minute timeout
    timeout: 300000
  }
};

console.log("Registration options structure:");
console.log(JSON.stringify(registrationOptions.publicKey.rp, null, 2));
console.log("\\nKey algorithm: ES256 (ECDSA P-256)");
console.log("Resident key: required (discoverable passkey)");
console.log("User verification: required (biometric or PIN)");
console.log("\\nIn production, call: navigator.credentials.create(registrationOptions)");
`}</RunnableCode>

## Deploying Windows Hello Today

For consumers, the simplest path is built into Windows: open **Settings > Accounts > Sign-in options**, create a Windows Hello PIN first, then enroll face or fingerprint if the hardware is present [@ms-whfb]. If Windows only offers PIN, the machine lacks a compatible biometric sensor. On a laptop with an IR camera or certified fingerprint reader, enrollment takes a few minutes and the credential becomes device-bound immediately.

For enterprises, Microsoft now recommends starting with Cloud Trust unless certificate-based authentication is a hard requirement. A practical rollout checklist is short: confirm devices are Entra joined or hybrid joined, deploy Microsoft Entra Kerberos, verify Windows 10 21H2+/Windows 11 clients and Windows Server 2016+ read-write domain controllers in each site, then push **Use Windows Hello for Business** plus **Use cloud trust for on-premises authentication** through Intune or Group Policy [@ms-cloud-trust-ga; @ms-whfb-deploy]. That is dramatically lighter than standing up PKI, ADFS, and certificate templates.

ESS deserves its own hardware check. A TPM alone is not enough: ESS depends on Windows 11, VBS-capable hardware, and compatible secure biometric sensors [@ms-ess]. Unsupported systems can still use Hello, but they fall back to the older software-protected biometric path. Hardware inventory determines whether you are getting the modern threat model or merely the old UX.

> **Note:** Start with a pilot group, require a Hello PIN for every enrolled user, and issue at least one backup FIDO2 security key to admins and help-desk staff. The cleanest password migration is additive: enroll Hello first, prove recovery works, then remove password prompts from the highest-value workflows last.

For password migration, avoid a flag day. Keep passwords as break-glass recovery while you move device sign-in, Microsoft 365, VPN, and high-value internal apps onto Hello or passkeys first [@ms-entra-passwordless]. Measure enrollment completion, recovery success, and hardware exceptions. Once those numbers stabilize, tighten Conditional Access so phishing-resistant credentials satisfy MFA and passwords become the fallback of last resort.

After 64 years, the password is finally losing its grip. But the story of Windows Hello is not a triumph -- it is a lesson in the limits of security engineering.

---

## The Limits: What Remains Unsolved

Biometrics fail in a way passwords do not: they are hard to rotate.

<PullQuote>
You cannot change your face. This single fact defines the deepest unsolved problem in biometric authentication.
</PullQuote>

Passwords can be rotated. Security keys can be replaced. But you have one face, ten fingerprints, and two irises. If a biometric template is compromised, there is no "reset" button.

<Definition term="Cancelable biometrics">
A technique for generating revocable biometric templates by applying non-invertible mathematical transformations to the original biometric data. If a transformed template is compromised, a new transformation can be applied to create a fresh template from the same biometric trait. In theory, this solves the irrevocability problem. In practice, the trade-off between non-invertibility and matching accuracy remains unresolved.
</Definition>

### The biometric floor

The theoretical limit on biometric authentication error is the Bayes error rate [@jain-biometric] -- the minimum achievable error when the genuine-user and impostor score distributions overlap. Per information theory, the error probability is bounded by Fano's inequality:

$$P_e \geq \frac{H(X|Y) - 1}{\log |X|}$$

where $P_e$ is the probability of error, $H(X|Y)$ is the conditional entropy of identity given the biometric sample, and $|X|$ is the number of possible identities. Current systems achieve a FAR of $10^{-5}$ to $10^{-6}$, but the theoretical minimum [@jain-biometric] -- given perfect sensors and optimal classifiers -- could be orders of magnitude lower. The practical gap is driven by sensor noise, environmental variability, and aging of biometric features.

### Five open problems

**1. Cross-platform credential portability.** Passkeys are currently vendor-locked. An Apple passkey does not transfer to a Google account. The FIDO Alliance published draft CXP/CXF specifications [@fido-cxp] in late 2024 for encrypted credential exchange, but full cross-vendor interoperability is not expected before late 2026.

**2. The adversarial ML arms race.** Generative AI can create increasingly convincing biometric spoofs -- the Red Bleed attack [@red-bleed] used a VAE to convert RGB photos to NIR facial videos. Discriminative AI tries to detect these spoofs. This is an open-ended arms race with no known endpoint.

**3. Account recovery.** When all biometric and device-based credentials fail, how does a user recover their account? Most services fall back to email or SMS [@ms-entra-passwordless] -- reintroducing the very phishable factors they were designed to eliminate. Recovery codes are functionally passwords.

> **Note:** Systems that fall back to passwords or SMS for account recovery reintroduce the very vulnerabilities they were designed to eliminate. A truly passwordless system needs passwordless recovery -- and no universal solution exists yet.

**4. The quantum threat.** Shor's algorithm [@nist-pqc] on a sufficiently large quantum computer would break all ECDSA and RSA authentication -- including every FIDO2 credential in existence. NIST finalized post-quantum standards [@nist-pqc] (ML-DSA, SLH-DSA, ML-KEM) in 2024, but no FIDO2 authenticator ships with post-quantum support as of 2026.

<Aside label="The Quantum Threat to FIDO2">
All current FIDO2/WebAuthn authentication uses ECDSA P-256, which provides 128-bit classical security. Breaking a single credential requires approximately $2^{128}$ operations -- far beyond any existing computer.

Shor's algorithm changes this equation. A cryptographically relevant quantum computer could factor the elliptic curve discrete logarithm problem in polynomial time, breaking ECDSA entirely. No such computer exists today, but the "harvest now, decrypt later" threat means adversaries may be collecting signed assertions now to verify forged credentials later.

NIST finalized its first post-quantum cryptography standards in 2024 [@nist-pqc]: ML-DSA (formerly CRYSTALS-Dilithium) for signatures, ML-KEM (formerly CRYSTALS-Kyber) for key encapsulation, and SLH-DSA (formerly SPHINCS+) for hash-based signatures. The FIDO Alliance and W3C are exploring hybrid signature schemes that combine classical ECDSA with post-quantum algorithms, but no timeline for standardization has been published.
</Aside>

**5. The ESS hardware gap.** ESS requires specific secure sensors and VBS-capable CPUs [@ms-ess]. Many enterprise PCs -- particularly AMD-based or older Intel machines -- lack the hardware. On these devices, Windows Hello falls back to the pre-ESS security model, leaving them vulnerable to attacks like Faceplant.

**6. Accessibility and inclusion.** Biometric authentication creates barriers for people with facial differences, missing fingers, or conditions that affect biometric stability. A passwordless future must ensure that non-biometric alternatives (PINs, hardware keys) remain first-class options, not afterthoughts. Behavioral biometrics -- keystroke dynamics, gait analysis, continuous session verification -- represent an emerging parallel path that may expand authentication options beyond traditional biometric modalities.

<Spoiler kind="solution" label="Check if ESS is active on your device">
Open PowerShell as administrator and run:

```
Get-CimInstance -Namespace root/Microsoft/Windows/DeviceGuard -ClassName Win32_DeviceGuard | Select-Object VirtualizationBasedSecurityStatus
```

A value of `2` means VBS is running. Then check the biometric service:

```
Get-WinEvent -LogName Microsoft-Windows-Biometrics/Operational -MaxEvents 10 | Format-List
```

Look for events indicating ESS-protected biometric operations. If your device lacks ESS, consider disabling biometric sign-in on sensitive accounts and using FIDO2 hardware keys instead.
</Spoiler>

> **Key idea:** Biometric traits are permanent and finite. Unlike passwords, they cannot be changed if compromised. This irrevocability is the deepest unsolved challenge in passwordless authentication -- and no amount of better sensors or smarter algorithms can change the fact that you have one face, ten fingerprints, and two irises.

The theoretically ideal system would combine zero-knowledge biometric verification, post-quantum cryptographic authentication, hardware-attested revocable credentials, and cross-platform portability. None of this exists yet.

The password's 64-year reign is ending, but its replacement is still under construction. Every generation of authentication solved one problem and revealed a deeper one. The question is not whether passwordless authentication will win -- it is whether we can build it before the attackers catch up.

---

## Frequently Asked Questions

<FAQ title="Frequently asked questions about Windows Hello">

<FAQItem question="Does Microsoft store my face in the cloud?">
No. Biometric data never leaves the device. During enrollment, your face or fingerprint template is stored locally, protected by the operating system (and by VBS on ESS-enabled devices). Only a public key is registered with the identity provider (Azure AD / Entra ID) [@ms-whfb]. Microsoft's servers never receive, store, or process your biometric data.
</FAQItem>

<FAQItem question="Can a photo fool Windows Hello?">
Standard photos cannot. Windows Hello uses near-infrared cameras [@ms-biometric-reqs] with anti-spoofing algorithms that distinguish between live faces and flat images. However, researchers have demonstrated advanced attacks: CVE-2021-34466 [@cyberark-bypass] used a custom USB device emulating an IR camera, and the Red Bleed attack [@red-bleed] used a custom NIR-emitting LCD display. Both have been patched, but the arms race continues.
</FAQItem>

<FAQItem question="Is a PIN less secure than a password?">
No -- it is more secure. A Windows Hello PIN is device-bound [@ms-whfb]: it unlocks a TPM-stored private key on that specific hardware. A stolen PIN is useless without physical access to the device. A password, by contrast, works from any device on earth and can be phished, reused, or leaked in a breach.
</FAQItem>

<FAQItem question="What is the difference between Windows Hello and Windows Hello for Business?">
Consumer Windows Hello [@ms-whfb] ties authentication to a personal Microsoft account. Windows Hello for Business integrates with Azure AD / Entra ID with enterprise management capabilities: conditional access policies, Intune deployment, multiple trust models (cloud, key, certificate), and group policy controls. They share the same biometric and TPM technology but have different management and security models.
</FAQItem>

<FAQItem question="Do passkeys replace Windows Hello?">
No. Passkeys build on Hello's foundation. Windows Hello acts as the platform authenticator for FIDO2 passkeys [@fido-how] on Windows -- your biometric gesture unlocks the passkey stored in the TPM. Passkeys extend Hello's model to cross-platform and cross-service authentication via the WebAuthn standard [@webauthn-3].
</FAQItem>

<FAQItem question="What happens if I lose my device?">
With device-bound credentials (traditional Windows Hello), you re-enroll on the new device using your Microsoft or organizational account. With synced passkeys, credentials restore from your credential manager -- iCloud Keychain [@apple-passkeys-security] for Apple, Google Password Manager [@google-passkeys] for Android/Chrome. Registering a FIDO2 hardware security key [@fido-specs] as a backup authenticator is strongly recommended.
</FAQItem>

<FAQItem question="Is Windows Hello safe from quantum computers?">
Not indefinitely. The asymmetric cryptography underlying Hello and FIDO2 (ECDSA P-256) is theoretically vulnerable [@nist-pqc] to quantum computers running Shor's algorithm. No quantum computer can break it today, and the timeline for cryptographically relevant quantum computers remains uncertain. NIST finalized post-quantum cryptography standards in 2024, but no FIDO2 authenticator ships with post-quantum support yet. Migration planning should begin now.
</FAQItem>

</FAQ>

---

<StudyGuide slug="windows-hello-revolution" keyTerms={[
  { term: "TPM", definition: "Trusted Platform Module -- hardware chip that generates and stores cryptographic keys" },
  { term: "Asymmetric cryptography", definition: "Public-key/private-key system where data signed with one key is verified with the other" },
  { term: "FAR", definition: "False Acceptance Rate -- probability a biometric system accepts an unauthorized person" },
  { term: "NIR", definition: "Near-infrared imaging -- camera technology used by Windows Hello for anti-spoofing" },
  { term: "WebAuthn", definition: "W3C standard browser API for public-key-based authentication" },
  { term: "VBS", definition: "Virtualization-Based Security -- hypervisor isolation for secure processing" },
  { term: "ESS", definition: "Enhanced Sign-in Security -- VBS-isolated biometric matching in Windows 11" },
  { term: "Passkey", definition: "FIDO2 credential that can be synced across devices via credential managers" },
  { term: "FIDO2", definition: "Industry standard for passwordless authentication (WebAuthn + CTAP)" },
  { term: "Cancelable biometrics", definition: "Revocable biometric templates using non-invertible transformations" }
]} />
