Trust Surface ยท Selective Disclosure

Three ways to hide a field and keep the proof

One synthetic shipment record, three commitment mechanisms. Elide a field and watch what a verifier still sees: SD-JWT disclosures replace hidden claims with salted digests, the estate's sha256-salted@1 commitments never reveal the value, and an Envelope-style digest tree keeps the hidden node's digest so the root over the whole record does not move.

๐Ÿ”’ All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data โ€” use synthetic or anonymised inputs only.
Panel 1 ยท The shared record and the elision choice

The shared record and the field it will lose

Both records are toy data from a seeded corpus, shaped like a supply-chain shipment. The counterparty values are drawn from a small corpus of counterparties, and that is deliberate: it is what makes the unsalted digest recoverable later in the page.

The full record (what the holder sees)
Panel 2 ยท SD-JWT disclosures (the T545 approach)

Hidden claims become salted digests in the _sd array

Each claim is wrapped in a disclosure of three values: a fresh salt, the claim name, and the value. The digest of that disclosure lands in the _sd array of the signed payload. Elide a claim and its disclosure is simply not presented; the verifier sees the remaining claims in the clear plus an unrecoverable digest for the hidden one. This is the same construction the SD-JWT Disclosure Workbench issues live.

What the SD-JWT verifier sees after the elision
Panel 3 ยท sha256-salted@1 commitments (the estate shape)

Every field is a commitment before anyone sees the record

The estate's sha256-salted@1 commitment shape hashes a fresh 256-bit salt together with the value. A verifier holding only the commitments can check a revealed value against its commitment but can learn nothing about a withheld one. The salt stays with the committer.

What the sha256-salted@1 verifier sees after the elision
Panel 4 ยท Envelope-style digest tree (draft-mcnally-envelope-12) illustrates the draft; not a conformant Envelope implementation

Elision keeps the digest, so the root does not move

The draft builds a tree: each leaf is hashed over its CBOR bytes, each assertion over its predicate and object digests, and the node over its subject digest followed by the assertion digests in ascending lexicographic order. Eliding a node replaces its payload with a placeholder that carries the same digest, so every digest above it, including the root, is unchanged. The digests below follow sections 4.1 to 4.4 of draft-mcnally-envelope-12, computed with WebCrypto SHA-256. The bytes are simplified for teaching and the page never claims interop with a conformant implementation.

Root digest of the record
Where this construction stops: the digests above prove the hidden field existed and was unchanged, nothing more. This page computes a commitment to a record, verifiable after parts are elided; it does not attest who audited the record or what the record asserts about the world. The reference library for this format, @blockchaincommons/envelope, is beta, unaudited and self-described as not for production; this page inlines none of it.
Panel 5 ยท Why the draft salts: correlation of unsalted digests

An unsalted elided digest over a guessable value is recoverable

The elided tree hides the counterparty bytes, but its digest is published. If the value comes from a small enumerable market, an attacker hashes each candidate and matches the digest, exactly the enumerability lesson of the salted-hash enumerability demo. Section 7.4 of the draft answers with salt: random assertions perturb the digest tree so elided digests no longer correlate with known values.

Idle. The elided leaf digest from panel 4 is the target.
In the AINumbers estate

Where these three mechanisms stand in the estate

The SD-JWT path is live: the SD-JWT Disclosure Workbench issues and presents real selective-disclosure tokens today. The sha256-salted@1 commitment shape is used by the estate today, and the salted-hash enumerability demo shows why the salt is not optional. Canton selective disclosure is exercised by the art-108 selective-disclosure node. Envelope and dCBOR are not used by the estate; the estate's integrity path is the JCS execution_hash, computed over canonicalized chain artifacts, and this page's teaching tree never touches that path.