<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ssmith-keri-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="KERI">Key Event Receipt Infrastructure (KERI)</title>
    <seriesInfo name="Internet-Draft" value="draft-ssmith-keri-00"/>
    <author initials="S." surname="Smith" fullname="S. Smith">
      <organization>ProSapien LLC</organization>
      <address>
        <email>sam@prosapien.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="27"/>
    <area>TODO</area>
    <workgroup>TODO Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 460?>

<t>An identity system-based secure overlay for the Internet is presented. This is based on a Key Event Receipt Infrastructure (KERI) or the KERI protocol <xref target="KERI"/><xref target="KERI-ID"/><xref target="RFC0791"/>. This includes a primary root-of-trust in self-certifying identifiers (SCIDs) <xref target="UIT"/><xref target="SCPK"/><xref target="SFS"/><xref target="SCPN"/><xref target="SCURL"/>. It presents a formalism for Autonomic Identifiers (AIDs) and Autonomic Namespaces (ANs). They are part of an Autonomic Identity System (AIS). This system uses the design principle of minimally sufficient means to provide a candidate trust spanning layer for the internet. Associated with this system is a decentralized key management infrastructure (DKMI). The primary root-of-trust are self-certifying identifiers that are strongly bound at issuance to a cryptographic signing (public, private) keypair. These are self-contained until/unless control needs to be transferred to a new keypair. In that event, an append-only chained key-event log of signed transfer statements provides end verifiable control provenance. This makes intervening operational infrastructure replaceable because the event logs may be served up by any infrastructure including ambient infrastructure. End verifiable logs on ambient infrastructure enable ambient verifiability (verifiable by anyone, anywhere, at any time).
The primary key management operation is key rotation (transference) via a novel key pre-rotation scheme <xref target="DAD"/><xref target="KERI"/>. Two primary trust modalities motivated the design, these are a direct (one-to-one) mode and an indirect (one-to-any) mode. The indirect mode depends on witnessed key event receipt logs (KERL) as a secondary root-of-trust for validating events. This gives rise to the acronym KERI for key event receipt infrastructure. In the direct mode, the identity controller establishes control via verified signatures of the controlling keypair. The indirect mode extends that trust basis with witnessed key event receipt logs (KERL) for validating events. The security and accountability guarantees of indirect mode are provided by KA2CE or KERI’s Agreement Algorithm for Control Establishment among a set of witnesses.
The KA2CE approach may be much more performant and scalable than more complex approaches that depend on a total ordering distributed consensus ledger. Nevertheless, KERI may employ a distributed consensus ledger when other considerations make it the best choice. The KERI approach to DKMI allows for more granular composition. Moreover, because KERI is event streamed it enables DKMI that operates in-stride with data events streaming applications such as web 3.0, IoT, and others where performance and scalability are more important. The core KERI engine is identifier namespace independent. This makes KERI a candidate for a universal portable DKMI <xref target="KERI"/><xref target="KERI-ID"/><xref target="UIT"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/trustoverip/tswg-keri-specification"/>.</t>
    </note>
  </front>
  <middle>
    <?line 469?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The main motivation for this work is to provide a secure decentralized foundation of attributional trust for the Internet as a trustable spanning layer in the form of an identifier system security overlay. This identifier system security overlay provides verifiable authorship (authenticity) of any message or data item via secure (cryptographically verifiable) attribution to a <em>cryptonymous (cryptographic strength pseudonymous)</em> <em>self-certifying identifier (SCID)</em> <xref target="KERI"/><xref target="UIT"/><xref target="SCPK"/><xref target="SFS"/><xref target="SCPN"/><xref target="SCURL"/><xref target="PKI"/>.</t>
      <t>A major flaw in the original design of the Internet Protocol was that it has no security layer(s) (i.e. Session or Presentation layers) to provide interoperable verifiable authenticity <xref target="RFC0791"/>. There was no built-in mechanism for secure attribution to the source of a packet. Specifically, the IP packet header includes a source address field that indicates the IP address of the device that sent the packet. Anyone (including any intermediary) can forge an IP (Internet Protocol) packet. Because the source address of such a packet can be undetectably forged, a recipient may not be able to ascertain when or if the packet was sent by an imposter.  This means that secure attribution mechanisms for the Internet must be overlaid (bolted-on). KERI provides such a security overlay. We describe it as an identifier system security overlay.</t>
      <section anchor="self-certifying-identifier-scid">
        <name>Self-Certifying IDentifier (SCID)</name>
        <t>The KERI identifier system overlay leverages the properties of cryptonymous <strong><em>self-certifying identifiers</em></strong> (SCIDs) which are based on asymmetric public-key cryptography (PKI) to provide end-verifiable secure attribution of any message or data item without needing to trust in any intermediary <xref target="PKI"/><xref target="KERI"/><xref target="UIT"/><xref target="SCPK"/><xref target="SFS"/><xref target="SCPN"/><xref target="SCURL"/>. A self-certifying identifier (SCID) is uniquely cryptographically derived from the public key of an asymmetric keypair, <tt>(public, private)</tt>. It is self-certifying in the sense that does not rely on a trusted entity. Any non-repudiable signature made with the private key may be verified by extracting the public key from either the identifier itself or incepting information uniquely associated with the cryptographic derivation process for the identifier. In a basic SCID, the mapping between an identifier and its controlling public key is self-contained in the identifier itself. A basic SCID is <em>ephemeral</em> i.e. it does not support rotation of its keypairs in the event of key weakness or compromise and therefore must be abandoned once the controlling private key becomes weakened or compromised from exposure. The class of identifiers that generalize SCIDs with enhanced properties such as persistence is called <em>autonomic identifiers</em> (AIDs).</t>
      </section>
      <section anchor="autonomic-identifier-aid">
        <name>Autonomic IDentifier (AID)</name>
        <t>A Key Event Log (KEL) gives rise to an enhanced class of SCIDs that are persistent, not ephemeral, because their keys may be refreshed or updated via rotation allowing secure control over the identifier in spite of key weakness or even compromise.
This family of generalized enhanced SCIDs we call <strong><em>autonomic identifiers</em></strong> (AIDs). <em>Autonomic</em> means self-governing, self-regulating, or self-managing and is evocative of the self-certifying, self-managing properties of this class of identifier.</t>
      </section>
      <section anchor="key-pre-rotation-concept">
        <name>Key Pre-rotation Concept</name>
        <t>An important innovation of KERI is that it solves the key rotation problem of PKI (including that of simple self-certifying identifiers) via a novel but elegant mechanism we call <strong><em>key pre-rotation</em></strong> <xref target="DAD"/><xref target="KERI"/>. This <em>pre-rotation</em> mechanism enables an entity to persistently maintain or regain control over an identifier in spite of the exposure-related weakening over time or even compromise of the current set of controlling (signing) keypairs. With key pre-rotation, control over the identifier can be re-established by rotating to a one-time use set of unexposed but pre-committed rotation keypairs that then become the current signing keypairs. Each rotation in turn cryptographically commits to a new set of rotation keys but without exposing them. Because the pre-rotated keypairs need never be exposed prior to their one-time use, their attack surface may be optimally minimized. The current key-state is maintained via an append-only <strong><em>verifiable data structure</em></strong> we call a <strong><em>key event log</em></strong> (KEL).</t>
      </section>
      <section anchor="cryptographic-primitives">
        <name>Cryptographic Primitives</name>
        <section anchor="cesr">
          <name>CESR</name>
          <t>A <em>**cryptographic primitive **</em>is a serialization of a value associated with a cryptographic operation including but not limited to a digest (hash), a salt, a seed, a private key, a public key, or a signature. All cryptographic primitives in KERI <bcp14>MUST</bcp14> be expressed using the CESR (Compact Event Streaming Representation) protocol <xref target="CESR-ID"/>.  CESR supports round trip lossless conversion between its text, binary, and raw domain representations and lossless composability between its text and binary domain representations. Composability is ensured between any concatenated group of text primitives and the binary equivalent of that group because all CESR primitives are aligned on 24-bit boundaries. Both the text and binary domain representations are serializations suitable for transmission over the wire. The text domain representation is also suitable to be embedded as a string value of a field or array element as part of a field map serialization such as JSON, CBOR, or MsgPack <xref target="RFC8259"/><xref target="JSOND"/><xref target="RFC8949"/><xref target="CBORC"/><xref target="MGPK"/>. The text domain uses the set of characters from the URL-safe variant of Base64 which in turn is a subset of the ASCII character set <xref target="RFC4648"/><xref target="RFC0020"/>. For the sake of readability, all examples in this specification will be expressed in CESR's text-domain.</t>
        </section>
        <section anchor="qualified-cryptographic-primitive">
          <name>Qualified Cryptographic Primitive</name>
          <t>When <em>qualified</em>, a cryptographic primitive includes a prepended derivation code (as a proem) that indicates the cryptographic algorithm or suite used for that derivation. This simplifies and compactifies the essential information needed to use that cryptographic primitive. All cryptographic primitives expressed in either text or binary CESR are <em>qualified</em> by definition. Qualification is an essential property of CESR <xref target="CESR-ID"/>. The CESR protocol supports several different types of encoding tables for different types of derivation codes. These tables include very compact codes. For example, a 256-bit (32-byte) digest using the BLAKE3 digest algorithm, i.e. Blake3-256, when expressed in text-domain CESR is 44 Base64 characters long and begins with the one character derivation code <tt>E</tt>, such as, <tt>EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug</tt> <xref target="BLAKE3"/><xref target="BLAKE3Spec"/><xref target="BLAKE3Hash"/>. The equivalent <em>qualified</em> binary domain representation is 33 bytes long.
