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

<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 47?>

<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"/>.
Tokens encoded as JWS <bcp14>MUST</bcp14> only use JWS protected headers and <bcp14>MUST</bcp14> include either the <tt>jwk</tt> or the <tt>kid</tt> header parameter, which <bcp14>MUST</bcp14> identify the respective verification key.
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>.
Key identifiers are computed as per <xref target="jwk-hashing"/>.
JWKs in context of ADEM <bcp14>MUST NOT</bcp14> contain the <tt>kid</tt> parameter, which forces implementations to compute and thus verify the value themselves.
See <xref target="jwk-hashing"/> for an example.</t>
        </section>
        <section anchor="emblems">
          <name>Emblems</name>
          <t>An emblem is encoded as a JWS and signals the 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"
]]></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[
{
  "ver": "v1",
  "emb": {
    "dst": ["dns"],
    "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.
Any 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">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="STATIC-CT"/> for <tt>static</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>"static"</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 if present.</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.</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="STATIC-CT" target="https://github.com/C2SP/C2SP/blob/0f3fddde7d1d8bd55e42723572c4c144457c50d0/static-ct-api.md">
        <front>
          <title>The Static Certificate Transparency API</title>
          <author>
            <organization/>
          </author>
          <date year="2026" month="March" day="20"/>
        </front>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <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="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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

-->

</rfc>
