<?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.16 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mls-architecture-09" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.0 -->
  <front>
    <title abbrev="MLS Architecture">The Messaging Layer Security (MLS) Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mls-architecture-09"/>
    <author initials="B." surname="Beurdouche" fullname="Benjamin Beurdouche">
      <organization>Inria &amp; Mozilla</organization>
      <address>
        <email>ietf@beurdouche.com</email>
      </address>
    </author>
    <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
      <organization>Mozilla</organization>
      <address>
        <email>ekr@rtfm.com</email>
      </address>
    </author>
    <author initials="E." surname="Omara" fullname="Emad Omara">
      <organization>Google</organization>
      <address>
        <email>emadomara@google.com</email>
      </address>
    </author>
    <author initials="S." surname="Inguva" fullname="Srinivas Inguva">
      <organization>Twitter</organization>
      <address>
        <email>singuva@twitter.com</email>
      </address>
    </author>
    <author initials="A." surname="Kwon" fullname="Albert Kwon">
      <organization>MIT</organization>
      <address>
        <email>kwonal@mit.edu</email>
      </address>
    </author>
    <author initials="A." surname="Duric" fullname="Alan Duric">
      <organization>Wire</organization>
      <address>
        <email>alan@wire.com</email>
      </address>
    </author>
    <date year="2022" month="August" day="19"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The Messaging Layer Security (MLS) protocol <xref target="I-D.ietf-mls-protocol"/>
specification has the role of defining a Group Key Agreement protocol, including
all the cryptographic operations and serialization/deserialization functions
necessary for scalable and secure group messaging.
The MLS protocol is meant to protect against eavesdropping, tampering, message
forgery, and provide further properties such as Forward Secrecy (FS) and
Post-Compromise Security (PCS) in the case of past or future device compromises.</t>
      <t>This document describes a general secure group messaging infrastructure and its
security goals.  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).</t>
      <t>The document also provides guidance for parts of the infrastructure that are not
standardized by the MLS Protocol document and left to the application or the
infrastructure architects to design.</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 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 requirement for instant messaging systems and is
commonly deployed in many such systems. 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, even when it reduces to only two users.</t>
    </section>
    <section anchor="general-setting">
      <name>General Setting</name>
      <t>Informally, a group is a set of users who possibly use multiple endpoint devices
to interact with the Service Provider (SP).  A group may be as small as two
members (the simple case of person to person messaging) or as large as
thousands.</t>
      <t>In order to communicate securely, users initially interact with services at
their disposal to establish the necessary values and credentials required for
encryption and authentication.</t>
      <t>The Service Provider presents two abstract functionalities that allow clients to
prepare for sending and receiving messages securely:</t>
      <ul spacing="normal">
        <li>An Authentication Service (AS) functionality which is responsible for
attesting to bindings between application-meaningful identifiers and the
public key material used for authentication in the MLS protocol. This
functionality must also be able to generate credentials that encode these
bindings and validate credentials provided by MLS clients.</li>
        <li>A Delivery Service (DS) functionality which can receive and distribute
messages between group members. In the case of group messaging, the delivery
service may also be responsible for acting as a "broadcaster" where the sender
sends a single message which is then forwarded to each recipient in the group
by the DS. The DS is also responsible for storing and delivering initial
public key material required by MLS clients in order to proceed with the group
secret key establishment that is part of the MLS protocol.</li>
      </ul>
      <t>For convenience, this document adopts the representation of these services being
standalone servers, however the MLS protocol design is made so that this is not
necessarily the case.  These services may reside on the same server or different
servers, they may be distributed between server and client components, and they
may even involve some action by users.  For example:</t>
      <ul spacing="normal">
        <li>Several secure messaging services today provide a centralized DS, and rely on
manual comparison of clients' public keys as the AS.</li>
        <li>MLS clients connected to a peer-to-peer network could instantiate a
decentralized DS by transmitting MLS messages over that network.</li>
        <li>In an MLS group using a 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 servers.</li>
      </ul>
      <t>It is important to note that the Authentication Service functionality 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.
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>
      <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>
      <t>According to this architecture design, a typical group messaging scenario might
look like this:</t>
      <ol spacing="normal" type="1"><li>Alice, Bob and Charlie create accounts with a service provider and obtain
credentials from the AS.</li>
        <li>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.</li>
        <li>When Alice wants to send a message to Bob and Charlie, she contacts the DS
and looks up their initial keying material.  She uses these keys to establish
a new set of keys which she can use to send encrypted messages to Bob and
Charlie. She then sends the encrypted message(s) to the DS, which forwards
them to the recipients.</li>
        <li>Bob and/or Charlie respond to Alice's message. In addition, they might choose
to update their key material which provides post-compromise security (see
<xref target="fs-and-pcs"/>). As a consequence of that change, the group secrets are
updated.</li>
      </ol>
      <t>Clients may wish to do the following:</t>
      <ul spacing="normal">
        <li>create a group by inviting a set of other clients;</li>
        <li>add one or more clients to an existing group;</li>
        <li>remove one or more members from an existing group;</li>
        <li>update their own key material</li>
        <li>join an existing group;</li>
        <li>leave a group;</li>
        <li>send a message to everyone in the group;</li>
        <li>receive a message from someone in the group.</li>
      </ul>
      <t>At the cryptographic level, clients (and by extension members in groups) have
equal permissions. For instance, any member can add or remove another client in
a group. This is in contrast to some designs in which there is a single group
controller who can modify the group. MLS is compatible with having group
administration restricted to certain users, but we assume that those
restrictions are enforced by the application layer.</t>
      <section anchor="group-members-and-clients">
        <name>Group Members and Clients</name>
        <t>While informally, a group can be considered to be a set of users possibly using
multiple endpoint devices to interact with the Service Provider, this definition
is too simplistic.</t>
        <t>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. Ownership of a client by a user is determined by the fact that the user has
knowledge of the associated secret values. When a client is part of a Group, it
is called a Member.
In some messaging systems, clients belonging to the same user must all share the
same signature key pair, but MLS does not assume this.</t>
        <t>Users will often use multiple devices, e.g., a phone as well as a laptop.
Different devices may be represented as different clients, with independent
cryptographic state.
The formal definition of a Group in MLS is the set of clients that have
knowledge of the shared group secret established in the group key establishment
phase of the protocol and have contributed to it.
Until a Member 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 Member is a member of the group.
Different devices are represented as different clients with independent
cryptographic state.</t>
      </section>
    </section>
    <section anchor="authentication-service">
      <name>Authentication Service</name>
      <t>The Authentication Service (AS) has to provide three functionalities:</t>
      <ol spacing="normal" type="1"><li>Issue credentials to clients that attest to bindings between identities and
signature key pairs</li>
        <li>Enable a client to verify that a credential presented by another client is
valid with respect to a reference identifier</li>
        <li>Enable a group member to verify that a credential represents the same client
as another credential</li>
      </ol>
      <t>A member with a valid credential authenticates its MLS messages by signing them
with the private key corresponding to the public key bound by its credential.</t>
      <t>The AS is considered an abstract layer by the MLS specification and part of this
service could be, for instance, running on the members' devices, while another
part is a separate entity entirely.  The following examples illustrate the
breadth of this concept:</t>
      <ul spacing="normal">
        <li>A PKI could be used as an AS <xref target="RFC5280"/>.  The issuance function would be
provided by the certificate authorities in the PKI, and the verification
function would correspond to certificate verification by clients.</li>
        <li>Several current messaging applications rely on users verifying each others'
