<?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-rfc2629 version 1.6.6 (Ruby 3.0.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ssmith-oobi-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.4 -->
  <front>
    <title abbrev="OOBI">Out-Of-Band-Introduction (OOBI) Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ssmith-oobi-00"/>
    <author fullname="Samuel M. Smith">
      <organization>ProSapien LLC</organization>
      <address>
        <email>sam@prosapien.com</email>
      </address>
    </author>
    <date year="2022" month="May" day="03"/>
    <area>AREA</area>
    <workgroup>WG Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>An Out-Of-Band Introduction (OOBI) provides a discovery mechanism that associates a given URI or URL with a given AID (Autonomic IDentifier) or SAID (Self-Addressing IDentifier) <xref target="KERI_ID"/><xref target="KERI"/><xref target="SAID_ID"/><xref target="OOBI_ID"/>. The URI provided by an OOBI acts as a service endpoint for the discovery of verifiable information about the AID or SAID. As such an OOBI itself is not trusted but must be verified. To clarify, any information obtained from the service endpoint provided in the OOBI must be verified by some other mechanism. An OOBI, however, enables any internet and web search infrastructure to act as an out-of-band infrastructure to discover information that is verified using an in-band mechanism or protocol. The primary in-band verification protocol is KERI <xref target="KERI_ID"/><xref target="KERI"/>. The OOBI protocol provides a web-based bootstrap and/or discovery mechanism for the KERI and the ACDC (Authentic Chained Data Container) protocols <xref target="KERI_ID"/><xref target="ACDC_ID"/><xref target="OOBI_ID"/>. Thus the security (or more correctly the lack of security) of an OOBI is out-of-band with respect to a KERI AID or an ACDC that uses KERI. To clarify, everything in KERI or that depends on KERI is end-verifiable, therefore it has no security dependency nor does it rely on security guarantees that may or may not be provided by web or internet infrastructure.  OOBIs provide a bootstrap that enables what we call Percolated Information Discovery (PID) which is based on Invasion Percolation Theory <xref target="IPT"/><xref target="DOMIP"/><xref target="PT"/><xref target="FPP"/>. This bootstrap may then be parlayed into a secure mechanism for accepting and updating data. The principal data acceptance and update policy is denoted BADA (Best-Available-Data-Acceptance).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://example.com/LATEST"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ssmith-oobi/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:WG@example.com"/>),
        which is archived at <eref target="https://example.com/WG"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/USER/REPO"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Vacuous discovery of IP resources such as service endpoints associated with a KERI AID (Autonomic IDentifier) or SAID (Self-Addressing IDentifier) requires an Out-Of-Band Introduction (OOBI) to associate a given URL with a given AID (Autonomic IDentifier) or SAID (Self-Addressing IDentifier) <xref target="KERI_ID"/><xref target="KERI"/><xref target="SAID_ID"/><xref target="OOBI_ID"/><xref target="URL"/>. The principal reason for this requirement is that KERI AIDs are derived in a completely decentralized manner. The root-of-trust of a KERI AID is completely independent of internet and DNS addressing infrastructure. Thus an IP address or URL could be considered a type of Out-Of-Band Infrastructure (OOBI) for KERI.  In this context, an introduction is an association between a KERI AID and a URL that may include either an explicit IP address or a DNS name for its host <xref target="RFC3986"/><xref target="URL"/>. We call this a KERI OOBI (Out-Of-Band-Introduction) and is a special case of Out-Of-Band-Infrastructure (OOBI) with a shared acronym. For the sake of clarity, unless otherwise qualified, OOBI is used to mean this special case of an <em>introduction</em> and not the general case of <em>infrastructure</em>.</t>
      <t>Moreover, because IP infrastructure is not trusted by KERI, a KERI OOBI by itself is considered insecure with respect to KERI, and any OOBI must therefore be later verified using a KERI BADA (Best-Available-Data-Acceptance) mechanism. The principal use case for an OOBI is to jump-start the discovery of a service endpoint for a given AID. To reiterate, the OOBI by itself is not sufficient for discovery because the OOBI itself is insecure. The OOBI merely jump-starts authenticated discovery.</t>
      <t>Using IP and DNS infrastructure to introduce KERI AIDs which AIDs are then securely attributed allows KERI to leverage IP and DNS infrastructure for discovery. KERI does not, therefore, need its own dedicated discovery network, OOBIs with URLs will do.</t>
      <t>A secondary use case for OOBI's is to provide service endpoints or URIs for SAD (Self-Addressed Data) items identifier by their SAID (Self-Addressing IDentifier). A SAID is a content address derived from a cryptographic digest of the serialization of a data item. The SAID protocol provides a derivation process where the SAID is actually included in the SAD. This makes a SAID self-referential. Verification of a SAD resource obtained by querying a URI that includes the SAD's SAID is accomplished by simply re-deriving the SAID of the SAD in the reply and comparing it to the SAID in the URI. The <tt>sad</tt> URI scheme may be simply expressed as <tt>sad:said</tt> where <em>said</em> is replaced with the actual SAID of the referenced SAD item. The mime-type of the returned SAD is determined by the serialization type such as JSON or CBOR for example.</t>
    </section>
    <section anchor="basic-oobi">
      <name>Basic OOBI</name>
      <t>The simplest form of a KERI  OOBI is a namespaced string, a tuple, a mapping, a structured message, or a structured attachment that contains both a KERI AID and a URL (or URI). The OOBI associates the URL with the AID. By convention the URL typically include the word <tt>oobi</tt> in its path to indicate that it is to be used as an OOBI but this is not required. In tuple form this abstractly,</t>
      <sourcecode type="python"><![CDATA[
(url, aid)
]]></sourcecode>
      <t>and concretely,</t>
      <sourcecode type="python"><![CDATA[
("http://8.8.5.6:8080/oobi", "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM")
]]></sourcecode>
      <t>An OOBI itself is not signed or otherwise authenticatable by KERI but may employ some other Out-Of-Band-Authentication (OOBA) mechanism i.e. non-KERI.</t>
      <t>The OOBI is intentionally simplistic to enable very low byte count introductions such as a may be conveyed by a QR code or Data matrix <xref target="QR"/><xref target="DM"/>.</t>
    </section>
    <section anchor="bada-best-available-data-acceptance-policy">
      <name>BADA (Best-Available-Data-Acceptance) Policy</name>
      <t>The recipient of an OOBI verifies the OOBI by authenticating the endpoint URL given by the OOBI with respect to an authorization signed by the controller of the AID given by the OOBI. This authorization follows the BADA (Best Available Data Acceptance) policy. The BADA policy provides monotonicity for updates to authentically signed data at rest. This follows best practices for zero-trust computing infrastructure for authentic data. The authorization is usually obtained as a resource in reply to a query to the OOBI URL. Specifically, the service endpoint at the URL responds with a resource that contains the supporting reply messages that are KERI authenticatable.</t>
      <section anchor="security-issues">
        <name>Security Issues</name>
        <t>KERI follows a "zero-trust" security model for authentic or securely attributable data. That means that data is signed both in motion and at rest. The primary attack against signed data is a replay attack. In a replay attack, an adversary obtains a copy of data with a verifiable signature and then replays it later. Without some other information, it is difficult for a host to detect that it is indeed a replay or malicious reuse of signed data and not the original use of that data.</t>
        <t>To elaborate, there are two primary types of attacks on authentic or authenticatable data-at-rest. The first is a replay attack. The second is a deletion attack. In a replay attack, an adversary keeps a copy of an authentic message or data together with its verifiable signature that has already been created and used by the controller of a KERI AID and then sometime later replays that same message with the signature. A verifier may thereby be fooled into believing that the replay is actually a new message and not a stale message. There are both interactive and non-interactive mitigations to replay attacks. Interactive mitigations use some type of nonce exchanged between updater and updatee. The nonce exchange introduces latency, scalability, and synchronization limitations. Non-interactive mitigations require a monotonic ordering mechanism. Typically monotonic ordering is based on logic rooted in a sequence number or date-time stamp. Because non-interactive mitigations are asynchronous, however, they do not have the latency and scalability limitations of interactive mitigations and are therefore preferred.</t>
        <t>The KEL (Key Event Log) of a KERI AID provides such a monotonic ordering mechanism as it employs both a sequence number and digest chaining. For authentic data directly anchored to or determined by a KEL, the relative KEL location determines the monotonic order. This ordering determination includes TEL (Transaction Event Logs) which are monotonically ordered with respect to anchoring seals in the associated KEL <xref target="PTEL_ID"/>.  For authentic data not directly anchored or included in a KEL, the relative key state (which is determined by the KEL) may be used in combination with a date-time stamp to ensure monotonic ordering. Finally, for any AID whose key state is fixed, a date-time stamp may be used with appropriate update logic to ensure monotonic ordering. The logic that ensures monotonic ordering is called BADA (Best Available Data Acceptance) and is described later in this section.</t>
        <t>A deletion attack is related to a replay attack. Once erased or deleted, a verifier may not be able to detect a replay attack of the deleted data because it has lost a record of the prior play to compare against. To elaborate, once erased, any stale authenticated data acting as authorization may be replayed without detection. This exposes a problem with the GPDR right-to-erasure, which if naively implemented as total erasure, exposes the data controller to a replay attack of erased data.</t>
        <t>The primary mitigation mechanism for deletion attacks is to maintain redundant copies of the signed authentic data. As long as one of the redundant copies has not been deleted then a comparison between the hosts of the redundant copies will expose the deletion attack given there is at least one undeleted copy. The monotonicity of the data is preserved in each copy. The host need merely compare copies. Only the current data item needs to be kept in full in order to support the use of that data.  For protection against replay attacks using stale data, only copies of the digest or signature of the data need to be kept. To reiterate, a replay attack can be detected by comparing the digest or signature (which is a type of digest) of any undeleted copy with the presented data.</t>
        <t>To summarize, authentic data at rest consists of the data item and signature(s). The two primary attacks are replay and deletion. Replay attack mitigation relies on replay monotonicity in data updates. Deletion attack mitigation relies on the redundancy of monotonic data.</t>
      </section>
      <section anchor="bada-rules">
        <name>BADA Rules</name>
        <t>The BADA (Best-Available-Data-Acceptance) rules apply to any data item stored in a database record whose value is used for some defined purpose. Updates are sourced from the controller of an associated KERI AID. The primary purpose of BADA policy is to enforce monotonicity of the updates with respect to the key state of that associated AID. This primarily protects against replay attacks on the database record. For example, a rollback to an earlier value via replay of an earlier update. An <em>Update</em> or change to the database record is <em>accepted</em> when it follows the BADA rules (policy) for acceptance. The BADA rules ensure the monotonicity of all updates.</t>
        <t>There are two different mechanisms for the controller of an AID to authorize updates to a given database record. The first is by including a reference to the update in the KEL of the authorizing AID. All entries in a KEL must be signed by the current signing key-pair(s) given by the key-state for that KEL. The second is by signing a date-time stamped update. In this case, the update either includes a reference to the key-state in the authorizing AID's KEL from which the signing key-pair(s) needed to verify the signature is obtained or the AID is ephemeral with a fixed key-state (has a non-transferable derivation code). The rules differ for each of the two mechanisms.</t>
        <section anchor="kel-anchored-updates">
          <name>KEL Anchored Updates</name>
          <t>The <em>Update</em> to some record is included in or anchored via a seal to the AID's key-state in its KEL. In either case, the <em>Update</em> is referenced in an event in the KEL of the AID. By virtue of the reference, the Controller of that KEL's AID is authorizing that Update. The record may have a <em>Prior</em> value that is being updated or the <em>Update</em> serves to create the initial value of the record. <em>Prior</em> means the prior record.</t>
          <artwork><![CDATA[
Rules for the acceptance of the *Update*:  (in order of priority)
  Confirm *Update* is anchored or included in AID's KEL.
  
  WHEN Update is anchored in AID's KEL AND...
    IF no *Prior* THEN accept. (always)
    IF *Prior* AND...
      *Update’s* anchor appears later in KEL than the Prior’s anchor THEN accept.  
  Otherwise, do not accept.
]]></artwork>
        </section>
        <section anchor="signed-not-anchored-updates">
          <name>Signed (Not Anchored) Updates</name>
          <t>The <em>Update</em> to some record is signed by the controller of the AID, but the <em>Update</em> itself is NOT included in or anchored to the AID's KEL. The record may have a <em>Prior</em> value that is being updated or the <em>Update</em> serves to create the initial value of the record. <em>Prior</em> means the prior record. All date-times are relative to the controller's date-time, NOT the database host's date-time.
There are two cases. These are as follows.</t>
          <ol spacing="normal" type="1"><li>Ephemeral AID whose key-state is fixed (no KEL needed)</li>
            <li>Persistent AID whose key-state is provided by KEL</li>
          </ol>
          <artwork><![CDATA[
Rules for the acceptance of the *Update*:  (in order of priority)
  Confirm signature on the *Update* verifies against indicated key-state under which signature was made.
  
  WHEN signature verifies AND...
    IF no *Prior* THEN accept (always).
    IF *Prior* THEN ...
      Compare the *Update’s* verified signature key-state against the *Prior's* verified signature key-state.
      IF the *Update’s* key-state appears later in KEL than the *Prior's* key-state THEN accept.
      IF both the *Update’s* and the *Prior's* key-states appear at the same location in KEL AND...
              *Update’s* date-time is later than the *Prior's* date-time THEN accept.           
  Otherwise, do not accept.
]]></artwork>
        </section>
      </section>
      <section anchor="run-off-the-crud">
        <name>RUN off the CRUD</name>
        <t>In the conventional client-server database architecture, the database server is responsible for creating records on the behalf of clients and assigning unique identifiers for each record. The server returns to the client the unique record identifier when it creates a record. The server is the source of truth.  But in a zero-trust (end-verifiable) decentralized peer-to-peer architecture, there is no client/server. Every host is a Peer. Each Peer is the source of truth for its own data. Therefore each Peer is responsible for managing its own records. Each Peer <bcp14>MUST</bcp14> be able to create unique identifiers for its own data. This inverts the architecture because each Peer creates a unique identifier for each of its own data items and sends that identifier with the data item to the other Peers. Each Peer stores data on the behalf of the other Peers. This inverted architecture enables consistent authentic data update policies that work asynchronously across multiple Peers and are replay and deletion attack resistant. Each Peer has an end-verifiable (via signature) monotonically updated view of the data records sourced from the other Peers.</t>
        <t>The acronym for the traditional client-server database update policy is CRUD (Create, Read, Update, Delete). The acronym for the new peer-to-peer end-verifiable monotonic update policy is RUN (Read, Update, Nullify). As described above, because the source of truth for each data item is a decentralized controller Peer, a given database hosted by any Peer does not <em>create</em> records in the traditional sense of a server creating records for a client. The hosting Peer merely stores a copy of an Update to records sent out by the source Peer (controller). Thus there is no Create action only Update action. When a Peer has not yet seen any version of a record, then its copy is vacuous and is replaced by the first Update its sees.  To clarify, a source Peer updates other Peers by sending out the latest copy or version of its own record. The original copy or version is always created by the source Peer.</t>
        <t>In order to ensure that the hosting Peers are resistant to replay and deletion attacks, they apply non-interactive monotonic update logic to any updates they receive from the source Peer. This means that a hosting Peer <bcp14>MUST NOT</bcp14> ever delete a record storing the latest version of an Update. Thus there is no Delete. Instead of Delete, Peers Nullify. A Nullify is a special type of Update that indicates that the data in the record is no longer valid without erasing the record that includes a reference to the latest monotonic determining anchor and/or date-time. There are two ways to indicate Nullification. The first is to assign a <tt>null</tt> value to the record. This works for single field records. The second is to assign a Boolean logic flag field that indicates the record has been Nullified. This works for multi-field records.</t>
      </section>
      <section anchor="oobi-keri-endpoint-authorization-okea">
        <name>OOBI KERI Endpoint Authorization (OKEA)</name>
        <t>An important use case for BADA-RUN is to process OOBIs that provide service endpoint discovery of the AIDS of KERI components. These components include but are not limited to, Controllers, Agents, Backers (Witness or Registrar), Watchers, Jurors, Judges, and Forwarders. An endpoint is a URL that may include an IP Scheme, Host, Port, and Path. The model for securely managing endpoint data starts with a Principal Controller of an AID. A Principal Controller authorizes some other component to act as a Player in a Role. Typically a Role serves some function needed by the Principal Controller to support its AID and may be reached at a service endpoint URL for that Role. Each component in turn is the Controller of its own AID. Each component AID is a Player that may provide or act in a Role on behalf of the Principal Controller by providing services at the associated service endpoint for its associated Role.</t>
        <t>The authorization model uses a zero-trust BADA-RUN policy to Update authorizations. A Principal Controller authorizes a Player by signing a Role authorization message that authorizes the Player's AID to act in a role. A Player authorizes its endpoint URL by signing an endpoint authorization message that authorizes a URL (location) with a scheme. Any Peer may keep an updated copy of the latest service endpoint URL(s) provided by a Player in a Role for a given Principal AID by following the BADA-RUN policy on updates sent to its database of these authorizations. The authorizations are issued in the context of the KERI key-state for the Principal and Player AIDs.</t>
        <t>Some components (Players in Roles) are implicitly authorized by the Principal controller by being explicitly designated in the KEL of the Principal, i.e. there is no explicit authorization message of the Player/Role. The authorization is implied by the KEL entry. For example, a Backer designation of a Witness or Registrar AID implicitly authorizes that AID to act as a Player in the Role of Witness or Registrar. An associated explicit endpoint authorization message signed by that Witness or Backer is still needed to provide the URL (location and scheme) of the actual service endpoint for that Player.</t>
        <t>The combination of KERI and the BADA-RUN policy enables any Controller to manage data in a zero-trust architecture at the database level. Any controller may promulgate verifiably authentic information with replay and deletion attack resistance. The authentic information may be merely source data or may be authorizations to enable some other function. The hard work of determining the associated key-state is provided by KERI. KERI makes the establishment of authenticity straightforward. The BADA-Run policy protects against replay and deletion attacks given authentic data.</t>
        <t>This approach follows the many thin layers approach of the Hourglass protocol model.  BADA-RUN is a thin layer on top of KERI authenticity. OOBIs are a thin discovery layer that sits on top of a thin authorization layer (leveraging reply messages and BADA-RUN logic) on top of KERI.</t>
        <t>This also follows the design ethos of KERI of minimally sufficient means. OOBIs leverage the existing Internet discovery mechanisms but without needing to trust the Internet security model (or the lack of one). End-verifiability in KERI provides safety to any OOBI discovery. The Internet's discovery mechanism, DNS/CA, is out-of-band with respect to KERI security guarantees. Thus OOBIs may safely use DNS/CA, web search engines, social media, email, and messaging as discovery mechanisms. The worst case is the OOBI fails to result in a successful discovery and some other OOBI must be used.</t>
        <t>Typically, the query of a ReST endpoint given by the OOBI URL could return as proof any associated authorizing reply message(s) as well as any associated KELs.</t>
        <section anchor="authorized-endpoint-disclosure-example">
          <name>Authorized Endpoint Disclosure Example</name>
          <t>This section provides an example of using OKEA (OOBI KERI Endpoint Authorization) with BADA-RUN for endpoint disclosure.</t>
          <t>The KERI protocol defines a generic <tt>reply</tt> message for updating information using the BADA-RUN policy. Each <tt>reply</tt> message includes a route, <tt>r</tt>, field that indicates both the type of the payload and the handler that should process the message. The route, <tt>r</tt>, field value is a slash, <tt>/</tt> delimited pathname string.  The Principal Controller AID is indicated by the CID (Controller ID) or <tt>cid</tt> field. The endpoint component Player is indicated the EID (Endpoint Controller ID) or <tt>eid</tt> field. There are two different authorization cases. In one case, a CID authorizes an EID in a Role. In the other case, an EID authorizes a Loc (URL location) for a scheme. There are two routes for each type of authorization. One route updates the authorization and the other nullifies the authorization. These are summarized as follows,</t>
          <ul spacing="normal">
            <li>Datetime stamped BADA authorization Reply message by CID of EID in Role (Update)</li>
            <li>Datetime stamped BADA deauthorization by CID of EID in Role (Nullify)</li>
            <li>Datetime stamped BADA authorization by EID of  URL for scheme (Update).</li>
            <li>Datetime stamped BADA deauthorization by EID of URL for scheme  (Nullify)</li>
          </ul>
          <t>A party interested in discovering the service endpoint for a given Controller AID initiates the discovery by providing an OOBI. A successful discovery will result in the return of signed <tt>reply</tt> messages that provide verifiable proof that the service endpoint (either directly provided in the OOBI, or indirectly provided via forwarding) is an authorized endpoint for that AID.</t>
          <t>To summarize, upon acceptance of an OOBI the recipient queries the provided URL for proof that the URL is an authorized endpoint for the given AID. The proof format may depend on the actual role of the endpoint. A current witness for an AID is designated in the current key state's latest establishment event in the AID's KEL. Therefore merely replying with the Key State or KEL may serve as proof for a witness introduced by an OOBI. The actual URL may be authorized by an attendant signed <tt>/loc/scheme</tt> reply message with the URL.</t>
          <t>Other roles that are not explicitly part of key-state (i.e. are not designated in KEL establishment events) must be authorized by explicit signed reply messages. Typically these will be a signed <tt>/end/role/</tt> reply message. The actual URL may be authorized by an attendant signed <tt>/loc/scheme</tt> reply message with the URL.</t>
          <t>Example reply messages.</t>
          <section anchor="player-eid-in-role-by-cid-update">
            <name>Player EID in Role by CID Update</name>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON000113_",
  "t": "rpy",
  "d": "Ekd189yFsX1eLhQ2NffI6AaF8ZxKXyej_jfn4wMNJq-w",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "r": "/end/role/add",
  "a":
  {
    "cid": "EhlsdBaCvxnW0z3m2OXxStaZkG76g0zC_vtPbPPglDK0",
    "role": "witness",
    "eid": "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY"
  }
}
]]></sourcecode>
          </section>
          <section anchor="player-eid-in-role-by-cid-nullify">
            <name>Player EID in Role by CID Nullify</name>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON000113_",
  "t": "rpy",
  "d": "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "r": "/end/role/cut",
  "a":
  {
    "cid": "EhlsdBaCvxnW0z3m2OXxStaZkG76g0zC_vtPbPPglDK0",
    "role": "witness",
    "eid": "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY"
  }
}
]]></sourcecode>
          </section>
          <section anchor="endpoint-location-with-scheme-by-eid-update">
            <name>Endpoint Location with Scheme by EID Update</name>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON000108_",
  "t": "rpy",
  "d": "EbAwspDQjS-Ve-tzDtAuzx4K8uhh-0AyXWZrSKm64PFQ",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "r": "/loc/scheme",
  "a":
  {
    "eid": "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY",
    "scheme": "http",
    "url": "http://localhost:8080/controller/tam"
  }
}

]]></sourcecode>
          </section>
          <section anchor="endpoint-location-with-scheme-by-eid-nullify">
            <name>Endpoint Location with Scheme by EID Nullify</name>
            <t>To Nullify set the <tt>url</tt> to the empty string <tt>""</tt>.</t>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON000108_",
  "t": "rpy",
  "d": "EbAwspDQjS-Ve-tzDtAuzx4K8uhh-0AyXWZrSKm64PFQ",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "r": "/loc/scheme",
  "a":
  {
    "eid": "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY",
    "scheme": "http",
    "url": ""
  }
}

]]></sourcecode>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sped-speedy-percolated-endpoint-discovery">
      <name>SPED (Speedy Percolated Endpoint Discovery)</name>
      <t>All the information needed to discover and verify is bootstrapped from the OOBI. Subsequent authorization is non-interactive thus making it highly scalable. BADA-RUN authorization is also lightweight for the host because the only memory requirements are a sequence number, date-time stamp window, and nullification state. This provides what we call zero-trust percolated discovery or speedy percolated discovery <xref target="PT"/><xref target="FPP"/><xref target="IPT"/><xref target="DOMIP"/>. Percolation means that each discoverer in turn may share what it discovers with any subsequent discoverers. Because the information so discovered is end-verifiable, the percolation mechanism does not need to be trusted. Percolating intermediaries do not need to be trusted.</t>
      <section anchor="jitntk-discovery">
        <name>JIT/NTK Discovery</name>
        <t>just-in-time/need-to-know discovery
