<?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.7 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-piraux-tcp-ao-tls-01" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="Opp-TCP-AO">Opportunistic TCP-AO with TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-piraux-tcp-ao-tls-01"/>
    <author initials="M." surname="Piraux" fullname="Maxime Piraux">
      <organization>UCLouvain &amp; WELRI</organization>
      <address>
        <email>maxime.piraux@uclouvain.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain &amp; WELRI</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="T." surname="Wirtgen" fullname="Thomas Wirtgen">
      <organization>UCLouvain &amp; WELRI</organization>
      <address>
        <email>thomas.wirtgen@uclouvain.be</email>
      </address>
    </author>
    <date year="2024" month="March" day="04"/>
    <area>Transport</area>
    <workgroup>TCPM</workgroup>
    <keyword>tcp</keyword>
    <keyword>tls</keyword>
    <keyword>tcp-ao</keyword>
    <abstract>
      <?line 52?>

<t>This document specifies an opportunistic mode for TCP-AO. In this mode, the TCP
connection starts with a well-known authentication key which is later replaced
by a secure key derived from the TLS handshake.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://obonaventure.github.io/draft-tcp-ao-tls/draft-piraux-tcp-ao-tls.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-piraux-tcp-ao-tls/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        TCPM Working Group 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/obonaventure/draft-tcp-ao-tls"/>.</t>
    </note>
  </front>
  <middle>
    <?line 59?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The TCP Authentication Option (TCP-AO) <xref target="RFC5925"/> provides integrity
protection for long-lived TCP connections. It assumes that the communicating
hosts share a Master Key Tuple (MKT). This MKT is used to derive traffic
keys to authenticate the TCP packets exchanged by the two hosts.
TCP-AO supports different authentication algorithms <xref target="RFC5926"/>.</t>
      <t>TCP-AO protects the integrity of all the packets exchanged during a TCP
connection, including the SYNs. Such a protection is important for some specific
services, but many applications would benefit from the integrity protection
offered by TCP-AO, notably against RST attacks that can happen later in the
connection. Unfortunately, from a deployment
viewpoint, for many applications that use long-lived TCP connections,
having an existing MKT on the client and the server before establishing a
connection is a severe limitation.</t>
      <t>This document proposes a way to derive a MKT from the TLS secure handshake <xref target="RFC8446"/>.
Before the TLS handshake completes, this document defines default keys which
offer a limited protection to the first TCP packets of the connection.
These default keys are then replaced by secure keys to protect the integrity of
subsequent packets past the TLS handshake. This
prevents packet injection attacks that could result in the failure of the TLS
connection.</t>
      <t>This document is organised as follows. We provide a brief overview of
Opportunistic TCP-AO in section <xref target="overview"/>. Then section <xref target="format"/> discusses the
required changes to TCP-AO and TLS.</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 anchor="notational-conventions">
        <name>Notational conventions</name>
        <t>This document uses network byte order (that is, big endian) values.
Fields are placed starting from the high-order bits of each byte.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>An overview of Opportunistic TCP-AO</name>
      <t>In a nutshell, an opportunistic TCP-AO connection starts like a TCP-AO
connection, i.e. the SYNs and all subsequent packets are authenticated,
but using a MKT with a default key specified in this document.
Then, during the TLS handshake,
both endpoints announce the parameters they will use for their MKT. When the
TLS handshake completes, they can use their MKT to protect the TCP packets they
send and use their peer MKT to verify the TCP packets they receive.
Thus, the beginning of the connection is not protected against
packet modifications and packet injection attacks. The real protection only
starts once the TLS handshake finishes.</t>
      <t>Figure <xref target="fig-overview-handshake"/> illustrates the establishment of an
