<?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 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-barnes-mimi-identity-arch-00" 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-00"/>
    <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="2022" month="October" day="24"/>
    <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">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="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="11" month="July" year="2022"/>
            <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-00"/>
        </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">
         </author>
            <author fullname="Jon Millican" initials="J." surname="Millican">
              <organization>Facebook</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="11" month="July" year="2022"/>
            <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 and post-compromise security for groups in size ranging from
   two to thousands.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-protocol-16"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="B. Korver" initials="B." surname="Korver">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="E. Messeri" initials="E." surname="Messeri">
              <organization/>
            </author>
            <author fullname="R. Stradling" initials="R." surname="Stradling">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews">
              <organization/>
            </author>
            <author fullname="D. McCarney" initials="D." surname="McCarney">
              <organization/>
            </author>
            <author fullname="J. Kasten" initials="J." surname="Kasten">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="J. Bradley" initials="J." surname="Bradley">
              <organization/>
            </author>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Myers" initials="M." surname="Myers">
              <organization/>
            </author>
            <author fullname="R. Ankney" initials="R." surname="Ankney">
              <organization/>
            </author>
            <author fullname="A. Malpani" initials="A." surname="Malpani">
              <organization/>
            </author>
            <author fullname="S. Galperin" initials="S." surname="Galperin">
              <organization/>
            </author>
            <author fullname="C. Adams" initials="C." surname="Adams">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee">
              <organization/>
            </author>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins">
              <organization/>
            </author>
            <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:
