<?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.13 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-barnes-mimi-identity-arch-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.26.0 -->
  <front>
    <title abbrev="E2E Identity">Identity for E2E-Secure Communications</title>
    <seriesInfo name="Internet-Draft" value="draft-barnes-mimi-identity-arch-02"/>
    <author fullname="Richard Barnes">
      <organization>Cisco</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <author fullname="Rohan Mahy">
      <organization>Rohan Mahy Consulting Service</organization>
      <address>
        <email>rohan.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="February" day="04"/>
    <area>Applications and Real-Time</area>
    <workgroup>More Instant Messaging Interoperability</workgroup>
    <keyword>end to end security</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 65?>

<t>End-to-end (E2E) security is a critical property for modern user communications
systems.  E2E security protects users' communications from tampering or
inspection by intermediaries that are involved in delivering those communcations
from one logical endpoint to another.  In addition to the much-discussed E2E
encryption systems, true E2E security requires an identity mechanism that
prevents the communications provider from impersonating participants in a
session, as a way to gain access to the session.  This document describes a
high-level architecture for E2E identity, identifying the critical mechanisms
that need to be specified.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-barnes-mimi-identity-arch/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        More Instant Messaging Interoperability Working Group mailing list (<eref target="mailto:mimi@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mimi/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mimi/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/bifurcation/mimi-identity-arch"/>.</t>
    </note>
  </front>
  <middle>
    <?line 78?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>End-to-end (E2E) security protects users' communications from tampering or
inspection by intermediaries that are involved in delivering those communcations
from one logical endpoint to another.  Almost all user-to-user communications
systems today involve application-level intermediaries, such as message queues
or media servers.  In this context, "hop-by-hop" security refers to the security
properties of the channel between the client and application-level intermediary,
despite the fact that this channel may transit a number of network-level
intermediaries.  "End-to-end" security refers to security properties of the
communications between one end client and another.</t>
      <t>Given the ubiquity of application-level intermediation, E2E security is a
critical property for modern user communications systems.  E2E security is
typically implemented with two separate mechanisms:</t>
      <ul spacing="normal">
        <li>
          <t><strong>E2E encryption</strong>, which establishes keys among a group of communicating
clients, and authenticates them at a cryptographic level, and</t>
        </li>
        <li>
          <t><strong>E2E identity</strong>, which associates non-cryptographic attributes to the
cryptographic representation of clients in the E2E encryption protocol.</t>
        </li>
      </ul>
      <t>Broadly speaking, E2E encryption protects against passive attacks by
intermediaries.  E2E identity protects against active attacks such as
impersonation attacks.  Both layers are required to attain a complete notion of
E2E security.</t>
      <t>An overview of identity considerations for messaging systems is provided in
<xref target="I-D.mahy-mimi-identity"/>.  In this document, we describe a concrete
framework for E2E identity, drawing on some initial deployment experience,
and highlighting the mechanisms that need to be defined for an interoperable
solution.</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>We use the following terms below:</t>
      <dl>
        <dt>Client:</dt>
        <dd>
          <t>The hardware or software used by a user to interact with an E2E-secure
communications system.</t>
        </dd>
        <dt>Communications provider:</dt>
        <dd>
          <t>The system of intermediaries that connects communicating clients.</t>
        </dd>
        <dt>Identity authority:</dt>
        <dd>
          <t>An entity that is trusted to make statements about the identity attributes
associated to clients.</t>
        </dd>
        <dt>Session:</dt>
        <dd>
          <t>An E2E-secure interaction among clients, e.g., a Messaging Layer Security
(MLS) group <xref target="RFC9420"/></t>
        </dd>
        <dt>Credential:</dt>
        <dd>
          <t>An object issued by an identity authority that associates identity attributes
with a client's public key.</t>
        </dd>
        <dt>PKI:</dt>
        <dd>
          <t>Public Key Infrastructure</t>
        </dd>
      </dl>
    </section>
    <section anchor="operational-context-and-assumptions">
      <name>Operational Context and Assumptions</name>
      <t>The context in which E2E identity is implemented is shown in <xref target="context"/>.  It
involves the following actors:</t>
      <ul spacing="normal">
        <li>
          <t>A number of <strong>clients</strong> participating in an E2E-encrypted session
          </t>
          <ul spacing="normal">
            <li>
              <t>A <strong>presenting client</strong> that is claiming to represent certain identity
attributes</t>
            </li>
            <li>
              <t><strong>Verifying clients</strong> that authenticate the claimed identity attributes</t>
            </li>
          </ul>
        </li>
        <li>
          <t>One or more <strong>communications providers</strong> that facilitates communications among
the clients</t>
        </li>
        <li>
          <t>An <strong>identity authority</strong> that asserts identity attributes of the presenting
client, and which is trusted by the verifying client to make such assertions.</t>
        </li>
      </ul>
      <t>Note that in most settings, each client will act as both a presenting client and
a verifying client, authenticating itself and verifying the other clients in the
session or group. Each client could use a different identity authority for its
identity attributes.</t>
      <ul empty="true">
        <li>
          <t>Some E2E encrypted systems use a distributed identity authority rather than
  a centralized authority.  While this out of scope of the MIMI working group,
  it is still compatible with the high-level model presented in this section.</t>
        </li>
      </ul>
      <t>We assume that the E2E encryption for the session is provided by means of an E2E
encryption protocol such as <xref target="DoubleRatchet"/> or MLS <xref target="RFC9420"/>,
in which each participant is cryptographically authenticated by means of a
digital signature key pair.</t>
      <t>The phrase "identity attributes" above is deliberately broad, to encompass any
attribute of the client that is not directly cryptographcally verifiable.  This
includes technical identifiers such as DNS names or URLs, but also
user-meaningful identifers such as given or family names, or names of
organizations or roles.</t>
      <figure anchor="context">
        <name>Operational context for E2E identity</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="496" viewBox="0 0 496 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,112 L 8,160" fill="none" stroke="black"/>
              <path d="M 56,160 L 56,240" fill="none" stroke="black"/>
              <path d="M 112,112 L 112,160" fill="none" stroke="black"/>
              <path d="M 184,96 L 184,136" fill="none" stroke="black"/>
              <path d="M 184,152 L 184,176" fill="none" stroke="black"/>
              <path d="M 208,224 L 208,272" fill="none" stroke="black"/>
              <path d="M 304,224 L 304,272" fill="none" stroke="black"/>
              <path d="M 320,96 L 320,136" fill="none" stroke="black"/>
              <path d="M 320,152 L 320,176" fill="none" stroke="black"/>
              <path d="M 352,64 L 352,144" fill="none" stroke="black"/>
              <path d="M 392,32 L 392,80" fill="none" stroke="black"/>
              <path d="M 392,112 L 392,160" fill="none" stroke="black"/>
              <path d="M 440,160 L 440,240" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,80" fill="none" stroke="black"/>
              <path d="M 488,112 L 488,160" fill="none" stroke="black"/>
              <path d="M 392,32 L 488,32" fill="none" stroke="black"/>
              <path d="M 352,64 L 384,64" fill="none" stroke="black"/>
              <path d="M 392,80 L 488,80" fill="none" stroke="black"/>
              <path d="M 184,96 L 320,96" fill="none" stroke="black"/>
              <path d="M 8,112 L 112,112" fill="none" stroke="black"/>
              <path d="M 392,112 L 488,112" fill="none" stroke="black"/>
              <path d="M 112,144 L 384,144" fill="none" stroke="black"/>
              <path d="M 8,160 L 112,160" fill="none" stroke="black"/>
              <path d="M 392,160 L 488,160" fill="none" stroke="black"/>
              <path d="M 184,176 L 320,176" fill="none" stroke="black"/>
              <path d="M 208,224 L 304,224" fill="none" stroke="black"/>
              <path d="M 56,240 L 208,240" fill="none" stroke="black"/>
              <path d="M 304,240 L 440,240" fill="none" stroke="black"/>
              <path d="M 208,272 L 304,272" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="392,144 380,138.4 380,149.6" fill="black" transform="rotate(0,384,144)"/>
              <polygon class="arrowhead" points="392,64 380,58.4 380,69.6" fill="black" transform="rotate(0,384,64)"/>
              <g class="text">
                <text x="440" y="52">Verifying</text>
                <text x="436" y="68">Client</text>
                <text x="252" y="116">Communications</text>
                <text x="60" y="132">Presenting</text>
                <text x="256" y="132">Provider(s)</text>
                <text x="440" y="132">Verifying</text>
                <text x="60" y="148">Client</text>
                <text x="436" y="148">Client</text>
                <text x="252" y="244">Identity</text>
                <text x="256" y="260">Authority</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                                                +-----------+
                                                | Verifying |
                                           +--->|  Client   |
                                           |    +-----------+
                      +----------------+   |
+------------+        | Communications |   |    +-----------+
| Presenting |        |   Provider(s)  |   |    | Verifying |
|   Client   +-----------------------------+--->|  Client   |
+-----+------+        |                |        +-----+-----+
      |               +----------------+              |
      |                                               |
      |                                               |
      |                  +-----------+                |
      +------------------+ Identity  +----------------+
                         | Authority |
                         +-----------+
]]></artwork>
        </artset>
      </figure>
      <t>In this context, the goal of E2E identity is to protect the authenticity of the
