Skip to main content

Zero-Knowledge Proof

A zero-knowledge proof is a cryptographic method for proving that a statement is true, such as "the holder is over 18", without revealing any of the underlying data the statement is based on, such as the actual birth date.

Where selective disclosure lets a holder reveal chosen claims as-is, a zero-knowledge proof reveals nothing at all: the verifier learns only that the statement holds, backed by a proof it can check against the issuer's signature. This is a stronger privacy guarantee than selective disclosure, and an active area of standardisation for future credential formats used in the EUDI Wallet ecosystem. The proof is built so that anyone can check it against public parameters and the issuer's signature, yet no combination of proofs handed to different verifiers can be linked back to the same credential or to each other, which removes the correlation risk that comes from repeatedly showing the same signed value. A simple selective-disclosure credential still lets two colluding verifiers compare a hashed claim and conclude the same holder visited both, while a zero-knowledge proof of the identical statement looks different every time it is generated. The trade-off is computational cost and complexity: generating and verifying a zero-knowledge proof takes more processing power than checking a plain signature, and the cryptographic schemes involved, such as BBS+ signatures or zk-SNARKs, are newer and less standardised than the hash-based selective disclosure already deployed in SD-JWT. Several EUDI Wallet reference implementations and pilots are evaluating zero-knowledge techniques as a future upgrade path for attributes where unlinkability matters most, such as age or nationality checks repeated across many unrelated services.

Does using a zero-knowledge proof mean the verifier has to trust the holder blindly?

No. The verifier still relies on cryptography rather than trust in the holder. The proof mathematically ties the statement to the issuer's original signature, so a verifier can be certain a claim is genuine and unaltered even though it never sees the underlying data, the same assurance a normal signature check gives, just without exposing the value behind it.

Back to the glossary