opportunistic TCP-AO connection. The client sends a SYN packet using
the default MKT defined in this document. The TCP-AO option in the SYN
packet indicates the use of this default MKT. The server validates the TCP-AO
option and replies with an integrity protected SYN+ACK.
The client confirms the establishment
of the TCP-AO connection with an ACK and sends a TLS ClientHello containing
the AO Extension defined in this document. This
extension specifies the authentication algorithms that the client will use when
sending TCP packets on the connection and whether TCP options will be protected.
At this point the server can derive the TLS keys and the TCP-AO keys to use
for validating clients packet.
The server replies with TLS ServerHello and TLS EncryptedExtensions
messages that are sent in packets using the default TCP-AO MKT.
To finish the setting up of TCP-AO, the server includes the AO Extension in
in the sent EncryptedExtensions to announce the parameters it will use to
protect the packets it will send.
It then installs the new key in its TCP-AO MKT.
Upon reception of these messages, the client can derive the TLS and
TCP-AO keys. It installs the TCP-AO keys in its MKT and sends the Finished
message protected with the new MKT. All the packets exchanged after the
Finished are protected using the MKT derived from the secure TLS handshake.</t>
      <figure anchor="fig-overview-handshake">
        <name>Starting an opportunistic TCP-AO connection with TLS. The messages between brackets are authenticated using the TCP-AO MKT derived from the TLS handshake.</name>
        <artwork><![CDATA[
Client                                   Server
 |            SYN (KeyID=0, RNextID=0)       |
 |------------------------------------------>|
 |          SYN+ACK (KeyID=0, RNextID=0)     |
 |<------------------------------------------|
 |       ACK, TLS ClientHello + AO           |
 |          (KeyID=0, RNextID=0)             |
 |------------------------------------------>|
 |  TLS ServerHello, TLS Enc.Extensions + AO |
 |          (KeyID=0, RNextID=x)             |
 |<------------------------------------------|
 |              [TLS Finished]               |
 |           (KeyID=x, RNextID=y)            |
 |------------------------------------------>|
 |              [TLS records]                |
 |           (KeyID=y, RNextID=x)            |
 |<----------------------------------------->|
]]></artwork>
      </figure>
    </section>
    <section anchor="format">
      <name>Opportunistic TCP-AO</name>
      <section anchor="the-tcpao-tls-extension">
        <name>The TCPAO TLS Extension</name>
        <t>This document specifies one TLS extension to support the opportunistic
utilization of TCP-AO with keys derived from the TLS secure handshake.
The extension is used by endpoints to specify the parameters of the MKT
they will use to protect the TCP packets they send.</t>
        <artwork><![CDATA[
enum {
    tcp_ao(TBD),
    (65535)
} ExtensionType;
]]></artwork>
        <t>The format for the "tcp_ao" extension is defined by:</t>
        <artwork><![CDATA[
   enum {
      tcp_option_protection_disabled(0),
      tcp_option_protection_enabled(1),
      (255)
   } TCPAOOptionProt;

   enum {
      HMAC-SHA-1-96(0),
      AES-128-CMAC-96(1),
      (255)
   } TCPAOAuth;

   enum {
      KDF_HMAC_SHA1(0),
      KDF_AES_128_CMAC(1),
      (255)
   } TCPAOKDF;

   struct {
      TCPAOOptionProt prot;
      TCPAOAuth auth;
      TCPAOKDF kdf;
   } TCPAO;
]]></artwork>
        <t>The TCPAOOptionProt indicates whether the endpoint will protect the integrity
of TCP options or not. The TCPAOAuth specifies
the authentication algorithm defined in <xref target="RFC5926"/> that will be
used to protect the packets. The TCPAOKDF specifies the key derivation
function defined in <xref target="RFC5926"/> and that the endpoint will use to derive its
keys.</t>
      </section>
      <section anchor="the-initial-mkt">
        <name>The initial MKT</name>
        <t>To support the establishment of opportunistics TCP-AO connections, the
