Key Event Receipt Infrastructure - the spec and implementation of the KERI protocol
Back to table of contents |Link|Commentary|Section |—|—|—| |0000|X|Glossary, overview, how to use| |0001|X|Prefixes, Derivation and derivation reference tables| |0002|X|Data model (field & event concepts and semantics)| |0003|X|Serialization| |0004|X|Key Configuration (Signing threshold & key set)| |0005|X|Next Key Commitment (Pre-Rotation)| |0006|X|Seals| |0007|X|Delegation (pending PR by Sam)| |0008|X|Key-Event State Machine| |0009|X|Indirect Mode & Witnesses| |0010||Recovery/consensus Algorithm (KAACE)| |0011||Database & Storage Considerations| |0097|n/a|Non-Normative Implementation Guidance| |0098|n/a|Use Cases| |0099|n/a|Test Vectors and Normative Statement Index|
{definition from page 36:}A “seal” is a qualified digest. Its derivation code specifies what type of hashing function was used but does not include any other information about the associated data. The hashing step produces a digest of the serialized data that is referenced by the seal. The seal acts as an anchor of the data. To clarify, the actual data is not provided explicitly in the seal, but merely the digest of the serialized data, hence the data is hidden. This may be useful in making verifiable cryptographic commitments at the location of an event to data stored and/or disclosed elsewhere.
A “seal” expresses a cryptographic commitment in the form of a cryptographic digest or hash tree root (Merkle root) that anchors arbitrary data or a tree of hashes of arbitrary data to a particular event in the key event sequence. This is referred to as a “seal” because, like a real-world seal, it offers a simple and direct proof of authenticity. Specifically, a key event sequence (made up entirely of a sequence of seals) provides a verifiable proof of current control authority at the location of each event in the key event sequence.
NOTE: A seal is an ordered self-describing data structure. Abstractly, this means each element of the seal has a tag or label that describes the associated element’s value. There are four normative types of seals: these are digest, root, event, and location seals.
Key Event Sequence: Sequence composed of interleaved establishment (inception, rotation) and non-establishment (interaction) events. Arrows represent digest chaining where event at arrow headis the content for the digest at arrow tail.
The data structure that provides the elements of a seal MUST have a canonical order so that it may be reproduced in a digest of elements of a event. Different types of serialization and/or encodings may provide different types of ordered mapping data structures. One universal canonical ordering data structure is a list of lists (or array of arrays) containing label/value pairs. The order of appearance in each list of each (label, value) pair is standardized and may be used to produce a serialization of the associated values.