binding between the presenting client's public key (which represents them in the
E2E encryption protocol) and their identity attributes, against attack by the
communications provider.  Only a client that legitimately represents the claimed
attributes should be able to cause a verifying client to associate those
attributes with the first client. More succinctly, E2E identity protects against
impersonation attacks by the communications provider.</t>
      <t>The architecture described here achieves this protection by means of role
separation between communications provider and a centralized identity
authority.  The communications provider is untrusted, in the same way that
network attackers are untrusted in the traditional Internet Threat Model
<xref target="RFC3552"/>.  The identity authority is trusted to correctly assert bindings
between identity attributes and public keys.  This includes verifying that
presenting clients control the corresponding public keys, to avoid Unknown Key
Share attacks analogous to those in <xref target="RFC8844"/>.</t>
      <t>There are other techniques that can reduce the trust that is placed in the
identity authority, for example Key Transparency (KT)
<xref target="I-D.ietf-keytrans-architecture"/> or various self-sovereign identity
approaches.  These approaches are generally more costly to deploy at scale
compared to authority-based approaches; they also can be layered on top of an
authority-based scheme. (Certificate Transparency was deployed many years
after the Web PKI <xref target="RFC9162"/>).  Thus the rest of this document focuses on a
centralized authority-based system for E2E identity, as a baseline to which
these other approaches might be added later.</t>
      <t>A secondary goal is to minimize the amount of information about the clients and
