<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-barnes-mimi-identity-arch-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="E2E Identity">Identity for E2E-Secure Communications</title>
    <seriesInfo name="Internet-Draft" value="draft-barnes-mimi-identity-arch-01"/>
    <author fullname="Richard Barnes">
      <organization>Cisco</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <author fullname="Rohan Mahy">
      <organization>Wire</organization>
      <address>
        <email>rohan.mahy@wire.com</email>
      </address>
    </author>
    <date year="2023" month="October" day="23"/>
    <area>Applications and Real-Time</area>
    <workgroup>More Instant Messaging Interoperability</workgroup>
    <keyword>end to end security</keyword>
    <keyword>identity</keyword>
    <abstract>
      <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>
    <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>
          <strong>E2E encryption</strong>, which establishes keys among a group of communicating
clients, and authenticates them at a cryptographic level, and</li>
        <li>
          <strong>E2E identity</strong>, which associates non-cryptographic attributes to the
cryptographic representation of clients in the E2E encryption protocol.</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>
      <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., an MLS group
<xref target="I-D.ietf-mls-protocol"/></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>
      </dl>
    </section>
    <section anchor="operational-context-and-assumptions">
      <name>Operational Context and Assumptions</name>
      <t>The context in which E2E identity is implement 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>A <strong>presenting client</strong> that is claiming to represent certain identity
attributes</li>
            <li>
              <strong>Verifying clients</strong> that authenticate the claimed identity attributes</li>
          </ul>
        </li>
        <li>One or more <strong>communications providers</strong> that facilitates communications among
the clients</li>
        <li>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</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>
      <t>We assume that the E2E encryption for the session is provided by means of an E2E
encryption protocol such as DoubleRatchet <xref target="signal"/> or MLS <xref target="I-D.ietf-mls-protocol"/>,
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">
              <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 the 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 CONIKS <xref target="coniks"/> or various self-sovereign
identity approaches.  These approaches have not been deployed at scale in the
same way authority-based approaches have, and they can be layered on top of a
authority-based scheme. (Certificate Transparency was deployed many years
after the Web PKI <xref target="RFC9162"/>).  Thus this document focuses on an
authority-based system for E2E identity, as a baseline to which these other
approaches might later be added.</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@exmaple.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>
          <strong>Issuance:</strong> An identity authority provides the presenting client with
a credential associating identity attributes to a public key.</li>
        <li>
          <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.</li>
        <li>
          <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.</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">
              <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>That it controls the private key corresponding to the public key</li>
          <li>That it legitimately represents the identity attributes</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>It conveys the presenting client's credential to the verifying client.</li>
          <li>It proves to the verifying client that the presenting client holds the
corresponding private key.</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 or the <tt>nbf</tt>/<tt>exp</tt> fields
in JWT <xref target="RFC5280"/> <xref target="RFC7519"/>.  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>Short-lived certificates with no revocation checking</li>
          <li>Online Certificate Status Protocol (OCSP) checks by clients <xref target="RFC6960"/></li>
          <li>OCSP stapling and the "TLS Feature" extension <xref target="RFC6066"/> <xref target="RFC633"/></li>
          <li>Certificate Revocation Lists (CRLs) fetched by clients <xref target="RFC5280"/></li>
          <li>CRLs fetched by vendors and redistributed to clients <xref target="crlite"/></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>Short-lived certificates are unacceptable in settings where clients might be
offline for longer than the revocation checking interval.</li>
          <li>OCSP has bad performance properties and leaks lots of information to the
identity authority.</li>
          <li>OCSP stapling with the "must-staple" extension is equivalent to short-lived
certificates.</li>
          <li>CRL fetches by clients are either highly inefficient or require complicated
caching schemes that are better done centrally.</li>
        </ul>
        <t>These design patterns and arguments also apply, mutatis mutandis, 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>E2E-encrypted messaging apps used by billions of users today 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>The credential is only the presenting client's public key, without
identity attributes.</li>
          <li>Each user acts as their own identity authority.</li>
          <li>Issuance is done by the user's client generating a key pair.</li>
          <li>Presentation comprises the E2E encryption protocol's proof of possession of
the presenting client's private key.</li>
          <li>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.</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>
      </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>The credentials are certificates.</li>
          <li>The identity authorities are certificate authorities (CAs).</li>
          <li>Issuance is done via issuance protocols such as ACME or EST <xref target="RFC8555"/>
            <xref target="RFC7030"/>.</li>
          <li>Several key exchange protocols contain the required mechanics for
presentation, e.g., the <tt>X509Credential</tt> mechanism in MLS.</li>
          <li>Verification follows the process in <xref target="RFC5280"/>, with revocation checking
done via one of the several mechanisms discussed in <xref target="verification"/>.</li>
        </ul>
        <t>This scheme works well for cases where a PKI is available with authorities that
will attest to the required idenitty 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>Credentials would be verifiable credentials or verifiable presentations.</li>
          <li>The identity authorities would be Issuers in the VC model.  (Likewise, the
presenting client would be a Holder and the verifying client a Verifier.)</li>
          <li>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"/></li>
          <li>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.</li>
          <li>The verification process here corresponds to VC verification, using a
