Join our Newsletter — 33% off our NHI Course
Home› Guides› Zero-Knowledge Proofs Guide: Prove Identity Facts Without Revealing…
Guide Customer Identity

Zero-Knowledge Proofs Guide: Prove Identity Facts Without Revealing Data

PDF for newsletter subscribers · free to read online

← All guides
By NHI Mgmt Group, edited by Lalit Choda Updated 27 October 2026 11 min read
On this page

Most identity checks still collect far more personal data than the decision needs, because the only way to prove "over 18" or "holds a valid licence" has been to show the whole document. A zero-knowledge proof (ZKP) is a cryptographic protocol that lets one party prove a statement is true without revealing anything beyond the fact that it is true. This guide explains what ZKPs are, how they work inside identity wallets and age verification, where they differ from selective disclosure, and what an identity team has to decide before accepting them. It is written for identity architects, privacy engineers and relying party teams who will meet ZKPs through the EU Digital Identity Wallet, mobile driving licences and verifiable credentials.

Key takeaways

  • A ZKP proves a statement, not a value. The verifier learns "the holder has a valid issuer-signed credential saying age over 18 is true" and nothing about name, birth date or the signature itself.
  • Selective disclosure is not the same thing. RFC 9901 SD-JWT hides undisclosed claims with salted hashes, but the issuer signature and digests are shown every time, so repeated presentations can be correlated unless credentials are used once.
  • Two families matter for identity. Multi-message signatures such as BBS give unlinkable proofs but need issuers to change how they sign; circuit-based proofs over existing ECDSA credentials need no issuer change but cost more computation.
  • The EU age verification blueprint already uses one. Its Annex B selects ECDSA anonymous credentials (the Longfellow scheme), with a plain ISO mdoc presentation kept as a fallback for devices that cannot generate proofs.
  • Proofs do not fix weak inputs. A ZKP is only as trustworthy as the issuer, the circuit, the device binding and the revocation design around it, and disclosed attributes can still identify people.

What it is

NIST's Privacy-Enhancing Cryptography project describes the ZKP as a main tool of privacy-enhancing cryptography: it proves the truthfulness of a statement without revealing additional information. Most identity uses are a zero-knowledge proof of knowledge: the prover shows it knows a secret witness (for example a signed credential and the private key bound to it) that is consistent with a public instance (the issuer public key, the requested attribute, a verifier nonce).

The ZKProof Community Reference (version 0.3, July 2022, which NIST helped edit) defines the three properties every scheme must have:

  • Completeness: an honest prover holding a valid witness convinces an honest verifier when the statement is true.
  • Soundness: a cheating prover has negligible chance of convincing the verifier of a false statement. Systems sound only against computationally bounded provers are strictly called arguments, which is why the "AR" in SNARK stands for argument.
  • Zero knowledge: the verifier learns nothing beyond the truth of the statement. Formally, a simulator without the witness can produce transcripts the verifier cannot tell apart from real ones. The reference distinguishes perfect, statistical and computational zero knowledge.

For identity, a fourth property is usually required on top: unlinkability, meaning two presentations of the same credential cannot be recognised as coming from the same holder. Zero knowledge about hidden attributes does not automatically give unlinkability if any fixed value, such as a serial number or the issuer signature, travels with every proof.

How it works

An identity ZKP has the same actors as any credential flow: an issuer signs attributes, a wallet holds them, and a relying party (verifier) requests a statement. What changes is the presentation step.

Interactive, non-interactive and setup

Classic protocols are interactive: commit, challenge, response. The Fiat-Shamir transform replaces the verifier's random challenge with a hash, giving a non-interactive proof that is a single message. The ZKProof reference notes that non-interactive proofs are often transferable: anyone holding a copy can verify it. Identity schemes therefore bind every proof to a verifier nonce or presentation header so a captured proof cannot be replayed elsewhere.

Some proof systems need public parameters. A trusted setup (common reference string) is generated by a party or ceremony that could forge proofs if it kept the secret; a trustless or transparent setup derives parameters from public randomness. The Ligero-based scheme used for EU age verification needs no trusted setup.

The two identity families compared

