<?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.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mls-architecture-11" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="MLS Architecture">The Messaging Layer Security (MLS) Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mls-architecture-11"/>
    <author initials="B." surname="Beurdouche" fullname="Benjamin Beurdouche">
      <organization>Inria &amp; Mozilla</organization>
      <address>
        <email>ietf@beurdouche.com</email>
      </address>
    </author>
    <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
      <organization>Mozilla</organization>
      <address>
        <email>ekr@rtfm.com</email>
      </address>
    </author>
    <author initials="E." surname="Omara" fullname="Emad Omara">
      <organization>Google</organization>
      <address>
        <email>emad.omara@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Inguva" fullname="Srinivas Inguva">
      <organization/>
      <address>
        <email>singuva@yahoo.com</email>
      </address>
    </author>
    <author initials="A." surname="Duric" fullname="Alan Duric">
      <organization>Wire</organization>
      <address>
        <email>alan@wire.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="26"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 220?>

<t>The Messaging Layer Security (MLS) protocol (I-D.ietf-mls-protocol)
provides a Group Key Agreement protocol for messaging applications.
MLS is meant to protect against eavesdropping, tampering, message
forgery, and provide Forward Secrecy (FS) and Post-Compromise Security
(PCS).</t>
      <t>This document describes the architecture for using MLS in a general
secure group messaging infrastructure and defines the security goals
for MLS.  It provides guidance on building a group messaging system
and discusses security and privacy tradeoffs offered by multiple
security mechanisms that are part of the MLS protocol (e.g., frequency
of public encryption key rotation). The document also provides
guidance for parts of the infrastructure that are not standardized by
MLS and are instead left to the application.</t>
      <t>While the recommendations of this document are not mandatory to follow in order
to interoperate at the protocol level, they affect the overall security
guarantees that are achieved by a messaging application. This is especially true
in the case of active adversaries that are able to compromise clients, the delivery
service, or the authentication service.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  MLS Working Group mailing list (mls@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mls/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/mlswg/mls-architecture"/>.</t>
    </note>
  </front>
  <middle>
    <?line 243?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>RFC EDITOR: PLEASE REMOVE THE FOLLOWING PARAGRAPH</t>
      <t>The source for this draft is maintained in GitHub.  Suggested changes should
be submitted as pull requests at https://github.com/mlswg/mls-architecture.
Instructions are on that page as well.  Editorial changes can be
managed in GitHub, but any substantive change should be discussed on
the MLS mailing list.</t>
      <t>End-to-end security is a used in the vast majority of instant messaging systems,
and also deployed in systems for other purposes such as calling and conferencing.
In this context, "end-to-end" captures
the notion that users of the system enjoy some level of security -- with the
precise level depending on the system design -- even in the face of malicious
actions by the operator of the messaging system.</t>
      <t>Messaging Layer Security (MLS) specifies an architecture (this document) and a
protocol <xref target="I-D.ietf-mls-protocol"/> for providing end-to-end security in this
setting. MLS is not intended as a full instant messaging protocol but rather is
intended to be embedded in concrete protocols, such as XMPP <xref target="RFC6120"/>.
Implementations of the MLS protocol will interoperate at the cryptographic
level, though they may have incompatibilities in terms of how protected messages
are delivered, contents of protected messages, and identity/authentication
infrastructures.
The MLS protocol has been designed to provide the same security guarantees to
all users, for all group sizes, including groups of only two clients.</t>
    </section>
    <section anchor="general-setting">
      <name>General Setting</name>
      <t>MLS provides a way for <em>clients</em> to form <em>groups</em> within which they can
communicate securely.  For example, a set of users might use clients on their
phones or laptops to join a group and communicate with each other. A group may
be as small as two clients (e.g., for simple person to person messaging) or as
large as tens of thousands.  A client that is part of a group is a <em>member</em> of that
group. A user might have multiple MLS clients associated with the
same identity, for instance if they have different devices.</t>
      <t>MLS is designed to operate within the context of a messaging service, which
may be a single service provider, a federated system, or some kind of
peer-to-peer system. The service needs to provide two services that
facilitate client communication using MLS:</t>
      <ul spacing="normal">
        <li>An Authentication Service (AS) which is responsible for
attesting to bindings between application-meaningful identifiers and the
public key material used for authentication in the MLS protocol. The
AS must also be able to generate credentials that encode these
bindings and validate credentials provided by MLS clients.</li>
        <li>A Delivery Service (DS)  which can receive and distribute
messages between group members. In the case of group messaging, the delivery
service may also be responsible for acting as a "broadcaster" where the sender
sends a single message which is then forwarded to each recipient in the group
by the DS. The DS is also responsible for storing and delivering initial
public key material required by MLS clients in order to proceed with the group
secret key establishment that is part of the MLS protocol.</li>
      </ul>
      <t>For presentation purposes, this document treats the AS and DS as conventional
network services, however MLS does not require a specific implementation
for the AS or DS. These services may reside on the same server or different
servers, they may be distributed between server and client components, and they
may even involve some action by users.  For example:</t>
      <ul spacing="normal">
        <li>Several secure messaging services today provide a centralized DS, and rely on
manual comparison of clients' public keys as the AS.</li>
        <li>MLS clients connected to a peer-to-peer network could instantiate a
decentralized DS by transmitting MLS messages over that network.</li>
        <li>In an MLS group using a Public Key Infrastructure (PKI) for authentication,
the AS would comprise the certificate issuance and validation processes,
both of which involve logic inside MLS clients as well as various
existing PKI roles (ex: Certification Authorities).</li>
      </ul>
      <t>It is important to note that the Authentication Service can be
completely abstract in the case of a Service Provider which allows MLS
clients to generate, distribute, and validate credentials themselves.
As with the AS, the Delivery Service can be completely abstract if
users are able to distribute credentials and messages without relying
on a central Delivery Service (as in a peer-to-peer system).  Note,
though, that in such scenarios, clients will need to implement logic
that assures the delivery properties required of the DS (see
<xref target="delivery-guarantees"/>).</t>
      <figure anchor="fig-mls-overview">
        <name>A Simplified Messaging System</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="456" viewBox="0 0 456 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 80,144 L 80,176" fill="none" stroke="black"/>
              <path d="M 144,32 L 144,80" fill="none" stroke="black"/>
              <path d="M 168,144 L 168,176" fill="none" stroke="black"/>
              <path d="M 184,32 L 184,80" fill="none" stroke="black"/>
              <path d="M 208,144 L 208,176" fill="none" stroke="black"/>
              <path d="M 248,80 L 248,144" fill="none" stroke="black"/>
              <path d="M 296,144 L 296,176" fill="none" stroke="black"/>
              <path d="M 304,32 L 304,80" fill="none" stroke="black"/>
              <path d="M 336,144 L 336,176" fill="none" stroke="black"/>
              <path d="M 424,144 L 424,176" fill="none" stroke="black"/>
              <path d="M 8,32 L 144,32" fill="none" stroke="black"/>
              <path d="M 184,32 L 304,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 144,80" fill="none" stroke="black"/>
              <path d="M 184,80 L 304,80" fill="none" stroke="black"/>
              <path d="M 80,144 L 168,144" fill="none" stroke="black"/>
              <path d="M 208,144 L 296,144" fill="none" stroke="black"/>
              <path d="M 336,144 L 424,144" fill="none" stroke="black"/>
              <path d="M 80,176 L 168,176" fill="none" stroke="black"/>
              <path d="M 208,176 L 296,176" fill="none" stroke="black"/>
              <path d="M 336,176 L 424,176" fill="none" stroke="black"/>
              <path d="M 304,80 L 336,144" fill="none" stroke="black"/>
              <path d="M 152,144 L 184,80" fill="none" stroke="black"/>
              <g class="text">
                <text x="76" y="52">Authentication</text>
                <text x="244" y="52">Delivery</text>
                <text x="56" y="68">Service</text>
                <text x="108" y="68">(AS)</text>
                <text x="224" y="68">Service</text>
                <text x="276" y="68">(DS)</text>
                <text x="432" y="100">Group</text>
                <text x="212" y="116">........</text>
                <text x="284" y="116">........</text>
                <text x="388" y="116">................</text>
                <text x="184" y="132">.</text>
                <text x="448" y="132">.</text>
                <text x="184" y="148">.</text>
                <text x="448" y="148">.</text>
                <text x="116" y="164">Client</text>
                <text x="152" y="164">1</text>
                <text x="184" y="164">.</text>
                <text x="244" y="164">Client</text>
                <text x="280" y="164">2</text>
                <text x="372" y="164">Client</text>
                <text x="408" y="164">3</text>
                <text x="448" y="164">.</text>
                <text x="184" y="180">.</text>
                <text x="448" y="180">.</text>
                <text x="184" y="196">.</text>
                <text x="236" y="196">Member</text>
                <text x="272" y="196">1</text>
                <text x="364" y="196">Member</text>
                <text x="400" y="196">2</text>
                <text x="448" y="196">.</text>
                <text x="184" y="212">.</text>
                <text x="448" y="212">.</text>
                <text x="316" y="228">..................................</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
     +----------------+    +--------------+
     | Authentication |    |   Delivery   |
     |  Service (AS)  |    | Service (DS) |
     +----------------+    +-------+------+
                          /        |       \            Group
                         / ........|........\................
                        /  .       |         \              .
              +--------+-+ .  +----+-----+    +----------+  .
              | Client 1 | .  | Client 2 |    | Client 3 |  .
              +----------+ .  +----------+    +----------+  .
                           .   Member 1        Member 2     .
                           .                                .
                           ..................................
]]></artwork>
        </artset>
      </figure>
      <t><xref target="fig-mls-overview"/> shows the relationship of these concepts,
with three clients and one group, and clients 2 and 3 being
part of the group and client 1 not being part of any group.</t>
    </section>
    <section anchor="overview-of-operation">
      <name>Overview of Operation</name>
      <t><xref target="fig-group-formation-example"/> shows the formation of an example