mechanism such as <xref target="StatusList2021"/> for revocation.</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>
    <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>What E2E encryption protocol is being used?</li>
        <li>
          <t>How are credentials integrated with the E2E encryption protocol?
          </t>
          <ul spacing="normal">
            <li>How is a credential verified against a participant public key?</li>
            <li>What mechanisms for revocation are used (if any)?</li>
            <li>How are credentials associated to the encryption protocol?</li>
          </ul>
        </li>
        <li>What types of credentials are clients expected to be able to verify?</li>
        <li>Which identity providers are trusted?</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>
        <name>Normative References</name>
        <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="signal" 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="coniks" target="https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/melara">
          <front>
            <title>CONIKS: Bringing Key Transparency to End Users</title>
            <author initials="M." surname="Melara" fullname="Marcela Melara">
              <organization/>
            </author>
            <author initials="A." surname="Blankstein" fullname="Aaron Blankstein">
              <organization/>
            </author>
            <author initials="J." surname="Bonneau" fullname="Joseph Bonneau">
              <organization/>
            </author>
            <author initials="E." surname="Felten" fullname="Edward Felten">
              <organization/>
            </author>
            <author initials="M." surname="Freedman" fullname="Michael Freedman">
              <organization/>
            </author>
            <date year="2015" month="August"/>
          </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" value="(SP)"/>
          <seriesInfo name="DOI" value="10.1109/sp.2017.17"/>
        </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" value="(EuroS&amp;P)"/>
          <seriesInfo name="DOI" value="10.1109/eurosp.2017.27"/>
        </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="I-D.ietf-mls-protocol">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Benjamin Beurdouche" initials="B." surname="Beurdouche">
              <organization>Inria &amp; Mozilla</organization>
            </author>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <author fullname="Jon Millican" initials="J." surname="Millican">
              <organization>Meta Platforms</organization>
            </author>
            <author fullname="Emad Omara" initials="E." surname="Omara">
              <organization>Google</organization>
            </author>
            <author fullname="Katriel Cohn-Gordon" initials="K." surname="Cohn-Gordon">
              <organization>University of Oxford</organization>
            </author>
            <date day="27" month="March" 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="Internet-Draft" value="draft-ietf-mls-protocol-20"/>
        </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="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="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>
  </back>
  <!-- ##markdown-source:
H4sIAJ7uNmUAA91c63LcRnb+30/RoX6sRA9GomTJNrNZm6KkNdeipIi0vVup
bNwz6BlihQHGaIDUrKR9ljxLnizfOae70ZjB0Haq8iNRlYok0JfT535rZFmm
2qIt7bE+OMtthd83elE3+vnD59mFnXeN1af1atVVxdy0RV25A2Vms8ZeYwLG
6DDpQOG9XdbN5lgX1aJWKq/nlVlh4bwxizabmaayLlsVqyIr/KTMNPOrrMRE
1yrXzVaFc9ij3awx7ez55Qut72hTuhqbFVVu17aimQcTAHvyFD8A6MHZ28sX
B6rqVjPbHKscix2rOQC1levcsW6bzipA+0iZxhosdLJel+Ew2lS5fmtNmV0W
K3ugburm3bKpuzXGndc4+1nlWlO1+tw6Z5ZFtcST1jb12jZmVpR88Hd2g3n5
sdKZBoC6rfmHI+xhAD0OB1bXtuoAn9a/eRetBS0HPwJGGvJHWoGer0xR4jlh
9pvCtotp3Szp+bJor7oZ3syKRdfIie/v4v9AKdO1V3VDB8A0rRddWQrp3hbz
K9Pk+ikTj19icVMVf+fVjvVp4eY1P7cCRlPOvinW11P3fmS1+spU+txcbUZW
+rFo7GAhGjxdYfA3N3g1ndcrpaq6WWH8NVCoiMviX1q7YlmZ8piXaE2ztO2x
vmrbtTu+f//m5mYq7wk398GZ7r5b23mxCIyAZ92sBLrb+ZVt78sqXi4ur6x+
xq/1W3mvT0pwOtC7OuCRzHT64YOjJ9nRUfbwAT+MSJV/mRYkXEJ2wLZvbNMU
1fbL8/p9YYGhpiwqty7eWYURYObindt/sg6sXrznk2Howja2mtv78jQw4dHj
+62dX5EUl5mzLGbu/rqxGNV6zrClaczg5KevX519d3GsnwJUZsvv7AYHMIDN
0C4b4vXn4PXvnW3cFi4eZw++HEFEPCp4DzuC5+O2/csT09SVflqa6p1rbcRT
eP2n2tn1lX5aV5U13dbL5/kNsewLW7Z2e+I58bMt9YvG2nxlKkYvkE0gP3t9
Nj16MD06evDV/Ys3U5zgi+nRF5Gzsg40GAx63jV1GPjwC1rKmdUtHFgbV7gM
Ql15Wq1WRdtaS8x3U5W1yafrq/X9R4+/ODq671w7z2i9bA4NkYFbTGuyh9MH
2U2ePXiS5cViMV3ni5ReJw5k6PXam6Zu63ldOlboLbj49cnF2YW+8DzRjydi
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
AA==

-->

</rfc>