Unless otherwise indicated, all cryptographic primitives in this specification will appear as <em>qualified</em> primitives using text-domain CESR.</t>
        </section>
      </section>
      <section anchor="identifier-system-security-overlay">
        <name>Identifier System Security Overlay</name>
        <t>The function of KERI's identifier-system security overlay is to establish the authenticity (or authorship) of the message payload in an IP Packet by verifiably attributing it to a cryptonymous self-certifying identifier (AID) via an attached set of one or more asymmetric keypair-based non-repudiable digital signatures. The current valid set of associated asymmetric keypair(s) is proven via a verifiable data structure called a <strong><em>key event log</em></strong> (KEL) <xref target="KERI"/><xref target="VDS"/><xref target="ESMT"/><xref target="RT"/>. The identifier system provides a mapping between the identifier and the keypair(s) that control the identifier, namely, the public key(s) from those keypairs. The private key(s) is secret and is not shared.</t>
        <t>An authenticatable (verifiable) internet message (packet) or data item includes the identifier and data in its payload. Attached to the payload is a digital signature(s) made with the private key(s) from the controlling keypair(s). Given the identifier in a message, any verifier of a message (data item) can use the identifier system mapping to look up the public key(s) belonging to the controlling keypair(s). The verifier can then verify the attached signature(s) using that public key(s). Because the payload includes the identifier, the signature makes a non-repudiable cryptographic commitment to both the source identifier and the data in the payload.</t>
        <section anchor="security-overlay-flaws">
          <name>Security Overlay Flaws</name>
          <t>There are two major flaws in conventional PKI-based identifier system security overlays (including the Internet's DNS/CA system) <xref target="PKI"/><xref target="DNS"/><xref target="RFC0799"/><xref target="CAA"/><xref target="CA"/><xref target="RFC5280"/>.</t>
          <t>The *first major flaw** is that the mapping between the identifier (domain name) and the controlling keypair(s) is merely asserted by a trusted entity e.g. certificate authority (CA) via a certificate. Because the mapping is merely asserted, a verifier can not cryptographically verify the mapping between the identifier and the controlling keypair(s) but must trust the operational processes of the trusted entity making that assertion, i.e. the CA who issued and signed the certificate. As is well known, a successful attack upon those operational processes may fool a verifier into trusting an invalid mapping i.e. the certificate is issued to the wrong keypair(s) albeit with a verifiable signature from a valid certificate authority. <xref target="CEDS"/><xref target="KDDH"/><xref target="DNSH"/><xref target="SFTCA"/><xref target="DNSP"/><xref target="BGPC"/><xref target="BBGP"/>. Noteworthy is that the signature on the certificate is NOT made with the controlling keypairs of the identifier but made with keypairs controlled by the issuer i.e. the CA. The fact that the certificate is signed by the CA means that the mapping itself is not verifiable but merely that the CA asserted the mapping between keypair(s) and identifier. The certificate merely provides evidence of the authenticity of the assignment of the mapping but not evidence of the veracity of the mapping.</t>
          <t>The <em>second major flaw</em> is that when rotating the valid signing keys there is no cryptographically verifiable way to link the new (rotated in) controlling/signing key(s) to the prior (rotated out) controlling/signing key(s). Key rotation is merely implicitly asserted by a trusted entity (CA) by issuing a new certificate with new controlling/signing keys.  Key rotation is necessary because over time the controlling keypair(s) of an identifier becomes weak due to exposure when used to sign messages and must be replaced. An explicit rotation mechanism first revokes the old keys and then replaces them with new keys. Even a certificate revocation list (CRL) as per RFC5280, with an online status protocol (OCSP) registration as per RFC6960, does not provide a cryptographically verifiable connection between the old and new keys, it is merely asserted <xref target="RFC5280"/><xref target="RFC6960"/><xref target="OCSPW"/>. The lack of a single universal CRL or registry means that multiple potential replacements may be valid. From a cryptographic verifiability perspective, rotation by assertion with a new certificate that either implicitly or explicitly provides revocation and replacement is essentially the same as starting over by creating a brand new independent mapping between a given identifier and the controlling keypair(s). This start-over style of key rotation may well be one of the main reasons that PGP's web-of-trust failed <xref target="WOT"/>. Without a universally verifiable revocation mechanism, then any rotation (revocation and replacement) assertions either explicit or implicit are mutually independent of each other. This lack of universal cryptographic verifiability of a rotation fosters ambiguity at any point in time as to the actual valid mapping between the identifier and its controlling keypair(s). In other words, for a given identifier, any or all assertions made by some set of CAs may be potentially valid.</t>
          <t>We call the state of the controlling keys for an identifier at any time the key state. Cryptographic verifiability of the key state over time is essential to remove this ambiguity. Without this verifiability, the detection of potential ambiguity requires yet another bolt-on security overlay such as the certificate transparency system <xref target="CTE"/><xref target="CTAOL"/><xref target="RFC6962"/><xref target="RT"/><xref target="VDS"/><xref target="ESMT"/>.</t>
          <t>The KERI protocol fixes both of these flaws using a combination of <strong><em>autonomic identifiers</em></strong>, <strong><em>key pre-rotation</em></strong>, a <strong><em>verifiable data structure</em></strong> (VDS) called a KEL as verifiable proof of key-state, and <strong><em>duplicity-evident</em></strong> mechanisms for evaluating and reconciling key state by validators <xref target="KERI"/>. Unlike certificate transparency, KERI enables the detection of duplicity in the key state via non-repudiable cryptographic proofs of duplicity not merely the detection of inconsistency in the key state that may or may not be duplicitous <xref target="KERI"/><xref target="CTAOL"/>.</t>
        </section>
        <section anchor="triad-bindings">
          <name>Triad Bindings</name>
          <t>In simple form an identifier-system security-overlay binds together a triad consisting of the <strong><em>identifier</em></strong>, <strong><em>keypairs</em></strong>, and <strong><em>controllers</em></strong>. By <strong><em>identifier</em></strong> we mean some string of characters. By <strong><em>keypairs</em></strong> we mean a set of asymmetric (public, private) cryptographic keypairs used to create and verify non-repudiable digital signatures. By <strong><em>controllers</em></strong> we mean the set of entities whose members each control a private key from the given set of <strong><em>keypairs</em></strong>. When those bindings are strong then the overlay is highly <em>invulnerable</em> to attack.  In contrast, when those bindings are weak then the overlay is highly <em>vulnerable</em> to attack. The bindings for a given identifier form a <em>triad</em> that binds together the set of <em>controllers</em>, the set of <em>keypairs</em>, and the <em>identifier</em>. To reiterate, the set of controllers is bound to the set of keypairs, the set of keypairs is bound to the identifier, and the identifier is bound to the set of controllers. This binding triad can be diagrammed as a triangle where the sides are the bindings and the vertices are the <em>identifier</em>, the set of <em>controllers</em>, and the set of <em>keypairs</em>. This triad provides verifiable <strong><em>control authority</em></strong> for the identifier.</t>
          <t>With KERI all the bindings of the triad are strong because they are cryptographically verifiable with a minimum cryptographic strength or level of approximately 128 bits. See the Appendix on cryptographic strength for more detail.</t>
          <t>The bound triad is created as follows:</t>
          <ul spacing="normal">
            <li>Each controller in the set of controllers creates an asymmetric <tt>(pubic, private)</tt> keypair. The public key is derived from the private key or seed using a one-way derivation that <bcp14>MUST</bcp14> have a minimum cryptographic strength of approximately 128 bits <xref target="OWF"/><xref target="COWF"/>. Depending on the crypto-suite used to derive a keypair the private key or seed may itself have a length larger than 128 bits. A controller may use a cryptographic strength pseudo-random number generator (CSPRNG) <xref target="CSPRNG"/> to create the private key or seed material. Because the private key material must be kept secret, typically in a secure data store, the management of those secrets may be an important consideration. One approach to minimize the size of secrets is to create private keys or seeds from a secret salt. The salt <bcp14>MUST</bcp14> have an entropy of approximately 128 bits. The salt may then be stretched to meet the length requirements for the crypto suite's private key size <xref target="Salt"/><xref target="Stretch"/>. In addition, a hierarchical deterministic derivation function may be used to further minimize storage requirements by leveraging a single salt for a set or sequence of private keys <xref target="HDKC"/>. Because each controller is the only entity in control (custody) of the private key, and the public key is universally uniquely derived from the private key using a cryptographic strength one-way function, then the binding between each controller and their keypair is as strong as the ability of the controller to keep that key private <xref target="OWF"/><xref target="COWF"/>. The degree of protection is up to each controller to determine. For example, a controller could choose to store their private key in a safe, at the bottom of a coal mine, air-gapped from any network, with an ex-special forces team of guards. Or the controller could choose to store it in an encrypted data store (key chain) on a secure boot mobile device with a biometric lock, or simply write it on a piece of paper and store it in a safe place. The important point is that the strength of the binding between controller and keypair does not need to be dependent on any trusted entity.</li>
            <li>The identifier is universally uniquely derived from the set of public keys using a one-way derivation function <xref target="OWF"/><xref target="COWF"/>. It is therefore an AID (qualified SCID). Associated with each identifier (AID) is incepting information that <bcp14>MUST</bcp14> include a list of the set of <em>qualified</em> public keys from the controlling keypairs. In the usual case, the identifier is a <em>qualified</em> cryptographic digest of the serialization of all the incepting information for the identifier. Any change to even one bit of the incepting information changes the digest and hence changes the derived identifier. This includes any change to any one of the qualified public keys including its qualifying derivation code. To clarify, a <em>qualified</em> digest as identifier includes a derivation code as proem that indicates the cryptographic algorithm used for the digest. Thus a different digest algorithm results in a different identifier. In this usual case, the identifier is strongly cryptographically bound to not only the public keys but also any other incepting information from which the digest was generated.</li>
          </ul>
          <t>A special case may arise when the set of public keys has only one member, i.e. there is only one controlling keypair. In this case, the controller of the identifier may choose to use only the <em>qualified</em> public key as the identifier instead of a <em>qualified</em> digest of the incepting information. In this case, the identifier is still strongly bound to the public key but is not so strongly bound to any other incepting information.  A variant of this single keypair special case is an identifier that can not be rotated. Another way of describing an identifier that cannot be rotated is that it is a <em>non-transferable</em> identifier because control over the identifier cannot be transferred to a different set of controlling keypairs. Whereas a rotatable keypair is <em>transferable</em> because control may be transferred via rotation to a new set of keypairs. Essentially, when non-transferable, the identifier's lifespan is <em>ephemeral</em>, not <em>persistent</em>, because any weakening or compromise of the controlling keypair means that the identifier must be abandoned. Nonetheless, there are important use cases for an <em>ephemeral</em> self-certifying identifier. In all cases, the derivation code in the identifier indicates the type of identifier, whether it be a digest of the incepting information (multiple or single keypair) or a single member special case derived from only the public key (both ephemeral or persistent).</t>
          <ul spacing="normal">
            <li>Each controller in a set of controllers is may prove its contribution to the control authority over the identifier in either an interactive or non-interactive fashion. One form of interactive proof is to satisfy a challenge of that control. The challenger creates a unique challenge message. The controller responds by non-repudiably signing that challenge with the private key from the keypair under its control. The challenger can then cryptographically verify the signature using the public key from the controller's keypair. One form of non-interactive proof is to periodically contribute to a monotonically increasing sequence of non-repudiably signed updates of some data item. Each update includes a monotonically increasing sequence number or date-time stamp. Any observer can then cryptographically verify the signature using the public key from the controller's keypair and verify that the update was made by the controller.  In general, only members of the set of controllers can create verifiable non-repudiable signatures using their keypairs. Consequently, the identifier is strongly bound to the set of controllers via provable control over the keypairs.</li>
          </ul>
          <t>*** Tetrad Bindings</t>
          <t>At inception, the triad of identifier, keypairs, and controllers are strongly bound together. But in order for those bindings to persist after a key rotation, another mechanism is required. That mechanism is a verifiable data structure called a <em>key event log</em> (KEL) <xref target="KERI"/><xref target="VDS"/>.  The KEL is not necessary for identifiers that are non-transferable and do not need to persist control via key rotation in spite of key weakness or compromise. To reiterate, transferable (persistent) identifiers each need a KEL, non-transferable (ephemeral) identifiers do not.</t>
          <t>For persistent (transferable) identifiers, this additional mechanism may be bound to the triad to form a tetrad consisting of the KEL, the identifier, the set of keypairs, and the set of controllers. The first entry in the KEL is called the <em>inception event</em> which is a serialization of the incepting information associated with the identifier mentioned previously.</t>
          <t>The <em>inception event</em> <bcp14>MUST</bcp14> include the list of controlling public keys. It <bcp14>MUST</bcp14> also include a signature threshold and <bcp14>MUST</bcp14> be signed by a set of private keys from the controlling keypairs that satisfy that threshold. Additionally, for transferability (persistence across rotation) the <em>inception event</em> <bcp14>MUST</bcp14> also include a list of digests of the set of pre-rotated public keys and a pre-rotated signature threshold that will become the controlling (signing) set of keypairs and threshold after a rotation.  A non-transferable identifier <bcp14>MAY</bcp14> have a trivial KEL that only includes an <em>inception event</em> but with a null set (empty list) of pre-rotated public keys.</t>
          <t>A rotation is performed by appending to the KEL a <em>rotation event</em>. A <em>rotation event</em> <bcp14>MUST</bcp14> include a list of the set of pre-rotated public keys (not their digests) thereby exposing them and <bcp14>MUST</bcp14> be signed by a set of private keys from these newly exposed newly controlling but pre-rotated keypairs that satisfy the pre-rotated threshold. The rotation event <bcp14>MUST</bcp14> also include a list of the digests of a new set of pre-rotated keys as well as the signature threshold for the set of pre-rotated keypairs. At any point in time the transferability of an identifier can be removed via a <em>rotation event</em> that rotates to a null set (empty list) of pre-rotated public keys.</t>
          <t>Each event in a KEL <bcp14>MUST</bcp14> include an integer sequence number that is one greater than the previous event. Each event after the inception event <bcp14>MUST</bcp14> also include a cryptographic digest of the previous event. This digest means that a given event is cryptographically bound to the previous event in the sequence. The list of digests or pre-rotated keys in the inception event cryptographically binds the inception event to a subsequent rotation event. Essentially making a forward commitment that forward chains together the events. The only valid rotation event that may follow the inception event must include the pre-rotated keys. But only the controller who created those keys and created the digests may verifiably expose them. Each rotation event in turn makes a forward commitment (chain) to the following rotation event via its list of pre-rotated key digests.   This makes the KEL a doubly (backward and forward) hash (digest) chained non-repudiably signed append-only verifiable data structure.</t>
          <t>Because the signatures on each event are non-repudiable, the existence of an alternate but verifiable KEL for an identifier is provable evidence of duplicity. In KERI, there may be at most one valid KEL for any identifier or none at all. Any validator of a KEL may enforce this one valid KEL rule before relying on the KEL as proof of the current key state for the identifier. This protects the validator. Any unreconcilable evidence of duplicity means the validator does not trust (rely on) any KEL to provide the key state for the identifier. Rules for handling reconciliable duplicity will be discussed later.  From a validator's perspective, either there is one-and-only-one valid KEL or none at all. This protects the validator. This policy removes any potential ambiguity about key state.  The combination of a verifiable KEL made from non-repudiably signed backward and forward hash chained events together with the only-one-valid KEL rule strongly binds the identifier to its current key-state as given by that one valid KEL or not at all. This in turn binds the identifier to the controllers of the current keypairs given by the KEL thus completing the tetrad.</t>
          <t>At inception, the KEL may be even more strongly bound to its tetrad by deriving the identifier from a digest of the <em>inception event</em>. Thereby even one change in not only the original controlling keys pairs but also the pre-rotated keypairs or any other incepting information included in the <em>inception event</em> will result in a different identifier.</t>
          <t>The essense of the KERI protocol is a strongly bound tetrad of identifier, keypairs, controllers, and key event log that forms the basis of its identifier system security overlay. The KERI protocol introduces the concept of duplicity evident programming via duplicity evident verifiable data structures. The full detailed exposition of the protocol is provided in the following sections.</t>
        </section>
      </section>
    </section>
    <section anchor="basic-terminology">
      <name>Basic Terminology</name>
      <t>Several new terms were introduced above. These along with other terms helpful to describing KERI are defined below.</t>
      <dl>
        <dt>Primitive</dt>
        <dd>
          <t>A serialization of a unitary value. A <em>cryptographic primitive</em> is the serialization of a value associated with a cryptographic operation including but not limited to a digest (hash), a salt, a seed, a private key, a public key, or a signature. All <em>primitives</em> in KERI <bcp14>MUST</bcp14> be expressed in CESR (Compact Event Streaming Representation) <xref target="CESR-ID"/>.</t>
        </dd>
        <dt>Qualified</dt>
        <dd>
          <t>When <em>qualified</em>, a <em>cryptographic primitive</em> includes a prepended derivation code (as a proem) that indicates the cryptographic algorithm or suite used for that derivation. This simplifies and compactifies the essential information needed to use that <em>cryptographic primitive</em>. All <em>cryptographic primitives</em> expressed in either text or binary CESR are <em>qualified</em> by definition <xref target="CESR-ID"/>. Qualification is an essential property of CESR <xref target="CESR-ID"/>.</t>
        </dd>
        <dt>Cryptonym</dt>
        <dd>
          <t>A cryptographic pseudonymous identifier represented by a string of characters derived from a random or pseudo-random secret seed or salt via a one-way cryptogrphic function with a sufficiently high degree of cryptographic strength (e.g. 128 bits, see appendix on cryptographic strength) <xref target="OWF"/><xref target="COWF"/><xref target="TMCrypto"/><xref target="QCHC"/>. A <em>cryptonym</em> is a type of <em>primitive</em>. Due the enctropy in its derivation, a <em>cryptonym</em> is a universally unique identifier and only the controller of the secret salt or seed from which the <em>cryptonym</em> is derived may prove control over the <em>cryptonym</em>. Therefore the derivation function <bcp14>MUST</bcp14> be associated with the <em>cryptonym</em> and <bcp14>MAY</bcp14> be encoded as part of the <em>cryptonym</em> itself.</t>
        </dd>
        <dt>SCID</dt>
        <dd>
          <t>Self-Certifying IDentifier.  A self-certifying identifier (SCID) is a type of cryptonym that is uniquely cryptographically derived from the public key of an asymmetric non-repudiable signing keypair, <tt>(public, private)</tt>. It is self-certifying or more precisely self-authenticating because it does not rely on a trusted entity. The authenticity of a non-repudiable signature made with the private key may be verified by extracting the public key from either the identifier itself or incepting information uniquely associated with the cryptographic derivation process for the identifier. In a basic SCID, the mapping between an identifier and its controlling public key is self-contained in the identifier itself. A basic SCID is <em>ephemeral</em> i.e. it does not support rotation of its keypairs in the event of key weakness or compromise and therefore must be abandoned once the controlling private key becomes weakened or compromised from exposure <xref target="PKI"/><xref target="KERI"/><xref target="UIT"/><xref target="SCPK"/><xref target="SFS"/><xref target="SCPN"/><xref target="SCURL"/><xref target="PKI"/>.</t>
        </dd>
        <dt>AID</dt>
        <dd>
          <t>Autonomic IDentifier. A self-managing <em>cryptonymous</em> identifier that <bcp14>MUST</bcp14> be self-certifying (self-authenticating) and <bcp14>MUST</bcp14> be encoded in CESR as a <em>qualified</em> cryptographic primitive. An AID <bcp14>MAY</bcp14> exhibit other self-managing properties such as transferable control using key <em>pre-rotation</em> which enables control over such an AID to persist in spite of key weakness or compromise due to exposure. Authoritative control over the identifier persists in spite of the evolution of the key-state.</t>
        </dd>
        <dt>Key State</dt>
        <dd>
          <t>Includes the set of currently authoritative keypairs for an AID and any other information necessary to secure or establish control authority over an AID.</t>
        </dd>
        <dt>Key Event</dt>
        <dd>
          <t>Concretely, the serialized data structure of an entry in the key event log for an AID. Abstractly, the data structure itself. Key events come in different types and are used primarily to establish or change the authoritative set of keypairs and/or anchor other data to the authoritative set of keypairs at the point in the key event log actualized by a particular entry.</t>
        </dd>
        <dt>Establishment Event</dt>
        <dd>
          <t>Key Event that establishes or changes the key-state which includes the current set of authoritative keypairs (key-state) for an AID.</t>
        </dd>
        <dt>Non-establishment Event</dt>
        <dd>
          <t>Key Event that does not change the current key-state for an AID. Typically the purpose of a non-establishment event is to anchor external data to a given key state as established by the most recent prior establishment event for an AID.</t>
        </dd>
        <dt>Inception Event</dt>
        <dd>
          <t>Establishment Event that provides the incepting information needed to derive an AID and establish its initial key-state.</t>
        </dd>
        <dt>Inception</dt>
        <dd>
          <t>The operation of creating an AID by binding it to the initial set of authoritative keypairs and any other associated information. This operation is made verifiable and duplicity evident upon acceptance as the <em>inception event</em> that begins the AID's KEL.</t>
        </dd>
        <dt>Rotation Event</dt>
        <dd>
          <t>Establishment Event that provides the information needed to change the key-state which includes a change to the set of authoritative keypairs for an AID.</t>
        </dd>
        <dt>Rotation</dt>
        <dd>
          <t>The operation of revoking and replacing the set of authoritative keypairs for an AID. This operation is made verifiable and duplicity evident upon acceptance as a <em>rotation event</em> that is appended to the AID's KEL.</t>
        </dd>
        <dt>Interaction Event</dt>
        <dd>
          <t>Non-establishment Event that anchors external data to the key-state as established by the most recent prior establishment event.</t>
        </dd>
        <dt>KEL</dt>
        <dd>
          <t>Key Event Log. A verifiable data structure that is a backward and forward chained, signed, append-only log of key events for an AID. The first entry in a KEL <bcp14>MUST</bcp14> be the one and only Inception Event of that AID.</t>
        </dd>
        <dt>Version</dt>
        <dd>
          <t>More than one version of a KEL for an AID exists when for any two instances of a KEL at least one event is unique between the two instances.</t>
        </dd>
        <dt>Verifiable</dt>
        <dd>
          <t>A KEL is verifiable means all content in a KEL including the digests and the signatures on that content is verifiably compliant with respect to the KERI protocol. In other words, the KEL is internally consistent and has integrity vis-a-vis its backward and forward chaining digests and authenticity vis-a-vis its non-repudiable signatures. As a verifiable data structure, the KEL satisfies the KERI protocol-defined rules for that verifiability. This includes the cryptographic verification of any digests or signatures on the contents so digested or signed.</t>
        </dd>
        <dt>Duplicity</dt>
        <dd>
          <t>Means the existence of more than one version of a verifiable KEL for a given AID. Because every event in a KEL must be signed with non-repudiable signatures any inconsistency between any two instances of the KEL for a given AID is provable evidence of duplicity on the part of the signers with respect to either or both the key-state of that AID and/or any anchored data at a given key-state.  A shorter KEL that does not differ in any of its events with respect to another but longer KEL is not duplicitous but merely incomplete.  To clarify, duplicity evident means that duplicity is provable via the presentation of a set of two or more mutually inconsistent but independently verifiable instances of a KEL.</t>
        </dd>
        <dt>Verifier</dt>
        <dd>
          <t>Any entity or agent that cryptographically verifies the signature(s) and/or digests on an event message. In order to verify a signature, a verifier must first determine which set of keys are or were the controlling set for an identifier when an event was issued. In other words, a verifier must first establish control authority for an identifier. For identifiers that are declared as non-transferable at inception, this control establishment merely requires a copy of the inception event for the identifier. For identifiers that are declared transferable at inception, this control establishment requires a complete copy of the sequence of establishment events (inception and all rotations) for the identifier up to the time at which the statement was issued.</t>
        </dd>
        <dt>Validator</dt>
        <dd>
          <t>Any entity or agent that evaluates whether or not a given signed statement as attributed to an identifier is valid at the time of its issuance.  A valid statement <bcp14>MUST</bcp14> be verifiable, that is, has a verifiable signature from the current controlling keypair(s) at the time of its issuance. Therefore a <em>Validator</em> must first act as a <em>Verifier</em> in order to establish the root authoritative set of keys. Once verified, the <em>Validator</em> may apply other criteria or constraints to the statement in order to determine its validity for a given use case. When that statement is part of a verifiable data structure then the cryptographic verification includes verifying digests and any other structural commitments or constraints.  To elaborate, with respect to an AID, for example, a <em>Validator</em> first evaluates one or more KELs in order to determine if it can rely on (trust) the key state (control authority) provided by any given KEL. A necessary but insufficient condition for a valid KEL is it is verifiable i.e. is internally inconsistent with respect to compliance with the KERI protocol. An invalid KEL from the perspective of a Validator may be either unverifiable or may be verifiable but duplicitous with respect to some other verifiable version of that KEL.  Detected duplicity by a given validator means that the validator has seen more than one verifiable version of a KEL for a given AID. Reconciliable duplicity means that one and only one version of a KEL as seen by a Validator is accepted as the authoritative version for that validator. Irreconcilable duplicity means that none of the versions of a KEL as seen by a validator are accepted as the authoritative one for that validator. The conditions for reconcilable duplicity are described later.</t>
        </dd>
        <dt>Message</dt>
        <dd>
          <t>Consists of a serialized data structure that comprises its body and a set of serialized data structures that are its attachments. Attachments may include but are not limited to signatures on the body.</t>
        </dd>
        <dt>Key Event Message</dt>
        <dd>
          <t>Message whose body is a key event and whose attachments may include signatures on its body.</t>
        </dd>
        <dt>Key Event Receipt</dt>
        <dd>
          <t>Message whose body references a key event and whose attachments <bcp14>MUST</bcp14> include one or more signatures on that key event.</t>
        </dd>
      </dl>
    </section>
    <section anchor="keypair-labeling-convention">
      <name>Keypair Labeling Convention</name>
      <t>In order to make key event expressions both clearer and more concise, we use a keypair labeling convention. When an AID's key state is dynamic, i.e. the set of controlling keypairs is transferable, then the keypair labels are indexed in order to represent the successive sets of keypairs that constitute the key state at any position in the KEL (key event log). To elaborate, we use indexes on the labels for AIDs that are transferable to indicate which set of keypairs is associated with the AID at any given point in its key state or KEL. In contrast, when the key state is static, i.e. the set of controlling keypairs is non-transferable then no indexes are needed because the key state never changes.</t>
      <t>Recall that, a keypair is a two tuple, <em>(public, private)</em>, of the respective public and private keys in the keypair. For a given AID, the labeling convention uses an uppercase letter label to represent that AID. When the key state is dynamic, a superscripted index on that letter is used to indicate which keypair is used at a given key state. Alternatively, the index may be omitted when the context defines which keypair and which key state, such as, for example, the latest or current key state. To reiterate, when the key state is static no index is needed.</t>
      <t>In general, without loss of specificity, we use an uppercase letter label to represent both an AID and when indexed to represent its keypair or keypairs that are authoritative at a given key state for that AID. In addition, when expressed in tuple form the uppercase letter also represents the public key and the lowercase letter represents the private key for a given keypair. For example, let <em>A</em> denote and AID, then let* A* also denote a keypair which may be also expressed in tuple form as <em>(A, a)</em>. Therefore, when referring to the keypair itself as a pair and not the individual members of the pair, either the uppercase label, <em>A</em>, or the tuple, <em>(A, a)</em>, may be used to refer to the keypair itself. When referring to the individual members of the keypair then the uppercase letter, <em>A</em>, refers to the public key, and the lowercase letter, <em>a</em>, refers to the private key.</t>
      <t>Let the sequence of keypairs that are authoritative (i.e establish control authority) for an AID be indexed by the zero-based integer-valued, strictly increasing by one, variable <em>i</em>. Furthermore, as described above, an establishment key event may change the key state. Let the sequence of establishment events be indexed by the zero-based integer-valued, strictly increasing by one, variable <em>j</em>. When the set of controlling keypairs that are authoritative for a given key state includes only one member, then <em>i = j</em> for every keypair, and only one index is needed. But when the set of keypairs used at any time for a given key state includes more than one member, then <em>i != j</em> for every keypair, and both indices are needed.</t>
      <t>In the former case, where only one index is needed because <em>i = j</em>, let the indexed keypair for AID, <em>A</em>, be denoted by <em>A<sup>i</sup></em> or in tuple form by <em>(A<sup>i</sup>, a<sup>i</sup>)</em> where the keypair so indexed uses the <em>i<sup>th</sup></em> keypair from the sequence of all keypairs.  The keypair sequence may be expressed as the list, <em>[A<sup>0</sup>, A<sup>1</sup>, A<sup>2</sup>, ...]</em>. The zero element in this sequence is denoted by <em>A<sup>0</sup></em> or in tuple form by <em>(A<sup>0</sup>, a<sup>0</sup>)</em>.</t>
      <t>In the latter case, where both indices are needed because <em>i != j</em>, let the indexed keypair for AID, <em>A</em>, be denoted by <em>A<sup>i,j</sup></em> or in tuple form by <em>(A<sup>i,j</sup>, a<sup>i,j</sup>)</em> where the keypair so indexed is authoritative or potentially authoritative for <em>i<sup>th</sup></em> keypair from the sequence of all keypairs that is authoritative in the the <em>j<sup>th</sup></em> key state. Suppose, for example, that for a given AID labeled <em>A</em> each key state uses three keypairs to establish control authority, then the sequence of the first two key states will consume the first six keypairs as given by the following list, <em>[A<sup>0,0</sup>, A<sup>1,0</sup>, A<sup>2,0</sup>, A<sup>3,1</sup>,  A<sup>4,1</sup>,  A<sup>5,1</sup>]</em>.</t>
      <t>Furthermore, with pre-rotation, each public key from the set of pre-rotated keypairs may be hidden as a qualified cryptographic digest of that public key. The digest of the public key labeled <em>A</em> is represented using the functional notation <em>H(A)</em> for hash (digest). When singly indexed, the digest of <em>A<sup>i</sup></em> is denoted by <em>H(A&lt;/u&gt;<sup>i</sup>)</em> and when doubly indexed the digest of <em>A<sup>i,j</sup></em> is denoted by <em>H(A<sup>i,j</sup>}</em>. A pre-rotated keypair is potentially authoritative for the next or subsequent establishment event after the establishment event when the digest of the pre-rotated keypair first appears. Therefore its <em>j<sup>th</sup></em> index value is one greater than the <em>j<sup>th</sup></em> index value of the establishment event in which its digest first appears. As explained in more detail below, for partial rotation of a pre-rotated set, a pre-rotated keypair from a set of two or more pre-rotated keypairs is only potentially authoritative so that its actual authoritative <em>j<sup>th</sup></em> index may change when it is actually rotated in if ever.</t>
      <t>Finally, each key event in a KEL <bcp14>MUST</bcp14> have a zero-based integer-valued, strictly increasing by one, sequence number. Abstractly we may use the variable <em>k</em> as an index on any keypair label to denote the sequence number of an event for which that keypair is authoritative. Usually, this appears as a subscript.  Thus any given keypair label could have three indices, namely, <em>i,j,k</em> that appear as follows, <em>A<sup>i,j</sup><sub>k</sub></em> where <em>i</em> denotes the <em>i<sup>th</sup></em> keypair from the sequence of all keypairs, <em>j</em> denotes the <em>j<sup>th</sup> establishment event in which the keypair is authoritative, and *k</em> represents the <em>k<sup>th</sup></em> key event in which the keypair is authoritative. When a KEL has only establishment events then <em>j = k</em>.</t>
    </section>
    <section anchor="pre-rotation-detail">
      <name>Pre-rotation Detail</name>
      <t>Each establishment event involves two sets of keys that each play a role that together establishes complete control authority over the AID associated at the location of that event in the KEL. To clarify, control authority is split between keypairs that hold signing authority and keypairs that hold rotation authority. A rotation revodes and replaces the keypairs that hold signing authority as well as replacing the keypairs that hold rotation authority. The two set sets of keys are labeled <em>current</em> and <em>next</em>. Each establishment event designates both sets of keypairs. The first (<em>current</em>) set consists of the authoritative signing keypairs bound to the AID at the location in the KEL where the establishment event occurs. The second (<em>next</em>) set consists of the pre-rotated authoritative rotation keypairs that will be actualized in the next (ensuing) establishment event. Each public key in the set of next (ensuing) pre-rotated public keys is hidden in or blinded by a digest of that key. When the establishment event is the inception event then the <em>current</em> set is the <em>initial</em> set. The pre-rotated <em>next</em> set of Rotation keypairs are one-time use only rotation keypairs, but <bcp14>MAY</bcp14> be repurposed as signing keypairs after their one time use to rotate.</t>
      <t>In addition, each establishment event designates two threshold expressions, one for each set of keypairs (<em>current</em> and <em>next</em>). The <em>current</em> threshold determines the needed satisficing subset of signatures from the associated <em>current</em> set of keypairs for signing authority to be considered valid. The <em>next</em> threshold determines the needed satisficing subset of signatures from the associated <em>next</em> set of hidden keypairs for rotation authority to be considered valid. The simplest type of threshold expression for either threshold is an integer that is no greater than nor no less than the number of members in the set. An integer threshold acts as an <em>M of N</em> threshold where <em>M</em> is the threshold and <em>N</em> is the total number of keypairs represented by the public keys in the key list. If any set of <em>M</em> of the <em>N</em> private keys belonging to the public keys in the key list verifiably signs the event then the threshold is satisfied for the control authority role (signing or rotation) associated with the given key list and threshold .</t>
      <t>To clarify, each establishment event <bcp14>MUST</bcp14> include a list (ordered) of the qualified public keys from each of the current (initial) set of keypairs), a threshold for the current set, a list (ordered) of the qualified cryptographic digests of the qualified public keys from the next set of keypairs, and a threshold for the next set. Each event <bcp14>MUST</bcp14> also include the AID itself as either a qualified public key or a qualified digest of the inception establishment event.</t>
      <t>Each non-establishment event <bcp14>MUST</bcp14> be signed by a threshold-satisficing subset of private keys from the <em>current</em> set of keypairs from the most recent establishment event. A little more explanation is needed to understand the requirements for a valid set of signatures for each type of establishment event.</t>
      <section anchor="inception-event-pre-rotation">
        <name>Inception Event Pre-rotation</name>
        <t>The creator of the inception event <bcp14>MUST</bcp14> create two sets of keypairs, the <em>current</em> (<em>initial</em>) set, and the <em>next</em> set. The private keys from the current set are kept as secrets. The public keys from the <em>current</em> set are exposed via inclusion in the inception event. Both the public and private keys from the <em>next</em> set are kept as secrets and only the cryptographic digests of the public keys from the <em>next</em> set are exposed via inclusion in the event. The public keys from the <em>next</em> set are only exposed in a subsequent establishment if any.  Both thresholds are exposed via inclusion in the event.</t>
        <t>Upon emittance of the inception event, the <em>current</em> (<em>initial</em>) set of keypairs becomes the current set of verifiable authoritative signing keypairs for the identifier. Emittance of the inception event also issues the identifier. Moreover, to be verifiably authoritative, the inception event must be signed by a threshold satisficing subset of the <em>current</em> (<em>initial</em>) set of private keys. The inception event may be verified against the attached signatures using the included <em>current</em> (<em>initial</em>) list of public keys. When self-addressing, a digest of the serialization of the inception event provides the AID itself as derived by the SAID protocol <xref target="SAID-ID"/>.</t>
        <t>There <bcp14>MUST</bcp14> be only one inception establishment event. All subsequent establishment events <bcp14>MUST</bcp14> be rotation events.</t>
      </section>
      <section anchor="rotation-using-pre-rotation">
        <name>Rotation Using Pre-rotation</name>
        <t>Unlike inception, the creator of a rotation event <bcp14>MUST</bcp14> create only one set of keypairs, the newly <em>next</em> set. Both the public and private keys from the newly <em>next</em> set are kept as secrets and only the cryptographic digests of the public keys from the newly <em>next</em> set are exposed via inclusion in the event. The list of newly <em>current</em> public keys <bcp14>MUST</bcp14> include the  an old  <em>next</em> threshold satisficing subset of old <em>next</em> public keys from the most recent prior establishment event.  For short, we denote the next threshold from the most recent prior establishment event as the <em>prior next</em> threshold, and the list of unblinded public keys taken from the blinded key digest list from the most recent prior establishment event as the <em>prior next</em> key list. The subset of old <em>prior next</em> keys that are included in the newly current set of public keys <bcp14>MUST</bcp14> be unhidden or unblinded because they appear as the public keys themselves and no longer appear as digests of the public keys. Both thresholds are exposed via inclusion in the event.</t>
        <t>Upon emittance of the rotation event, the newly <em>current</em> keypairs become the <em>current</em> set of verifiable authoritative signing keypairs for the identifier. The old <em>current</em> set of keypairs from the previous establishment event has been revoked and replaced by the newly <em>current</em> set. Moreover, to be verifiably authoritative, the rotation event must be signed by a dual threshold satisficing subset of the newly <em>current</em> set of private keys. To elaborate, the set of signatures on a rotation event <bcp14>MUST</bcp14> satisfy two thresholds. These are the newly <em>current</em> threshold and the old  <em>prior next</em> threshold from the most recent prior establishment event. Therefore the newly <em>current</em> set of public keys must include a satisfiable subset with respect to the old <em>prior next</em> threshold of public keys from the old <em>prior next</em> key list. The included newly <em>current</em> list of public keys enables verification of the rotation event against the attached signatures.</t>
        <t>The act of inclusion in each establishment event of the digests of the new <em>next</em> set of public keys performs a pre-rotation operation on that set by making a verifiable forward blinded commitment to that set. Consequently, no other set may be used to satisfy the threshold for the <em>next</em> rotation operation. Because the <em>next</em> set of pre-rotated keys is blinded (i.e. has not been exposed i.e. used to sign or even published) an attacker can't forge and sign a verifiable rotation operation without first unblinding the pre-rotated keys. Therefore, given sufficient cryptographic strength of the digests, the only attack surface available to the adversary is a side-channel attack on the private key store itself and not on signing infrastructure. But the creator of the pre-rotated private keys is free to make that key store as arbitrarily secure as needed because the pre-rotated keys are not used for signing until the next rotation.  In other words, as long as the creator keeps secret the pre-rotated public keys themselves, an attacker must attack the key storage infrastructure because side-channel attacks on signing infrastructure are obviated.</t>
        <t>As explained later, for a validator, the first seen rule applies, that is, the first seen version of an event is the authoritative one for that validator. The first seen wins. In other words the first published becomes the first seen. Upon rotation, the old prior <em>next</em> keys are exposed but only after a new <em>next</em> set has been created and stored. Thus the creator is always able to stay one step ahead of an attacker. By the time a new rotation event is published, it is too late for an attacker to create a verifiable rotation event to supplant it because the orginal version has already been published and may be first seen by the validator. The window for an attacker is the network latency for the first published event to be first seen by the network of validators. Any later key compromise is too late.</t>
        <t>In essence, each key set follows a rotation lifecycle where it changes its role with each rotation event. A pre-rotated keypair set starts as the member of the <em>next</em> key set holding one-time rotation control authority. On the ensuing rotation that keypair becomes part of the the <em>current</em> key set holding signing control authority. Finally on the following rotation that keypair is discarded. The lifecycle for the initial key set in an inception event is slightly different. The initial key set starts as the <em>current</em> set holding signing authority and is discarded on the ensuing rotation event if any.</t>
      </section>
      <section anchor="pre-rotation-example">
        <name>Pre-Rotation Example</name>
        <t>Recall that the keypairs for a given AID may be represented by the indexed letter label such as <em>A<sup>i,j</sup><sub>k</sub></em> where <em>i</em> denotes the <em>i<sup>th</sup></em> keypair from the sequence of all keypairs, <em>j</em> denotes the <em>j<sup>th</sup> establishment event in which the keypair is authoritative, and *k</em> represents the <em>k<sup>th</sup></em> key event in which the keypair is authoritative. When a KEL has only establishment events then <em>j = k</em>. When only one keypair is authoritative at any given key state then <em>i = j</em>.</t>
        <t>Also, recall that a pre-rotated keypair is designated by the digest of its public key appearing in an establishment event. The digest is denoted as <em>H(A)</em> or <em>H(A<sup>i,j</sup><sub>k</sub>)</em> in indexed form. The appearance of the digest makes a forward verifiable cryptographic commitment that may be realized in the future when and if that public key is exposed and listed as a current authoritative signing key in a subsequent establishment event.</t>
        <t>The following example illustrates the lifecycle roles of the key sets drawn from a sequence of keys used for three establishment events; one inception followed by two rotations. The initial number of authoritative keypairs is three and then changes to two and then changes back to three.</t>
        <table>
          <thead>
            <tr>
              <th align="center">Event</th>
              <th align="right">Current Keypairs</th>
              <th align="right">CT</th>
              <th align="right">Next Keypairs</th>
              <th align="right">NT</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0</td>
              <td align="right">
                <em>[A<sup>0,0</sup>, A<sup>1,0</sup>, A<sup>2,0</sup>]</em></td>
              <td align="right">2</td>
              <td align="right">
                <em>[H(A<sup>3,1</sup>), H(A<sup>4,1</sup>)]</em></td>
              <td align="right">1</td>
            </tr>
            <tr>
              <td align="center">1</td>
              <td align="right">
                <em>[A<sup>3,1</sup>, A<sup>4,1</sup>]</em></td>
              <td align="right">1</td>
              <td align="right">
                <em>[H(A<sup>5,2</sup>), H(A<sup>6,2</sup>), H(A<sup>7,2</sup>)]</em></td>
              <td align="right">2</td>
            </tr>
            <tr>
              <td align="center">2</td>
              <td align="right">
                <em>[A<sup>5,2</sup>, A<sup>6,2</sup>, A<sup>7,2</sup>]</em></td>
              <td align="right">2</td>
              <td align="right">
                <em>[H(A<sup>8,3</sup>), H(A<sup>9,3</sup>), H(A<sup>10,3</sup>]</em></td>
              <td align="right">2</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <em>CTH</em> means Current Threshold.</li>
          <li>
            <em>NTH</em> means Next Threshold.</li>
        </ul>
      </section>
      <section anchor="reserve-rotation">
        <name>Reserve Rotation</name>
        <t>The pre-rotation mechanism supports partial pre-rotation or more exactly partial rotation of pre-rotated keypairs. One important use case for partial rotation is to enable pre-rotated keypairs designated in one establishment event to be held in reserve and not exposed at the next (immediately subsequent) establishment event. This reserve feature enables keypairs held by controllers as members of a set of pre-rotated keypairs to be used for the purpose of fault tolerance in the case of non-availability by other controllers while at the same time minimizing the burden of participation by the reserve members. In other words, a reserved pre-rotated keypair contributes to the potential availability and fault tolerance of control authority over the AID without necessarily requiring the participation of the reserve key-pair in a rotation until and unless it is needed to provide continuity of control authority in the event of a fault (non-availability of a non-reserved member). This reserve feature enables different classes of key controllers to contribute to the control authority over an AID. This enables provisional key control authority. For example, a key custodial service or key escrow service could hold a keypair in reserve to be used only upon satisfaction of the terms of the escrow agreement. This could be used to provide continuity of service in the case of some failure event. Provisional control authority may be used to prevent types of common-mode failures without burdening the provisional participants in the normal non-failure use cases.</t>
      </section>
      <section anchor="custorial-rotation">
        <name>Custorial Rotation</name>
        <t>Partial pre-rotation supports another important use case that of custodial key rotation. Because control authority is split between two key sets, the first for signing authority and the second (pre-roateted) for rotation authority the associated thresholds and key list can be structured in such a way that a designated custodial agent can hold signing authority while the  original controller can hold exclusive rotation authority. The holder of the rotation authority can then at any time without the cooperation of the custodial agent if need be revoke the agent's signing authority and assign it so some other agent or return that authority to itself.</t>
      </section>
      <section anchor="basic-fractionally-weighted-threshold">
        <name>Basic Fractionally Weighted Threshold</name>
        <t>This partial rotation feature for either reserve or custodial rotation authority is best employed with thresholds that are fractionally weighted. The exact syntax for fractionally weighted thresholds is provided later, but for the sake of explanation of partial pre-rotation, a summary is provided here. A fractionally weighted threshold consists of a list of one or more clauses where each clause is itself a list of legal rational fractions ( i.e. ratios of non-negative integers expressed as fractions, zero is not allowed in the denominator). Each entry in each clause in the fractional weight list corresponds one-to-one to a public key appearing in a key list in an establishment event. Key lists order a key set. A weight list of clauses orders a set of rational fraction weights. Satisfaction of a fractionally weighted threshold requires satisfaction of each and every clause in the list. In other words, the clauses are logically ANDed together. Satisfaction of any clause requires that the sum of the weights in that clause that correspond to verified signatures on that event must sum to at least one. Using rational fractions and rational fraction summation avoids the problem of floating-point rounding errors and ensures exactness and universality of threshold satisfaction computations.</t>
        <t>For example, consider the following simple single clause fractionally weighted threshold, <em>[1/2, 1/2, 1/2]</em>. Three weights mean there <bcp14>MUST</bcp14> be exactly three corresponding key pairs. Let the three keypairs in one-to-one order be denoted by the list of indexed public keys, <em>[A<sup>0</sup>, A<sup>1</sup>, A<sup>2</sup>]. The threshold is satisfied if any two of the public keys sign because *1/2 + 1/2 = 1</em>. This is exactly equivalent to an integer-valued <em>2 of 3</em> threshold.</t>
        <t>The order of appearance of the public key in a given key list and its associated threshold weight list <bcp14>MUST</bcp14> be the same.</t>
        <t>Fractionally weighted thresholds become more interesting when the weights are not all equal or include multiple clauses. Consider the following five-element single clause fractionally weighted threshold list, <em>[1/2, 1/2, 1/2, 1/4, 1/4]</em> and its corresponding public key list, *[A<sup>0</sup>, A<sup>1</sup>, A<sup>2</sup>, A<sup>3</sup>, A<sup>4</sup>].  Satisfaction would be met given signatures from any two or more of A<sup>0</sup>, A<sup>1</sup>, or A<sup>2</sup> because each of these keys has a weight of 1/2 and the combination of any two or more sums to 1 or more. Alternatively, satisfaction would be met with signatures from any one or more of A<sup>0</sup>, A<sup>1</sup>, or A<sup>2</sup> and both of A<sup>3</sup>, and A<sup>4</sup> because any of those combinations would sum to 1 or more. Because participation of A<sup>3</sup> and A<sup>4</sup> is not required as long as at least two of A<sup>0</sup>, A<sup>1</sup>, and A<sup>2</sup> are available then A<sup>3</sup> and A<sup>4</sup> may be treated as reserve members of the controlling set of keys. These reserve members only need to participate in the unfortunate event that only one of the other three is available. The flexibility of a fractionally weighted threshold enables redundancy in the combinations of keys needed to satisfice for both day-to-day and reserve contingency use cases.</t>
        <section anchor="partial-pre-rotation-detail">
          <name>Partial Pre-rotation Detail</name>
          <t>Defined herein is a detailed description of the pre-rotation protocol. This protocol includes support for <em>partial pre-rotation</em> i.e. a rotation operation on a set of pre-rotated keys that may keep some keys in reserve (i.e unexposed) while exposing others as needed.</t>
          <t>As described above, a valid <strong><em>rotation</em></strong> operation requires the satisfaction of two different thresholds. These are the <em>current</em> threshold of the given rotation (establishment) event with respect to its associated <em>current</em> public key list and the next threshold from the given rotation event's most recent prior establishment event with respect to its associated blinded next key digest list. For short, we denote the next threshold from the most recent prior establishment event as the <em>prior next</em> threshold, and the list of unblinded public keys taken from the blinded key digest list from the most recent prior establishment event as the <em>prior next</em> key list. Explication of the elements of the <em>prior next</em> key list requires exposing or unblinding the underlying public keys committed to by their corresponding digests that appear in the next key digest list of the most recent prior establishment event. The unexposed (blinded) public keys <bcp14>MAY</bcp14> be held in reserve.</t>
          <t>More precisely, any rotation event's <em>current</em> public key list <bcp14>MUST</bcp14> include a satisfiable subset of the <em>prior next</em> key list with respect to the <em>prior next</em> threshold. In addition, any rotation event's <em>current</em> public key list <bcp14>MUST</bcp14> include a satisfiable set of public keys with respect to its <em>current</em> threshold. In other words, the current public key list must be satisfiable with respect to both the <em>current</em> and <em>prior next</em> thresholds.</t>
          <t>To reiterate, in order to make verifiable the maintenance of the integrity of the forward commitment to the pre-rotated list of keys made by the <em>prior next</em> event, i.e. provide verifiable rotation control authority, the <em>current</em> key list <bcp14>MUST</bcp14> include a satisfiable subset of exposed (unblinded) pre-rotated next keys from the most recent prior establishment event where satisfiable is with respect to the  <em>prior next</em> threshold. Moreover, in order to establish verifiable signing control authority, the <em>current</em> key list <bcp14>MUST</bcp14> also include a satisfiable subset of public keys where satisfiable is with respect to the <em>current</em> threshold.</t>
          <t>These two conditions are trivially satisfied whenever the <em>current</em> and <em>prior next</em> key lists and thresholds are equivalent. When both the <em>current</em> and the <em>prior next</em> key lists and thresholds are identical then the validation can be simplified by comparing the two lists and thresholds to confirm that they are identical and then confirming that the signatures satisfy the one threshold with respect to the one key list. When not identical, the validator <bcp14>MUST</bcp14> perform the appropriate set math to confirm compliance.</t>
          <t>Recall, that the order of appearance of the public key in a given key list and its associated threshold weight list <bcp14>MUST</bcp14> be the same. The order of appearance, however, of any public keys that appear in both the <em>current</em> and <em>prior next</em> key lists <bcp14>MAY</bcp14> be different between the two key lists and hence the two associated threshold weight lists.  A validator <bcp14>MUST</bcp14> therefore confirm that the set of keys in the <em>current</em> key list truly includes a satisfiable subset of the <em>prior next</em> key list and that the <em>current</em> key list is satisfiable with respect to both the <em>current</em> and <em>prior next</em> thresholds. Actual satisfaction means that the set of attached signatures <bcp14>MUST</bcp14> satisfy both the <em>current</em> and <em>prior next</em> thresholds as applied to their respective key lists.</t>
          <t>Suppose that the <em>current</em> public key list does not include a proper subset of the <em>prior next</em> key list. This means that no keys were held in reserve. This also means that the current key list is either identical to the prior next key list or is a superset of the prior next key list.  Nonetheless, such a rotation <bcp14>MAY</bcp14> change the <em>current</em> key list and or threshold with respect to the <em>prior next</em> key list and/or threshold as long as it meets the satisfiability constraints defined above.</t>
          <t>If the <em>current</em> key list includes the full set of keys from the <em>prior next</em> key list then a <strong><em>full rotation</em></strong> has occurred, not a <strong><em>partial rotation</em></strong> because no keys were held in reserve or omitted. A <em>full rotation</em> <bcp14>MAY</bcp14> add new keys to the <em>current</em> key list and/or change the current threshold with respect to the <em>prior next</em> key list and threshold.</t>
        </section>
      </section>
      <section anchor="reserve-rotation-example">
        <name>Reserve Rotation Example</name>
        <t>Provided here is an illustrative example to help to clarify the pre-rotation protocol, especially with regard to  and threshold satisfaction for reserve rotation.</t>
        <table>
          <thead>
            <tr>
              <th align="center">SN</th>
              <th align="center">Role</th>
              <th align="right">Keys</th>
              <th align="right">Threshold</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>0</sup>, A<sup>1</sup>, A<sup>2</sup>, A<sup>3</sup>, A<sup>4</sup>]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2, 1/4, 1/4]</em></td>
            </tr>
            <tr>
              <td align="center">0</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>5</sup>), H(A<sup>6</sup>), H(A<sup>7</sup>), H(A<sup>8</sup>), H(A<sup>9</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2, 1/4, 1/4]</em></td>
            </tr>
            <tr>
              <td align="center">1</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>5</sup>, A<sup>6</sup>, A<sup>7</sup>]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">1</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>10</sup>), H(A<sup>11</sup>), H(A<sup>12</sup>), H(A<sup>8</sup>),H(A<sup>9</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2, 1/4, 1/4]</em></td>
            </tr>
            <tr>
              <td align="center">2</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>10</sup>, A<sup>8</sup>, A<sup>9</sup>]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">2</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>13</sup>), H(A<sup>14</sup>), H(A<sup>15</sup>), H(A<sup>16</sup>),H(A<sup>17</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2, 1/4, 1/4]</em></td>
            </tr>
            <tr>
              <td align="center">3</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>13</sup>, A<sup>14</sup>, A<sup>15</sup>]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">3</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>18</sup>), H(A<sup>19</sup>), H(A<sup>20</sup>), H(A<sup>16</sup>),H(A<sup>17</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2, 1/4, 1/4]</em></td>
            </tr>
            <tr>
              <td align="center">4</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>18</sup>, A<sup>20</sup>, A<sup>21</sup>]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">4</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>22</sup>), H(A<sup>23</sup>), H(A<sup>24</sup>), H(A<sup>16</sup>),H(A<sup>17</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2, 1/4, 1/4]</em></td>
            </tr>
            <tr>
              <td align="center">5</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>22</sup>, A<sup>25</sup>, A<sup>26</sup>, A<sup>16</sup>, A<sup>17</sup>]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2, 0, 0]</em></td>
            </tr>
            <tr>
              <td align="center">5</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>27</sup>), H(A<sup>28</sup>), H(A<sup>29</sup>), H(A<sup>30</sup>),H(A<sup>31</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2, 1/4, 1/4]</em></td>
            </tr>
          </tbody>
        </table>
        <t>The meaning of the column labels is as follows:</t>
        <ul spacing="normal">
          <li>SN is the sequence number of the event. Each event uses two rows in the table.</li>
          <li>Role is either Current (Crnt) or Next and indicates the role of the key list and threshold on that row.</li>
          <li>Keys is the list of public keys denoted with indexed label of the keypair sequence.</li>
          <li>Threshold is the threshold of signatures that must be satisfied for validity.</li>
        </ul>
        <t>Commentary of each event follows:</t>
        <ul spacing="normal">
          <li>(0) Inception: Five keypairs have signing authority and five other keypairs have rotation authority. Any two of the first three or any one of the first three and both the last two are sufficient. This anticipates holding the last two in reserve.</li>
          <li>(1) Rotation: The first three keypairs from the prior next, A<sup>5</sup>, A<sup>6</sup>, and A<sup>7</sup>, are rotated at the new current signing keypairs. This exposes the keypairs. The last two from the prior next, A<sup>8</sup> and A<sup>9</sup>, are held in reserve. They have not been exposed are included in the next key list.</li>
          <li>(2) Rotation: The prior next keypairs, A<sup>11</sup> and A<sup>12</sup> are unavalible to sign the rotation and particpate as the part of the newly current signing keys. Therefore A<sup>8</sup> and A<sup>9</sup> must be activated (pulled out of reserve) and included and exposed as both one time rotation keys and newly current signing keys. The signing authority (weight) of each of A<sup>8</sup> and A<sup>9</sup> has been increased to 1/2 from 1/4. This means that any two of the three of A<sup>10</sup>, A<sup>8</sup>, and A<sup>9</sup> may satisfy the signing threshold. Nonetheless, the rotation event #2 <bcp14>MUST</bcp14> be signed by all three of A<sup>10</sup>, A<sup>8</sup>, and A<sup>9</sup> in order to satisfy the prior next threshold because in that threshold A<sup>8</sup>, and A<sup>9</sup>  only have a weight of 1/4.</li>
          <li>(3) Rotation: The keypairs H(A<sup>16</sup>),H(A<sup>17</sup> have been held in reserve from event #2</li>
          <li>(4) Rotation: The keypairs H(A<sup>16</sup>), H(A<sup>17</sup> continue to be held in reserve.</li>
          <li>(5) Rotation: The keypairs A<sup>16</sup>, and A<sup>17</sup> are pulled out of reserved and exposed in order to perform the rotation because A<sup>23</sup>, and A<sup>24</sup> are unavailable. Two new keypairs, A<sup>25</sup>, A<sup>26</sup>, are added to the current signing key list. The current signing authority of A<sup>16</sup>, and A<sup>17</sup> is none because they are assigned a weight of 0 in the new current signing threshold. For the rotation event to be valid it must be signed by A<sup>22</sup>, A<sup>16</sup>, and A<sup>17</sup> in order to satisfy the prior next threshold for rotation authority and also must be signed by any two of A<sup>22</sup>, A<sup>25</sup>, and A<sup>26</sup> in order to satisfy the new current signing authority for the event itself. This illustrates how reserved keypairs may be used exclusively for rotation authority and not for signing authority.</li>
        </ul>
      </section>
      <section anchor="custodial-rotation-example">
        <name>Custodial Rotation Example</name>
        <t>Provided here is an illustrative example to help to clarify the pre-rotation protocol, especially with regard to threshold satisfaction for custodial rotation.</t>
        <table>
          <thead>
            <tr>
              <th align="center">SN</th>
              <th align="center">Role</th>
              <th align="right">Keys</th>
              <th align="right">Threshold</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>0</sup>, A<sup>1</sup>, A<sup>2</sup>]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">0</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>3</sup>), H(A<sup>4</sup>), H(A<sup>5</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">1</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>3</sup>, A<sup>4</sup>, A<sup>5</sup>, A<sup>6</sup>, A<sup>7</sup>, A<sup>8</sup>]</em></td>
              <td align="right">
                <em>[0, 0, 0, 1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">1</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>9</sup>), H(A<sup>10</sup>), H(A<sup>11</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">2</td>
              <td align="center">Crnt</td>
              <td align="right">
                <em>[A<sup>9</sup>, A<sup>10</sup>, A<sup>11</sup>, A<sup>12</sup>, A<sup>13</sup>, A<sup>14</sup>]</em></td>
              <td align="right">
                <em>[0, 0, 0, 1/2, 1/2, 1/2]</em></td>
            </tr>
            <tr>
              <td align="center">2</td>
              <td align="center">Next</td>
              <td align="right">
                <em>[H(A<sup>15</sup>), H(A<sup>16</sup>), H(A<sup>17</sup>)]</em></td>
              <td align="right">
                <em>[1/2, 1/2, 1/2]</em></td>
            </tr>
          </tbody>
        </table>
        <t>The meaning of the column labels is as follows:</t>
        <ul spacing="normal">
          <li>SN is the sequence number of the event. Each event uses two rows in the table.</li>
          <li>Role is either Current (Crnt) or Next and indicates the role of the key list and threshold on that row.</li>
          <li>Keys is the list of public keys denoted with indexed label of the keypair sequence.</li>
          <li>Threshold is the threshold of signatures that must be satisfied for validity.</li>
        </ul>
        <t>Commentary of each event follows:</t>
        <ul spacing="normal">
          <li>(0) Inception: The private keys from current signing keypairs  A<sup>0</sup>, A<sup>1</sup>, and A<sup>2</sup> are held by the custodian of the identifier. The owner of the identifier provides the digests of the next rotation keypairs, H(A<sup>3</sup>), H(A<sup>4</sup>), and H(A<sup>5</sup>) to the custodian in order that the custodian may include them in the event and then sign the event. The owner holds the private keys from the next rotation keypairs A<sup>3</sup>, A<sup>4</sup>, and A<sup>5</sup>. A self-addressing AID would then be created by the formulation of the inception event. Once formed, the custodian controls the signing authority over the identifier by virtue of holding the associated private keys for the current key list. But the owner controls the rotation authority by virtue of holding the associated private keys for the next key list. Because the controller of the rotation authority may at their sole discretion revoke and replace the keys that hold signing authority, the owner, holder of the next private keys, is ultimately in control of the identifier so constituted by this inception event.</li>
          <li>(1) Rotation: The owner changes custodians with this event. The new custodian creates new current signing keypairs, A<sup>6</sup>, A<sup>7</sup>, and A<sup>8</sup> and holds the associated private keys. The new custodian provides the public keys A<sup>6</sup>, A<sup>7</sup>, and A<sup>8</sup> to the owner so that the owner can formulate and sign the rotation event that transfers signing authority to the new custodian. The owner exposes its rotation public keys,  A<sup>3</sup>, A<sup>4</sup>, and A<sup>5</sup> by including them in the new current key list. But the weights of those rotation keys in the new current signing threshold are all 0 so they have no signing authority.  The owner creates a new set of next keypairs and includes their public key digests, H(A<sup>9</sup>), H(A<sup>10</sup>), H(A<sup>11</sup>) in the new next key list. The owner holds the associated private keys and thereby retains rotation authority. This event <bcp14>MUST</bcp14> be signed by any two of A<sup>3</sup>, A<sup>4</sup>, and A<sup>5</sup> in order to satisfy the prior next threshold and also <bcp14>MUST</bcp14> be signed by any two A<sup>6</sup>, A<sup>7</sup>, and A<sup>8</sup> in order to satisfy the new current signing threshold. The new current threshold and new next threshold clearly delineate that the new custodian now holds exclusive signing authority and owner continues to retain exclusive rotation authority.</li>
          <li>(2) Rotation: Change to yet another custodian following the same pattern as event #1</li>
        </ul>
      </section>
    </section>
    <section anchor="keri-data-structures">
      <name>KERI Data Structures</name>
      <t>A KERI data structure such as a key event message body may be abstractly modeled as a nested <tt>key: value</tt> mapping. To avoid confusion with the cryptographic use of the term <em>key</em> we instead use the term <em>field</em> to refer to a mapping pair and the terms <em>field label</em> and <em>field value</em> for each member of a pair. These pairs can be represented by two tuples e.g <tt>(label, value)</tt>. We qualify this terminology when necessary by using the term <em>field map</em> to reference such a mapping. <em>Field maps</em> may be nested where a given <em>field value</em> is itself a reference to another <em>field map</em>.  We call this nested set of fields a <em>nested field map</em> or simply a <em>nested map</em> for short. A <em>field</em> may be represented by a framing code or block delimited serialization.  In a block delimited serialization, such as JSON, each <em>field map</em> is represented by an object block with block delimiters such as <tt>{}</tt> <xref target="RFC8259"/><xref target="JSOND"/><xref target="RFC4627"/>. Given this equivalence, we may also use the term <em>block</em> or <em>nested block</em> as synonymous with <em>field map</em> or <em>nested field map</em>. In many programming languages, a field map is implemented as a dictionary or hash table in order to enable performant asynchronous lookup of a <em>field value</em> from its <em>field label</em>. Reproducible serialization of <em>field maps</em> requires a canonical ordering of those fields. One such canonical ordering is called insertion or field creation order. A list of <tt>(field, value)</tt> pairs provides an ordered representation of any field map. Most programming languages now support ordered dictionaries or hash tables that provide reproducible iteration over a list of ordered field <tt>(label, value)</tt> pairs where the ordering is the insertion or field creation order. This enables reproducible round trip serialization/deserialization of <em>field maps</em>. Serialized KERI data structures depend on insertion-ordered field maps for their canonical serialization/deserialization. KERI data structures support multiple serialization types, namely JSON, CBOR, MGPK, and CESR but for the sake of simplicity, we will only use JSON herein for examples <xref target="RFC8259"/><xref target="JSOND"/><xref target="CBORC"/><xref target="RFC8949"/><xref target="MGPK"/><xref target="CESR-ID"/>. The basic set of normative field labels in KERI field maps is defined in the table in the following section.</t>
      <section anchor="field-labels-for-keri-data-structures">
        <name>Field Labels for KERI Data Structures</name>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Title</th>
              <th align="left">Description</th>
              <th align="left">Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">v</td>
              <td align="left">Version String</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">i</td>
              <td align="left">Identifier Prefix  (AID)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">s</td>
              <td align="left">Sequence Number</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">t</td>
              <td align="left">Message Type</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">te</td>
              <td align="left">Last received Event Message Type in a Key State Notice</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">d</td>
              <td align="left">Event SAID</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">p</td>
              <td align="left">Prior Event SAID</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">kt</td>
              <td align="left">Keys Signing Threshold</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">k</td>
              <td align="left">List of Signing Keys (ordered key set)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">nt</td>
              <td align="left">Next Keys Signing Threshold</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">n</td>
              <td align="left">List of Next Key Digests (ordered key digest set)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">bt</td>
              <td align="left">Backer Threshold</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">b</td>
              <td align="left">List of Backers  (ordered backer set of AIDs)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">br</td>
              <td align="left">List of Backers to Remove (ordered backer set of AIDS)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ba</td>
              <td align="left">List of Backers to Add (ordered backer set of AIDs)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">c</td>
              <td align="left">List of Configuration Traits/Modes</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">a</td>
              <td align="left">List of Anchors (seals)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">di</td>
              <td align="left">Delegator Identifier Prefix  (AID)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">rd</td>
              <td align="left">Merkle Tree Root Digest (SAID)</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ee</td>
              <td align="left">Last Establishment Event Map</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">vn</td>
              <td align="left">Version Number ("major.minor")</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>A field label may have different values in different contexts but <bcp14>MUST</bcp14> not have a different field value <strong><em>type</em></strong>. This requirement makes it easier to implement in strongly typed languages with rigid data structures. Notwithstanding the former, some field value types <bcp14>MAY</bcp14> be a union of elemental value types.</t>
        <t>Because the order of appearance of fields is enforced in all KERI data structures, whenever a field appears (in a given message or block in a message) the message in which a label appears <bcp14>MUST</bcp14> provide the necessary context to fully determine the meaning of that field and hence the field value type and associated semantics.</t>
      </section>
      <section anchor="compact-labels">
        <name>Compact Labels</name>
        <t>The primary field labels are compact in that they use only one or two characters. KERI is meant to support resource-constrained applications such as supply chain or IoT (Internet of Things) applications. Compact labels better support resource-constrained applications in general. With compact labels, the over-the-wire verifiable signed serialization consumes a minimum amount of bandwidth. Nevertheless, without loss of generality, a one-to-one normative semantic overlay using more verbose expressive field labels may be applied to the normative compact labels after verification of the over-the-wire serialization. This approach better supports bandwidth and storage constraints on transmission while not precluding any later semantic post-processing. This is a well-known design pattern for resource-constrained applications.</t>
      </section>
      <section anchor="special-label-ordering-requirements">
        <name>Special Label Ordering Requirements</name>
      </section>
      <section anchor="version-string-field">
        <name>Version String Field</name>
        <t>The version string, <tt>v</tt>, field <bcp14>MUST</bcp14> be the first field in any top-level KERI field map in which it appears. Typically the version string, <tt>v</tt>, field appears as the first top-level field in a KERI message body. This enables a RegEx stream parser to consistently find the version string in any of the supported serialization formats for KERI messages. The <tt>v</tt> field provides a regular expression target for determining the serialization format and size (character count) of a serialized KERI message body. A stream parser may use the version string to extract and deserialize (deterministically) any serialized KERI message body in a stream of serialized KERI messages. Each KERI message in a stream may use a different serialization type.</t>
        <t>The format of the version string is <tt>KERIvvSSSShhhhhh_</tt>. The first four characters <tt>KERI</tt> indicate the enclosing field map serialization. The next two characters, <tt>vv</tt> provide the lowercase hexadecimal notation for the major and minor version numbers of the version of the KERI specification used for the serialization. The first <tt>v</tt> provides the major version number and the second <tt>v</tt> provides the minor version number. For example, <tt>01</tt> indicates major version 0 and minor version 1 or in dotted-decimal notation <tt>0.1</tt>. Likewise <tt>1c</tt> indicates major version 1 and minor version decimal 12 or in dotted-decimal notation <tt>1.12</tt>. The next four characters <tt>SSSS</tt> indicate the serialization type in uppercase. The four supported serialization types are <tt>JSON</tt>, <tt>CBOR</tt>, <tt>MGPK</tt>, and <tt>CESR</tt> for the JSON, CBOR, MessagePack, and CESR serialization standards respectively <xref target="JSOND"/><xref target="RFC4627"/><xref target="CBORC"/><xref target="RFC8949"/><xref target="MGPK"/><xref target="CESR-ID"/>. The next six characters provide in lowercase hexadecimal notation the total number of characters in the serialization of the KERI message body. The maximum length of a given KERI message body is thereby constrained to be <em>2<sup>24</sup> = 16,777,216</em> characters in length. The final character <tt>-</tt> is the version string terminator. This enables later versions of ACDC to change the total version string size and thereby enable versioned changes to the composition of the fields in the version string while preserving deterministic regular expression extractability of the version string. Although a given KERI serialization type may use field map delimiters or framing code characters that appear before (i.e. prefix) the version string field in a serialization, the set of possible prefixes is sufficiently constrained by the allowed serialization protocols to guarantee that a regular expression can determine unambiguously the start of any ordered field map serialization that includes the version string as the first field value. Given the version string, a parser may then determine the end of the serialization so that it can extract the full serialization (KERI message body) from the stream without first deserializing it or parsing it field-by-field. This enables performant stream parsing and off-loading of KERI message streams that include any or all of the supported serialization types interleaved in a single stream.</t>
      </section>
      <section anchor="said-self-addressing-identifier-fields">
        <name>SAID (Self-Addressing IDentifier) Fields</name>
        <t>Some fields in KERI data structures may have for their value a SAID. In this context, <tt>d</tt> is short for digest, which is short for Self-Addressing IDentifier (SAID). A SAID follows the SAID protocol <xref target="SAID-ID"/>. Essentially a SAID is a Self-Addressing IDentifier (self-referential content addressable). A SAID is a special type of cryptographic digest of its encapsulating <em>field map</em> (block). The encapsulating block of a SAID is called a SAD (Self-Addressed Data). Using a SAID as a <em>field value</em> enables a more compact but secure representation of the associated block (SAD) from which the SAID is derived. Any nested field map that includes a SAID field (i.e. is, therefore, a SAD) may be compacted into its SAID. The uncompacted blocks for each associated SAID may be attached or cached to optimize bandwidth and availability without decreasing security.</t>
        <t>Each SAID provides a stable universal cryptographically verifiable and agile reference to its encapsulating block (serialized <em>field map</em>).</t>
        <t>Recall that a cryptographic commitment (such as a digital signature or cryptographic digest) on a given digest with sufficient cryptographic strength including collision resistance <xref target="HCR"/><xref target="QCHC"/> is equivalent to a commitment to the block from which the given digest was derived.  Specifically, a digital signature on a SAID makes a verifiable cryptographic non-repudiable commitment that is equivalent to a commitment on the full serialization of the associated block from which the SAID was derived. This enables reasoning about KERI data structures in whole or in part via their SAIDS in a fully interoperable, verifiable, compact, and secure manner. This also supports the well-known bow-tie model of Ricardian Contracts <xref target="RC"/>. This includes reasoning about the whole KERI data structure given by its top-level SAID, <tt>d</tt>, field as well as reasoning about any nested or attached data structures using their SAIDS.</t>
      </section>
      <section anchor="aid-autonomic-identifier-fields">
        <name>AID (Autonomic IDentifier) Fields</name>
        <t>Some fields, such as the <tt>i</tt> and <tt>di</tt> fields, <bcp14>MUST</bcp14> each have an AID (Autonomic IDentifier) as its value. An AID is a fully qualified Self-Certifying IDentifier (SCID) as described above <xref target="KERI"/><xref target="KERI-ID"/>. An AID <bcp14>MUST</bcp14> be self-certifying.
In this context, <tt>i</tt> is short for <tt>ai</tt>, which is short for the Autonomic IDentifier (AID). The AID given by the <tt>i</tt> field may also be thought of as a securely attributable identifier, authoritative identifier, authenticatable identifier, authorizing identifier, or authoring identifier.Another way of thinking about an <tt>i</tt> field is that it is the identifier of the authoritative entity to which a statement may be securely attributed, thereby making the statement verifiably authentic via a non-repudiable signature made by that authoritative entity as the Controller of the private key(s).</t>
        <section anchor="namespaced-aids">
          <name>Namespaced AIDs</name>
          <t>Because KERI is agnostic about the namespace for any particular AID, different namespace standards may be used to express KERI AIDs within AID fields in an ACDC. The examples below use the W3C DID namespace specification with the <tt>did:keri</tt> method <xref target="DIDK-ID"/>. But the examples would have the same validity from a KERI perspective if some other supported namespace was used or no namespace was used at all. The latter case consists of a bare KERI AID (identifier prefix).</t>
          <t>ToDo Explain agnosticism vis a vis namespaces
 Because AIDs may be namespaced, the essential component of an AID is the cryptographically derived Controller identifier prefix.  An AID <bcp14>MUST</bcp14> be the Controller identifier prefix.  part of a W3C Decentralized IDentifier (DID) <xref target="W3C_DID"/> or other namespace convention.</t>
          <t>Version string namespaces the AIDs as KERI so don't need any namespacing on a per identifier basis.</t>
        </section>
      </section>
      <section anchor="version-string-field-1">
        <name>Version String Field</name>
        <t>Get from ACDC</t>
      </section>
      <section anchor="next-threshold-field">
        <name>Next Threshold Field</name>
        <t>The <tt>nt</tt> field is next threshold for the next establishment event.</t>
      </section>
      <section anchor="common-normalized-acdc-and-keri-labels">
        <name>Common Normalized ACDC and KERI Labels</name>
        <t><tt>v</tt> is the version string
<tt>d</tt> is the SAID of the enclosing block or map
<tt>i</tt> is a KERI identifier AID
<tt>a</tt> is the data attributes or data anchors depending on the message type</t>
      </section>
    </section>
    <section anchor="seals">
      <name>Seals</name>
      <section anchor="digest-seal">
        <name>Digest Seal</name>
        <sourcecode type="json"><![CDATA[
{
  "d": "Eabcde..."
}
]]></sourcecode>
      </section>
      <section anchor="merkle-tree-root-digest-seal">
        <name>Merkle Tree Root Digest Seal</name>
        <sourcecode type="json"><![CDATA[
{
  "rd": "Eabcde8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM"
}
]]></sourcecode>
      </section>
      <section anchor="backer-seal">
        <name>Backer Seal</name>
        <sourcecode type="json"><![CDATA[
{
  "bi": "BACDEFG8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM",
  "d" : "EFGKDDA8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM"
}

]]></sourcecode>
      </section>
      <section anchor="event-seal">
        <name>Event Seal</name>
        <sourcecode type="json"><![CDATA[
{

  "i": "Ebietyi8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM.",
  "s": "3",
  "d": "Eabcde8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM"
}
]]></sourcecode>
      </section>
      <section anchor="last-establishment-event-seal">
        <name>Last Establishment Event Seal</name>
        <sourcecode type="json"><![CDATA[
{
  "i": "BACDEFG8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM",
}

]]></sourcecode>
      </section>
    </section>
    <section anchor="key-event-messages-non-delegated">
      <name>Key Event Messages (Non-delegated)</name>
      <t>Because adding the <tt>d</tt> field SAID to every key event message type will break all the explicit test vectors. Its no additional pain to normalize the field ordering across all message types and seals.
Originally all messages included an <tt>i</tt> field but that is not true anymore. So the changed field ordering is to put the fields that are common to all message types first in order followed by fields that are not common. The common fields are <tt>v</tt>, <tt>t</tt>, <tt>d</tt>.
The newly revised messages and seals are shown below.</t>
      <section anchor="inception-event">
        <name>Inception Event</name>
        <t>When the AID in the <tt>i</tt> field is a self-addressing self-certifying AID, the new Inception Event has two
qualified digest fields. In this case both the <tt>d</tt> and <tt>i</tt> fields must have the same value. This means the digest suite's derivation code, used for the <tt>i</tt> field must be the same for the <tt>d</tt> field.
The derivation of the <tt>d</tt> and <tt>i</tt> fields is special. Both the <tt>d</tt> and <tt>i</tt> fields are replaced with dummy <tt>#</tt> characters of the length of the digest to be used. The digest of the Inception event is then computed and both the <tt>d</tt> and <tt>i</tt> fields are replaced with the qualified digest value. Validation of an inception event requires examining the <tt>i</tt> field's derivation code and if it is a digest-type then the <tt>d</tt> field must be identical otherwise the inception event is invalid.</t>
        <t>When the AID is not self-addressing, i.e. the <tt>i</tt> field derivation code is not a digest. Then the <tt>i</tt> is given its value and the <tt>d</tt> field is replaced with dummy characters <tt>#</tt> of the correct length and then the digest is computed. This is the standard SAID algorithm.</t>
      </section>
      <section anchor="inception-event-message-body">
        <name>Inception Event Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON0001ac_",
  "t": "icp",
  "d": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
  "i": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
  "s": "0",
  "kt": "2", // 2 of 3
  "k" :
    [
      "DnmwyZ-i0H3ULvad8JZAoTNZaU6JR2YAfSVPzh5CMzS6b",
      "DZaU6JR2nmwyZ-VPzhzSslkie8c8TNZaU6J6bVPzhzS6b",
      "Dd8JZAoTNnmwyZ-i0H3U3ZaU6JR2LvYAfSVPzhzS6b5CM"
    ],
  "nt": "3",  // 3 of 5
  "n" :
    [
      "ETNZH3ULvYawyZ-i0d8JZU6JR2nmAoAfSVPzhzS6b5CM",
      "EYAfSVPzhzaU6JR2nmoTNZH3ULvwyZb6b5CMi0d8JZAS",
      "EnmwyZdi0d8JZAoTNZYAfSVPzhzaU6JR2H3ULvS6b5CM",
      "ETNZH3ULvS6bYAfSVPzhzaU6JR2nmwyZfi0d8JZ5s8bk",
      "EJR2nmwyZ2i0dzaU6ULvS6b5CM8JZAoTNZH3YAfSVPzh",
    ],
  "bt": "2",
  "b":
    [
      "BGKVzj4ve0VSd8z_AmvhLg4lqcC_9WYX90k03q-R_Ydo",
      "BuyRFMideczFZoapylLIyCjSdhtqVb31wZkRKvPfNqkw",
      "Bgoq68HCmYNUDgOz4Skvlu306o_NY-NrYuKAVhk3Zh9c"
    ],
  "c": [],
  "a": []
}
]]></sourcecode>
      </section>
      <section anchor="rotation-event-message-body">
        <name>Rotation Event Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rot",
  "d" : "E0d8JJR2nmwyYAfZAoTNZH3ULvaU6Z-iSVPzhzS6b5CM",
  "i" : "EZAoTNZH3ULvaU6Z-i0d8JJR2nmwyYAfSVPzhzS6b5CM",
  "s" : "1",
  "p" : "EULvaU6JR2nmwyZ-i0d8JZAoTNZH3YAfSVPzhzS6b5CM",
  "kt": "2", // 2 of 3
  "k" :
    [
      "DnmwyZ-i0H3ULvad8JZAoTNZaU6JR2YAfSVPzh5CMzS6b",
      "DZaU6JR2nmwyZ-VPzhzSslkie8c8TNZaU6J6bVPzhzS6b",
      "Dd8JZAoTNnmwyZ-i0H3U3ZaU6JR2LvYAfSVPzhzS6b5CM"
    ],
  "nt": "3",  // 3 of 5
  "n" :
    [
      "ETNZH3ULvYawyZ-i0d8JZU6JR2nmAoAfSVPzhzS6b5CM",
      "EYAfSVPzhzaU6JR2nmoTNZH3ULvwyZb6b5CMi0d8JZAS",
      "EnmwyZdi0d8JZAoTNZYAfSVPzhzaU6JR2H3ULvS6b5CM",
      "ETNZH3ULvS6bYAfSVPzhzaU6JR2nmwyZfi0d8JZ5s8bk",
      "EJR2nmwyZ2i0dzaU6ULvS6b5CM8JZAoTNZH3YAfSVPzh",
    ],
  "bt": "1",
  "ba": ["DTNZH3ULvaU6JR2nmwyYAfSVPzhzS6bZ-i0d8JZAo5CM"],
  "br": ["DH3ULvaU6JR2nmwyYAfSVPzhzS6bZ-i0d8TNZJZAo5CM"],
  "a" : []
}
]]></sourcecode>
      </section>
      <section anchor="interaction-event-message-body">
        <name>Interaction Event Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00011c_",
  "t": "isn",
  "d": "E0d8JJR2nmwyYAfZAoTNZH3ULvaU6Z-iSVPzhzS6b5CM",
  "i": "EZAoTNZH3ULvaU6Z-i0d8JJR2nmwyYAfSVPzhzS6b5CM",
  "s": "2",
  "p": "EULvaU6JR2nmwyZ-i0d8JZAoTNZH3YAfSVPzhzS6b5CM",
  "a":
  [
    {
      "d": "ELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM",
      "i": "EJJR2nmwyYAfSVPzhzS6b5CMZAoTNZH3ULvaU6Z-i0d8",
      "s": "1"
    }
  ]
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="delegated-key-event-messages">
      <name>Delegated Key Event Messages</name>
      <t>ToDo in delegation section below. Delegated custodial example with partial rotation and using 0 fraction signing weights on exposed pre-rotated keys</t>
      <section anchor="delegated-inception-event-message-body">
        <name>Delegated Inception Event Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON0001ac_",
  "t": "icp",
  "d": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
  "i": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
  "s": "0",
  "kt": "2", // 2 of 3
  "k" :
    [
      "DnmwyZ-i0H3ULvad8JZAoTNZaU6JR2YAfSVPzh5CMzS6b",
      "DZaU6JR2nmwyZ-VPzhzSslkie8c8TNZaU6J6bVPzhzS6b",
      "Dd8JZAoTNnmwyZ-i0H3U3ZaU6JR2LvYAfSVPzhzS6b5CM"
    ],
  "nt": "3",  // 3 of 5
  "n" :
    [
      "ETNZH3ULvYawyZ-i0d8JZU6JR2nmAoAfSVPzhzS6b5CM",
      "EYAfSVPzhzaU6JR2nmoTNZH3ULvwyZb6b5CMi0d8JZAS",
      "EnmwyZdi0d8JZAoTNZYAfSVPzhzaU6JR2H3ULvS6b5CM",
      "ETNZH3ULvS6bYAfSVPzhzaU6JR2nmwyZfi0d8JZ5s8bk",
      "EJR2nmwyZ2i0dzaU6ULvS6b5CM8JZAoTNZH3YAfSVPzh",
    ],
  "bt": "2",
  "b":
    [
      "BGKVzj4ve0VSd8z_AmvhLg4lqcC_9WYX90k03q-R_Ydo",
      "BuyRFMideczFZoapylLIyCjSdhtqVb31wZkRKvPfNqkw",
      "Bgoq68HCmYNUDgOz4Skvlu306o_NY-NrYuKAVhk3Zh9c"
    ],
  "c": [],
  "a": [],
  "di": "EJJR2nmwyYAZAoTNZH3ULvaU6Z-i0d8fSVPzhzS6b5CM"
}
]]></sourcecode>
      </section>
      <section anchor="delegated-rotation-event-message-body">
        <name>Delegated Rotation Event Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "drt",
  "d" : "E0d8JJR2nmwyYAfZAoTNZH3ULvaU6Z-iSVPzhzS6b5CM",
  "i" : "EZAoTNZH3ULvaU6Z-i0d8JJR2nmwyYAfSVPzhzS6b5CM",
  "s" : "1",
  "p" : "EULvaU6JR2nmwyZ-i0d8JZAoTNZH3YAfSVPzhzS6b5CM",
  "kt": "2", // 2 of 3
  "k" :
    [
      "DnmwyZ-i0H3ULvad8JZAoTNZaU6JR2YAfSVPzh5CMzS6b",
      "DZaU6JR2nmwyZ-VPzhzSslkie8c8TNZaU6J6bVPzhzS6b",
      "Dd8JZAoTNnmwyZ-i0H3U3ZaU6JR2LvYAfSVPzhzS6b5CM"
    ],
  "nt": "3",  // 3 of 5
  "n" :
    [
      "ETNZH3ULvYawyZ-i0d8JZU6JR2nmAoAfSVPzhzS6b5CM",
      "EYAfSVPzhzaU6JR2nmoTNZH3ULvwyZb6b5CMi0d8JZAS",
      "EnmwyZdi0d8JZAoTNZYAfSVPzhzaU6JR2H3ULvS6b5CM",
      "ETNZH3ULvS6bYAfSVPzhzaU6JR2nmwyZfi0d8JZ5s8bk",
      "EJR2nmwyZ2i0dzaU6ULvS6b5CM8JZAoTNZH3YAfSVPzh",
    ],
  "bt": "1",
  "ba":  ["DTNZH3ULvaU6JR2nmwyYAfSVPzhzS6bZ-i0d8JZAo5CM"],
  "br":  ["DH3ULvaU6JR2nmwyYAfSVPzhzS6bZ-i0d8TNZJZAo5CM"],
  "a" :[]
  "di" : "EJJR2nmwyYAZAoTNZH3ULvaU6Z-i0d8fSVPzhzS6b5CM"
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="receipt-messages">
      <name>Receipt Messages</name>
      <section anchor="non-transferable-prefix-signer-receipt-message-body">
        <name>Non-Transferable Prefix Signer Receipt Message Body</name>
        <t>For receipts, the <tt>d</tt> field is the SAID of the associated event, not the receipt message itself.</t>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00011c_",
  "t": "rct",
  "d": "DZ-i0d8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM",
  "i": "AaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM",
  "s": "1"
}
]]></sourcecode>
      </section>
      <section anchor="transferable-prefix-signer-receipt-message-body">
        <name>Transferable Prefix Signer Receipt Message Body</name>
        <t>For receipts, the <tt>d</tt> field is the SAID of the associated event, not the receipt message itself.</t>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00011c_",
  "t": "vrc",
  "d": "DZ-i0d8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM",
  "i": "AaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM",
  "s": "1",
  "a":
    {
      "d": "DZ-i0d8JZAoTNZH3ULvaU6JR2nmwyYAfSVPzhzS6b5CM",
      "i": "AYAfSVPzhzS6b5CMaU6JR2nmwyZ-i0d8JZAoTNZH3ULv",
      "s": "4"
    }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="other-messages">
      <name>Other Messages</name>
      <section anchor="query-message-message-body">
        <name>Query Message Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "qry",
  "d" : "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "logs",
  "rr": "log/processor",
  "q" :
  {
    "i" : "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM",
    "s" : "5",
    "dt": "2020-08-01T12:20:05.123456+00:00",
  }
}
]]></sourcecode>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "qry",
  "d" : "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "logs",
  "rr": "log/processor",
  "q" :
  {
    "d" : "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM",
    "i" : "EAoTNZH3ULvYAfSVPzhzS6baU6JR2nmwyZ-i0d8JZ5CM",
    "s" : "5",
    "dt": "2020-08-01T12:20:05.123456+00:00",
  }
}
]]></sourcecode>
      </section>
      <section anchor="reply-message-body">
        <name>Reply Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rpy",
  "d" : "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "logs/processor",
  "a" :
  {
    "i": "EAoTNZH3ULvYAfSVPzhzS6baU6JR2nmwyZ-i0d8JZ5CM",
    "name": "John Jones",
    "role": "Founder",
  }
}
]]></sourcecode>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rpy",
  "d" : "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "logs/processor",
  "a" :
  {
    "d":  "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM",
    "i": "EAoTNZH3ULvYAfSVPzhzS6baU6JR2nmwyZ-i0d8JZ5CM",
    "name": "John Jones",
    "role": "Founder",
  }
}
]]></sourcecode>
      </section>
      <section anchor="prod-message-body">
        <name>Prod Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00011c_",
  "t": "prd",
  "d": "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "r": "sealed/data",
  "rr": "process/sealed/data"
  "q":
  {
     d" : "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM",
    "i" : "EAoTNZH3ULvYAfSVPzhzS6baU6JR2nmwyZ-i0d8JZ5CM",
    "s" : "5",
    "ri": "EAoTNZH3ULvYAfSVPzhzS6baU6JR2nmwyZ-i0d8JZ5CM",
    "dd": "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM"
  }
}
]]></sourcecode>
      </section>
      <section anchor="bare-message-body">
        <name>Bare Message Body</name>
        <t>Reference to the anchoring seal is provided as an attachment to the bare, <tt>bre</tt> message.