group consisting of Alice, Bob, and Charlie, with Alice
driving the creation of the group.</t>
      <figure anchor="fig-group-formation-example">
        <name>Group Formation Example</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="464" width="592" viewBox="0 0 592 464" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 528,64 L 528,144" fill="none" stroke="black"/>
              <path d="M 528,176 L 528,208" fill="none" stroke="black"/>
              <path d="M 528,240 L 528,320" fill="none" stroke="black"/>
              <path d="M 528,352 L 528,448" fill="none" stroke="black"/>
              <path d="M 128,64 L 392,64" fill="none" stroke="black"/>
              <path d="M 8,80 L 304,80" fill="none" stroke="black"/>
              <path d="M 208,96 L 392,96" fill="none" stroke="black"/>
              <path d="M 88,112 L 304,112" fill="none" stroke="black"/>
              <path d="M 288,128 L 392,128" fill="none" stroke="black"/>
              <path d="M 168,144 L 304,144" fill="none" stroke="black"/>
              <path d="M 200,176 L 480,176" fill="none" stroke="black"/>
              <path d="M 280,192 L 480,192" fill="none" stroke="black"/>
              <path d="M 360,208 L 480,208" fill="none" stroke="black"/>
              <path d="M 264,240 L 392,240" fill="none" stroke="black"/>
              <path d="M 8,256 L 168,256" fill="none" stroke="black"/>
              <path d="M 144,272 L 480,272" fill="none" stroke="black"/>
              <path d="M 104,288 L 480,288" fill="none" stroke="black"/>
              <path d="M 88,304 L 344,304" fill="none" stroke="black"/>
              <path d="M 88,320 L 368,320" fill="none" stroke="black"/>
              <path d="M 296,352 L 392,352" fill="none" stroke="black"/>
              <path d="M 8,368 L 136,368" fill="none" stroke="black"/>
              <path d="M 176,384 L 480,384" fill="none" stroke="black"/>
              <path d="M 152,400 L 480,400" fill="none" stroke="black"/>
              <path d="M 88,416 L 312,416" fill="none" stroke="black"/>
              <path d="M 176,432 L 312,432" fill="none" stroke="black"/>
              <path d="M 176,448 L 336,448" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="488,400 476,394.4 476,405.6" fill="black" transform="rotate(0,480,400)"/>
              <polygon class="arrowhead" points="488,384 476,378.4 476,389.6" fill="black" transform="rotate(0,480,384)"/>
              <polygon class="arrowhead" points="488,288 476,282.4 476,293.6" fill="black" transform="rotate(0,480,288)"/>
              <polygon class="arrowhead" points="488,272 476,266.4 476,277.6" fill="black" transform="rotate(0,480,272)"/>
              <polygon class="arrowhead" points="488,208 476,202.4 476,213.6" fill="black" transform="rotate(0,480,208)"/>
              <polygon class="arrowhead" points="488,192 476,186.4 476,197.6" fill="black" transform="rotate(0,480,192)"/>
              <polygon class="arrowhead" points="488,176 476,170.4 476,181.6" fill="black" transform="rotate(0,480,176)"/>
              <polygon class="arrowhead" points="400,352 388,346.4 388,357.6" fill="black" transform="rotate(0,392,352)"/>
              <polygon class="arrowhead" points="400,240 388,234.4 388,245.6" fill="black" transform="rotate(0,392,240)"/>
              <polygon class="arrowhead" points="400,128 388,122.4 388,133.6" fill="black" transform="rotate(0,392,128)"/>
              <polygon class="arrowhead" points="400,96 388,90.4 388,101.6" fill="black" transform="rotate(0,392,96)"/>
              <polygon class="arrowhead" points="400,64 388,58.4 388,69.6" fill="black" transform="rotate(0,392,64)"/>
              <polygon class="arrowhead" points="184,448 172,442.4 172,453.6" fill="black" transform="rotate(180,176,448)"/>
              <polygon class="arrowhead" points="184,432 172,426.4 172,437.6" fill="black" transform="rotate(180,176,432)"/>
              <polygon class="arrowhead" points="176,144 164,138.4 164,149.6" fill="black" transform="rotate(180,168,144)"/>
              <polygon class="arrowhead" points="96,416 84,410.4 84,421.6" fill="black" transform="rotate(180,88,416)"/>
              <polygon class="arrowhead" points="96,320 84,314.4 84,325.6" fill="black" transform="rotate(180,88,320)"/>
              <polygon class="arrowhead" points="96,304 84,298.4 84,309.6" fill="black" transform="rotate(180,88,304)"/>
              <polygon class="arrowhead" points="96,112 84,106.4 84,117.6" fill="black" transform="rotate(180,88,112)"/>
              <polygon class="arrowhead" points="16,368 4,362.4 4,373.6" fill="black" transform="rotate(180,8,368)"/>
              <polygon class="arrowhead" points="16,256 4,250.4 4,261.6" fill="black" transform="rotate(180,8,256)"/>
              <polygon class="arrowhead" points="16,80 4,74.4 4,85.6" fill="black" transform="rotate(180,8,80)"/>
              <g class="text">
                <text x="24" y="36">Alice</text>
                <text x="96" y="36">Bob</text>
                <text x="192" y="36">Charlie</text>
                <text x="396" y="36">AS</text>
                <text x="476" y="36">DS</text>
                <text x="28" y="68">Create</text>
                <text x="88" y="68">account</text>
                <text x="356" y="84">Credential</text>
                <text x="108" y="100">Create</text>
                <text x="168" y="100">account</text>
                <text x="556" y="100">Step</text>
                <text x="584" y="100">1</text>
                <text x="356" y="116">Credential</text>
                <text x="188" y="132">Create</text>
                <text x="248" y="132">account</text>
                <text x="356" y="148">Credential</text>
                <text x="32" y="180">Initial</text>
                <text x="92" y="180">Keying</text>
                <text x="156" y="180">Material</text>
                <text x="112" y="196">Initial</text>
                <text x="172" y="196">Keying</text>
                <text x="236" y="196">Material</text>
                <text x="556" y="196">Step</text>
                <text x="584" y="196">2</text>
                <text x="192" y="212">Initial</text>
                <text x="252" y="212">Keying</text>
                <text x="316" y="212">Material</text>
                <text x="16" y="244">Get</text>
                <text x="48" y="244">Bob</text>
                <text x="96" y="244">Initial</text>
                <text x="156" y="244">Keying</text>
                <text x="220" y="244">Material</text>
                <text x="192" y="260">Bob</text>
                <text x="240" y="260">Initial</text>
                <text x="300" y="260">Keying</text>
                <text x="364" y="260">Material</text>
                <text x="16" y="276">Add</text>
                <text x="48" y="276">Bob</text>
                <text x="76" y="276">to</text>
                <text x="112" y="276">Group</text>
                <text x="556" y="276">Step</text>
                <text x="584" y="276">3</text>
                <text x="32" y="292">Welcome</text>
                <text x="84" y="292">(Bob</text>
                <text x="368" y="308">Add</text>
                <text x="400" y="308">Bob</text>
                <text x="428" y="308">to</text>
                <text x="464" y="308">Group</text>
                <text x="408" y="324">Welcome</text>
                <text x="464" y="324">(Bob)</text>
                <text x="16" y="356">Get</text>
                <text x="64" y="356">Charlie</text>
                <text x="128" y="356">Initial</text>
                <text x="188" y="356">Keying</text>
                <text x="252" y="356">Material</text>
                <text x="176" y="372">Charlie</text>
                <text x="240" y="372">Initial</text>
                <text x="300" y="372">Keying</text>
                <text x="364" y="372">Material</text>
                <text x="16" y="388">Add</text>
                <text x="64" y="388">Charlie</text>
                <text x="108" y="388">to</text>
                <text x="144" y="388">Group</text>
                <text x="32" y="404">Welcome</text>
                <text x="104" y="404">(Charlie)</text>
                <text x="556" y="404">Step</text>
                <text x="584" y="404">4</text>
                <text x="336" y="420">Add</text>
                <text x="384" y="420">Charlie</text>
                <text x="428" y="420">to</text>
                <text x="464" y="420">Group</text>
                <text x="336" y="436">Add</text>
                <text x="384" y="436">Charlie</text>
                <text x="428" y="436">to</text>
                <text x="464" y="436">Group</text>
                <text x="376" y="452">Welcome</text>
                <text x="448" y="452">(Charlie)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
Alice     Bob       Charlie                     AS        DS

Create account --------------------------------->                |
<------------------------------------- Credential                |
          Create account ----------------------->                | Step 1
          <--------------------------- Credential                |
                    Create account ------------->                |
                    <----------------- Credential                |

Initial Keying Material ----------------------------------->     |
          Initial Keying Material ------------------------->     | Step 2
                    Initial Keying Material --------------->     |

Get Bob Initial Keying Material ---------------->                |
<-------------------- Bob Initial Keying Material                |
Add Bob to Group ------------------------------------------>     | Step 3
Welcome (Bob)---------------------------------------------->     |
          <-------------------------------- Add Bob to Group     |
          <----------------------------------- Welcome (Bob)     |

Get Charlie Initial Keying Material ------------>                |
<---------------- Charlie Initial Keying Material                |
Add Charlie to Group -------------------------------------->     |
Welcome (Charlie) ----------------------------------------->     | Step 4
          <---------------------------- Add Charlie to Group     |
                     <----------------- Add Charlie to Group     |
                     <-------------------- Welcome (Charlie)     |
]]></artwork>
        </artset>
      </figure>
      <t>This process proceeds as follows.</t>
      <section anchor="step-1-account-creation">
        <name>Step 1: Account Creation</name>
        <t>Alice, Bob, and Charlie create accounts with a service provider and obtain
credentials from the AS. This is a one-time setup phase.</t>
      </section>
      <section anchor="step-2-initial-keying-material">
        <name>Step 2: Initial Keying Material</name>
        <t>Alice, Bob, and Charlie authenticate to the DS and store some initial
keying material which can be used to send encrypted messages to them
for the first time. This keying material is authenticated with their
long-term credentials. Although in principle this keying material
can be reused for multiple senders, in order to provide forward secrecy
it is better for this material to be regularly refreshed so that each
sender can use a new key.</t>
      </section>
      <section anchor="step-3-adding-bob-go-the-group">
        <name>Step 3: Adding Bob go the Group</name>
        <t>When Alice wants to create a group including Bob, she first uses the AS to look
up his initial keying material. She then generates two messages:</t>
        <ul spacing="normal">
          <li>A message to the entire group (which at this point is just her and Bob)
that adds Bob to the group.</li>
          <li>A <em>Welcome</em> message just to Bob encrypted with his initial keying material that
includes the secret keying information necessary to join the group.</li>
        </ul>
        <t>She sends both of these messages to the Delivery Services, which is responsible
for sending them to the appropriate people. Note that the security of MLS
does not depend on the DS forwarding the Welcome message only to Bob, as it
is encrypted for him; it is simply not necessary for other group members
to receive it.</t>
      </section>
      <section anchor="step-4-adding-charlie-to-the-group">
        <name>Step 4: Adding Charlie to the Group</name>
        <t>If Alice then wants to add Charlie to the group, she follows a similar procedure
as with Bob: she first uses the AS to look
up his initial keying material and then generates two messages:</t>
        <ul spacing="normal">
          <li>A message to the entire group (consisting of her, Bob, and Charlie) adding
Charlie to the group.</li>
          <li>A <em>Welcome</em> message just to Charlie encrypted with his initial keying material that
includes the secret keying information necessary to join the group.</li>
        </ul>
        <t>At the completion of this process, we have a group with Alice, Bob, and Charlie,
which means that they share a single encryption key which can be used to
send messages or to key other protocols.</t>
      </section>
      <section anchor="other-group-operations">
        <name>Other Group Operations</name>
        <t>Once the group has been created, clients can perform other actions,
such as:</t>
        <ul spacing="normal">
          <li>sending a message to everyone in the group</li>
          <li>receiving a message from someone in the group</li>
          <li>adding one or more clients to an existing group</li>
          <li>remove one or more members from an existing group</li>
          <li>updating their own key material</li>
          <li>leave a group (by asking to be removed)</li>
        </ul>
        <t>Importantly, MLS does not itself enforce any access control on group
operations. For instance, any member of the group can send a message
to add a new member or to evict an existing member.
This is in contrast to some designs in which there is a single group
controller who can modify the group. MLS-using applications are
responsible for setting their own access control policies. For instance,
if only the group administrator is allowed to change group members,
then it is the responsibility of the application to inform members
of this policy and who the administrator is.</t>
      </section>
      <section anchor="group-members">
        <name>Users, Clients, and Groups</name>
        <t>While it's natural to think of a messaging system as consisting of groups
of users, possibly using different devices, in MLS the basic unit of
operation is not the user but rathr the "client".
Formally, a client is a set of cryptographic objects composed of
public values such as a name (an identity), a public encryption key,
and a public signature key. As usual, a user demonstrates ownership of
the client by demonstrating knowledge of the associated secret
values.</t>
        <t>In some messaging systems, clients belonging to the same user
must all share the same signature key pair, but MLS does not assume
this; instead a user may have multiple clients with the same identity
and different keys. In this case, each client will have its own
cryptographic state, and it is up to the application to determine
how to present this situation to users. For instance, it may render
messages to and from a given user identically regardless of which
client they are associated with, or may choose to distinguish them.</t>
        <t>When a client is part of a Group, it is called a Member.  A group in
MLS is defined as the set of clients that have knowledge of the shared
group secret established in the group key establishment phase of the
protocol and have contributed to it.</t>
        <t>Until a client has been added to the group and contributed to the group
secret in a manner verifiable by other members of the group, other members
cannot assume that the client is a member of the group.</t>
      </section>
    </section>
    <section anchor="authentication-service">
      <name>Authentication Service</name>
      <t>The Authentication Service (AS) has to provide three functionalities:</t>
      <ol spacing="normal" type="1"><li>Issue credentials to clients that attest to bindings between identities and
signature key pairs</li>
        <li>Enable a client to verify that a credential presented by another client is
valid with respect to a reference identifier</li>
        <li>Enable a group member to verify that a credential represents the same client
as another credential</li>
      </ol>
      <t>A member with a valid credential authenticates its MLS messages by signing them
with the private key corresponding to the public key bound by its credential.</t>
      <t>The AS is considered an abstract layer by the MLS specification and part of this
service could be, for instance, running on the members' devices, while another
part is a separate entity entirely.  The following examples illustrate the
breadth of this concept:</t>
      <ul spacing="normal">
        <li>A PKI could be used as an AS <xref target="RFC5280"/>.  The issuance function would be
provided by the certificate authorities in the PKI, and the verification
function would correspond to certificate verification by clients.</li>
        <li>Several current messaging applications rely on users verifying each other's
key fingerprints for authentication.  In this scenario, the issuance function
is simply the generation of a key pair (i.e., a credential is just an
identifier and public key, with no information to assist in verification).
The verification function is the application functionality that enables users
to verify keys.</li>
        <li>In a system based on <xref target="CONIKS"/> end user Key Transparency (KT), the issuance
