Loading vLEI.wiki
Fetching knowledge base...
Fetching knowledge base...
This comprehensive explanation has been generated from 91 GitHub source documents. All source documents are searchable here.
Last updated: October 7, 2025
This content is meant to be consumed by AI agents via MCP. Click here to get the MCP configuration.
Note: In rare cases it may contain LLM hallucinations.
For authoritative documentation, please consult the official GLEIF vLEI trainings and the ToIP Glossary.
Selective disclosure is a privacy-preserving mechanism in ACDC credentials that enables holders to reveal only specific attributes from a selectively disclosable set while keeping others cryptographically blinded, using an aggregator-based cryptographic primitive that requires all field maps to be disclosed in either blinded or published form.
Selective disclosure is a graduated disclosure mechanism within the ACDC (Authentic Chained Data Container) specification that provides fine-grained control over attribute revelation in verifiable credentials. Unlike partial disclosure, which operates on nested branches with binary disclosure decisions, selective disclosure enables attribute-level granularity where individual attributes within a selectively disclosable set can be independently chosen for revelation or blinding.
Selective disclosure achieves several critical privacy objectives:
Selective disclosure is employed in scenarios requiring:
The cryptographic aggregator is not an accumulator—this distinction is critical. Implementers must:
Each selectively disclosable attribute block requires a cryptographically strong UUID:
When computing SAIDs for attribute blocks:
d field self-referentiallyWhen building selective disclosure presentations:
When designing ACDC schemas with selective disclosure:
A (Attribute Aggregate) sectiona (Attribute) section for attributes that are always disclosed togetherIssuer: Creates the ACDC with a selectively disclosable attribute section, computing the cryptographic aggregator over all attributes and signing the compact form
Holder/Discloser: Controls which attributes to reveal in each presentation, maintaining custody of the full credential while presenting selective views
Verifier/Disclosee: Receives selectively disclosed attributes and validates both the revealed attributes and the cryptographic commitment to undisclosed attributes
The issuer creates an ACDC with an Attribute Aggregate section (A field) designed for selective disclosure:
{
"v": "ACDC10JSON00011c_",
"d": "EAdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
"i": "did:keri:EBkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
"s": "ED6jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
"A": [
{
"d": "ELGgI0fkloqKWREXgqUfgS0bJybP1LChxCO3sqPSFHCj",
"u": "0ABghkDaG7OY1wjaDAE0qHcg",
"i": "did:keri:EpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDI"
},
{
"d": "EKWREXgqUfgS0bJybP1LChxCO3sqPSFHCjLGgI0fkloq",
"u": "0AE0qHcgBghkDaG7OY1wjaDA",
"i": "did:keri:E66jpf3uFv7vklXKhzBrAqjsKAn2EDIpZfFk"
}
]
}
Each element in the A array represents a blinded attribute block with:
d: SAID of the attribute block (serves as cryptographic commitment)u: High-entropy UUID for rainbow table attack resistancei: Optional attribute-specific identifierThe issuer computes a cryptographic aggregator over all attribute block SAIDs. This aggregator is not an accumulator (as explicitly noted in Document 1)—it uses a different cryptographic primitive that requires all field maps to be disclosed in either blinded or published form.
The aggregator creates a cryptographic commitment that binds:
The issuer signs the compact ACDC where the A field contains only the SAIDs of attribute blocks:
{
"v": "ACDC10JSON00011c_",
"d": "EAdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
"i": "did:keri:EBkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
"s": "ED6jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
"A": "ELGgI0fkloqKWREXgqUfgS0bJybP1LChxCO3sqPSFHCj"
}
This signature cryptographically commits to all attributes through the aggregator mechanism, even though individual attribute values are not visible in the compact form.
When presenting the credential, the holder decides which attributes to disclose based on:
Critically, all attribute blocks must be disclosed—either in blinded form (SAID only) or published form (full attribute data). This is a fundamental requirement of the aggregator-based approach.
The holder constructs a presentation with:
Disclosed attributes: Full attribute blocks with all field maps revealed
{
"d": "ELGgI0fkloqKWREXgqUfgS0bJybP1LChxCO3sqPSFHCj",
"u": "0ABghkDaG7OY1wjaDAE0qHcg",
"i": "did:keri:EpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDI",
"legalName": "Alice Smith",
"birthDate": "1990-01-15",
"nationality": "US"
}
Blinded attributes: Only the SAID commitment without revealing content
{
"d": "EKWREXgqUfgS0bJybP1LChxCO3sqPSFHCjLGgI0fkloq"
}
The verifier performs multiple validation steps:
Aggregator Primitive: The selective disclosure mechanism uses a cryptographic aggregator (explicitly distinguished from accumulators in the specification). The aggregator must:
SAID Computation: Each attribute block must have a properly computed SAID that:
UUID Entropy: Each selectively disclosable attribute block requires a high-entropy UUID (≥128 bits) to prevent rainbow table attacks. Without sufficient entropy, attackers could pre-compute SAIDs for common attribute values and correlate blinded attributes across presentations.
Complete Disclosure Mandate: A critical requirement distinguishing selective disclosure from other mechanisms is that all field maps must be disclosed in either blinded or published form. This means:
Field Map Granularity: Selective disclosure operates at the field map level, where each field map can be independently:
This granularity enables fine-grained control compared to partial disclosure, which operates on nested branches with less flexibility.
Issuance Time Decisions: The issuer must decide at credential issuance which attributes will be selectively disclosable. This decision is encoded in the credential structure and cannot be changed post-issuance without re-issuing the credential.
Presentation Time Flexibility: The holder retains full flexibility at presentation time to choose which attributes to disclose, enabling dynamic privacy decisions based on:
Verification Latency: Verifiers must perform cryptographic operations including:
These operations introduce minimal latency (typically milliseconds) but must be considered in high-throughput verification scenarios.
Missing Attribute Blocks: If the presentation omits required attribute blocks (either blinded or published), verification fails because the aggregator cannot be validated against an incomplete set.
SAID Mismatches: If a disclosed attribute block's recomputed SAID doesn't match the committed SAID, verification fails, indicating either:
Schema Violations: Disclosed attributes must conform to the credential schema. Schema violations indicate either:
Age Verification Without Birthdate Disclosure:
A credential contains selectively disclosable attributes including birthdate, legal name, and address. For age-restricted service access:
Employment Verification with Privacy:
An employment credential includes employer, position, salary, start date, and performance ratings:
Educational Credentials for Job Applications:
A degree credential contains institution, degree type, major, GPA, graduation date, and thesis title:
Minimize Disclosed Attributes: Always disclose the minimum set of attributes required for the verification context. Over-disclosure increases correlation risk and violates data minimization principles.
Use Contextual Disclosure Strategies: Develop disclosure policies that adapt to verification context:
Implement Disclosure Logging: Maintain audit logs of disclosure decisions including:
Combine with Other Privacy Mechanisms: Selective disclosure works synergistically with:
IPEX Protocol Integration: Selective disclosure is implemented through the IPEX (Issuance and Presentation Exchange) protocol, which provides:
Schema Design: Credential schemas must explicitly designate which attributes are selectively disclosable by structuring them in the A (Attribute Aggregate) section rather than the a (Attribute) section. This design decision is made at schema definition time and affects all credentials issued under that schema.
Wallet Implementation: Digital wallets implementing selective disclosure must:
Verifier Systems: Verification systems must:
Selective disclosure is explicitly described as the "more fine-grained" version compared to partial disclosure. Key differences:
Granularity:
Cryptographic Foundation:
Disclosure Requirements:
Use Cases:
Selective disclosure provides partial correlation resistance by limiting disclosed attributes. However, it does not eliminate correlation risk entirely:
Contextual Linkability: Even with selective disclosure, contextual linkability attacks can succeed if verifiers capture sufficient contextual metadata (location, time, device fingerprints) to correlate presentations.
Disclosed Attribute Correlation: Attributes that are disclosed become correlatable across presentations to the same or different verifiers. Unique or rare attribute combinations can serve as quasi-identifiers.
Blinded Attribute Inference: Statistical analysis of which attributes are blinded across multiple presentations may reveal information about the holder's privacy preferences or the nature of blinded attributes.
Combine with Contractual Protections: Use contractually protected disclosure to impose legal obligations on verifiers regarding data usage and correlation.
Vary Disclosure Patterns: Avoid predictable disclosure patterns that could enable behavioral profiling. Randomize disclosure decisions when multiple valid strategies exist.
Use Pairwise Identifiers: Present credentials using different AIDs to different verifiers to prevent identifier-based correlation.
Implement Disclosure Policies: Develop and enforce organizational policies governing when and how selective disclosure is used, balancing verification requirements with privacy protection.
Complete Set Requirement: The mandate to disclose all field maps (blinded or published) means selective disclosure cannot hide the existence of attributes, only their values. This structural information may itself be sensitive in some contexts.
Aggregator Overhead: The aggregator-based approach requires additional cryptographic computation compared to simpler disclosure mechanisms, though this overhead is typically negligible in practice.
Schema Rigidity: The decision about which attributes are selectively disclosable is made at schema design time and cannot be changed without schema versioning and credential re-issuance.
Verifier Complexity: Implementing aggregator-based verification is more complex than simple signature verification, requiring specialized cryptographic libraries and careful implementation to avoid vulnerabilities.
The selective disclosure mechanism in ACDC represents a pragmatic approach using "minimally sufficient means" (digests and signatures) rather than more complex zero-knowledge proof systems. This design choice prioritizes:
Future enhancements may include:
v field