<?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.10 (Ruby 3.0.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mls-federation-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.7 -->
  <front>
    <title abbrev="MLS Federation">The Messaging Layer Security (MLS) Federation</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mls-federation-01"/>
    <author initials="E." surname="Omara" fullname="Emad Omara">
      <organization>Google</organization>
      <address>
        <email>emadomara@google.com</email>
      </address>
    </author>
    <author initials="R." surname="Robert" fullname="Raphael Robert">
      <organization/>
      <address>
        <email>ietf@raphaelrobert.com</email>
      </address>
    </author>
    <date year="2022" month="May" day="19"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes how the Messaging Layer Security (MLS) protocol can be
used in a federated environment.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/mlswg/mls-federation"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>MLS Architecture draft <xref target="I-D.ietf-mls-architecture"/> describes the overall MLS
system architecture, assuming the client and servers (Delivery Service and
Authentication Service) are operated by the same entity. This is however not a
strict requirement, the MLS protocol does not have an inherent dependency on one
single entity and can instead be used between multiple entities.</t>
      <t>The focus of this document is on the different components of the MLS
architecture when used in a federated environment.</t>
    </section>
    <section anchor="federated-environments">
      <name>Federated environments</name>
      <t>Federated environments are environments where multiple entities are operating
independent MLS services. In particular, the assumption is that Delivery
Services and Authentication Services are not necessarily operated by the same
entity.</t>
      <t>Entities operating independent MLS services are commonly called domains. In most
cases these domains might correspond to the Domain Name System, but it is not
strictly required. Operating MLS services in a federated environment can
therefore be regarded as federation between different domains.</t>
      <t>Federation is however not limited to the MLS services themselves. For example, a
federated environment could also contain clients that are provided by different
entities. Specifically, different vendors could provide different applications
that differ in scope and functionality but are interoperable.</t>
      <section anchor="delivery-services">
        <name>Delivery Services</name>
        <t>Depending on the kind of federated environment, the two following types of
federated Delivery Services are possible:</t>
        <section anchor="different-client-applications">
          <name>Different client applications</name>
          <t>The diagram below shows an MLS group where all clients are provided by
potentially different vendors but operate on the same Delivery Service:</t>
          <artwork><![CDATA[
                       +------------+
                      + Delivery     +
                      + Service (DS) +
                       +-----+------+
                    /        +        \             Group
*********************************************************
*                 /          +          \               *
*                /           |           \              *
*      +--------+       +----+---+       +--------+     *
*     + Client 0 +     + Client 1 +     + Client 3 +    *
*      +--------+       +--------+       +--------+     *
*     .............................     ............    *
*     User 0                            User 1          *
*                                                       *
*********************************************************


]]></artwork>
        </section>
        <section anchor="different-delivery-services">
          <name>Different Delivery Services</name>
          <t>The diagram below shows a federated environment in which different or identical
clients applications operate on different Delivery Services:</t>
          <artwork><![CDATA[
           +-----------------+      +-----------------+
          + Deliver Service 1 +    + Deliver Service 2 +
          +                   +    +                   +
           +-----------------+      +--------+--------+
               |         |                   |
               |         |                   |      Group
***************|*********|*******************|***********
*              |         |                   |          *
*              |         |                   |          *
*      +--------+       +--------+       +--------+     *
*     + Client 0 +     + Client 1 +     + Client 3 +    *
*      +--------+       +--------+       +--------+     *
*     .............................     ............    *
*     User 0                            User 1          *
*                                                       *
*********************************************************

]]></artwork>
        </section>
      </section>
      <section anchor="authentication-service">
        <name>Authentication Service</name>
        <t>In a federated environment, authentication becomes more important. While the
sepcifics of an Authentication Service are out-of-scope for MLS in general, it
is important that strong authentication is accessible to all clients of a
federated environment. As an example, a shared transparency log like
<xref target="keytransparency"/> could be used.</t>
      </section>
    </section>
    <section anchor="further-considerations">
      <name>Further considerations</name>
      <t>The following aspects of federated communication are important for successful
federation but are not considered in scope of the MLS charter:</t>
      <t>## Common format for the content of application messages</t>
      <t>The MLS protocol does not impose any format on the content of application
messages. Instead, application messages are considered to be an opaque sequence
of bytes. Applications in a federated environment are expected to agree on a
common format. The negotiation can be done at the KeyPackage level, or through
the MLS extension mechanism.</t>
      <section anchor="network-protocol-between-different-domains">
        <name>Network protocol between different domains</name>
        <t>Cross-domain operations such as sending and receiving messages, fetching
KeyPackages, and querying the Authentication Services have to be part of a
common network protocol that is supported by all domains in a federated
environment.</t>
      </section>
    </section>
    <section anchor="discovery-service-for-clientsusers-on-a-specific-domain">
      <name>Discovery service for clients/users on a specific domain</name>
      <t>Searching for users and other discovery services are typically part of messaging
systems. In the context of MLS, this functionality might overlap with the
fetching of KeyPackages and message routing.</t>
    </section>
    <section anchor="use-cases">
      <name>Use cases</name>
      <section anchor="different-delivery-servers">
        <name>Different Delivery Servers</name>
        <t>Different applications operated by different entities can use MLS to exchange
end-to-end encrypted messages. For example, in a messaging applications, clients
of messaging1.tld can encrypt and decrypt end-to-end encrypted messages from
messaging2.tld.</t>
      </section>
      <section anchor="different-client-applications-1">
        <name>Different client applications</name>
        <t>Different client applications operating on the same server can use MLS to
exchange end-to-end encrypted handshake and application messages. For example,
different browsers can implement the MLS protocol, and web developers write web
applications that use the MLS implementation in the browser to encrypt and
decrypt the messages. This will require a new standard Web API to allow the
client applications to set the address of the delivery service in the browser. A
more concrete example is using MLS in the browser to negotiate SRTP keys for
multi-party conference calls.</t>
      </section>
    </section>
    <section anchor="functional-requirements">
      <name>Functional Requirements</name>
      <section anchor="delivery-service">
        <name>Delivery service</name>
        <t>While there is no strict requirement regarding the network topology, there are
practical advantages when clients only connect to their own Delivery Service
rather than to the whole federated environment. This routing strategy can
possibly make the design of a cross-domain network protocol easier in the
context of access control.</t>
        <t>In such a topology, the client's own Delivery Service relays messages to the
Delivery Service in charge for a specific group.</t>
        <t>When several Delivery Services are involved in relaying messages, it is
important that all of them agree on which one is responsible for ordering
handshake messages of a specific group at any given time in order to enforce the
total ordering of handshake messages required by the MLS protocol.</t>
        <t>Depending on the functional requirements (such high availability and
redundancy), the different Delivery Services can elect a dedicated Delivery
Service to be responsible for ordering handshake messages for a certain period
of time. The election process can be repeated when the availability of Delivery
Services change.</t>
        <t>The diagram below shows a federated environment where a client connects to its
own Delivery Service that in turn relays messages to other Delivery Services.</t>
        <artwork><![CDATA[
                               +-----------------+         +---------+
                         +--> + Deliver Service B + +---> + Client B1 +
                         |    +                   +        +---------+
                         |     +-----------------+
                         |
                     +---+-------------+                   +---------+
 +---------+        + Deliver Service A + +-------------> + Client A2 +
+ Client A1 + +---> +                   +                  +---------+
 +---------+         +------+----------+
                         |
                         |     +-----------------+         +---------+
                         +--> + Deliver Service C + +---> + Client C1 +
                              +                   +        +---------+
                               +-----------------+
                                                                                                                                      
]]></artwork>
      </section>
      <section anchor="authentication-service-1">
        <name>Authentication Service</name>
        <t>The MLS specification only describes how the signatures on the contents of the
leaf nodes of a given group can be verified and that clients have to support the
signature schemes of all other clients in each group.</t>
        <t>The credential (and thus the binding between identity of the group member and
its signature public key) in each (non-blank) leaf node has to be authenticated
by the AS. This becomes relevant in a federated setting, as the AS, and thus the
authentication process of each member in a given group might differ.</t>
        <t>This problem can be solved in a variety of ways, for example, by having all
applications and/or service providers involved in a federation agree on a shared
process, or by having clients advertise their authentication process in a
similar way as their ciphersuite, with the requirement that all members of a
group must support each others authentication processes.</t>
        <t>Depending on the design of the AS of a given client, other, federated clients
might have to trust that client's service provider to authenticate its
credential. Confidence in authentication provided by service providers in
general can be strengthened by using a scheme such as <xref target="keytransparency"/>, which
allows both local and federated clients to assert a shared view of the
authentication information provided by the service.</t>
        <t>In a federated environment, the AS should provide the same degree of
transparency as in a non-federated environment, i.e. end-to-end authentication
should be possible.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="version-ciphersuite-negotiation">
        <name>Version &amp; ciphersuite negotiation</name>
        <t>In a federated environment, version &amp; ciphersuite negotiation is more critical,
to avoid forcing a downgrade attack by malicious third party Delivery Services.
This is due to the fact that the thread model is extended to include the following:</t>
        <ul spacing="normal">
          <li>Different entities might have diverging security policies, e.g. they don't
enforce validation of KeyPackages the same way.</li>
          <li>Entities might be malicious and act as a threat actor, e.g. might generate
fake clients controlled by them.</li>
        </ul>
        <t>The negotiation of version numbers &amp; ciphersuites can be done at the KeyPackage level.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.ietf-mls-architecture">
          <front>
            <title>The Messaging Layer Security (MLS) Architecture</title>
            <author fullname="Benjamin Beurdouche">
              <organization>Inria &amp; Mozilla</organization>
            </author>
            <author fullname="Eric Rescorla">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Emad Omara">
              <organization>Google</organization>
            </author>
            <author fullname="Srinivas Inguva">
              <organization>Twitter</organization>
            </author>
            <author fullname="Albert Kwon">
              <organization>MIT</organization>
            </author>
            <author fullname="Alan Duric">
              <organization>Wire</organization>
            </author>
            <date day="4" month="October" year="2021"/>
            <abstract>
              <t>   The Messaging Layer Security (MLS) protocol [MLSPROTO] document has
   the role of defining a Group Key Agreement, all the necessary
   cryptographic operations, and serialization/deserialization functions
   necessary to create a scalable and secure group messaging protocol.
   The MLS protocol is meant to protect against eavesdropping,
   tampering, message forgery, and provide good properties such as
   forward-secrecy (FS) and post-compromise security (PCS) in the case
   of past or future device compromises.

   This document, on the other hand is intended to describe 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 mechanism
   that are part of the MLS protocol (ie. frequency of public encryption
   key rotation).

   The document also extends the guidance to parts of the infrastructure
   that are not standardized by the MLS Protocol document and left to
   the application or the infrastructure architects to design.

   While the recommendations of this document are not mandatory to
   follow in order to interoperate at the protocol level, most will
   vastly influence the overall security guarantees that are achieved by
   the overall messaging system.  This is especially true in case of
   active adversaries that are able to compromise clients, the delivery
   service or the authentication service.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-architecture-07"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="keytransparency" target="https://github.com/google/keytransparency">
          <front>
            <title>Key Transparency</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1aTZPbthm+41egk5nGzkryR0/VIZPNrpPxNEkzXrc5tJ0O
REISZklCAUitVTudXvs3+0v6vC8AEpQo2U4yPZWX1ZIA3u+vh5zP56I1baWX
8vVWy2+192pjmo38Rh20k3e66JxpD/LRt9/cPZZf6VI71RrbCLVaOb1fStzP
b5e2aFSN00qn1u3c6HY9rys/X/dL5k+fiUK1emPdYSlNs7ZCmJ1bytZ1vn3+
9Onvnz4Xymm17KmLe314sK5cypdNq12j2/ktHS+Eb1VT/l1VtgHJg/ZiZ5by
L60tZtJb1zq99vh1qOnH34RQXbu1binkXEhcpvFL+WIh/1grp/hO4P1Frcrs
pnUb1Zh/MPdL+bW1m0rzA10rUy3pT2lp9RcbfrYobD0i8WohX9mVdm1G45Xa
bZWu8gdjOjkFUuMXLuxwvIFpCNKeq7FhryGUhJpapxq/g/qa4rDkI6J1/6AP
8nX2MDxTbqPbpdy27c4vnzzZmHbbrejsJ0GUJ0dHCjGfz6VaedwsoP/XW+Ml
bN7VumllqX3hzEp7ubUPsn2/P+2cha1sJQvVyJUWndclVCaVjP6Cf3WzN842
RGARyNemLGEB8Qm5g7NlV7DrCXLFa1dsTauLtnM6+KB8+/Y3L+e3i94VVbbk
p58ypolhuwfZqiK3Fv7gW13LfP1MKu+7mgSi1UVlSG74oPTaYauXj251BXO4
A2R1e1Noeiqu4XhYaQo2bnr0GGeD5C5KujrwoR7+IWlxe1hIVrBhhWqcKhsL
cnB7Z4pWOv1jZ5wm1cyCuqGBXqelhUy0fqv2xAUUu9Uu2Gmnm5LsKcEMYkd4
SFQlqixPwRugAITCSku2zEq3D1o3su6q1uzSeqP9gjxByzUcwUu7Bi+5W+A3
yBB/pVmvAwtwsR0IN21cz7yLXNXyARqT7/eIT1L6GT/xQkzfZ52PbjyQWk6F
yowD7SDWktpa1rMPNvQLeKFEeMC4XaVcMAR7yY5tbcixVCuTX4hofM9qnnaM
QJts1+iCQsiZ6jDpKCI6ihAvEts9y/Icy3w6LFDbBscW8HccSikMBmdxautb
JGkfgsLr9BCht9mS8ZzTHvYrZWuZlVt+Lr8j173jsJnJVQfTs/UhSHRZkItO
WyLt9oyOmDtvbXJK0ZK1kPY0uaXTG+VKrFJeDiWmd9TB35J0vVdE0+RxVZna
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
PvG+8YeThCcwakIJVvvQP9C+hfgvAih7mqErAAA=

-->

</rfc>