ToDo</t>
      </section>
    </section>
    <section anchor="oobi-variants">
      <name>OOBI Variants</name>
      <section anchor="multi-oobi-moobi">
        <name>Multi-OOBI (MOOBI)</name>
        <t>An OOBI may include a list of URLs thus simultaneously making an introductory association between the AID and multiple URLs. This would be a multi-OOBI (MOOBI). In general, we may refer to a multi-OOBI as a special case of an OOBI without making a named distinction.</t>
      </section>
      <section anchor="oobi-as-url">
        <name>OOBI as URL</name>
        <t>URLs provide a namespace which means that the mapping between URL and AID can be combined into one namespaced URL where the AID is in the path component and any other hints such as roles or names are in the query component of the URL. This would be a type of self-describing OOBI URL.</t>
        <t>For example, suppose the  <tt>aid</tt>  is</t>
        <sourcecode type="python"><![CDATA[
EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM
]]></sourcecode>
        <t>This may be included as a path component of the <tt>url</tt> such as,</t>
        <sourcecode type="python"><![CDATA[
http://8.8.5.6:8080/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM
]]></sourcecode>
        <t>This is called an <strong><em>OOBI URL</em></strong> or <tt>iurl</tt> for short.
This means that all that is needed to bootstrap discovery of a KERI AID is an <tt>iurl</tt>. KERI can leverage the full IP/DNS infra-structure for discovery bootstrap of an <tt>aid</tt> by providing an <tt>iurl</tt> with that <tt>aid</tt> for lookup.</t>
        <t>The aid may act in any of the KERI roles such as <tt>watcher</tt>, <tt>witness</tt>, <tt>juror</tt>, <tt>judge</tt> or <tt>registrar</tt> but is usually a  <tt>controller</tt>. In the later case, the <tt>iurl</tt> may be a service endpoint provided by one of the supporting components for a given controller. Thus the <tt>aid</tt> in an OOBI may be either a controller id, <tt>cid</tt> or an endpoint provider id, <tt>eid</tt>. The resource at that URL in the OOBI is ultimately responsible for providing that detail but an OOBI as a URL may contain hints in the query string for the URL such as a <tt>role</tt> or <tt>name</tt> designation.</t>
        <sourcecode type="python"><![CDATA[
http://8.8.5.6:8080/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM?role=watcher&name=eve

https://example.com/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM?role=witness
]]></sourcecode>
        <t>When the role is provided in the <tt>iurl</tt>, the AID (EID) of the endpoint provider for that role would be discovered via the proof returned by querying the URL. The proof returned may indicate a different URL for that role. Thus a self-describing OOBI URL may act as a forwarding mechanism.</t>
        <t>To clarify, the minimum information in an OOBI is the pair, <tt>(url, aid)</tt>. A compact representation of an OOBI leverages the namespacing of the URL itself to provide the AID. Furthermore, the query string in the URL namespace may contain other information or hints such as the role of the service endpoint represented by the URL or a user-friendly name.</t>
      </section>
      <section anchor="well-known">
        <name>Well-Known</name>
        <t>An OOBI may be returned as the result of a get request to an IETF RFC 5785  well-known URL. For example,</t>
        <sourcecode type="python"><![CDATA[
 /.well-known/keri/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM
]]></sourcecode>
        <t>Where <tt>EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM</tt> is the AID
