<?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.1 (Ruby 2.7.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-piraux-tcp-ao-tls-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="Opp-TCP-AO">Opportunistic TCP-AO with TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-piraux-tcp-ao-tls-00"/>
    <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="2023" month="October" day="23"/>
    <area>Transport</area>
    <workgroup>TCPM</workgroup>
    <keyword>tcp</keyword>
    <keyword>tls</keyword>
    <keyword>tcp-ao</keyword>
    <abstract>
      <?line 51?>

<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 a 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 58?>

<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.
After the TLS secure handshake, the
communicating hosts derive secure keys and update their MKT with these
secure keys. 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. The TCP packets carrying the TLS
Finished message, and all subsequent TLS records, are protected with the
secure traffic keys derived from the TLS handshake.</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. This
ClientHello contains the AO Extension defined in this document. This
extension specifies the authentication algorithms that the client wishes
to use for the connection and whether TCP options should be protected or
not. At this point the server can derive the TLS keys and the TCP-AO keys.
The server replies with TLS ServerHello and TLS EncryptedExtensions
messages that are sent in packets using the default TCP-AO MKT. It 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 EncryptedExtensions |
 |          (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 "tcp_ao" extension can only be placed in the ClientHello message.</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 client requests integrity
protection for the TCP options or not. The TCPAOAuth specifies
the authentication algorithm defined in <xref target="RFC5926"/> that will be
used to protect the packets starting from the transmission
of the Finished message. The TCPAOKDF specifies the key derivation
function defined in <xref target="RFC5926"/> and requested by the client to derive the
keys from the TLS Master Key.</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 Master Key. 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 key 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 shall be derived from the TLS Master secret using:</t>
        <artwork><![CDATA[
  Derive-Secret(Master Secret, "tcpao", ClientHello...server Finished)
     = tcp_ao_secret

]]></artwork>
        <t>The traffic keys used by the client and the server can then be derived
from this Master key using the procedures defined in <xref target="RFC5925"/> and
<xref target="RFC5926"/>.</t>
        <t>The client and the server also need to decide on the key identifier
to use after having sent (for the server) or received (for the client) the
Finished message. This is a local decision of each host provided that they
select a different key identifier than the default KeyID of 0.</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 the
MKT. 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>
        <t>{::comment}</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 as in <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</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.</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="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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
AA==

-->

</rfc>