sessions that is exposed to the identity authority.  The identity authority
should not learn which communications providers or verifying clients a
presenting client is interacting with.</t>
      <t>Verifying clients use ultimately authenticated identity attributes to make
policy decisions as to the security state of the meeting.  For example, a
verifying client may have attempted to reach the holder of the SIP URI
<tt>sip:bob@example.com</tt>, and would regard the session as compromised if they were
not actually connected to that entity.  Or a verifying client might wish to
require that all participants in a session belong to a given organization. E2E
identity assures that these policies are evaluated on correct inputs.</t>
    </section>
    <section anchor="an-architecture-for-e2e-identity">
      <name>An Architecture for E2E Identity</name>
      <t><xref target="steps"/> shows the three critical steps in a system E2E identity:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Issuance:</strong> An identity authority provides the presenting client with
a credential associating identity attributes to a public key.</t>
        </li>
        <li>
          <t><strong>Presentation:</strong> The presenting client provides its credential to the
verifying client, along with proof that the presenting client controls the
corresponding private key.</t>
        </li>
        <li>
          <t><strong>Verification:</strong> The verifying client verifies that the credential was
issued by a trusted identity authority, and verifies the presenting clients
proof of control of the corresponding private key. The verifying client
may verify by communicating with the identity authority, or autonomously
using previously configured information about the identity authority.</t>
        </li>
      </ol>
      <t>If all three of these steps is successfully completed, with the security
properties described below, then the verifying client can safely associate the
identity attributes in the credential with the presenting client.</t>
      <figure anchor="steps">
        <name>A three-step process for assuring E2E identity</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="496" viewBox="0 0 496 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 56,88 L 56,160" fill="none" stroke="black"/>
              <path d="M 112,32 L 112,80" fill="none" stroke="black"/>
              <path d="M 208,144 L 208,192" fill="none" stroke="black"/>
              <path d="M 304,144 L 304,192" fill="none" stroke="black"/>
              <path d="M 392,32 L 392,80" fill="none" stroke="black"/>
              <path d="M 440,88 L 440,160" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 112,32" fill="none" stroke="black"/>
              <path d="M 392,32 L 488,32" fill="none" stroke="black"/>
              <path d="M 112,64 L 384,64" fill="none" stroke="black"/>
              <path d="M 8,80 L 112,80" fill="none" stroke="black"/>
              <path d="M 392,80 L 488,80" fill="none" stroke="black"/>
              <path d="M 208,144 L 304,144" fill="none" stroke="black"/>
              <path d="M 56,160 L 208,160" fill="none" stroke="black"/>
              <path d="M 312,160 L 440,160" fill="none" stroke="black"/>
              <path d="M 208,192 L 304,192" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="448,88 436,82.4 436,93.6" fill="black" transform="rotate(270,440,88)"/>
              <polygon class="arrowhead" points="392,64 380,58.4 380,69.6" fill="black" transform="rotate(0,384,64)"/>
              <polygon class="arrowhead" points="320,160 308,154.4 308,165.6" fill="black" transform="rotate(180,312,160)"/>
              <polygon class="arrowhead" points="64,88 52,82.4 52,93.6" fill="black" transform="rotate(270,56,88)"/>
              <g class="text">
                <text x="60" y="52">Presenting</text>
                <text x="196" y="52">2.</text>
                <text x="260" y="52">Presentation</text>
                <text x="440" y="52">Verifying</text>
                <text x="60" y="68">Client</text>
                <text x="436" y="68">Client</text>
                <text x="252" y="164">Identity</text>
                <text x="84" y="180">1.</text>
                <text x="132" y="180">Issuance</text>
                <text x="256" y="180">Authority</text>
                <text x="324" y="180">3.</text>
                <text x="388" y="180">Verification</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+------------+                                  +-----------+
