Zero-knowledge proof (ZKP)

A proof that a statement holds while revealing nothing else: prove you are over 18 without your date of birth, and keep presentations unlinkable.

A cryptographic proof that a statement is true while revealing nothing beyond that fact. The classic wallet example is age: instead of handing over a date of birth, the holder proves the predicate "older than 18" and the verifier learns exactly that and nothing more.

This is a step beyond selective disclosure as it works today. In an SD-JWT or mdoc credential you choose which attributes to reveal, but the ones you reveal are revealed in full, and the issuer's signature over the credential can make repeated presentations correlatable. A zero-knowledge proof can answer a question about an attribute without disclosing its value, and schemes such as BBS+ signatures allow a holder to present the same credential many times without those presentations being linkable to each other. Those schemes are still on their way to being standards: the W3C cryptosuite for BBS is at candidate recommendation stage and the underlying IETF work is a draft, which is part of why no certified wallet relies on them yet.

What it does not change is trust in the source. A verifier still has to know that a trusted issuer signed the underlying attestation - the proof shows a statement follows from a genuine credential, not that the statement is true in the world. And the practical obstacles are real: the issuer has to sign in a form the proof system supports, the proofs have to be fast enough on a phone, and revocation has to work without reintroducing the identifier you were trying to hide. Standardisation and the reference framework discussion are moving, which is why this entry is marked as law in flux.

Frequently asked questions

Back to glossary