codexproof

glossary / Selective disclosure

revealing some fields of a signed object while withholding others, without breaking the signature - done by committing to hidden fields with salted hashes so the signature covers commitments, not plaintext.

envelopesalt and commitmentverifiable credentials
Selective disclosure - Disclose with the salt or withhold entirely - the signature never learns the difference

Disclose with the salt or withhold entirely - the signature never learns the difference.

Etymology and backstory

the problem is as old as credentials: prove you are over 21 without showing your address. Cryptography's answers range from heavyweight (zero-knowledge proofs, BBS+ signatures, anonymous credentials from Chaum onward) to pragmatic: hash each field with a per-field random salt, sign the list of hashes, and disclose field-plus-salt only for what you choose to reveal. The pragmatic form went mainstream as SD-JWT in the OAuth world in the 2020s.

Ecosystem

SD-JWT (IETF), verifiable credentials with BBS+ signatures, mDL (mobile driver's licenses, ISO 18013-5) - all the same disclosure dance at different formality levels.

In codexproof

the salted-commitment form. Hidden fields ride as salted hashes inside the signed node; disclosure hands over value plus salt, and the verifier recomputes. The salt prevents dictionary attacks on low-entropy fields (without it, "amount: 100" hides nothing - you would just try all plausible amounts). The paper compresses this into one generic passage after the in-out-in disclosure saga (Q7); salt custody is an operator burden noted in Q18's tier-2 edges.

"Sign commitments, disclose values with their salts - the signature never learns what you hid, and the verifier never doubts what you showed."
References: IETF SD-JWT draft (Selective Disclosure for JWTs). Chaum, "Security Without Identification," CACM (1985) - the ancestral credential vision. W3C Verifiable Credentials Data Model (the vc citation in the paper).

All terms · Questions & answers · The verifier