A bare, 'bre', message is a SAD item with an associated derived SAID in its 'd' field.</t>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00011c_",
  "t": "bre",
  "d": "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "r": "process/sealed/data",
  "a":
  {
    "d": "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM",
    "i": "EAoTNZH3ULvYAfSVPzhzS6baU6JR2nmwyZ-i0d8JZ5CM",
    "dt": "2020-08-22T17:50:12.988921+00:00",
    "name": "John Jones",
    "role": "Founder",
  }
}
]]></sourcecode>
      </section>
      <section anchor="exchange-message-body">
        <name>Exchange Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON00006a_",
  "t": "exn",
  "d": "EF3Dd96ATbbMIZgUBBwuFAWx3_8s5XSt_0jeyCRXq_bM",
  "dt": "2021-11-12T19:11:19.342132+00:00",
  "r": "/echo",
  "rr": "/echo/response",
  "a": {
    "msg": "test"
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="notices-embedded-in-reply-messages">
      <name>Notices Embedded in Reply Messages</name>
      <section anchor="key-state-notice-ksn">
        <name>Key State Notice (KSN)</name>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON0001d9_",
  "d": "EYk4PigtRsCd5W2so98c8r8aeRHoixJK7ntv9mTrZPmM",
  "i": "E4BsxCYUtUx3d6UkDVIQ9Ke3CLQfqWBfICSmjIzkS1u4",
  "s": "0",
  "p": "",
  "f": "0",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "et": "icp",
  "kt": "1",
  "k": [
    "DqI2cOZ06RwGNwCovYUWExmdKU983IasmUKMmZflvWdQ"
  ],
  "n": "E7FuL3Z_KBgt_QAwuZi1lUFNC69wvyHSxnMFUsKjZHss",
  "bt": "1",
  "b": [
    "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY"
  ],
  "c": [],
  "ee": {
    "s": "0",
    "d": "EYk4PigtRsCd5W2so98c8r8aeRHoixJK7ntv9mTrZPmM",
    "br": [],
    "ba": []
  },
  "di": ""
}
]]></sourcecode>
      </section>
      <section anchor="embedded-in-reply">
        <name>Embedded in Reply</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rpy",
  "d" : "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "/ksn/BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY",
  "a" :
    {
      "v": "KERI10JSON0001d9_",
      "d": "EYk4PigtRsCd5W2so98c8r8aeRHoixJK7ntv9mTrZPmM",
      "i": "E4BsxCYUtUx3d6UkDVIQ9Ke3CLQfqWBfICSmjIzkS1u4",
      "s": "0",
      "p": "",
      "f": "0",
      "dt": "2021-01-01T00:00:00.000000+00:00",
      "et": "icp",
      "kt": "1",
      "k": [
        "DqI2cOZ06RwGNwCovYUWExmdKU983IasmUKMmZflvWdQ"
      ],
      "n": "E7FuL3Z_KBgt_QAwuZi1lUFNC69wvyHSxnMFUsKjZHss",
      "bt": "1",
      "b": [
        "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY"
      ],
      "c": [],
      "ee": {
        "s": "0",
        "d": "EYk4PigtRsCd5W2so98c8r8aeRHoixJK7ntv9mTrZPmM",
        "br": [],
        "ba": []
      },
      "di": ""
    }
}
]]></sourcecode>
      </section>
      <section anchor="transaction-state-notice-tsn">
        <name>Transaction State Notice (TSN)</name>
        <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON0001b0_",
  "d": "EpltHxeKueSR1a7e0_oSAhgO6U7VDnX7x4KqNCwBqbI0",
  "i": "EoN_Ln_JpgqsIys-jDOH8oWdxgWqs7hzkDGeLWHb9vSY",
  "s": "1",
  "ii": "EaKJ0FoLxO1TYmyuprguKO7kJ7Hbn0m0Wuk5aMtSrMtY",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "et": "vrt",
  "a": {
    "s": 2,
    "d": "Ef12IRHtb_gVo5ClaHHNV90b43adA0f8vRs3jeU-AstY"
  },
  "bt": "1",
  "br": [],
  "ba": [
    "BwFbQvUaS4EirvZVPUav7R_KDHB8AKmSfXNpWnZU_YEU"
  ],
  "b": [
    "BwFbQvUaS4EirvZVPUav7R_KDHB8AKmSfXNpWnZU_YEU"
  ],
  "c": []
}
]]></sourcecode>
      </section>
      <section anchor="embedded-in-reply-1">
        <name>Embedded in Reply</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rpy",
  "d" : "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "/ksn/registry/BwFbQvUaS4EirvZVPUav7R_KDHB8AKmSfXNpWnZU_YEU",
  "a" :
    {
      "v": "KERI10JSON0001b0_",
      "d": "EpltHxeKueSR1a7e0_oSAhgO6U7VDnX7x4KqNCwBqbI0",
      "i": "EoN_Ln_JpgqsIys-jDOH8oWdxgWqs7hzkDGeLWHb9vSY",
      "s": "1",
      "ii": "EaKJ0FoLxO1TYmyuprguKO7kJ7Hbn0m0Wuk5aMtSrMtY",
      "dt": "2021-01-01T00:00:00.000000+00:00",
      "et": "vrt",
      "a": {
        "s": 2,
        "d": "Ef12IRHtb_gVo5ClaHHNV90b43adA0f8vRs3jeU-AstY"
      },
      "bt": "1",
      "br": [],
      "ba": [
        "BwFbQvUaS4EirvZVPUav7R_KDHB8AKmSfXNpWnZU_YEU"
      ],
      "b": [
        "BwFbQvUaS4EirvZVPUav7R_KDHB8AKmSfXNpWnZU_YEU"
      ],
      "c": []
    }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="transaction-event-log-messages">
      <name>Transaction Event Log Messages</name>
      <section anchor="registry-inception-event-message-body">
        <name>Registry Inception Event Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "vcp",
  "d" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "i" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "ii": "EJJR2nmwyYAfSVPzhzS6b5CMZAoTNZH3ULvaU6Z-i0d8",
  "s" : "0",
  "bt": "1",
  "b" : ["BbIg_3-11d3PYxSInLN-Q9_T2axD6kkXd3XRgbGZTm6s"],
  "c" : ["NB"]
}

]]></sourcecode>
      </section>
      <section anchor="registry-rotation-event-message-body">
        <name>Registry Rotation Event Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "vrt",
  "d" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "i" : "E_D0eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqA7BxL",
  "s" : "2",
  "p" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "bt": "1",
  "br" : ["BbIg_3-11d3PYxSInLN-Q9_T2axD6kkXd3XRgbGZTm6s"],
  "ba" : []
}
]]></sourcecode>
      </section>
      <section anchor="backerless-acdc-issuance-message-body">
        <name>Backerless ACDC Issuance Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "iss",
  "d" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "i" : "E_D0eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqA7BxL",
  "s" : "0",
  "ri" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "dt": "2020-08-01T12:20:05.123456+00:00"
}
]]></sourcecode>
      </section>
      <section anchor="backerless-acdc-revocation-message-body">
        <name>Backerless ACDC Revocation Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rev",
  "d" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "i" : "E_D0eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqA7BxL",
  "s" : "1",
  "p" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "ri" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "dt": "2020-08-01T12:20:05.123456+00:00"
}
]]></sourcecode>
      </section>
      <section anchor="backered-acdc-issuance-message-body">
        <name>Backered ACDC Issuance Message Body</name>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "bis",
  "d" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "i" : "E_D0eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqA7BxL",
  "s" : "0",
  "ri" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "ra" : {
      "d": "E8ipype17kJlQfYp3gcF3F1PNKfdX6vpOLXU8YyykB5o",
      "i": "EFvQCx4-O9bb9fGzY7KgbPeUtjtU0M4OBQWsiIk8za24",
      "s": 0
  }
  "dt": "2020-08-01T12:20:05.123456+00:00"
}
]]></sourcecode>
        <section anchor="backered-acdc-revocation-message-body">
          <name>Backered ACDC Revocation Message Body</name>
          <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "brv",
  "d" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "i" : "E_D0eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqA7BxL",
  "s" : "1",
  "p" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
  "ri" : "EvxMACzQxU2rDj-X5SPDZYtUn56i4fjjH8yDRFRzaMfI",
  "ra" : {
      "d": "E8ipype17kJlQfYp3gcF3F1PNKfdX6vpOLXU8YyykB5o",
      "i": "EFvQCx4-O9bb9fGzY7KgbPeUtjtU0M4OBQWsiIk8za24",
      "s": 0
  }
  "dt": "2020-08-01T12:20:05.123456+00:00"
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="appendix-cryptographic-strength-and-security">
      <name>Appendix: Cryptographic Strength and Security</name>
      <section anchor="cryptographic-strength">
        <name>Cryptographic Strength</name>
        <t>For crypto-systems with <em>perfect-security</em>, the critical design parameter is the number of bits of entropy needed to resist any practical brute force attack. In other words, when a large random or pseudo-random number from a cryptographic strength pseudo-random number generator (CSPRNG) <xref target="CSPRNG"/> expressed as a string of characters is used as a seed or private key to a cryptosystem with <em>perfect-security</em>, the critical design parameter is determined by the amount of random entropy in that string needed to withstand a brute force attack. Any subsequent cryptographic operations must preserve that minimum level of cryptographic strength. In information theory <xref target="IThry"/><xref target="ITPS"/> the entropy of a message or string of characters is measured in bits. Another way of saying this is that the degree of randomness of a string of characters can be measured by the number of bits of entropy in that string.  Assuming conventional non-quantum computers, the convention wisdom is that, for systems with information-theoretic or perfect security, the seed/key needs to have on the order of 128 bits (16 bytes, 32 hex characters) of entropy to practically withstand any brute force attack <xref target="TMCrypto"/><xref target="QCHC"/>. A cryptographic quality random or pseudo-random number expressed as a string of characters will have essentially as many bits of entropy as the number of bits in the number. For other crypto-systems such as digital signatures that do not have perfect security, the size of the seed/key may need to be much larger than 128 bits in order to maintain 128 bits of cryptographic strength.</t>
        <t>An N-bit long base-2 random number has 2<sup>N</sup> different possible values. Given that no other information is available to an attacker with perfect security, the attacker may need to try every possible value before finding the correct one. Thus the number of attempts that the attacker would have to try maybe as much as 2<sup>N-1</sup>.  Given available computing power, one can easily show that 128 is a large enough N to make brute force attack computationally infeasible.</t>
        <t>Let's suppose that the adversary has access to supercomputers. Current supercomputers can perform on the order of one quadrillion operations per second. Individual CPU cores can only perform about 4 billion operations per second, but a supercomputer will parallelly employ many cores. A quadrillion is approximately 2<sup>50</sup> = 1,125,899,906,842,624. Suppose somehow an adversary had control over one million (2<sup>20</sup> = 1,048,576) supercomputers which could be employed in parallel when mounting a brute force attack. The adversary could then try 2<sup>50</sup> * 2<sup>20</sup> = 2<sup>70</sup> values per second (assuming very conservatively that each try only took one operation).
