<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-baerts-tcpm-mptcpext-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title>Multipath TCP with external keys</title>
    <seriesInfo name="Internet-Draft" value="draft-baerts-tcpm-mptcpext-00"/>
    <author fullname="Matthieu Baerts">
      <organization>UCLouvain</organization>
      <address>
        <email>matthieu.baerts@uclouvain.be</email>
      </address>
    </author>
    <author fullname="Olivier Bonaventure">
      <organization>UCLouvain &amp; WELRI</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <area>Transport</area>
    <workgroup>TCPM</workgroup>
    <keyword>mptcp</keyword>
    <abstract>
      <?line 41?>

<t>This document proposes an extension to Multipath TCP that allows application
layer protocols such as TLS or SSH to provide keys to authenticate the creation
of new subflows.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ipnetworkinglab.github.io/draft-mptcp-ext/draft-baerts-tcpm-mptcpext.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-baerts-tcpm-mptcpext/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        TCPM Individual mailing list (<eref target="mailto:tcpm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tcpm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tcpm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/IPNetworkingLab/draft-mptcp-ext"/>.</t>
    </note>
  </front>
  <middle>
    <?line 48?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document addresses an important limitation of Multipath TCP <xref target="RFC8684"/>:
the exchange of plain text keys during the handshake.</t>
      <t>From a security viewpoint, Multipath TCP is vulnerable to on-path attacks
<xref target="RFC6181"/>. Since Multipath TCP relies on keys that are exchanged in clear
during the handshake, an on-path attacker can easily collect the authentication
keys and later establish a subflow on an existing Multipath TCP connection. If
this connection is used to support secure protocols such as TLS <xref target="RFC8446"/> or
SSH <xref target="RFC4253"/>, the attacker will only be able to disrupt the connection.</t>
      <t>This document proposes a modification to the MP_CAPABLE and MP_JOIN options that
enables Multipath TCP hosts to use keys that are derived by upper layer
protocols such as TLS or SSH. This idea has already been discussed in the past
<xref target="I-D.paasch-mptcp-ssl-00"/>,
<xref target="I-D.paasch-mptcp-application-authentication-00"/> and
<xref target="I-D.paasch-mptcp-tls-authentication-00"/>. We provide an overview of this
extension in <xref target="overview"/> and describe the protocol modifications in
<xref target="changes"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="overview">
      <name>Protocol overview</name>
      <t>This document proposes an extension that allows Multipath TCP to use either a
pre-configured key or a key derived by an upper layer security protocol to
authenticate the advertisement of additional addresses, the establishment of new
subflows, and the abrupt closure of a whole connection. This extension is
negotiated during the establishment of the Multipath TCP connection by setting
the TBD bit in the MP_CAPABLE option. This is illustrated in
<xref target="fig-e-handshake"/>.</t>
      <figure anchor="fig-e-handshake">
        <name>Negotiation of the utilization of external keys</name>
        <artwork><![CDATA[
   Host A                                  Host B
   ------                                  ------
   MP_CAPABLE                ->
   [flags (TBD is set)]
                             <-            MP_CAPABLE
                                           [B's token, flags (TBD is set)]
   ACK + MP_CAPABLE (+ data) ->
   [A's token, B's token, flags, (data-level details)]
]]></artwork>
      </figure>
      <t>If the TBD flag is set and the responder supports the option, it returns an
MP_CAPABLE that contains the 32-bit token that it uses to identify this
connection. The connection initiator replies with an MP_CAPABLE option
containing its 32-bit token and the remote 32-bit token.</t>
      <t>This modification has two important advantages compared to Multipath TCP version
1 <xref target="RFC8684"/>. First, the MP_CAPABLE option is shorter. It contains only two
32-bit tokens instead of two 64-bit keys in the third ACK. Second, the token is
not derived from a random key using a hash function. This implies that there is
no risk of collision between a new key and a token used for an existing
connection. The token must uniquely identify the associated connection and
should be selected randomly <xref target="RFC4086"/>.</t>
      <t>After the handshake, host A and host B cannot create additional subflows or
exchange additional addresses. These operations can only occur once they have
agreed on an external key. Once a host has learned an external key (e.g. through
configuration, socket option, or derived from a security protocol), it <bcp14>SHOULD</bcp14>
inform the other by sending a hash of this key in a NEW_KEY option a shown in
<xref target="fig-newkey-ex"/>. The key is installed once a host has received a hash of the
key from the other host.</t>
      <t>Security protocols need to change keys regularly for security reasons. Multipath
TCP version 1 <xref target="RFC8684"/> does not support changing the security keys. This
extension uses a key identifier to support key changes. All authenticated
options contain the K bit which is the identifier of the key used to
authenticate it. The initial external key corresponds to identifier 0.</t>
      <figure anchor="fig-newkey-ex">
        <name>Confirmation of the utilization of a new external key</name>
        <artwork><![CDATA[
   Host A                                  Host B
   ------                                  ------
   NEW_KEY [K,hash(ExtKey)]         ->

                                  <-       NEW_KEY[K,hash(ExtKey)]

]]></artwork>
      </figure>
      <t>The key identifier is included in the modified ADD_ADDR, MP_JOIN and FASTCLOSE
options described later in this document.</t>
    </section>
    <section anchor="changes">
      <name>Changes to Multipath TCP</name>
      <t>This section describes the changes to the Multipath TCP options that are
required to support external keys.</t>
      <section anchor="mpc">
        <name>Extending the MP_CAPABLE and MP_JOIN options</name>
        <t><xref target="RFC8684"/> defines the MP_CAPABLE option as shown in <xref target="fig-oldmpc"/>.</t>
        <figure anchor="fig-oldmpc">
          <name>The MP_CAPABLE option in RFC8684</name>
          <artwork><![CDATA[
                          1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------+---------------+-------+-------+---------------+
     |     Kind      |    Length     |Subtype|Version|A|B|C|D|E|F|G|H|
     +---------------+---------------+-------+-------+---------------+
     |                   Option Sender's Key (64 bits)               |
     |                      (if option Length > 4)                   |
     |                                                               |
     +---------------------------------------------------------------+
     |                  Option Receiver's Key (64 bits)              |
     |                      (if option Length > 12)                  |
     |                                                               |
     +-------------------------------+-------------------------------+
     |  Data-Level Length (16 bits)  |  Checksum (16 bits, optional) |
     +-------------------------------+-------------------------------+
]]></artwork>
        </figure>
        <t>This option contains several flags, A-H. Flags A, B, C, and H are specified in
<xref target="RFC8684"/>. This document changes the TBD Flag. If this Flag is set in a SYN,
this indicates the utilization of external keys. An external key is a key which
is either known, e.g. by configuration as a shared secret, or derived from a
negotiated secure key, e.g. by protocols such as SSH or TLS. This key is used as
an authentication key for the establishment of additional subflows.</t>
        <t>A Multipath TCP implementation maintains two 64-bit keys:</t>
        <ul spacing="normal">
          <li>
            <t>a local key chosen by the host and exchanged during the handshake</t>
          </li>
          <li>
            <t>a remote key learned during the handshake</t>
          </li>
        </ul>
        <t>As specified in <xref target="RFC8684"/>, a local 32-bit token and a remote 32-bit token are
derived from these keys. The keys and the token are known at the end of the
handshake.</t>
        <t>When the external keys are used, the situation is different. The connection
initiator sends an empty MP_CAPABLE option in its SYN segment. A responder that
receives a SYN with the MP_CAPABLE option having the TBD bit set responds with
an MP_CAPABLE option and the TBD bit set if it supports the external keys.
Otherwise, it replies with an MP_CAPABLE option whose TBD bit is reset and
follows the procedure defined in <xref target="RFC8684"/>.</t>
        <t>If the responder replies with an MP_CAPABLE option whose TBD Flag is set, the
option in the SYN+ACK contains the 32-bit token that it uses to identify this
connection.</t>
        <t>Upon reception of the SYN+ACK, the connection initiator replies with a third ACK
that contains an MP_CAPABLE option with the TBD bit set. This option contains
the initiator and the responder tokens.</t>
        <figure anchor="fig-newmpc">
          <name>The modified MP_CAPABLE option</name>
          <artwork><![CDATA[
                          1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------+---------------+-------+-------+---------------+
     |     Kind      |    Length     |Subtype|Version|A|B|C|D|E|F|G|H|
     +---------------+---------------+-------+-------+---------------+
     |                   Option Sender's Token (32 bits)             |
     |                      (if option Length > 4)                   |
     +---------------------------------------------------------------+
     |                  Option Receiver's Token (32 bits)            |
     |                      (if option Length > 8)                   |
     +-------------------------------+-------------------------------+
     |  Data-Level Length (16 bits)  |  Checksum (16 bits, optional) |
     +-------------------------------+-------------------------------+
]]></artwork>
        </figure>
        <t>If the TBD bit was set in the MP_CAPABLE option of the SYN+ACK, this indicates
that there are no security keys associated with the connection. This implies
that it is impossible to advertise addresses or join an additional subflow until
external keys have been exchanged.</t>
      </section>
      <section anchor="changing-the-external-key">
        <name>Changing the external key</name>
        <t>Once the Multipath TCP connection has been established, the applications can
decide to use an external key.</t>
        <t>Once the hosts have agreed on an external key to use to authenticate the
MP_JOIN, ADD_ADDR, and MP_FASTCLOSE options on a connection, they inform the
other host by sending a NEW_KEY option. This option is shown in <xref target="fig-newkey"/>.</t>
        <figure anchor="fig-newkey">
          <name>The NEW_KEY option</name>
          <artwork><![CDATA[
                          1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------+---------------+-------+-----+-+---------------+
     |  NEW_KEY      |  Length = 12  |Subtype|(rsv)|K|       0       |
     +---------------+---------------+-------+-----+-+---------------+
     |               Low order HMAC of the external key              |
     |                           (64 bits)                           |
     +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>This new option contains two pieces of information:</t>
        <ul spacing="normal">
          <li>
            <t>a one-bit key identifier (K)</t>
          </li>
          <li>
            <t>a 64-bit HMAC of the external key</t>
          </li>
        </ul>
        <t>The key identifier identifies the last key exchanged on a connection. The key
identifiers start at 0, i.e. the first NEW_KEY option contains the K bit set to
zero. The 64-bit HMAC contains the low order 64 bits of a HMAC of the external
key computed using the negotiated hash algorithm. The key for this HMAC, in the
case of a message transmitted by Host A, is Token-A followed by Token-B; and in
the case of Host B, Key-B followed by Key-A. The "message" for the HMAC
algorithm in each case is the external key.</t>
        <t>Once a host has sent a NEW_KEY option, it <bcp14>SHOULD</bcp14> start a timer. If it does not
receive an option containing the same hash value, it should retransmit the
option.</t>
        <t>A host must store two external keys:</t>
        <ul spacing="normal">
          <li>
            <t>the current one</t>
          </li>
          <li>
            <t>the next key</t>
          </li>
        </ul>
        <t>A key is considered to be active once a host has received a NEW_KEY option
containing a HMAC of this key. If a host receives a NEW_KEY option whose HMAC
and key identifier do not match the stored ones, it simply discards the option.</t>
      </section>
      <section anchor="using-the-external-key">
        <name>Using the external key</name>
        <t>While Multipath TCP version 1 uses two different keys announced by the
communicating hosts, the external key is a key shared by both hosts. <xref target="RFC8684"/>
defined several procedures that rely on these two keys to authenticate the
establishment of subflows using the MP_JOIN option, the advertisement for new
addresses, or the fast termination of a connection.</t>
        <t>These procedures change with an external key. The first modification is that
these options now contain a K bit that indicates the identifier of the external
key used to (request to) authenticate the option. The second modification is
that instead of computing HMACs over KeyA||KeyB, the HMACs defined in
<xref target="RFC8684"/> are now computed using the external key whose identifier is K.</t>
        <t>The new format of the MP_JOIN option is shown in <xref target="fig-newmpjoin"/>.</t>
        <figure anchor="fig-newmpjoin">
          <name>The modified MP_JOIN option</name>
          <artwork><![CDATA[
                          1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------+---------------+-------+-----+-+---------------+
     |     Kind      |  Length = 12  |Subtype|(r)|K|B|   Address ID  |
     +---------------+---------------+-------+-----+-+---------------+
     |                   Receiver's Token (32 bits)                  |
     +---------------------------------------------------------------+
     |                Sender's Random Number (32 bits)               |
     +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>The new format of the ADD_ADDR option is shown in <xref target="fig-newaddr"/>.</t>
        <figure anchor="fig-newaddr">
          <name>The modified ADD_ADDR option</name>
          <artwork><![CDATA[
                       1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +---------------+---------------+-------+-------+---------------+
  |     Kind      |     Length    |Subtype|(r)|K|E|  Address ID   |
  +---------------+---------------+-------+-------+---------------+
  |           Address (IPv4: 4 octets / IPv6: 16 octets)          |
  +-------------------------------+-------------------------------+
  |   Port (2 octets, optional)   |                               |
  +-------------------------------+                               |
  |                Truncated HMAC (8 octets, if E=0)              |
  |                               +-------------------------------+
  |                               |
  +-------------------------------+
]]></artwork>
        </figure>
        <t>The modified format of the MP_FASTCLOSE option is shown in <xref target="fig-fclose"/>. This
option does no longer contain the receivers' key as in <xref target="RFC8684"/>. Instead, it
contains a truncated HMAC of the external key. The key for this HMAC is, in the
case of a message transmitted by Host A, Token-A followed by Token-B; and in the
case of Host B, Token-B followed by Token-A. The "message" for the HMAC
algorithm is, in each case, the external key. The K bit indicates the
corresponding key identifier.</t>
        <t>A host can still reset an MPTCP connection before the initial external keys got
exchanged, while there is only one subflow then. This <bcp14>SHOULD</bcp14> be done by sending
a TCP RST.</t>
        <figure anchor="fig-fclose">
          <name>The modified MP_FASTCLOSE option</name>
          <artwork><![CDATA[
                       1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +---------------+---------------+-------+-----------------------+
  |     Kind      |    Length     |Subtype|(rsv)|K|  (reserved)   |
  +---------------+---------------+-------+-----------------------+
  |                         Truncated HMAC                        |
  |                            (64 bits)                          |
  +---------------------------------------------------------------+

]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The solution proposed in this document aims at preventing the attacks where an
on-path attacker observes the keys associated with a Multipath TCP connection.
Since these keys are not exposed anymore, attackers cannot use them to add
subflows to an existing Multipath TCP connection.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests the IANA to reserve flag TBD of the MP_CAPABLE option as
defined in this document. It proposes to use the E flag. It also proposes to add
the K bit to the MP_JOIN, ADD_ADDR, and MP_FASTCLOSE options. Finally, it
defines the NEW_KEY option. Subtype 0x9 is suggested for this option.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8684">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="A. Ford" initials="A." surname="Ford"/>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure"/>
            <author fullname="C. Paasch" initials="C." surname="Paasch"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers. The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and thus improve user experience through higher throughput and improved resilience to network failure.</t>
              <t>Multipath TCP provides the ability to simultaneously use multiple paths between peers. This document presents a set of extensions to traditional TCP to support multipath operation. The protocol offers the same type of service to applications as TCP (i.e., a reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths.</t>
              <t>This document specifies v1 of Multipath TCP, obsoleting v0 as specified in RFC 6824, through clarifications and modifications primarily driven by deployment experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8684"/>
          <seriesInfo name="DOI" value="10.17487/RFC8684"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. 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="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6181">
          <front>
            <title>Threat Analysis for TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>Multipath TCP (MPTCP for short) describes the extensions proposed for TCP so that endpoints of a given TCP connection can use multiple paths to exchange data. Such extensions enable the exchange of segments using different source-destination address pairs, resulting in the capability of using multiple paths in a significant number of scenarios. Some level of multihoming and mobility support can be achieved through these extensions. However, the support for multiple IP addresses per endpoint may have implications on the security of the resulting MPTCP. This note includes a threat analysis for MPTCP. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6181"/>
          <seriesInfo name="DOI" value="10.17487/RFC6181"/>
        </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="RFC4253">
          <front>
            <title>The Secure Shell (SSH) Transport Layer Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>The Secure Shell (SSH) is a protocol for secure remote login and other secure network services over an insecure network.</t>
              <t>This document describes the SSH transport layer protocol, which typically runs on top of TCP/IP. The protocol can be used as a basis for a number of secure network services. It provides strong encryption, server authentication, and integrity protection. It may also provide compression.</t>
              <t>Key exchange method, public key algorithm, symmetric encryption algorithm, message authentication algorithm, and hash algorithm are all negotiated.</t>
              <t>This document also describes the Diffie-Hellman key exchange method and the minimal set of algorithms that are needed to implement the SSH transport layer protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4253"/>
          <seriesInfo name="DOI" value="10.17487/RFC4253"/>
        </reference>
        <reference anchor="I-D.paasch-mptcp-ssl-00">
          <front>
            <title>Securing the MultiPath TCP handshake with external keys</title>
            <author fullname="Christoph Paasch" initials="C." surname="Paasch">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain</organization>
            </author>
            <date day="15" month="October" year="2012"/>
            <abstract>
              <t>   Multipath TCP currently relies on the exchange of keys in clear
   during the initial handshake to authenticate the establishment of
   additional subflows.  This document proposes a variant of the
   Multipath TCP handshake that allows Multipath TCP to reuse keys
   negotiated by the Application layer protocol above it such as SSL/TLS
   to authenticate the establishment of additional subflows.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-paasch-mptcp-ssl-00"/>
        </reference>
        <reference anchor="I-D.paasch-mptcp-application-authentication-00">
          <front>
            <title>Application Layer Authentication for MPTCP</title>
            <author fullname="Christoph Paasch" initials="C." surname="Paasch">
              <organization>Apple, Inc.</organization>
            </author>
            <author fullname="Alan Ford" initials="A." surname="Ford">
              <organization>Pexip</organization>
            </author>
            <date day="27" month="May" year="2016"/>
            <abstract>
              <t>   Multipath TCP (MPTCP), described in [3], is an extension to TCP to
   provide the ability to simultaneously use multiple paths between
   hosts.

   MPTCP currently specifies a single authentication mechanism, using
   keys that are initially exchanged in the clear.  There are
   application-layer protocols that may have better information as to
   the identity of the parties and so is able to better provide keying
   material that could be used for the authentication of future
   subflows.

   This document specifies "application layer authentication" for
   Multipath TCP, an alternatively negotiated keying mechanism for
   MPTCP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-paasch-mptcp-application-authentication-00"/>
        </reference>
        <reference anchor="I-D.paasch-mptcp-tls-authentication-00">
          <front>
            <title>TLS Authentication for MPTCP</title>
            <author fullname="Christoph Paasch" initials="C." surname="Paasch">
              <organization>Apple, Inc.</organization>
            </author>
            <author fullname="Alan Ford" initials="A." surname="Ford">
              <organization>Pexip</organization>
            </author>
            <date day="27" month="May" year="2016"/>
            <abstract>
              <t>   Multipath TCP (MPTCP), described in [4], is an extension to TCP to
   provide the ability to simultaneously use multiple paths between
   peers.

   draft-paasch-mptcp-application-authentication specifies "application
   layer authentication" for Multipath TCP, an alternatively negotiated
   keying mechanism for MPTCP.  This allows keying material to be
   sourced from an application layer protocol in order to secure MP_JOIN
   handshakes.

   This document explains how to use the proposed application-layer
   authentication extension with TLS [6], in order to leverage securely
   exchanged keys for MPTCP security, whilst simultaneously freeing the
   MPTCP token to be used as a channel for additional information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-paasch-mptcp-tls-authentication-00"/>
        </reference>
      </references>
    </references>
    <?line 380?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work was supported by the Walloon government within the FRFS-WEL-T SEEIP
project. The idea of using external keys to secure Multipath TCP was initially
proposed in <xref target="I-D.paasch-mptcp-ssl-00"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1c63LbOJb+j6fAOlUz9kZS7MTjcXv6MvJt4rVje21nU11d
XV0QCUmYUKSGIO14bO+z7LPsk+25ACRIUbbTnemay6q6E4kEDw7O9TsHYPr9
vihMkegdufKuTAozV8VUXu2dyxsDX/SnQuepSuRHfWtXRKQKPcny2x1pi1iI
OItSNYNH41yNi/5I6byw/SKaz/qzOfwFT/fX14UtRzNjrcnS4nYOo48Org6l
fCFVYjOY1qSxnmv4Iy1WenJFx6bIcqMS/HE03IW/shy+XVwdroi0nI10viNi
YGRHRFlqdWpLuyOLvNTieke+ESrXCqhe5Sq18ywvVsRNln+c5Fk5x8t75+9W
BKwGLsY7QvYlcSqudVoCRSmbA6VklleO0thcm7gEtuDiTJkELuJK/2h0MR5k
+QSvqzyawvVpUcztzqtXOAwvmWs98MNe4YVXozy7sfoVEniFD05A2OUI5zk/
1QUybNLJiRq9YskSj30QJ45NYO22CKYx87R6JlGjARMbmKz99KvlehpMixks
TaiymGY5CgZmknJcJgmr+J0qiqnRpdylp+kuLEel5q+qANXuyPd7J1l5rUxK
9zTLaOYeG/CkfyyjhAcNRnpxkrMEhKxzuZulCjRSlLl+bCL5G/nh4OTiKJww
YxKDUU2iOalIsxy4Ap2gui8O97a3tjd3hDDpOLgB17c2tjf42/bm5hZ/23z9
uzcwtt/vSzWyRa6iQoirqbESfKGcwXxynmfzzGorVUruk6LhyyKTTfcqpqoA
D0jADqSazxMT0epEom5BAECkyKIssdKW0VQqK69OLtEPLi/fIi24D9aoyS3x
N6oNJkciGkhrGYEXEL1sLFN9A2RGY5xrIJj7mYnjBITxQh6lRZ7FZUSjW2tR
cZxr6xZjZuhOCi4nZmYKIi+BfHNdd3dOpA8POwI50Z+iqUonGofOE9RaAWJh
zuMyB5slhmFMbKfqowYOD/NsJpW0OoL7xa0Ehd7MM5MWvdZkwOt1maQ6V6NE
oxyytE83wepU9NEK4gYV+fAwkJcmjXSLQq4TA8uDlbAoSSt5zXUsgeEo0SoX
Xcz2UDDNSUF7EapeWZPcStBhoqOCngqUhLKmCYEQOXQuwadhFcZOceWsLWSL
rMjYAqdusg7RL9WktoE8GoOsQRr1NZRNaYF/kIot56g6FqheYlysOLD0hwcw
NIGGRpfQ5B8eerwCv8IbkyTAHSxwBFed8GNj83LOaw2YW+4gcpbFZuzkgRTw
yXfnP+0Nz4e7JwckHPj5H2dHpzKb4yDWkNApzmlbAplmtiBvgHW31BnrHPw6
lqNbCbKABZCbicfcbCCJbfAyBfoGbhNwqRgXrFNcalRay+aBXM+VLcDavjvq
7w/mStlo6sKutQnkQBBg593A8/tN86CHUAKdzxWJ7Ro/kB90FRvQMq91js6D
vof2IeqABHzf3fn7PBNIyUa5GXEE8bJpKAnkkQJD7BsWJhQYQvayFEMt3Uc6
+3psUkO/UfmkDIkJ1wLIeH95hZkd/5anZ/T94uA/3x9dHOzj98u3w5OT6otw
Iy7fnr0/2a+/1U/unb17d3C6zw/DVdm4JFbeDb9f6RFXK2fnV0dnp8OTFVZa
I9DlZMGwdIgyOp/nugDdKiu8SEjRu3vn//s/G5sguH8Dx3i9sfEVCI5/bG/8
HiKevAGN8GzkHPwTpHkrQNMQRJAKBH2IEHOIoIntoc3ZaXaTyqnOMfb9+w8o
mR935NejaL6x+a27gAtuXPQya1wkmS1eWXiYhdhxqWOaSpqN6y1JN/kdft/4
7eUeXPz6u8SkWvY3tr/7VpANnXtzq2z27kVlns/MsUFKbSVbjgkagBH4vgK/
132IUGMzgXgYk3mC0yv6EoQKoB5EizofVa5RZGIh86oYuC6M1cQpOB4kUfIF
QNFVPuVwWoV8PxQytfCZms2IKI4orAKIsRi+kSRYVpY0oixHq8C/rUgBqxdG
oSUHuWthUgq6SzILSsHqArMPJfOr3X05MoWPekGs5vjsgyb8lyQlAqSCXAdi
Bgi7r/tV5uTY8d/LPwjq3kJEl0P55IfG7eITffo8/QSPwyeCNbTHfIv3fxgn
amLlKi4d1gXSWPtRPEr768b8Nf3Hn2p+ftj9Laayjxg/ljAw3DuWL0P2V19K
qIvUmmd8WJNoU+vJVRzaT/S1TsDkC8DOFsg+po+7HfmipURJpeM3K6fO0hwi
RNMoC5M4xI6XmoUkOPQRD8NFIUduZZXNg5vMM6gJcw9eLF1mK+tJMEEI0WVO
CUcEMqAYAPYLC0r5kTev+2ixtHq+Db9KDB4QFQxWnWZ8y9mx6U66gaYwnyko
TGHeOUFGqo8hQiz4gHDTo8MZ4LvBQL2+WVY0mfNAqQGKEHlAbReAb4gv8JeC
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
pW/cDsT/AeyNDVrdQgAA

-->

</rfc>
