<?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.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kohbrok-mls-tls-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="MLS-TLS">The MLS-TLS secure channel protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-kohbrok-mls-tls-00"/>
    <author fullname="Konrad Kohbrok">
      <organization>Phoenix R&amp;D</organization>
      <address>
        <email>konrad@ratchet.ing</email>
      </address>
    </author>
    <author fullname="Raphael Robert">
      <organization>Phoenix R&amp;D</organization>
      <address>
        <email>ietf@raphaelrobert.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="19"/>
    <area>Security</area>
    <keyword>TLS</keyword>
    <keyword>Handshake</keyword>
    <abstract>
      <?line 36?>

<t>This document details how the Messaging Layer Security (MLS) protocol can be
combined with the Transport Layer Security (TLS) record layer to yield the
MLS-TLS secure channel protocol. In this composed protocol, MLS acts as a
continuous key agreement protocol that allows initiator and responder to protect
both past and future messages in case of key material compromise. As such,
MLS-TLS is suitable for long-lived connections. MLS-TLS also inherits the
modularity of MLS and can be configured with post-quantum secure ciphersuites.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://kkohbrok.github.io/draft-kohbrok-mls-tls/draft-kohbrok-mls-tls.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-kohbrok-mls-tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/kkohbrok/draft-kohbrok-mls-tls"/>.</t>
    </note>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document builds on the two-party profile for MLS
<xref target="I-D.draft-kohbrok-mls-two-party-profile"/> and combines it with the record
layer of TLS 1.3 <xref target="RFC8446"/> to yield a secure channel protocol. The
composition of both protocols is seamless due to the modular design of TLS 1.3
and MLS's capability to act as a continuous key agreement protocol. After the
initial handshake, initiator and responder can tunnel MLS commits through the
secure channel to update their key material. Key material updates allow both
parties to achieve forward-secrecy and post-compromise security.</t>
    </section>
    <section anchor="mls-as-a-continuous-key-agreement-protocol">
      <name>MLS as a continuous key agreement protocol</name>
      <t>MLS is a secure messaging protocol that can also act as a continuous key
agreement protocol. In particular, all parties in an MLS group can not only
exchange encrypted messages, but also export shared key material for use outside
of MLS.</t>
      <t>Within an MLS group, each member has distinct public key material that it can
update by sending a <em>commit</em> that updates its own key material and the key
material exported from the group. Such an update allows a client to achieve
forward secrecy (FS) and post-compromise security (PCS). FS and PCS can be
intuitively understood as follows.</t>
      <t>FS is the property that prevents an adversary from being able to decrypt
messages sent in the past even if it obtains current key material. Group members
achieve FS by deleting previously exported key material after an update.</t>
      <t>PCS is the property that prevents an adversary from decrypting future messages
even if it obtains current key material. Clients can achieve this property by
generating new key material and encrypting it to other group members. PCS is
achieved when other group members update the public keys of the updating client.</t>
    </section>
    <section anchor="composing-mls-and-tls">
      <name>Composing MLS and TLS</name>
      <t>The MLS-TLS protocol is a two-party protocol that establishes a secure channel
between an initiator and a responder. The protocol makes use of MLS's capability
to export key material and uses said key material to initialize the record
protection layer of the TLS protocol as defined in Section 5 of <xref target="RFC8446"/>. As
such MLS essentially replaces the TLS 1.3 handshake.</t>
      <t>The specific protocol flow for how initiator and responder establish an MLS
group and how the exported keys are subsequently updated is described in
<xref target="I-D.draft-kohbrok-mls-two-party-profile"/>, which defines a two-party profile
for MLS. In particular, the two-party profile describes how updates are
coordinated and when exported keys are ready to be used, in this case to
initialize or update the TLS record layer.</t>
    </section>
    <section anchor="advantages-of-mls">
      <name>Advantages of MLS</name>
      <t>The ability of both parties to achieve PCS by sending MLS commits in-band is
increasingly valuable the higher the risk of compromise of either party. As
such, the MLS-TLS protocol is specifically suited for scenarios where
connections tend to be long-lived. For example, in cases where connection
(re)establishment is costly.</t>
      <t>MLS is a modular design. When using it as a continuous key agreement protocol,
this yields two advantages: Post-quantum capable cryptographic abstractions and
arbitrary credential types.</t>
      <t>MLS's ciphersuites use Key Encapsulation Mechanisms (KEMs) and signature
algorithms as abstractions. This allows the use of a variety of cryptographic
algorithms including post-quantum secure ones for both confidentiality and
authentication. See <xref target="I-D.draft-ietf-mls-pq-ciphersuites"/> for hybrid and pure
post-quantum secure ciphersuites.</t>
      <t>MLS does not require clients to use any specific credential type as long as they
are provided with signature keys to sign MLS messages. MLS-TLS is thus largely
agnostic to how the application binds a client's identity to its signature
public key.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>The MLS-TLS protocol consists of three phases.</t>
      <ol spacing="normal" type="1"><li>
          <t>Initial key agreement, where initiator and responder agree on key material
using the MLS two party profile. At the end of this phase, both parties are
members of an MLS group that is used in the other phases to generate key
material.</t>
        </li>
        <li>
          <t>Secure channel phase, where initiator and responder can encrypt data using
the TLS 1.3 record layer protocol. The encryption keys are derived from the
MLS group created during the initial key agreement phase. During the secure
channel phase, initiator and responder can tunnel MLS commits through the
secure channel to update their key material.</t>
        </li>
        <li>
          <t>Resumption, where initiator or responder can resume a previously interrupted