client and the server must be configured with a default MKT. This default
MKT is used to authenticate the packets until the derivation of the secure
MKT from the TLS keying material. This document defines the following default MKT:</t>
        <ul spacing="normal">
          <li>
            <t>TCP connection identifier: selected by the TCP stack.</t>
          </li>
          <li>
            <t>TCP option flag. The default MKT assumes that TCP options are not included
in the MAC calculation.</t>
          </li>
          <li>
            <t>The current values for the SendID and RecvID are set to 0.</t>
          </li>
          <li>
            <t>The Master secret is set to 0x1cebb1ff.</t>
          </li>
          <li>
            <t>The default key derivation function is KDF_HMAC_SHA1.</t>
          </li>
          <li>
            <t>The default message authentication code is HMAC-SHA-1-96.</t>
          </li>
        </ul>
        <t>Given that the TCP-AO KeyID is a local field and has no global meaning,
hosts have no guarantee that a KeyID of 0 will be unequivocally recognised as
designating the default MKT specified in this document.
<xref section="7.5.1" sectionFormat="of" target="RFC5925"/> indicates that hosts receiving SYN segments with
TCP-AO enabled and no matching MKT should remove the option and accept them.
A client initiating a TCP connection in the opportunistic mode of TCP-AO
<bcp14>MUST</bcp14> check that the server accepted the use of TCP-AO in this mode by replying
using the default MKT before deriving a secure MKT as described in this
document.</t>
      </section>
      <section anchor="derivation-of-the-secure-tcp-ao-mkt">
        <name>Derivation of the secure TCP AO MKT</name>
        <t>The Master key for the MKT to protect the TCP packets after the transmission
of the Finished messages are derived from the Exporter Master Secret using
Keying Material Exporters <xref target="RFC5705"/>:</t>
        <artwork><![CDATA[
struct {
   TCPAO ao;
   uint8 key_id;
} TCPAOKeyExporterContext;
]]></artwork>
        <artwork><![CDATA[
TLS-Exporter("tcp-ao", TCPAOKeyExporterContext, 32)
   = tcp_ao_secret
]]></artwork>
        <t>The TLS-Exporter function receives the label "tcp-ao", with the parameters of
the MKT and the KeyID as context as defined in the TCPAO structure within
<xref target="the-tcpao-tls-extension"/>. It generates a 32-byte secret.</t>
        <t>The client and server can decide the value of the KeyID independently and
announce it in the AO TCP Option as defined in <xref target="RFC5925"/>.
The KeyID <bcp14>MUST</bcp14> be different than the default KeyID of 0.</t>
        <t>The traffic keys used by the client and the server can then be derived
from this secret using the procedures defined in <xref target="RFC5925"/> and
<xref target="RFC5926"/>.</t>
        <t>After the traffic keys are installed, the client and server stop using the
initial MKT defined in <xref target="the-initial-mkt"/>.</t>
      </section>
      <section anchor="current-limitations">
        <name>Current limitations</name>
        <t>This version of the document does not specifiy how to do key updates for MKTs.
It is left for later versions of this document to fill this gap.
One way would be to derive a new tcp_ao_secret from the previous tcp_ao_secret
and use a new KeyID. However, this could expose the key update
event to on-path attackers. Further guidance is required on the severity of
this issue and how it could be mitigated.</t>
        <t>Later versions of this document will also specify the interactions between this
mode of enabling TCP-AO and other TLS mechanisms, such as using pre-shared keys
and 0-RTT data, as well as other TCP extensions, such as TCP Fast Open.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TCP-AO provides a protection against the injection of TCP RST. This can impact
legitimate connectionless resets, e.g. when an endpoint loses the required state
to send TCP-AO segments. <xref section="7.7" sectionFormat="of" target="RFC5925"/> provides recommendations to
mitigate this effect.</t>
      <t>Using TCP-AO with TLS can also inhibits the triggering of the "bad_record_mac"