| Presenting |         2. Presentation          | Verifying |
|   Client   +--------------------------------->|  Client   |
+-----+------+                                  +-----+-----+
      ^                                               ^
      |                                               |
      |                                               |
      |                  +-----------+                |
      +------------------+ Identity  +<---------------+
         1. Issuance     | Authority | 3. Verification
                         +-----------+
]]></artwork>
        </artset>
      </figure>
      <section anchor="issuance">
        <name>Issuance</name>
        <t>The issuance process is similar to existing widely-deployed processes for
issuing public-key credentials, such as ACME <xref target="RFC8555"/>.  This process results
in the presenting client holding a credential that associates a public key to a
set of identity attributes.  So the issuance process must assure the identity
authority of two things about the presenting client:</t>
        <ul spacing="normal">
          <li>
            <t>That it controls the private key corresponding to the public key</t>
          </li>
          <li>
            <t>That it legitimately represents the identity attributes</t>
          </li>
        </ul>
        <t>In addition, to prevent unknown key share attacks (UKS), the issuance process
must verify these properties jointly -- that the entity that controls the
private key is the same as the entity that holds the identity attributes.</t>
        <t>These assurances are typically provided by having the presenting client create a
signature with the private key over an object that reflects the identity
attributes.  In ACME, the client sends a Certificate Signing Request
<xref target="RFC2986"/>, which contains both the desired identity attributes and a
signature by the client's private key.</t>
      </section>
      <section anchor="presentation">
        <name>Presentation</name>
        <t>The presentation process accomplishes two things:</t>
        <ul spacing="normal">
          <li>
            <t>It conveys the presenting client's credential to the verifying client.</t>
          </li>
          <li>
            <t>It proves to the verifying client that the presenting client holds the
corresponding private key.</t>
          </li>
        </ul>
        <t>The latter function ties the presentation process to the E2E encryption protocol
being used.  The credential used for E2E identity authenticates the key pair
that represents a client in the E2E encryption protocol.  The E2E encryption
protocol will thus already include mechanisms for the presenting client to prove
they hold the private key corresponding to the credential.</t>
        <t>If the E2E encryption protocol can also deliver the credential (as opposed to
passing it in some other way), then in addition to simplifying application
architecture, the E2E encryption protocol can provide some additional security
benefits.  E2E encryption protocols where the presenting client signs the
credential being presented are generally immune to unknown key share attacks,
even if there is a UKS vulnerability in the underlying issuance process.</t>
        <t>As a concrete example: In the MLS protocol mentioned above, each client presents
its credential in a LeafNode structure that is signed with the client's private
key.  This structure is conveyed to the other participants in an MLS-based
session when the presenting client joins the session.  This provides the other
participants with both the credential and a signature over the credential (and
the other contents of the LeafNode) which acts as a proof of possession of the
private key.</t>
      </section>
      <section anchor="verification">
        <name>Verification</name>
        <t>A credential will typically be an object signed by the identity authority, so
the verifying client will only need to know the identity authority's public key
in order to verify that the credential was authentically issued by the identity
authority.  Credentials will typically also have some notion of expiration,
e.g., the <tt>notBefore</tt>/<tt>notAfter</tt> fields in X.509 <xref target="RFC5280"/> or the <tt>nbf</tt>/<tt>exp</tt>
fields in JSON Web Tokens <xref target="RFC7519"/> or CBOR Web Tokens <xref target="RFC8392"/>.
Verification at this level is simple, fast, and privacy-preserving.</t>
        <t>In some cases, though, it is necessary to have a notion of revocation of
