<?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.11 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mls-architecture-08" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title abbrev="MLS Architecture">The Messaging Layer Security (MLS) Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mls-architecture-08"/>
    <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="June" day="16"/>
    <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, redistribute and validate their
credentials themselves.</t>
      <t>Similarly to 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 the MLS
protocol requires group operation messages to be processed in-order by
all MLS clients.</t>
      <t>In some sense, a set of MLS clients which can achieve the AS and DS
functionalities without relying on an external party do not need a
Service Provider.</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>In many systems, the AS and the DS are actually operated by the same
entity and may even be the same server. However, they are logically
distinct and, in other systems, may be operated by different entities.
Other partitions are also possible, such as having a separate
directory functionality or service.</t>
      <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 <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 authentication and access control at the application layer.</t>
      <t>Thus, for instance, while the MLS protocol allows for any existing
member of a group to add a new client, applications which use MLS
might enforce additional restrictions for which only a subset of
members can qualify, and thus will handle enforcing group policies
(such as determining if a user is allowed to add new users to the
group) at the application level.</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, or they may share cryptographic state, relying on some
application-provided mechanism to sync across devices.</t>
        <t>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.</t>
      </section>
    </section>
    <section anchor="authentication-service">
      <name>Authentication Service</name>
      <t>The Authentication Service (AS) has to provide two 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 group member to verify that a credential presented by another member
is valid</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 in its credential.</t>
      <t>The AS is considered an abstract layer by the MLS specification, 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., 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 the other client is 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 from the point of
view of the security analysis.</t>
      <section anchor="key-storage">
        <name>Key Storage</name>
        <t>Upon joining the system, each client stores its initial cryptographic
key material with the Delivery Service. This key material, called a
KeyPackage, advertises the functional abilities of the client such as
supported protocol versions, supported extensions, and the following
cryptographic information:</t>
        <ul spacing="normal">
          <li>A credential from the Authentication Service attesting to the
binding between the identity and the client's signature key.</li>
          <li>The client's asymmetric encryption public key material.</li>
        </ul>
        <t>All the parameters in the KeyPackage are signed with the signature private key
corresponding to the credential.</t>
        <t>As noted above, users may own multiple clients, each with their
own keying material, and thus there may be multiple entries
stored by each user.</t>
        <t>The Delivery Service is also responsible for allowing users to add,
remove or update their initial key material, and for ensuring
that the identifier for these keys are unique across all keys
stored on the Delivery Service.</t>
      </section>
      <section anchor="key-retrieval">
        <name>Key Retrieval</name>
        <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 can use 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 some members of a group
(e.g., the message initializing a new member's state), while others need to be
delivered to all members.  The Delivery Service may enable these delivery
patterns 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.  The one requirement is that because an MLS group has a
linear history, the members of the group must agree on the order in which
changes are applied.  Concretely, the group must agree on which MLS Commit
messages to apply.  There are a variety of ways to achieve this agreement, but
most of them rely on some help from the Delivery Service.  For example, if a
Delivery Service provides delivery in the same order to all group members, then
the members can simply apply Commits in the order in which they appear.</t>
        <t>Each Commit is premised on a given state or "epoch" of the group.  The Delivery
Service must transmit to the group exactly one Commit message per epoch.</t>
        <t>Much like the Authentication Service, the Delivery Service can be split between
server and client components. Achieving the required uniqueness property will
typically require a combination of client and server behaviors.  For example,
all of the following examples provide a unique Commit per epoch:</t>
        <ul spacing="normal">
          <li>A "filtering server" Delivery Service where a server rejects all but the
first Commit for an epoch and clients apply each Commit they receive.</li>
          <li>An "ordering server" Delivery Service where a server forwards all messages
but assures that all clients see Commits in the same order, and clients.</li>
          <li>A "passive server" Delivery Service where a server forwards all messages
without ordering or reliability guarantees, and clients execute some secondary
consensus protocol to choose among the Commits received in a window.</li>
        </ul>
        <t>The MLS protocol provides three important pieces of information
within an MLSCiphertext message in order to provide ordering:</t>
        <ul spacing="normal">
          <li>The Group Identifier (group ID) to allow for distinguishing the group for
which the message has been sent;</li>
          <li>The Epoch number, which represents the number of changes (version) of
the group associated with a specific group ID, and allows for
lexicographical ordering of messages from different epochs within the
same group;</li>
          <li>The Content Type of the message, which allows the Delivery Service to
determine the ordering requirement on the message, in particular
distinguishing Commit messages from other messages.</li>
        </ul>
        <t>The MLS protocol itself can verify these properties. For instance, if the
Delivery Service reorders messages from a client or provides different clients
with inconsistent orderings, then clients can put messages back in their proper
order.  The asynchronous nature of MLS means that within an epoch, messages are
only ordered per-sender, not globally.</t>
        <t>Note that some forms of Delivery Service misbehavior are still possible and
difficult 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
distinguish this form of Denial of Service (DoS) attack.</t>
      </section>
      <section anchor="membership-knowledge">
        <name>Membership knowledge</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.  In the case
where metadata has to be persisted for functionality, it SHOULD be stored
encrypted at rest. Applications should also consider anonymous systems for
server fanout such as Loopix <xref target="Loopix"/>.</t>
      </section>
      <section anchor="membership-and-offline-members">
        <name>Membership and offline members</name>
        <t>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 cannot inherently defend against this problem, especially in the
case where the client has not processed messages, but MLS-using
systems can enforce some mechanism to try to retain these properties.
Typically this will consist of evicting clients which are idle for too
long, or mandating a key update from clients that are not otherwise sending
messages. The
precise details of such mechanisms are a matter of local policy and beyond
the scope of this document.</t>
      </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 user.</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>
          </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
acknowledgements 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>
        </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>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.</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, [CHK19]
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>ACDT19: https://eprint.iacr.org/2019/1189</li>
        <li>ACCKKMPPWY19: https://eprint.iacr.org/2019/1489</li>
        <li>ACJM20: https://eprint.iacr.org/2020/752</li>
        <li>AJM20: https://eprint.iacr.org/2020/1327</li>
        <li>ACDT21: https://eprint.iacr.org/2021/1083</li>
        <li>AHKM21: https://eprint.iacr.org/2021/1456</li>
        <li>CHK19: https://eprint.iacr.org/2021/137</li>
        <li>BCK21: https://eprint.iacr.org/2021/137</li>
        <li>BBR18: https://hal.inria.fr/hal-02425247</li>
        <li>BBN19: https://hal.laas.fr/INRIA/hal-02425229</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="3" month="May" 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-14"/>
        </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="Loopix">
          <front>
            <title>The Loopix Anonymity System</title>
            <author initials="A. M." surname="Piotrowska" fullname="Ania M. Piotrowska">
              <organization/>
            </author>
            <author initials="J." surname="Hayes" fullname="Jamie Hayes">
              <organization/>
            </author>
            <author initials="T." surname="Elahi" fullname="Tariq Elahi">
              <organization/>
            </author>
            <author initials="S." surname="Meiser" fullname="Sebastian Meiser">
              <organization/>
            </author>
            <author initials="G." surname="Danezis" fullname="George Danezis">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="RFC6120">
          <front>
            <title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <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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

-->

</rfc>
