<?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.31 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mls-architecture-12" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title abbrev="MLS Architecture">The Messaging Layer Security (MLS) Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mls-architecture-12"/>
    <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/>
      <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="2024" month="March" day="03"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <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>
    <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>
      <section anchor="protocol-overview">
        <name>Protocol Overview</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 hundreds of thousands.  A client that is part of a group is a <em>member</em>
of that group. As groups change membership and group or member properties, they
advance from one <em>epoch</em> to another and the cryptographic state of the group
evolves.</t>
        <t>The group is represented as a tree, which represents the members as the leaves
of a tree. It is used to efficiently encrypt to subsets of the members. Each
member has a state called a <em>LeafNode</em> object holding the client's identity,
credentials, and capabilities.</t>
        <t>Various messages are used in the evolution from epoch to epoch.
A <em>Proposal</em> message proposes
a change to be made in the next epoch, such as adding or removing a member.
A <em>Commit</em> message initiates a new epoch by instructing members of the group to
implement a collection of proposals. Proposals and Commits are collectively
called <em>Handshake messages</em>.
A <em>KeyPackage</em> provides keys that can be used to add the client to a group,
including its LeafNode, and <em>Signature Key</em>.
A <em>Welcome</em> message provides a new member to the group with the information to
initialize their state for the epoch in which they were added.</t>
        <t>Of course most (but not all) applications use MLS to send encrypted group messages.
An <em>application message</em> is an MLS message with an arbitrary application payload.</t>
        <t>Finally, a <em>PublicMessage</em> contains an integrity-protected MLS Handshake message,
while a <em>PrivateMessage</em> contains a confidential, integrity-protected Handshake
or application message.</t>
        <t>For a more detailed explanation of these terms, please consult the MLS protocol
specification <xref target="RFC9420"/>.</t>
      </section>
      <section anchor="abstract-services">
        <name>Abstract Services</name>
        <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>
            <t>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.</t>
          </li>
          <li>
            <t>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.</t>
          </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>
            <t>Several secure messaging services today provide a centralized DS, and rely on
manual comparison of clients' public keys as the AS.</t>
          </li>
          <li>
            <t>MLS clients connected to a peer-to-peer network could instantiate a
decentralized DS by transmitting MLS messages over that network.</t>
          </li>
          <li>
            <t>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).</t>
          </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">
                <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>
    <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">
              <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-to-the-group">
        <name>Step 3: Adding Bob to the Group</name>
        <t>When Alice wants to create a group including Bob, she first uses the DS to look
up his initial keying material. She then generates two messages:</t>
        <ul spacing="normal">
          <li>
            <t>A message to the entire group (which at this point is just her and Bob)
that adds Bob to the group.</t>
          </li>
          <li>
            <t>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.</t>
          </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 DS to look
up his initial keying material and then generates two messages:</t>
        <ul spacing="normal">
          <li>
            <t>A message to the entire group (consisting of her, Bob, and Charlie) adding
Charlie to the group.</t>
          </li>
          <li>
            <t>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.</t>
          </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>
            <t>sending a message to everyone in the group</t>
          </li>
          <li>
            <t>receiving a message from someone in the group</t>
          </li>
          <li>
            <t>adding one or more clients to an existing group</t>
          </li>
          <li>
            <t>remove one or more members from an existing group</t>
          </li>
          <li>
            <t>updating their own key material</t>
          </li>
          <li>
            <t>leave a group (by asking to be removed)</t>
          </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="proposals-and-commits">
        <name>Proposals and Commits</name>
        <t>The general pattern for any change in the group state (e.g., to add or remove
a user) is that it consists of two messages:</t>
        <dl>
          <dt>Proposal</dt>
          <dd>
            <t>This message describes the change to be made (e.g., add Bob to the group)
but does not effect a change.</t>
          </dd>
          <dt>Commit</dt>
          <dd>
            <t>This message changes the group state to include the changes described in
a set of proposals.</t>
          </dd>
        </dl>
        <t>The simplest pattern is for a client to just send a Commit which contains one or
more Proposals, for instance Alice could send a Commit with the Proposal
Add(Bob) embedded to add Bob to the group. However, there are situations in
which one client might send a proposal and another might send the commit. For
instance, Bob might wish to remove himself from the group and send a Remove
Proposal to do so (see <xref section="12.1.3" sectionFormat="of" target="RFC9420"/>). Because Bob cannot send
the Commit, an existing member must do so.  Commits can apply to multiple valid
Proposals, in which case all the listed changes are applied.</t>
        <t>It is also possible for a Commit to apply to an empty set of Proposals