credentials.  Here revocation of a credential means that the credential will no
longer be accepted by verifying clients, even though the credential itself is
otherwise valid (e.g., its signature is valid and it has not expired).  Since
the credential itself cannot reflect revocation information, a verifying client
needs to get revocation information from the identity authority independently.</t>
        <t>Several design patterns for revocation have been explored in the PKI context:</t>
        <ol spacing="normal" type="1"><li>
            <t>Short-lived certificates with no revocation checking</t>
          </li>
          <li>
            <t>Online Certificate Status Protocol (OCSP) checks by clients <xref target="RFC6960"/></t>
          </li>
          <li>
            <t>OCSP stapling and the "TLS Feature" extension <xref target="RFC6066"/> <xref target="RFC633"/></t>
          </li>
          <li>
            <t>Certificate Revocation Lists (CRLs) fetched by clients <xref target="RFC5280"/></t>
          </li>
          <li>
            <t>CRLs fetched by vendors and redistributed to clients <xref target="crlite"/></t>
          </li>
        </ol>
        <t>The Web PKI has generally settled on central CRL fetching (5), by the following
process of elimination:</t>
        <ul spacing="normal">
          <li>
            <t>Short-lived certificates are unacceptable in settings where clients might be
offline for longer than the revocation checking interval.</t>
          </li>
          <li>
            <t>OCSP has bad performance properties and leaks lots of information to the
identity authority.</t>
          </li>
          <li>
            <t>OCSP stapling with the "must-staple" extension is equivalent to short-lived
certificates.</t>
          </li>
          <li>
            <t>CRL fetches by clients are either highly inefficient or require complicated
caching schemes that are better done centrally.</t>
          </li>
        </ul>
        <t>These design patterns and arguments also apply, with relevant adaptation, in
the context of E2E identity.  Thus, revocation mechanisms developed for E2E
identity should be oriented toward centralized CRL fetching, but accounting for
an important difference -- that the client vendor is often the communications
service provider, and thus an untrusted actor.  This means that clients will
need to verify the authenticity of revocation information, and mechanisms such
as CRLite <xref target="crlite"/> will not work.  Rather than having the vendor compress an
uncompressed representation (as in CRLite), the revocation data provided by the
identity authority will have to already be compact.</t>
      </section>
    </section>
    <section anchor="instantiations">
      <name>Instantiations</name>
      <t>There are a few deployed and emerging models for E2E identity that can be viewed
as instantiations of the above architecture.  In this section, we examine a few
example cases.</t>
      <section anchor="manual-verification-of-key-fingerprints">
        <name>Manual Verification of Key Fingerprints</name>
        <t>Many E2E-encrypted messaging apps rely on users manually comparing each others'
key fingerprints for their only E2E identity assurance.  This can be viewed as a
degenerate case of the above architecture:</t>
        <ul spacing="normal">
          <li>
            <t>The credential is only the presenting client's public key, without
identity attributes.</t>
          </li>
          <li>
            <t>Each user acts as their own identity authority.</t>
          </li>
          <li>
            <t>Issuance is done by the user's client generating a key pair.</t>
          </li>
          <li>
            <t>Presentation comprises the E2E encryption protocol's proof of possession of
the presenting client's private key.</t>
          </li>
          <li>
            <t>Verification is the manual comparison of key fingerprints, the user of the
verifying client confirming with the user of the presenting client that they
have the same view of the presenting client's public key.</t>
          </li>
        </ul>
        <t>This case is degenerate in the sense that it does not actually authenticate any
identity attributes; the only non-cryptographic attributes attested are those
claimed by the presenting client in the verification interaction.  This system
is thus vulnerable to UKS attacks when the user of the presenting client abuses
their position as a trusted identity authority <xref target="signal-uks"/>.</t>
        <t>In reality, the vast majority of users never verify the keys of the users with
whom they communicate.</t>
        <t>A handful of E2E-encrypted messaging apps also use Key Transparency (KT),
effectively trusting a key on first use, and issuing a warning when
new clients are added or previously known clients are replaced. This mechanism
makes it easier to determine later that a communication provider actively
tampered with communications, but does not cryptographically prevent it from
doing so when the client was first created.</t>
      </section>
      <section anchor="x509">
        <name>X.509</name>
        <t>X.509 and related PKI technologies are a widely used instantiation of
authority-based authentication, and map naturally in to this architecture:</t>
        <ul spacing="normal">
          <li>
            <t>The credentials are certificates.</t>
          </li>
          <li>
            <t>The identity authorities are certificate authorities (CAs).</t>
          </li>
          <li>
            <t>Issuance is done via issuance protocols such as ACME <xref target="RFC8555"/> or EST