There are about 3600 * 24 * 365 = 313,536,000 = 2<sup>log<sub>2</sub>313536000</sup>=2<sup>24.91</sup> ~= 2<sup>25</sup> seconds in a year. Thus this set of a million super computers could try 2<sup>50+20+25</sup> = 2<sup>95</sup> values per year. For a 128-bit random number this means that the adversary would need on the order of 2<sup>128-95</sup> = 2<sup>33</sup> = 8,589,934,592 years to find the right value. This assumes that the value of breaking the cryptosystem is worth the expense of that much computing power. Consequently, a cryptosystem with perfect security and 128 bits of cryptographic strength is computationally infeasible to break via brute force attack.</t>
      </section>
      <section anchor="information-theoretic-security-and-perfect-security">
        <name>Information Theoretic Security and Perfect Security</name>
        <t>The highest level of cryptographic security with respect to a cryptographic secret (seed, salt, or private key) is called  <em>information-theoretic security</em> <xref target="ITPS"/>. A cryptosystem that has this level of security cannot be broken algorithmically even if the adversary has nearly unlimited computing power including quantum computing. It must be broken by brute force if at all. Brute force means that in order to guarantee success the adversary must search for every combination of key or seed. A special case of <em>information-theoretic security</em> is called <em>perfect-security</em> <xref target="ITPS"/>.  <em>Perfect-security</em> means that the ciphertext provides no information about the key. There are two well-known cryptosystems that exhibit <em>perfect security</em>. The first is a <em>one-time-pad</em> (OTP) or Vernum Cipher <xref target="OTP"/><xref target="VCphr"/>, the other is <em>secret splitting</em> <xref target="SSplt"/>, a type of secret sharing <xref target="SShr"/> that uses the same technique as a <em>one-time-pad</em>.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="KERI-ID" target="https://github.com/WebOfTrust/ietf-keri">
          <front>
            <title>IETF KERI (Key Event Receipt Infrastructure) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="CESR-ID" target="https://github.com/WebOfTrust/ietf-cesr">
          <front>
            <title>IETF CESR (Composable Event Streaming Representation) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="SAID-ID" target="https://github.com/WebOfTrust/ietf-said">
          <front>
            <title>IETF SAID (Self-Addressing IDentifier) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="OOBI-ID" target="https://github.com/WebOfTrust/ietf-oobi">
          <front>
            <title>IETF OOBI (Out-Of-Band-Introduction) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="DIDK-ID" target="https://github.com/WebOfTrust/ietf-did-keri">
          <front>
            <title>IETF DID-KERI Internet Draft</title>
            <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
              <organization>GLEIF</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="JSOND" target="https://www.json.org/json-en.html">
          <front>
            <title>JavaScript Object Notation Delimiters</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="CBORC" target="https://en.wikipedia.org/wiki/CBOR">
          <front>
            <title>CBOR Mapping Object Codes</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MGPK" target="https://github.com/msgpack/msgpack/blob/master/spec.md">
          <front>
            <title>Msgpack Mapping Object Codes</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="KERI" target="https://arxiv.org/abs/1907.02143">
          <front>
            <title>Key Event Receipt Infrastructure (KERI)</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="UIT" target="https://github.com/SmithSamuelM/Papers/blob/master/whitepapers/IdentifierTheory_web.pdf">
          <front>
            <title>Universay Identifier Theory</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="WhitePaper" value=""/>
        </reference>
        <reference anchor="DAD" target="https://github.com/SmithSamuelM/Papers/blob/master/whitepapers/DecentralizedAutonomicData.pdf">
          <front>
            <title>Decentralized Autonomic Data (DAD) and the three R's of Key Management</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="WhitePaper" value=""/>
        </reference>
        <reference anchor="IDSys" target="https://github.com/SmithSamuelM/Papers/blob/master/whitepapers/Identity-System-Essentials.pdf">
          <front>
            <title>Identity System Essentials</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization/>
            </author>
            <author initials="D." surname="Khovratovich" fullname="Dmitry Khovratovich">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="WhitePaper" value=""/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC0020">
          <front>
            <title>ASCII format for network interchange</title>
            <author fullname="V.G. Cerf" initials="V.G." surname="Cerf"/>
            <date month="October" year="1969"/>
          </front>
          <seriesInfo name="STD" value="80"/>
          <seriesInfo name="RFC" value="20"/>
          <seriesInfo name="DOI" value="10.17487/RFC0020"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC8820">
          <front>
            <title>URI Design and Ownership</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Section 1.1.1 of RFC 3986 defines URI syntax as "a federated and extensible naming system wherein each scheme's specification may further restrict the syntax and semantics of identifiers using that scheme." In other words, the structure of a URI is defined by its scheme. While it is common for schemes to further delegate their substructure to the URI's owner, publishing independent standards that mandate particular forms of substructure in URIs is often problematic.</t>
              <t>This document provides guidance on the specification of URI substructure in standards.</t>
              <t>This document obsoletes RFC 7320 and updates RFC 3986.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="190"/>
          <seriesInfo name="RFC" value="8820"/>
          <seriesInfo name="DOI" value="10.17487/RFC8820"/>
        </reference>
        <reference anchor="RFC4627">
          <front>
            <title>The application/json Media Type for JavaScript Object Notation (JSON)</title>
            <author fullname="D. Crockford" initials="D." surname="Crockford"/>
            <date month="July" year="2006"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4627"/>
          <seriesInfo name="DOI" value="10.17487/RFC4627"/>
        </reference>
        <reference anchor="JSch" target="https://json-schema.org">
          <front>
            <title>JSON Schema</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="JSch_202012" target="https://json-schema.org/draft/2020-12/release-notes.html">
          <front>
            <title>JSON Schema 2020-12</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC6901">
          <front>
            <title>JavaScript Object Notation (JSON) Pointer</title>
            <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
            <author fullname="K. Zyp" initials="K." surname="Zyp"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6901"/>
          <seriesInfo name="DOI" value="10.17487/RFC6901"/>
        </reference>
        <reference anchor="HCR" target="https://en.wikipedia.org/wiki/Collision_resistance">
          <front>
            <title>Hash Collision Resistance</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ITPS" target="https://en.wikipedia.org/wiki/Information-theoretic_security">
          <front>
            <title>Information-Theoretic and Perfect Security</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OTP" target="https://en.wikipedia.org/wiki/One-time_pad">
          <front>
            <title>One-Time-Pad</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="VCphr" target="https://www.ciphermachinesandcryptology.com/en/onetimepad.htm">
          <front>
            <title>Vernom Cipher (OTP)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SSplt" target="https://www.ciphermachinesandcryptology.com/en/secretsplitting.htm">
          <front>
            <title>Secret Splitting</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SShr" target="https://en.wikipedia.org/wiki/Secret_sharing">
          <front>
            <title>Secret Sharing</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CSPRNG" target="https://en.wikipedia.org/wiki/Cryptographically-secure_pseudorandom_number_generator">
          <front>
            <title>Cryptographically-secure pseudorandom number generator (CSPRNG)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IThry" target="https://en.wikipedia.org/wiki/Information_theory">
          <front>
            <title>Information Theory</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="BLAKE3" target="ttps://github.com/BLAKE3-team/BLAKE3">
          <front>
            <title>BLAKE3</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="BLAKE3Spec" target="https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf">
          <front>
            <title>BLAKE3 one function, fast everywhere</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="BLAKE3Hash" target="https://www.infoq.com/news/2020/01/blake3-fast-crypto-hash/">
          <front>
            <title>“BLAKE3 Is an Extremely Fast, Parallel Cryptographic Hash”</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="January" day="12"/>
          </front>
          <seriesInfo name="InfoQ" value=""/>
        </reference>
        <reference anchor="QCHC" target="https://cr.yp.to/hash/collisioncost-20090823.pdf">
          <front>
            <title>Cost analysis of hash collisions: Will quantum computers make SHARCS obsolete?</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="TMCrypto" target="https://eprint.iacr.org/2019/1492.pdf">
          <front>
            <title>“Too Much Crypto”</title>
            <author initials="J." surname="Aumasson" fullname="Jean-Philippe Aumasson">
              <organization/>
            </author>
            <date year="2021" month="May" day="24"/>
          </front>
        </reference>
        <reference anchor="EdSC" target="https://eprint.iacr.org/2020/823">
          <front>
            <title>The Provable Security of Ed25519: Theory and Practice Report</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PSEd" target="https://ieeexplore.ieee.org/document/9519456?denied=">
          <front>
            <title>The Provable Security of Ed25519: Theory and Practice</title>
            <author initials="J." surname="Brendel" fullname="Jacqueline Brendel">
              <organization/>
            </author>
            <author initials="C." surname="Cremers" fullname="Cas Cremers">
              <organization/>
            </author>
            <author initials="D." surname="Jackson" fullname="Dennis Jackson">
              <organization/>
            </author>
            <author initials="M." surname="Zhao" fullname="Mang Zhao">
              <organization/>
            </author>
            <date year="2021" month="May" day="24"/>
          </front>
          <seriesInfo name="2021 IEEE Symposium on Security and Privacy (SP)" value=""/>
        </reference>
        <reference anchor="TMEd" target="https://eprint.iacr.org/2020/1244.pdf">
          <front>
            <title>Taming the many EdDSAs</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Salt" target="https://medium.com/@fridakahsas/salt-nonces-and-ivs-whats-the-difference-d7a44724a447">
          <front>
            <title>Salts, Nonces, and Initial Values</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Stretch" target="https://en.wikipedia.org/wiki/Key_stretching">
          <front>
            <title>Key stretching</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HDKC" target="https://github.com/WebOfTrustInfo/rwot1-sf/blob/master/topics-and-advance-readings/hierarchical-deterministic-keys--bip32-and-beyond.md">
          <front>
            <title>Hierarchical Deterministic Keys: BIP32 &amp; Beyond</title>
            <author initials="C." surname="Allen" fullname="Christopher Allen">
              <organization/>
            </author>
            <author initials="S." surname="Applecline" fullname="Shannon Applecline">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OWF" target="https://en.wikipedia.org/wiki/One-way_function">
          <front>
            <title>One-way_function</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="COWF" target="http://www.crypto-it.net/eng/theory/one-way-function.html">
          <front>
            <title>One-way Function</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Crypto-IT" value=""/>
        </reference>
        <reference anchor="RB" target="https://en.wikipedia.org/wiki/Rainbow_table">
          <front>
            <title>Rainbow Table</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DRB" target="https://www.commonlounge.com/discussion/2ee3f431a19e4deabe4aa30b43710aa7">
          <front>
            <title>Dictionary Attacks, Rainbow Table Attacks and how Password Salting defends against them</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="BDay" target="https://en.wikipedia.org/wiki/Birthday_attack">
          <front>
            <title>Birthday Attack</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="BDC" target="https://auth0.com/blog/birthday-attacks-collisions-and-password-strength/">
          <front>
            <title>Birthday Attacks, Collisions, And Password Strength</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DHKE" target="https://www.infoworld.com/article/3647751/understand-diffie-hellman-key-exchange.html">
          <front>
            <title>Diffie-Hellman Key Exchange</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="KeyEx" target="https://libsodium.gitbook.io/doc/key_exchange">
          <front>
            <title>Key Exchange</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Hash" target="https://en.wikipedia.org/wiki/Cryptographic_hash_function">
          <front>
            <title>Cryptographic Hash Function</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="W3C_DID" target="https://w3c-ccg.github.io/did-spec/">
          <front>
            <title>W3C Decentralized Identifiers (DIDs) v1.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PKI" target="https://en.wikipedia.org/wiki/Public-key_cryptography">
          <front>
            <title>Public-key Cryptography</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SCPK" target="https://link.springer.com/content/pdf/10.1007%2F3-540-46416-6_42.pdf">
          <front>
            <title>Self-certified public keys</title>
            <author initials="M." surname="Girault" fullname="Marc Girault">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="EUROCRYPT 1991: Advances in Cryptology, pp. 490-497, 1991" value=""/>
        </reference>
        <reference anchor="SCURL" target="https://pdos.csail.mit.edu/~kaminsky/sfs-http.ps">
          <front>
            <title>SFS-HTTP: Securing the Web with Self-Certifying URLs</title>
            <author initials="M." surname="Kaminsky" fullname="M. Kaminsky">
              <organization/>
            </author>
            <author initials="E." surname="Banks" fullname="E. Banks">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Whitepaper, MIT, 1999" value=""/>
        </reference>
        <reference anchor="SFS" target="https://pdos.csail.mit.edu/~kaminsky/sfs-http.ps">
          <front>
            <title>Self-certifying File System</title>
            <author initials="D." surname="Mazieres" fullname="David Mazieres">
              <organization/>
            </author>
            <date year="2000" month="June" day="01"/>
          </front>
          <seriesInfo name="&quot;MIT Ph.D. Dissertation&quot;" value=""/>
        </reference>
        <reference anchor="SCPN" target="https://dl.acm.org/doi/pdf/10.1145/319195.319213">
          <front>
            <title>Escaping the Evils of Centralized Control with self-certifying pathnames</title>
            <author initials="D." surname="Mazieres" fullname="David Mazieres">
              <organization/>
            </author>
            <author initials="M." surname="Kaashoek" fullname="M. F. Kaashoek">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="&quot;MIT Laboratory for Computer Science, 2000&quot;" value=""/>
        </reference>
        <reference anchor="RFC0791">
          <front>
            <title>Internet Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="791"/>
          <seriesInfo name="DOI" value="10.17487/RFC0791"/>
        </reference>
        <reference anchor="RFC0799">
          <front>
            <title>Internet name domains</title>
            <author fullname="D.L. Mills" initials="D.L." surname="Mills"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="RFC" value="799"/>
          <seriesInfo name="DOI" value="10.17487/RFC0799"/>
        </reference>
        <reference anchor="DNS" target="https://en.wikipedia.org/wiki/Domain_Name_System">
          <front>
            <title>Domain Name System</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CAA" target="https://en.wikipedia.org/wiki/DNS_Certification_Authority_Authorization">
          <front>
            <title>DNS Certification Authority Authorization</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CA" target="https://en.wikipedia.org/wiki/Certificate_authority">
          <front>
            <title>Certificate Authority</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="CRL" target="https://en.wikipedia.org/wiki/Certificate_revocation_list">
          <front>
            <title>Certificate Revocation List</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <author fullname="R. Ankney" initials="R." surname="Ankney"/>
            <author fullname="A. Malpani" initials="A." surname="Malpani"/>
            <author fullname="S. Galperin" initials="S." surname="Galperin"/>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents. This document obsoletes RFCs 2560 and 6277. It also updates RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6960"/>
          <seriesInfo name="DOI" value="10.17487/RFC6960"/>
        </reference>
        <reference anchor="OCSPW" target="https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol">
          <front>
            <title>Online Certificate Status Protocol</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WOT" target="https://en.wikipedia.org/wiki/Web_of_trust">
          <front>
            <title>Web of Trust</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CEDS" target="https://resources.infosecinstitute.com/cybercrime-exploits-digital-certificates/#gref">
          <front>
            <title>“How Cybercrime Exploits Digital Certificates”</title>
            <author>
              <organization/>
            </author>
            <date year="2014" month="July" day="28"/>
          </front>
          <seriesInfo name="InfoSecInstitute" value=""/>
        </reference>
        <reference anchor="KDDH" target="https://krebsonsecurity.com/2019/02/a-deep-dive-on-the-recent-widespread-dns-hijacking-attacks/">
          <front>
            <title>A Deep Dive on the Recent Widespread DNS Hijacking Attacks</title>
            <author>
              <organization/>
            </author>
            <date year="2019" month="February" day="19"/>
          </front>
          <seriesInfo name="KrebsonSecurity" value=""/>
        </reference>
        <reference anchor="DNSH" target="https://arstechnica.com/information-technology/2019/01/a-dns-hijacking-wave-is-targeting-companies-at-an-almost-unprecedented-scale/">
          <front>
            <title>A DNS hijacking wave is targeting companies at an almost unprecedented scale</title>
            <author initials="D." surname="Goodin" fullname="Dan Goodin">
              <organization/>
            </author>
            <date year="2019" month="January" day="10"/>
          </front>
          <seriesInfo name="Ars Technica" value=""/>
        </reference>
        <reference anchor="SFTCA" target="https://pdfs.semanticscholar.org/7876/380d71dd718a22546664b7fcc5b413c1fa49.pdf">
          <front>
            <title>Search for Trust: An Analysis and Comparison of CA System Alternatives and Enhancements</title>
            <author initials="A." surname="Grant" fullname="A. C. Grant">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Dartmouth Computer Science Technical Report TR2012-716, 2012" value=""/>
        </reference>
        <reference anchor="DNSP" target="https://www.thesslstore.com/blog/dns-poisoning-attacks-a-guide-for-website-admins/">
          <front>
            <title>DNS Poisoning Attacks: A Guide for Website Admins</title>
            <author initials="G." surname="Stevens" fullname="G. Stevens">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
          <seriesInfo name="HashedOut" value=""/>
        </reference>
        <reference anchor="BGPC" target="https://petsymposium.org/2017/papers/hotpets/bgp-bogus-tls.pdf">
          <front>
            <title>Using BGP to acquire bogus TLS certificates</title>
            <author initials="H." surname="Birge-Lee" fullname="H. Birge-Lee">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Workshop on Hot Topics in Privacy Enhancing Technologies, no. HotPETs 2017" value=""/>
        </reference>
        <reference anchor="BBGP" target="https://www.usenix.org/conference/usenixsecurity18/presentation/birge-lee">
          <front>
            <title>Bamboozling certificate authorities with BGP</title>
            <author initials="H." surname="Birge-Lee" fullname="H. Birge-Lee">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="vol. 27th USENIX Security Symposium, no. 18, pp. 833-849, 2018" value=""/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="CTE" target="https://certificate.transparency.dev">
          <front>
            <title>Certificate Transparency Ecosystem</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CTAOL" target="https://queue.acm.org/detail.cfm?id=2668154">
          <front>
            <title>Certificate Transparency: Public, verifiable, append-only logs</title>
            <author initials="B." surname="Laurie" fullname="B. Laurie">
              <organization/>
            </author>
            <date year="2014" month="September" day="08"/>
          </front>
          <seriesInfo name="ACMQueue, vol. Vol 12, Issue 9" value=""/>
        </reference>
        <reference anchor="RT" target="https://www.links.org/files/RevocationTransparency.pdf">
          <front>
            <title>Revocation Transparency</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="VDS" target="https://github.com/google/trillian/blob/master/docs/papers/VerifiableDataStructures.pdf">
          <front>
            <title>Verifiable Data Structures</title>
            <author>
              <organization/>
            </author>
            <date year="2015" month="November" day="01"/>
          </front>
          <seriesInfo name="WhitePaper" value=""/>
        </reference>
        <reference anchor="ESMT" target="https://eprint.iacr.org/2016/683.pdf">
          <front>
            <title>Efficient sparse merkle trees</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Nordic Conference on Secure IT Systems, pp. 199-215, 2016" value=""/>
        </reference>
        <reference anchor="RC" target="https://en.wikipedia.org/wiki/Ricardian_contract">
          <front>
            <title>Ricardian Contract</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 1615?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>KERI Community at the WebOfTrust Github project.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
