<?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.7.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-linker-diem-adem-core-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>ADEM Core Specification</title>
    <seriesInfo name="Internet-Draft" value="draft-linker-diem-adem-core-00"/>
    <author fullname="Felix Linker">
      <organization/>
      <address>
        <email>linkerfelix@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="January" day="15"/>
    <area>Applications and Real-Time</area>
    <workgroup>Digital Emblems</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 36?>

<t>In times of armed conflict, the protective emblems of the red cross, red crescent, and red crystal are used to mark physical assets.
This enables military units to identify assets as respected and protected under international humanitarian law.
This draft specifies the format and trust architecture of a protective, digital emblem to network-connected infrastructure.
Such emblems mark assets as protected under IHL analogously to the physical emblems.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://adem-wg.github.io/adem-core-spec/draft-linker-diem-adem-core.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-linker-diem-adem-core/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Digital Emblems Working Group mailing list (<eref target="mailto:diem@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/diem"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/diem/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/adem-wg/adem-core-spec"/>.</t>
    </note>
  </front>
  <middle>
    <?line 43?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>International Humanitarian Law (IHL) mandates that military units must not attack medical facilities, such as hospitals.
The emblems of the red cross, red crescent, and red crystal are used to mark physical infrastructure (e.g., by a red cross painted on a hospital's rooftop), thereby enabling military units to identify those assets as protected under IHL.
This document specifies the structure and trust model of digital emblems for IHL that can be used to mark digital infrastructure as protected under IHL analogously to the physical emblems.
We call this system <em>ADEM</em>, which stands for an Authentic Digital EMblem.</t>
      <t>In ADEM, emblems are signed statements that mark a <em>assets</em> as proteced under IHL.
Emblems are issued by <em>emblem issuers</em>.
Emblem issuer can be authorized by <em>authorities</em>.
Authorities do so by signing <em>endorsements</em> for emblem issuers.
We call both emblems and endorsements <em>tokens</em>.
Emblems are consumed and validated by <em>validators</em>.</t>
    </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?>

<t><strong>Token</strong> A token is either an emblem or an endorsement and encoded as a JWS.</t>
      <t><strong>Emblem</strong> An emblem is a sign of protection under IHL.</t>
      <t><strong>Endorsement</strong> An endorsement associates a public key with an identity, and hence, resembles the idea of a certificate.
When signed by an authority, it attests that the authorized issuer can generally issue claims of protection.</t>
      <t><strong>Root Key</strong> Organizations control root keys, which identify them cryptographically.
Any key of an organization that is endorsed by other parties is a root key.</t>
      <t><strong>Asset</strong> An asset is a network-connected service that enjoys the specific protections under IHL.
Assets must be unambiguously identifiable and unambiguously protected, for example, if they are identified by a domain name that domain name must not be used for services that do not enjoy specific protections under IHL.</t>
      <t><strong>Emblem issuer</strong> An emblem issuer is an organization entitled to issue claims of protection for their digital infrastructure.</t>
      <t><strong>Authority</strong> An authority is an organization that is trusted by some to attest a party's status as protected.
This trust may stem from law.
For example, nation states or NGOs can take the role of authorities.</t>
      <t><strong>Organization</strong> An emblem issuer or autority.</t>
      <t><strong>Validator</strong> A validator is an agent interested in observing and verifying digital emblems.</t>
      <t>Beyond these terms, we use the terms "claim" and "header parameter" as references to the JWT specification <xref target="RFC7519"/>.</t>
    </section>
    <section anchor="tokens">
      <name>Tokens</name>
      <section anchor="identifiers-and-their-semantics">
        <name>Identifiers and their Semantics</name>
        <t>Emblems are issued for assets by emblem issuers, which in turn are authorized by authorities.
Both emblem issuers and authorities are <em>organizations</em>.
This section specifies how assets and organizations are identified.</t>
        <section anchor="asset-identifiers">
          <name>Asset Identifiers</name>
          <t>Assets are identified by <em>asset identifiers</em> (AIs).
Asset identifiers closely resemble Uniform Resource Identifiers (URIs) as specified in <xref target="RFC3986"/>.
However, to limit their scope, we do not follow the specification of URIs and instead define our own syntax.</t>
          <section anchor="syntax">
            <name>Syntax</name>
            <t>Asset identifiers follow the syntax (<tt>domain-name</tt>, <tt>IPv6</tt> defined below):</t>
            <artwork><![CDATA[
asset-identifier = domain-name | "[" IPv6 "]"
]]></artwork>
            <t>Domain names (<tt>domain-name</tt>) <bcp14>MUST</bcp14> be formatted as usual and specified in <xref target="RFC1035"/> with the exception that the leftmost label <bcp14>MAY</bcp14> be the single-character wildcard <tt>"*"</tt>.
In particular, <tt>"*"</tt> itself is a valid domain name in context of this specification.</t>
            <t>IPv6 addresses (<tt>IPv6</tt>) <bcp14>MUST</bcp14> be formatted following <xref target="RFC4291"/>.
IPv6 addresses <bcp14>MUST</bcp14> be global unicast or link-local unicast addresses.
Note that the syntax of IPv6 addresses also support IPv4 addresses through "IPv4-Mapped IPv6 Addresses" (cf. <xref target="RFC4291"/>, <eref target="https://www.rfc-editor.org/rfc/rfc4291.html#section-2.5.5.2">Section 2.5.5.2</eref>).</t>
            <t>These are examples of AIs:</t>
            <ul spacing="normal">
              <li>
                <t><tt>*.example.com</tt></t>
              </li>
              <li>
                <t><tt>[2001:0db8::248:1893:25c8:1946]</tt></t>
              </li>
              <li>
                <t><tt>[::FFFF:93.184.216.34]</tt></t>
              </li>
            </ul>
          </section>
          <section anchor="semantics">
            <name>Semantics</name>
            <t>Several kinds of assets can be identified by asset identifiers:</t>
            <ul spacing="normal">
              <li>
                <t>Network facing processes, e.g., web servers</t>
              </li>
              <li>
                <t>Computational devices both in the virtual sense, e.g., a virtual machine, and in the physical sense, e.g., a laptop</t>
              </li>
              <li>
                <t>Networks</t>
              </li>
            </ul>
            <t>An AI identifies a set of IPv4 or IPv6 addresses:</t>
            <ul spacing="normal">
              <li>
                <t>If the AI is an IPv6 address, it identifies this address only.</t>
              </li>
              <li>
                <t>If the AI an IPv6 address prefix, it identifies all IPv6 addresses matching that prefix.</t>
              </li>
              <li>
                <t>If the AI is a domain name, it identifies any address for which there is an <tt>A</tt> or <tt>AAAA</tt> record for that domain name.</t>
              </li>
              <li>
                <t>If the AI is a domain name starting with the wildcard <tt>"*"</tt>, it identifies any address for which there is an <tt>A</tt> or <tt>AAAA</tt> record for that domain name or any of its subdomains.</t>
              </li>
            </ul>
            <t>Any process reachable under any of the addresses pointed towards by <tt>address</tt> and on the port specified (or any port, if unspecified) is pointed by the respective AI.</t>
          </section>
          <section anchor="order">
            <name>Order</name>
            <t>AIs may not only be used for identification but also for constraint purposes.
For example, an endorsement may constrain emblems to only signal protection for a specific IP address range.
In this section, we define an order on AIs so that one can verify if an identifying AI complies with a constraining AI.</t>
            <t>We define an AI A to be <em>more general</em> than an AI B, if all of the following conditions apply:</t>
            <ul spacing="normal">
              <li>
                <t>If A encodes a domain name and does not contain the wildcard <tt>"*"</tt>, B encodes a domain name, too, and A is equal to B.</t>
              </li>
              <li>
                <t>If A encodes a domain name and contains the wildcard <tt>"*"</tt>, B encodes a domain name, too, and B is a subdomain of A excluding the wildcard <tt>"*"</tt>.
In this regard, any domain is considered a subdomain of itself.</t>
              </li>
              <li>
                <t>If A encodes an IP address, B encodes an IP address, too, and A is a prefix of B.</t>
              </li>
            </ul>
            <t>Note that AIs encoding a domain name are incomparable to AIs encoding IP addresses, i.e., neither can be more general than the other.</t>
          </section>
        </section>
        <section anchor="organization-identifiers">
          <name>Organization Identifiers</name>
          <t>Emblems can be associated to an organization.
Organizations are identified by URIs, bearing the scheme <tt>"https"</tt> and a domain name.
We call URIs identifying organizations <em>organization identifiers</em> (OIs).</t>
          <t>More precisely, an OI has the syntax:</t>
          <artwork><![CDATA[
organization-identifier = "https://" domain-name
]]></artwork>
          <t>Domain names must be formatted as usual, specified in <xref target="RFC1035"/>, but always represented in all lower-case.
For example, <tt>https://example.com</tt> is a valid OI, but <tt>https://EXAMPLE.COM</tt> is not.</t>
        </section>
      </section>
      <section anchor="token-encoding">
        <name>Token Encoding</name>
        <t>Tokens <bcp14>MUST</bcp14> be encoded as a JWS <xref target="RFC7515"/> or as an unsecured JWT as defined in <xref target="RFC7519"/>, <eref target="https://datatracker.ietf.org/doc/html/rfc7519#section-6">Section 6</eref>, encoded either in compact serialization or as signed CBOR Web Token (CWT) <xref target="RFC8392"/>.
Tokens encoded as JWS <bcp14>MUST</bcp14> only use JWS protected headers and <bcp14>MUST</bcp14> include the <tt>jwk</tt> header parameter.
Any token <bcp14>MUST</bcp14> include the <tt>cty</tt> (content type) header parameter.</t>
        <section anchor="key-identifiers-and-key-formats">
          <name>Key Identifiers and Key Formats</name>
          <t>Keys are encoded as JSON Web Keys (JWKs) <xref target="RFC7517"/>.
In context of ADEM, keys <bcp14>MUST</bcp14> include the <tt>alg</tt> parameter.
We identify keys using their key identifier <tt>kid</tt>.
Whenever a JWK in context of ADEM contains the <tt>kid</tt> parameter, it <bcp14>MUST</bcp14> be computed as per <xref target="jwk-hashing"/>.
See <xref target="jwk-hashing"/> for an example.</t>
        </section>
        <section anchor="emblems">
          <name>Emblems</name>
          <t>An emblem is encoded either as JWS or as an unsecured JWT which signals protection of assets.
It is distinguished by the <tt>cty</tt> header parameter value which <bcp14>MUST</bcp14> be <tt>"adem-emb"</tt>.
Its payload includes the JWT claims defined in the table below, following <xref target="RFC7519"/>, <eref target="https://datatracker.ietf.org/doc/html/rfc7519#section-4.1">Section 4.1</eref>.
All other registered JWT claims <bcp14>MUST NOT</bcp14> be included.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Claim</th>
                <th align="left">Status</th>
                <th align="left">Semantics</th>
                <th align="left">Encoding</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>ver</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">Version string</td>
                <td align="left">
                  <tt>"v1"</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>iat</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">As per <xref target="RFC7519"/></td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">
                  <tt>nbf</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">As per <xref target="RFC7519"/></td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">
                  <tt>exp</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">As per <xref target="RFC7519"/></td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">
                  <tt>iss</tt></td>
                <td align="left">
                  <bcp14>RECOMMENDED</bcp14></td>
                <td align="left">Organization signaling protection</td>
                <td align="left">OI</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>assets</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">AIs marked a protected</td>
                <td align="left">Array of AIs</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>emb</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">Emblem details</td>
                <td align="left">JSON object (as follows)</td>
              </tr>
            </tbody>
          </table>
          <t>Multiple AIs within <tt>assets</tt> may be desirable, e.g., to include both a asset's IPv4 and IPv6 address.
The claim value of <tt>emb</tt> <bcp14>MUST</bcp14> be a JSON <xref target="RFC8259"/> object with the following key-value mappings.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Claim</th>
                <th align="left">Status</th>
                <th align="left">Semantics</th>
                <th align="left">Encoding</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>prp</tt></td>
                <td align="left">
                  <bcp14>OPTIONAL</bcp14></td>
                <td align="left">Emblem purposes</td>
                <td align="left">Array of <tt>purpose</tt> (as follows)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>dst</tt></td>
                <td align="left">
                  <bcp14>OPTIONAL</bcp14></td>
                <td align="left">Permitted distribution channels</td>
                <td align="left">Array of <tt>distribution-method</tt> (as follows)</td>
              </tr>
            </tbody>
          </table>
          <artwork><![CDATA[
  purpose = "protective" | "indicative"

  distribution-method = "dns" | "icmp" | "udp"
]]></artwork>
          <!-- TODO: Explain distribution methods -->

<section anchor="example">
            <name>Example</name>
            <t>For example, an emblem might comprise the following header and payload.</t>
            <t>Header:</t>
            <sourcecode type="json"><![CDATA[
{
  "alg": "ES512",
  "jwk": { ... },
  "cty": "adem-emb"
}
]]></sourcecode>
            <t>Payload:</t>
            <sourcecode type="json"><![CDATA[
{
  "emb": {
    "dst": ["icmp"],
    "prp": ["protective"]
  },
  "iat": 1672916137,
  "nbf": 1672916137,
  "exp": 1675590932,
  "iss": "https://example.com",
  "assets": ["[2001:0db8:582:ae33::29]"]
}
]]></sourcecode>
          </section>
        </section>
        <section anchor="endorsements">
          <name>Endorsements</name>
          <t>Endorsements are encoded as JWSs.
Endorsements attest two statements: that a public key is affiliated with an organization, pointed to by OIs, and that this organization is eligible to issue emblems for their assets.
They are distinguished by the <tt>cty</tt> header parameter value which <bcp14>MUST</bcp14> be <tt>"adem-end"</tt>.
An endorsement's payload includes the JWT claims defined in the table below.
All otger registered JWT claims <bcp14>MUST NOT</bcp14> be included.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Claim</th>
                <th align="left">Status</th>
                <th align="left">Semantics</th>
                <th align="left">Encoding</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>ver</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">Version string</td>
                <td align="left">
                  <tt>"v1"</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>iat</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">As per <xref target="RFC7519"/></td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">
                  <tt>nbf</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">As per <xref target="RFC7519"/></td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">
                  <tt>exp</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">As per <xref target="RFC7519"/></td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">
                  <tt>iss</tt></td>
                <td align="left">
                  <bcp14>RECOMMENDED</bcp14></td>
                <td align="left">Endorsing organization</td>
                <td align="left">OI</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>sub</tt></td>
                <td align="left">
                  <bcp14>RECOMMENDED</bcp14></td>
                <td align="left">Endorsed organization</td>
                <td align="left">OI</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>key</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">Endorsed organization's public key</td>
                <td align="left">Endorsed key by reference to its <tt>kid</tt>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>log</tt></td>
                <td align="left">
                  <bcp14>OPTIONAL</bcp14></td>
                <td align="left">Root key CT logs</td>
                <td align="left">Array (as follows)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>end</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">Endorsed key can endorse further</td>
                <td align="left">Boolean</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>emb</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">Emblem constraints</td>
                <td align="left">JSON object (as follows)</td>
              </tr>
            </tbody>
          </table>
          <t>If an endorsement was signed by a root key, it <bcp14>MUST</bcp14> include <tt>log</tt>.
<tt>log</tt> maps to an array of JSON objects with the following claims.
The semantics of these fields are defined in <xref target="RFC6962"/> for <tt>v1</tt> and <xref target="RFC9162"/> for <tt>v2</tt>.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Claim</th>
                <th align="left">Status</th>
                <th align="left">Semantics</th>
                <th align="left">Encoding</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>ver</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">CT log version</td>
                <td align="left">
                  <tt>"v1"</tt> or <tt>"v2"</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>id</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">The CT log's ID</td>
                <td align="left">Base64-encoded string</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>hash</tt></td>
                <td align="left">
                  <bcp14>REQUIRED</bcp14></td>
                <td align="left">The binding certificate's leaf hash in the log</td>
                <td align="left">Base64-encoded string</td>
              </tr>
            </tbody>
          </table>
          <t><tt>emb</tt> resembles the emblem's <tt>emb</tt> claim and includes the following claims.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Claim</th>
                <th align="left">Status</th>
                <th align="left">Semantics</th>
                <th align="left">Encoding</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>prp</tt></td>
                <td align="left">
                  <bcp14>OPTIONAL</bcp14></td>
                <td align="left">Purpose constraint</td>
                <td align="left">Array of <tt>purpose</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>dst</tt></td>
                <td align="left">
                  <bcp14>OPTIONAL</bcp14></td>
                <td align="left">Distribution method constraint</td>
                <td align="left">Array of <tt>distribution-method</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>assets</tt></td>
                <td align="left">
                  <bcp14>OPTIONAL</bcp14></td>
                <td align="left">Asset constraint</td>
                <td align="left">Array of AIs</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>wnd</tt></td>
                <td align="left">
                  <bcp14>OPTIONAL</bcp14></td>
                <td align="left">Maximum emblem lifetime</td>
                <td align="left">Integer</td>
              </tr>
            </tbody>
          </table>
          <t>We say that an endorsement <em>endorses</em> a token if its <tt>key</tt> claim equals the token's verification key, and its <tt>sub</tt> claim equals the token's <tt>iss</tt> claim.
We note that the latter includes the possibility of both <tt>sub</tt> and <tt>iss</tt> being undefined.</t>
          <t>We say that an emblem is <em>valid</em> with respect to an endorsement if all the following conditions apply:</t>
          <ul spacing="normal">
            <li>
              <t>The endorsement's <tt>emb.prp</tt> claim is undefined or a superset of the emblem's <tt>emb.prp</tt> claim.</t>
            </li>
            <li>
              <t>The endorsement's <tt>emb.dst</tt> claim is undefined or a superset of the emblem's <tt>emb.dst</tt> claim.</t>
            </li>
            <li>
              <t>The endorsement's <tt>emb.assets</tt> claim is undefined or for each AI within the emblem's <tt>emb.assets</tt> claim, there exists an AI within the endorsement's <tt>emb.assets</tt> claim which is more general than the emblem's <tt>emb.assets</tt> claim.</t>
            </li>
            <li>
              <t>The endorsement's <tt>emb.wnd</tt> claim is undefined or the sum of emblem's <tt>nbf</tt> and the endorsement's <tt>emb.wnd</tt> claims is greater than or equal to the emblem's <tt>exp</tt> claim.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="pk-distribution">
      <name>Public Key Commitment</name>
      <t>Parties must undeniably link their root public keys to their OI.
In this section, we specify the configuration of a emblem issuer's OI.
Root public keys are all public keys which are only endorsed by third parties and never endorsed by the organization itself.
A party <bcp14>MAY</bcp14> have multiple root public keys.
For a root public key to be configured correctly, there <bcp14>MUST</bcp14> be an X.509 certificate that:</t>
      <ul spacing="normal">
        <li>
          <t><bcp14>MUST NOT</bcp14> be revoked</t>
        </li>
        <li>
          <t><bcp14>MUST</bcp14> be logged in the Certificate Transparency logs <xref target="RFC6962"/>, <xref target="RFC9162"/>
          </t>
          <ul spacing="normal">
            <li>
              <t>Note that log inclusion requires a valid certificate chain that leads to
one of the logs accepted root certificates. Clients are <bcp14>RECOMMENDED</bcp14> to verify
that this chain is valid and that none of the certificates along it have been
revoked.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><bcp14>MUST</bcp14> be valid for at least all the following domains (<tt>&lt;OI&gt;</tt> is understood to be a placeholder for the party's OI):
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>adem-configuration.&lt;OI&gt;</tt></t>
            </li>
            <li>
              <t>For root public key's kid <tt>&lt;KID&gt;</tt> (to be understood as a placeholder): <tt>&lt;KID&gt;.adem-configuration.&lt;OI&gt;</tt></t>
            </li>
          </ul>
        </li>
      </ul>
      <t>We intentionally do not specify how clients should check a certificate's revocation status.
It is <bcp14>RECOMMENDED</bcp14> that clients use offline revocation checks that are provided by major browser vendors, for example, <eref target="https://wiki.mozilla.org/CA/Revocation_Checking_in_Firefox">OneCRL or CRLite by Mozilla</eref>, or <eref target="https://chromium.googlesource.com/playground/chromium-org-site/+/refs/heads/main/Home/chromium-security/crlsets.md">CRLSet by Chrome</eref>.</t>
    </section>
    <section anchor="signs-of-protection">
      <name>Signs of Protection</name>
      <t>A sign of protection is an emblem, accompanied by one or more endorsements.
Whenever a token includes OIs (in <tt>iss</tt> or <tt>sub</tt> claims), these OIs must be configured accordingly.
An OI serves to identify an emblem issuer or authority in the real world.
Hence, parties <bcp14>MUST</bcp14> configure the website hosted under their OI to provide sufficient identifying information.</t>
      <section anchor="verification">
        <name>Verification</name>
        <t>Whenever a validator receives an emblem, they <bcp14>MAY</bcp14> check if it is valid.
The validity of an emblem is defined with respect to a public key.
A validity checking algorithm <bcp14>MUST</bcp14> returns the following values.
The order of these values encodes the <em>strength</em> of the verification result.</t>
        <ol spacing="normal" type="1"><li>
            <t><tt>UNSIGNED</tt></t>
          </li>
          <li>
            <t><tt>INVALID</tt></t>
          </li>
          <li>
            <t><tt>SIGNED-UNTRUSTED</tt></t>
          </li>
          <li>
            <t><tt>SIGNED-TRUSTED</tt></t>
          </li>
          <li>
            <t><tt>ORGANIZATIONAL-UNTRUSTED</tt></t>
          </li>
          <li>
            <t><tt>ORGANIZATIONAL-TRUSTED</tt></t>
          </li>
          <li>
            <t><tt>ENDORSED-UNTRUSTED</tt></t>
          </li>
          <li>
            <t><tt>ENDORSED-TRUSTED</tt></t>
          </li>
        </ol>
        <t>Given an input public key and an emblem with a set of endorsements, a verification algorithm takes the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>If the emblem does not bear a signature, return <tt>UNSIGNED</tt>.</t>
          </li>
          <li>
            <t>Run the <em>signed emblem verification procedure</em> (<xref target="signed-emblems"/>; results in one of <tt>SIGNED-TRUSTED</tt>, <tt>SIGNED-UNTRUSTED</tt>, or <tt>INVALID</tt>).</t>
          </li>
          <li>
            <t>If previous procedure resulted in <tt>INVALID</tt> or the emblem does not include the <tt>iss</tt> claim, return the last verification procedure's result and the emtpy set of OIs.</t>
          </li>
          <li>
            <t>Run the <em>organizational emblem verification procedure</em> (<xref target="org-emblems"/>; results in one of <tt>ORGANIZATIONAL-TRUSTED</tt>, <tt>ORGANIZATIONAL-UNTRUSTED</tt>, <tt>INVALID</tt>).</t>
          </li>
          <li>
            <t>If the previous procedure resulted in <tt>INVALID</tt> return <tt>INVALID</tt> and the empty set of OIs.</t>
          </li>
          <li>
            <t>If all tokens include the same <tt>iss</tt> claim, return the strongest return value matching <tt>*-TRUSTED</tt>, the strongest return value matching <tt>*-UNTRUSTED</tt> provided that it is strictly stronger than the strongest return value matching <tt>*-TRUSTED</tt>, and the empty set of OIs.</t>
          </li>
          <li>
            <t>Run the <em>endorsed emblem verification procedure</em> (<xref target="endorsed-emblems"/>; results in a set of OIs and one of <tt>ENDORSED-TRUSTED</tt>, <tt>ENDORSED-UNTRUSTED</tt>, <tt>INVALID</tt>).</t>
          </li>
          <li>
            <t>If the previous procedure resulted in <tt>INVALID</tt> return <tt>INVALID</tt> and the empty set of OIs.</t>
          </li>
          <li>
            <t>Return the strongest return value matching <tt>*-TRUSTED</tt>, the strongest return value matching <tt>*-UNTRUSTED</tt> provided that it is strictly stronger than the strongest return value matching <tt>*-TRUSTED</tt>, and the set of OIs returned by the endorsed emblem verification procedure.</t>
          </li>
        </ol>
        <t>Note that the endorsed emblem verification procedure resulting in <tt>INVALID</tt> is handled implicitly in step 8.
As the procedure did not terminate in step 5, organizational verification must have been successful.
Hence, <tt>INVALID</tt> cannot be the strongest return value, and an emblem not being accompanied by valid endorsements are downgraded to organizational emblems.</t>
        <t>The set of OIs returned by the verification procedure encodes the OIs of endorsing parties where verification passed.</t>
        <section anchor="comments-on-trust-policies">
          <name>Comments on Trust Policies</name>
          <t>We strongly RECOMMEND against accepting emblems resulting in <tt>SIGNED-UNTRUSTED</tt>.
In such cases, validators should aim to authenticate the respective public keys via other, out-of-band methods.
This effectively lifts the result to <tt>SIGNED-TRUSTED</tt>.
Signed emblems are supported for cases of emergency where an emblem issuer is able to communicate one or more public key, but might not be able to set up a signing infrastructure linking their assets to a root key.</t>
          <t>There is no definite guideline on how to choose which keys to trust, i.e., which keys to pass as trusted public key to the verification procedure.
Some validators may have pre-existing trust relationships with some authorities, e.g., military units of a nation state could use the public keys of their nation state or allies.
Other validators might be fine with fetching public keys authenticated only by the web PKI.</t>
        </section>
      </section>
      <section anchor="protection">
        <name>Protection</name>
        <t>An emblem for which the verification procedure produces a result other than <tt>INVALID</tt> marks any asset whose address is identified by at least one of the emblem's AIs.
Such an emblem signals that the respective asset is enjoys the specific protections of IHL.</t>
        <t>Emblem issuers <bcp14>MUST</bcp14> only issue emblems for assets that are used only for protected purposes.</t>
      </section>
    </section>
    <section anchor="algorithms">
      <name>Algorithms</name>
      <section anchor="jwk-hashing">
        <name>JWK Hashing</name>
        <t>Context:</t>
        <ul spacing="normal">
          <li>
            <t>Input: A JWK public key as per <xref target="RFC7517"/> in arbitrary encoding.</t>
          </li>
          <li>
            <t>Output: A hash of the JWK</t>
          </li>
        </ul>
        <t>Algorithm:</t>
        <ol spacing="normal" type="1"><li>
            <t>Parse the JWK as JSON object.</t>
          </li>
          <li>
            <t>Drop the <tt>kid</tt> parameter from the JWK.</t>
          </li>
          <li>
            <t>Compute the key's thumbprint using SHA-256 as per <xref target="RFC7638"/>.</t>
          </li>
          <li>
            <t>Return the digest in base32 encoding as per <xref target="RFC4648"/> in all lower-case and with trailing <tt>=</tt> removed.</t>
          </li>
        </ol>
      </section>
      <section anchor="signed-emblems">
        <name>Signed Emblem Verification Procedure</name>
        <t>Context:</t>
        <ul spacing="normal">
          <li>
            <t>Input: An emblem, a set of endorsements, and a trusted public key.</t>
          </li>
          <li>
            <t>Output: <tt>SIGNED-TRUSTED</tt>, <tt>SIGNED-UNTRUSTED</tt>, or <tt>INVALID</tt>.</t>
          </li>
        </ul>
        <t>Algorithm:</t>
        <ol spacing="normal" type="1"><li>
            <t>Ignore all endorsements including an <tt>iss</tt> claim different to the emblem's <tt>iss</tt> claim.
A defined <tt>iss</tt> claim is understood to be different to an undefined <tt>iss</tt> claim.</t>
          </li>
          <li>
            <t>Verify every signature.</t>
          </li>
          <li>
            <t>Verify that all endorsements form a consecutive chain where there is a unique root endorsement and the public key which verifies the emblem is transitively endorsed by that root endorsement.</t>
          </li>
          <li>
            <t>Verify that no endorsement expired.</t>
          </li>
          <li>
            <t>Verify that all endorsements bear the claim <tt>end=true</tt> except for the emblem signing key's endorsement.</t>
          </li>
          <li>
            <t>Verify that the emblem is valid with regard to every endorsement.</t>
          </li>
          <li>
            <t>If any of the aforementioned verification steps fail, return <tt>INVALID</tt>.
If there is a token signed by the trusted input public key, return <tt>SIGNED-TRUSTED</tt>.
Otherwise, return <tt>SIGNED-UNTRUSTED</tt>.</t>
          </li>
        </ol>
        <t>Distribution methods <bcp14>MAY</bcp14> indicate an order of tokens to guide clients assembling the chain of endorsements in step 3.
Whenever such an order is specified, clients <bcp14>MAY</bcp14> immediately reject a set of tokens as invalid if the indicated order does not yield a valid chain of endorsements.</t>
      </section>
      <section anchor="org-emblems">
        <name>Organizational Emblem Verification Procedure</name>
        <t>Context:</t>
        <ul spacing="normal">
          <li>
            <t>Assumptions: Signed emblem verification has been performed and did not return <tt>INVALID</tt>.
Every token as part of the input includes the <tt>iss</tt> claim.</t>
          </li>
          <li>
            <t>Input: An emblem, a set of endorsements, and a trusted public key.</t>
          </li>
          <li>
            <t>Output: <tt>ORGANIZATIONAL-TRUSTED</tt>, <tt>ORGANIZATIONAL-UNTRUSTED</tt>, or <tt>INVALID</tt>.</t>
          </li>
        </ul>
        <t>Algorithm:</t>
        <ol spacing="normal" type="1"><li>
            <t>Ignore all endorsements including an <tt>iss</tt> claim different to the emblem's <tt>iss</tt> claim.</t>
          </li>
          <li>
            <t>Verify that the top-most endorsement's <tt>iss</tt> claim value (its OI) is configured correctly as specified in <xref target="pk-distribution"/>.</t>
          </li>
          <li>
            <t>If the aforementioned verification step fails, return <tt>INVALID</tt>.
If the top-most endorsing key is equal to the trusted input public key, return <tt>ORGANIZATIONAL-TRUSTED</tt>. Otherwise, return <tt>ORGANIZATIONAL-UNTRUSTED</tt>.</t>
          </li>
        </ol>
      </section>
      <section anchor="endorsed-emblems">
        <name>Endorsed Emblem Verification Procedure</name>
        <t>Context:</t>
        <ul spacing="normal">
          <li>
            <t>Assumptions: Organizational emblem verification has been performed and did not return <tt>INVALID</tt>.
There are emblems as part of the input including an <tt>iss</tt> claim different to the emblem's <tt>iss</tt> claim.</t>
          </li>
          <li>
            <t>Input: An emblem, a set of endorsements, and a trusted public key.</t>
          </li>
          <li>
            <t>Output: <tt>ENDORSED-TRUSTED</tt>, <tt>ENDORSED-UNTRUSTED</tt>, or <tt>INVALID</tt>, and a set of OIs.</t>
          </li>
        </ul>
        <t>Algorithm:</t>
        <ol spacing="normal" type="1"><li>
            <t>Ignore all endorsements including an <tt>iss</tt> claim equal to the emblem's <tt>iss</tt> claim.</t>
          </li>
          <li>
            <t>For every endorsement:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>Verify its signature.</t>
              </li>
              <li>
                <t>Verify that it endorses the top-most endorsing key with the same <tt>iss</tt> claim as the emblem.</t>
              </li>
              <li>
                <t>Verify that it did not expire.</t>
              </li>
              <li>
                <t>Verify that it bears the claim <tt>end=true</tt>.</t>
              </li>
              <li>
                <t>Verify that the emblem is valid with regard to this endorsement.</t>
              </li>
              <li>
                <t>Implementations <bcp14>SHOULD</bcp14> verify that the endorsement's <tt>iss</tt> claim value (its OI) is configured correctly as specified in <xref target="pk-distribution"/>.</t>
              </li>
              <li>
                <t>Should any of the aforementioned verification steps fail, ignore this endorsement.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If there are no endorsements remaining after the last step, return <tt>INVALID</tt> and the empty set of OIs.
If in the set of remaining endorsements, there is an endorsement with a verification key equal to the trusted input public key, return <tt>ENDORSED-TRUSTED</tt>.
Otherwise, return <tt>ENDORSED-UNTRUSTED</tt>.
In both the latter cases, also return the set of all <tt>iss</tt> claims of the remaining endorsements.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="no-endorsements-without-iss">
        <name>No Endorsements without <tt>iss</tt></name>
        <t>The procedures to verify organizational or endorsed emblems as specified in <xref target="org-emblems"/> and <xref target="endorsed-emblems"/> assume that the emblem's <tt>iss</tt> claim is defined.
Practically speaking, this implies that parties can only go beyond pure public key authentication (where public keys need to be authenticated out-of-band) by stating an OI.</t>
        <t>The constraints on well-configured OIs offers two beneficial security properties:</t>
        <ul spacing="normal">
          <li>
            <t>Parties cannot equivocate their keys, i.e., they need to commit to a consistent set of keys.</t>
          </li>
          <li>
            <t>Parties cannot deny having used certain root public keys.</t>
          </li>
        </ul>
        <t>These properties stem from parties needing to include a hash of their key in a TLS certificate, and consequently, in certificate transparency logs.</t>
      </section>
      <section anchor="token-order">
        <name>Token Order</name>
        <t>As specified in <xref target="signed-emblems"/>, clients <bcp14>MAY</bcp14> reject sets of tokens as invalid if the order of tokens as indicated by the sending client does not yield a valid chain of endorsements.
This allows an adversary to force rejection of a set of tokens by altering, e.g., sequence numbers on non-integrity protected channels such as UDP.</t>
        <t>However, this does not constitute a new attack.
Such adversaries could flip a bit in the emblem's signature, rendering the set of tokens invalid, too.</t>
      </section>
      <section anchor="key-identifiers">
        <name>Key Identifiers</name>
        <t>Key identifiers were designed such that they commit to the identified key, i.e., key identifiers must provide strong collision-resistance.
This is ensured by computing it using SHA-256.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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>
      <reference anchor="RFC7519">
        <front>
          <title>JSON Web Token (JWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <date month="May" year="2015"/>
          <abstract>
            <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7519"/>
        <seriesInfo name="DOI" value="10.17487/RFC7519"/>
      </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="RFC1035">
        <front>
          <title>Domain names - implementation and specification</title>
          <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
          <date month="November" year="1987"/>
          <abstract>
            <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="13"/>
        <seriesInfo name="RFC" value="1035"/>
        <seriesInfo name="DOI" value="10.17487/RFC1035"/>
      </reference>
      <reference anchor="RFC4291">
        <front>
          <title>IP Version 6 Addressing Architecture</title>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <date month="February" year="2006"/>
          <abstract>
            <t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
            <t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4291"/>
        <seriesInfo name="DOI" value="10.17487/RFC4291"/>
      </reference>
      <reference anchor="RFC7515">
        <front>
          <title>JSON Web Signature (JWS)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <date month="May" year="2015"/>
          <abstract>
            <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7515"/>
        <seriesInfo name="DOI" value="10.17487/RFC7515"/>
      </reference>
      <reference anchor="RFC8392">
        <front>
          <title>CBOR Web Token (CWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
          <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
          <date month="May" year="2018"/>
          <abstract>
            <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8392"/>
        <seriesInfo name="DOI" value="10.17487/RFC8392"/>
      </reference>
      <reference anchor="RFC7517">
        <front>
          <title>JSON Web Key (JWK)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <date month="May" year="2015"/>
          <abstract>
            <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7517"/>
        <seriesInfo name="DOI" value="10.17487/RFC7517"/>
      </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="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="RFC9162">
        <front>
          <title>Certificate Transparency Version 2.0</title>
          <author fullname="B. Laurie" initials="B." surname="Laurie"/>
          <author fullname="E. Messeri" initials="E." surname="Messeri"/>
          <author fullname="R. Stradling" initials="R." surname="Stradling"/>
          <date month="December" year="2021"/>
          <abstract>
            <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification 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>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</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="9162"/>
        <seriesInfo name="DOI" value="10.17487/RFC9162"/>
      </reference>
      <reference anchor="RFC7638">
        <front>
          <title>JSON Web Key (JWK) Thumbprint</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <date month="September" year="2015"/>
          <abstract>
            <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7638"/>
        <seriesInfo name="DOI" value="10.17487/RFC7638"/>
      </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>
    </references>
  </back>
  <!-- ##markdown-source:
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
PUNOFcNQevh8DMgP/gfObqWVmGEAAA==

-->

</rfc>