H4sIAAAAAAAAA91c63LbRpb+30/RK/8YWyFoybck2tlJZNmeaGLZXktJZmpr
Z9MkmyTGIMCgAckc2/Ms+yz7ZPudc7obDRKUk63aH7uuckkC+nL63G+NLMtU
kzeFPdEH5zNb4veNnle1fv7geXZpp21t9Vm1WrVlPjVNXpXuQJnJpLbXmIAx
Okw6UHhvF1W9OdF5Oa+UmlXT0qyw8Kw28yabmLq0LlvlqzzL/aTM1NNldnSk
XDtZ5c5h/WazxpTz51cvtL6jTeEqbJSXM7u2Jc06GAHQ06f4ASAPzt9evThQ
Zbua2PpEzQDBiZoCSFu61p3opm6tAqQPlamtwUKn63URDqJNOdNvrSmyq3xl
D9RNVb9b1FW7xriLCuc+L11jykZfWOfMIi8XeNLYulrb2kzygg/9zm4wb3ai
dKYBoG4q/uEIcxhAj8Nh1bUtW8Cn9W/eRWtBy8FPgJGG/JFWoOcrkxd4Tlj9
NrfNfFzVC3q+yJtlO8GbST5vaznx/V3cHyhl2mZZ1XQATNN63haFkO1tPl2a
eqafMuH4JRY3Zf53Xu1En+VuWvFzK2DUxeTbfH09du8HVquWptQXZrkZWOmn
vLa9hWjweIXB397g1XharZQqq3qF8ddAoSIOi39p7fJFaYoTXqIx9cI2J3rZ
NGt3cv/+zc3NWN4Tbu6DK919t7bTfB4YAc/aSQF0N9Olbe7LKl4mrpZWP+PX
+q2816cFuBzoXR3wSGY6/eDo+El2fJw9OOKHEanyL9OChCvIDdj2ja3rvNx+
eVG9zy0wVBd56db5O6swAsycv3P7T9aC1fP3fDIMndvallN7X54GJjx+fL+x
0yVJcJE5y2Lm7q9ri1GN5wxbmNr0Tn72+tX595cn+ilAZbb83m5wAAPYDO2y
IV5/Dl7/wdnabeHicXb01QAi4lHBe9gRPB+37V6emroq9dPClO9cYyOewus/
Vc6ul/ppVZbWtFsvn89uiGVf2KKx2xMviJ9toV/U1s5WpmT0AtkE8rPX5+Pj
o/Hx8dHX9y/fjHGCL8fHX0bOylrQoDfoeVtXYeCDL2kpZ1a3cGBlXO4yCHXp
abVa5U1jLTHfTVlUZjZeL9f3Hz7+8vj4vnPNNKP1sik0RAZuMY3JHoyPsptZ
dvQkm+Xz+Xg9m6f0OnUgQ6fX3tRVU02rwrEyb8DFr08vzy/1peeJbjwR4127
1i9NuWjNwuq7l6cXL+/pH7EfnavKZ9Phc9Fp8tm4hMyQQDn/AECDNNNGgD/+
j6PxslkVKayvMe78GewKj8NPqMFjv5ss8Si7nua/bVdMsTWE2kBWs2ltWc2B
dDArrYFQ3AYJ4ejHOFufxdn63M8m2C4hLK17mbvmwdGD4z20fjjNptPFWPTv
OK/uX4OUPDErMDOjqT0VI6tqWlbTS6VUlmXaTFxTm2mjFGQsa6qMzMpdWNx7
0bjoHLQGC+cNSbZes83w5ntVzWxdaiiCWk979lu5DcRq5caabHy3GKZDSzSO
57jfbc3S87pa4bQrbEHKoKoVaSlMIBaaABYyWis7y02dWweOM42GnsDz66q4
tjP8ome2yK9lPrSCs36PABhvUZVWF9WCT4QjryssTJrGlBW4uAbU56U2s1nO
G+MF8faqhRsxgzlqwdUzOpeChqo3ax7kDzxid6B/6Nr+0sLAkMxEO61XUJYw
Tm7Fp1BQlLDcjeOdtrACpF1jXi3oyQk7rirxEkeEmgRh8rWhuTi9UV73jrQh
wt0YVqELQ++mU7wLx/HjcNarJWgMk9WuAAHw50DtCYGrlvlimRWArNBkyHOi
HTlr3neLpxn53+YbQbvtGCae0ykmVwm9SCBMAIEYSDsbe3Zc5bNZASm4Q95J
Xc1aJvxtzPl/hp9Oi1UF2TNFwaDScW4RG8ydmU0AQ5vOofTU6AM+0g68SQRf
sX9n9S+tbeFOkYzSICCsxhmcMHZD9Ib+bOz7Bo7uslpnk02GHwcpz8LMJ7zi
PU0v/oSsai6EBnVLQDSxzY21pTwrcuIkMhG3gr4ZKXDbGmzF0+bQREIDgdCv
vCIWJpcgx5Ja3HDaHcqZvGlZVvUxgoMedFwzeK6Uh/pnUltcFI5GVCYeTI/n
CazUH8Ekcvp2kkPesTBWu+34DUtpT1OQrlW/VdfqPbo2h8Rt1rRSsSGtUViS
bzD1DcyGBu4wFOoD3lQipHB7D/XhIS3UKbfDw5G+WcKz0RZWZgITswSyEJUA
3FUFwTASbdCJE9jKBTk/jCywKKMLjhrpCYriWNWtNEmc5o2qRW3W2EUzonhC
hCUomg4S41w1zXmdEsjtr2CaBiqs5U2Yg9kLS0fUNnVNGXABlESeqNjHACsa
cnVA6ac1HCmgFIrEUJw0GhrLSsmQ2oXUrwFsTnLcNGb6Dgy12WXX9JS7K0Ay
0gW8uKvEFmBf/xaLPQVX6sJsiNVJn3kLxIqXRpExIEqBJ0B98LDgQKX8g5Oe
4iHUxnVubwhDETwKfskgBS3LaiYElkGF5dFwkRpVHz58c54943CrH55/+pRo
pWCFQGUbLRHDCvQCVqhbuNkk9gM2aFabG1bzsMbVirR4zu4Vwvqi2rBxs+/J
FFD4MlLEkGTgCvxvgt3qJEFvm6uZnecl/qKNyZJ3ATRslquKlrBBpuwOOZ1k
zaOj/Iym5qLiFUV7kB1NIb1DfP7D5RXlG+infvWaf3/7/F9/OH/7/Bn9fvnd
6cuX8RflR1x+9/qHl8+637qZZ68vLp6/eiaT8VT3HqmDi9O/HIg0Hrx+c3X+
+tXpywNh+tQLIK6RY/M514T8GbFcIArbxqdnb/7rP48f6Q8f/unti7MHx8df
f/rk//jq+MtH+OMG8i67VSVkRv4EojcKqtGamn0WGMWpgRkwhWO3xS0Rrmjo
VQt0Hv4bYebfT/TvJ9P18aM/+Ad04N7DgLPeQ8bZ7pOdyYLEgUcD20Rs9p5v
YboP7+lfen8HvCcPlfrJknIXQ1gVRcWsTEqCDBD+hGY+YxV1ohDjYxTlTW6I
TuBHV80b/r0l1xSejRFLARIy/ciystoH41LSjYV8x9CJ6ALnZ8MOaNhZxrFK
GHCgfGTm+qYg6FesHlOAErfjN1oYysY/5lXAjPCkXSPitzLvsC2UNdswCNWk
ahvGVVRKnc5X0Tbw3G7jS3F5/W4dHiKOWIuyRYtmy44XY2JgffHyUqxcUGWU
CctWhcuCbfj0CZiLUZ3fpZr8jcJPChA9ZZIgICLAu56dTRs6lhDQg/Y7kKWF
KZ6SLhmT0nm99hoZKu9MvDsWPATh7WqdKB/v+pHoiS3t2R4gPjoL9IcII8Z+
+OAnisZulHdP3RbPAo9VLY7EaeKuHR56nB4edlELcwapACGHN6J2FqIT2G1a
5fDQW+uOkbBK4JNpYWBQSFqqzq7rKVwnMnQxM8qZog6btPLhIQfkm4Q/w7qp
q+KdWuxCam+AMof6dclyuKIsA046LD9xcXi6lHRlSm+NZfajXGz0o2l5MNLh
4S7bRGA5zzLINcFP7xAYnTLRy8ICibhNNjzhegsznRiK8xEyQUq9qhhFhjmK
wxxnG9qJxMdgsF/gJoeiJ00EFT+pmJd3yMpen9nZfJTSg3mmcbaY8wG6sQQ2
++NbzlyIiYlCLMJj/TyBa1q1xYyVr9GU9aL8ZjMkpGT5sbEaQPOYFbghUbMh
htlxIkOWLICTukgTSgkgyOGoodzOLgQVEwM9SReHbPGHD5JChMHFFqSp9uuo
kYpyz8RJMggsTKmbzKFDKglbcKpZviCzLRlMTg2QZ7M2OYVEpGvWy9oAsQcD
KDsgLQ6nltwOxNgT0l4W+03Ivx5JkYN8VCAVGIHDEGbG0NPzpVcDcGNBvhra
Foskx5BTdHk7n/EAGqZFOyP1FfLWIYuRk98cMf3qknO7jlD7w9uXYGoAwUUj
xaE8oQPcN2/j/HT6guNCTJ2bVQ44eCmuK/lF5yotU/AudVUwR/3jH//Qxrjr
Rcji/+p/X2Tdvy9+8+yPulOLH3/LbNr2Dx+1FkeFVvotsz+GJT4HeTpGBvJW
X2w/8qtueTMfh7f6qN90yuhjCtMbr77vunu6m91HEj2Kp96Brw/sLpK+iC/6
kA8hqIP8ix6StkcPIildbM+8z/37X5j3xX4ou3kDSP0iFoaHjruf9T7q06jT
b+HQPn9AGNWHE30neE+cWf+Xg9TrCq+2Q9MDDc9wJ/FGKmxRYRrU2bYHBuXn
cwA8LKpgn1YimzbJyxnxXpp42zGnPS9R3xW1H30kn4LxRnJPxuMeG1kMyOsh
/2LU5Sg4/eDdh+3QIrhAUL6vKRA0Pe1dWJiRfCX6vw9e8LtU4tLAJSWLTZkB
qqSQj2/EfA85LdGrlvxtupBkwsh7zWucQOaMNZfMocCnMBEwJqPbkzPDWZjg
Ru3Dg5jHXla9C60p9IWntMytuNfiKDRd4jqaYDIVyufx+J3nhn0lBE/LAe+G
zeJeuhFTtqV3EUchSeZgwqTEILkSTsh6DPjck4qzwqSmNlJYocoXBV6Yh61r
iyUuKrgC5Ly8fXH28PHjBxxqXCXwqs4b60eI06r2pl9cU+3lo0vfDkaKQEcn
IC4UQ6JrkPqWAG9HvkScQQTP84DBrSsRzGRd9mbMdZXP9A/lu5ICKip0Xy4p
ZA8MY4CQalG1PmdJrMpRF+Hiq68ePQIumGloSh0cXfFdfmlj8A3fESFoO7Ue
10BQ9JDWhZlGOqhdFhix5rLvDcV/WmrzEvbl75z4ltcI9AlE8r4zR9lBC9cv
WWsNjgHnWsGldTZ5pJfmmtONoIktfV6O0kqIGOB+2eiuB7aKkGUTQ4mNraVG
gZ03fG7oA855Wko2AYlr8VG3F3GYv4IXePeMIpi5RHi9noMb4zrgVvA99caa
Gtwyb6x48D/ZiX7z/bmnztfHT8Cp9/jErdvKpM3xiyNHj6LcXWAklbKbzOTq
HY0p8pJVnOjuhlHKtFcJNlaUw8TpCT5Si7MZV9VOKZsLdjT1RkyNmBYEywiY
/y4sgoATIirJHN/vQqDGBEtgdArMQl9H5Cj7fl05EcDbtMrAC+WVOHFDAeyG
mGRf6MzMtx2sg7q7ESTLr8/n4CnpeKBiJ9DngK8totnphzlDkbQPgNW6glxv
wCHTXLBhdgplkqsKgcrKWgIFuHjRyRdIrHbMFdW6WEiwrV2tvW6rOVCjlZZV
MZN0Cv11ef4GEcm5+tnl65NJNfnWvl8ZLE2tTD/76J6RXNsFdayksafhzAPQ
u8qJgPlc5OgG4qOIJsBey4GTT+cFIoPughmy5PWQyRVevMkdQK6ULz34PEVR
7FasI0iU5pQsjolhUxcZjTkm7uiCULsOWk+kgulCaUhSj/baFC2TsiqDccB2
65YzgeoOpVROh2rawaVUClF1Y9ek+CgHJt5IAzuVVLd5gD+FSHIqxSdKHY/1
4WHo7zg55EzOQGbBs7kb9uKYh8lPpUpZ7BoJfg2nQ4bZ1fRzhA8ImDdJ3YsA
uhrcMQKUk43rNo3ltKEUDZOPfSpMZx71eZDd9b3ZdGG1LdNZ59ckPwL2w3FI
1Hm1EMDeYT0J8hOuSEGHVqedkkxs9B+GTGFMLeX7yMLLyUm58CmOQEhO7D3Q
IOi0FAm/PCfo+tnz6KkOgUoFqbapygqq3BWc6WydbGuvc35G4M3zRVuz/R/S
8wO6G0HLnGVWuF5O5mzgek5yUEsJNWBuYj0R7mGEdqhxoHNzua7BgVA5nHIk
q+7M3IpXF714O5SBC+5lSvEAxg7pesmV4bzB/n+/Jm+gIWuppKXB5/8wb5D9
2rzB5yDv5w3++vlpvX9//X+WN/j9/rwBlHdQ3R6EJG+goZZSpfRb8wgiRD6L
cCoiltFDUincqMWFZjJzxCo7+YQ7d5K+QfaxAqhhPgko/LzCcB3Qvs+dVyWI
sTZZdHD9cMsbKlqli14ySht0EpV0Gp2eXTwPwcnjx499oCaBKu8O5od3RWnW
PSaAfBmuF/Xsy1YdLLVgbNHggza9ZoQkB6/1pfdDt1GxojBIXIaeskvCSdJu
NzSdg8ZOL+4AzpWtK3aA+3Ys1fJb+t+7h91ZkiVuS34Mxawq6U0cSaaIewcR
n0toSdu7Xmh594fvL++NBlGjGDXe7Hg/qtPVf6NONoCVZZ1JTau0PTOeHj93
XYLAuJ15RPu9J5Qw10k5pSZgxaXrupnSqgnc5VD7GXAzKKtgiWtigSIxCh24
FMhS2cVXaxnG2s4LzvP0GSZlN1CC5GCUliMAwYz4No0uL7E7QfXWUqTeKJGb
B19/9eTTp1EMfEqqV/rSGC0IQ8lNO0PGjrupklOFbFPM+vU8KOiK1Bj50kxq
noKgmCmbcenw6uSBef6c6X1NbV/7ko07nuKOTR/LQkTB2J01kLbb7zlG1lG3
e410xILCqFrP21IyZ82WL9c/uwdmTx5UTSxtQg0WPqhNDsttF9tB/G67W6yO
Kc9hUdhjPvQz7Weyc/+titVBrrA2lIMwBTh/tgmZrLSvKVQhd1ErWedrqzgU
JET/OrXWIUJcxlsOwC4d1c5CX+22z3YX2qJah6yC4tY5rvcSZritSxJfN2Zz
z7uOeb9X21H7gmenpP9SpbnW0Wdh9CpGtgzLU8QXPNqJLe0c0ZHv3RtYx1G7
kzc4u8gm2RU+Tk4vPOYHU8IL0xfYqPZNnIgIOBm0V9WPFNkCH87XVrr3of31
dVuU8bJX4LK2nNm6YExt2wXKHrmk8y6kLU6kV89ylTlijDJdODpBTDXdft0/
MLnaiiU5bH5pzfxVRYhGMCaReEguEYZiu+qAclMcTYnX0c2WEgu0VJeWEo7Z
STxwT4/k4WKHwM1yXymFbaFLcyiJx9MF75Ka6+3FB4haPY3gSYkntfNqUB7K
mUoaG6h6RIv6MDOg715oi+XCBPtNITCFLMX+h/m2oRbj0PNj1Wk/hiKVEi0v
JRejmfQE8rZnKDJ1lRrU77wqdwSGBkvi5z3L9IpY5E9W9Ux626LbMhjtJ/qX
pScG/sMeIMjZdW+57YOzzuLUHGuE2DNLKdBcii+QPW4Wo+V/xoCnFqrW/nyf
fj+l1PHPep5bsl44w5/Hj4++1l4V/1xO5hiHpcIQOuaffrryHvbjB18dcWcl
/fHlY2qzBLQp1XTomvdd5k7UICRxblwjza5M9ukmY9auyWsaszPJB5pCDKhO
sazaxXLE+taBOKQKKHvc+MOb5OR0z3Aa+qcTLUYq8TvLbcfJgL6fLwWsQcIR
3stKUTLJZ7OnU7v2vSc7KWCoGmm8J7i31/JdQrlTLD03OZzKa1PkM31XSEUa
qZM/nFjeEraAgaWRrhImsZ1Rgv8yp3hreBuYDRrt/cb09EnGZTSQMlUkBOx/
LOy+ef4uy6CA6OTqcrHhRsdrMhnsQS5gkNgN8p3ayfJMUS7F4IRFVXc1Oqpt
+EK1JDEvsVOTkcWecWed92y9ciurdNnp0k6pMZ7yja9Lrl/0nGG5ixYuD+q7
r88u39yTWVw2DQl6YfcnXz8B71MSkMZRYh0mnUy7r2QeXMEQvbBMwQMcBOqR
dZ2fffTkSZScJw8fYqVH4x44bzvA6XocgqWzty/dPT231Fs12wVIhFE9xjIY
mI4DI86qWpxzIBOribuetqFSPY3vg1K36FVSSiJm60w9ddAVPnmNaURM7Cab
0envPob341VZbL1UwZMltVRQT6SkS8l530tA7houRca4nE5+lu/f8w5MAF0y
+xPyvKv5nAlLHOUltaG71wTPACtIReaaHMRDoSMdd2KglGzNPO5djxB4EgoL
a8AQRSXWLpWFmIUeSloebjFK9B8OKNTN+HmPU6iO9UsL3Vh4J9h1uKIgI8EW
rR7pYHvcykWHnI003yogqbTzOVUkqLxWh0sYkieVMhOtboSgUpVM7qBNLMcu
M7p15Fmg2MTQeFuy2ZWoF61vjyZjRb4vTPCqpTDH8U947S4W7718q632E1/F
HKVkTKKHGdkXkGkg3JGKHhxjnDYX/7Wp+Kq0hz//Ox6lbOxb6RBztuJqhbsV
qzUoAOdJhX5McEeag4j5fhI4ImAF+xqO1e9pJ0s3JZ9HComhZtzydcyuOYG7
loNHl1inQF4xS+KsqC5dstOas1frY9cEjeEGD7BB1986pRDsX0P3Q94BoLeG
eYqlK8l1+KNzDY8D91K1ZfjLzrYvOFFYBbrLdj4VlIA6M43pZVWawQYBAY7N
BuXifIw5EZ4GBqWy5j82kZuu59z3LBhQ/iap+wMnYPqa7w3RBTd/k7zHVbGt
AdvQTSRqBaKzpHsEb1gaStNAL7lb5KR9hq8WUTBD6osBUqHjgX0g8YgvTNlC
5/ZcLGxCXRsvclJ3cKYopFH9tvXuGhSkz8XbGIi6igAn31T1FzxrSvlVcqvP
qRXv6SsphrO+HEax7+J+x8HePNk8RPJ5La50ijYVc2eBp3solBBhZsXgNHL0
/Vj0Kc++0+Nk132poM5ll3pQ1TY9hZ2k+w6lHZtvrIQAxp/rZqhcyjmkEK9y
r0UZM2C0CCWiREH480mauWtNPuzXZlhscucjuD3RPMedQyGVb9YfxEEaaB32
uclnSIXogeRO2Gyb0qN4tBDC7dZfpcJXr3omL5kylO/x6pQqhiLUIWUbrvx9
nrhskZi9nG/ljjwVmsRgZkNQ34BWVpzq2GDQu2lBjd4DPPLPEltzwHjbbU8y
hy4kTqSHKtzbmOxh1QDmdY843YWgmGHg+r5issF4hHyK9B9ShiUk22MK4Xbk
mwm1BSnhczCU5K9YLveXpWOnP30shBvCSFlxLKmUhJTifBbc+kB+JXeIVXQ7
3Tt7xleARDv1FClx807PVXLxIhoys9YcM0lg7R0yyjXdrjQEgG2H6mooqAnQ
JoN77+6enbp7g4rgOje9bJbPxfUKV2RkLq969SvIgI+vjx4eEWrhM/swisTR
vifbvUhX9Bl7b0v9DVtv46dSTdO9THO4TcYh/59BrC7f8HPyQYicE1M7CkPc
/JC/9iW+sheU+Mr7UCymO+TQT8+Wzp8wdfDiFy548VQsfAciCQN7q+yigOEt
nAKyRWw/fcxgmPmIJa5NXrCcyP21hIb85Qu5FcRyG/J1EZnEFXmz3W/Ml5ZC
YrXq+q9V6L82gigGKQ115EIruzlOspXJ9UCtL6gbDH6ASm4G7raj0Vcpgv2W
C5sRH14cBz/yAlfhrBd2lSKeHTs1/tNefOGZQqN5Lq3kW1efSK0EHSl3xy/9
lesif4fw+vTiJakJs6LrQLTN1pdwPnygr+3QO5yPLqxxzy/r1ljGYNXVNSOS
l84D5PwUnGAypeDeQbmPWJ939U21VTTu6Lnj3MGnl06V3oJhXGcJpI2N6bqn
YFQlH0bZk3L/J/USCKIkEE5kpWW80/zYPaZhWGqICj2oODdE0IRbRqrryqHc
Yj3al5/hBkdHmap6023HTZ3VKtZ+VK9eBGbiPnRsxWmdkc/oc+BMORvutW58
nMc7//TwbA/z6bs/nt1LLs8HfQ16YuSKlAgmj6+nGUUCGfvisff6xzNxzoF/
rlmQvJOsUcZATHjEw67rKPIqhZt5X7o71qc+cf7UCseWq1Bk76VjQ8t/d5Gr
x2OhPVTepFr3dhsT1z1nEsY2onBo4OBuxzbieg006MULCfo7adEM6akdTjWe
RLYe3wuAbbcrSNYlltpiaTIOTC8sR4DpS30Ecr+NW+Tr13+Disxg+oEsWMZe
k2C/ZroP0t7gPrTeXw4IHoLWf15h4S81RPbaqnvqrgC11Tw/YF/TBcXCblet
Ap/0PMHbDoojpGNHAXoiRLTmwe/48KH/aS8o4H46lvu1fzzzbpdI3I7C5OvO
0CaUImzIcuZl6LsTNb0I36FRi6qa6U5MRXrl4w5UDKgaT3k2MSHdRDaH0d2z
AJx9UDBXXBhwNhobThqscj72lNJL9HE+XnHe1py3SGRasgNvRfwlUUUjz9MP
aSTtt0SKi/OLc1Z0tIF8YyZ3vqWek6PxgzQxyZh809Jfpt75NokkBWIViUOf
oSs+bPK5Uqh6X/vo3+HqXnVf5LL9hJE2C26gFMKY0t34jxBJQoSbQmgz1no/
UaS0rzSdO931IXxDw7+DSWRHOVGGgdfT6umeFb/hi/C0iP/QW9QI3k7Nugte
vbvCXQgoSzDYW20GiSMaP05xN6cLzpt73cbb0Pc/39Bw69AA3AFV9NVSzqzs
xBk+dUcffQkN7MmdMdHMfh2+A5+Q31864DBSorFvyB67puuCjVSTqGo285m3
fueKP31sJvZF1vWSfWWvuwfzVlc93vIcvfXpHQORKGcq2gWCJF5hP+HrBuFd
8B9iAJ582oY/BgRZiZ+xQXReV87HGtW6LbY/kzQSfzDcrYrtK97sJX11vprv
2p1mcpzxFbQvhhfA3ChkNwMwoy2h6xu/uZGQT7QgN/tPqNzpch7ShDYQiKJK
VX+8INdda0n9AdFR8QOWZz10++Bn6FN5ISLa9tfF2PS+y+WVB7a63PpC4CoW
Enpf2WF7HIKczE/PAHhmuk970MV+EwpI/XuFvIQps/RhBkAz+8Amn2HqPDXV
qfI9edad5fvjOFC8o89PX51+BoVSYpWR4iG48DXAiZm+U+q/AVNl6qo8WgAA

-->

</rfc>