connection without having to repeat phase 1, including the ability to send
data in the first flight of messages.</t>
        </li>
      </ol>
      <t>For more details on the initial key agreement, resumption, as well as how
message updates work, see <xref target="I-D.draft-kohbrok-mls-two-party-profile"/>.</t>
    </section>
    <section anchor="deriving-keys-for-record-layer-protection">
      <name>Deriving keys for record layer protection</name>
      <t>Both after the initial key agreement phase and the resumption phase, initiator
and responder derive key material from the MLS group created during the initial
key agreement phase.</t>
      <t>The <tt>client_application_traffic_secret</tt> and the
<tt>server_application_traffic_secret</tt> required by the record layer are derived as
follows.</t>
      <sourcecode type="tls"><![CDATA[
server_application_traffic_secret =
  MLS-Exporter("MLS-TLS s ap traffic", [], Length)

client_application_traffic_secret =
  MLS-Exporter("MLS-TLS c ap traffic", [], Length)
]]></sourcecode>
      <t>Where MLS-Exporter is defined in <xref target="RFC9420"/> and Length is the size of the
secret required by the TLS record layer.</t>
    </section>
    <section anchor="protecting-application-data-on-the-wire">
      <name>Protecting application data on the wire</name>
      <t>Application data is encoded as described in Section 5.1 of <xref target="RFC8446"/> and
protected as described in Section 5.2 of <xref target="RFC8446"/>. The keys derived from the
MLS group as described in Section <xref target="deriving-keys-for-record-layer-protection"/>
are used to calculate the traffic keys for record protection as described in
Section 7.3 of <xref target="RFC8446"/>.</t>
      <t>The application traffic secrets MUST be deleted after deriving the traffic keys.</t>
    </section>
    <section anchor="updating-record-layer-protection-keys">
      <name>Updating record layer protection keys</name>
      <t>The MLS two party profile allows both parties to update the MLS group created in
the initial key agreement phase. In the context of MLS-TLS, these
ConnectionUpdate and EpochKeyUpdate messages (as defined in
<xref target="I-D.draft-kohbrok-mls-two-party-profile"/>) are sent in place of key update
messages defined in <xref target="RFC8446"/>. Concretely, they are serialized and sent as
the <tt>content</tt> of a TLSInnerPlaintext message with <tt>type</tt> set to <tt>handshake</tt>.</t>
      <t>TODO: The two-party profile I-D should define a message similar to
<xref target="RFC9420"/>'s MLSMessage, which contains either a ClientHello, ServerHello,
ConnectionUpdate or EpochKeyUpdate. This is to allow recipients to know what to
deserialize when they receive an in-band update message.</t>
      <t>When a party is ready to start using the key material as specified in Section 4
of <xref target="I-D.draft-kohbrok-mls-two-party-profile"/>, the client derives new
application traffic secrets as specified in
<xref target="deriving-keys-for-record-layer-protection"/>. These secrets are then used to
further derive the traffic keys for record protection as described in Section
7.3 of <xref target="RFC8446"/>.</t>
      <t>Key material that is replaced in this way MUST be deleted.</t>
    </section>
    <section anchor="preventing-cross-protocol-attacks">
      <name>Preventing cross-protocol attacks</name>
      <t>TODO: Define a component that the initiator needs to include in its leaf node
and that MUST be included in the context of the MLS group. This purpose of the
component is to clearly mark the individual messages for use in the context of
MLS-TLS.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="I-D.draft-kohbrok-mls-two-party-profile">
        <front>
          <title>A two-party profile for MLS</title>
          <author fullname="Konrad Kohbrok" initials="K." surname="Kohbrok">
            <organization>Phoenix R&amp;D</organization>
          </author>
          <author fullname="Raphael Robert" initials="R." surname="Robert">
            <organization>Phoenix R&amp;D</organization>
          </author>
          <date day="3" month="February" year="2026"/>
          <abstract>
            <t>   TODO Abstract

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-kohbrok-mls-two-party-profile-00"/>
      </reference>
      <reference anchor="RFC8446">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </reference>
      <reference anchor="I-D.draft-ietf-mls-pq-ciphersuites">
        <front>
          <title>ML-KEM and Hybrid Cipher Suites for Messaging Layer Security</title>
          <author fullname="Rohan Mahy" initials="R." surname="Mahy">
         </author>
          <author fullname="Richard Barnes" initials="R." surname="Barnes">
            <organization>Cisco</organization>
          </author>
          <date day="4" month="November" year="2025"/>
          <abstract>
            <t>   This document registers new cipher suites for Messaging Layer
   Security (MLS) based on "post-quantum" algorithms, which are intended
   to be resilient to attack by quantum computers.  These cipher suites
   are constructed using the new Module-Lattice Key Encapsulation
   Mechanism (ML-KEM), optionally in combination with traditional
   elliptic curve KEMs, together with appropriate authenticated
   encryption, hash, and signature algorithms.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mls-pq-ciphersuites-01"/>
      </reference>
      <reference anchor="RFC9420">
        <front>
          <title>The Messaging Layer Security (MLS) Protocol</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes"/>
          <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
          <author fullname="R. Robert" initials="R." surname="Robert"/>
          <author fullname="J. Millican" initials="J." surname="Millican"/>
          <author fullname="E. Omara" initials="E." surname="Omara"/>
          <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
          <date month="July" year="2023"/>
          <abstract>
            <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9420"/>
        <seriesInfo name="DOI" value="10.17487/RFC9420"/>
      </reference>
    </references>
    <?line 210?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