function would correspond to the insertion of a key in a KT log under a user's
identity. The verification function would correspond to verifying a key's
inclusion in the log for a claimed identity, together with the KT log's
mechanisms for a user to monitor and control which keys are associated with
their identity.</li>
      </ul>
      <t>By the nature of its roles in MLS authentication, the AS is invested with a
large amount of trust and the compromise of one of its functionalities could
allow an adversary to, among other things, impersonate group members. We discuss
security considerations regarding the compromise of the different AS
functionalities in detail in <xref target="as-compromise"/>.</t>
      <t>The association between members' identities and signature keys is fairly
flexible in MLS.  As noted above, there is no requirement that all clients
belonging to a given user use the same key pair (in fact, such key reuse is
forbidden to ensure clients have independent cryptographic state).  A member can
also rotate the signature key they use within a group.  These mechanisms allow
clients to use different signature keys in different contexts and at different
points in time, providing unlinkability and post-compromise security benefits.
Some security trade-offs related to this flexibility are discussed in the
security considerations.</t>
      <t>In many applications, there are multiple MLS clients that represent a single
entity, for example a human user with a mobile and desktop version of an
application. Often the same set of clients is represented in exactly the same
list of groups. In applications where this is the intended situation, other
clients can check that a user is consistently represented by the same set of
clients.  This would make it more difficult for a malicious AS to issue fake
credentials for a particular user because clients would expect the credential to
appear in all groups of which the user is a member. If a client credential does
not appear in all groups after some relatively short period of time, clients
have an indication that the credential might have been created without the
user's knowledge. Due to the asynchronous nature of MLS, however, there may be
transient inconsistencies in a user's client set, so correlating users' clients
across groups is more of a detection mechanism than a prevention mechanism.</t>
    </section>
    <section anchor="delivery-service">
      <name>Delivery Service</name>
      <t>The Delivery Service (DS) plays two major roles in MLS:</t>
      <ul spacing="normal">
        <li>As a directory service providing the initial keying material for
clients to use. This allows a client to establish a shared key and send
encrypted messages to other clients even if they're offline.</li>
        <li>Routing MLS messages among clients.</li>
      </ul>
      <t>While MLS depends on correct behavior by the Authentication Service in
order to provide endpoint authentication and hence confidentiality of
the group key, these properties do not depend on correct behavior by
the DS; even a malicious DS cannot add itself to groups or recover
the group key. However, depending precisely on how MLS is used, the DS may
be able to determine group membership or prevent changes to the
group from taking place (e.g., by blocking group change messages).</t>
      <section anchor="key-storage-and-retrieval">
        <name>Key Storage and Retrieval</name>
        <t>Upon joining the system, each client stores its initial cryptographic key
material with the Delivery Service. This key material, called a KeyPackage,
advertises the functional abilities of the client such as supported protocol
versions, supported extensions, and the following cryptographic information:</t>
        <ul spacing="normal">
          <li>A credential from the Authentication Service attesting to the binding between
the identity and the client's signature key.</li>
          <li>The client's asymmetric encryption public key.</li>
        </ul>
        <t>All the parameters in the KeyPackage are signed with the signature
private key corresponding to the credential.
As noted in <xref target="group-members"/>, users may own multiple clients, each
with their own keying material. Each KeyPackage is specific to an MLS version
and ciphersuite, but a client may want to offer support for multiple protocol
versions and ciphersuites. As such, there may be multiple KeyPackages stored by
each user for a mix of protocol versions, ciphersuites, and end-user devices.</t>
        <t>When a client wishes to establish a group or add clients to a group, it first
contacts the Delivery Service to request KeyPackages for each other client,
authenticates the KeyPackages using the signature keys, includes the KeyPackages
in Add Proposals, encrypts the information needed to join the group
(the <em>GroupInfo</em> object) with an ephemeral key, then separately encrypts the
ephemeral key with the <tt>init_key</tt> from each KeyPackage.
When a client requests a KeyPackage in order to add a user to a group, the
Delivery Service should provide the minimum number of KeyPackages necessary to
satisfy the request.  For example, if the request specifies the MLS version, the
DS might provide one KeyPackage per supported ciphersuite, even if it has
multiple such KeyPackages to enable the corresponding client to be added to
multiple groups before needing to upload more fresh KeyPackages.</t>
        <t>In order to avoid replay attacks and provide forward secrecy for
messages sent using the initial keying material, KeyPackages are
intended to be used only once. The Delivery Service is responsible for
ensuring that each KeyPackage is only used to add its client to a
single group, with the possible exception of a "last resort"
KeyPackage that is specially designated by the client to be used
multiple times. Clients are responsible for providing new
KeyPackages as necessary in order to minimize the chance that
the "last resort" KeyPackage will be used.</t>
      </section>
      <section anchor="delivery-guarantees">
        <name>Delivery of Messages</name>
        <t>The main responsibility of the Delivery Service is to ensure delivery of
