<?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: biometrics</title><description>Posts tagged biometrics.</description><link>https://paragmali.com/</link><language>en-US</language><lastBuildDate>Sun, 07 Jun 2026 04:13:13 GMT</lastBuildDate><atom:link href="https://paragmali.com/tags/biometrics/rss.xml" rel="self" type="application/rss+xml"/><item><title>Fuzzy Extractors and the One Inequality That Explains Why Windows Hello Doesn&apos;t Use One</title><link>https://paragmali.com/blog/fuzzy-extractors-windows-hello/</link><guid isPermaLink="true">https://paragmali.com/blog/fuzzy-extractors-windows-hello/</guid><description>Fuzzy extractors turn noisy biometrics into stable cryptographic keys. A single 2004 inequality explains why Windows Hello deliberately does not use one.</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><content:encoded>
A fuzzy extractor turns a noisy, low-entropy biometric reading into a stable, uniformly random cryptographic key, with a public helper string that leaks negligibly little about the key. The Dodis-Reyzin-Smith 2004 construction is the canonical primitive: a secure sketch composed with a strong randomness extractor, governed by a single security inequality that bounds the extractable key length by the source min-entropy, minus the code redundancy, minus twice the security parameter. For consumer face and fingerprint at realistic noise levels, that inequality forbids a cryptographically useful key. Windows Hello -- and Apple Face ID -- consequently use a *match-then-unwrap-TPM-sealed-key* architecture instead, in which the biometric is a gate, not an input to key derivation.
&lt;h2&gt;1. Why can&apos;t a fingerprint just be a password?&lt;/h2&gt;
&lt;p&gt;A developer building a login system writes &lt;code&gt;key = SHA256(fingerprint_image)&lt;/code&gt;, ships it, and never logs in again. Two scans of the same finger produce two slightly different images, the hash is avalanche-sensitive by design, and the cryptographic key is unrecoverable on every authentication after the first. The fix is not a bigger hash. The fix is a new cryptographic primitive.&lt;/p&gt;
&lt;p&gt;The mistake is universal because the temptation is universal. A fingerprint feels like a password: it identifies you, it is hard to forge, and you carry it everywhere. So why not just hash it into a 256-bit key the way every developer has hashed a password for thirty years? The answer is mechanical. SHA-256 is an avalanche function: flipping a single input bit flips, on average, half the output bits. A fingerprint sensor returns a slightly different image every time you press your finger to the glass; one stray dust mote, one degree of rotation, one pixel of pressure variation, and the input has changed in thousands of bits. The hash is statistically independent of the previous one. The key is gone.&lt;/p&gt;
&lt;p&gt;{&lt;code&gt;// Two near-identical 128-bit &quot;fingerprint readings&quot; differing in just 5 bits const enc = new TextEncoder(); async function sha256Hex(bytes) {   const h = await crypto.subtle.digest(&apos;SHA-256&apos;, bytes);   return [...new Uint8Array(h)].map(b =&amp;gt; b.toString(16).padStart(2,&apos;0&apos;)).join(&apos;&apos;); } const w1 = new Uint8Array(16); for (let i = 0; i &amp;lt; 16; i++) w1[i] = (i * 37) &amp;amp; 0xff; const w2 = w1.slice(); w2[3] ^= 0x01; w2[7] ^= 0x10; w2[11] ^= 0x02; w2[12] ^= 0x40; w2[15] ^= 0x80; const h1 = await sha256Hex(w1), h2 = await sha256Hex(w2); let diff = 0; for (let i = 0; i &amp;lt; 64; i++) if (h1[i] !== h2[i]) diff++; console.log(&apos;reading 1 hash:&apos;, h1); console.log(&apos;reading 2 hash:&apos;, h2); console.log(&apos;hex digits that differ:&apos;, diff, &apos;/ 64&apos;); console.log(&apos;the second hash shares nothing with the first&apos;);&lt;/code&gt;}&lt;/p&gt;
&lt;p&gt;Any biometric authentication scheme has to confront two simultaneous problems. The first is that biometric readings are &lt;em&gt;noisy&lt;/em&gt;: two scans of the same finger differ in many bits, two photos of the same face under different lighting differ in millions. The second is that biometric distributions are &lt;em&gt;low-entropy&lt;/em&gt;: fingerprints, faces, and even irises are far from uniformly random bitstrings; they cluster heavily, and a clever guesser can do much better than brute force.&lt;/p&gt;
&lt;p&gt;The Dodis-Reyzin-Smith framing of these two facts, in the introduction of their 2004 paper, is precise: &quot;strings that are neither uniformly random nor reliably reproducible seem to be more plentiful&quot; than the well-behaved strings classical cryptography assumes [@dors-2008-siamjc]. Hao, Anderson, and Daugman put the engineering version of the problem in one sentence: &quot;the main obstacle to algorithmic combination is that biometric data are noisy; only an approximate match can be expected to a stored template. Cryptography, on the other hand, requires that keys be exactly right, or protocols will fail&quot; [@hao-anderson-daugman-2005-tr].&lt;/p&gt;

A pair of algorithms $(\text{Gen}, \text{Rep})$ such that $\text{Gen}(w) \to (R, P)$ produces a uniformly random key $R \in \{0,1\}^\ell$ and a public helper string $P$, while $\text{Rep}(w&apos;, P) \to R$ recovers the same key $R$ for any $w&apos;$ within distance $t$ of $w$. The helper $P$ may be public; it must leak only negligibly about $R$ under any source $W$ of sufficient min-entropy [@dors-2008-siamjc].
&lt;p&gt;A fuzzy extractor is the primitive built to solve exactly this design problem. Given a noisy source $w$ with at least $m$ bits of min-entropy, $\text{Gen}$ produces a stable key $R$ and a public helper $P$; given any reading $w&apos;$ within Hamming distance $t$ of the original, $\text{Rep}$ recovers $R$ identically. The helper $P$ is allowed to be public; the security guarantee says $P$ leaks at most $\varepsilon$ bits about $R$ in statistical distance. This primitive is the right answer to the developer&apos;s mistake at the top of the section, and it has been the subject of twenty years of beautiful cryptographic theory.&lt;/p&gt;
&lt;p&gt;So here is the puzzle the rest of the article will solve. Every major consumer biometric authentication product -- &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&lt;/a&gt; (2015), Apple Touch ID (2013), Apple Face ID (2017) -- has explicitly avoided this primitive. None of them derives a cryptographic key from your biometric. Why? The answer takes nine more sections, and it bottoms out on one inequality.&lt;/p&gt;
&lt;h2&gt;2. Historical origins: the 1990s problem statement&lt;/h2&gt;
&lt;p&gt;By the late 1990s the smartcard-and-PKI deployment wave had forced an uncomfortable question on the cryptographic community: how do you bind a long-lived private key to a &lt;em&gt;person&lt;/em&gt; rather than a &lt;em&gt;device&lt;/em&gt;? Smartcards were cheap to mass-produce, but they were also cheap to steal, and PINs got shared the moment any user found them inconvenient. Tying the key to a fingerprint or an iris reading promised a way out, but the underlying mathematics had not yet been written down.&lt;/p&gt;
&lt;p&gt;Two foundational tools were already in the cryptographic toolkit and would later become load-bearing pieces of the fuzzy extractor. The first was the 1979 Carter-Wegman construction of &lt;em&gt;universal hash functions&lt;/em&gt;: a family ${h_s}$ such that for any two distinct inputs $x \ne y$, $\Pr_s[h_s(x) = h_s(y)] \le 1/|\text{range}|$ [@carter-wegman-1979]. The second was the 1989 Impagliazzo-Levin-Luby Leftover Hash Lemma (LHL), which proved that applying a randomly chosen universal hash to any min-entropy source yields an output statistically indistinguishable from uniform, up to a precise entropy budget [@ill-1989]. Together, these two results were a randomness-extraction toolkit waiting for an application.Carter-Wegman 1979 is the deepest ancestor of every information-theoretic fuzzy extractor. The strong extractor at the heart of the Dodis-Reyzin-Smith construction is, mechanically, a Carter-Wegman universal hash with a random seed -- the LHL is what proves its output is uniform.&lt;/p&gt;

The min-entropy of a random variable $W$ is $H_\infty(W) = -\log_2 \max_w \Pr[W = w]$. It is the entropy measure that captures *worst-case* guessing difficulty: a source with $m$ bits of min-entropy cannot be guessed correctly with probability greater than $2^{-m}$ in one try. Min-entropy is the right measure for cryptographic key derivation because Shannon entropy is too generous when the distribution is peaked [@dors-2008-siamjc].
&lt;p&gt;In May 1998, at the IEEE Symposium on Security and Privacy, Davida, Frankel, and Matt published the first formal-cryptographic proposal for binding a private signing key to a biometric. Their scheme used majority-decoding with a BCH error-correcting code to absorb the noise in repeated iris readings, then used the corrected reading to release a stored long-lived signing key [@davida-frankel-matt-1998], [@dblp-davida-frankel-matt-1998]. The construction worked, in the sense that it ran end-to-end on test data. But the paper had no notion of a &lt;em&gt;strong extractor&lt;/em&gt;, no parameter inequality bounding the extractable key length, and no security theorem against a generic adversary. The reader was asked to trust the construction by inspection.&lt;/p&gt;
&lt;p&gt;That same period saw the rise of a completely different approach. In 2001, Ratha, Connell, and Bolle of IBM proposed &lt;em&gt;cancelable biometrics&lt;/em&gt;: instead of trying to derive a cryptographic key from the biometric, apply a non-invertible application-specific transformation $T_i$ to the feature vector before storage, so that a compromised template can be revoked and re-issued under a fresh $T_j$ [@ratha-connell-bolle-2001]. The goal was &lt;em&gt;template protection&lt;/em&gt;, not key derivation.&lt;/p&gt;
&lt;p&gt;The three properties Ratha et al. demanded of $T_i$ -- &lt;em&gt;irreversibility&lt;/em&gt; (the transform cannot be inverted to recover the original feature vector), &lt;em&gt;unlinkability&lt;/em&gt; (two transforms of the same biometric cannot be matched), and &lt;em&gt;renewability&lt;/em&gt; (a compromised transform can be replaced) -- would two decades later be codified verbatim by ISO/IEC 24745:2022 as the universal properties of any biometric template protection scheme [@iso-iec-24745-2022], [@rathgeb-uhl-2011]. Cancelable biometrics partitions the design space alongside fuzzy extractors: the former &lt;em&gt;transforms&lt;/em&gt; a biometric template, the latter &lt;em&gt;derives&lt;/em&gt; a cryptographic key from it.&lt;/p&gt;
&lt;p&gt;Davida, Frankel, and Matt had shipped a working construction without a unifying primitive. Juels and Wattenberg, within twelve months, would publish a cleaner construction with the same gap; and within seven years Dodis, Reyzin, and Smith would close it. The next section is the story of those precursors, and the structural defect they share.&lt;/p&gt;
&lt;h2&gt;3. Early approaches: fuzzy commitment and fuzzy vault&lt;/h2&gt;
&lt;p&gt;Two precursor constructions, six years apart, get most of the way to a fuzzy extractor without naming the primitive. They are simultaneously the foundation everything later builds on and the ad-hoc constructions the 2004 Dodis-Reyzin-Smith paper would retroactively classify as &lt;em&gt;components&lt;/em&gt; of a real abstraction rather than a complete one.&lt;/p&gt;
&lt;h3&gt;3.1 Juels-Wattenberg 1999: fuzzy commitment&lt;/h3&gt;
&lt;p&gt;Ari Juels and Martin Wattenberg, at the 1999 ACM Conference on Computer and Communications Security, introduced the &lt;strong&gt;fuzzy commitment scheme&lt;/strong&gt; [@juels-wattenberg-1999-pdf]. The construction is short enough to write on a napkin. Fix a binary error-correcting code $\mathcal{C} \subseteq {0,1}^n$ that corrects up to $t$ errors. To commit to a noisy biometric reading $w \in {0,1}^n$:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pick a random codeword $c \stackrel{R}{\leftarrow} \mathcal{C}$.&lt;/li&gt;
&lt;li&gt;Publish the commitment blob $(h(c), \delta)$ where $\delta := w \oplus c$ and $h$ is a cryptographic hash.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To decommit with a fresh reading $w&apos;$ within Hamming distance $t$ of $w$, compute $c&apos; := D(w&apos; \oplus \delta)$ where $D$ is the code&apos;s decoder; check $h(c&apos;) \stackrel{?}{=} h(c)$. If the check passes, the commitment opens. The argument that the scheme is &lt;em&gt;binding&lt;/em&gt; (the committer cannot later open to a different value) and &lt;em&gt;hiding&lt;/em&gt; (the commitment leaks nothing about $w$) goes through in the random-oracle model.&lt;/p&gt;

sequenceDiagram
    participant U as User (commit)
    participant S as Storage
    participant V as Verifier (decommit)
    U-&amp;gt;&amp;gt;U: Pick random codeword c
    U-&amp;gt;&amp;gt;U: Compute delta = w XOR c
    U-&amp;gt;&amp;gt;U: Compute t = hash(c)
    U-&amp;gt;&amp;gt;S: Publish (t, delta)
    Note over V: Time passes, user re-scans
    V-&amp;gt;&amp;gt;S: Fetch (t, delta)
    V-&amp;gt;&amp;gt;V: Read fresh w&apos; near w
    V-&amp;gt;&amp;gt;V: Compute c&apos; = Decode(w&apos; XOR delta)
    V-&amp;gt;&amp;gt;V: Check hash(c&apos;) == t
    V--&amp;gt;&amp;gt;V: Open commitment to c
&lt;p&gt;Fuzzy commitment is elegant, but it has three structural gaps that DRS 2004 will later expose.&lt;/p&gt;
&lt;p&gt;First, the construction is a &lt;em&gt;commitment&lt;/em&gt;, not an &lt;em&gt;extractor&lt;/em&gt;: it binds a hash of a codeword, not a uniformly random key, and it cannot be plugged directly into a key-derivation pipeline. Second, it assumes Hamming-distance noise, which fits iris codes (Daugman&apos;s IrisCodes are fixed-length bitstrings whose pairwise distance is fractional binomial) but does not fit fingerprint minutiae sets or face embeddings. Third, and most damagingly, the construction leaks under correlated re-enrolment. In 2009, Simoens, Tuyls, and Preneel demonstrated &quot;how to link and reverse protected templates produced by code-offset and bit-permutation sketches&quot; [@simoens-tuyls-preneel-2009]; if a user enrols twice with two slightly different readings $w_1, w_2$ of the same finger, the helper pair $(\delta_1, \delta_2)$ leaks $w_1 \oplus w_2$, which is closer to zero than uniform and reveals the noise distribution.&lt;/p&gt;
&lt;h3&gt;3.2 Juels-Sudan 2002 / 2006: fuzzy vault&lt;/h3&gt;
&lt;p&gt;Three years later, Ari Juels and Madhu Sudan extended the same idea to &lt;em&gt;unordered sets&lt;/em&gt;, the natural metric for fingerprint minutiae [@juels-sudan-2002-pdf], [@juels-sudan-2006-dcc]. The &lt;strong&gt;fuzzy vault&lt;/strong&gt; locks a secret $\kappa$ in a vault as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Encode $\kappa$ as the coefficients of a polynomial $p$ of degree $k$ over a finite field.&lt;/li&gt;
&lt;li&gt;For each element $a_i$ of the genuine biometric set $A$, publish the point $(a_i, p(a_i))$.&lt;/li&gt;
&lt;li&gt;Add many &lt;em&gt;chaff points&lt;/em&gt; $(x_j, y_j)$ with $y_j \ne p(x_j)$ to drown the genuine points in noise.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A user whose set $B$ overlaps sufficiently with $A$ identifies enough true points to Reed-Solomon-decode $p$, recovers $\kappa$, and unlocks the vault. The construction handles set-difference noise naturally and was widely deployed in fingerprint authentication research between 2002 and 2010.Watch the citation. The conference version is IEEE ISIT 2002 (single-page proceedings extended abstract; full author PDF is the canonical text). The journal version is &lt;em&gt;Designs, Codes and Cryptography&lt;/em&gt; 38(2):237-257, February 2006 -- not IEEE Transactions on Information Theory as one widely-circulated secondary source claims.&lt;/p&gt;
&lt;p&gt;But the fuzzy vault inherits and amplifies the precursor&apos;s defects. Walter Scheirer and Terrance Boult, in 2007, enumerated three concrete attacks: &lt;em&gt;Attack via Record Multiplicity&lt;/em&gt; (ARM), &lt;em&gt;Surreptitious Key Inversion&lt;/em&gt; (SKI), and &lt;em&gt;Blended Substitution&lt;/em&gt; [@scheirer-boult-2007]. The Attack via Record Multiplicity exploits exactly the same correlated-re-enrolment weakness fuzzy commitment has: two vaults locking the same biometric under different polynomials reveal the underlying set $A$ by intersecting the published points. The Scheirer-Boult paper opens with a sentence that is, in retrospect, the diagnosis of the entire pre-DRS literature: &quot;while many PETs for biometrics have attempted a formal analysis of their security, a significant oversight has been the issue of the risk from attacks that use multiple records&quot; [@scheirer-boult-2007].&lt;/p&gt;
&lt;h3&gt;3.3 The structural defect both constructions share&lt;/h3&gt;
&lt;p&gt;Stand back. Both constructions handle noise tolerance via an error-correcting code, and both produce a security argument by hashing or hiding the result. Neither construction separates these two responsibilities. The noise-tolerance layer (the code) and the uniformity layer (the hash) are entangled in the same blob of public data. That entanglement is structurally why neither can prove a generic security theorem against a generic adversary: every security argument is tied to specific assumptions about the source distribution, the code, and the random oracle, and slight changes to any of them break the analysis. The fix is not a better code or a better hash. The fix has a name: &lt;em&gt;decomposition&lt;/em&gt;.&lt;/p&gt;

A pair of algorithms $(\text{SS}, \text{Rec})$ such that $\text{SS}(w) \to s$ produces a public sketch $s$, and $\text{Rec}(w&apos;, s) \to w$ recovers the original $w$ for any $w&apos;$ within distance $t$ of $w$. The sketch is allowed to leak some information about $w$, but the residual *average min-entropy* $\tilde H_\infty(W \mid \text{SS}(W))$ must remain at least some target $\tilde m$ [@dors-2008-siamjc].
&lt;p&gt;That word -- decomposition -- is what Dodis, Reyzin, and Smith would deliver, on Thursday May 6, 2004, in Interlaken, Switzerland, at EUROCRYPT.&lt;/p&gt;
&lt;h2&gt;4. Evolution: five generations at a glance&lt;/h2&gt;
&lt;p&gt;Before walking through the DRS 2004 decomposition in detail, it helps to see where it sits in the family tree. Every construction the rest of this article mentions belongs to one of five generations, ordered by what failure of the previous generation it closes.&lt;/p&gt;

flowchart LR
    G0[&quot;Gen 0&lt;br /&gt;hash(w)&lt;br /&gt;fails on noise&quot;] --&amp;gt; G1[&quot;Gen 1&lt;br /&gt;Juels-Wattenberg 1999&lt;br /&gt;fuzzy commitment&quot;]
    G1 --&amp;gt; G15[&quot;Gen 1.5&lt;br /&gt;Juels-Sudan 2002/2006&lt;br /&gt;fuzzy vault&quot;]
    G15 --&amp;gt; G2[&quot;Gen 2&lt;br /&gt;Dodis-Reyzin-Smith 2004&lt;br /&gt;fuzzy extractor&quot;]
    G2 --&amp;gt; G3a[&quot;Gen 3a&lt;br /&gt;Boyen 2004&lt;br /&gt;reusable&quot;]
    G2 --&amp;gt; G3b[&quot;Gen 3b&lt;br /&gt;BDKOS 2005 / DKKRS 2012&lt;br /&gt;tamper-resilient&quot;]
    G2 --&amp;gt; G4[&quot;Gen 4&lt;br /&gt;Fuller-Meng-Reyzin 2013&lt;br /&gt;computational, LWE-based&quot;]
    G2 --&amp;gt; G5[&quot;Gen 5&lt;br /&gt;CFPRS 2016&lt;br /&gt;reusable low-entropy&quot;]
&lt;p&gt;The table below names each generation, its central insight, and the new failure mode it exposes that motivates the next generation. Read it top to bottom; each row solves a problem the row above raised.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gen&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Authors / venue&lt;/th&gt;
&lt;th&gt;Central insight&lt;/th&gt;
&lt;th&gt;New failure exposed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;--&lt;/td&gt;
&lt;td&gt;folk&lt;/td&gt;
&lt;td&gt;$\text{key} = h(w)$&lt;/td&gt;
&lt;td&gt;Avalanche destroys key on every re-scan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1999&lt;/td&gt;
&lt;td&gt;Juels-Wattenberg, CCS [@juels-wattenberg-1999-pdf]&lt;/td&gt;
&lt;td&gt;Code-offset: hide $w$ inside $\delta = w \oplus c$ for random codeword $c$&lt;/td&gt;
&lt;td&gt;Hamming-only; no extractor; leaks under re-enrol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;td&gt;2002 / 2006&lt;/td&gt;
&lt;td&gt;Juels-Sudan, ISIT / DCC [@juels-sudan-2002-pdf], [@juels-sudan-2006-dcc]&lt;/td&gt;
&lt;td&gt;Polynomial-on-set with chaff points; handles set-difference&lt;/td&gt;
&lt;td&gt;Vulnerable to record-multiplicity and key-inversion attacks [@scheirer-boult-2007]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2004 / 2008&lt;/td&gt;
&lt;td&gt;Dodis-Reyzin-Smith, EUROCRYPT / SIAM JC [@drs-2004-eurocrypt], [@dors-2008-siamjc]&lt;/td&gt;
&lt;td&gt;Decomposition: secure sketch + strong extractor; one inequality&lt;/td&gt;
&lt;td&gt;Forbids construction at consumer biometric entropy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3a&lt;/td&gt;
&lt;td&gt;2004&lt;/td&gt;
&lt;td&gt;Boyen, CCS [@boyen-2004-ccs-eprint]&lt;/td&gt;
&lt;td&gt;Reusable fuzzy extractors; chosen-perturbation security&lt;/td&gt;
&lt;td&gt;Outsider model needs XOR-homomorphic sketch; insider model needs RO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3b&lt;/td&gt;
&lt;td&gt;2005 / 2012&lt;/td&gt;
&lt;td&gt;Boyen-Dodis-Katz-Ostrovsky-Smith, EUROCRYPT [@bdkos-2005-eurocrypt]; DKKRS, IEEE TIT [@dkkrs-2012-ieeetit]&lt;/td&gt;
&lt;td&gt;Tamper-resilient fuzzy extractors; helper-data integrity against active adversary&lt;/td&gt;
&lt;td&gt;Active-adversary lower bound: $\Omega(\log(1/\varepsilon))$ extra entropy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2013 / 2020&lt;/td&gt;
&lt;td&gt;Fuller-Meng-Reyzin, ASIACRYPT / I&amp;amp;C [@fmr-2013-asiacrypt-eprint], [@fmr-2020-iandc]&lt;/td&gt;
&lt;td&gt;Skip the sketch; LWE-based computational construction extracts key length equal to source min-entropy&lt;/td&gt;
&lt;td&gt;Negative result: every computational HILL secure sketch still implies an ECC with $2^{m-2}$ codewords&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;2016&lt;/td&gt;
&lt;td&gt;Canetti-Fuller-Paneth-Reyzin-Smith, EUROCRYPT [@cfprs-2016-eurocrypt]&lt;/td&gt;
&lt;td&gt;Per-bit digital lockers; sample-then-extract; reusable for low-entropy sources&lt;/td&gt;
&lt;td&gt;Depends on digital-locker idealisation; restricted source class&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Read this way, the family tree tells a story. Each successor generation closes a real defect: Boyen 2004 closes the multi-enrolment leak that Simoens-Tuyls-Preneel would later make concrete; BDKOS 2005 closes the helper-data tampering problem; FMR 2013 attacks the min-entropy floor itself by trading information-theoretic security for an LWE assumption; CFPRS 2016 chases the low-entropy regime where every prior generation gave up. None of them dethrones the foundational decomposition. They all live inside the framework DRS established.Watch two attribution traps. Boyen 2004 is a sole-author paper -- &quot;Reusable Cryptographic Fuzzy Extractors&quot; by Xavier Boyen [@boyen-2004-ccs-eprint], not &quot;Boyen and Reyzin&quot; or &quot;Boyen et al.&quot; And Fuller-Meng-Reyzin 2013 appeared at &lt;em&gt;ASIACRYPT&lt;/em&gt; 2013, not EUROCRYPT 2013; the misattribution is widespread in secondary sources [@fmr-2013-asiacrypt-eprint].&lt;/p&gt;
&lt;p&gt;Generation 2 is the load-bearing entry. Every later claim about what a fuzzy extractor can and cannot do traces back to it. The next section walks through the construction in mechanical detail, because the inequality at its centre is the artefact every later section will reference.&lt;/p&gt;
&lt;h2&gt;5. The breakthrough: Dodis-Reyzin-Smith 2004 in detail&lt;/h2&gt;
&lt;p&gt;May 6, 2004. Interlaken, Switzerland. Session 16 (&quot;New Applications&quot;). Yevgeniy Dodis (NYU), Leonid Reyzin (Boston University), and Adam Smith (then MIT) present a paper that will be widely cited as the foundational work of the area [@drs-2004-eurocrypt]. The journal version, published in 2008 in &lt;em&gt;SIAM Journal on Computing&lt;/em&gt; with Rafail Ostrovsky added as a fourth author, is the canonical reference text for every formal definition the field uses [@dors-2008-siamjc].The conference paper is three-author Dodis-Reyzin-Smith; the 2008 SIAM Journal on Computing version is four-author and adds Ostrovsky. Cite whichever fits your context, but get the author count right.&lt;/p&gt;
&lt;p&gt;The paper&apos;s contribution is not a new algorithm. It is a &lt;em&gt;decomposition&lt;/em&gt; and a &lt;em&gt;security inequality&lt;/em&gt;. The two halves of the decomposition are the secure sketch and the strong randomness extractor, and the inequality bounds the extractable key length in terms of source min-entropy, code redundancy, and security parameter.&lt;/p&gt;
&lt;h3&gt;5.1 The secure sketch: information reconciliation&lt;/h3&gt;
&lt;p&gt;A secure sketch is the noise-tolerance layer. Formally, an $(\mathcal{M}, m, \tilde m, t)$-secure sketch is a pair of functions $(\text{SS}, \text{Rec})$ over a metric space $(\mathcal{M}, \text{dis})$ such that, for any $w, w&apos;$ with $\text{dis}(w, w&apos;) \le t$, $\text{Rec}(w&apos;, \text{SS}(w)) = w$, and for any source $W$ with min-entropy $H_\infty(W) \ge m$, the &lt;em&gt;average min-entropy&lt;/em&gt; $\tilde H_\infty(W \mid \text{SS}(W)) \ge \tilde m$ [@dors-2008-siamjc].&lt;/p&gt;

Average min-entropy, also called conditional min-entropy, generalises min-entropy to the case where partial information $Y$ about $W$ is public. Formally, $\tilde H_\infty(W \mid Y) = -\log_2 \mathbb{E}_{y \leftarrow Y}\!\left[\max_w \Pr[W = w \mid Y = y]\right]$. It is the right entropy measure for sketches because the sketch $\text{SS}(W)$ is public and an adversary&apos;s best guess of $W$ averages over the possible sketch values [@dors-2008-siamjc].
&lt;p&gt;Two canonical sketch constructions matter. The &lt;strong&gt;code-offset sketch&lt;/strong&gt; picks a random codeword $c$ from an $[n, k, 2t+1]$ binary error-correcting code and publishes $s = w \oplus c$. To recover, compute $c&apos; = D(w&apos; \oplus s)$ where $D$ is the code&apos;s decoder; then return $w = s \oplus c&apos;$. The entropy loss is at most $n - k$ bits. The &lt;strong&gt;syndrome sketch&lt;/strong&gt; publishes $s = H \cdot w^T$ where $H$ is the parity-check matrix of the same code; recovery solves a coset-leader problem. The entropy loss is identical; the syndrome variant just publishes a shorter helper. PinSketch, the canonical sketch for &lt;em&gt;set-difference&lt;/em&gt; metrics, lives in section 6 of the journal paper [@dors-2008-siamjc].&lt;/p&gt;
&lt;p&gt;{&lt;code&gt;// Simulate a tiny [16, 11, 3] code: 11 data bits, 5 parity bits via a fixed generator. // Real code-offset uses BCH/Reed-Solomon; this is a toy that shows the structure. function parity(w, mask) { let p = 0; for (let i = 0; i &amp;lt; 16; i++) if ((mask&amp;gt;&amp;gt;i)&amp;amp;1) p ^= (w&amp;gt;&amp;gt;i)&amp;amp;1; return p; } const masks = [0b1111111111100000, 0b1111110000011110, 0b1111000011111101, 0b1100111111111011, 0b0011111111110111]; function encode(data11) {   let cw = data11 &amp;amp; 0x7FF;   for (let i = 0; i &amp;lt; 5; i++) cw |= parity(data11, masks[i]) &amp;lt;&amp;lt; (11 + i);   return cw; } // Sketch: pick a random codeword c, publish s = w XOR c const w = 0b0110110010110101; // imagine this is the user&apos;s first reading const data = Math.floor(Math.random() * 2048); const c = encode(data); const s = w ^ c; console.log(&apos;First reading w =&apos;, w.toString(2).padStart(16,&apos;0&apos;)); console.log(&apos;Random codeword c =&apos;, c.toString(2).padStart(16,&apos;0&apos;)); console.log(&apos;Public sketch s = w XOR c =&apos;, s.toString(2).padStart(16,&apos;0&apos;)); // Re-scan: the user reads w&apos; with one bit flipped const wp = w ^ (1 &amp;lt;&amp;lt; 7); console.log(&apos;Re-scan reading w\\&apos; =&apos;, wp.toString(2).padStart(16,&apos;0&apos;)); const cp = wp ^ s; console.log(&apos;Decoder input c + e =&apos;, cp.toString(2).padStart(16,&apos;0&apos;)); console.log(&apos;The decoder sees the noisy codeword and corrects it back to c -- so Rec recovers w from w\\&apos; and s.&apos;);&lt;/code&gt;}&lt;/p&gt;
&lt;h3&gt;5.2 The strong randomness extractor: from sketch-residual to uniform key&lt;/h3&gt;
&lt;p&gt;A strong randomness extractor is the uniformity layer. The relevant formal statement is the average-case form of the &lt;strong&gt;Leftover Hash Lemma&lt;/strong&gt;.&lt;/p&gt;

A function $\text{Ext}: \{0,1\}^n \times \{0,1\}^d \to \{0,1\}^\ell$ is an *average-case* $(n, \tilde m, \ell, \varepsilon)$-strong extractor if, for every joint distribution $(W, I)$ over $\{0,1\}^n \times \{0,1\}^*$ with $\tilde H_\infty(W \mid I) \ge \tilde m$, the statistical distance $\text{SD}((\text{Ext}(W; S), S, I), (U_\ell, S, I)) \le \varepsilon$ where $S$ is the (public) extractor seed and $U_\ell$ is uniform [@dors-2008-siamjc].

Let $H$ be a universal hash family with output length $\ell$. For any source $W$ with $\tilde H_\infty(W \mid I) \ge \tilde m$, the distribution $(S, H_S(W), I)$ is $\varepsilon$-close in statistical distance to $(S, U_\ell, I)$ whenever $\ell \le \tilde m - 2 \log(1/\varepsilon) + 2$ [@ill-1989], [@dors-2008-siamjc]. The Leftover Hash Lemma is therefore the single inequality that powers every information-theoretic strong extractor used in practice.
&lt;p&gt;The LHL says: take any min-entropy source, hash it with a randomly chosen universal hash, and what comes out is statistically indistinguishable from uniform, up to a precise budget. Pay $2 \log(1/\varepsilon) - 2$ bits of entropy at the door; everything left over is uniform.&lt;/p&gt;
&lt;h3&gt;5.3 Composition&lt;/h3&gt;
&lt;p&gt;The composition is the whole point. Define $\text{Gen}(w) := (R, P)$ where $P = (\text{SS}(w), \text{seed})$ and $R = \text{Ext}(w; \text{seed})$. To recover, $\text{Rep}(w&apos;, P)$ runs $w = \text{Rec}(w&apos;, \text{SS}(w))$ and recomputes $R = \text{Ext}(w; \text{seed})$. The composition is an $(\mathcal{M}, m, \ell, t, \varepsilon)$-fuzzy extractor, and the security proof is now algebraic.&lt;/p&gt;

The helper data $P$ in a fuzzy extractor is the public part of the output of $\text{Gen}$. It consists of the secure sketch $\text{SS}(w)$ plus the extractor seed. It must be available at recovery time, but it need not be secret. The security guarantee says that even an adversary who sees $P$ in full learns at most $\varepsilon$ bits about the extracted key $R$ in statistical distance [@dors-2008-siamjc].

flowchart TD
    W[&quot;Noisy reading w&quot;] --&amp;gt; SS[&quot;Secure sketch SS&quot;]
    W --&amp;gt; EXT[&quot;Strong extractor Ext&quot;]
    SEED[&quot;Random seed&quot;] --&amp;gt; EXT
    SS --&amp;gt; P[&quot;Public helper P = (sketch, seed)&quot;]
    SEED --&amp;gt; P
    EXT --&amp;gt; R[&quot;Uniform key R&quot;]
    P --&amp;gt; REP[&quot;Rep at recovery&quot;]
    WP[&quot;Noisy reading w&apos;&lt;br /&gt;(within distance t)&quot;] --&amp;gt; REP
    REP --&amp;gt; R2[&quot;Same uniform key R&quot;]
&lt;h3&gt;5.4 The load-bearing inequality&lt;/h3&gt;
&lt;p&gt;Compose the two entropy budgets. The sketch starts with $H_\infty(W) \ge m$ bits of min-entropy and leaks at most $n - k$ to its public sketch; what remains is $\tilde H_\infty(W \mid \text{SS}(W)) \ge m - (n - k)$. Feed that residual into the LHL with security parameter $\varepsilon$, and the extractor delivers a uniform key of lengthThe constant $+2$ at the end of the inequality is an artefact of how DORS 2008 states the average-case Leftover Hash Lemma in Lemma 2.4; the conference paper writes it as $-O(1)$.&lt;/p&gt;

$$\ell \;\le\; H_\infty(W) - (n - k) - 2\log(1/\varepsilon) + 2.$$
&lt;p&gt;This inequality is the artefact every later section will reference. Walk it term by term. The first term is the source min-entropy: the actual information content of the biometric. The second term is the code redundancy: the entropy paid to absorb noise. The third term is the security parameter cost: every halving of the adversary&apos;s distinguishing advantage costs two bits. The final $+2$ is a small constant.&lt;/p&gt;
&lt;p&gt;{&lt;code&gt;function extractableKeyLen(m, codeRedundancy, epsilon) {   const securityCost = 2 * Math.log2(1 / epsilon);   return m - codeRedundancy - securityCost + 2; } // Iris source (Daugman 2003: ~249 dof = effective bits), 128-bit security, BCH [255,131,37] console.log(&apos;iris @ eps=2^-80:&apos;, extractableKeyLen(249, 124, 2 ** -80).toFixed(1), &apos;bits&apos;); // Fingerprint at the upper end of Pankanti-Prabhakar-Jain 2002 (~70 effective bits) console.log(&apos;fingerprint @ eps=2^-80:&apos;, extractableKeyLen(70, 124, 2 ** -80).toFixed(1), &apos;bits&apos;); // Face embedding under correlated illumination noise (~30-50 effective bits) console.log(&apos;face @ eps=2^-80:&apos;, extractableKeyLen(40, 124, 2 ** -80).toFixed(1), &apos;bits&apos;); // Loosen security to eps=2^-40 and see if fingerprint recovers console.log(&apos;fingerprint @ eps=2^-40:&apos;, extractableKeyLen(70, 124, 2 ** -40).toFixed(1), &apos;bits&apos;);&lt;/code&gt;}&lt;/p&gt;
&lt;p&gt;Run that calculator on realistic numbers. At a security parameter of $\varepsilon = 2^{-80}$, the third term alone eats 160 bits. A standard $[255, 131, 37]$ BCH code (which corrects up to 18 errors in 255 bits) burns another 124 bits. To extract a 128-bit AES key, the source must supply at least 410 bits of min-entropy.&lt;/p&gt;

Set $m = 70$ (fingerprint upper bound per Pankanti et al. 2002), $n - k = 124$ (BCH redundancy), and $\varepsilon = 2^{-80}$. The extractable key length becomes $70 - 124 - 160 + 2 = -212$ bits. A negative bound means the construction is not slow or expensive: it is *infeasible* at any parameter setting. Try loosening security to $\varepsilon = 2^{-40}$: still $70 - 124 - 80 + 2 = -132$. Even pushing the security parameter all the way down to $\varepsilon = 2^{-10}$ (laughably weak by OS-authenticator standards) leaves you at \$70 - 124 - 20 + 2 = -72$ bits. The fingerprint source simply does not have the entropy budget for the construction at any meaningful security level.
&lt;p&gt;The iris, at Daugman&apos;s 249 statistical degrees of freedom [@daugman-2003-pdf], [@daugman-2004-csvt], is just barely enough -- and only because Hao, Anderson, and Daugman engineered a careful two-layer Hadamard-then-Reed-Solomon code that exploits the block structure of iris noise to achieve a high error-correction rate per information bit, sufficient to extract 140 bits from the 2048-bit iris code at 99.5% recovery success [@hao-anderson-daugman-2005-tr]. The fingerprint, at 40 to ~70 effective bits per Pankanti, Prabhakar, and Jain [@pankanti-prabhakar-jain-2002], is not even close. The face embedding, at 30 to 50 raw bits and considerably less under correlated illumination and pose noise, is further still.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; The DRS 2004 key-length inequality is the article&apos;s load-bearing artefact. Every later claim that a fuzzy extractor cannot work on consumer biometrics traces back to it. The construction is not slow or expensive on these sources -- it is &lt;em&gt;mathematically forbidden&lt;/em&gt;, in the sense that the extractable key length is negative at the security parameter an operating-system authenticator demands.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is the inequality that forbids the construction on consumer-grade face or fingerprint at the security bar an operating system authenticator demands. The rest of the article is the four-generation effort to escape the forbidding, and the architectural choice every shipped consumer product made instead.&lt;/p&gt;
&lt;h2&gt;6. State of the art: by metric space and by successor generation&lt;/h2&gt;
&lt;p&gt;The DRS 2004 framework is parameterised by metric space and source class. To navigate the field, think of every fuzzy-extractor instantiation as a pair of choices: pick a sketch suited to the source&apos;s metric, then pick an extractor suited to the source&apos;s entropy profile. The state of the art is best read as a two-axis table.&lt;/p&gt;
&lt;h3&gt;6.1 Sketches by metric space&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric space&lt;/th&gt;
&lt;th&gt;Sketch construction&lt;/th&gt;
&lt;th&gt;Code or technique&lt;/th&gt;
&lt;th&gt;Where it fits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Hamming distance&lt;/td&gt;
&lt;td&gt;Code-offset / syndrome [@dors-2008-siamjc]&lt;/td&gt;
&lt;td&gt;$[n,k,2t+1]$ BCH&lt;/td&gt;
&lt;td&gt;Iris codes; SRAM PUFs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Set difference&lt;/td&gt;
&lt;td&gt;PinSketch (DORS 2008 section 6) [@dors-2008-siamjc], [@reyzin-lab-home]&lt;/td&gt;
&lt;td&gt;Symmetric-difference syndrome decoding; sublinear in universe size&lt;/td&gt;
&lt;td&gt;Fingerprint minutiae sets; many-out-of-many tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edit distance&lt;/td&gt;
&lt;td&gt;Embed into Hamming via low-distortion encoding&lt;/td&gt;
&lt;td&gt;Ostrovsky-Rabani-style embeddings&lt;/td&gt;
&lt;td&gt;DNA sequences, typed passwords&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Continuous (face / fingerprint embeddings)&lt;/td&gt;
&lt;td&gt;Quantise then Hamming&lt;/td&gt;
&lt;td&gt;Lloyd-Max or learned quantisers&lt;/td&gt;
&lt;td&gt;Face deep-features; the worst empirical entropy profile&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The continuous-source case is where the consumer biometric story gets ugly: quantising a learned embedding loses entropy in proportion to the quantiser&apos;s resolution, and the residual is the entropy budget the sketch has to work with.&lt;/p&gt;
&lt;h3&gt;6.2 Generation 3a: Boyen 2004 reusable fuzzy extractors&lt;/h3&gt;
&lt;p&gt;Xavier Boyen, about five months after the DRS conference paper, attacked the multi-enrolment problem head on [@boyen-2004-ccs-eprint]. A &lt;em&gt;reusable&lt;/em&gt; fuzzy extractor remains secure when the same source is enrolled multiple times under correlated but different readings $w_1, w_2, \ldots, w_q$. Boyen formalises two threat models. The &lt;em&gt;outsider chosen-perturbation&lt;/em&gt; attack allows the adversary to choose the noise patterns between enrolments; Boyen shows that fuzzy extractors built from XOR-homomorphic sketches (code-offset is one) are secure against outsider adversaries with bounded perturbations. The &lt;em&gt;insider chosen-perturbation&lt;/em&gt; attack additionally gives the adversary access to the extracted keys $R_1, \ldots, R_q$; this stronger model requires a random-oracle assumption. The Canetti-Fuller-Paneth-Reyzin-Smith 2016 paper would later argue that the outsider model&apos;s perturbation class is &quot;unlikely to hold for a practical source,&quot; quoting the paper directly [@cfprs-2016-eprint].&lt;/p&gt;
&lt;h3&gt;6.3 Generation 3b: BDKOS 2005 / DKKRS 2012 tamper-resilient fuzzy extractors&lt;/h3&gt;
&lt;p&gt;A different defect of the DRS construction: the public helper $P$ is not authenticated. If an active adversary can rewrite $P$ on its way to the verifier, the verifier reconstructs the wrong key, and the security analysis falls apart. Xavier Boyen, Yevgeniy Dodis, Jonathan Katz, Rafail Ostrovsky, and Adam Smith addressed this in 2005 with the &lt;strong&gt;tamper-resilient&lt;/strong&gt; fuzzy extractor [@bdkos-2005-eurocrypt]. Their Theorem 1 builds a tamper-detecting secure sketch in the random-oracle model: publish $(\text{pub}^&lt;em&gt;, h)$ where $\text{pub}^&lt;/em&gt;$ is a standard sketch and $h = H(w, \text{pub}^*)$; at recovery, recompute the tag and reject on mismatch. The full tamper-resilient fuzzy extractor (BDKOS §3.2) then composes this tamper-detecting sketch with a strong extractor. The standard-model construction came later, in 2012, from Dodis, Kanukurthi, Katz, Reyzin, and Smith, by replacing the random oracle with an &lt;em&gt;algebraic manipulation detection&lt;/em&gt; (AMD) code, with entropy loss $O(\log(1/\varepsilon))$ above the passive bound [@dkkrs-2012-ieeetit], [@cdfpw-2008-eurocrypt].&lt;/p&gt;
&lt;h3&gt;6.4 Generation 4: Fuller-Meng-Reyzin 2013 computational fuzzy extractors&lt;/h3&gt;
&lt;p&gt;By 2013 the field had hit a wall. The DRS inequality forbids information-theoretic constructions on low-entropy consumer biometrics. Fuller, Meng, and Reyzin asked the obvious next question: does the wall come down if you trade information-theoretic security for computational security? Their answer, in &lt;em&gt;Computational Fuzzy Extractors&lt;/em&gt; at ASIACRYPT 2013, is half negative and half positive [@fmr-2013-asiacrypt-eprint], [@fmr-2020-iandc].&lt;/p&gt;
&lt;p&gt;The negative half: &quot;for every secure sketch that retains $m$ bits of computational entropy, there is an error-correcting code with $2^{m-2}$ codewords&quot; [@fmr-2013-asiacrypt-eprint]. The coding-theory lower bound survives the relaxation to computational HILL pseudoentropy. The positive half: skip the sketch entirely. Treat the biometric reading as an LWE error vector, use a random linear code, and base security on the Learning With Errors problem. The construction extracts a key length equal to the source min-entropy, with security under standard LWE assumptions.&lt;/p&gt;
&lt;h3&gt;6.5 Generation 5: Canetti-Fuller-Paneth-Reyzin-Smith 2016 reusable low-entropy&lt;/h3&gt;
&lt;p&gt;The final piece of the contemporary state of the art is CFPRS 2016 [@cfprs-2016-eurocrypt], [@cfprs-2016-eprint]. Ran Canetti, Benjamin Fuller, Omer Paneth, Leonid Reyzin, and Adam Smith built a fuzzy extractor that is reusable, handles low-entropy distributions, and works under realistic correlated noise. The key technique is &lt;em&gt;per-bit digital lockers&lt;/em&gt;: for each bit of the source, store a digital locker keyed on a random subset of input bits. Recovery samples subsets, queries the lockers, and majority-votes. The construction depends on a digital-locker idealisation, but CFPRS show that any reusable fuzzy extractor for low-entropy sources requires either the random-oracle model or an equivalent strong assumption, which limits the room to remove the idealisation.&lt;/p&gt;
&lt;h3&gt;6.6 The one consumer-biometric construction that ever cleared the bar&lt;/h3&gt;
&lt;p&gt;Across two decades of theoretical work, exactly one published consumer-biometric fuzzy extractor has cleared the DRS bar at production-grade parameters. Hao, Anderson, and Daugman, in a 2005 Cambridge tech report and a 2006 IEEE Transactions on Computers paper, presented an iris fuzzy extractor that &quot;can generate up to 140 bits of biometric key, more than enough for 128-bit AES&quot; with &quot;a 99.5% success rate&quot; on 70 eyes [@hao-anderson-daugman-2005-tr], [@hao-anderson-daugman-2006-ieeetc]. The construction layers a Hadamard code (handles single-bit errors) with a Reed-Solomon code (handles burst errors) inside the code-offset sketch, then runs LHL.The Hao-Anderson-Daugman code is a two-layer Hadamard-then-Reed-Solomon composition. The inner Hadamard layer is HC(6) at rate $7/64 \approx 1/9$ (7 bits encoded into 64 bits per block, 32 blocks per 2048-bit iris code), and absorbs noise within each block; the outer RS(32, 20) over $\text{GF}(2^7)$ tolerates up to six block errors across the 32 blocks. The composition costs more redundancy than a single BCH code but matches the iris noise statistics better. The iris is the only common biometric where the entropy budget is generous enough to absorb that much redundancy and still leave 140 bits over.&lt;/p&gt;
&lt;p&gt;The state of the art, taken together, is wide and mature. Every successor either requires the source to have an entropy profile most consumer biometrics lack, or uses idealisations (random oracle, digital locker, LWE-with-specific-error-distribution) that no production cryptosystem wants to depend on. The next two sections make that boundary precise.&lt;/p&gt;
&lt;h2&gt;7. Competing approaches: six paradigms&lt;/h2&gt;
&lt;p&gt;Step back from the fuzzy-extractor lineage and put it in competitive context. There are at least six distinct approaches to binding cryptographic operations to a biometric, and only two of them &lt;em&gt;derive&lt;/em&gt; a key from the biometric. The other four use the biometric as a &lt;em&gt;gate&lt;/em&gt; on a key generated elsewhere. ISO/IEC 24745:2022 codifies three protection properties -- irreversibility, unlinkability, and renewability -- that any biometric template protection scheme should provide [@iso-iec-24745-2022], and the Rathgeb-Uhl 2011 survey is the open-access reference that maps each approach to the three properties [@rathgeb-uhl-2011].&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Representative work&lt;/th&gt;
&lt;th&gt;Derives key?&lt;/th&gt;
&lt;th&gt;Irreversibility&lt;/th&gt;
&lt;th&gt;Unlinkability&lt;/th&gt;
&lt;th&gt;Renewability&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Information-theoretic fuzzy extractor&lt;/td&gt;
&lt;td&gt;Dodis-Reyzin-Smith 2004 family [@dors-2008-siamjc]&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (under min-entropy)&lt;/td&gt;
&lt;td&gt;Hard under correlated re-enrol&lt;/td&gt;
&lt;td&gt;Yes (rotate seed and sketch)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Computational fuzzy extractor&lt;/td&gt;
&lt;td&gt;Fuller-Meng-Reyzin 2013 / CFPRS 2016 [@fmr-2013-asiacrypt-eprint], [@cfprs-2016-eurocrypt]&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (under LWE / digital locker)&lt;/td&gt;
&lt;td&gt;Improved over information-theoretic&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cancelable biometrics&lt;/td&gt;
&lt;td&gt;Ratha-Connell-Bolle 2001 [@ratha-connell-bolle-2001]&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (by transform design)&lt;/td&gt;
&lt;td&gt;Yes (transform key)&lt;/td&gt;
&lt;td&gt;Yes (re-enrol under fresh transform)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Homomorphic encryption biometric matching&lt;/td&gt;
&lt;td&gt;Engelsma-Jain-Boddeti HERS [@engelsma-jain-boddeti-hers-arxiv]&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Yes (under HE)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secure-element match-on-chip&lt;/td&gt;
&lt;td&gt;Apple Secure Enclave [@apple-platform-security], [@apple-secure-enclave]&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Hardware-anchored&lt;/td&gt;
&lt;td&gt;Yes (per-device)&lt;/td&gt;
&lt;td&gt;Yes (hardware key rotation)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Match-then-unwrap-TPM-sealed-key&lt;/td&gt;
&lt;td&gt;Windows Hello ESS [@ms-learn-ess], [@ms-learn-hello-business]&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Hardware-anchored&lt;/td&gt;
&lt;td&gt;Yes (per-device)&lt;/td&gt;
&lt;td&gt;Yes (rotate TPM-sealed key)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

A class of biometric template protection schemes in which a non-invertible, application-specific transformation $T_i$ is applied to the feature vector before storage. The stored template is then $T_i(\text{features})$; matching is performed in the transformed space; and a compromised template can be revoked by re-enrolling under a fresh transform $T_j$. The goal is *template protection*, not cryptographic key derivation: no uniformly random key falls out of the construction. ISO/IEC 24745 names three properties such a transform must satisfy: irreversibility, unlinkability, and renewability [@ratha-connell-bolle-2001], [@rathgeb-uhl-2011].

The international standard *Information security, cybersecurity and privacy protection -- Biometric information protection* (ISO/IEC 24745:2022 Edition 2, 63 pages, published February 2022 [@iso-iec-24745-2022]) defines three properties of any biometric protection scheme -- irreversibility, unlinkability, renewability -- without prescribing any specific cryptographic primitive. The standard is paywalled at CHF 204, which is why most academic and engineering treatments cite the open-access Rathgeb-Uhl 2011 survey [@rathgeb-uhl-2011] as a proxy for the property definitions. The three properties are deliberately neutral: a fuzzy extractor, a cancelable transform, a homomorphic-encryption matcher, and a hardware-anchored secure element can all in principle satisfy them, and the standard is silent on which is best.
&lt;p&gt;The two &lt;em&gt;derive&lt;/em&gt; approaches (rows 1 and 2 in the table) follow the genealogy this article has been tracing. The remaining four are &lt;em&gt;gate&lt;/em&gt; approaches: each generates the cryptographic key by some independent means -- a &lt;a href=&quot;https://paragmali.com/blog/the-tpm-in-windows-one-primitive-twenty-five-years-and-the-c/&quot; rel=&quot;noopener&quot;&gt;TPM&lt;/a&gt;-sealed asymmetric key, a Secure Enclave-bound key, a homomorphic-encryption keypair -- and uses the biometric only to decide whether to release the key. The cancelable-biometrics approach is even more conservative: it does not even tie a key to the biometric at all; it only protects the template against compromise.&lt;/p&gt;
&lt;p&gt;Why is the &lt;em&gt;derive&lt;/em&gt; versus &lt;em&gt;gate&lt;/em&gt; distinction so deep? Because it determines who is responsible for the key&apos;s secrecy. In a &lt;em&gt;derive&lt;/em&gt; model, the biometric &lt;em&gt;is&lt;/em&gt; the secret; if the biometric leaks (a photo of your face, a latent print on a glass), the cryptographic key is at risk. In a &lt;em&gt;gate&lt;/em&gt; model, the secret is independent of the biometric -- usually a hardware-anchored private key that never leaves the secure element -- and the biometric is just a soft second factor that decides whether the user is allowed to &lt;em&gt;use&lt;/em&gt; the secret.&lt;/p&gt;
&lt;p&gt;Hardware-anchored &lt;em&gt;gate&lt;/em&gt; schemes also get to rely on attestation: a TPM or Secure Enclave can prove to a remote relying party that the key it just used is bound to a specific device, by a specific user, in a specific authentication ceremony. A pure software fuzzy extractor cannot make any of those claims.&lt;/p&gt;
&lt;p&gt;This is the decisive architectural distinction in the field. Every shipped consumer biometric authenticator on the planet picks &lt;em&gt;gate&lt;/em&gt;. The next two sections explain why: section 8 walks through three theoretical lower bounds that draw the perimeter inside which any fuzzy extractor can live, and section 10 walks through the Windows Hello architecture as the concrete embodiment of &lt;em&gt;gate&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;8. Theoretical limits&lt;/h2&gt;
&lt;p&gt;Three lower-bound results, taken together, draw the perimeter inside which any fuzzy extractor can live. The section 5 inequality was the first. Two more come from later papers, and they are sharper than the basic inequality suggests.&lt;/p&gt;
&lt;h3&gt;8.1 The min-entropy floor&lt;/h3&gt;
&lt;p&gt;The DRS section 5 inequality already gives a floor: $\ell \le H_\infty(W) - (n-k) - 2\log(1/\varepsilon) + 2$. Fuller, Reyzin, and Smith in 2020 sharpened this with an impossibility result for &lt;em&gt;universal&lt;/em&gt; information-theoretic fuzzy extractors.&lt;/p&gt;
&lt;p&gt;They define a stronger notion they call &lt;em&gt;fuzzy min-entropy&lt;/em&gt;, $H^{\text{fuzz}}&lt;em&gt;{t,\infty}(W) := -\log \max&lt;/em&gt;{w_0} \Pr[W \in \mathcal{B}&lt;em&gt;t(w_0)]$, and prove that the gap between the universal-construction bound $H&lt;/em&gt;\infty(W) - \log|\mathcal{B}&lt;em&gt;t|$ and the optimal bound $H^{\text{fuzz}}&lt;/em&gt;{t,\infty}(W)$ can be a large fraction of $n$ bits. For Daugman&apos;s iris parameters ($n = 2048$, $H_\infty \approx 249$, $\log|\mathcal{B}_t| \approx 1024$), the universal bound sits more than 1000 bits below the fuzzy-min-entropy upper bound -- a gap of $\approx 0.5n$ -- and Theorem 5.1&apos;s impossibility region pushes the worst-case gap up toward $h_2(\tau) \cdot n$ for higher noise rates [@frs-2020-ieeetit]. The implication: a single universal construction cannot extract the optimal key length from every high-fuzzy-min-entropy source; some sources require source-specific constructions to close the gap, and the DRS bound is essentially tight in the worst case.&lt;/p&gt;
&lt;p&gt;Plug realistic numbers into the floor. The table below is the empirical perimeter the cryptographic community has lived inside for two decades.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Approx. raw entropy&lt;/th&gt;
&lt;th&gt;Effective entropy under correlated noise&lt;/th&gt;
&lt;th&gt;Clears DRS bar at $\varepsilon = 2^{-80}$ for 128-bit key?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Iris [@daugman-2003-pdf], [@daugman-2004-csvt]&lt;/td&gt;
&lt;td&gt;~249 dof&lt;/td&gt;
&lt;td&gt;~249 dof (matched-illumination scans)&lt;/td&gt;
&lt;td&gt;Yes (demonstrated [@hao-anderson-daugman-2006-ieeetc])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fingerprint minutiae [@pankanti-prabhakar-jain-2002]&lt;/td&gt;
&lt;td&gt;~70 bits at best image quality&lt;/td&gt;
&lt;td&gt;40-70 bits depending on sensor&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Face deep-feature embeddings&lt;/td&gt;
&lt;td&gt;30-50 bits raw&lt;/td&gt;
&lt;td&gt;Often much less under illumination / pose&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SRAM PUF [@intrinsic-id-sram-puf], [@tuyls-skoric-kevenaar-2007-springer]&lt;/td&gt;
&lt;td&gt;thousands of bits (entire SRAM page)&lt;/td&gt;
&lt;td&gt;thousands of bits (controlled noise)&lt;/td&gt;
&lt;td&gt;Yes (deployed in over a billion devices)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Watch Daugman&apos;s 249 figure carefully. It is the number of degrees of freedom in the &lt;em&gt;Hamming distance distribution&lt;/em&gt; between IrisCodes from different irises, fit to a fractional binomial with $N = 249$ and $p = 0.5$. It is not the raw min-entropy of an iris image: an iris sensor returning 249 bits of high-quality iris data is &lt;em&gt;not&lt;/em&gt; the same as 249 bits of min-entropy. Daugman&apos;s 2003 Pattern Recognition paper makes the distinction explicitly [@daugman-2003-pdf].&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Across every consumer biometric the industry has deployed, the iris is unique in clearing the DRS bar at production parameters. Daugman&apos;s 249 statistical degrees of freedom give the iris a budget more than three times the budget of fingerprint, and an order of magnitude more than face. Hao, Anderson, and Daugman 2006 demonstrate a 140-bit iris key with 99.5% success on 70 eyes [@hao-anderson-daugman-2006-ieeetc] -- the only published consumer-biometric fuzzy extractor ever to clear the DRS bar at production parameters. The catch: iris sensors are intrusive, expensive, and rarely shipped in consumer phones or laptops.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;8.2 Reusability impossibility&lt;/h3&gt;
&lt;p&gt;Boyen&apos;s 2004 insider chosen-perturbation game is unconditionally insecure for adversaries who can choose enough perturbations [@boyen-2004-ccs-eprint]. CFPRS 2016 cite this impossibility result and work around it by restricting attention to a digital-locker-amenable source class [@cfprs-2016-eprint]. The practical implication is that any fuzzy extractor that wants to be reusable across many enrolments has to either (a) restrict the source class (CFPRS&apos;s path) or (b) accept a security degradation per re-enrol. Neither option is appealing for a consumer device that may see its user re-enrol after every kernel update, every sensor recalibration, or every routine credential rotation.&lt;/p&gt;
&lt;h3&gt;8.3 Active-adversary lower bound&lt;/h3&gt;
&lt;p&gt;A passive adversary sees the helper $P$ but does not modify it; an active adversary can rewrite $P$ between enrolment and recovery. BDKOS 2005 and DKKRS 2012 prove that protecting against active adversaries requires either a one-time setup secret (a shared seed established out of band), an authenticated channel between enrolment and recovery, or a min-entropy surplus of $\Omega(\log(1/\varepsilon))$ above the passive bound [@bdkos-2005-eurocrypt], [@dkkrs-2012-ieeetit]. For $\varepsilon = 2^{-80}$, the active-adversary surcharge is 80 bits.&lt;/p&gt;
&lt;h3&gt;8.4 Combining the three bounds&lt;/h3&gt;
&lt;p&gt;Stack the three bounds on top of each other for a consumer face / fingerprint source. The min-entropy floor is the hardest barrier: with 40 to 80 effective bits and 160 bits of security-parameter cost plus 100-plus bits of code redundancy, the extractable key length is negative. The reusability impossibility forecloses the workaround of pretending that re-enrolments are uncorrelated -- they are not, because real biometric drift is highly correlated. The active-adversary bound forecloses the workaround of pretending the helper data is safe in transit. A software-only fuzzy extractor cannot meet a consumer-OS security bar at consumer biometric quality. What you do &lt;em&gt;instead&lt;/em&gt; is the next section.&lt;/p&gt;
&lt;h2&gt;9. Open problems&lt;/h2&gt;
&lt;p&gt;Four problems remain, ordered by how directly each one blocks deployment in a Windows Hello-class product.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; 1. &lt;strong&gt;Deployable face / fingerprint fuzzy extractors under realistic correlated noise.&lt;/strong&gt; Engelsma, Cao, and Jain&apos;s 2019 &lt;em&gt;DeepPrint&lt;/em&gt; reduces intra-user fingerprint variance via learned representations [@engelsma-cao-jain-2019-arxiv], but no published construction has cleared the DRS bar on a realistic test set under correlated noise. 2. &lt;strong&gt;Reusable computational fuzzy extractors without idealisations.&lt;/strong&gt; CFPRS 2016 uses digital lockers, which require either a random oracle or an equivalent strong assumption [@cfprs-2016-eurocrypt]. Eliminating that idealisation is open. 3. &lt;strong&gt;Post-quantum information-theoretic fuzzy extractors.&lt;/strong&gt; Fuller-Meng-Reyzin&apos;s LWE-based construction is already post-quantum on the computational side [@fmr-2013-asiacrypt-eprint], [@fmr-2020-iandc], but an information-theoretic construction tailored to PQ-style noise distributions is open. 4. &lt;strong&gt;The PUF-to-biometric architectural gap.&lt;/strong&gt; Fuzzy extractors are deployed &lt;em&gt;only&lt;/em&gt; for PUFs (Synopsys PUF IP (including QuiddiKey), over a billion devices [@intrinsic-id-sram-puf]) where the noise model is controlled. Closing the architectural gap to consumer biometrics, where the noise model is adversarial and environmental, is open.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Each of these is hard, and none has a credible path to a consumer-OS-grade deployment in the next product cycle. Take them one at a time.&lt;/p&gt;
&lt;p&gt;The first is the most obviously blocking. Even if every fingerprint sensor in the world tomorrow began returning DeepPrint embeddings instead of minutiae sets, the entropy budget would still be tens of bits below the DRS bar. The bottleneck is the source distribution, not the encoder. Improving the encoder helps -- a learned representation with lower intra-user variance shifts the noise distribution toward zero, which lets you use a code with less redundancy -- but the inequality still bites. The community&apos;s working belief is that no consumer fingerprint sensor will ever ship enough min-entropy to clear the bar at the security parameter an OS authenticator demands.&lt;/p&gt;
&lt;p&gt;The second is more nuanced. Digital lockers are &lt;em&gt;useful&lt;/em&gt; in practice -- they are the central tool that lets CFPRS 2016 handle reusability for low-entropy sources -- but they depend on the random-oracle model. The random-oracle model is fine for theoretical work; it is uncomfortable for a production cryptosystem that has to survive an FIPS evaluation and a NIST audit. The hope is that &lt;em&gt;non-malleable extractors&lt;/em&gt; or &lt;em&gt;correlation-resistant universal hash families&lt;/em&gt; can replace digital lockers in the CFPRS construction without losing the reusability guarantee. Promising directions exist; none has matured into a deployable construction.&lt;/p&gt;
&lt;p&gt;The third sounds esoteric but matters. The information-theoretic DRS construction has been quietly post-quantum since 2004: the LHL holds against quantum adversaries up to a constant factor, and BCH decoding is classical [@dors-2008-siamjc]. But once you move to the &lt;em&gt;computational&lt;/em&gt; fuzzy extractors of FMR 2013 or CFPRS 2016, the security argument depends on a hardness assumption (LWE or digital-locker-as-RO) that one wants to be confident survives the post-quantum transition. LWE is widely believed to be PQ-secure; digital lockers are not yet rigorously analysed against quantum adversaries.&lt;/p&gt;
&lt;p&gt;The fourth, &lt;strong&gt;the PUF-to-biometric gap&lt;/strong&gt;, is where the theoretical and engineering communities meet most uncomfortably. The fuzzy extractor &lt;em&gt;works&lt;/em&gt; in practice: Synopsys PUF IP (including QuiddiKey) embeds a code-offset / syndrome-based fuzzy extractor in over a billion devices, &quot;deployed and proven in over a billion devices certified by EMVCo, Visa, CC EAL6+, PSA, ioXt, and governments across the globe&quot; per the vendor [@intrinsic-id-sram-puf]. The SRAM PUF has thousands of bits of min-entropy and a controlled noise model: powering up the SRAM gives a startup pattern that is reliable across temperature and voltage swings to within a few percent of bits. The signal-to-noise ratio is dramatically better than any consumer biometric.Pierre-Alain Dupont, Julia Hesse, David Pointcheval, Leonid Reyzin, and Sophia Yakoubov&apos;s 2018 EUROCRYPT paper &lt;em&gt;Fuzzy Password-Authenticated Key Exchange&lt;/em&gt; [@dupont-hesse-pointcheval-reyzin-yakoubov-2018] is a recent direction that decouples fuzzy extraction from key agreement: rather than extract a key once and use it, two parties run a password-authenticated key exchange whose &quot;password&quot; is a noisy biometric. Fuzzy PAKE sidesteps the helper-data leakage problem because the helper is consumed inside an interactive protocol that does not commit it to long-term storage.&lt;/p&gt;

The bright line between PUF and biometric is the *noise model*. An SRAM PUF lives in a single device, sees temperature and voltage variation between $-40^\circ$C and $+85^\circ$C, and operates against an adversary who can read the SRAM but cannot rewrite the silicon. The noise distribution is empirically measurable, and the entropy budget is enormous -- thousands of bits per page. A consumer fingerprint sensor, by contrast, lives outside the trust boundary: the noise distribution depends on skin moisture, sensor cleanliness, finger angle, and an adversary who can lift a latent print from a glass. The fuzzy-extractor framework is the right answer for the PUF case and the wrong answer for the consumer biometric case, and the difference is the noise model, not the cryptography.
&lt;p&gt;Each of these problems is interesting on its own merits, but none of them has a credible path to a consumer-OS-grade deployment in the next product cycle. So what does a consumer OS &lt;em&gt;actually&lt;/em&gt; do? That is the punchline.&lt;/p&gt;
&lt;h2&gt;10. The punchline: why Windows Hello does not use a fuzzy extractor&lt;/h2&gt;
&lt;p&gt;State the claim flatly. Windows Hello, in every shipping configuration since Enhanced Sign-in Security was introduced with Windows 11, performs &lt;strong&gt;match-then-unwrap&lt;/strong&gt;, not &lt;strong&gt;derive-from-biometric&lt;/strong&gt;. The biometric is a gate, not an input to key derivation. The cryptographic credential a Windows Hello user authenticates with is a TPM-bound asymmetric keypair generated independently during provisioning; the biometric matcher merely decides whether to authorise the TPM to use that key. The full architecture is documented verbatim in Microsoft Learn&apos;s Enhanced Sign-in Security and Windows Hello for Business pages [@ms-learn-ess], [@ms-learn-hello-business].&lt;/p&gt;
&lt;h3&gt;10.1 Enrolment&lt;/h3&gt;
&lt;p&gt;When a Windows user enrols a face or a fingerprint, the biometric data path runs inside a Virtualisation-Based Security (VBS) &lt;a href=&quot;https://paragmali.com/blog/vbs-trustlets-what-actually-runs-in-the-secure-kernel/&quot; rel=&quot;noopener&quot;&gt;trustlet&lt;/a&gt;, not in the kernel and not in the camera driver. Microsoft&apos;s documentation is explicit:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;When ESS is enabled, the face algorithm is protected using VBS ... The hypervisor allows the face camera to write to these memory regions providing an isolated pathway to deliver face data from the camera to the face matching algorithm&quot; [@ms-learn-ess].&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The face image never lands in regular kernel memory. It is delivered by the hypervisor into a memory region readable only by the VBS-resident face-matching trustlet, which extracts a feature template, encrypts it with VBS-only keys, and writes the encrypted blob to disk. For fingerprint, ESS supports only sensors with on-device matching: &quot;ESS is only supported on fingerprint sensors with match on sensor capabilities&quot; [@ms-learn-ess]. The sensor itself runs the matcher and never exposes the template to the host operating system.&lt;/p&gt;

A user-mode process that runs inside Virtual Trust Level 1 (VTL 1) on Windows, isolated from the normal-world kernel (VTL 0) by the Hyper-V hypervisor. Trustlets are the unit of code that the Secure Kernel hosts and that VBS-protected operations execute inside. Examples include the LSA Isolated process (Credential Guard) and the biometric matcher (Windows Hello with Enhanced Sign-in Security) [@ms-learn-ess].
&lt;p&gt;In parallel, the &lt;em&gt;credential&lt;/em&gt; the user will actually authenticate with is generated. Microsoft Learn&apos;s Windows Hello for Business page describes this verbatim: &quot;The provisioning flow requires a second factor of authentication before it can generate a public/private key pair. The public key is registered with the IdP, mapped to the user account&quot; [@ms-learn-hello-business]. The private key never leaves the TPM. It is sealed against a TPM policy that requires the boot integrity to be intact, the user account to be the same, and the VBS-resident biometric matcher to have signalled a match success. The keypair is a per-user, per-device, per-IdP credential; nothing about it is a function of the user&apos;s biometric.&lt;/p&gt;
&lt;h3&gt;10.2 Authentication&lt;/h3&gt;
&lt;p&gt;At authentication time, the user presents a face or a finger; the VBS-resident matcher compares the live template to the stored template; on success, the matcher signals the TPM via a secure channel to unwrap the asymmetric private key for use in an IdP challenge response. The Microsoft documentation states the architecture in two sentences:&lt;/p&gt;

The Windows biometric components running in VBS establish a secure channel to the TPM ... When a matching operation is a success, the biometric components in VBS use the secure channel to authorize the usage of Windows Hello keys for authenticating the user with their identity provider, applications, and services. -- Microsoft Learn, Windows Hello Enhanced Sign-in Security [@ms-learn-ess]
&lt;p&gt;The authentication ceremony itself is described in the Windows Hello for Business page: &quot;Regardless of the gesture used, authentication occurs using the private portion of the Windows Hello for Business credential. The IdP validates the user identity by mapping the user account to the public key registered during the provisioning phase&quot; [@ms-learn-hello-business]. The IdP sees a cryptographic proof that the user-registered TPM-bound key signed the challenge; it never sees anything that depends on the biometric.&lt;/p&gt;

flowchart LR
    subgraph &quot;DRS fuzzy extractor (theoretical)&quot;
        D1[&quot;Read biometric w&quot;] --&amp;gt; D2[&quot;Gen(w) -&amp;gt; (R, P)&quot;]
        D2 --&amp;gt; D3[&quot;Store helper P on disk&quot;]
        D2 --&amp;gt; D4[&quot;Use R as key&quot;]
        D5[&quot;Re-read w&apos; near w&quot;] --&amp;gt; D6[&quot;Rep(w&apos;, P) -&amp;gt; R&quot;]
        D6 --&amp;gt; D7[&quot;Use R as key&quot;]
    end
    subgraph &quot;Windows Hello (production)&quot;
        W1[&quot;Read biometric w in VBS&quot;] --&amp;gt; W2[&quot;Compute template T&quot;]
        W2 --&amp;gt; W3[&quot;Encrypt and store T with VBS-only key&quot;]
        W4[&quot;Generate TPM-bound keypair (sk, pk)&quot;] --&amp;gt; W5[&quot;Register pk with IdP&quot;]
        W4 --&amp;gt; W6[&quot;Seal sk to TPM with policy&quot;]
        W7[&quot;Re-read w&apos; in VBS&quot;] --&amp;gt; W8[&quot;Match w&apos; against T&quot;]
        W8 --&amp;gt; W9[&quot;Authorise TPM unwrap via secure channel&quot;]
        W6 --&amp;gt; W9
        W9 --&amp;gt; W10[&quot;TPM signs IdP challenge with sk&quot;]
    end
&lt;h3&gt;10.3 Why this is the right design&lt;/h3&gt;
&lt;p&gt;Map each architectural choice to a fuzzy-extractor limit from section 8.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The min-entropy gap is real.&lt;/strong&gt; Face and fingerprint min-entropy under correlated real-world noise is below the DRS bar for any cryptographically meaningful key length at the security parameter an OS authenticator must hit. Section 5&apos;s inequality forbids the construction; no amount of clever engineering moves the constants. Microsoft&apos;s engineers, when faced with the choice between deriving a 128-bit key from a 40-bit source and binding the key to a TPM, made the only choice the math allows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Helper-data leakage compounds under re-enrolment.&lt;/strong&gt; Every time a user re-enrols (new device, sensor recalibration, post-incident credential refresh), a new helper string would be published. Simoens, Tuyls, and Preneel established that correlated code-offset helpers link and reverse [@simoens-tuyls-preneel-2009]. Hardware-anchored match-then-unwrap rotates the TPM-sealed asymmetric key under standard key-management rules instead, sidestepping the cryptographic reusability problem entirely. Key rotation under a hardware root of trust is a solved problem; reusability in a software fuzzy extractor remains an active research area.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reusability across user-account-rebuild scenarios.&lt;/strong&gt; PIN reset, device wipe-and-restore, and credential rotation become &lt;em&gt;key-management&lt;/em&gt; problems (rotate the TPM-sealed key) rather than &lt;em&gt;cryptographic-reusability&lt;/em&gt; problems (rotate the fuzzy extractor and trust the CFPRS bound). The former has thirty years of operational practice behind it; the latter has none.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hardware-anchored attestation is easier to reason about.&lt;/strong&gt; TPM seal-policy binding gives a hardware-anchored security argument that a relying party can verify: the trustlet measurement, the biometric-match-success signal, and the boot integrity all have to match before the key unwraps. A software-only fuzzy extractor cannot match this attestation chain. The IdP at the other end of an authentication ceremony can ask the TPM for a quote attesting that the key was used inside a specific code module on a specific device; no software construction makes that proof.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; In every shipped consumer biometric authenticator on the planet, the biometric is a gate, not an input. The cryptographic key is generated separately during provisioning -- as a TPM-bound asymmetric keypair on Windows Hello, as a Secure-Enclave-bound key on Apple Face ID, as a StrongBox-bound key on Android [@android-keystore] -- and unwrapped on match success. The key is never derived from the biometric.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;10.4 The sibling case: Apple Face ID and Touch ID&lt;/h3&gt;
&lt;p&gt;Apple&apos;s Secure Enclave Processor performs the same architectural pattern, with the Secure Enclave playing the role Windows assigns to the trustlet-plus-TPM pair. The Apple Platform Security guide is explicit:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Apple&apos;s biometric security architecture relies on a strict separation of responsibilities between the biometric sensor and the Secure Enclave, and a secure connection between the two. The sensor captures the biometric image and securely transmits it to the Secure Enclave. During enrollment, the Secure Enclave processes, encrypts, and stores the corresponding Optic ID, Face ID, and Touch ID template data. During matching, the Secure Enclave compares incoming data from the biometric sensor against the stored templates to determine whether to unlock the device or respond that a match is valid&quot; [@apple-platform-security], [@apple-secure-enclave].&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Two vendors, independently, converged on the same architecture. Both vendors hire the strongest cryptographers in the world. Neither built a fuzzy extractor. The architectural pattern is now the consensus answer to the consumer biometric authentication problem.&lt;/p&gt;

Apple&apos;s Secure Enclave Processor is the architectural sibling of the Windows VBS trustlet plus TPM combination. The Secure Enclave is an ARM-based coprocessor with its own kernel, its own memory, and its own boot chain, physically isolated on the Application Processor die. During Face ID or Touch ID enrolment, the biometric sensor transmits its raw image directly to the Secure Enclave over a hardware-isolated link; the Secure Enclave extracts the template, encrypts it under a per-device key sealed to the Secure Enclave&apos;s UID, and stores it. During matching, the Secure Enclave compares the live template against the stored template inside its own memory, and on success authorises the use of cryptographic keys held in the same coprocessor. The pattern is identical to the Windows Hello pattern: derive nothing from the biometric; gate a hardware-bound key on the match decision [@apple-platform-security].
&lt;p&gt;Twenty years of theoretical work; zero production consumer-OS biometric authenticators on the planet use any of it for face or fingerprint key derivation; and the engineers who said no were right, for reasons traceable to a single load-bearing inequality at the heart of the 2004 EUROCRYPT paper.&lt;/p&gt;
&lt;h2&gt;11. Frequently asked questions&lt;/h2&gt;

No. Both perform match-then-unwrap rather than derive. Windows Hello generates a TPM-bound asymmetric keypair during provisioning [@ms-learn-hello-business]; the biometric matcher, running inside a VBS trustlet, authorises the TPM to use that key on a match-success signal [@ms-learn-ess]. Apple Face ID and Touch ID follow the same pattern with a Secure-Enclave-bound key in place of a TPM-bound one [@apple-platform-security]. In neither case is the cryptographic key a function of your biometric reading.

Yes -- in SRAM PUFs. Synopsys PUF IP (including QuiddiKey), built on Intrinsic ID SRAM PUF technology, is &quot;deployed and proven in over a billion devices certified by EMVCo, Visa, CC EAL6+, PSA, ioXt, and governments across the globe&quot; [@intrinsic-id-sram-puf]. The PUF noise distribution is controlled and the entropy budget is enormous, so the DRS construction works exactly as advertised. Consumer face and fingerprint biometrics are a different regime: the noise model is adversarial, the entropy budget is small, and the construction&apos;s inequality forbids the key length an OS authenticator needs.

Because the hash is avalanche-sensitive by design: a single-bit input change flips, on average, half the output bits. Two scans of the same finger differ in many bits, so two hashes differ in roughly half their bits. The cryptographic key is statistically independent of the previous one, and the user can never log in again after their first authentication. This is the failure mode that motivates the fuzzy-extractor primitive in section 1 [@hao-anderson-daugman-2005-tr].

Because of the load-bearing inequality at the heart of the EUROCRYPT 2004 paper. For consumer face and fingerprint biometrics at the security parameter an operating system authenticator demands ($\varepsilon = 2^{-80}$ or stronger), the extractable key length is negative: the source min-entropy is too low to absorb the cost of code redundancy plus the security parameter [@dors-2008-siamjc], [@frs-2020-ieeetit]. No amount of clever engineering moves the constants.

Yes. The iris is the only common biometric that comfortably clears the DRS bar. Daugman&apos;s 2003 Pattern Recognition paper reports 249 statistical degrees of freedom across 9.1 million iris-to-iris comparisons [@daugman-2003-pdf]; Hao, Anderson, and Daugman in 2006 demonstrated a 140-bit iris key with 99.5% recovery success on 70 eyes [@hao-anderson-daugman-2006-ieeetc]. But iris sensors are expensive, intrusive, and rarely shipped in consumer phones or laptops, so the result has not generalised to mainstream consumer authentication.

Deep-learning encoders such as Engelsma-Cao-Jain&apos;s DeepPrint reduce intra-user variance by mapping noisy raw biometric readings into compact embeddings [@engelsma-cao-jain-2019-arxiv]. That reduces the noise the secure sketch has to absorb and lets the code use less redundancy. But the deep encoder does not add min-entropy to the source: the underlying fingerprint is still a 40-to-80-bit source. No published construction has been shown to clear the DRS bar on a realistic correlated-noise test set for any consumer biometric other than iris.

Unlikely without one of two changes. Either (a) the sensor stack would have to gain entropy -- for instance, adding an iris camera to a future Surface device would put the source above the DRS bar -- or (b) a CFPRS-style reusable computational fuzzy extractor would have to mature past the digital-locker idealisation [@cfprs-2016-eurocrypt]. Even then, the operational advantages of hardware-bound asymmetric keys (TPM-anchored attestation, IdP-friendly key rotation, no helper-data leakage on re-enrolment) are large enough that a fuzzy extractor would have to clear a high bar to displace the current architecture.
&lt;p&gt;The fuzzy extractor is the right primitive for the right source. SRAM PUFs are that source; consumer face and fingerprint biometrics are not. The 2004 inequality drew the line, two decades of theory have refined the line, and every shipped consumer biometric authenticator on the planet has chosen to live on the other side of it.&lt;/p&gt;
&lt;p&gt;&amp;lt;StudyGuide slug=&quot;fuzzy-extractors-windows-hello&quot; keyTerms={[
  { term: &quot;Fuzzy extractor&quot;, definition: &quot;A pair (Gen, Rep) producing a stable key R from a noisy source w plus a public helper P; defined by Dodis-Reyzin-Smith 2004.&quot; },
  { term: &quot;Secure sketch&quot;, definition: &quot;The noise-tolerance half of a fuzzy extractor; SS publishes a sketch s, Rec recovers w from any w&apos; within distance t given s.&quot; },
  { term: &quot;Strong randomness extractor&quot;, definition: &quot;The uniformity half of a fuzzy extractor; turns a high-min-entropy source into a uniform key, via universal hashing and the Leftover Hash Lemma.&quot; },
  { term: &quot;Leftover Hash Lemma (LHL)&quot;, definition: &quot;Impagliazzo-Levin-Luby 1989: a universal hash applied to a min-entropy source is statistically close to uniform, with budget ell &amp;lt;= m - 2 log(1/epsilon) + 2.&quot; },
  { term: &quot;Min-entropy (H_infinity)&quot;, definition: &quot;Worst-case guessing-difficulty entropy measure; the right measure for cryptographic key derivation from a peaked distribution.&quot; },
  { term: &quot;Average min-entropy&quot;, definition: &quot;Conditional min-entropy that averages an adversary&apos;s best guess over the values of a public side-channel; the right measure for secure-sketch composition.&quot; },
  { term: &quot;Helper data (P)&quot;, definition: &quot;The public part of a fuzzy extractor&apos;s output: the sketch plus the extractor seed. Available at recovery time; leaks at most epsilon bits about R.&quot; },
  { term: &quot;Trustlet (VBS)&quot;, definition: &quot;A Virtual Trust Level 1 user-mode process on Windows, isolated from the normal kernel by Hyper-V; Windows Hello runs its biometric matcher inside a trustlet.&quot; }
]} questions={[
  { q: &quot;Why does SHA-256(fingerprint_image) fail as a cryptographic key?&quot;, a: &quot;SHA-256 is avalanche-sensitive: a single-bit input change flips half the output bits. Two scans of the same finger differ in many bits, so two hashes are statistically independent. The key is unrecoverable on the second scan.&quot; },
  { q: &quot;What does the DRS 2004 inequality bound, and what are its three terms?&quot;, a: &quot;It bounds the extractable key length ell &amp;lt;= H_infinity(W) - (n-k) - 2 log(1/epsilon) + 2. The three terms are the source min-entropy, the code redundancy paid to absorb noise, and the security parameter cost paid to the Leftover Hash Lemma.&quot; },
  { q: &quot;What is the architectural difference between deriving a key from a biometric and gating a key on a biometric?&quot;, a: &quot;Deriving makes the biometric itself the secret; if the biometric leaks, the key is at risk. Gating generates a key independently and uses the biometric only to decide whether to release it; the key&apos;s secrecy is anchored in hardware (TPM, Secure Enclave) and is independent of the biometric.&quot; },
  { q: &quot;Why does Windows Hello not use a fuzzy extractor?&quot;, a: &quot;Because the DRS inequality forbids a useful key on consumer face or fingerprint at security parameters an OS demands; because helper-data leakage compounds under re-enrolment; and because hardware-anchored match-then-unwrap gives TPM-backed attestation that no software fuzzy extractor can match.&quot; },
  { q: &quot;Where are fuzzy extractors actually deployed in production?&quot;, a: &quot;In SRAM PUFs. Synopsys PUF IP (including QuiddiKey) embeds a DRS-style fuzzy extractor in over a billion devices certified by EMVCo, Visa, CC EAL6+, PSA, ioXt, and governments. The PUF noise model is controlled and the entropy budget is large enough.&quot; }
]} /&amp;gt;&lt;/p&gt;
</content:encoded><category>cryptography</category><category>biometrics</category><category>fuzzy-extractors</category><category>windows-hello</category><category>tpm</category><category>authentication</category><category>information-theory</category><author>noreply@paragmali.com (Parag Mali)</author></item><item><title>No Secrets to Steal: How Windows Hello Eliminated the Shared Secret</title><link>https://paragmali.com/blog/your-face-is-not-your-password-inside-windows-hellos-hardwar/</link><guid isPermaLink="true">https://paragmali.com/blog/your-face-is-not-your-password-inside-windows-hellos-hardwar/</guid><description>How Windows Hello replaced passwords with TPM-backed biometrics, survived a decade of attacks, and helped make passwordless the default.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><content:encoded>
**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&apos;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.
&lt;h2&gt;Why Passwords Must Die&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;

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.
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;It was not supposed to be this way. In 1961, Fernando Corbato [@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.&lt;/p&gt;
&lt;p&gt;That temporary measure lasted 64 years.&lt;/p&gt;
&lt;p&gt;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 &quot;secure&quot; really means.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Password&apos;s 64-Year Reign: A Brief History of Authentication Failure&lt;/h2&gt;
&lt;p&gt;In 1966, a software bug in MIT&apos;s CTSS printed the master password file to every user&apos;s terminal -- the first known password breach [@wiki-password].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&apos;s password on screen.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;

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       :2009, 2015
    section Windows Hello
    Hello + TPM asymmetric auth       :2015, 2021
    ESS + VBS + Cloud Trust           :2021, 2024
    Passkeys and passwordless default :2024, 2026
&lt;h3&gt;Generation 0: Plaintext passwords (1961)&lt;/h3&gt;
&lt;p&gt;Corbato&apos;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.&lt;/p&gt;
&lt;h3&gt;Generation 1: Hashed passwords (1970s)&lt;/h3&gt;
&lt;p&gt;The obvious fix: do not store passwords in plaintext. In 1979, Robert Morris and Ken Thompson published the design behind UNIX&apos;s &lt;code&gt;crypt()&lt;/code&gt; 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.&lt;/p&gt;
&lt;p&gt;For a while, that was computationally infeasible. Then Moore&apos;s Law caught up. By the late 1990s, EFF&apos;s DES Cracker and distributed.net had reduced 56-bit DES keysearch to &lt;strong&gt;22 hours and 15 minutes&lt;/strong&gt; [@eff-des], making DES-based &lt;code&gt;crypt()&lt;/code&gt; 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.&lt;/p&gt;
&lt;p&gt;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.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 34 trillion times. An attacker could crack each half separately.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h3&gt;Generation 2: Network challenge-response (1990s)&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Kerberos [@ms-kerberos], adopted in Windows 2000, improved further with mutual authentication, time-limited tickets, and single sign-on. It was elegant protocol engineering.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h3&gt;Generation 3: First software biometrics (2000s)&lt;/h3&gt;
&lt;p&gt;By the early 2000s, fingerprint readers appeared on Windows laptops. The idea was appealing: replace &quot;something you know&quot; with &quot;something you are.&quot; No password to remember, no password to steal.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;In 2002, Tsutomu Matsumoto at Yokohama National University demonstrated the &quot;gummy finger&quot; attack -- creating gelatin replicas of fingerprints that fooled approximately 80% of commercial readers [@gummy-finger]. The materials cost just a few dollars. Without liveness detection and hardware protection, biometrics were security theater.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The pattern was unmistakable.&lt;/strong&gt; 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.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Catalyst: How Touch ID Changed Everything&lt;/h2&gt;
&lt;p&gt;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&apos;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.&lt;/p&gt;
&lt;p&gt;What made Touch ID different was not the sensor. It was the Secure Enclave -- a dedicated secure subsystem integrated into Apple&apos;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.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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&apos;s newer Secure Enclave documentation also emphasizes encrypted enclave memory, whereas Windows later needed ESS and &lt;a href=&quot;https://paragmali.com/blog/the-windows-secure-kernel/&quot; rel=&quot;noopener&quot;&gt;VBS&lt;/a&gt; to give its broader PC system a comparable isolation boundary [@apple-secure-enclave; @ms-ess].&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;The FIDO Alliance had already been working on the standards side. Founded in July 2012 [@fido-launch] by Michael Barrett (PayPal&apos;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].&lt;/p&gt;
&lt;p&gt;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 &lt;em&gt;what&lt;/em&gt; was possible. The FIDO Alliance defined &lt;em&gt;how&lt;/em&gt; it should work. Microsoft was about to show how to do it at the scale of an entire operating system.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Breakthrough: Windows Hello&apos;s Architecture&lt;/h2&gt;
&lt;p&gt;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?&lt;/p&gt;

A dedicated security chip soldered to a computer&apos;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.

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.
&lt;p&gt;Here is how Windows Hello authentication [@ms-whfb] works:&lt;/p&gt;

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-&amp;gt;&amp;gt;B: Present face or fingerprint
    B-&amp;gt;&amp;gt;D: Capture biometric sample
    D-&amp;gt;&amp;gt;D: Match against stored template
    Note over D: Local verification only
    D-&amp;gt;&amp;gt;T: Request private key release
    T-&amp;gt;&amp;gt;T: Verify TPM-bound policy
    T--&amp;gt;&amp;gt;D: Private key available for signing
    S-&amp;gt;&amp;gt;D: Send challenge nonce
    D-&amp;gt;&amp;gt;D: Sign nonce with private key
    D-&amp;gt;&amp;gt;S: Return signed assertion
    S-&amp;gt;&amp;gt;S: Verify signature with public key
    S-&amp;gt;&amp;gt;D: Authentication success
&lt;p&gt;&lt;strong&gt;Step 1: Enrollment.&lt;/strong&gt; 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].&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2: Biometric enrollment.&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3: Authentication.&lt;/strong&gt; 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.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; Windows Hello&apos;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.&lt;/p&gt;
&lt;/blockquote&gt;

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&apos;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.

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.
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; 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&apos;s security properties.&lt;/p&gt;
&lt;/blockquote&gt;

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.&lt;p&gt;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&apos;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.&lt;/p&gt;
&lt;p&gt;This is fundamentally different from software key storage, where the key is a file on disk that any sufficiently privileged process can read.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;The PIN paradox&lt;/h3&gt;
&lt;p&gt;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.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. &quot;Microsoft Passport&quot; was retired and its functionality absorbed into &quot;Windows Hello&quot; and &quot;Windows Hello for Business.&quot; The separate brand caused market confusion and was quickly abandoned.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;$$P(\text{false accept}) = 1 - (1 - p)^n$$&lt;/p&gt;
&lt;p&gt;For Windows Hello&apos;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.&lt;/p&gt;
&lt;p&gt;{`
// This demonstrates the core idea behind Windows Hello&apos;s authentication.
// In the real system, the private key lives in the TPM and never leaves.&lt;/p&gt;
&lt;p&gt;async function simulateHelloAuth() {
  // Step 1: Enrollment -- generate key pair (TPM does this in hardware)
  const keyPair = await crypto.subtle.generateKey(
    { name: &quot;ECDSA&quot;, namedCurve: &quot;P-256&quot; },
    true, // extractable for demo only; TPM keys are NOT extractable
    [&quot;sign&quot;, &quot;verify&quot;]
  );
  console.log(&quot;Key pair generated (simulating TPM enrollment)&quot;);&lt;/p&gt;
&lt;p&gt;  // Step 2: Server sends a challenge nonce
  const challenge = crypto.getRandomValues(new Uint8Array(32));
  console.log(&quot;Server challenge:&quot;, Array.from(challenge.slice(0, 8)).map(b =&amp;gt; b.toString(16).padStart(2, &apos;0&apos;)).join(&apos;&apos;));&lt;/p&gt;
&lt;p&gt;  // Step 3: Device signs the challenge with the private key
  const signature = await crypto.subtle.sign(
    { name: &quot;ECDSA&quot;, hash: &quot;SHA-256&quot; },
    keyPair.privateKey,
    challenge
  );
  console.log(&quot;Signed assertion:&quot;, new Uint8Array(signature).slice(0, 16).join(&apos;,&apos;) + &apos;...&apos;);&lt;/p&gt;
&lt;p&gt;  // Step 4: Server verifies with the public key
  const valid = await crypto.subtle.verify(
    { name: &quot;ECDSA&quot;, hash: &quot;SHA-256&quot; },
    keyPair.publicKey,
    signature,
    challenge
  );
  console.log(&quot;Server verification:&quot;, valid ? &quot;SUCCESS&quot; : &quot;FAILED&quot;);
  console.log(&quot;\nNote: The private key never left the device.&quot;);
  console.log(&quot;The server only has the public key -- useless to an attacker.&quot;);
}&lt;/p&gt;
&lt;p&gt;simulateHelloAuth();
`}&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Enterprise Gambit: Windows Hello for Business&lt;/h2&gt;
&lt;p&gt;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?&lt;/p&gt;

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).
&lt;p&gt;Windows Hello for Business (WHfB) [@ms-whfb] launched in 2016 with two trust types, each carrying its own infrastructure burden:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Certificate Trust&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Trust&lt;/strong&gt; 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.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.&lt;/p&gt;
&lt;p&gt;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&apos;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.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;


flowchart TD
    A[Choose a WHfB Trust Model] --&amp;gt; B{Cloud-native org using Entra ID?}
    B --&amp;gt;|Yes| C[Cloud Trust -- Recommended]
    B --&amp;gt;|No| D{On-prem AD still required?}
    D --&amp;gt;|Yes| E{Existing PKI infrastructure?}
    D --&amp;gt;|No| C
    E --&amp;gt;|Yes| F[Certificate Trust]
    E --&amp;gt;|No| G[Key Trust]
    C --&amp;gt; H[Simplest deployment: Entra ID only]
    F --&amp;gt; I[Most complex: CA + CRL + ADFS]
    G --&amp;gt; J[Moderate: Server 2016+ DCs required]
&lt;p&gt;&lt;strong&gt;Cloud Trust&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Trust&lt;/strong&gt; requires Windows Server 2016+ domain controllers with AD schema extensions. Choose this if you need on-premises AD support but do not have PKI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Certificate Trust&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;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&apos;s most basic assumption was wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Security Arms Race: When Researchers Fought Back&lt;/h2&gt;
&lt;p&gt;Omer Tsarfati had a simple question: what happens if you plug in a USB device that &lt;em&gt;claims&lt;/em&gt; to be an IR camera? The answer would force Microsoft to rethink Windows Hello&apos;s entire trust model.&lt;/p&gt;
&lt;h3&gt;The USB camera bypass (CVE-2021-34466)&lt;/h3&gt;
&lt;p&gt;In July 2021, Tsarfati at CyberArk Labs [@cyberark-bypass] revealed that Windows Hello&apos;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.Tsarfati&apos;s attack required only a single IR frame -- not video, not a 3D reconstruction, just one static infrared image of the target&apos;s face. The simplicity of the attack was what made it so alarming.&lt;/p&gt;
&lt;p&gt;Using an NXP evaluation board [@cyberark-bypass], Tsarfati constructed a custom USB device that replayed a single IR frame of a target&apos;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.&lt;/p&gt;
&lt;p&gt;The insight was devastating: the TPM protected the key, but nobody protected the camera. Windows Hello&apos;s threat model assumed trusted camera hardware. The USB specification makes no such guarantee.&lt;/p&gt;

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&apos;s Enhanced Sign-in Security uses VBS to isolate biometric processing.
&lt;h3&gt;Microsoft&apos;s response: ESS and VBS&lt;/h3&gt;
&lt;p&gt;Microsoft&apos;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.&lt;/p&gt;

flowchart TD
    subgraph VTL0[&quot;VTL0: Normal OS Environment&quot;]
        A[Windows Kernel]
        B[Applications]
        C[Standard Drivers]
    end
    subgraph VTL1[&quot;VTL1: Secure World -- ESS&quot;]
        D[Biometric Matching Engine]
        E[Encrypted Template Storage]
        F[Credential Isolation]
    end
    G[Hypervisor] --- VTL0
    G --- VTL1
    H[Secure Biometric Sensor] --&amp;gt; D
    A -.-&amp;gt;|Blocked by Hypervisor| D
    B -.-&amp;gt;|Blocked by Hypervisor| E
&lt;p&gt;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.&lt;/p&gt;
&lt;h3&gt;Red Bleed: the NIR assumption shatters (CVE-2025-26644)&lt;/h3&gt;
&lt;p&gt;The arms race was not over. In August 2025, researchers Bowen Hu, Kuo Wang, and Chip Hong Chang at Nanyang Technological University presented &quot;Red Bleed&quot; [@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.&lt;/p&gt;
&lt;p&gt;Windows Hello&apos;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]. The Red Bleed attack name references the &quot;red bleed&quot; 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.&lt;/p&gt;
&lt;p&gt;Microsoft&apos;s April 2025 patch strengthened liveness detection and anti-spoofing measures for NIR authentication.&lt;/p&gt;
&lt;h3&gt;Faceplant: the template swap (CVE-2026-20804)&lt;/h3&gt;
&lt;p&gt;The third major attack came from ERNW Research in August 2025. At Black Hat USA 2025, Baptiste David and Tillmann Oßwald&apos;s official conference briefing &quot;Windows Hell No for Business&quot; [@blackhat-windows-hell-no] detailed the Faceplant template-injection attack, which they later documented technically on ERNW&apos;s research blog [@faceplant].&lt;/p&gt;
&lt;p&gt;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&apos;s biometric database on the target device. After injection, Windows Hello accepted the attacker&apos;s face for the victim&apos;s account. ERNW traced the weakness to software-protected templates that a local administrator could extract and replace on non-ESS systems [@faceplant].&lt;/p&gt;
&lt;p&gt;ESS blocks this attack completely -- biometric templates in VTL1 are inaccessible even to local administrators. But many enterprise PCs lack ESS-compatible hardware.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Many enterprise PCs -- particularly those shipped without an ESS-certified built-in biometric sensor, including many AMD-based and older Intel-based machines -- lack ESS capability. On these machines, biometric templates remain in software-protected storage vulnerable to the Faceplant attack. Verify hardware compatibility before assuming biometric isolation is active.&lt;/p&gt;
&lt;/blockquote&gt;

flowchart TD
    A[&quot;2015: Windows Hello Launch&quot;] --&amp;gt; B[&quot;2021: CVE-2021-34466\nUSB Camera Spoofing&quot;]
    B --&amp;gt; C[&quot;Microsoft Response:\nESS + VBS Isolation&quot;]
    C --&amp;gt; D[&quot;2025: CVE-2025-26644\nRed Bleed NIR Attack&quot;]
    D --&amp;gt; E[&quot;Microsoft Response:\nLiveness Detection Update&quot;]
    E --&amp;gt; F[&quot;2025: CVE-2026-20804\nFaceplant Template Injection&quot;]
    F --&amp;gt; G[&quot;Defense: ESS Hardware\nIsolation Blocks Attack&quot;]
    G --&amp;gt; H[&quot;Ongoing: Adversarial ML\nArms Race&quot;]
    classDef fake fill:#7a3030,stroke:#c44b4b,color:#fce8e8
    class B fake,stroke:#333
    class D fake,stroke:#333
    class F fake,stroke:#333
    classDef real fill:#2f5a3a,stroke:#5fa872,color:#dff5e4
    class C real,stroke:#333
    class E real,stroke:#333
    class G real,stroke:#333
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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&apos;s defenses, the industry was converging on something bigger.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Convergence: Passkeys and the Passwordless Future&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;

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.
&lt;p&gt;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&apos;s devices through their platform credential manager. The FIDO Alliance&apos;s protocol [@fido-how] maintained the cryptographic guarantees (no shared secrets, phishing resistance) while adding the portability users demanded.&quot;World Password Day&quot; was symbolically renamed &quot;World Passkey Day&quot; in May 2025, when Microsoft announced that new accounts would default to passwordless authentication.&lt;/p&gt;
&lt;h3&gt;The numbers tell the story&lt;/h3&gt;
&lt;p&gt;By May 2025, Microsoft made new accounts passwordless by default [@ms-passkeys]:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nearly 1 million passkey registrations daily [@ms-passkeys]&lt;/li&gt;
&lt;li&gt;98% passkey sign-in success rate [@ms-passkeys] vs. 32% for passwords&lt;/li&gt;
&lt;li&gt;Passkey sign-ins 8x faster [@ms-passkeys] than password + MFA&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;How the platforms compare&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Windows Hello (WHfB)&lt;/th&gt;
&lt;th&gt;Apple Face ID / Passkeys&lt;/th&gt;
&lt;th&gt;Google Passkeys&lt;/th&gt;
&lt;th&gt;FIDO2 Hardware Keys&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hardware root of trust&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://paragmali.com/blog/the-tpm-in-windows-one-primitive-twenty-five-years-and-the-c/&quot; rel=&quot;noopener&quot;&gt;TPM 2.0&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Secure Enclave&lt;/td&gt;
&lt;td&gt;TEE / Titan M&lt;/td&gt;
&lt;td&gt;On-key secure element&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Credential sync&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No (device-bound)&lt;/td&gt;
&lt;td&gt;Yes (iCloud Keychain)&lt;/td&gt;
&lt;td&gt;Yes (Google PM)&lt;/td&gt;
&lt;td&gt;No (hardware-bound)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cross-platform&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows only&lt;/td&gt;
&lt;td&gt;Apple + QR/BT bridge&lt;/td&gt;
&lt;td&gt;Android/Chrome + QR/BT&lt;/td&gt;
&lt;td&gt;Universal USB/NFC/BT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FAR (face)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&amp;lt; 0.001%&lt;/td&gt;
&lt;td&gt;&amp;lt; 0.0001%&lt;/td&gt;
&lt;td&gt;Varies by OEM&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Enterprise management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Intune, GP, Conditional Access&lt;/td&gt;
&lt;td&gt;Limited (Apple MDM)&lt;/td&gt;
&lt;td&gt;Android Enterprise&lt;/td&gt;
&lt;td&gt;Manual provisioning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recovery on device loss&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Re-enroll on new device&lt;/td&gt;
&lt;td&gt;iCloud backup restore&lt;/td&gt;
&lt;td&gt;Google Account restore&lt;/td&gt;
&lt;td&gt;Requires backup key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NIST AAL level&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AAL2&lt;/td&gt;
&lt;td&gt;AAL2&lt;/td&gt;
&lt;td&gt;AAL2&lt;/td&gt;
&lt;td&gt;AAL3-eligible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best suited for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows enterprise&lt;/td&gt;
&lt;td&gt;Apple platform&lt;/td&gt;
&lt;td&gt;Android / cross-platform web&lt;/td&gt;
&lt;td&gt;High-assurance regulated&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Sources: Microsoft biometric requirements [@ms-biometric-reqs], Apple passkey security [@apple-passkeys-security], Google passkeys [@google-passkeys], FIDO specifications [@fido-specs]&lt;/p&gt;
&lt;p&gt;Google&apos;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].&lt;/p&gt;

sequenceDiagram
    participant U as User
    participant B as Browser
    participant A as Platform Authenticator
    participant S as Relying Party Server
    U-&amp;gt;&amp;gt;B: Click Register with Passkey
    B-&amp;gt;&amp;gt;S: Request registration options
    S-&amp;gt;&amp;gt;B: Return challenge + relying party info
    B-&amp;gt;&amp;gt;A: navigator.credentials.create()
    A-&amp;gt;&amp;gt;U: Prompt biometric verification
    U-&amp;gt;&amp;gt;A: Present face / fingerprint / PIN
    A-&amp;gt;&amp;gt;A: Generate key pair in TPM
    A-&amp;gt;&amp;gt;B: Return public key + attestation
    B-&amp;gt;&amp;gt;S: Send credential to server
    S-&amp;gt;&amp;gt;S: Store public key for user
    S-&amp;gt;&amp;gt;B: Registration complete
&lt;p&gt;{`
// This shows the structure of a WebAuthn registration request.
// In production, the challenge comes from your server.&lt;/p&gt;
&lt;p&gt;const registrationOptions = {
  publicKey: {
    // Random challenge from the server (32 bytes)
    challenge: crypto.getRandomValues(new Uint8Array(32)),&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Your service identity
rp: {
  name: &quot;Example Corp&quot;,
  id: &quot;example.com&quot;
},

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

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

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

// 5-minute timeout
timeout: 300000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  }
};&lt;/p&gt;
&lt;p&gt;console.log(&quot;Registration options structure:&quot;);
console.log(JSON.stringify(registrationOptions.publicKey.rp, null, 2));
console.log(&quot;\nKey algorithm: ES256 (ECDSA P-256)&quot;);
console.log(&quot;Resident key: required (discoverable passkey)&quot;);
console.log(&quot;User verification: required (biometric or PIN)&quot;);
console.log(&quot;\nIn production, call: navigator.credentials.create(registrationOptions)&quot;);
`}&lt;/p&gt;
&lt;h2&gt;Deploying Windows Hello Today&lt;/h2&gt;
&lt;p&gt;For consumers, the simplest path is built into Windows: open &lt;strong&gt;Settings &amp;gt; Accounts &amp;gt; Sign-in options&lt;/strong&gt;, 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.&lt;/p&gt;
&lt;p&gt;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 &lt;strong&gt;Use Windows Hello for Business&lt;/strong&gt; plus &lt;strong&gt;Use cloud trust for on-premises authentication&lt;/strong&gt; through Intune or Group Policy [@ms-cloud-trust-ga]. That is dramatically lighter than standing up PKI, ADFS, and certificate templates.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Limits: What Remains Unsolved&lt;/h2&gt;
&lt;p&gt;Biometrics fail in a way passwords do not: they are hard to rotate.&lt;/p&gt;

You cannot change your face. This single fact defines the deepest unsolved problem in biometric authentication.
&lt;p&gt;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 &quot;reset&quot; button.&lt;/p&gt;

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.
&lt;h3&gt;The biometric floor&lt;/h3&gt;
&lt;p&gt;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&apos;s inequality:&lt;/p&gt;
&lt;p&gt;$$P_e \geq \frac{H(X|Y) - 1}{\log |X|}$$&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h3&gt;Five open problems&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Cross-platform credential portability.&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. The adversarial ML arms race.&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Account recovery.&lt;/strong&gt; 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.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;4. The quantum threat.&lt;/strong&gt; Shor&apos;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.&lt;/p&gt;

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.&lt;p&gt;Shor&apos;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 &quot;harvest now, decrypt later&quot; threat means adversaries may be collecting signed assertions now to verify forged credentials later.&lt;/p&gt;
&lt;p&gt;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.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. The ESS hardware gap.&lt;/strong&gt; ESS requires specific secure sensors and VBS-capable CPUs [@ms-ess]. Many enterprise PCs -- particularly those shipped without an ESS-certified built-in biometric sensor, including many AMD-based and older Intel-based machines -- lack ESS capability. On these devices, Windows Hello falls back to the pre-ESS security model, leaving them vulnerable to attacks like Faceplant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Accessibility and inclusion.&lt;/strong&gt; 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.&lt;/p&gt;

Open PowerShell as administrator and run:&lt;pre&gt;&lt;code&gt;Get-CimInstance -Namespace root/Microsoft/Windows/DeviceGuard -ClassName Win32_DeviceGuard | Select-Object VirtualizationBasedSecurityStatus
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A value of &lt;code&gt;2&lt;/code&gt; means VBS is running. Then check the biometric service:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Get-WinEvent -LogName Microsoft-Windows-Biometrics/Operational -MaxEvents 10 | Format-List
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;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.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt; 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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;The password&apos;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.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Frequently Asked Questions&lt;/h2&gt;

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&apos;s servers never receive, store, or process your biometric data.

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.

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.

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.

No. Passkeys build on Hello&apos;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&apos;s model to cross-platform and cross-service authentication via the WebAuthn standard [@webauthn-3].

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.

Not indefinitely. The asymmetric cryptography underlying Hello and FIDO2 (ECDSA P-256) is theoretically vulnerable [@nist-pqc] to quantum computers running Shor&apos;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.
&lt;hr /&gt;
&lt;p&gt;&amp;lt;StudyGuide slug=&quot;windows-hello-revolution&quot; keyTerms={[
  { term: &quot;TPM&quot;, definition: &quot;Trusted Platform Module -- hardware chip that generates and stores cryptographic keys&quot; },
  { term: &quot;Asymmetric cryptography&quot;, definition: &quot;Public-key/private-key system where data signed with one key is verified with the other&quot; },
  { term: &quot;FAR&quot;, definition: &quot;False Acceptance Rate -- probability a biometric system accepts an unauthorized person&quot; },
  { term: &quot;NIR&quot;, definition: &quot;Near-infrared imaging -- camera technology used by Windows Hello for anti-spoofing&quot; },
  { term: &quot;WebAuthn&quot;, definition: &quot;W3C standard browser API for public-key-based authentication&quot; },
  { term: &quot;VBS&quot;, definition: &quot;Virtualization-Based Security -- hypervisor isolation for secure processing&quot; },
  { term: &quot;ESS&quot;, definition: &quot;Enhanced Sign-in Security -- VBS-isolated biometric matching in Windows 11&quot; },
  { term: &quot;Passkey&quot;, definition: &quot;FIDO2 credential that can be synced across devices via credential managers&quot; },
  { term: &quot;FIDO2&quot;, definition: &quot;Industry standard for passwordless authentication (WebAuthn + CTAP)&quot; },
  { term: &quot;Cancelable biometrics&quot;, definition: &quot;Revocable biometric templates using non-invertible transformations&quot; }
]} /&amp;gt;&lt;/p&gt;
</content:encoded><category>windows-hello</category><category>authentication</category><category>biometrics</category><category>fido2</category><category>passkeys</category><category>security</category><category>tpm</category><author>noreply@paragmali.com (Parag Mali)</author></item></channel></rss>