key fingerprints for authentication.  In this scenario, the issuance function
is simply the generation of a key pair (i.e., a credential is just an
identifier and public key, with no information to assist in verification).
The verification function is the application functionality that enables users
to verify keys.</li>
        <li>In a system based on Key Transparency (KT) <xref target="KeyTransparency"/>, 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 to
their identity.</li>
      </ul>
      <t>By the nature of its roles in MLS authentication, the AS is invested with a
large amount of trust and the compromise of one of its functionalities could
allow an adversary to, among other things, impersonate group members. We discuss
security considerations regarding the compromise of the different AS
functionalities in detail in <xref target="as-compromise"/>.</t>
      <t>The association between members' identities and signature keys is fairly
flexible in MLS.  As noted above, there is no requirement that all clients
belonging to a given user use the same key pair (in fact, such key reuse is
forbidden to ensure clients have independent cryptographic state).  A member can
also rotate the signature key they use within a group.  These mechanisms allow
clients to use different signature keys in different contexts and at different
points in time, providing unlinkability and post-compromise security benefits.
Some security trade-offs related to this flexibility are discussed in the
security considerations.</t>
      <t>In many applications, there are multiple MLS clients that represent a single
entity, for example a human user with a mobile and desktop version of an
application. Often the same set of clients is represented in exactly the same
list of groups. In applications where this is the intended situation, other
clients can check that a user is consistently represented by the same set of
clients.  This would make it more difficult for a malicious AS to issue fake
credentials for a particular user because clients would expect the credential to
appear in all groups of which the user is a member. If a client credential does
not appear in all groups after some relatively short period of time, clients
have an indication that the credential might have been created without the
user's knowledge. Due to the asynchronous nature of MLS, however, there may be
transient inconsistencies in a user's client set, so correlating users' clients
across groups is more of a detection mechanism than a prevention mechanism.</t>
    </section>
    <section anchor="delivery-service">
      <name>Delivery Service</name>
      <t>The Delivery Service (DS) is expected to play multiple roles in the Service
Provider architecture:</t>
      <ul spacing="normal">
        <li>Acting as a directory service providing the initial keying material for
clients to use.  This allows a client to establish a shared key and send
encrypted messages to other clients even if they're offline.</li>
        <li>Routing MLS messages among clients.</li>
      </ul>
      <t>Depending on the level of trust given by the group to the Delivery Service, the
functional and privacy guarantees provided by MLS may differ but the
authentication and confidentiality guarantees remain the same.</t>
      <t>Unlike the Authentication Service which is trusted for authentication and
secrecy, the Delivery Service is completely untrusted regarding this
property. While privacy of group membership might be a problem in the case of a
Delivery Service server fanout, the Delivery Service can be considered as an
active, adaptive network attacker for the purpose of security analysis.</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. Clients then continue adding and removing
keying material on a regular basis. This key material, called a KeyPackage,
advertises the functional abilities of the client such as supported protocol
versions, supported extensions, and the following cryptographic information:</t>
        <ul spacing="normal">
          <li>A credential from the Authentication Service attesting to the binding between
the identity and the client's signature key.</li>
          <li>The client's asymmetric encryption public key.</li>
        </ul>
        <t>All the parameters in the KeyPackage are signed with the signature private key
corresponding to the credential.</t>
        <t>The Delivery Service is responsible for ensuring that each KeyPackage is only
served once, with the possible exception of a "last resort" KeyPackage that's
specially designated by the client to be used multiple times. As noted in the
previous section, users may own multiple clients, each with their own keying
material. Clients may also want to support multiple protocol versions and
ciphersuites. As such, there may be multiple entries stored by each user for a
mix of protocol versions, ciphersuites, and end-user devices. The Delivery
Service should provide the minimum number of KeyPackages necessary to satisfy a
request.</t>
        <t>When a client wishes to establish a group, it first contacts the Delivery
Service to request a KeyPackage for each other client, authenticates the
KeyPackages using the signature keys, and then uses those to form the group.</t>
      </section>
      <section anchor="delivery-guarantees">
        <name>Delivery of Messages</name>
        <t>The main responsibility of the Delivery Service is to ensure delivery of