in which case it just updates the cryptographic state of the group
without changing its membership.</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 rather 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.  Note that 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; for instance, the newly added member might not
have received the Welcome message or been unable to decrypt it for some reason.</t>
      </section>
    </section>
    <section anchor="authentication-service">
      <name>Authentication Service</name>
      <t>The Authentication Service (AS) has to provide three services:</t>
      <ol spacing="normal" type="1"><li>
          <t>Issue credentials to clients that attest to bindings between identities and
signature key pairs</t>
        </li>
        <li>
          <t>Enable a client to verify that a credential presented by another client is
valid with respect to a reference identifier</t>
        </li>
        <li>
          <t>Enable a group member to verify that a credential represents the same client
as another credential</t>
        </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>
          <t>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.</t>
        </li>
        <li>
          <t>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 function that enables users
to verify keys.</t>
        </li>
        <li>
          <t>In a system based on <xref target="CONIKS"/> end user Key Transparency (KT) <xref target="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.</t>
        </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 the AS could
allow an adversary to, among other things, impersonate group members. We discuss
security considerations regarding the compromise of the different AS
functions 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>
          <t>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.</t>
        </li>
        <li>
          <t>Routing MLS messages among clients.</t>
        </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>
            <t>A credential from the Authentication Service attesting to the binding between
the identity and the client's signature key.</t>
          </li>
          <li>
            <t>The client's asymmetric encryption public key.</t>
          </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>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Ensure that "last resort" KeyPackages don't get used by
provisionning enough standard KeyPackages.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Rotate "last resort" KeyPackages as soon as possible
after being used or if they have been stored for a prolonged period of time.
Overall, avoid reusing last resort KeyPackages as much as possible.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong> Ensure that the client for which a last resort KeyPackage
has been used is updating leaf keys as early as possible.</t>
          </li>
        </ul>
        <t>Overall, it needs to be noted that key packages need to be updated when
signature keys are changed.</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 epoch, 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>
            <t>Consistent and Partition-tolerant, or Strongly Consistent, systems can provide
a globally consistent view of data but has the inconvenient of clients needing
to handle rejected messages;</t>
          </li>
          <li>
            <t>Available and Partition-tolerant, or Eventually Consistent, systems continue
working despite network issues but may return different views of data to
different users.</t>
          </li>
        </ul>
        <t>Strategies for sequencing messages in strongly and eventually consistent systems