messages. Some MLS messages need only be delivered to specific clients (e.g., a
Welcome message initializing a new member's state), while others need to be
delivered to all the members of a group.  The Delivery Service may enable the
latter delivery pattern via unicast channels (sometimes known as "client
fanout"), broadcast channels ("server fanout"), or a mix of both.</t>
        <t>For the most part, MLS does not require the Delivery Service to deliver messages
in any particular order. Applications can set policies that control their
tolerance for out-of-order messages (see <xref target="operational-requirements"/>), and
messages that arrive significantly out-of-order can be dropped without otherwise
affecting the protocol. There are two exceptions to this. First, Proposal
messages should all arrive before the Commit that references them.  Second,
because an MLS group has a linear history of epochs, the members of the group
must agree on the order in which changes are applied.  Concretely, the group
must agree on a single MLS Commit message that ends each epoch and begins the
next one.</t>
        <t>In practice, there's a realistic risk of two members generating Commit messages
at the same time, based on the same counter, and both attempting to send them to
the group at the same time. The extent to which this is a problem, and the
appropriate solution, depends on the design of the Delivery Service. Per the CAP
theorem <xref target="CAPBR"/>, there are two general classes of distributed system that the
Delivery Service might fall into:</t>
        <ul spacing="normal">
          <li>Consistent and Partition-tolerant, or Strongly Consistent, systems can provide
a globally consistent view of data but may stop working if there are network
issues;</li>
          <li>Available and Partition-tolerant, or Eventually Consistent, systems continue
working despite network issues but may return different views of data to
different users.</li>
        </ul>
        <t>Strategies for sequencing messages in strongly and eventually consistent systems
are described in the next two subsections.</t>
        <t>However, note that a malicious Delivery Service could also reorder messages or
provide an inconsistent view to different users.  The "generation" counter in
MLS messages provides per-sender loss detection and ordering that cannot be
manipulated by the DS.  A mechanism for more robust protections is discussed in
<xref target="I-D.ietf-mls-extensions"/>.  A DS can cause a partition in the group by
partitioning key exchange messages; this can be detected only by out-of-band
comparison (e.g., confirming that all clients have the same
<tt>epoch_authenticator</tt> value`).</t>
        <t>Other forms of Delivery Service misbehavior are still possible that are not easy
to detect. For instance, a Delivery Service can simply refuse to relay messages
to and from a given client. Without some sort of side information, other clients
cannot generally detect this form of Denial of Service (DoS) attack.</t>
        <section anchor="strongly-consistent">
          <name>Strongly Consistent</name>
          <t>With this approach, the Delivery Service ensures that some types of incoming
messages have a linear order and all members agree on that order.  The Delivery
Service is trusted to break ties when two members send a Commit message at the
same time.</t>
          <t>As an example, there could be an "ordering server" Delivery Service that
broadcasts all messages received to all users and ensures that all clients see
handshake messages in the same order. Clients that send a Commit would then wait
to apply it until it's broadcast back to them by the Delivery Service, assuming
they don't receive another Commit first.</t>
          <t>The Delivery Service can rely on the <tt>epoch</tt> and <tt>content_type</tt> fields of an
MLSMessage for providing an order only to handshake messages, and possibly even
filter or reject redundant Commit messages proactively to prevent them from
being broadcast. Alternatively, the Delivery Service could simply apply an order
to all messages and rely on clients to ignore redundant Commits.</t>
        </section>
        <section anchor="eventually-consistent">
          <name>Eventually Consistent</name>
          <t>With this approach, the Delivery Service is built in a way that may be
significantly more available or performant than a strongly consistent system,
but offers weaker consistency guarantees. Messages may arrive to different
clients in different orders and with varying amounts of latency, which means
clients are responsible for reconciliation.</t>
          <t>This type of Delivery Service might arise, for example, when group members are
sending each message to each other member individually, or when a distributed
peer-to-peer network is used to broadcast messages.</t>
          <t>Upon receiving a Commit from the Delivery Service, clients can either:</t>
          <ol spacing="normal" type="1"><li>Pause sending new messages for a short amount of time to account for a
reasonable degree of network latency and see if any other Commits are
received for the same epoch. If multiple Commits are received, the clients
can use a deterministic tie-breaking policy to decide which to accept, and
then resume sending messages as normal.</li>
            <li>Accept the Commit immediately but keep a copy of the previous group state for
a short period of time. If another Commit for a past epoch is received,
clients use a deterministic tie-breaking policy to decide if they should
continue using the Commit they originally accepted or revert and use the
later one. Note that any copies of previous or forked group states must be
deleted within a reasonable amount of time to ensure the protocol provides
forward-secrecy.</li>
          </ol>
          <t>In the event of a network partition, a subset of members may be isolated from
the rest of the group long enough that the mechanisms above no longer work. This
can only be solved by sending a ReInit proposal to both groups, possibly with an
external sender type, and recreating the group to contain all members again.</t>
          <t>If the Commit references an unknown proposal, group members may need to solicit
the Delivery Service or other group members individually for the contents of the
proposal.</t>
        </section>
      </section>
    </section>
    <section anchor="functional-requirements">
      <name>Functional Requirements</name>
      <t>MLS is designed as a large-scale group messaging protocol and hence aims to
provide both performance and security (e.g. integrity and confidentiality)
to its users. Messaging systems that implement MLS provide support for
conversations involving two or more members, and aim to scale to groups with
tens of thousands of members, typically including many users using multiple devices.</t>
      <section anchor="membership-changes">
        <name>Membership Changes</name>
        <t>MLS aims to provide agreement on group membership, meaning that all group
members have agreed on the list of current group members.</t>
        <t>Some applications may wish to enforce ACLs to limit addition or removal of group
members, to privileged clients or users. Others may wish to require
authorization from the current group members or a subset thereof.  Such policies
can be implemented at the application layer, on top of MLS. Regardless, MLS does
not allow for or support addition or removal of group members without informing
all other members.</t>
        <t>Membership of an MLS group is managed at the level of individual clients.  In
most cases, a client corresponds to a specific device used by a user. If a user
has multiple devices, the user will be represented in a group by multiple
clients.  If an application wishes to implement operations at the level of
users, it is up to the application to track which clients belong to a given user
and ensure that they are added / removed consistently.</t>
        <t>MLS provides two mechanisms for changing the membership of a group.  The primary
mechanism is for an authorized member of the group to send a Commit that adds or
removes other members.  The second mechanism is an "external join": A member of
the group publishes certain information about the group, which a new member can
use to construct an "external" Commit message that adds the new member to the
group.  (There is no similarly unilateral way for a member to leave the group;
they must be removed by a remaining member.)</t>
        <t>With both mechanisms, changes to the membership are initiated from inside the
group.  When members perform changes directly, this is clearly the case.
External joins are authorized indirectly, in the sense that a member publishing
a GroupInfo object authorizes anyone to join who has access to the GroupInfo
object. Both types of joins are done via a Commit message, which could be
blocked by the DS or rejected by clients if the join is not authorized.  The
former approach requires that Commits be visible to the DS; the latter approach
requires that clients all share a consistent policy. In the unfortunate event
that an unauthorized member is able to join, MLS enables any member to remove
them.</t>
        <t>Application setup may also determine other criteria for membership validity. For
example, per-device signature keys can be signed by an identity key recognized
by other participants. If a certificate chain is used to sign off on device
signature keys, then revocation by the owner adds an alternative flag to prompt
membership removal.</t>
        <t>An MLS group's secrets change on every change of membership, so each client only
has access to the secrets used by the group while they are a member.  Messages
sent before a client joins or after they are removed are protected with keys
that are not accessible to the client.  Compromise of a member removed from a
group does not affect the security of messages sent after their removal.
Messages sent during the client's membership are also secure as long as the
client has properly implemented the MLS deletion schedule, which calls for the
secrets used to encrypt or decrypt a message to be deleted after use, along with
any secrets that could be used to derive them.</t>
      </section>
      <section anchor="parallel-groups">
        <name>Parallel Groups</name>
        <t>Any user or client may have membership in several groups simultaneously.  The
set of members of any group may or may not form a subset of the members of
another group. MLS guarantees that the FS and PCS goals within a given group are
maintained and not weakened by user membership in multiple groups. However,
actions in other groups likewise do not strengthen the FS and PCS guarantees
within a given group, e.g. key updates within a given group following a device
compromise does not provide PCS healing in other groups; each group must be
updated separately to achieve internal goals.  This also applies to future
groups that a member has yet to join, that are likewise unaffected by updates
performed in current groups.</t>
        <t>Applications may strengthen connectivity among parallel groups by requiring
periodic key updates from a user across all groups in which they have
membership.</t>
        <t>Applications may use the PSK mechanism to link healing properties among parallel
groups.  For example, suppose a common member M of two groups A and B has
performed a key update in group A but not in group B.  The key update provides
PCS with regard to M in group A.  If a PSK is exported from group A and injected
into group B, then some of these PCS properties carry over to group B, since the
PSK and secrets derived from it are only known to the new, updated version of M,
not to the old, possibly compromised version of M.</t>
      </section>
      <section anchor="asynchronous-usage">
        <name>Asynchronous Usage</name>
        <t>No operation in MLS requires two distinct clients or members to be online
simultaneously. In particular, members participating in conversations protected
using MLS can update the group's keys, add or remove new members, and send
messages without waiting for another user's reply.</t>
        <t>Messaging systems that implement MLS have to provide a transport layer for
delivering messages asynchronously and reliably.</t>
      </section>
      <section anchor="access-control">
        <name>Access Control</name>
        <t>The MLS protocol allows each member of the messaging group to perform operations
equally. This is because all clients within a group (members) have access to the
shared cryptographic material. However, every service/infrastructure has control
over policies applied to its own clients. Applications managing MLS clients can
be configured to allow for specific group operations. On the one hand, an
application could decide that a group administrator will be the only member to
perform add and remove operations. On the other hand, in many settings such as
open discussion forums, joining can be allowed for anyone.</t>
        <t>The MLS protocol can, in certain modes, exchange unencrypted group operation
messages. This flexibility is to allow services to perform access control tasks
on behalf of the group.</t>
        <t>While the Application messages will always be encrypted, having the handshake
messages in plaintext has privacy consequences as someone could
collect the signatures on the handshake messages and use them for tracking.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Prefer using encrypted group operation messages to avoid
privacy issues related to non-encrypted signatures.</t>
          </li>
        </ul>
        <t>Note that in the default case of encrypted handshake messages, any access
control policies will be applied at the client, so the application must ensure
that the access control policies are consistent across all clients to make sure
that they remain in sync.  If two different policies were applied, the clients
might not accept or reject a group operation and end-up in different
cryptographic states, breaking their ability to communicate.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Avoid using inconsistent access control policies in the
case of encrypted group operations.</t>
          </li>
        </ul>
        <t>MLS allows actors outside the group to influence the group in two ways: External
signers can submit proposals for changes to the group, and new joiners can use
an external join to add themselves to the group.  The <tt>external_senders</tt>
extension ensures that all members agree on which signers are allowed to send
proposals, but any other policies must be assured to be consistent as above.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Have an explicit group policy setting the conditions under
which external joins are allowed.</t>
          </li>
        </ul>
      </section>
      <section anchor="handling-authentication-failures">
        <name>Handling Authentication Failures</name>
        <t>Within an MLS group, every member is authenticated to every other member by means of
credentials issued and verified by the Authentication Service.  MLS does not
prescribe what actions, if any, an application should take in the event that a
group member presents an invalid credential.  For example, an application may
require such a member to be immediately evicted, or may allow some grace period
for the problem to be remediated. To avoid operational problems, it is important
for all clients in a group to have a consistent view of which credentials in a
group are valid, and how to respond to invalid credentials.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Have a uniform credential validation process to ensure
that all group members evaluate other members' credentials in the same way.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Have a uniform policy for how invalid credentials are
handled.</t>
          </li>
        </ul>
        <t>In some authentication systems, it is possible for a previously-valid credential
to become invalid over time.  For example, in a system based on X.509
certificates, credentials can expire or be revoked.  The MLS update mechanisms
allow a client to replace an old credential with a new one. This is best done
before the old credential becomes invalid.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Proactively rotate credentials, especially if a credential
is about to become invalid.</t>
          </li>
        </ul>
      </section>
      <section anchor="recovery-after-state-loss">
        <name>Recovery After State Loss</name>
        <t>Group members whose local MLS state is lost or corrupted can reinitialize their
state by re-joining the group as a new member and removing the member
representing their earlier state.  An application can require that a client
performing such a reinitialization prove its prior membership with a PSK.</t>
        <t>There are a few practical challenges to this approach.  For example, the
application will need to ensure that all members have the required PSK,
including any new members that have joined the group since the epoch in which
the PSK was issued.  And of course, if the PSK is lost or corrupted along with
the member's other state, then it cannot be used to recover.</t>
        <t>Reinitializing in this way does not provide the member with access to group
messages from during the state loss window, but enables proof of prior
membership in the group. Applications may choose various configurations for
providing lost messages to valid group members that are able to prove prior
membership.</t>
      </section>
      <section anchor="support-for-multiple-devices">
        <name>Support for Multiple Devices</name>
        <t>It is typically expected for users within a group to own various devices. A new
device can be added to a group and be considered as a new client by the
protocol. This client will not gain access to the history even if it is owned by
someone who owns another member of the group.
Restoring history is typically not allowed at the protocol level but
applications can elect to provide such a mechanism outside of MLS.  Such
mechanisms, if used, may reduce the FS and PCS guarantees provided by MLS.</t>
      </section>
      <section anchor="extensibility">
        <name>Extensibility</name>
        <t>The MLS protocol provides several extension points where additional information
can be provided.  Extensions to KeyPackages allow clients to disclose additional
information about their capabilities.  Groups can also have extension data
associated with them, and the group agreement properties of MLS will confirm
that all members of the group agree on the content of these extensions.</t>
      </section>
      <section anchor="application-data-framing-and-type-advertisements">
        <name>Application Data Framing and Type Advertisements</name>
        <t>Application messages carried by MLS are opaque to the protocol; they can contain
arbitrary data. Each application which uses MLS needs to define the format of
its <tt>application_data</tt> and any mechanism necessary to determine the format of
that content over the lifetime of an MLS group. In many applications this means
managing format migrations for groups with multiple members who may each be
offline at unpredictable times.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Use the default content mechanism defined in
<xref section="2.3" sectionFormat="of" target="I-D.ietf-mls-extensions"/>, unless the specific application defines another
mechanism which more appropriately addresses the same requirements for that
application of MLS.</t>
          </li>
        </ul>
        <t>The MLS framing for application messages also provides a field where clients can
send information that is authenticated but not encrypted.  Such information can
be used by servers that handle the message, but group members are assured that
it has not been tampered with.</t>
      </section>
      <section anchor="federation">
        <name>Federation</name>
        <t>The protocol aims to be compatible with federated environments. While this
document does not specify all necessary mechanisms required for federation,
multiple MLS implementations can interoperate to form federated systems if they
use compatible authentication mechanisms, ciphersuites, application content, and
infrastructure functionalities. Federation is described in more detail in
<xref target="I-D.ietf-mls-federation"/>.</t>
      </section>
      <section anchor="compatibility-with-future-versions-of-mls">
        <name>Compatibility with Future Versions of MLS</name>
        <t>It is important that multiple versions of MLS be able to coexist in the
future. Thus, MLS offers a version negotiation mechanism; this mechanism
prevents version downgrade attacks where an attacker would actively rewrite
messages with a lower protocol version than the ones originally offered by the
endpoints. When multiple versions of MLS are available, the negotiation protocol
guarantees that the version agreed upon will be the highest version supported in
common by the group.</t>
        <t>In MLS 1.0, the creator of the group is responsible for selecting the best
ciphersuite supported across clients. Each client is able to verify availability
of protocol version, ciphersuites and extensions at all times once he has at
least received the first group operation message.</t>
        <t>Each member of an MLS group advertises the protocol functionality they support.
These capability advertisements can be updated over time, e.g., if client
software is updated while the client is a member of a group. Thus, in addition
to preventing downgrade attacks, the members of a group can also observe when it
is safe to upgrade to a new ciphersuite or protocol version.</t>
      </section>
    </section>
    <section anchor="operational-requirements">
      <name>Operational Requirements</name>
      <t>MLS is a security layer that needs to be integrated with an application. A
fully-functional deployment of MLS will have to make a number of decisions about
how MLS is configured and operated.  Deployments that wish to interoperate will
need to make compatible decisions. This section lists all of the dependencies of
an MLS deployment that are external to the protocol specification, but would
still need to be aligned within a given MLS deployment, or for two deployments
to potentially interoperate.</t>
      <t>The protocol has a built-in ability to negotiate protocol versions,
ciphersuites, extensions, credential types, and additional proposal types. For
two deployments to interoperate, they must have overlapping support in each of
these categories. A <tt>required_capabilities</tt> extension can help maintain
interoperability with a wider set of clients by ensuring that certain
functionality continues to be supported by a group, even if the clients in the
group aren't currently relying on it.</t>
      <t>MLS relies on the following network services. These network services would need
to be compatible in order for two different deployments based on them to
interoperate.</t>
      <ul spacing="normal">
        <li>
          <t>An <strong>Authentication Service</strong>, described fully in <xref target="authentication-service"/>,
defines the types of credentials which may be used in a deployment and
provides methods for:
          </t>
          <ol spacing="normal" type="1"><li>Issuing new credentials with a relevant credential lifetime,</li>
            <li>Validating a credential against a reference identifier,</li>
            <li>Validating whether or not two credentials represent the same client, and</li>
            <li>Optionally revoking credentials which are no longer authorized.</li>
          </ol>
        </li>
        <li>
          <t>A <strong>Delivery Service</strong>, described fully in <xref target="delivery-service"/>, provides
methods for:
          </t>
          <ol spacing="normal" type="1"><li>Delivering messages for a group to all members in the group.</li>
            <li>Delivering Welcome messages to new members of a group.</li>
            <li>Uploading new KeyPackages for a user's own clients.</li>
            <li>Downloading KeyPackages for specific clients. Typically, KeyPackages are
used once and consumed.</li>
          </ol>
        </li>
        <li>
          <t>Additional services may or may not be required depending on the application
design:
          </t>
          <ul spacing="normal">
            <li>If assisted joining is desired (meaning that the ratchet tree is not
provided in Welcome messages), there must be a method to download the
ratchet tree corresponding to a group.</li>
            <li>If assisted joining is desired and the Delivery Service is not able to
compute the ratchet tree itself (because some proposals or commits are sent
encrypted), there must be a method for group members to publish the updated
ratchet tree after each commit.</li>
            <li>If external joiners are allowed, there must be a method to publish a
serialized <tt>GroupInfo</tt> object (with an <tt>external_pub</tt> extension) that
corresponds to a specific group and epoch, and keep that object in sync with
the state of the group.</li>
            <li>If an application chooses not to allow assisted or external joining, it may
instead provide a method for external users to solicit group members (or a
designated service) to add them to a group.</li>
            <li>If the application uses external PSKs, or uses resumption PSKs that all
members of a group may not have access to, there must be a method for
distributing these PSKs to group members.</li>
            <li>If an application wishes to detect and possibly discipline members that send
malformed commits with the intention of corrupting a group's state, there
must be a method for reporting and validating malformed commits.</li>
          </ul>
        </li>
      </ul>
      <t>MLS requires the following parameters to be defined, which must be the same for
two implementations to interoperate:</t>
      <ul spacing="normal">
        <li>The maximum total lifetime that is acceptable for a KeyPackage.</li>
        <li>How long to store the resumption secret for past epochs of a group.</li>
        <li>
          <t>The degree of tolerance that's allowed for out-of-order message delivery:  </t>
          <ul spacing="normal">
            <li>How long to keep unused nonce and key pairs for a sender</li>
            <li>A maximum number of unused key pairs to keep.</li>
            <li>A maximum number of steps that clients will move a secret tree ratchet
forward in response to a single message before rejecting it.</li>
            <li>Whether to buffer messages that aren't able to be understood yet due to
other messages not arriving first, and if so, how many and for how long. For
example, Commit messages that arrive before a proposal they reference, or
application messages that arrive before the Commit starting an epoch.</li>
          </ul>
        </li>
      </ul>
      <t>MLS provides the following locations where an application may store arbitrary
data. The format and intention of any data in these locations must align for two
deployments to interoperate:</t>
      <ul spacing="normal">
        <li>Application data, sent as the payload of an encrypted message.</li>
        <li>Additional authenticated data, sent unencrypted in an otherwise encrypted
message.</li>
        <li>Group IDs, as decided by group creators and used to uniquely identify a group.</li>
        <li>The <tt>application_id</tt> extension of a LeafNode.</li>
      </ul>
      <t>MLS requires the following policies to be defined, which restrict the set of
acceptable behavior in a group. These policies must be consistent between
deployments for them to interoperate:</t>
      <ul spacing="normal">
        <li>A policy on which ciphersuites are acceptable.</li>
        <li>A policy on any mandatory or forbidden MLS extensions.</li>
        <li>A policy on when to send proposals and commits in plaintext instead of
encrypted.</li>
        <li>
          <t>A policy for which proposals are valid to have in a commit, including but not
limited to:
          </t>
          <ul spacing="normal">
            <li>When a member is allowed to add or remove other members of the group.</li>
            <li>When, and under what circumstances, a reinitialization proposal is allowed.</li>
            <li>When proposals from external senders are allowed and how to authorize
those proposals.</li>
            <li>When external joiners are allowed and how to authorize those external
commits.</li>
            <li>Which other proposal types are allowed.</li>
          </ul>
        </li>
        <li>A policy of when members should commit pending proposals in a group.</li>
        <li>A policy of how to protect and share the GroupInfo objects needed for
external joins.</li>
        <li>A policy for when two credentials represent the same client. Note that many
credentials may be issued authenticating the same identity but for different
signature keys, because each credential corresponds to a different device
(client) owned by the same application user. However, one device may control
many signature keys but should still only be considered a single client.</li>
        <li>A policy on how long to allow a member to stay in a group without updating its
leaf keys before removing them.</li>
      </ul>
      <t>Finally, there are some additional application-defined behaviors that are
partially an individual application's decision but may overlap with
interoperability:</t>
      <ul spacing="normal">
        <li>If there's any policy on how or when to pad messages.</li>
        <li>If there is any policy for when to send a reinitialization proposal.</li>
        <li>How often clients should update their leaf keys.</li>
        <li>Whether to prefer sending full commits or partial/empty commits.</li>
        <li>Whether there should be a <tt>required_capabilities</tt> extension in groups.</li>
      </ul>
    </section>
    <section anchor="security-and-privacy-considerations">
      <name>Security and Privacy Considerations</name>
      <t>MLS adopts the Internet threat model <xref target="RFC3552"/> and therefore assumes that the
attacker has complete control of the network. It is intended to provide the
security services described in the face of such attackers.</t>
      <ul spacing="normal">
        <li>The attacker can monitor the entire network.</li>
        <li>The attacker can read unprotected messages.</li>
        <li>The attacker can generate, inject and delete any message in the unprotected
transport layer.</li>
      </ul>
      <t>In addition, these guarantees are intended to degrade gracefully in the presence
of compromise of the transport security links as well as of both clients and
elements of the messaging system, as described in the remainder of this section.</t>
      <t>Generally, MLS is designed under the assumption that the transport layer is
present to keep metadata private from network observers, while the MLS protocol provides confidentiality,
integrity, and authentication guarantees for the application data (which could pass
through multiple systems). Additional properties such as partial anonymity or deniability could also be
achieved in specific architecture designs.</t>
      <section anchor="assumptions-on-transport-security-links">
        <name>Assumptions on Transport Security Links</name>
        <t>As discussed above, MLS provides the highest level of security when its messages
are delivered over an encrypted transport.  Any secure channel,
such as QUIC <xref target="RFC9000"/>, TLS <xref target="RFC8446"/>, can be used to
transport MLS messages.
However, the MLS protocol is designed to consider the following
threat-model:</t>
        <ul spacing="normal">
          <li>The attacker can read, write, and delete arbitrary messages inside the secure
transport channel.</li>
        </ul>
        <t>This departs from most threat models where we consider that the secure channel
used for transport always provides secrecy. The reason for this consideration is
that in the group setting, active malicious insiders or adversarial services are
to be considered.</t>
        <t>The main use of the secure transport layer for MLS is to protect the already
limited amount of metadata. Very little information is contained in the
unencrypted header of the MLS protocol message format for group operation
messages, and application messages are always encrypted in MLS.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Use transports that provide reliability and metadata
confidentiality whenever possible, e.g., by transmitting MLS messages over
a protocol such as TLS <xref target="RFC8446"/> or QUIC <xref target="RFC9000"/>.</t>
          </li>
        </ul>
        <t>MLS avoids needing to send the full list of recipients to the server for
dispatching messages because that list could potentially contain tens of thousands of
recipients. Header metadata in MLS messages typically consists of an opaque
<tt>group_id</tt>, a numerical value to determine the epoch of the group (the number
of changes that have been made to the group), and whether the message is an
application message, a proposal, or a commit.</t>
        <t>Even though some of this metadata information does not consist of sensitive
information, in correlation with other data a network observer might be able to
reconstruct sensitive information. Using a secure channel to transfer this
information will prevent a network attacker from accessing this MLS protocol
metadata if it cannot compromise the secure channel.</t>
        <section anchor="integrity-and-authentication-of-custom-metadata">
          <name>Integrity and Authentication of Custom Metadata</name>
          <t>The MLS protocol provides an authenticated "Additional Authenticated Data" field
for applications to make data available outside a PrivateMessage.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Use the "Additional Authenticated Data" field of the
PrivateMessage instead of using other unauthenticated means of sending
metadata throughout the infrastructure. If the data should be kept private, the
infrastructure should use encrypted Application messages instead.</t>
            </li>
          </ul>
        </section>
        <section anchor="metadata-protection-for-unencrypted-group-operations">
          <name>Metadata Protection for Unencrypted Group Operations</name>
          <t>Having no secure channel to exchange MLS messages can have a serious impact on
privacy when transmitting unencrypted group operation messages. Observing the
contents and signatures of the group operation messages may lead an adversary to
extract information about the group membership.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Never use the unencrypted mode for group operations
without using a secure channel for the transport layer.</t>
            </li>
          </ul>
        </section>
        <section anchor="dos-protection">
          <name>DoS protection</name>
          <t>In general we do not consider Denial of Service (DoS) resistance to be the
responsibility of the protocol. However, it should not be possible for anyone
aside from the Delivery Service to perform a trivial DoS attack from which it is
hard to recover. This can be achieved through the secure transport layer.</t>
          <t>In the centralized setting, DoS protection can typically be performed by using
tickets or cookies which identify users to a service for a certain number of
connections. Such a system helps in preventing anonymous clients from sending
arbitrary numbers of group operation messages to the Delivery Service or the MLS
clients.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Use credentials uncorrellated with specific users to help prevent DoS
attacks, in a privacy preserving manner. Note that the privacy of
these mechanisms has to be adjusted in accordance with the privacy expected
from secure transport links. (See more discussion in the next section.)</t>
            </li>
          </ul>
        </section>
        <section anchor="message-suppression-and-error-correction">
          <name>Message Suppression and Error Correction</name>
          <t>As noted above, MLS is designed to provide some robustness in the face of
tampering within the secure transport, i.e., tampering by the Delivery Service.
The confidentiality and authenticity properties of MLS prevent the DS from reading or
writing messages.  MLS also provides a few tools for detecting message
suppression, with the caveat that message suppression cannot always be
distinguished from transport failure.</t>
          <t>Each encrypted MLS message carries a "generation" number which is a per-sender
incrementing counter.  If a group member observes a gap in the generation
sequence for a sender, then they know that they have missed a message from that
sender.  MLS also provides a facility for group members to send authenticated
acknowledgments of application messages received within a group.</t>
          <t>As discussed in <xref target="delivery-service"/>, the Delivery Service is trusted to select
the single Commit message that is applied in each epoch from among the ones sent
by group members.  Since only one Commit per epoch is meaningful, it's not
useful for the DS to transmit multiple Commits to clients.  The risk remains
that the DS will use the ability maliciously.</t>
          <t>While it is difficult or impossible to prevent a network adversary from
suppressing payloads in transit, in certain infrastructures such as banks or
governments settings, unidirectional transports can be used and be enforced via
electronic or physical devices such as diodes. This can lead to payload
corruption which does not affect the security or privacy properties of the MLS
protocol but does affect the reliability of the service. In that case specific
measures can be taken to ensure the appropriate level of redundancy and quality
of service for MLS.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> If unidirectional transport is used for the secure
transport channel, prefer using a transport protocol which provides Forward
Error Correction.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="intended-security-guarantees">
        <name>Intended Security Guarantees</name>
        <t>MLS aims to provide a number of security guarantees, covering authentication, as
well as confidentiality guarantees to different degrees in different scenarios.</t>
        <section anchor="message-secrecy-authentication">
          <name>Message Secrecy and Authentication</name>
          <t>MLS enforces the encryption of application messages and thus generally
guarantees authentication and confidentiality of application messages sent in a
group.</t>
          <t>In particular, this means that only other members of a given group can decrypt
the payload of a given application message, which includes information about the
sender of the message.</t>
          <t>Similarly, group members receiving a message from another group member can
authenticate that group member as the sender of the message and verify the
message's integrity.</t>
          <t>Message content can be deniable if the signature keys are exchanged over a
deniable channel prior to signing messages.</t>
          <t>Depending on the group settings, handshake messages can be encrypted as well. If
that is the case, the same security guarantees apply.</t>
          <t>MLS optionally allows the addition of padding to messages, mitigating the amount
of information leaked about the length of the plaintext to an observer on the
network.</t>
        </section>
        <section anchor="fs-and-pcs">
          <name>Forward and Post-Compromise Security</name>
          <t>MLS provides additional protection regarding secrecy of past messages and future
messages. These cryptographic security properties are Forward Secrecy (FS) and
Post-Compromise Security (PCS).</t>
          <t>FS means that access to all encrypted traffic history combined with access to
all current keying material on clients will not defeat the secrecy properties of
messages older than the oldest key of the compromised client.  Note that this
means that clients have the extremely important role of deleting appropriate
keys as soon as they have been used with the expected message, otherwise the
secrecy of the messages and the security for MLS is considerably weakened.</t>
          <t>PCS means that if a group member's state is compromised at some time t1 but the
group member subsequently performs an update at some time t2, then all MLS
guarantees apply to messages sent by the member after time t2, and by other
members after they have processed the update. For example, if an attacker learns
all secrets known to Alice at time t1, including both Alice's long-term secret
keys and all shared group keys, but Alice performs a key update at time t2, then
the attacker is unable to violate any of the MLS security properties after the
updates have been processed.</t>
          <t>Both of these properties are satisfied even against compromised DSs and ASs.</t>
          <t>Confidentiality is mainly ensured on the client side.  Because Forward Secrecy
(FS) and Post-Compromise Security (PCS) rely on the active deletion and
replacement of keying material, any client which is persistently offline may
still be holding old keying material and thus be a threat to both FS and PCS if
it is later compromised.</t>
          <t>MLS partially defends against this problem by active members including
freshness, however not much can be done on the inactive side especially in the
case where the client has not processed messages.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Mandate key updates from clients that are not otherwise
sending messages and evict clients which are idle for too long.</t>
            </li>
          </ul>
          <t>These recommendations will reduce the ability of idle compromised clients to
decrypt a potentially long set of messages that might have followed the point of
the compromise.</t>
          <t>The precise details of such mechanisms are a matter of local policy and beyond
the scope of this document.</t>
        </section>
        <section anchor="Non-Repudiation-vs-Deniability">
          <name>Non-Repudiation vs Deniability</name>
          <t>MLS provides strong authentication within a group, such that a group member
cannot send a message that appears to be from another group member.
Additionally, some services require that a recipient be able to prove to the
service provider that a message was sent by a given client, in order to report
abuse. MLS supports both of these use cases. In some deployments, these services
are provided by mechanisms which allow the receiver to prove a message's origin
to a third party. This is often called "non-repudiation".</t>
          <t>Roughly speaking, "deniability" is the opposite of "non-repudiation", i.e., the
property that it is impossible to prove to a third party that a message was sent
by a given sender.  MLS does not make any claims with regard to deniability.  It
may be possible to operate MLS in ways that provide certain deniability
properties, but defining the specific requirements and resulting notions of
deniability requires further analysis.</t>
        </section>
        <section anchor="associating-a-users-clients">
          <name>Associating a User's Clients</name>
          <t>When the same user uses multiple clients, it may be possible for other members
of a group to recognize all of those clients as belonging to the same user.  For
example, all of a user's clients might present credentials authenticating the
user's identity.  This association among devices might be considered a leak of
private information.  The remainder of this section describes several approaches
for addressing this.</t>
          <t>This risk only arises when the leaf nodes for the clients in question provide
data that can be used to correlate the clients.  So one way to mitigate this
risk is by only doing client-level authentication within MLS. If user-level
authentication is still desirable, the application would have to provide it
through some other mechanism.</t>
          <t>It is also possible to maintain user-level authentication while hiding
information about the clients that a user owns.  This can be done by having the
clients share cryptographic state, so that they appear as a single client within
the MLS group.  The application would need to provide a synchronization
mechanism so that the clients' state remained consistent across changes to the
MLS group.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Avoid sharing cryptographic state between clients to
improve resilience against compromises.  An attacker could use one compromised
device to establish ownership of a state across other devices and reduce the
ability of the user to recover.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="endpoint-compromise">
        <name>Endpoint Compromise</name>
        <t>The MLS protocol adopts a threat model which includes multiple forms of
endpoint/client compromise. While adversaries are in a strong position if
they have compromised an MLS client, there are still situations where security
guarantees can be recovered thanks to the PCS properties achieved by the MLS
protocol.</t>
        <t>In this section we will explore the consequences and recommendations regarding
the following compromise scenarios:</t>
        <ul spacing="normal">
          <li>The attacker has access to a specific symmetric encryption key</li>
          <li>The attacker has access to the group secrets for one group</li>
          <li>The attacker has access to a signature oracle for any group</li>
          <li>The attacker has access to the signature key for one group</li>
          <li>The attacker has access to all secrets of a user for all groups (full state
compromise)</li>
        </ul>
        <t>The MLS protocol provides per-sender chains of AEAD keys that are generated from
Group Secrets. These keys are used to protect MLS Plaintext messages which can
be Group Operation or Application messages. The Group Operation messages offer
an additional protection as the secret exchanged within the TreeKEM group key
agreement are public-key encrypted to subgroups with HPKE.</t>
        <section anchor="compromise-of-aead-key-material">
          <name>Compromise of AEAD key material</name>
          <t>In some circumstances, adversaries may have access to specific AEAD keys and
nonces which protect an Application or a Group Operation message. While this is
a limited kind of compromise, it can be realistic in cases of implementation
vulnerabilities where only part of the memory leaks to the adversary.</t>
          <t>When an AEAD key is compromised, the adversary has access to a set of AEAD keys
for the same chain and the same epoch, hence can decrypt messages sent using
keys of this chain. An adversary cannot send a message to a group which appears
to be from any valid client since they cannot forge the signature.</t>
          <t>The MLS protocol will ensure that an adversary cannot compute any previous AEAD
keys for the same epoch, or any other epochs.  Because of its Forward Secrecy
guarantees, MLS will also retain secrecy of all other AEAD keys generated for
<em>other</em> MLS clients, outside this dedicated chain of AEAD keys and nonces, even
within the epoch of the compromise. However the MLS protocol does not provide
Post Compromise Secrecy for AEAD encryption within an epoch. This means that if
the AEAD key of a chain is compromised, the adversary can compute an arbitrary
number of subsequent AEAD keys for that chain.</t>
          <t>These guarantees are ensured by the structure of the MLS key schedule which
provides Forward Secrecy for these AEAD encryptions, across the messages within
the epoch and also across previous epochs.  Those chains are completely disjoint
and compromising keys across the chains would mean that some Group Secrets have
been compromised, which is not the case in this attack scenario (we explore
stronger compromise scenarios as part of the following sections).</t>
          <t>MLS provides Post-Compromise Security against an active adaptive attacker across
epochs for AEAD encryption, which means that as soon as the epoch is changed, if
the attacker does not have access to more secret material they won't be able to
access any protected messages from future epochs.</t>
          <t>In the case of an Application message, an AEAD key compromise means that the
encrypted application message will be leaked as well as the signature over that
message. This means that the compromise has both confidentiality and privacy
implications on the future AEAD encryptions of that chain.  In the case of a
Group Operation message, only the privacy is affected, as the signature is
revealed, because the secrets themselves are protected by HPKE encryption.</t>
          <t>Note that under that compromise scenario, authentication is not affected in
either of these cases.  As every member of the group can compute the AEAD keys
for all the chains (they have access to the Group Secrets) in order to send and
receive messages, the authentication provided by the AEAD encryption layer of
the common framing mechanism is weak. Successful decryption of an AEAD
encrypted message only guarantees that a member of the group sent the message.</t>
        </section>
        <section anchor="compromise-of-the-group-secrets-of-a-single-group-for-one-or-more-group-epochs">
          <name>Compromise of the Group Secrets of a single group for one or more group epochs</name>
          <t>The attack scenario considering an adversary gaining access to a set of Group
secrets is significantly stronger. This can typically be the case when a member
of the group is compromised.  For this scenario, we consider that the signature
keys are not compromised. This can be the case for instance if the adversary has
access to part of the memory containing the group secrets but not to the
signature keys which might be stored in a secure enclave.</t>
          <t>In this scenario, the adversary gains the ability to compute any number of AEAD
encryption keys for any AEAD chains and can encrypt and decrypt all messages for
the compromised epochs.</t>
          <t>If the adversary is passive, it is expected from the PCS properties of the MLS
protocol that, as soon as the compromised party remediates the compromise and
sends an honest Commit message, the next epochs will provide message secrecy.</t>
          <t>If the adversary is active, the adversary can follow the protocol and perform
updates on behalf of the compromised party with no ability for an honest group
to recover message secrecy. However, MLS provides PCS against active adaptive
attackers through its Remove group operation. This means that, as long as other
members of the group are honest, the protocol will guarantee message secrecy for
all messages exchanged in the epochs after the compromised party has been
removed.</t>
        </section>
        <section anchor="compromise-by-an-active-adversary-with-the-ability-to-sign-messages">
          <name>Compromise by an active adversary with the ability to sign messages</name>
          <t>Under such a scenario, where an active adversary has compromised an MLS client,
two different settings emerge. In the strongest compromise scenario, the
attacker has access to the signing key and can forge authenticated messages. In
a weaker, yet realistic scenario, the attacker has compromised a client but the
client signature keys are protected with dedicated hardware features which do
not allow direct access to the value of the private key and instead provide a
signature API.</t>
          <t>When considering an active adaptive attacker with access to a signature oracle,
the compromise scenario implies a significant impact on both the secrecy and
authentication guarantees of the protocol, especially if the attacker also has
access to the group secrets. In that case both secrecy and authentication are
broken.  The attacker can generate any message, for the current and future
epochs, until the compromise is remediated and the formerly compromised client
sends an honest update.</t>
          <t>Note that under this compromise scenario, the attacker can perform all
operations which are available to a legitimate client even without access to the
actual value of the signature key.</t>
          <t>Without access to the group secrets, the adversary will not have the ability to
generate messages which look valid to other members of the group and to the
infrastructure as they need to have access to group secrets to compute the
encryption keys or the membership tag.</t>
        </section>
        <section anchor="compromise-of-the-authentication-with-access-to-a-signature-key">
          <name>Compromise of the authentication with access to a signature key</name>
          <t>The difference between having access to the value of the signature key and only
having access to a signing oracle is not about the ability of an active adaptive
network attacker to perform different operations during the time of the
compromise, the attacker can perform every operation available to a legitimate
client in both cases.</t>
          <t>There is a significant difference, however in terms of recovery after a
compromise.</t>
          <t>Because of the PCS guarantees provided by the MLS protocol, when a previously
compromised client performs an honest Commit which is not under the control of
the adversary, both secrecy and authentication of messages can be recovered in
the case where the attacker didn't get access to the key. Because the adversary
doesn't have the key and has lost the ability to sign messages, they cannot
authenticate messages on behalf of the compromised party, even if they still
have control over some group keys by colluding with other members of the group.</t>
          <t>This is in contrast with the case where the signature key is leaked.  In that
case PCS of the MLS protocol will eventually allow recovery of the
authentication of messages for future epochs but only after compromised parties
refresh their credentials securely.</t>
          <t>Beware that in both oracle and private key access, an active adaptive attacker
can follow the protocol and request to update its own credential. This in turn
induces a signature key rotation which could provide the attacker with part or
the full value of the private key depending on the architecture of the service
provider.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Signature private keys should be compartmentalized from
other secrets and preferably protected by an HSM or dedicated hardware
features to allow recovery of the authentication for future messages after a
compromise.</t>
            </li>
          </ul>
        </section>
        <section anchor="security-consideration-in-the-context-of-a-full-state-compromise">
          <name>Security consideration in the context of a full state compromise</name>
          <t>In real-world compromise scenarios, it is often the case that adversaries target
specific devices to obtain parts of the memory or even the ability to execute
arbitrary code in the targeted device.</t>
          <t>Also, recall that in this setting, the application will often retain the
unencrypted messages. If so, the adversary does not have to break encryption at
all to access sent and received messages. Messages may also be sent by using the
application to instruct the protocol implementation.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> If messages are stored on the device, they should be
protected using encryption at rest, and the keys used should be stored
securely using dedicated mechanisms on the device.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> If the threat model of the system is against an adversary
which can access the messages on the device without even needing to attack
MLS, the application should delete plaintext messages and ciphertexts
as soon as practical after encryption or decryption.</t>
            </li>
          </ul>
          <t>Even though, from the strict point of view of the security formalization, a
ciphertext is always public and will forever be, there is no loss in trying to
erase ciphertexts as much as possible.</t>
          <t>Note that this document makes a clear distinction between the way signature keys
and other group shared secrets must be handled.  In particular, a large set of
group secrets cannot necessarily be assumed to be protected by an HSM or secure
enclave features. This is especially true because these keys are
frequently used and changed with each message received by a client.</t>
          <t>However, the signature private keys are mostly used by clients to send a
message. They also provide strong authentication guarantees to other clients,
hence we consider that their protection by additional security mechanisms should
be a priority.</t>
          <t>Overall there is no way to detect or prevent these compromises, as discussed in
the previous sections, performing separation of the application secret states
can help recovery after compromise, this is the case for signature keys but
similar concern exists for the encryption private key used in the TreeKEM Group
Key Agreement.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> The secret keys used for public key encryption should be
stored similarly to the way the signature keys are stored, as keys can be used
to decrypt the group operation messages and contain the secret material used
to compute all the group secrets.</t>
            </li>
          </ul>
          <t>Even if secure enclaves are not perfectly secure, or even completely broken,
adopting additional protections for these keys can ease recovery of the secrecy
and authentication guarantees after a compromise where, for instance, an
attacker can sign messages without having access to the key. In certain
contexts, the rotation of credentials might only be triggered by the AS through
ACLs, hence be outside of the capabilities of the attacker.</t>
        </section>
      </section>
      <section anchor="service-node-compromise">
        <name>Service Node Compromise</name>
        <section anchor="general-considerations">
          <name>General considerations</name>
          <section anchor="privacy-of-the-network-connections">
            <name>Privacy of the network connections</name>
            <t>There are many scenarios leading to communication between the application on a
device and the Delivery Service or the Authentication Service. In particular
when:</t>
            <ul spacing="normal">
              <li>The application connects to the Authentication Service to generate or validate
a new credential before distributing it.</li>
              <li>The application fetches credentials at the Delivery Service prior to creating
a messaging group (one-to-one or more than two clients).</li>
              <li>The application fetches service provider information or messages on the
Delivery Service.</li>
              <li>The application sends service provider information or messages to the Delivery
Service.</li>
            </ul>
            <t>In all these cases, the application will often connect to the device via a
secure transport which leaks information about the origin of the request such as
the IP address and depending on the protocol the MAC address of the device.</t>
            <t>Similar concerns exist in the peer-to-peer use cases of MLS.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> In the case where privacy or anonymity is important, using
adequate protection such as TOR or a VPN can improve metadata protection.</t>
              </li>
            </ul>
            <t>More generally, using anonymous credentials in an MLS based architecture might
not be enough to provide strong privacy or anonymity properties.</t>
          </section>
        </section>
        <section anchor="delivery-service-compromise">
          <name>Delivery Service Compromise</name>
          <t>MLS is intended to provide strong guarantees in the face of compromise of the
DS. Even a totally compromised DS should not be able to read messages or inject
messages that will be acceptable to legitimate clients. It should also not be
able to undetectably remove, reorder or replay messages.</t>
          <t>However, a malicious DS can mount a variety of DoS attacks on the system,
including total DoS attacks (where it simply refuses to forward any messages)
and partial DoS attacks (where it refuses to forward messages to and from
specific clients).  As noted in <xref target="delivery-guarantees"/>, these attacks are only
partially detectable by clients without an out-of-band channel. Ultimately,
failure of the DS to provide reasonable service must be dealt with as a customer
service matter, not via technology.</t>
          <t>Because the DS is responsible for providing the initial keying material to
clients, it can provide stale keys. This does not inherently lead to compromise
of the message stream, but does allow it to attack forward security to a limited
extent. This threat can be mitigated by having initial keys expire.</t>
          <t>Initial keying material (KeyPackages) using the <tt>basic</tt> Credential type is more
vulnerable to replacement by a malicious or compromised DS, as there is no
built-in cryptographic binding between the identity and the public key of the
client.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Prefer a Credential type in KeyPackages which includes a
strong cryptographic binding between the identity and its key (for example the
<tt>x509</tt> Credential type). When using the <tt>basic</tt> Credential type take extra
care to verify the identity (typically out-of-band).</t>
            </li>
          </ul>
          <section anchor="privacy-of-delivery-and-push-notifications">
            <name>Privacy of delivery and push notifications</name>
            <t>An important mechanism that is often ignored from the privacy considerations are
the push-tokens. In many modern messaging architectures, applications are using
push notification mechanisms typically provided by OS vendors. This is to make
sure that when messages are available at the Delivery Service (or by other
mechanisms if the DS is not a central server), the recipient application on a
device knows about it. Sometimes the push notification can contain the
application message itself which saves a round trip with the DS.</t>
            <t>To "push" this information to the device, the service provider and the OS
infrastructures use unique per-device, per-application identifiers called
push-tokens. This means that the push notification provider and the service
provider have information on which devices receive information and at which
point in time. Alternatively, non-mobile applications could use a websocket or
persistent connection for notifications directly from the DS.</t>
            <t>Even though they can't necessarily access the content, which is typically
encrypted MLS messages, the service provider and the push notification provider
have to be trusted to avoid making correlation on which devices are recipients
of the same message.</t>
            <t>For secure messaging systems, push notifications are often sent real-time as it
is not acceptable to create artificial delays for message retrieval.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> If real time notifications are not necessary, one can
delay notifications randomly across recipient devices using a mixnet or other
techniques.</t>
              </li>
            </ul>
            <t>Note that with a legal request to ask the service provider for
the push-token associated with an identifier, it is easy to correlate the token
with a second request to the
company operating the push-notification system to get information about the
device, which is often linked with a real identity via a cloud account, a credit
card or other information.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> If stronger privacy guarantees are needed with regard to
the push notification provider, the client can choose to periodically connect
to the Delivery Service without the need of a dedicated push notification
infrastructure.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="as-compromise">
          <name>Authentication Service Compromise</name>
          <t>The Authentication Service design is left to the infrastructure designers. In
most designs, a compromised AS is a serious matter, as the AS can serve
incorrect or attacker-provided identities to clients.</t>
          <ul spacing="normal">
            <li>The attacker can link an identity to a credential</li>
            <li>The attacker can generate new credentials</li>
            <li>The attacker can sign new credentials</li>
            <li>The attacker can publish or distribute credentials</li>
          </ul>
          <t>It is possible for a system to have a centralized server generate signature key
pairs and distribute them to clients. This is strongly discouraged. In such cases, the centralized server is
a point of compromise, since it stores signature private keys that can be used
to impersonate clients.  A better approach is instead to generate signature key
pairs in clients and have them "blessed" by the centralized service, e.g., by
having the service issue a credential binding the key pair to the client's
identity.  In this approach, there is still a risk that the centralized service
will authorize additional key pairs, but it will not be able to use existing,
client-generated private keys.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Make clients submit signature public keys to the AS, this
is usually better than the AS generating public key pairs because the AS
cannot sign on behalf of the client. This is a benefit of a Public Key
Infrastructure in the style of the Internet PKI.</t>
            </li>
          </ul>
          <t>An attacker that can generate or sign new credentials may or may not have access
to the underlying cryptographic material necessary to perform such
operations. In that last case, it results in windows of time for which all
emitted credentials might be compromised.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> Use HSMs to store the root signature keys to limit the
ability of an adversary with no physical access to extract the top-level
signature private key.</t>
            </li>
          </ul>
          <section anchor="authentication-compromise-ghost-users-and-impersonations">
            <name>Authentication compromise: Ghost users and impersonations</name>
            <t>One important feature of MLS is that all Members know which other members are in
the group at all times. If all Members of the group and the Authentication
Service are honest, no parties other than the members of the current group can
read and write messages protected by the protocol for that Group.</t>
            <t>Details about how to verify the identity of a client depend on the MLS
Credential type used. For example, cryptographic verification of credentials can
be largely performed autonomously (e.g. without user interaction) by
the clients themselves for the <tt>x509</tt> Credential
type. In contrast, when MLS clients use the <tt>basic</tt> Credential type, a larger
degree of trust must be placed in a (likely) centralized authentication
resource, or on out-of-band processes such as manual verification.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Select the strongest MLS Credential type available among
the target members of an MLS group.</t>
              </li>
            </ul>
            <t>If the AS is compromised, it could validate a (or generate a new) signature
keypair for an attacker. Because a user can have many MLS clients running the
MLS protocol, it possibly has many signature keypairs for multiple
devices. These attacks could be very difficult to detect.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Provide a key transparency mechanism for the
Authentication Services to allow public verification of the credentials
authenticated by this service.</t>
              </li>
            </ul>
            <t>Note that when a <tt>basic</tt> Credential is used, the Authentication Service also
needs an out-of-band mechanism to verify the identity asserted in the
Credential.</t>
            <t>In the case where an adversarial keypair is generated for a specific identity,
an infrastructure without any transparency mechanism or out-of-band
authentication mechanism could inject a malicious client into a group by
impersonating a user. This is especially the case in large groups where the UI
might not reflect all the changes back to the users.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Make sure that MLS clients reflect all the membership
changes to the users as they happen. If a choice has to be made because the
number of notifications is too high, a public log should be maintained of the
state of the device so that the user can examine it.</t>
              </li>
            </ul>
            <t>While the ways to handle MLS credentials are not defined by the protocol or the
architecture documents, the MLS protocol has been designed with a mechanism that
can be used to provide out-of-band authentication to users. The
"authentication_secret" generated for each user at each epoch of the group is a
one-time, per client, authentication secret which can be exchanged between users
to prove their identity to each other. This can be done for instance using a QR
code that can be scanned by the other parties.</t>
            <t>Another way to improve the security for the users is to provide a transparency
mechanism which allows each user to check if credentials used in groups have
been published in the transparency log. Another benefit of this mechanism is for
revocation. The users of a group could check for revoked keys (in case of
compromise detection) using a mechanism such as CRLite or some more advanced
privacy preserving technology.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Provide one or more out-of-band authentication
mechanisms to limit the impact of an Authentication Service compromise.</t>
              </li>
            </ul>
            <t>We note, again, that as described prior to that section, the Authentication
Service may not be a centralized system, and could be realized by many
mechanisms such as establishing prior one-to-one deniable channels, gossiping,
or using trust on first use (TOFU) for credentials used by the MLS Protocol.</t>
            <t>Another important consideration is the ease of redistributing new keys on client
compromise, which helps recovering security faster in various cases.</t>
          </section>
          <section anchor="privacy-of-the-group-membership">
            <name>Privacy of the Group Membership</name>
            <t>Group membership is itself sensitive information and MLS is designed to limit
the amount of persistent metadata. However, large groups often require an
infrastructure which provides server fanout.  In the case of client fanout, the
destination of a message is known by all clients, hence the server usually does
not need this information.  However, they may learn this information through
traffic analysis.  Unfortunately, in a server-side fanout model, the Delivery
Service can learn that a given client is sending the same message to a set of
other clients. In addition, there may be applications of MLS in which the group
membership list is stored on some server associated with the Delivery Service.</t>
            <t>While this knowledge is not a breach of the protocol's authentication or
confidentiality guarantees, it is a serious issue for privacy.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> In the case where metadata has to be persisted for
functionality, it should be stored encrypted at rest and then decrypted during
the execution. Applications should also consider anonymous systems for server
fanout (for example <xref target="Loopix"/>).</t>
              </li>
            </ul>
            <t>Some infrastructure keeps a mapping between keys used in the MLS protocol and
user identities. An attacker with access to this information due to compromise
or regulation can associate unencrypted group messages (e.g., Commits and
Proposals) with the corresponding user identity.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Use encrypted group operation messages to limit
privacy risks whenever possible.</t>
              </li>
            </ul>
            <t>In certain cases, the adversary can access specific bindings between public keys
and identities. If the signature keys are reused across groups, the adversary
can get more information about the targeted user.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Do not use the same signature keypair across
groups. Update all keys for all groups on a regular basis. Do not preserve
keys in different groups when suspecting a compromise.</t>
              </li>
            </ul>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Separate the service binding the identities and the public
keys from the service which generates or validates the credentials or
cryptographic material of the Clients.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
      <section anchor="considerations-for-attacks-outside-of-the-threat-model">
        <name>Considerations for attacks outside of the threat model</name>
        <t>Physical attacks on devices storing and executing MLS principals are not
considered in depth in the threat model of the MLS protocol.  While
non-permanent, non-invasive attacks can sometimes be equivalent to software
attacks, physical attacks are considered outside of the MLS threat model.</t>
        <t>Compromise scenarios typically consist of a software adversary, which can
maintain active adaptive compromise and arbitrarily change the behavior of the
client or service.</t>
        <t>On the other hand, security goals consider that honest clients will always run
the protocol according to its specification. This relies on implementations of
the protocol to securely implement the specification, which remains non-trivial.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Additional steps should be taken to protect the device and
the MLS clients from physical compromise. In such settings, HSMs and secure
enclaves can be used to protect signature keys.</t>
          </li>
        </ul>
      </section>
      <section anchor="cryptographic-analysis-of-the-mls-protocol">
        <name>Cryptographic Analysis of the MLS Protocol</name>
        <t>Various academic works have analyzed MLS and the different security guarantees
it aims to provide. The security of large parts of the protocol has been
analyzed by <xref target="BBN19"/> (draft 7), <xref target="ACDT21"/> (draft 11) and <xref target="AJM20"/> (draft 12).</t>
        <t>Individual components of various drafts of the MLS protocol have been analyzed
in isolation and with differing adversarial models, for example, <xref target="BBR18"/>,
<xref target="ACDT19"/>, <xref target="ACCKKMPPWY19"/>, <xref target="AJM20"/>, <xref target="ACJM20"/>, and <xref target="AHKM21"/> analyze the
ratcheting tree as the sub-protocol of MLS that facilitates key agreement,
<xref target="WPBB22"/> analyzes the sub-protocol of MLS for group state agreement and authentication,
while <xref target="BCK21"/> analyzes the key derivation paths in the ratchet tree and key
schedule. Finally, <xref target="CHK21"/> analyzes the authentication and cross-group healing
guarantees provided by MLS.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="CONIKS" target="https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-melara.pdf">
          <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"/>
          </front>
        </reference>
        <reference anchor="CAPBR">
          <front>
            <title>Towards robust distributed systems (abstract)</title>
            <author fullname="Eric A. Brewer" initials="E." surname="Brewer">
              <organization>UC Berkeley and Inktomi</organization>
            </author>
            <date month="July" year="2000"/>
          </front>
          <seriesInfo name="Proceedings of the nineteenth annual ACM symposium on Principles of distributed" value="computing"/>
          <seriesInfo name="DOI" value="10.1145/343477.343502"/>
          <refcontent>ACM</refcontent>
        </reference>
        <reference anchor="ACCKKMPPWY19" target="https://eprint.iacr.org/2019/1489">
          <front>
            <title>Security Analysis and Improvements for the IETF MLS Standard for Group Messaging</title>
            <author initials="J." surname="Alwen" fullname="Joel Alwen">
              <organization/>
            </author>
            <author initials="M." surname="Capretto" fullname="Margarita Capretto">
              <organization/>
            </author>
            <author initials="M." surname="Cueto" fullname="Miguel Cueto">
              <organization/>
            </author>
            <author initials="C." surname="Kamath" fullname="Chethan Kamath">
              <organization/>
            </author>
            <author initials="K." surname="Klein" fullname="Karen Klein">
              <organization/>
            </author>
            <author initials="I." surname="Markov" fullname="Ilia Markov">
              <organization/>
            </author>
            <author initials="G." surname="Pascual-Perez" fullname="Guillermo Pascual-Perez">
              <organization/>
            </author>
            <author initials="K." surname="Pietrzak" fullname="Krzysztof Pietrzak">
              <organization/>
            </author>
            <author initials="M." surname="Walter" fullname="Michael Walter">
              <organization/>
            </author>
            <author initials="M." surname="Yeo" fullname="Michelle Yeo">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="ACDT19" target="https://eprint.iacr.org/2019/1189.pdf">
          <front>
            <title>Security Analysis and Improvements for the IETF MLS Standard for Group Messaging</title>
            <author initials="J." surname="Alwen" fullname="Joel Alwen">
              <organization/>
            </author>
            <author initials="S." surname="Coretti" fullname="Sandro Coretti">
              <organization/>
            </author>
            <author initials="Y." surname="Dodis" fullname="Yevgeniy Dodis">
              <organization/>
            </author>
            <author initials="Y." surname="Tselekounis" fullname="Yiannis Tselekounis">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="ACDT21" target="https://eprint.iacr.org/2021/1083.pdf">
          <front>
            <title>Modular Design of Secure Group Messaging Protocols and the Security of MLS</title>
            <author initials="J." surname="Alwen" fullname="Joel Alwen">
              <organization/>
            </author>
            <author initials="S." surname="Coretti" fullname="Sandro Coretti">
              <organization/>
            </author>
            <author initials="Y." surname="Dodis" fullname="Yevgeniy Dodis">
              <organization/>
            </author>
            <author initials="Y." surname="Tselekounis" fullname="Yiannis Tselekounis">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="ACJM20" target="https://eprint.iacr.org/2020/752.pdf">
          <front>
            <title>Continuous Group Key Agreement with Active Security</title>
            <author initials="J." surname="Alwen" fullname="Joel Alwen">
              <organization/>
            </author>
            <author initials="S." surname="Coretti" fullname="Sandro Coretti">
              <organization/>
            </author>
            <author initials="D." surname="Jost" fullname="Daniel Jost">
              <organization/>
            </author>
            <author initials="M." surname="Mularczyk" fullname="Marta Mularczyk">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="AHKM21" target="https://eprint.iacr.org/2021/1456.pdf">
          <front>
            <title>Server-Aided Continuous Group Key Agreement</title>
            <author initials="J." surname="Alwen" fullname="Joel Alwen">
              <organization/>
            </author>
            <author initials="D." surname="Hartmann" fullname="Dominik Hartmann">
              <organization/>
            </author>
            <author initials="E." surname="Kiltz" fullname="Eike Kiltz">
              <organization/>
            </author>
            <author initials="M." surname="Mularczyk" fullname="Marta Mularczyk">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="AJM20" target="https://eprint.iacr.org/2020/1327.pdf">
          <front>
            <title>On The Insider Security of MLS</title>
            <author initials="J." surname="Alwen" fullname="Joel Alwen">
              <organization/>
            </author>
            <author initials="D." surname="Jost" fullname="Daniel Jost">
              <organization/>
            </author>
            <author initials="M." surname="Mularczyk" fullname="Marta Mularczyk">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="BBN19" target="https://hal.laas.fr/INRIA/hal-02425229v1/file/mls-treekem.pdf">
          <front>
            <title>Formal Models and Verified Protocols for Group Messaging: Attacks and Proofs for IETF MLS</title>
            <author initials="K." surname="Bhargavan" fullname="Karthikeyan Bhargavan">
              <organization/>
            </author>
            <author initials="B." surname="Beurdouche" fullname="Benjamin Beurdouche">
              <organization/>
            </author>
            <author initials="P." surname="Naldurg" fullname="Prasad Naldurg">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="BBR18" target="https://hal.inria.fr/hal-02425247/file/treekem+%281%29.pdf">
          <front>
            <title>TreeKEM: Asynchronous Decentralized Key Management for Large Dynamic Groups A protocol proposal for Messaging Layer Security (MLS)</title>
            <author initials="K." surname="Bhargavan" fullname="Karthikeyan Bhargavan">
              <organization/>
            </author>
            <author initials="R." surname="Barnes" fullname="Richard Barnes">
              <organization/>
            </author>
            <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="BCK21" target="https://eprint.iacr.org/2021/137.pdf">
          <front>
            <title>Cryptographic Security of the MLS RFC, Draft 11</title>
            <author initials="C." surname="Brzuska" fullname="Chris Brzuska">
              <organization/>
            </author>
            <author initials="E." surname="Cornelissen" fullname="Eric Cornelissen">
              <organization/>
            </author>
            <author initials="K." surname="Kohbrok" fullname="Konrad Kohbrok">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="CHK21" target="https://www.usenix.org/system/files/sec21-cremers.pdf">
          <front>
            <title>The Complexities of Healing in Secure Group Messaging: Why Cross-Group Effects Matter</title>
            <author initials="C." surname="Cremers" fullname="Cas Cremers">
              <organization/>
            </author>
            <author initials="B." surname="Hale" fullname="Britta Hale">
              <organization/>
            </author>
            <author initials="K." surname="Kohbrok" fullname="Konrad Kohbrok">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="WPBB22" target="https://eprint.iacr.org/2022/1732.pdf">
          <front>
            <title>TreeSync: Authenticated Group Management for Messaging Layer Security</title>
            <author initials="T." surname="Wallez" fullname="Théophile Wallez">
              <organization/>
            </author>
            <author initials="J." surname="Protzenko" fullname="Jonathan Protzenko">
              <organization/>
            </author>
            <author initials="B." surname="Beurdouche" fullname="Benjamin Beurdouche">
              <organization/>
            </author>
            <author initials="K." surname="Bhargavan" fullname="Karthikeyan Bhargavan">
              <organization/>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="Loopix">
          <front>
            <title>The Loopix Anonymity System</title>
            <author initials="A. M." surname="Piotrowska" fullname="Ania M. Piotrowska">
              <organization/>
            </author>
            <author initials="J." surname="Hayes" fullname="Jamie Hayes">
              <organization/>
            </author>
            <author initials="T." surname="Elahi" fullname="Tariq Elahi">
              <organization/>
            </author>
            <author initials="S." surname="Meiser" fullname="Sebastian Meiser">
              <organization/>
            </author>
            <author initials="G." surname="Danezis" fullname="George Danezis">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="RFC6120">
          <front>
            <title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>The Extensible Messaging and Presence Protocol (XMPP) is an application profile of the Extensible Markup Language (XML) that enables the near-real-time exchange of structured yet extensible data between any two or more network entities. This document defines XMPP's core protocol methods: setup and teardown of XML streams, channel encryption, authentication, error handling, and communication primitives for messaging, network availability ("presence"), and request-response interactions. This document obsoletes RFC 3920. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6120"/>
          <seriesInfo name="DOI" value="10.17487/RFC6120"/>
        </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="I-D.ietf-mls-extensions">
          <front>
            <title>The Messaging Layer Security (MLS) Extensions</title>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This document describes extensions to the Messaging Layer Security
   (MLS) protocol.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/mlswg/mls-extensions.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-extensions-01"/>
        </reference>
        <reference anchor="I-D.ietf-mls-federation">
          <front>
            <title>The Messaging Layer Security (MLS) Federation</title>
            <author fullname="Emad Omara" initials="E." surname="Omara">
              <organization>Google</organization>
            </author>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This document describes how the Messaging Layer Security (MLS)
   protocol can be used in a federated environment.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/mlswg/mls-federation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-federation-02"/>
        </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="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
      </references>
    </references>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="R." surname="Barnes" fullname="Richard Barnes">
        <organization>Cisco</organization>
        <address>
          <email>rlb@ipv.sx</email>
        </address>
      </contact>
      <contact initials="K." surname="Cohn-Gordon" fullname="Katriel Cohn-Gordon">
        <organization>Meta Platforms</organization>
        <address>
          <email>me@katriel.co.uk</email>
        </address>
      </contact>
      <contact initials="C." surname="Cremers" fullname="Cas Cremers">
        <organization>CISPA Helmholtz Center for Information Security</organization>
        <address>
          <email>cremers@cispa.de</email>
        </address>
      </contact>
      <contact initials="B." surname="Hale" fullname="Britta Hale">
        <organization>Naval Postgraduate School</organization>
        <address>
          <email>britta.hale@nps.edu</email>
        </address>
      </contact>
      <contact initials="A." surname="Kwon" fullname="Albert Kwon">
        <organization>Badge Inc.</organization>
        <address>
          <email>kwonalbert@badgeinc.com</email>
        </address>
      </contact>
      <contact initials="K." surname="Kohbrok" fullname="Konrad Kohbrok">
        <organization>Phoenix R&amp;D</organization>
        <address>
          <email>konrad.kohbrok@datashrine.de</email>
        </address>
      </contact>
      <contact initials="R." surname="Mahy" fullname="Rohan Mahy">
        <organization>Wire</organization>
        <address>
          <email>rohan.mahy@wire.com</email>
        </address>
      </contact>
      <contact initials="B." surname="McMillion" fullname="Brendan McMillion">
        <organization/>
        <address>
          <email>brendanmcmillion@gmail.com</email>
        </address>
      </contact>
      <contact initials="T. van der" surname="Merwe" fullname="Thyla van der Merwe">
        <organization/>
        <address>
          <email>tjvdmerwe@gmail.com</email>
        </address>
      </contact>
      <contact initials="J." surname="Millican" fullname="Jon Millican">
        <organization>Meta Platforms</organization>
        <address>
          <email>jmillican@meta.com</email>
        </address>
      </contact>
      <contact initials="R." surname="Robert" fullname="Raphael Robert">
        <organization>Phoenix R&amp;D</organization>
        <address>
          <email>ietf@raphaelrobert.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9W9/ZLbVpYn+P99CqwcM1K6mLQl211Vql21UynJVsmyspVy
eTp2NmyQBJOoBAE2AGaaVqnfZ55jX2zP9z0XANPydE9sjKIqLJHExf0893z8
zu+cnp6Gvuyr4nH2blNkr4uuy6/K+ir7Lj8UbXZZLPdt2R+yB6+/uzzJztrl
puyLZb9vi5AvFm1x8ziDb9IvVs2yzrfQ4qrN1/1pWfTr023VnebuR6cPH4Zl
3hdXTXt4nJX1ugmh3LWPs77dd/2jzz//8+ePQt4W+WPrQ7guDrdNu3qcvaz7
oq2L/vQZviCErs/r1U951dTw0kPRhV35OPu/+2Y5y7qm7dti3cHfDlv8y/8T
Qr7vN037OGSnIYM/Zd09zp7Os6fFvl01++WmoI95CE+L+u/5tqyH3zbtVV6X
v+Z92dTYobbMs/+avW5+Lasqp18U27ysYGgw+q8X9vB82WyTFz+fZ2+Lbtm0
8hi/9nlbLtPP0xdOvKi4br9u+/V26g1vtnmbNL/NV+7DtO1vmuaqKpKm4efz
Bn/+9RV+MnrF5Rym4Gp/499x2ZZ1eZN3/htpryvpo68P+aZpRo2dzbNnsOBL
19ZZldfuw7S/P5Zt0tscfvz1LXxILYdlU/dtudj3uOSn0uDbcrnJ21X2NId9
1AVq8nF2XsKEB2uorRZfl7ubefeLPfcqh7aKKjtvNvXpN7AZm1offl30eXZR
5f26abddbGVbfH3NT0F/5vtra+sc5ua8LbZFGzvw8vLiLPu2qLabpup/zc4L
3OkZtAiziO3SkOOJsJcsuZ2vl2W3y+erwl7yFH4H/fo2pxWll3yf3+RVdtF0
/VWbr/ZwCLPLJSxEFZtb0FPzDTz1db3r5sVqby2eVYui7bNXt3HoT/PVVQE9
XM5jE9fwfU4//XqBX5fwLa6HzWRTw9vhP5tF21xrSxebpqjLX7K3//WZa4p+
Or/mn369yvu828DuKvxA3zYb2COv881B25J9oYuJ38+38H3cG3GSinqFTy9f
w6kqaWA2E/TVdrnlb9wB0KffbQ5Vnt3A8ytYq9dFe+te2//9ZrXFjyYe/Css
Jb1wmf/mLvr7Vn749RZ+kTTzNt9tctiTbxuc7TtnkoRRy79v6ed8RkrdXDcF
iMXs/M33L19dPqZDBX/6vL0q+sfZpu933ePPPru9vZ3vO2x9Dq/6rDt0fbH9
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

-->

</rfc>
