Loading vLEI.wiki
Fetching knowledge base...
Fetching knowledge base...
This comprehensive explanation has been generated from 10 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.
A cryptographic commitment scheme is a fundamental cryptographic primitive that implements a two-phase protocol enabling verifiable pre-commitment to data without premature disclosure. The scheme provides two critical security properties:
Binding Property: Once a party commits to a value or statement, they cannot change it. The cryptographic construction ensures that any attempt to substitute a different value during the reveal phase will be detected.
Hiding Property: The commitment does not reveal information about the underlying value until the committing party explicitly chooses to disclose it.
Formally, a commitment scheme consists of two algorithms:
In the KERI protocol and ACDC ecosystem, cryptographic commitment schemes are not standalone primitives but rather design patterns implemented through cryptographic digests (hash functions) and self-addressing identifiers. The commitment is typically a hash digest of the data, and the reveal phase involves providing the original data for verification against the digest.
KERI implementations should:
When implementing pre-rotation commitments:
"n" field of establishment eventFor self-addressing identifiers:
# * 44 (dummy value)When creating seals:
For privacy-preserving commitments:
When verifying commitments:
KERI's implementation of commitment schemes relies primarily on cryptographic hash functions rather than more complex commitment constructions like Pedersen commitments or polynomial commitments. The commitment to a value v is simply:
commitment = Hash(v)
Where Hash is a collision-resistant cryptographic hash function such as:
The security properties derive from the hash function's characteristics:
Collision Resistance: Computationally infeasible to find two different values v1 and v2 such that Hash(v1) = Hash(v2). This ensures the binding property - once committed to v1, the committer cannot later claim they committed to v2.
Preimage Resistance: Given a commitment c = Hash(v), it is computationally infeasible to find v. This ensures the hiding property - the commitment reveals no information about the committed value.
Second Preimage Resistance: Given v1 and c1 = Hash(v1), it is computationally infeasible to find a different v2 such that Hash(v2) = c1. This reinforces the binding property.
KERI commitment schemes achieve cryptographic strength through:
For enhanced hiding properties, KERI commitment schemes may incorporate:
The commitment becomes:
commitment = Hash(value || salt)
Where || denotes concatenation. The salt must be revealed along with the value during the reveal phase.
Commitments in KERI are encoded using CESR (Composable Event Streaming Representation), which provides dual text/binary encoding with self-framing properties.
Digest Primitives: Commitments are represented as qualified cryptographic digests with derivation codes that specify:
Example CESR-encoded commitment (SHA-256 digest):
EABCDE... (Base64 URL-safe encoding)
│└─────── 44-character Base64 digest
└──────── Derivation code 'E' indicates SHA-256 digest
Derivation Code Structure:
The derivation code is prepended to the Base64 URL-safe encoded digest, creating a primitive that is:
CESR supports dual text-binary encoding:
Text Domain (Base64 URL-safe):
Binary Domain (raw bytes):
Composability: CESR ensures that any set of concatenated primitives can be converted between text and binary domains without loss, maintaining text-binary concatenation composability.
Commitments are often embedded as SAIDs (Self-Addressing Identifiers) within KERI data structures. A SAID is a special commitment where:
SAID construction:
This pattern is extensively used in ACDCs for compact disclosure and selective disclosure.
The most critical use of commitment schemes in KERI is pre-rotation, which provides forward security for key rotation.
Commitment Phase (Inception or prior Rotation Event):
Reveal Phase (subsequent Rotation Event):
Hash(revealed_keys) = committed_digestThis scheme ensures that even if current signing keys are compromised, an attacker cannot rotate to keys they control because they don't know the pre-committed next keys. The commitment binds the controller to specific future keys before those keys are exposed.
Example KEL Structure:
{
"v": "KERI10JSON00011c_",
"t": "icp",
"d": "EAB...",
"i": "EAB...",
"s": "0",
"kt": "1",
"k": ["DPrI..."], // Current public key
"nt": "1",
"n": ["EQoU..."], // Commitment to next key (digest)
"bt": "0",
"b": [],
"c": [],
"a": []
}
The "n" field contains the commitment (digest) to the next key. In a subsequent rotation event, the "k" field will contain the revealed key, which must hash to the committed digest.
KERI seals are cryptographic commitments that anchor external data to key events:
Event Seal: Commits to another event by including its SAID
{
"i": "EAB...", // Identifier of sealed event
"s": "3", // Sequence number
"d": "ECD..." // Digest (commitment) to event
}
Digest Seal: Commits to arbitrary data
{
"d": "EFG..." // Digest of sealed data
}
Merkle Tree Root Seal: Commits to a set of data items via Merkle root
{
"rd": "EHI..." // Merkle root digest
}
Seals enable:
ACDCs use commitment schemes for privacy-preserving disclosure:
Compact Variant: Top-level fields contain SAIDs (commitments) instead of full data
{
"v": "ACDC10JSON00011c_",
"d": "EAB...", // SAID of entire ACDC
"i": "ECD...", // Issuer AID
"s": "EEF...", // Schema SAID
"a": "EGH..." // Commitment to attributes (SAID)
}
Full Disclosure: Attributes are revealed and verified against commitment
{
"v": "ACDC10JSON00011c_",
"d": "EAB...",
"i": "ECD...",
"s": "EEF...",
"a": {
"d": "EGH...", // SAID must match compact variant
"name": "Alice",
"role": "Engineer"
}
}
The commitment scheme enables:
Registry Inception: Commits to registry configuration Issuance Events: Commit to issued credential SAIDs Revocation Events: Commit to revoked credential SAIDs
Each TEL event is anchored to a KEL event via a seal, creating a verifiable chain from credential state back to the root-of-trust in the controller's key state.
Commitment schemes in KERI are implemented using cryptographic digests, which are the actual primitive type. The commitment scheme is the protocol pattern, while digests are the cryptographic tool.
Relationship: Digests provide the binding and hiding properties required for commitments through collision resistance and preimage resistance.
SAIDs are a specialized form of commitment where the identifier is the digest of the content, and the content includes the identifier itself.
Relationship: SAIDs extend basic commitment schemes with self-referential properties, enabling content-addressable data structures with built-in integrity verification.
The pre-rotation mechanism is the primary application of commitment schemes in KERI's security model.
Relationship: Pre-rotation uses digest commitments to next keys, providing forward security and enabling recovery from key compromise.
Seals are commitment structures embedded in key events to anchor external data.
Relationship: Seals implement commitment schemes to bind arbitrary data to specific points in the KEL timeline, creating verifiable provenance chains.
In ACDCs, blinded attributes use commitments to hide attribute values while maintaining verifiability.
Relationship: Attribute blinding applies commitment schemes to individual credential fields, enabling fine-grained privacy controls.
The security of KERI commitment schemes depends on:
The binding property ensures:
While commitments hide values, they don't prevent:
Mitigations:
Hash-based commitment schemes are generally considered post-quantum secure because:
This makes KERI's commitment schemes more future-proof than many public-key cryptographic constructions.