are described in the next two subsections. Most Delivery Service will use the
Strongly Consistent paradigm but this remains a choice that can be handled in
coordination with the client and advertized in the KeyPackages.</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, but this does not provide complete protection against
partitioning.  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`). A
mechanism for more robust protections is discussed in
<xref target="I-D.ietf-mls-extensions"/>.</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>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ol>
          <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 generally be represented in a group by
multiple clients (although applications could choose to have devices share
keying material).  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, subject to whatever access control policies the application applies
for external joins.</t>
        <t>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 authenticate device
signature keys, then revocation by the owner adds an alternative mechanism 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 these security objectives.  This also applies to
future groups that a member has yet to join, which are likewise unaffected by
updates performed in current groups.</t>
        <t>Applications can strengthen connectivity among parallel groups by requiring
periodic key updates from a user across all groups in which they have
membership.</t>
        <t>MLS provides a pre-shared key (PSK) that can be used 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>Because all clients within a group (members) have access to the shared
cryptographic material, MLS protocol allows each member of the messaging group
to perform operations, 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>If handshake messages are encrypted, any access
control policies must 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="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 that
was exported from the prevoius state.</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.  MLS does not provide direct
support for restoring history in this case, 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. The <tt>required_capabilities</tt> extension (Section 7.2 of
<xref target="RFC9420"/>) can promote 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, that 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>
              <t>Issuing new credentials with a relevant credential lifetime,</t>
            </li>
            <li>
              <t>Validating a credential against a reference identifier,</t>
            </li>
            <li>
              <t>Validating whether or not two credentials represent the same client, and</t>
            </li>
            <li>
              <t>Optionally revoking credentials which are no longer authorized.</t>
            </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>
              <t>Delivering messages for a group to all members in the group.</t>
            </li>
            <li>
              <t>Delivering Welcome messages to new members of a group.</t>
            </li>
            <li>
              <t>Uploading new KeyPackages for a user's own clients.</t>
            </li>
            <li>
              <t>Downloading KeyPackages for specific clients. Typically, KeyPackages are
used once and consumed.</t>
            </li>
          </ol>
        </li>
        <li>
          <t>Additional services may or may not be required depending on the application
design:  </t>
          <ul spacing="normal">
            <li>
              <t>In cases where group operations are not encrypted, the DS has the ability to
observe and maintain a copy of the public group state. In particular, this
is useful for clients that do not have the ability to send the full public
state in a Welcome message when inviting auser or for client that need to
recover from a loss of their state. Such public state can contain privacy
sensitive information such as group members' credentials and related public
keys, hence services need to be carefully evaluate the privacy impact of
storing this data on the DS.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>If an application chooses not to allow 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.</t>
            </li>
            <li>
              <t>If the application uses PSKs that members of a group may not have access to
(e.g., to control entry into the group or to prove membership in the group
in the past, as in <xref target="state-loss"/>) there must be a method for distributing
these PSKs to group members who might not have them, for instance if they
joined the group after the PSK was generated.</t>
            </li>
            <li>
              <t>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.</t>
            </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>
          <t>The maximum total lifetime that is acceptable for a KeyPackage.</t>
        </li>
        <li>
          <t>How long to store the resumption PSK for past epochs of a group.</t>
        </li>
        <li>
          <t>The degree of tolerance that's allowed for out-of-order message delivery:  </t>
          <ul spacing="normal">
            <li>
              <t>How long to keep unused nonce and key pairs for a sender</t>
            </li>
            <li>
              <t>A maximum number of unused key pairs to keep.</t>
            </li>
            <li>
              <t>A maximum number of steps that clients will move a secret tree ratchet
forward in response to a single message before rejecting it.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>If implementations differ in these parameters, they will interoperate to some
extent but may experience unexpected failures in certain situations, such as
extensive message reordering.</t>
      <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>
          <t>Application data, sent as the payload of an encrypted message.</t>
        </li>
        <li>
          <t>Additional authenticated data, sent unencrypted in an otherwise encrypted
message.</t>
        </li>
        <li>
          <t>Group IDs, as decided by group creators and used to uniquely identify a group.</t>
        </li>
        <li>
          <t>Application-level identifiers of public key material (specifically
the <tt>application_id</tt> extension as defined in <xref section="5.3.3" sectionFormat="of" target="RFC9420"/>).</t>
        </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>
          <t>A policy on which ciphersuites are acceptable.</t>
        </li>
        <li>
          <t>A policy on any mandatory or forbidden MLS extensions.</t>
        </li>
        <li>
          <t>A policy on when to send proposals and commits in plaintext instead of
encrypted.</t>
        </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>
              <t>When a member is allowed to add or remove other members of the group.</t>
            </li>
            <li>
              <t>When, and under what circumstances, a reinitialization proposal is allowed.</t>
            </li>
            <li>
              <t>When proposals from external senders are allowed and how to authorize
those proposals.</t>
            </li>
            <li>
              <t>When external joiners are allowed and how to authorize those external
commits.</t>
            </li>
            <li>
              <t>Which other proposal types are allowed.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>A policy of when members should commit pending proposals in a group.</t>
        </li>
        <li>
          <t>A policy of how to protect and share the GroupInfo objects needed for
external joins.</t>
        </li>
        <li>
          <t>A policy for when two credentials represent the same client. Note that many
credentials may be issued attesting the same identity but for different
signature keys, because each credential corresponds to a different client
owned by the same application user. However, one device may control multiple
signature keys -- for instance if they have keys corresponding to multiple
overlapping time periods -- but should still only be considered a single
client.</t>
        </li>
        <li>
          <t>A policy on how long to allow a member to stay in a group without updating its
leaf keys before removing them.</t>
        </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>
          <t>When and how to pad messages.</t>
        </li>
        <li>
          <t>When to send a reinitialization proposal.</t>
        </li>
        <li>
          <t>How often clients should update their leaf keys.</t>
        </li>
        <li>
          <t>Whether to prefer sending full commits or partial/empty commits.</t>
        </li>
        <li>
          <t>Whether there should be a <tt>required_capabilities</tt> extension in groups.</t>
        </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 <xref target="intended-security-guarantees"/> in the face of
attackers who can:</t>
      <ul spacing="normal">
        <li>
          <t>Monitor the entire network.</t>
        </li>
        <li>
          <t>Read unprotected messages.</t>
        </li>
        <li>
          <t>Can generate, inject and delete any message in the unprotected
transport layer.</t>
        </li>
      </ul>
      <t>While MLS should be run over a secure transport such as QUIC <xref target="RFC9000"/> or TLS
<xref target="RFC8446"/>, the security guarantees of MLS do not depend on the
transport. This departs from the usual design practice of trusting the transport
because MLS is designed to provide security even in the face of compromised
network elements, especially the DS.</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>
      <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>
      <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.  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>MLS provides an authenticated "Additional Authenticated Data" (AAD) field for
applications to make data available outside a PrivateMessage, while
cryptographically binding it to the message.</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>
        </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 in
the case where some other mechanism for verifying keys is in use, such as Key
Transparency <xref target="KT"/>.</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>
            <t>The attacker has access to a symmetric encryption key</t>
          </li>
          <li>
            <t>The attacker has access to a application ratchet secret</t>
          </li>
          <li>
            <t>The attacker has access to the group secrets for one group</t>
          </li>
          <li>
            <t>The attacker has access to a signature oracle for any group</t>
          </li>
          <li>
            <t>The attacker has access to the signature key for one group</t>
          </li>
          <li>
            <t>The attacker has access to all secrets of a user for all groups (full state
compromise)</t>
          </li>
        </ul>
        <section anchor="symmetric-key-compromise">
          <name>Compromise of Symmetric Keying Material</name>
          <t>As described above, each MLS epoch creates a new Group Secret.</t>
          <t>These group secrets are then used to create a per-sender Ratchet Secret, which
in turn is used to create a per-sender with additional data (AEAD) <xref target="RFC5116"/>
key that is then used to encrypt MLS Plaintext messages.  Each time a message is
sent, the Ratchet Secret is used to create a new Ratchet Secret and a new
corresponding AEAD key.  Because of the properties of the key derivation
function, it is not possible to compute a Ratchet Secret from its corresponding
AEAD key or compute Ratchet Secret n-1 from Ratchet Secret n.</t>
          <t>Below, we consider the compromise of each of these pieces of keying material in
turn, in ascending order of severity.  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>
          <section anchor="compromise-of-aead-keys">
            <name>Compromise of AEAD Keys</name>
            <t>In some circumstances, adversaries may have access to specific AEAD keys and
nonces which protect an Application or a Group Operation message. Compromise of
these keys allows the attacker to decrypt the specific message encrypted with
that key but no other; because the AEAD keys are derived from the Ratchet
Secret, it cannot generate the next Ratchet Secret and hence not the next AEAD
key.</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.  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 some member of the group sent the message.</t>
            <t>Compromise of the AEAD keys allows the attacker to send an encrypted message
using that key, but cannot send a message to a group which appears to be from
any valid client since they cannot forge the signature. This applies to all the
forms of symmetric key compromise described in <xref target="symmetric-key-compromise"/>.</t>
          </section>
          <section anchor="compromise-of-ratchet-secret-material">
            <name>Compromise of Ratchet Secret material</name>
            <t>When a Ratchet Secret is compromised, the adversary can compute both the current
AEAD keys for a given sender as well as any future keys for that sender in this
epoch. Thus, it can decrypt current and future messages by the corresponding
sender. However, because it does not have previous Ratchet Secrets, it cannot
decrypt past messages as long as those secrets and keys have been deleted.</t>
            <t>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.  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>
          </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>An adversary who gains access to a set of Group secrets--as when a member of the
group is compromised--is significantly more powerful. In this section, we
consider the case where the signature keys are not compromised, which can occur
if the attacker 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
Ratchet Secrets for the epoch and their corresponding AEAD encryption keys and
thus 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 engage in the protocol itself 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>
        <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>If an active adversary has compromised an MLS client and can sign messages, 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>
        </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 recovers from compromise and performs an honest Commit, both
secrecy and authentication of future messages can be recovered as long as the
attacker doesn't otherwise get access to the key. Because the adversary doesn't
have the signing key, 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 the compromised endpoint needs to refresh its credentials and invalidate
the old credentials before the attacker will be unable to authenticate messages.</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>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong> When the credential type supports revocation, the users of
a group should check for revoked keys.</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 and ciphertext messages as soon
as practical after encryption or decryption.</t>
            </li>
          </ul>
          <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 client's encryption private keys.</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>
                <t>The application connects to the Authentication Service to generate or validate
a new credential before distributing it.</t>
              </li>
              <li>
                <t>The application fetches credentials at the Delivery Service prior to creating
a messaging group (one-to-one or more than two clients).</t>
              </li>
              <li>
                <t>The application fetches service provider information or messages on the
Delivery Service.</t>
              </li>
              <li>
                <t>The application sends service provider information or messages to the Delivery
Service.</t>
              </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 MASQUE
<xref target="I-D.schinazi-masque-proxy"/>, 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 anchor="storage-of-metadata-and-ecryption-at-rest-on-the-servers">
            <name>Storage of Metadata and Ecryption at rest on the Servers</name>
            <t>In the case where private data or metadata has to be persisted on the servers
for functionality (mappings between identities and push tokens, group
metadata...), it should be stored encrypted at rest and only decrypted upon need
during the execution. Honest Service Providers can rely on such encryption at
rest mechanism to be able to prevent access to the data when not using it.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Store cryptographic material used for server-side
decryption of sensitive meta-data on the clients and only send it when needed.
The server can use the secret to open and update encrypted data containers
after which they can delete these keys until the next time they need it, in
which case those can be provided by the client.</t>
              </li>
            </ul>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Rely on group secrets exported from the MLS session for
server-side encryption at rest and update the key after each removal from the
group. Rotate those keys on a regular basis otherwise.</t>
              </li>
            </ul>
          </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>
            <t>Applications can also consider anonymous systems for server fanout (for
example <xref target="Loopix"/>).</t>
          </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>
              <t>The attacker can link an identity to a credential</t>
            </li>
            <li>
              <t>The attacker can generate new credentials</t>
            </li>
            <li>
              <t>The attacker can sign new credentials</t>
            </li>
            <li>
              <t>The attacker can publish or distribute credentials</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>
          <t>Note that historically some systems generate signature keys on the
Authentication Service and distribute the private keys to clients along with
their credential. This is a dangerous practice because it allows the AS or an
attacker who has compromised the AS to silently impersonate the client.</t>
          <section anchor="authentication-compromise-ghost-users-and-impersonations">
            <name>Authentication compromise: Ghost users and impersonations</name>
            <t>One important property 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>This guarantee applies to the the cryptographic identities of the members.
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.</t>
            <t>In contrast, when MLS clients use the <tt>basic</tt> Credential type, then some other
mechanism must be used to verify identities. For instance the Authentication
Service could operate some sort of directory server to provide keys, or users
could verify keys via an out-of-band mechanism.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong> Select the MLS Credential type with the strongest security
which is supported by all target members of an MLS group.</t>
              </li>
            </ul>
            <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>
            <t>If the AS is compromised, it could validate a (or generate a new) signature
keypair for an attacker. The attacker could then use this keypair to join a
group as if it were another of the user's clients.  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,
especially in large groups where the UI might not reflect all the changes back
to the users. If the application participates in a key transparency mechanism in
which it is possible to determine every key for a given user, then this then
this would allow for the detection of surreptitiously created false credentials.</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, the client should provide a log of state
of the device so that the user can examine it.</t>
              </li>
            </ul>
            <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>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>
            <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>
            <t>Some infrastructure keep 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> Ensure that the linking between public keys and identities
only happen in expected scenarios. Otherwise privilege a stronger separation.</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 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>
        <reference anchor="RFC9420">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
        <reference anchor="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="KT">
          <front>
            <title>Key Transparency Architecture</title>
            <author fullname="Brendan McMillion" initials="B." surname="McMillion">
         </author>
            <date day="18" month="January" year="2024"/>
            <abstract>
              <t>   This document defines the terminology and interaction patterns
   involved in the deployment of Key Transparency (KT) in a general
   secure group messaging infrastructure, and specifies the security
   properties that the protocol provides.  It also gives more general,
   non-prescriptive guidance on how to securely apply KT to a number of
   common applications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-keytrans-architecture-00"/>
        </reference>
        <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"/>
        </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="23" month="October" 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-03"/>
        </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="9" month="September" 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-03"/>
        </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>
        <reference anchor="I-D.schinazi-masque-proxy">
          <front>
            <title>The MASQUE Proxy</title>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="28" month="February" year="2024"/>
            <abstract>
              <t>   MASQUE (Multiplexed Application Substrate over QUIC Encryption) is a
   set of protocols and extensions to HTTP that allow proxying all kinds
   of Internet traffic over HTTP.  This document defines the concept of
   a "MASQUE Proxy", an Internet-accessible node that can relay client
   traffic in order to provide privacy guarantees.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schinazi-masque-proxy-02"/>
        </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:
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

-->

</rfc>
