<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mls-federation-03" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="MLS Federation">The Messaging Layer Security (MLS) Federation</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mls-federation-03"/>
    <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>Phoenix R&amp;D</organization>
      <address>
        <email>ietf@raphaelrobert.com</email>
      </address>
    </author>
    <date year="2023" month="September" day="09"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 31?>

<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>
    <?line 36?>

<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
specifics 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" initials="B." surname="Beurdouche">
              <organization>Inria &amp; Mozilla</organization>
            </author>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Emad Omara" initials="E." surname="Omara">
              <organization>Google</organization>
            </author>
            <author fullname="Srinivas Inguva" initials="S." surname="Inguva">
         </author>
            <author fullname="Alan Duric" initials="A." surname="Duric">
              <organization>Wire</organization>
            </author>
            <date day="26" month="July" year="2023"/>
            <abstract>
              <t>   The Messaging Layer Security (MLS) protocol (I-D.ietf-mls-protocol)
   provides a Group Key Agreement protocol for messaging applications.
   MLS is meant to protect against eavesdropping, tampering, message
   forgery, and provide Forward Secrecy (FS) and Post-Compromise
   Security (PCS).

   This document describes the architecture for using MLS in a general
   secure group messaging infrastructure and defines the security goals
   for MLS.  It provides guidance on building a group messaging system
   and discusses security and privacy tradeoffs offered by multiple
   security mechanisms that are part of the MLS protocol (e.g.,
   frequency of public encryption key rotation).  The document also
   provides guidance for parts of the infrastructure that are not
   standardized by MLS and are instead left to the application.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-architecture-11"/>
        </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+41egk5nEzkryR07VIZON18l4mqQer9sc2k4H
IiEJsyShAKTWqp1Or/2b/SV93hcACUqUbCeZnsrLakkA7/fXQ87nc9GattJL
+Xqr5ffae7UxzUZ+pw7ayVtddM60B/ng++9uH8pvdKmdao1thFqtnN4vJe7n
t0tbNKrGaaVT63ZudLue15Wfr/sl88dfiEK1emPdYSlNs7ZCmJ1bytZ1vn36
+PHvHz8Vymm17KmLO324t65cyhdNq12j2/kNHS+Eb1VT/l1VtgHJg/ZiZ5by
L60tZtJb1zq99vh1qOnH34RQXbu1binkXEhcpvFL+Xwh/1grp/hO4P15rcrs
pnUb1Zh/MPdL+a21m0rzA10rUy3pT2lp9VcbfrYobD0i8WohX9mVdm1G45Xa
bZWu8gdjOi+3VjfmjXz16U1OjDT6lQubHe9lcoIU6Wrs3WvIJ6Gx1qnG76DJ
pjgs+Yho6D/og3ydPQzPlNvodim3bbvzy0ePNqbddis6+1GQ6tHRkULM53Op
Vh43C5ji9dZ4CfN3tW5aWWpfOLPSXm7tvWzf71o7Z2E2W8lCNXKlRed1Ce1J
JaPr4F/d7I2zDRFYBPK1KUsYQ3xCnuFs2RXshYK88toVW9Pqou2cDu4o3779
3Yv5zaL3SpUt+fnnjGli2O5BtqrIw4U/+FbXMl8/k8r7riaBaHVRGZIb7ii9
dtjq5YMbXcEc7gBZ3d4Ump6Ka/ggVpqC7ZwePcTZILmLkq4OfKiHq0ha3B4W
khVsWKEap8rGghwiwJmilU7/1BmnSTWzoG5ooNdpaSETrd+qPXEBxW61C3ba
6aYke0owgzASHhJViSrLU/AGKABRsdKSLbPS7b3Wjay7qjW7tN5ovyBP0HIN
R/DSrsFL7hb4DTLEX2nW68ACXGwHwk0b1zPvIle1vIfG5Ps94pOUicZPvBDT
91nnoxv3pJZToTLjQDuItaS2lvXsgw39Al4oER4wblcpFwzBXrJjWxtyLNXK
5BciGt+zmqcdI9Am2zW6oBBypjpMOoqIjiLE88R2z7I8xzKfDgvUtsGxBfwd
h1I2g8FZnNr6Fvnah6DwOj1E6G22ZDzntIf9StlaZuWGn8sfyHVvOWxmctXB
9Gx9CBJdFuSi05bIwD2jI+bOW5ucUrRkLaQ9TW7p9Ea5EquUl0O16R118Lck
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
w9lJ9zIGPl4z/OiI3G/rPc9OvefZRe8Jh12690HsHC/94C3/m+s///p3BIku
oURp5k+1JTzmbuP06waq/YreVfuj+T+1daLSao1uqEwlKxSnUK9iDoXpQIhe
YdLrVMpXqcdJ02ccKAPwlEhKX6CUxnOptgYsJm5FytMKZScVdRILfWMZXmrJ
B4FWF755WJlQyNIcHnDykL/peWC31vUKFKhsId0Osstdt0KHS63lw57ug8Y2
81WlmruHstcBBPIJ0xjUj0k4Vtjr29h8JfwNCVtT+3cMbKCHpuaMPsaIG2cy
l0gcwWapakEe5i6KwqfmFgkzbKjBi/hxC/aihtbJWr5vfJTcK2d0UNM9CsuM
C2k/JUIoGJAHxKoaDyng9RGhXDFg44tH50eNlcpfaA9wTUTuRJSJoZeBVP9i
o4RbtSbMQWiMzyiEyMClapRsRzJEhWJDYXbwJ99hyJr10/yom++7uqDNiD9G
RXa+7d2WVc7u6c/wwQX3pKEaeutg4zyCgpyzcOwsRxbj+B1MmSKIvzLLg+sz
f6J9nt4yt+SmYoiZhXyGMYlCIzTRp5L0r/Kn7Coi3Nv7UYsub0NHhD1hhlMx
qnt8awKJnYWuWfCkiViBCmRleVail/rHmmCxoGLXDqjv3mB6jRnqGGFOX5Qd
ycTpLsi1uIylR2Ohl8s/TughhlIHV16LEfasIjxGeePMwWaBbjSDIMaci0hw
NXwxwHNs/8XZsyOYGkXgz7ANCfpp7u45+HlZ0v37ttNUE6Z2cEDj7EyQNfbW
lJQrimDyEp0rmuCS4NVWFXek7lohWxjL6cy4UoZBfaJPTd+HlZ1Ow+1aFdHX
+auLraNPuGrk34oWMixbBhDYNEXVReP0iD1h5vMMXOqhsyykSmKDwS+f1ItJ
FRzT+KcXmwUdeSDM+DP+yjENX3uIVcaSOsYDe/9AFloQA8/HZGHWQScMNNEc
RMMCC9jS/9ZF4mFLiLiWv9pc08CTIiKO2lXv2XWskLnpwF+yb9OFBDeys/8Q
YJw98MX1D9cn3jf+cJLwBEZNKMFqH/oH2rcQ/wXE5jV/rCsAAA==

-->

</rfc>