alert that abruptly closes the TLS session when a decryption error occurs. For
instance, injected packets will fail the TCP-AO authentication and be ignored
by the receiver instead. This also prevents sessionless resets at the TLS level,
and similar recommendations to <xref section="7.7" sectionFormat="of" target="RFC5925"/> can apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to create a new "Opportunistic TCP-AO with TLS" heading for
the new registries defined in this section. New registrations under this heading
follow the "Specification Required" policy of <xref target="RFC8126"/>.</t>
      <t>IANA is requested to add the following entries to the existing "TLS
ExtensionType Values" registry.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Extension Name</th>
            <th align="left">TLS 1.3</th>
            <th align="left">Recommended</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">tcp_ao</td>
            <td align="left">CH, EE</td>
            <td align="left">N</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
      <t>Note that "Recommended" is set to N as this extension is intended for
uses as described in this document.</t>
      <t>IANA is requested to create a new registry "Authentication Algorithms" under
the "Opportunistic TCP-AO with TLS" heading.</t>
      <t>The registry governs an 8-bit space. Entries in this registry must include a
"Algorithm name" field containing a short mnemonic for the algorithm. Its
initial content is presented in <xref target="the-tcpao-tls-extension"/> in
the TCPAOAuth enum. The registry has a "Reference" column. It is set to
<xref target="RFC5926"/> for the two initial algorithms.</t>
      <t>IANA is requested to create a new registry "Key Derivation Functions" under
the "Opportunistic TCP-AO with TLS" heading.</t>
      <t>The registry governs an 8-bit space. Entries in this registry must include a
"Key Derivation Function name" field containing a short mnemonic for the function. Its
initial content is presented in <xref target="the-tcpao-tls-extension"/> in
the TCPAOKDF enum. The registry has a "Reference" column. It is set to
<xref target="RFC5926"/> for the two initial functions.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Dimitri Safonov for the TCP-AO implementation in Linux.
The authors thank Michael Tüxen, Yoshifumi Nishida and Alessandro Ghedini for
their questions and comments on the document during the TCPM meeting at IETF 118.</t>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change log</name>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC5925">
        <front>
          <title>The TCP Authentication Option</title>
          <author fullname="J. Touch" initials="J." surname="Touch"/>
          <author fullname="A. Mankin" initials="A." surname="Mankin"/>
          <author fullname="R. Bonica" initials="R." surname="Bonica"/>
          <date month="June" year="2010"/>
          <abstract>
            <t>This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5). TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5. TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints. The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes. TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously. TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5925"/>
        <seriesInfo name="DOI" value="10.17487/RFC5925"/>
      </reference>
      <reference anchor="RFC5705">
        <front>
          <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="March" year="2010"/>
          <abstract>
            <t>A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes. This document describes a general mechanism for allowing that. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5705"/>
        <seriesInfo name="DOI" value="10.17487/RFC5705"/>
      </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="RFC5926">
        <front>
          <title>Cryptographic Algorithms for the TCP Authentication Option (TCP-AO)</title>
          <author fullname="G. Lebovitz" initials="G." surname="Lebovitz"/>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="June" year="2010"/>
          <abstract>
            <t>The TCP Authentication Option (TCP-AO) relies on security algorithms to provide authentication between two end-points. There are many such algorithms available, and two TCP-AO systems cannot interoperate unless they are using the same algorithms. This document specifies the algorithms and attributes that can be used in TCP-AO's current manual keying mechanism and provides the interface for future message authentication codes (MACs). [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5926"/>
        <seriesInfo name="DOI" value="10.17487/RFC5926"/>
      </reference>
      <reference anchor="RFC8126">
        <front>
          <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
          <author fullname="M. Cotton" initials="M." surname="Cotton"/>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <author fullname="T. Narten" initials="T." surname="Narten"/>
          <date month="June" year="2017"/>
          <abstract>
            <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
            <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
            <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="26"/>
        <seriesInfo name="RFC" value="8126"/>
        <seriesInfo name="DOI" value="10.17487/RFC8126"/>
      </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>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