AspectMulti-message signatures (BBS)Circuit proofs over existing credentials (ECDSA anonymous credentials, Crescent)Salted-hash selective disclosure (SD-JWT, mdoc)
Zero knowledge of hidden claimsYes, proof reveals nothing about undisclosed messages or the signatureYes, credential and signature stay in the witnessHidden claims are hashed; signature and digests are revealed
Unlinkable presentationsYes, derived proofs are unlinkable to each otherYes, if the circuit hides all fixed valuesNo by design; mitigated by single-use or batch-issued credentials
Issuer change neededYes, new signature scheme (pairing-friendly curve BLS12-381 in the IRTF draft)No, issuer keeps signing ECDSA mdoc or JWTNo
Device key binding with phone secure hardwareNeeds extensions (BBS+ with ECDSA proof of possession, BBS#)Native, proves an ECDSA signature over the nonceNative
Prover costLowHigher; proofs may take seconds on a phoneVery low
Standards status (checked 27 Oct 2026)draft-irtf-cfrg-bbs-signatures-13 (Informational, IRTF); W3C bbs-2023 Candidate Recommendation Draftdraft-irtf-cfrg-longfellow (replaced draft-google-cfrg-libzk); not yet an RFCRFC 9901 Proposed Standard; ISO/IEC 18013-5

Worked example: proving age over 18

Annex B of the EU age verification technical specification describes the circuit precisely. The witness is the Proof of Age attestation. The public inputs are the attestation provider's public key, the attribute and a nonce. The circuit outputs true only if all four checks pass:

  1. The attestation carries a signature that verifies under the provider's public key.
  2. The requested attribute (age over 18) is set to true.
  3. The app can sign the verifier's nonce with the private key whose public key is in the attestation (device binding).
  4. The attestation is inside its validity period.

The app runs the prover over this circuit and sends only the succinct proof. The relying party verifies it against the same public inputs. The issuer is unaware the scheme exists, so no change is needed to issuance. Annex B records that the scheme was externally reviewed by Trail of Bits (August 2025), ISRG (October 2025) and an academic panel assembled by Ligero (December 2025), that ISRG produced a second, bit-compatible Rust implementation, and that the scheme is deployed in Google Wallet.

Why it matters

ZKPs turn data minimisation from a policy promise into a property of the protocol. A relying party that never receives a birth date cannot leak, sell or over-retain it, and two websites cannot join their logs on a credential serial number. The EUDI Architecture and Reference Framework discussion paper on ZKP (Topic G, version 1.4) traces the requirement to selective disclosure and unlinkability in the revised eIDAS Regulation, and its proposed requirements include using only standardised algorithms, adding no extra communication that could enable tracking, and keeping "high" level of assurance authentication possible. Those proposals were not yet adopted text when checked.

Decision guidance for relying parties

SituationReasonable choiceWhy
Age gate or eligibility check with no need to know who the user isRequest a ZKP presentation, fall back to a single-use salted-hash attestationGives the strongest minimisation; fallback covers devices without proof support
Regulated onboarding (KYC, account opening) that legally needs name and date of birthSelective disclosure of the required claims onlyA ZKP adds cost without reducing what you must collect
Returning user without an accountVerifier-scoped pseudonym (BBS pseudonym or ARF pseudonym proposal)Recognises the same person per site while staying unlinkable across sites; W3C notes same-domain pseudonyms are linkable by design
Small organisation, few verificationsUse a wallet vendor's verifier SDK rather than building circuitsCircuit design and parameter choice are specialist work
Large platform or national schemeRun a pilot with both presentation paths and measure proof time per device classProver cost and device support vary widely

Rolling it out

  1. Write the statement first: list exactly which predicate the service needs ("age over 18", "resident of a member state") and which attributes, if any, must be revealed.
  2. Pick the presentation path: ZKP where wallets support it, single-use attestations otherwise, and decide what happens when neither is available.
  3. Pin issuer trust: load issuer public keys from the official trusted list, not from the presentation itself.
  4. Bind and check freshness: generate a fresh nonce per request and reject proofs that do not commit to it.
  5. Pilot in log-only mode: verify proofs alongside the existing check, compare outcomes, and record proof generation and verification times.
  6. Roll back cleanly: keep the fallback path switchable by configuration so a library or circuit fault does not block users.

What to measure

  • Proof success rate: share of presentations that verify first time, split by device and wallet.
  • Fallback rate: share of users who could not produce a ZKP and used the plain path.
  • Median and 95th percentile proof time: the ARF notes proofs may take seconds, which matters more in proximity flows.
  • Personal data fields stored per verification: the target for an age gate is zero.
  • Replay rejections: proofs refused for a stale or wrong nonce, which should be rare but never zero in a real attack.

Common misconceptions

  • "SD-JWT is a zero-knowledge proof": it is selective disclosure by salted hashes. The verifier sees the issuer signature and digests, which are stable across presentations. See the SD-JWT and SD-JWT VC Guide.
  • "Zero knowledge means anonymous": whatever you disclose is still disclosed. W3C's BBS cryptosuite notes that the verifier learns how many statements the issuer signed and recommends padding to a common length where that matters. A rare postcode plus birth year can identify someone without any credential linkage. See the Anonymisation and Re-identification Risk Guide.
  • "A proof proves the user is the holder": it proves possession of a key. Device binding, wallet attestation and the issuer's identity proofing decide whether that key belongs to the right person.
  • "Expiry and revocation take care of themselves": a fine-grained validity date or a revocation index is itself a tracking vector. Annex B treats hiding the validity period as optional and recommends other mechanisms; the ARF paper lists privacy-preserving revocation as a desired property rather than a solved one.
  • "Drafts are safe to hard-code": the BBS and Longfellow documents are research-group drafts and change between versions. Pin library versions and plan for algorithm agility.
  • "ZKPs are post-quantum": security depends on the construction. BBS relies on pairing-based assumptions, and ECDSA-based credentials inherit ECDSA's exposure to a future quantum computer. See the Post-Quantum Readiness Guide.

ZKPs sit inside a wider privacy and identity toolset. The framework mapping below shows where controls for them belong.

FrameworkReferenceHow ZKPs relate
NIST SP 800-53 Rev. 5SA-8(33) MinimizationProtocol-level minimisation of personal data processed by the relying party
NIST SP 800-53 Rev. 5SC-13 Cryptographic Protection; SC-12 Cryptographic Key Establishment and ManagementApproved algorithm choice and management of issuer and device keys
NIST SP 800-53 Rev. 5IA-8 Identification and Authentication (Non-organizational Users)Accepting external credentials from citizens and customers
NIST CSF 2.0GV.OC-03Privacy and legal obligations that drive the minimisation requirement
GDPRArt. 5(1)(c) data minimisation; Art. 25 data protection by designLegal basis for preferring predicates over raw attributes
EU Digital Services ActArt. 28 protection of minorsPolicy driver for the EU age verification blueprint

Practitioner checklist

  • Write down the exact predicate each service needs and remove every attribute it does not.
  • Confirm whether your wallets and issuers support BBS, circuit-based proofs, or only salted-hash disclosure.
  • Load issuer keys from the official trusted list and reject self-asserted keys.
  • Require a fresh verifier nonce in every proof and log replay rejections.
  • Keep a configurable fallback path and measure how often it is used.
  • Pin proof library versions and record the specification draft version each one implements.
  • Review disclosed attribute combinations for re-identification risk, not just the cryptography.
  • Track the status of the IRTF BBS and Longfellow drafts and the W3C BBS cryptosuite at each review.

Standards and references

Related NHI Mgmt Group resources: Verifiable Credentials Guide · eIDAS 2.0 and the European Digital Identity Framework Guide · Age Assurance Guide · Privacy-Enhancing Technologies Guide

PDF for subscribers

Take this guide with you

Every section, table and checklist in one PDF, with links to the sources and related guides. Subscribe to our weekly NHI & AI Identity Journal and we’ll email you a download link.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Researched and written by the NHI Mgmt Group editorial team using AI tools, under the editorial direction of Lalit Choda. Facts are drawn from the sources listed on this page and checked by our automated quality process. Last updated 27 October 2026. Spotted an error? Use our contact page.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM and Agentic AI security. nhimg.org

PDF Downloads for Newsletter Subscribers

Get the guide

Enter your details and we’ll email you a download link.

The full guide is free to read online. The PDF is a thank you for subscribing.

Fill in all fields marked * and tick the PDF box to continue.