messages. Some MLS messages need only be delivered to specific clients (e.g., a
Welcome message initializing a new member's state), while others need to be
delivered to all the members of a group.  The Delivery Service may enable the
latter delivery pattern via unicast channels (sometimes known as "client
fanout"), broadcast channels ("server fanout"), or a mix of both.</t>
        <t>For the most part, MLS does not require the Delivery Service to deliver messages
in any particular order. Applications can set policies that control their
tolerance for out-of-order messages (see <xref target="operational-requirements"/>), and
messages that arrive significantly out-of-order can be dropped without otherwise
affecting the protocol. There are two exceptions to this. First, Proposal
messages should all arrive before the Commit that references them.  Second,
because an MLS group has a linear history of epochs, the members of the group
must agree on the order in which changes are applied.  Concretely, the group
must agree on a single MLS Commit message that ends each epoch and begins the
next one.</t>
        <t>In practice, there's a realistic risk of two members generating Commit messages
at the same time, based on the same counter, and both attempting to send them to
the group at the same time. The extent to which this is a problem, and the
appropriate solution, depends on the design of the Delivery Service. Per the CAP
theorem <xref target="CAPBR"/>, there are two general classes of distributed system that the
Delivery Service might fall into:</t>
        <ul spacing="normal">
          <li>Consistent and Partition-tolerant, or Strongly Consistent, systems can provide
a globally consistent view of data but may stop working if there are network
issues;</li>
          <li>Available and Partition-tolerant, or Eventually Consistent, systems continue
working despite network issues but may return different views of data to
different users.</li>
        </ul>
        <t>Strategies for sequencing messages in strongly and eventually consistent systems
are described in the next two subsections.</t>
        <t>However, note that a malicious Delivery Service could also reorder messages or
provide an inconsistent view to different users. The protocol is designed such
that this only results in a group no longer being functional and the group
members possibly detecting this and requesting reinitialization.</t>
        <t>Other forms of Delivery Service misbehavior are still possible that are not easy
to detect. For instance, a Delivery Service can simply refuse to relay messages
to and from a given client. Without some sort of side information, other clients
cannot generally detect this form of Denial of Service (DoS) attack.</t>
        <section anchor="strongly-consistent">
          <name>Strongly Consistent</name>
          <t>With this approach, the Delivery Service ensures that some types of incoming
messages have a linear order and all members agree on that order.
The Delivery Service is trusted to break ties when two members send a Commit
message at the same time.</t>
          <t>As an example, there could be an "ordering server" Delivery Service that
broadcasts all messages received to all users and ensures that all clients see
handshake messages in the same order. Clients that send a Commit would then wait
to apply it until it's broadcast back to them by the Delivery Service, assuming
they don't receive another Commit first.</t>
          <t>The Delivery Service can rely on the <tt>epoch</tt> and <tt>content_type</tt> fields of an
MLSMessage for providing an order only to handshake messages, and possibly even
filter or reject redundant Commit messages proactively to prevent them from
being broadcast. Alternatively, the Delivery Service could simply apply an order
to all messages and rely on clients to ignore redundant Commits.</t>
        </section>
        <section anchor="eventually-consistent">
          <name>Eventually Consistent</name>
          <t>With this approach, the Delivery Service is built in a way that may be
significantly more available or performant than a strongly consistent system,
but offers weaker consistency guarantees. Messages may arrive to different
clients in different orders and with varying amounts of latency, which means
clients are responsible for reconciliation.</t>
          <t>This type of Delivery Service might arise, for example, when group members are
sending each message to each other member individually, or when a distributed
peer-to-peer network is used to broadcast messages.</t>
          <t>Upon receiving a Commit from the Delivery Service, clients can either:</t>
          <ol spacing="normal" type="1"><li>Pause sending new messages for a short amount of time to account for a
reasonable degree of network latency and see if any other Commits are
received for the same epoch. If multiple Commits are received, the clients
can use a deterministic tie-breaking policy to decide which to accept, and
then resume sending messages as normal.</li>
            <li>Accept the Commit immediately but keep a copy of the previous group state for
a short period of time. If another Commit for a past epoch is received,
clients use a deterministic tie-breaking policy to decide if they should
continue using the Commit they originally accepted or revert and use the
later one. Note that any copies of previous or forked group states MUST be
deleted within a reasonable amount of time to ensure the protocol provides
forward-secrecy.</li>
          </ol>
          <t>In the event of a network partition, a subset of members may be isolated from
the rest of the group long enough that the mechanisms above no longer work. This
can only be solved by sending a ReInit proposal to both groups, possibly with an
external sender type, and recreating the group to contain all members again.</t>
          <t>If the Commit references an unknown proposal, group members may need to solicit
the Delivery Service or other group members individually for the contents of the
proposal.</t>
        </section>
      </section>
    </section>
    <section anchor="functional-requirements">
      <name>Functional Requirements</name>
      <t>MLS is designed as a large-scale group messaging protocol and hence aims to
provide both performance and safety to its users.  Messaging systems that
implement MLS provide support for conversations involving two or more members,
and aim to scale to groups with tens of thousands of members, typically
including many users using multiple devices.</t>
      <section anchor="membership-changes">
        <name>Membership Changes</name>
        <t>MLS aims to provide agreement on group membership, meaning that all group
members have agreed on the list of current group members.</t>
        <t>Some applications may wish to enforce ACLs to limit addition or removal of group
members, to privileged clients or users. Others may wish to require
authorization from the current group members or a subset thereof.  Such policies
can be implemented at the application layer, on top of MLS. Regardless, MLS does
not allow for or support addition or removal of group members without informing
all other members.</t>
        <t>Membership of an MLS group is managed at the level of individual clients.  In
most cases, a client corresponds to a specific device used by a user. If a user
has multiple devices, the user will be represented in a group by multiple
clients.  If an application wishes to implement operations at the level of
users, it is up to the application to track which clients belong to a given user
and ensure that they are added / removed consistently.</t>
        <t>MLS provides two mechanisms for changing the membership of a group.  The primary
mechanism is for an authorized member of the group to send a Commit that adds or
removes other members.  The second mechanism is an "external join": A member of
the group publishes certain information about the group, which a new member can
use to construct an "external" Commit message that adds the new member to the
group.  (There is no similarly unilateral way for a member to leave the group;
they must be removed by a remaining member.)</t>
        <t>With both mechanisms, changes to the membership are initiated from inside the
group.  When members perform changes directly, this is clearly the case.
External joins are authorized indirectly, in the sense that a member publishing
a GroupInfo object authorizes anyone to join who has access to the GroupInfo
object.  External joins do not allow for more granular authorization checks to
be done before the new member is added to the group, so if an application wishes
to both allow external joins and enforce such checks, then the application will
need to do such checks when a member joins, and remove them if checks fail.</t>
        <t>Application setup may also determine other criteria for membership validity. For
example, per-device signature keys can be signed by an identity key recognized
by other participants. If a certificate chain is used to sign off on device
signature keys, then revocation by the owner adds an alternative flag to prompt
membership removal.</t>
        <t>An MLS group's secrets change on every change of membership, so each client only
has access to the secrets used by the group while they are a member.  Messages
sent before a client joins or after they are removed are protected with keys
that are not accessible to the client.  Compromise of a member removed from a
group does not affect the security of messages sent after their removal.
Messages sent during the client's membership are also secure as long as the
client has properly implemented the MLS deletion schedule.</t>
      </section>
      <section anchor="parallel-groups">
        <name>Parallel Groups</name>
        <t>Any user or client may have membership in several groups simultaneously.  The
set of members of any group may or may not form a subset of the members of
another group. MLS guarantees that the FS and PCS goals within a given group are
maintained and not weakened by user membership in multiple groups. However,
actions in other groups likewise do not strengthen the FS and PCS guarantees
within a given group, e.g. key updates within a given group following a device
compromise does not provide PCS healing in other groups; each group must be
updated separately to achieve internal goals.
This also applies to future groups that a member has yet to join, that are
likewise unaffected by updates performed in current groups.</t>
        <t>Applications may strengthen connectivity among parallel groups by requiring
periodic key updates from a user across all groups in which they have
membership.</t>
        <t>Applications may use the PSK mechanism to link healing properties among parallel
groups.  For example, suppose a common member M of two groups A and B has
performed a key update in group A but not in group B.  The key update provides
PCS with regard to M in group A.  If a PSK is exported from group A and injected
into group B, then some of these PCS properties carry over to group B, since the
PSK and secrets derived from it are only known to the new, updated version of M,
not to the old, possibly compromised version of M.</t>
      </section>
      <section anchor="asynchronous-usage">
        <name>Asynchronous Usage</name>
        <t>No operation in MLS requires two distinct clients or members to be online
simultaneously. In particular, members participating in conversations protected
using MLS can update the group's keys, add or remove new members, and send
messages without waiting for another user's reply.</t>
        <t>Messaging systems that implement MLS have to provide a transport layer for
delivering messages asynchronously and reliably.</t>
      </section>
      <section anchor="access-control">
        <name>Access Control</name>
        <t>The MLS protocol allows each member of the messaging group to perform operations
equally. This is because all clients within a group (members) have access to the
shared cryptographic material. However every service/infrastructure has control
over policies applied to its own clients. Applications managing MLS clients can
be configured to allow for specific group operations. On the one hand, an
application could decide that a group administrator will be the only member to
perform add and remove operations. On the other hand, in many settings such as
open discussion forums, joining can be allowed for anyone.</t>
        <t>The MLS protocol can, in certain modes, exchange unencrypted group operation
messages. This flexibility is to allow services to perform access control tasks
on behalf of the group.</t>
        <t>While the Application messages will always be encrypted, having the handshake
messages in plaintext has inconveniences in terms of privacy as someone could
collect the signatures on the handshake messages and use them for tracking.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong>
Prefer using encrypted group operation messages to avoid privacy issues
related to non-encrypted signatures.</t>
          </li>
        </ul>
        <t>Note that in the default case of encrypted handshake messages, any access
control policies will be applied at the client, so the application must ensure
that the access control policies are consistent across all clients to make sure
that they remain in sync.
If two different policies were applied, the clients might not accept or reject a
group operation and end-up in different cryptographic states, breaking their
ability to communicate.</t>
        <ul empty="true">
          <li>
            <t><strong>RECOMMENDATION:</strong>
Avoid using inconsistent access control policies in the case of encrypted
group operations.</t>
          </li>
        </ul>
        <t>MLS allows actors outside the group to influence the group in two ways: External
signers can submit proposals for changes to the group, and new joiners can use
an external join to add themselves to the group.  The <tt>external_senders</tt>
extension ensures that all members agree on which signers are allowed to send
proposals, but any other policies must be assured to be consistent as above.</t>
        <ul empty="true">
          <li>
            <t>** RECOMMENDATION:**
Have an explicit group policy setting the conditions under which external
joins are allowed.</t>
          </li>
        </ul>
      </section>
      <section anchor="recovery-after-state-loss">
        <name>Recovery After State Loss</name>
        <t>Group members whose local MLS state is lost or corrupted can reinitialize their
state by re-joining the group as a new member and removing the member
representing their earlier state.  An application can require that a client
performing such a reinitialization prove its prior membership with a PSK.</t>
        <t>There are a few practical challenges to this approach.  For example, the
application will need to ensure that all members have the required PSK,
including any new members that have joined the group since the epoch in which
the PSK was issued.</t>
        <t>Reinitializing in this way does not provide the member with access to group
messages from during the state loss window, but enables proof of prior
membership in the group. Applications may choose various configurations for
providing lost messages to valid group members that are able to prove prior
membership.</t>
      </section>
      <section anchor="support-for-multiple-devices">
        <name>Support for Multiple Devices</name>
        <t>It is typically expected for users within a group to own various devices. A new
device can be added to a group and be considered as a new client by the
protocol. This client will not gain access to the history even if it is owned by
someone who owns another member of the group.
Restoring history is typically not allowed at the protocol level but
applications can elect to provide such a mechanism outside of MLS.  Such
mechanisms, if used, may reduce the FS and PCS guarantees provided by MLS.</t>
      </section>
      <section anchor="extensibility">
        <name>Extensibility</name>
        <t>The MLS protocol provides several extension points where additional information
can be provided.  Extensions to KeyPackages allow clients to disclose additional
information about their capabilities.  Groups can also have extension data
associated with them, and the group agreement properties of MLS will confirm
that all members of the group agree on the content of these extensions.</t>
      </section>
      <section anchor="application-data-framing-and-negotiation">
        <name>Application Data Framing and Negotiation</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 negotiate 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 target="I-D.mahy-mls-content-neg"/>,
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, and infrastructure
functionalities.</t>
      </section>
      <section anchor="compatibility-with-future-versions-of-mls">
        <name>Compatibility with Future Versions of MLS</name>
        <t>It is important that multiple versions of MLS be able to coexist in the
future. Thus, MLS offers a version negotiation mechanism; this mechanism
prevents version downgrade attacks where an attacker would actively rewrite
messages with a lower protocol version than the ones originally offered by the
endpoints. When multiple versions of MLS are available, the negotiation protocol
guarantees that the version agreed upon will be the highest version supported in
common by the group.</t>
        <t>In MLS 1.0, the creator of the group is responsible for selecting the best
ciphersuite supported across clients. Each client is able to verify availability
of protocol version, ciphersuites and extensions at all times once he has at
least received the first group operation message.</t>
        <t>Each member of an MLS group advertises the protocol functionality they support.
These capability advertisements can be updated over time, e.g., if client
software is updated while the client is a member of a group. Thus, in addition
to preventing downgrade attacks, the members of a group can also observe when it
is safe to upgrade to a new ciphersuite or protocol version.</t>
      </section>
    </section>
    <section anchor="operational-requirements">
      <name>Operational Requirements</name>
      <t>MLS is a security layer that needs to be integrated with an application. A
fully-functional deployment of MLS will have to make a number of decisions about
how MLS is configured and operated.  Deployments that wish to interoperate will
need to make compatible decisions. This section lists all of the dependencies of
an MLS deployment that are external to the protocol specification, but would
still need to be aligned within a given MLS deployment, or for two deployments
to potentially interoperate.</t>
      <t>The protocol has a built-in ability to negotiate protocol versions,
ciphersuites, extensions, credential types, and additional proposal types. For
two deployments to interoperate, they must have overlapping support in each of
these categories. A <tt>required_capabilities</tt> extension can help maintain
interoperability with a wider set of clients by ensuring that certain
functionality continues to be supported by a group, even if the clients in the
group aren't currently relying on it.</t>
      <t>MLS relies on the following network services. These network services would need
to be compatible in order for two different deployments based on them to
interoperate.</t>
      <ul spacing="normal">
        <li>
          <t>An <strong>Authentication Service</strong>, described fully in <xref target="authentication-service"/>,
defines the types of credentials which may be used in a deployment and
provides methods for:
          </t>
          <ol spacing="normal" type="1"><li>Issuing new credentials,</li>
            <li>Validating a credential against a reference identifier, and</li>
            <li>Validating whether or not two credentials represent the same client.</li>
          </ol>
        </li>
        <li>
          <t>A <strong>Delivery Service</strong>, described fully in <xref target="delivery-service"/>, provides
methods for:
          </t>
          <ol spacing="normal" type="1"><li>Delivering messages sent to a group to all members in the group.</li>
            <li>Delivering Welcome messages to new members of a group.</li>
            <li>Downloading KeyPackages for specific clients, and uploading new KeyPackages
for a user's own clients.</li>
          </ol>
        </li>
        <li>
          <t>Additional services may or may not be required depending on the application
design:
          </t>
          <ul spacing="normal">
            <li>If assisted joining is desired (meaning that the ratchet tree is not
provided in Welcome messages), there must be a method to download the
ratchet tree corresponding to a group.</li>
            <li>If assisted joining is desired and the Delivery Service is not able to
compute the ratchet tree itself (because some proposals or commits are sent
encrypted), there must be a method for group members to publish the updated
ratchet tree after each commit.</li>
            <li>If external joiners are allowed, there must be a method to publish a
serialized <tt>GroupInfo</tt> object (with an <tt>external_pub</tt> extension) that
corresponds to a specific group and epoch, and keep that object in sync with
the state of the group.</li>
            <li>If an application chooses not to allow assisted or external joining, it may
instead provide a method for external users to solicit group members (or a
designated service) to add them to a group.</li>
            <li>If the application uses external PSKs, or uses resumption PSKs that all
members of a group may not have access to, there must be a method for
distributing these PSKs to group members.</li>
            <li>If an application wishes to detect and possibly discipline members that send
malformed commits with the intention of corrupting a group's state, there
must be a method for reporting and validating malformed commits.</li>
          </ul>
        </li>
      </ul>
      <t>MLS requires the following parameters to be defined, which must be the same for
two implementations to interoperate:</t>
      <ul spacing="normal">
        <li>The maximum total lifetime that is acceptable for a KeyPackage.</li>
        <li>How long to store the resumption secret for past epochs of a group.</li>
        <li>
          <t>The degree of tolerance that's allowed for out-of-order message delivery:
          </t>
          <ul spacing="normal">
            <li>How long to keep unused nonce and key pairs for a sender</li>
            <li>A maximum number of unused key pairs to keep.</li>
            <li>A maximum number of steps that clients will move a secret tree ratchet
forward in response to a single message before rejecting it.</li>
            <li>Whether to buffer messages that aren't able to be understood yet due to
other messages not arriving first, and if so, how many and for how long. For
example, Commit messages that arrive before a proposal they reference, or
application messages that arrive before the Commit starting an epoch.</li>
          </ul>
        </li>
      </ul>
      <t>MLS provides the following locations where an application may store arbitrary
data. The format and intention of any data in these locations must align for two
deployments to interoperate:</t>
      <ul spacing="normal">
        <li>Application data, sent as the payload of an encrypted message.</li>
        <li>Additional authenticated data, sent unencrypted in an otherwise encrypted
message.</li>
        <li>Group IDs, as decided by group creators and used to uniquely identify a group.</li>
        <li>The <tt>application_id</tt> extension of a LeafNode.</li>
      </ul>
      <t>MLS requires the following policies to be defined, which restrict the set of
acceptable behavior in a group. These policies must be consistent between
deployments for them to interoperate:</t>
      <ul spacing="normal">
        <li>A policy on when to send proposals and commits in plaintext instead of
encrypted.</li>
        <li>
          <t>A policy for which proposals are valid to have in a commit, including but not
limited to:
          </t>
          <ul spacing="normal">
            <li>When a member is allowed to add or remove other members of the group.</li>
            <li>When, and under what circumstances, a reinitialization proposal is allowed.</li>
            <li>When proposals from external senders are allowed.</li>
            <li>When external joiners are allowed.</li>
          </ul>
        </li>
        <li>A policy for when two credentials represent the same client. Note that many
credentials may be issued authenticating the same identity but for different
signature keys, because each credential corresponds to a different device
(client) owned by the same application user. However, one device may control
many signature keys but should still only be considered a single client.</li>
        <li>A policy on how long to allow a member to stay in a group without updating its
leaf keys before removing them.</li>
      </ul>
      <t>Finally, there are some additional application-defined behaviors that are
partially an individual application's decision but may overlap with
interoperability:</t>
      <ul spacing="normal">
        <li>If there's any policy on how or when to pad messages.</li>
        <li>If there is any policy for when to send a reinitialization proposal.</li>
        <li>How often clients should update their leaf keys.</li>
        <li>Whether to prefer sending full commits or partial/empty commits.</li>
        <li>Whether there should be a <tt>required_capabilities</tt> extension in groups.</li>
      </ul>
    </section>
    <section anchor="security-and-privacy-considerations">
      <name>Security and Privacy Considerations</name>
      <t>MLS adopts the Internet threat model <xref target="RFC3552"/> and therefore assumes that the
attacker has complete control of the network. It is intended to provide the
security services described in the face of such attackers.</t>
      <ul spacing="normal">
        <li>The attacker can monitor the entire network.</li>
        <li>The attacker can read unprotected messages.</li>
        <li>The attacker can generate, inject and delete any message in the unprotected
transport layer.</li>
      </ul>
      <t>In addition, these guarantees are intended to degrade gracefully in the presence
of compromise of the transport security links as well as of both clients and
elements of the messaging system, as described in the remainder of this section.</t>
      <t>Generally, MLS is designed under the assumption that the transport layer is
present to protect metadata and privacy in general, while the MLS protocol is
providing stronger guarantees such as confidentiality, integrity and
authentication guarantees. Stronger properties such as deniability can also be
achieved in specific architecture designs.</t>
      <section anchor="assumptions-on-transport-security-links">
        <name>Assumptions on Transport Security Links</name>
        <t>Any secure channel can be used as a transport layer to protect MLS messages such
as QUIC, TLS, WireGuard or TOR. However, the MLS protocol is designed to
consider the following threat-model:</t>
        <ul spacing="normal">
          <li>The attacker can read, write, and delete arbitrary messages inside the secure
transport channel.</li>
        </ul>
        <t>This departs from most threat models where we consider that the secure channel
used for transport always provides secrecy. The reason for this consideration is
that in the group setting, active malicious insiders or adversarial services are
to be considered.</t>
        <section anchor="metadata-protection-for-unencrypted-group-operations">
          <name>Metadata Protection for Unencrypted Group Operations</name>
          <t>The main use of the secure transport layer for MLS is to protect the already
limited amount of metadata. Very little information is contained in the
unencrypted header of the MLS protocol message format for group operation
messages, and application messages are always encrypted in MLS.</t>
          <t>MLS avoids needing to send the full list of recipients to the server for
dispatching messages because that list is potentially extremely large in
MLS. Therefore, the metadata typically consists of a pseudo-random Group
Identifier (GID), a numerical value to determine the epoch of the group (the
number of changes that have been made to the group), and another numerical value
referring to the specific key needed to decrypt the ciphertext content.</t>
          <t>The MLS protocol provides an authenticated "Additional Authenticated Data" field
for applications to make data available outside the MLSCiphertext.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong>
Use the "Additional Authenticated Data" field of the MLSCiphertext message
instead of using other unauthenticated means of sending metadata throughout
the infrastructure. If the data is private, the infrastructure should use
encrypted Application messages instead.</t>
            </li>
          </ul>
          <t>Even though some of this metadata information does not consist of secret
payloads, 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>
          <t>More importantly, there is one specific case where having no secure channel to
exchange the MLS messages can have a serious impact on privacy. In the case of
unencrypted group operation messages, observing the signatures of the group
operation messages may lead an adversary to extract information about the group
memberships.</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>
Anonymous credentials can be used in order to help DoS attacks prevention, in
a privacy preserving manner. Note that the privacy of these mechanisms has to
be adjusted in accordance with the privacy expected from the secure transport
links. (See more discussion further down.)</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 reading or
writing messages.  MLS also provides a few tools for detecting message
suppression, with the caveat that message suppression cannot always be
distinguished from transport failure.</t>
          <t>Each encrypted MLS message carries a "generation" number which is a per-sender
incrementing counter.  If a group member observes a gap in the generation
sequence for a sender, then they know that they have missed a message from that
sender.  MLS also provides a facility for group members to send authenticated
acknowledgments of application messages received within a group.</t>
          <t>As discussed in <xref target="delivery-service"/>, the Delivery Service is trusted to select
the single Commit message that is applied in each epoch from among the ones sent
by group members.  Since only one Commit per epoch is meaningful, it's not
useful for the DS to transmit multiple Commits to clients.  The risk remains
that the DS will use the ability maliciously.</t>
          <t>While it is difficult or impossible to prevent a network adversary from
suppressing payloads in transit, in certain infrastructures such as banks or
governments settings, unidirectional transports can be used and be enforced via
electronic or physical devices such as diodes. This can lead to payload
corruption which does not affect the security or privacy properties of the MLS
protocol but does affect the reliability of the service. In that case specific
measures can be taken to ensure the appropriate level of redundancy and quality
of service for MLS.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong>
If unidirectional transport is used for the secure transport channel, prefer
using a protocol which provides Forward Error Correction.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="intended-security-guarantees">
        <name>Intended Security Guarantees</name>
        <t>MLS aims to provide a number of security guarantees, covering authentication, as
well as confidentiality guarantees to different degrees in different scenarios.</t>
        <section anchor="message-secrecy-authentication">
          <name>Message Secrecy and Authentication</name>
          <t>MLS enforces the encryption of application messages and thus generally
guarantees authentication and confidentiality of application messages sent in a
group.</t>
          <t>In particular, this means that only other members of a given group can decrypt
the payload of a given application message, which includes information about the
sender of the message.</t>
          <t>Similarly, group members receiving a message from another group member can
authenticate that group member as the sender of the message and verify the
message's integrity.</t>
          <t>Message content can be deniable if the signature keys are exchanged over a
deniable channel prior to signing messages.</t>
          <t>Depending on the group settings, handshake messages can be encrypted as well. If
that is the case, the same security guarantees apply.</t>
          <t>MLS optionally allows the addition of padding to messages, mitigating the amount
of information leaked about the length of the plaintext to an observer on the
network.</t>
        </section>
        <section anchor="fs-and-pcs">
          <name>Forward and Post-Compromise Security</name>
          <t>MLS provides additional protection regarding secrecy of past messages and future
messages. These cryptographic security properties are Forward Secrecy (FS) and
Post-Compromise Security (PCS).</t>
          <t>FS means that access to all encrypted traffic history combined with an 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 t but the
group member subsequently performs an update at some time t', then all MLS
guarantees apply to messages sent by the member after time t', and by other
members after they have processed the update. For example, if an attacker learns
all secrets known to Alice at time t, including both Alice's long-term secret
keys and all shared group keys, but Alice performs a key update at time t', then
the attacker is unable to violate any of the MLS security properties after the
updates have been processed.</t>
          <t>Both of these properties are satisfied even against compromised DSs and ASs.</t>
          <t>Confidentiality is mainly ensured on the client side.  Because Forward Secrecy
(FS) and Post-Compromise Security (PCS) rely on the active deletion and
replacement of keying material, any client which is persistently offline may
still be holding old keying material and thus be a threat to both FS and PCS if
it is later compromised.</t>
          <t>MLS partially defend against this problem by active member 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 a 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>
      <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 very strong position if
they have compromised an MLS client, there are still situations where security
guarantees can be recovered thanks to the PCS properties achieved by the MLS
protocol.</t>
        <t>In this section we will explore the consequences and recommendations regarding
the following compromise scenarios:</t>
        <ul spacing="normal">
          <li>The attacker has access to a specific symmetric encryption key</li>
          <li>The attacker has access to the group secrets for one group</li>
          <li>The attacker has access to a signature oracle for any group</li>
          <li>The attacker has access to the signature key for one group</li>
          <li>The attacker has access to all secrets of a user for all groups
(full state compromise)</li>
        </ul>
        <t>Recall that the MLS protocol provides chains of AEAD keys, per sender that are
generated from Group Secrets. These keys are used to protect MLS Plaintext
messages which can be Group Operation or Application messages. The Group
Operation messages offer an additional protection as the secret exchanged within
the TreeKEM group key agreement are public-key encrypted to subgroups with HPKE.</t>
        <section anchor="compromise-of-aead-key-material">
          <name>Compromise of AEAD key material</name>
          <t>In some circumstances, adversaries may have access to specific AEAD keys and
nonces which protect an Application or a Group Operation message. While this is
a very weak kind of compromise, it can be realistic in cases of implementation
vulnerabilities where only part of the memory leaks to the adversary.</t>
          <t>When an AEAD key is compromised, the adversary has access to a set of AEAD keys
for the same chain and the same epoch, hence can decrypt messages sent using
keys of this chain. An adversary cannot send a message to a group which appears
to be from any valid client since they cannot forge the signature.</t>
          <t>The MLS protocol will ensure that an adversary cannot compute any previous AEAD
keys for the same epoch, or any other epochs.  Because of its Forward Secrecy
guarantees, MLS will also retain secrecy of all other AEAD keys generated for
<em>other</em> MLS clients, outside this dedicated chain of AEAD keys and nonces, even
within the epoch of the compromise. However the MLS protocol does not provide
Post Compromise Secrecy for AEAD encryption within an epoch. This means that if
the AEAD key of a chain is compromised, the adversary can compute an arbitrary
number of subsequent AEAD keys for that chain.</t>
          <t>These guarantees are ensured by the structure of the MLS key schedule which
provides Forward Secrecy for these AEAD encryptions, across the messages within
the epoch and also across previous epochs.  Those chains are completely disjoint
and compromising keys across the chains would mean that some Group Secrets have
been compromised, which is not the case in this attack scenario (we explore
stronger compromise scenarios as part of the following sections).</t>
          <t>MLS provides Post-Compromise Secrecy against an active adaptive attacker across
epochs for AEAD encryption, which means that as soon as the epoch is changed, if
the attacker does not have access to more secret material they won't be able to
access any protected messages from future epochs.</t>
          <t>In the case of an Application message, an AEAD key compromise means that the
encrypted application message will be leaked as well as the signature over that
message. This means that the compromise has both confidentiality and privacy
implications on the future AEAD encryptions of that chain.
In the case of a Group Operation message, only the privacy is affected, as the
signature is revealed, because the secrets themselves are protected by HPKE
encryption.</t>
          <t>Note that under that compromise scenario, authentication is not affected in
neither 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 very weak. Successful decryption of an AEAD
encrypted message only guarantees that a member of the group sent the message.</t>
        </section>
        <section anchor="compromise-of-the-group-secrets-of-a-single-group-for-one-or-more-group-epochs">
          <name>Compromise of the Group Secrets of a single group for one or more group epochs</name>
          <t>The attack scenario considering an adversary gaining access to a set of Group
secrets is significantly stronger. This can typically be the case when a member
of the group is compromised.  For this scenario, we consider that the signature
keys are not compromised. This can be the case for instance if the adversary has
access to part of the memory containing the group secrets but not to the
signature keys which might be stored in a secure enclave.</t>
          <t>In this scenario, the adversary gains the ability to compute any number of AEAD
encryption keys for any AEAD chains and can encrypt and decrypt all messages for
the compromised epochs.</t>
          <t>If the adversary is passive, it is expected from the PCS properties of the MLS
protocol that, as soon as an honest Commit message is sent by the compromised
party, the next epochs will provide message secrecy.</t>
          <t>If the adversary is active, the adversary can follow the protocol and perform
updates on behalf of the compromised party with no ability to an honest group to
recover message secrecy. However, MLS provides PCS against active adaptive
attackers through its Remove group operation. This means that, as long as other
members of the group are honest, the protocol will guarantee message secrecy for
all messages exchanged in the epochs after the compromised party has been
removed.</t>
        </section>
        <section anchor="compromise-by-an-active-adversary-with-the-ability-to-sign-messages">
          <name>Compromise by an active adversary with the ability to sign messages</name>
          <t>Under such a scenario, where an active adversary has compromised an MLS client,
two different settings emerge. In the strongest compromise scenario, the
attacker has access to the signing key and can forge authenticated messages. In
a weaker, yet realistic scenario, the attacker has compromised a client but the
client signature keys are protected with dedicated hardware features which do
not allow direct access to the value of the private key and instead provide a
signature API.</t>
          <t>When considering an active adaptive attacker with access to a signature oracle,
the compromise scenario implies a significant impact on both the secrecy and
authentication guarantees of the protocol, especially if the attacker also has
access to the group secrets. In that case both secrecy and authentication are
broken.
The attacker can generate any message, for the current and future epochs until
an honest update from the compromised client happens.</t>
          <t>Note that under this compromise scenario, the attacker can perform all
operations which are available to an legitimate client even without access to
the actual value of the signature key.</t>
          <t>Without access to the group secrets, the adversary will not have the ability to
generate messages which look valid to other members of the group and to the
infrastructure as they need to have access to group secrets to compute the
encryption keys or the membership tag.</t>
        </section>
        <section anchor="compromise-of-the-authentication-with-access-to-a-signature-key">
          <name>Compromise of the authentication with access to a signature key</name>
          <t>The difference between having access to the value of the signature key and only
having access to a signing oracle is not about the ability of an active adaptive
network attacker to perform different operations during the time of the
compromise, the attacker can perform every operation available to a legitimate
client in both cases.</t>
          <t>There is a significant difference, however in terms of recovery after a
compromise.</t>
          <t>Because of the PCS guarantees provided by the MLS protocol, when a previously
compromised client performs an honest Commit which is not under the control of
the adversary, both secrecy and authentication of messages can be recovered in
the case where the attacker didn't get access to the key. Because the adversary
doesn't have the key and has lost the ability to sign messages, they cannot
authenticate messages on behalf of the compromised party, even if they still
have control over some group keys by colluding with other members of the group.</t>
          <t>This is in contrast with the case where the signature key is leaked.  In that
case PCS of the MLS protocol will eventually allow recovery of the
authentication of messages for future epochs but only after compromised parties
refresh their credentials securely.</t>
          <t>Beware that in both oracle and private key access, an active adaptive attacker,
can follow the protocol and request to update its own credential. This in turn
induces a signature key rotation which could provide the attacker with part or
the full value of the private key depending on the architecture of the service
provider.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong>
Signature private keys should be compartmentalized from other secrets and
preferably protected by an HSM or dedicated hardware features to allow
recovery of the authentication for future messages after a compromise.</t>
            </li>
          </ul>
        </section>
        <section anchor="security-consideration-in-the-context-of-a-full-state-compromise">
          <name>Security consideration in the context of a full state compromise</name>
          <t>In real-world compromise scenarios, it is often the case that adversaries target
specific devices to obtain parts of the memory or even the ability to execute
arbitrary code in the targeted device.</t>
          <t>Also, recall that in this setting, the application will often retain the
unencrypted messages. If so, the adversary does not have to break encryption at
all to access sent and received messages. Messages may also be sent by using the
application to instruct the protocol implementation.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong>
If messages are stored on the device, they should be protected using
encryption at rest, and the keys used should be stored securely using
dedicated mechanisms on the device.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong>
If the threat model of the system is against an adversary which can access the
messages on the device without even needing to attack MLS, the application
should delete plaintext messages and ciphertexts immediately after encryption
or decryption.</t>
            </li>
          </ul>
          <t>Even though, from the strict point of view of the security formalization, a
ciphertext is always public and will forever be, there is no loss in trying to
erase ciphertexts as much as possible.</t>
          <t>Note that this document makes a clear distinction between the way signature keys
and other group shared secrets must be handled.
In particular, a large set of group secrets cannot necessarily be assumed to be
protected by an HSM or secure enclave features. This is especially true because
these keys are extremely 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 are providing the strong authentication guarantees to other
clients, hence we consider that their protection by additional security
mechanism should be a priority.</t>
          <t>Overall there is no way to detect or prevent these compromise, as discussed in
the previous sections, performing separation of the application secret states
can help recovery after compromise, this is the case for signature keys but
similar concern exists for the encryption private key used in the TreeKEM Group
Key Agreement.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong>
The secret keys used for public key encryption should be stored similarly to
the way the signature keys are stored, as keys can be used to decrypt the
group operation messages and contain the secret material used to compute all
the group secrets.</t>
            </li>
          </ul>
          <t>Even if secure enclaves are not perfectly secure, or even completely broken,
adopting additional protections for these keys can ease recovery of the secrecy
and authentication guarantees after a compromise where, for instance, an
attacker can sign messages without having access to the key. In certain
contexts, the rotation of credentials might only be triggered by the AS through
ACLs, hence be outside of the capabilities of the attacker.</t>
        </section>
      </section>
      <section anchor="service-node-compromise">
        <name>Service Node Compromise</name>
        <section anchor="general-considerations">
          <name>General considerations</name>
          <section anchor="privacy-of-the-network-connections">
            <name>Privacy of the network connections</name>
            <t>There are many scenarios leading to communication between the application on a
device and the Delivery Service or the Authentication Service. In particular
when:</t>
            <ul spacing="normal">
              <li>The application connects to the Authentication Service to generate or validate
a new credential before distributing it.</li>
              <li>The application fetches credentials at the Delivery Service prior to creating
a messaging group (one-to-one or more than two clients).</li>
              <li>The application fetches service provider information or messages on the
Delivery Service.</li>
              <li>The application sends service provider information or messages to the Delivery
Service.</li>
            </ul>
            <t>In all these cases, the application will often connect to the device via a
secure transport which leaks information about the origin of the request such as
the IP address and depending on the protocol the MAC address of the device.</t>
            <t>Similar concerns exist in the peer-to-peer use cases of MLS.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong>
In the case where privacy or anonymity is important, using adequate protection
such as TOR or a VPN can improve metadata protection.</t>
              </li>
            </ul>
            <t>More generally, using anonymous credentials in an MLS based architecture might
not be enough to provide strong privacy or anonymity properties.</t>
          </section>
        </section>
        <section anchor="delivery-service-compromise">
          <name>Delivery Service Compromise</name>
          <t>MLS is intended to provide strong guarantees in the face of compromise of the
DS. Even a totally compromised DS should not be able to read messages or inject
messages that will be acceptable to legitimate clients. It should also not be
able to undetectably remove, reorder or replay messages.</t>
          <t>However, a 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>
          <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.</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 notification 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 and that specific steps must be
taken to improve privacy, one can delay notifications randomly across
recipient devices using a mixnet or other techniques.</t>
              </li>
            </ul>
            <t>Note that it is quite easy for legal requests to ask the service provider for
the push-token associated to an identifier and perform 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 vis-a-vis the push notification
provider, the client can choose to periodically connect to the Delivery
Service without the need of a dedicated push notification infrastructure.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="as-compromise">
          <name>Authentication Service Compromise</name>
          <t>The Authentication Service design is left to the infrastructure designers. In
most designs, a compromised AS is a serious matter, as the AS can serve
incorrect or attacker-provided identities to clients.</t>
          <ul spacing="normal">
            <li>The attacker can link an identity to a credential</li>
            <li>The attacker can generate new credentials</li>
            <li>The attacker can sign new credentials</li>
            <li>The attacker can publish or distribute credentials</li>
          </ul>
          <t>Infrastructures that provide cryptographic material or credentials in place of
the MLS client (which is under the control of the user) have often the ability
to use the associated secrets to perform operations on behalf of the user, which
is unacceptable in many situations. Other mechanisms can be used to prevent this
issue, such as the service blessing cryptographic material used by an MLS
client.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong>
Make clients submit signature public keys to the AS, this is usually better
than the AS generating public key pairs because the AS cannot sign on behalf
of the client. This is a benefit of a Public Key Infrastructure in the style
of the Internet PKI.</t>
            </li>
          </ul>
          <t>An attacker that can generate or sign new credentials may or may not have access
to the underlying cryptographic material necessary to perform such
operations. In that last case, it results in windows of time for which all
emitted credentials might be compromised.</t>
          <ul empty="true">
            <li>
              <t><strong>RECOMMENDATION:</strong>
Using HSMs to store the root signature keys to limit the ability of an
adversary with no physical access to extract the top-level signature key.</t>
            </li>
          </ul>
          <section anchor="authentication-compromise-ghost-users-and-impersonations">
            <name>Authentication compromise: Ghost users and impersonations</name>
            <t>One thing for which the MLS Protocol is designed for is to make sure that all
clients know who is in the group at all times. This means that - if all Members
of the group and the Authentication Service are honest - no other parties than
the members of the current group can read and write messages protected by the
protocol for that Group.</t>
            <t>Beware though, the link between the cryptographic identity of the Client and the
real identity of the User is important.
With some Authentication Service designs, a private or centralized authority can
be trusted to generate or validate signature keypairs used in the MLS
protocol. This is typically the case in some of the biggest messaging
infrastructures.</t>
            <t>While this service is often very well protected from external attackers, it
might be the case that this service is compromised.  In such infrastructure, the
AS could generate or validate a signature keypair for an identity which is not
the expected one. Because a user can have many MLS clients running the MLS
protocol, it possibly has many signature keypairs for multiple devices.</t>
            <t>In the case where an adversarial keypair is generated for a specific identity,
an infrastructure without any transparency mechanism or out-of-band
authentication mechanism could inject a malicious client into a group by
impersonating a user. This is especially the case in large groups where the UI
might not reflect all the changes back to the users.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong>
Make sure that MLS clients reflect all the membership changes to the users as
they happen. If a choice has to be made because the number of notifications is
too high, a public log should be maintained in the state of the device so that
the user can examine it.</t>
              </li>
            </ul>
            <t>While the ways to handle MLS credentials are not defined by the protocol or the
architecture documents, the MLS protocol has been designed with a mechanism that
can be used to provide out-of-band authentication to users. The
"authentication_secret" generated for each user at each epoch of the group is a
one-time, per client, authentication secret which can be exchanged between users
to prove their identity to each other. This can be done for instance using a QR
code that can be scanned by the other parties.</t>
            <t>Another way to improve the security for the users is to provide a transparency
mechanism which allows each user to check if credentials used in groups have
been published in the transparency log. Another benefit of this mechanism is for
revocation. The users of a group could check for revoked keys (in case of
compromise detection) using a mechanism such as CRLite or some more advanced
privacy preserving technology.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong>
Provide a Key Transparency and 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 is facultative to design a working infrastructure and can be replaced by
many mechanisms such as establishing prior one-to-one deniable channels,
gossiping, or using TOFU for credentials used by the MLS Protocol.</t>
            <t>Another important consideration is the ease of redistributing new keys on client
compromise, which helps recovering security faster in various cases.</t>
          </section>
          <section anchor="privacy-of-the-group-membership">
            <name>Privacy of the Group Membership</name>
            <t>Group membership is itself sensitive information and MLS is designed to limit
the amount of persistent metadata. However, large groups often require an
infrastructure which provides server fanout.  In the case of client fanout, the
destination of a message is known by all clients, hence the server usually does
not need this information.  However, they may learn this information through
traffic analysis.  Unfortunately, in a server-side fanout model, the Delivery
Service can learn that a given client is sending the same message to a set of
other clients. In addition, there may be applications of MLS in which the group
membership list is stored on some server associated with the Delivery Service.</t>
            <t>While this knowledge is not a breach of the protocol's authentication or
confidentiality guarantees, it is a serious issue for privacy.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong>
In the case where metadata has to be persisted for functionality, it should be
stored encrypted at rest and during the execution. Applications should also
consider anonymous systems for server fanout.</t>
              </li>
            </ul>
            <t>Often, expectation from users is that the infrastructure will not retain the
ability to constantly map the user identity to signature public keys of the MLS
protocol. Some infrastructures will keep a mapping between signature public keys
of clients and user identities. This can benefit an adversary that has
compromised the AS (or required access according to regulation) the ability of
monitoring unencrypted traffic and correlating the messages exchanged within the
same group.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong>
Always use encrypted group operation messages to reduce issues related to
privacy.</t>
              </li>
            </ul>
            <t>In certain cases, the adversary can access specific bindings between public keys
and identities. If the signature keys are reused across groups, the adversary
can get more information about the targeted user.</t>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong>
Do not use the same signature keypair across groups. Update all keys for all
groups on a regular basis. Do not preserve keys in different groups when
suspecting a compromise.</t>
              </li>
            </ul>
            <ul empty="true">
              <li>
                <t><strong>RECOMMENDATION:</strong>
Separate the service binding the identities and the public keys from the
service which generates or validates the credentials or cryptographic material
of the Clients.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
      <section anchor="considerations-for-attacks-outside-of-the-threat-model">
        <name>Considerations for attacks outside of the threat model</name>
        <t>Physical attacks on devices storing and executing MLS principals are not
considered in depth in the threat model of the MLS protocol.  While
non-permanent, non-invasive attacks can sometimes be equivalent to software
attacks, physical attacks are considered outside of the MLS threat model.</t>
        <t>Compromise scenarios typically consist in 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 [BBN19] (draft 7), [ACDT21] (draft 11) and [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, [BBR18],
[ACDT19], [ACCKKMPPWY19], [AJM20] and [ACJM20] analyze the ratcheting tree as
the sub-protocol of MLS that facilitates key agreement, while [BCK21] analyzes
the key derivation paths in the ratchet tree and key schedule. Finally, [CHK21]
analyzes the authentication and cross-group healing guarantees provided by MLS.</t>
      </section>
    </section>
    <section anchor="informative-references">
      <name>Informative References</name>
      <ul spacing="normal">
        <li>ACCKKMPPWY19: https://eprint.iacr.org/2019/1489</li>
        <li>ACDT19: https://eprint.iacr.org/2019/1189</li>
        <li>ACDT21: https://eprint.iacr.org/2021/1083</li>
        <li>ACJM20: https://eprint.iacr.org/2020/752</li>
        <li>AHKM21: https://eprint.iacr.org/2021/1456</li>
        <li>AJM20: https://eprint.iacr.org/2020/1327</li>
        <li>BBN19: https://hal.laas.fr/INRIA/hal-02425229</li>
        <li>BBR18: https://hal.inria.fr/hal-02425247</li>
        <li>BCK21: https://eprint.iacr.org/2021/137</li>
        <li>CHK21: https://www.usenix.org/system/files/sec21-cremers.pdf</li>
      </ul>
    </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">
              <organization>Cisco</organization>
            </author>
            <author fullname="Benjamin Beurdouche">
              <organization>Inria &amp; Mozilla</organization>
            </author>
            <author fullname="Raphael Robert">
	 </author>
            <author fullname="Jon Millican">
              <organization>Facebook</organization>
            </author>
            <author fullname="Emad Omara">
              <organization>Google</organization>
            </author>
            <author fullname="Katriel Cohn-Gordon">
              <organization>University of Oxford</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   Messaging applications are increasingly making use of end-to-end
   security mechanisms to ensure that messages are only accessible to
   the communicating endpoints, and not to any servers involved in
   delivering messages.  Establishing keys to provide such protections
   is challenging for group chat settings, in which more than two
   clients need to agree on a key but may not be online at the same
   time.  In this document, we specify a key establishment protocol that
   provides efficient asynchronous group key establishment with forward
   secrecy and post-compromise security for groups in size ranging from
   two to thousands.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-protocol-16"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="KeyTransparency" target="https://KeyTransparency.org">
          <front>
            <title>Key Transparency</title>
            <author initials="" surname="Google">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="CAPBR">
          <front>
            <title>Towards robust distributed systems.</title>
            <author initials="E. A." surname="Brewer" fullname="Eric A. Brewer">
              <organization/>
            </author>
            <date year="2000"/>
          </front>
          <refcontent>Symposium on Principles of Distributed Computing (PODC)</refcontent>
        </reference>
        <reference anchor="RFC6120">
          <front>
            <title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="I-D.mahy-mls-content-neg">
          <front>
            <title>Content Negotiation for Message Layer Security (MLS)</title>
            <author fullname="Rohan Mahy">
              <organization>Wire</organization>
            </author>
            <date day="31" month="March" year="2022"/>
            <abstract>
              <t>   This document describes a default mechanism for the negotiation of
   content inside an MLS group.  It defines two new extensions to the
   MLS (Messaging Layer Security) Protocol to allow for negotiation of
   media types exchanged among members of an MLS group, and a minimal
   framing format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mahy-mls-content-neg-00"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="B. Korver" initials="B." surname="Korver">
              <organization/>
            </author>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak.  This document provides guidelines to RFC authors on how to write a good Security Considerations section.   This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
      </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="K." surname="Kohbrok" fullname="Konrad Kohbrok">
        <organization/>
        <address>
          <email>konrad.kohbrok@datashrine.de</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@fb.com</email>
        </address>
      </contact>
      <contact initials="R." surname="Robert" fullname="Raphael Robert">
        <organization/>
        <address>
          <email>ietf@raphaelrobert.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
+C1RsDMBAA==

-->

</rfc>