<xref target="RFC7030"/>.</t>
          </li>
          <li>
            <t>Several key exchange protocols contain the required mechanics for
presentation, e.g., the <tt>X509Credential</tt> mechanism in MLS.</t>
          </li>
          <li>
            <t>Verification follows the process in <xref target="RFC5280"/>, with revocation checking
done via one of the several mechanisms discussed in <xref target="verification"/>.</t>
          </li>
        </ul>
        <t>This scheme works well for cases where a PKI is available with authorities that
will attest to the required identity attributes, and where the operational
context allows for certificates to be provisioned to clients.  Multiple
E2E-secure communications products today use this scheme.</t>
      </section>
      <section anchor="verifiable-credentials">
        <name>Verifiable Credentials</name>
        <t>Certificates and PKI protocols tend to be a bad fit for authenticating user
identities.  Systems like SAML <xref target="saml"/> and OpenID Connect <xref target="oidc"/> are more
commonly used for user identity, but only produce bearer tokens, not the public
key credentials required for E2E identity -- using bearer tokens for E2E
identity would allow the verifying client to impersonate the presenting client!
Likewise, because the verifier needs to check a bearer tokens validity directly
with the issuer, the identity authority learns every verifier to whom a client
authenticates.</t>
        <t>More recently, there has been work to apply the W3C Verifiable Credentials (VC)
framework to this problem <xref target="W3C.vc-data-model"/>.  The VC model aligns well
conceptually with the above architecture, and some of the required protocols are
in development:</t>
        <ul spacing="normal">
          <li>
            <t>Credentials would be verifiable credentials or verifiable presentations.</t>
          </li>
          <li>
            <t>The identity authorities would be Issuers in the VC model.  (Likewise, the
presenting client would be a Holder and the verifying client a Verifier.)</t>
          </li>
          <li>
            <t>The issuance process here corresponds to the issuance interaction in the VC
model, for example using OpenID for Verifiable Credential Issuance
<xref target="openid-4-vci"/></t>
          </li>
          <li>
            <t>The presentation process here corresponds to the presentation interaction in
the VC model, for example using an integration with the E2E encryption
protocol analogous to the <tt>X509Credential</tt> integration in MLS mentioned above.</t>
          </li>
          <li>
            <t>The verification process here corresponds to VC verification, using a
mechanism such as <xref target="StatusList2021"/> for revocation.</t>
          </li>
        </ul>
        <t>A VC-based model for E2E identity is clearly still incomplete, but given the
good conceptual alignment and potential for a better fit with user identity than
PKI, it seems like a promising candidate for further development.</t>
      </section>
      <section anchor="secure-patterns-for-internet-credentials-spice">
        <name>Secure Patterns for Internet Credentials (SPICE)</name>
        <t>The SPICE working group was chartered to develop digital credential profiles
which work in scenarios with an issuer, holder (a presenter in this
model), and a verifier. SPICE is clearly a natural fit for MLS credentials
and MIMI identity.</t>
        <t>SPICE makes extensive use of CBOR Web Tokens <xref target="RFC8392"/>, and includes
support for cryptographic properties such as redaction, linkability and
selective disclosure.</t>
      </section>
    </section>
    <section anchor="requirements-for-interoperable-identity">
      <name>Requirements for Interoperable Identity</name>
      <t>The MIMI working group is focused on establishing interoperability among
messaging systems.  In order to have E2E identity protections in an
interoperable context, the interoperating parties will need to agree on the
answers to a few questions:</t>
      <ul spacing="normal">
        <li>
          <t>What E2E encryption protocol will be used? (Currently this is MLS only.)</t>
        </li>
        <li>
          <t>How are credentials integrated with the E2E encryption protocol?
          </t>
          <ul spacing="normal">
            <li>
              <t>How is a credential verified against a participant public key?</t>
            </li>
            <li>
              <t>What mechanisms for revocation are used (if any)?</t>
            </li>
            <li>
              <t>How are credentials associated to the encryption protocol?</t>
            </li>
          </ul>
        </li>
        <li>
          <t>What types of credentials are clients expected to be able to verify?</t>
        </li>
        <li>
          <t>Which identity providers are trusted?</t>
        </li>
      </ul>
      <t>Most of these questions are addressed at the presentation and verification