nC67+g2IgU3I4COmS4tq/L5fyY/c/k3ueXE/lqedUq2Qyj4v11etlXld6jiV
x/srh6WTwckIn4h8qVPv5tVPLzEn309psf6i38h2Mw+j/E2mtcjOcm4tO+gp
zu3luOcTIcwoGoavNwIf95Yhn/Cgt+czJziJ8SrMW4oj5w1l/EvkRGcTxzzb
if1i2iQMcj9jRwfJYW972tSFgF3h12Ho8A72hecHbQybRDujDZ6a72Vv8POb
d7P97I5qcJgwLUjYrjYYJGwgGEvQHrfJ4SB9CNtmyD7h59WXKLNTbA3Pc7E3
jsEY0f6qGKFJgRgxn7pXK6OyMFpNWU0bUt9q5R5G9VQnfVs079KrROWpVnjO
P2llSYwRVq1fNfuf5qMnp7x2Yo/F+lXG6uqrUffJST+8TIqXRrV7pWWXrd7m
PNOY3kOtfJJKVnVVl9u92Xoxt0eLSj09+ZS+0kxpJnUXk6R67bbsa7e3bxBZ
8pchQnQGSpSAjx3KSrl55Wr90a2VLEzVq6vabVbSEnFVz0nDzLLpxB+NTizn
uKg/r1sigi9WJlAWHp5L2s2yo7YSF2N7eX/b6KjLdLNfKV7lM7nKrDW8q827
5n2n37vo+OFBO/QGVKd/DBdvG6Ox49rrs51Y8fW+ntuDoA+72oTg63e1C9/H
CP5tT/s4IBBwO8EmddMDKhv+b0ebCfq2TY8edIuiDe1lBkEXH44XB91s4Ltr
IbEXvTJ9i1u1RsGkvskUebe1Hl+0y6W/2gPtsvoQN3oFpdtvLeTxy3Q5k1ar
Z0k243eVjKbfKvealC0/Te/y6Rx36Htet99yHjaPIW3Nq2Ep1nFeK4/6cTI2
0+ON3qpVNqu12E2231bUVTE1mdzp8bvmSLu8b89SzjF3eHhlLX/8m7gdyWP5
N33Dvgy9Yd+X4/2i9BXX5dL5VVXknLema7/Ow3FrX5ZroYVz3oY0QFel2wHL
jrNATIrD+D3mg7Dvw28ekva1k6+c3/8MH5vG0mL7kw+c7zeW35OT8mGa+4dL
gG9r/UZ6rI3/0npso8GH1oFmxvP13JBJVjK9Gfbm8dGgFC/JjVplqN+llvN6
9a6T6a3Xk3xSWL5FA0dpeVNYJWL1rKZlh5cvvXRlpDWMjvvodqTrRD1/03XG
5UnmRVVCw2LpiK4B3V2uYcF+M8PS7B/BsJar61zh5WbVUeziY+wu2WoU73tu
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

-->

</rfc>