and the result of the request is either target URL or a redirection to the target URL where the target URL is something like</t>
        <sourcecode type="python"><![CDATA[
https://example.com/witness/witmer

http://8.8.5.5:8080/witness/witmer

http://10.0.5.15:8088/witness/witmer
]]></sourcecode>
        <t>The resultant target URL may be in a different domain or IP address from the <tt>well-known</tt> resource.</t>
      </section>
      <section anchor="full-cid-and-eid">
        <name>Full CID and EID</name>
        <t>A more verbose version would also include the endpoint role and the AID (EID) of the endpoint provider in a self-describing OOBI URL. For example,</t>
        <sourcecode type="python"><![CDATA[
https://example.com/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM/witness/BrHLayDN-mXKv62DAjFLX1_Y5yEUe0vA9YPe_ihiKYHE

http://8.8.5.6/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM/witness/BrHLayDN-mXKv62DAjFLX1_Y5yEUe0vA9YPe_ihiKYHE
]]></sourcecode>
        <t>Where 
<tt>EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM</tt> is the AID (CID) of the controller and</t>
        <t><tt>BrHLayDN-mXKv62DAjFLX1_Y5yEUe0vA9YPe_ihiKYHE</tt> is the AID (EID) of the controller's endpoint provider acting in the role of <tt>witness</tt>.</t>
      </section>
      <section anchor="keri-reply-messages-as-oobis">
        <name>KERI Reply Messages as OOBIs</name>
        <t>A more verbose expression for an OOBI would be a KERI reply message <tt>rpy</tt> that is unsigned. The route, <tt>r</tt>, field in the message starts with <tt>/oobi</tt>. This specifies that it is an OOBI so the recipient knows to apply OOBI processing logic to the message. A list of URLs may be provided so that one reply message may provide multiple introductions.   For example,</t>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rpy",
  "d": "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "/oobi/witness",
  "a" :
  {
    "urls":  
    [
      "http://example.com/watcher/watson", 
      "http://example.com/witness/wilma"
    ],
    "aid":  "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM"
  }
}
]]></sourcecode>
        <t>A service endpoint location reply message could also be re-purposed as an OOBI by using a special route path that starts with <tt>/oobi</tt> but also includes the AID being introduced and optionally the role of the service endpoint provider. This approach effectively combines the information from both the  <tt>/end/role</tt> and <tt>/loc/scheme</tt> reply messages into one. This may allow a shortcut to authenticate the service endpoint. This is shown below.</t>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rpy",
  "d": "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM/watcher",
  "a" :
  {
    "eid": "BrHLayDN-mXKv62DAjFLX1_Y5yEUe0vA9YPe_ihiKYHE",
    "scheme": "http", 
    "url":  "http://example.com/watcher/wilma"
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="self-and-blind-introductions">
      <name>Self and Blind Introductions</name>
      <t>A bare URL but no AID may be used as a blind OOBI for blind or self-introductions e.g. a blind OOBI or self OOBI. Querying that blind OOBI may return or result in a default target OOBI or default target endpoint reply. This provides a mechanism for self-introduction or blind i.e. self OOBI (SOOBI). Consider the examples of blind OOBIs below.</t>
      <sourcecode type="python"><![CDATA[
http://8.8.5.7:8080/oobi

http://localhost:8080/oobi

http://8.8.5.7:8080/oobi?role=controller&name=eve

http://localhost:8080/oobi?role=controller&name=eve
]]></sourcecode>
      <t>To elaborate, by default, the result of a <tt>GET</tt> request to a blind OOBI URL could be another OOBI with an AID that is the <tt>self</tt> AID of the node providing the blind OOBI endpoint or the actual authenticatable <tt>self</tt> endpoint with its AID or a default set of authenticatable endpoints. This is useful to bootstrap components in an infrastructure where the target URLs do not use a public DNS address but instead use something more secure like an explicit public IP address or a private IP or private DNS address. A self-introduction provides a bootstrap mechanism similar to a hostname configuration file with the exception that in the OOBI case the AID is not in the configuration file just the bare URL and the given node queries that bare URL (blind OOBI) to get the target endpoint AID.  This allows bootstrap using bare IP addresses in systems where the IP infrastructure is more securely managed than public DNS or where some other Out-Of-Band-Authentication (OOBA) mechanism is used in concert.</t>
      <t>To clarify, because a bare URL, blind OOBI, does not expose an AID, the resultant response when querying the OOBI may depend on other factors such as the source IP of the querier (requester) and/or another out-of-band-authentication (OOBA) mechanism. This supports the private bootstrap of infrastructure. 
Of course one could argue that this is just kicking the can down the road but IP addresses are correlatable and a blind OOBI can leverage IP infrastructure for discovery when used in combination with some other OOBA mechanism without unnecessary correlation.</t>
      <t>This may be especially useful to bootstrap components in an infrastructure where the target URLs do not use a public DNS address but use instead something more secure like an explicit public IP address or a private IP or private DNS address. A self-introduction provides a bootstrap mechanism similar to a hostname configuration file with the exception that in the OOBI case the AID is not in the configuration file just the bare OOBI URL and the given node queries that bare OOBI to get the target endpoint AID.  This allows bootstrap using bare IP addresses in systems where the IP infrastructure is more securely managed than public DNS or where some other Out-Of-Band-Authentication (OOBA) mechanism is used in concert.  Because the OOBI itself does not contain an AID the association of the resultant AID is not provided by the OOBI and the resultant AID's association must be secured by some other mechanism.</t>
      <t>For example, a given indirect mode controller is identified by its AID (CID). The controller must also create witness hosts with endpoints. This means first spinning up witness host nodes and creating witness AIDs (WIDs) for those nodes. Given that these WIDs must be eventually designated in the KEL for the CID, the controller of the CID can confirm using its KEL that the signed endpoint reply provided by a bare OOBI request is indeed signed by the corresponding private keys for a WID designated in its KEL. This means that the only place that the WID must appear is in the KEL and not in all the config files used to bootstrap communications between the CID host and its designated WID hosts. Bare OOBIs will do. The redundant configuration information may be a vector for a type of DDOS attack where corrupted inconsistent redundant configuration information results in a failure to boot a system that must be manually fixed. Redundancy for security is best applied in the context of a self-healing or resilient threshold structure that explicitly manages the redundancy as a security mechanism not as un-managed inadvertent redundancy.</t>
      <section anchor="onion-routing-with-blind-oobis">
        <name>Onion Routing with Blind OOBIs</name>
        <t>ToDo</t>
      </section>
    </section>
    <section anchor="oobi-forwarding">
      <name>OOBI Forwarding</name>
      <t>In every case, an OOBI may result in a proof for a different URL than that provided in the OOBI itself. The allows OOBI forwarding so that introductions produced as hard copies such as QR codes do not necessarily become stale. The recipient of the OOBI may choose to accept that proof or not. Ultimately the recipient only treats URLs as valid endpoints when they are fully KERI authenticated. Given that an OOBI result is always KERI authenticated before use in a given role, the worst case from a security perspective is that an OOBI may be part of a DDOS attack but not as part of a service endpoint cache poison attack.</t>
    </section>
    <section anchor="oobi-with-mfa">
      <name>OOBI with MFA</name>
      <t>An OOBI may be augmented with one or more Out-Of-Band Authentications (OOBAs) to minimize the likelihood of a DDOS OOBI attack. A given recipient may require as a precondition to accepting an OOBI one or more  OOBA mechanisms such as text messages, emails, etc that together provide some degree of non-KERI-based security to the OOBI. Thus an OOBI could employ out-of-band (with respect to KERI) multi-factor-authentication (MFA) to preclude any OOBI-based DDOS attacks on KERI.</t>
    </section>
    <section anchor="keri-oobi-use-in-installation-configuration">
      <name>KERI OOBI Use in Installation Configuration</name>
      <section anchor="oobi-discovery">
        <name>OOBI Discovery</name>
        <t>The main value of an OOBI is that it is compact and is not encumbered by authentication proofs but may be used to kick-start the process of authentication (proving).</t>
        <t>One way to pre-configure a vacuous KERI installation is to provide OOBIs in a configuration file. The bootstrap process of the installation then queries the associated URLs to retrieve the KERI authentication proofs (BADA) that then are used to populate its database securely. This simplifies the configuration file.</t>
        <t>In contrast, an alternative would be to populate the configuration file with the KERI authentication proofs. But these proofs may be quite verbose and cumbersome and may make the config file somewhat difficult to manage in human-readable/writable form. Furthermore if one already had the proofs one could just pre-populate the database with those proofs. Therefore OOBI based configuration files may be advantageous as either easier to manage or as a viable option when the proofs are not yet available at configuration time.</t>
        <t>Furthermore, a clean clone replay restart of a given KERI component is designed to fix any unverified corruption of its associated KELs.
If each component uses OOBIs to retrieve the authentication proofs from other components then all the components will have clean proofs instead of stale proofs.</t>
      </section>
      <section anchor="oobi-response">
        <name>OOBI Response</name>
        <t>Each KERI installation may also optionally provide an OOBI permissioning record list associated with each habitat to indicate
which OOBI queries it will respond to.  This may also be inited with
a config file.</t>
      </section>
    </section>
    <section anchor="data-oobi-doobi">
      <name>Data OOBI (DOOBI)</name>
      <t>ToDo</t>
      <section anchor="did-resolvers-with-oobis">
        <name>DID Resolvers with OOBIs</name>
        <t>ToDo</t>
      </section>
      <section anchor="did-comm-with-oobis">
        <name>DID-Comm with OOBIs</name>
        <t>ToDo</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>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>OOBIs are out-of-band with respect to the security of the infrastructure to which they provide an introduction. OOBIs assume that any introduced endpoints will be subsequently verified by their associated in-band mechanisms. There are no other security considerations.</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="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="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="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="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="ACDC_ID" target="https://github.com/trustoverip/tswg-acdc-specification">
          <front>
            <title>IETF ACDC (Authentic Chained Data Containers) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="RFC3986" target="https://datatracker.ietf.org/doc/html/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC8820" target="https://datatracker.ietf.org/doc/html/rfc8820">
          <front>
            <title>URI Design and Ownership</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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="IDSys" target="https://github.com/SmithSamuelM/Papers/blob/master/whitepapers/Identity-System-Essentials.pdf">
          <front>
            <title>Identity System Essentials</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PT" target="https://en.wikipedia.org/wiki/Percolation_theory">
          <front>
            <title>Percolation Theory</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FPP" target="https://en.wikipedia.org/wiki/First_passage_percolation">
          <front>
            <title>First Passage Percolation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IPT" target="https://www.physics.purdue.edu/flow/MMproject/Wilkinson1983.pdf">
          <front>
            <title>Invasion Percolation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DOMIP" target="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.103.018701">
          <front>
            <title>Dynamic Opinion Model and Invasion Percolation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PTEL_ID" target="https://github.com/WebOfTrust/ietf-ptel">
          <front>
            <title>IETF PTEL (Public Transaction Event Log) Internet Draft</title>
            <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
              <organization>GLEIF</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="Proof_ID" target="https://github.com/WebOfTrust/ietf-cesr-proof">
          <front>
            <title>IETF CESR-Proof Internet Draft</title>
            <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
              <organization>GLEIF</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="IPEX_ID" target="https://github.com/WebOfTrust/keripy/blob/master/ref/Peer2PeerCredentials.md">
          <front>
            <title>IPEX (Issuance and Presentation EXchange) Internet Draft</title>
            <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
              <organization>GLEIF</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 year="2022"/>
          </front>
        </reference>
        <reference anchor="JSON" target="https://www.json.org/json-en.html">
          <front>
            <title>JavaScript Object Notation Delimeters</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC8259" target="https://datatracker.ietf.org/doc/html/rfc8259">
          <front>
            <title>JSON (JavaScript Object Notation)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC4627" target="https://datatracker.ietf.org/doc/rfc4627/">
          <front>
            <title>The application/json Media Type for JavaScript Object Notation (JSON)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="URL" target="https://en.wikipedia.org/wiki/URL">
          <front>
            <title>URL</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="QR" target="https://en.wikipedia.org/wiki/QR_code">
          <front>
            <title>QR Code</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DM" target="https://en.wikipedia.org/wiki/Data_Matrix">
          <front>
            <title>Data Matrix</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RTE" target="https://gdpr-info.eu/art-17-gdpr/">
          <front>
            <title>GDPR Right to Erasure</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963IbV5LmfzxFLR2xJrUASMq2LDG2dwciKZvWhTRJWbYn
JsQCcECUVahCVxVIwQp37Gvsv3mWeZR9ks0vM8+tCtRtOtqzsePoaBHAuebJ
e+bJMxgMek3W5OYg2TpdNYPT2eBxWkwHJ0VTldPVpMnKItk+PX18spOcVWVT
Tsp8q5eOx5W5QRf6Yas3SRtzXVbrgyQrZmWvNy0nRbqgIadVOmsGdb3Imvmg
LMfZYG+vR/2+6qWVSQ+S0fnxqHdbVm+uq3K1PEhefZe8ok9ZcZ18h296b8ya
fp4eJLQeUxWmGRxhyN6NKVbmoJckriP93ayXNGc8QJIs0ixHg38yb9PFMjfD
Sbmgr9NqMj9I5k2zrA92d4Pfdnmsa1rxanyQvLw4Pt89Pz47pe9y2mbdbO70
bHR5fHHZ66WrZl5WtLIBdUiS2SrPBRQX6WJl8uT5MLkANPjXsrpOi+z3FEA+
AHgv0mVmiuTZs0P+3cja63TxT8uqrPlHXn6vKKsFdbshGFBLnMLrk6MD7tSk
1bUJVik7kZ2Z8ensslrVzW5mmhmfiPQRDDg5vnzCg9GJ34ELO+4kEjkJdHeb
5v+yoqbthvtMkrthwFDYtPkpQfsgub93/z62+PT4/LO2+MZU3S1isGT7qVkn
x4RITXJuJiZbNrS1WZXWTUVbXVXmT9kqPtL/XYxOjj5nu3WaTTvbxWDJ9oXJ
Z4PRdFqZugZ9nBzR1rNZZqo/c6OHxxfnn7PRiamrzkYxWLJ9WC6WRCzj3Ojx
XjTEbBbY87lZ0vbpu/RPw2Xd9+jw6PBj9t1gy+UNYfFyt6lvrwfpZDoZ1Esz
oaOb8DY6YMDYyfaINoITniSH8zQrzDQ5Sps0OSxp9/Sxqv8sUj5/cvjVo4cP
Nm+dmqZNlU6Iboc46CENuUvyZHfeLPLdajZB13DHWy+LbEbckM62LlfVxCQn
U4vYyfbL85Odg+Q7Q/slQFysae9vt+wZ0EIePry/95kLQddwITRVcmTq7LpI
iGkmp7eA8Txb9no9SEXHr3lqcKDN86bV2+yGJ0vH9e7+o71vh3v397/+Kpzq
Q5yLeBuNv/MPONB9HOjJ0cW6/iAm87Ayy/Pds3RJ0Nkd5+V4d0ELN9Xu7Txr
zFK+lyNs1gMauDGLwXENos3SvB4up7MI4bVlIi0T3zLB0s4uN6+L5Oht9iZb
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
Dk2yCLnYn9aivuLdXznJ7W6X6h1QJzhW9R0aptpG7YFCxwwhOCk1V9VVf7Oj
woUuw1v+y3Sdl+nUCWpCw2nuGNycT9n6EZgXB/eyNkzp8ioJL4khz+nH3SvI
APUH4FI7V+CRW/zwdd5lpKnx54PcioKHqIERtENhMALn1QQ1EXgVsjh3Wt6e
tCpZOCqGPMaQDg82jG3isTcmA8Z8X9MU4BktjOZDpbz20O4peOrAoteIqroB
pJc0isylZ+UE5c79lR9NdnQWU7xIPqcgBmoRIFoyMsP1SEP/aWtfFk9khYX6
uTa0DFM0XNLzNMjW6Pd693CVxESZgJyfGU95HnIOYMGhlLNQ0LFmvS0W9M6d
Q05NPOgdw9gozEcujUY55lH+7V+dH0RreNgVDT9lSTJYayga260LUfcRCtQ1
Wm7S1GpmWd5v+cd7Kw21yYyTf+yBB6WEQj+J1gqAP2CjyOELEF4wiVuUxYO/
ENxiXy2nZBA7E3HivNidzWxroqG7DLapsGdfEt26bRCXVIWWdrZjS495UdO1
dOCeaifwr5YgiCjbxxZUUKewVlqAbLVE4hZhD7m1VXz9ofWYqGDU3IJLxAjr
KVILzkab1Y6r1AZtAu6I47S5vrdqQGpRK2XAXWvetneJ51/W1vMSGxNRfqfP
MgyyCdRCYrQAkrnYOi5oXkhSeyVpytC+4N702oZgtF21u3EbVrK1kVveP0Db
Mr5cY7JOjNznsai6S7x1VyjwKtZe/CpRR6HX44wahm5Q4QBe8MAnApIF7INc
YHZ/2KYxlNlj0QUlaU1WiYs34DwGuvjYxggdxeKFYlrFKH63tPtdbGG3tdl/
CARVjWuvm1XAL6zYDhm1sm/hsZyEhwravXe9JNm62TpItqCR7e+hDNHe3t7+
/levt/r4rcFv1XItn6b4dPxmuv/w0fpJ/fO+eTb/8f6L2ezkwSh98vDXt09/
XpvfXv82K76+ff7ih78ObrUbj4IHMQZ7+N/l3t4B/2+4x//9N/4gbSs09cBN
p1P5Pt1CBet3nG61RaoLr2Se19PH6eHN2+LV3u9fLe6f/vyWaODXN999++B6
7/fD1zfN2fjs7Do/eiqjY3waFX2VCuzXRkZ8/OTl6avH6Q+/D+rHrx+MB69X
r88evXo4v37848OL1aPFqHnxaPLL/fqn77Jf8FLKH70/XH7s++Cu4ujfCfhO
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

-->

</rfc>