phases in the above architecture.  The interoperability considerations around
issuance are different: For issuance, there does not need to be a common
solution across the population of clients, only between a client and the
authority that issues its credential.  Nonetheless, having a common,
interoperable issuance interface is still valuable, since it simplifies
integration between clients and authorities.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document describes a scheme for authentication in E2E security contexts.
Security requirements are described in <xref target="operational-context-and-assumptions"/>,
a general architecture in <xref target="an-architecture-for-e2e-identity"/>, and some
candidate instantiations of the architecture in <xref target="instantiations"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references 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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="DoubleRatchet" target="https://www.signal.org/docs/specifications/doubleratchet/">
          <front>
            <title>The Double Ratchet Algorithm</title>
            <author initials="T." surname="Perrin" fullname="Trevor Perrin">
              <organization/>
            </author>
            <author initials="M." surname="Marlinspike" fullname="Moxie Marlinspike">
              <organization/>
            </author>
            <date year="2016" month="November" day="20"/>
          </front>
        </reference>
        <reference anchor="crlite">
          <front>
            <title>CRLite: A Scalable System for Pushing All TLS Revocations to All Browsers</title>
            <author fullname="James Larisch" initials="J." surname="Larisch">
              <organization/>
            </author>
            <author fullname="David Choffnes" initials="D." surname="Choffnes">
              <organization/>
            </author>
            <author fullname="Dave Levin" initials="D." surname="Levin">
              <organization/>
            </author>
            <author fullname="Bruce M. Maggs" initials="B." surname="Maggs">
              <organization/>
            </author>
            <author fullname="Alan Mislove" initials="A." surname="Mislove">
              <organization/>
            </author>
            <author fullname="Christo Wilson" initials="C." surname="Wilson">
              <organization/>
            </author>
            <date month="May" year="2017"/>
          </front>
          <seriesInfo name="2017 IEEE Symposium on Security and Privacy (SP)" value="pp. 539-556"/>
          <seriesInfo name="DOI" value="10.1109/sp.2017.17"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="signal-uks">
          <front>
            <title>A Formal Security Analysis of the Signal Messaging Protocol</title>
            <author fullname="Katriel Cohn-Gordon" initials="K." surname="Cohn-Gordon">
              <organization/>
            </author>
            <author fullname="Cas Cremers" initials="C." surname="Cremers">
              <organization/>
            </author>
            <author fullname="Benjamin Dowling" initials="B." surname="Dowling">
              <organization/>
            </author>
            <author fullname="Luke Garratt" initials="L." surname="Garratt">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <date month="April" year="2017"/>
          </front>
          <seriesInfo name="2017 IEEE European Symposium on Security and Privacy (EuroS&amp;P)" value="pp. 451-466"/>
          <seriesInfo name="DOI" value="10.1109/eurosp.2017.27"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="saml" target="https://www.oasis-open.org/committees/download.php/35711/sstc-saml-core-errata-2.0-wd-06-diff.pdf">
          <front>
            <title>Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="oidc" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="openid-4-vci" target="https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html">
          <front>
            <title>OpenID for Verifiable Credential Issuance</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="StatusList2021" target="https://w3c-ccg.github.io/vc-status-list-2021/">
          <front>
            <title>Status List 2021</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.mahy-mimi-identity">
          <front>
            <title>More Instant Messaging Interoperability (MIMI) Identity Concepts</title>
            <author fullname="Rohan Mahy" initials="R." surname="Mahy">
              <organization>Wire</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   This document discusses concepts in instant messaging identity
   interoperability when using end-to-end encryption, for example with
   the MLS (Message Layer Security) Protocol.  The goal is to explore
   the problem space in preparation for framework and requirements
   documents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mahy-mimi-identity-02"/>
        </reference>
        <reference anchor="RFC9420">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="B. Korver" initials="B." surname="Korver"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. 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="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="RFC8844">
          <front>
            <title>Unknown Key-Share Attacks on Uses of TLS with the Session Description Protocol (SDP)</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document describes unknown key-share attacks on the use of Datagram Transport Layer Security for the Secure Real-Time Transport Protocol (DTLS-SRTP). Similar attacks are described on the use of DTLS-SRTP with the identity bindings used in Web Real-Time Communications (WebRTC) and SIP identity. These attacks are difficult to mount, but they cause a victim to be misled about the identity of a communicating peer. This document defines mitigation techniques that implementations of RFC 8122 are encouraged to deploy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8844"/>
          <seriesInfo name="DOI" value="10.17487/RFC8844"/>
        </reference>
        <reference anchor="I-D.ietf-keytrans-architecture">
          <front>
            <title>Key Transparency Architecture</title>
            <author fullname="Brendan McMillion" initials="B." surname="McMillion">
         </author>
            <date day="26" month="August" year="2024"/>
            <abstract>
              <t>   This document defines the terminology and interaction patterns
   involved in the deployment of Key Transparency (KT) in a general
   secure group messaging infrastructure, and specifies the security
   properties that the protocol provides.  It also gives more general,
   non-prescriptive guidance on how to securely apply KT to a number of
   common applications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-keytrans-architecture-02"/>
        </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="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="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="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="RFC6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <author fullname="R. Ankney" initials="R." surname="Ankney"/>
            <author fullname="A. Malpani" initials="A." surname="Malpani"/>
            <author fullname="S. Galperin" initials="S." surname="Galperin"/>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents. This document obsoletes RFCs 2560 and 6277. It also updates RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6960"/>
          <seriesInfo name="DOI" value="10.17487/RFC6960"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC633">
          <front>
            <title>IMP/TIP preventive maintenance schedule</title>
            <author fullname="A.M. McKenzie" initials="A.M." surname="McKenzie"/>
            <date month="March" year="1974"/>
            <abstract>
              <t>An old version; see RFC 638.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="633"/>
          <seriesInfo name="DOI" value="10.17487/RFC0633"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="W3C.vc-data-model" target="https://www.w3.org/TR/vc-data-model/">
          <front>
            <title>Verifiable Credentials Data Model v1.1</title>
            <author/>
          </front>
          <seriesInfo name="W3C REC" value="vc-data-model"/>
          <seriesInfo name="W3C" value="vc-data-model"/>
        </reference>
      </references>
    </references>
    <?line 532?>



  </back>
  <!-- ##markdown-source:
H4sIACeqomcAA91c63YbR3L+30/RoX4sSQMQqZtt7sZempLXjEVREWl79+Rk
4wamAc5qMANPz5DCStpnybPkyfJVVXdPDzCg7JyTH4mOfUgCfa2u61fVPR6P
VZM3hT3Re+eZLfH7Ws+rWr949GJ8ZWdtbfVZtVy2ZT4zTV6Vbk+Z6bS2t+iA
Njp02lP43i6qen2i83JeKZVVs9IsMXBWm3kznpq6tG68zJf5OPedxqae3YyP
HinXTpe5cxi/Wa/Q5fzF9bdaP9CmcBUmysvMrmxJvfZGWOjpN/iBRe6dv7n+
dk+V7XJq6xOVYQUnaoZF2tK17kQ3dWsVVvpYmdoaDHS6WhVhI9qUmX5jTTG+
zpd2T91V9dtFXbUrtLuosO/z0jWmbPSFdc4s8nKBTxpbVytbm2le8Kbf2jX6
ZSdKjzUWqJuKfziiHBrQx2Gz6taWLdan9W+eRWshy95PWCM1+RONQJ8vTV7g
c6LqH3PbzCdVvaDPF3lz007xzTSft7Xs+OE27feUMm1zU9W0AXTTet4WhRzb
m3x2Y+pMf8MHx19icFPmf+fRTvRZ7mYVf25lGXUx/WO+up24dwOjVTem1Bfm
Zj0wUvclmA1HVzS0yStb3+Yz25uBGk5oo39c0CeTWbVUqqzqJUa6BXEV8V78
S+vnVTst7BvTzG5sc8JDNaZe4Hd90zQrd/Lw4d3d3cTli9IURLyHYFv30K3s
LJ8HTsFnNEotozyUUbzQXN9YP4n2s+jTAmIA+i/3uCVzpX50dPxsfHw8fnTE
H0aqy7+xFipdQ7DA169tXefl5pcX1bvcgkp1kZdulb+1Ci1m+IvGf355Pjk+
mhwfH3358Or1BNN9Pjn+nFrI3sbtW9dv9aKtq9DykbQ0y2I3jSrjcjcGX5ZM
J1B+mTeNtUSeu7KoTDZZ3awePn76+fHxQ+ea2ZjGG8/A5GPsxzRm/GhyNL7L
xkfPxlk+n09W2Tyl5alztu5E83VdNdWsKhzrowZ0vjy9Or/SV162uvZEk7ft
Sr805aI1C6v3r04vXh7oHzEf7avKs9nwvmg3eTYpcap05M5/gEWXpZ01svjj
/zia3DTLIl3rJdqdPydupXb4CUk+9rPJEE/Gt7P8t82KLrYG2xlw03hWW5ZU
HB00Y2vK2b0rIRr9GHvrs9hbn/vetLarxjSte5m75tHRo+MdZ/14Np7NFhNR
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
rVL/DR7NWZhuXgAA

-->

</rfc>
