<?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 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-piraux-tcp-ao-tls-03" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="Opp-TCP-AO">Opportunistic TCP-AO with TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-piraux-tcp-ao-tls-03"/>
    <author initials="M." surname="Piraux" fullname="Maxime Piraux">
      <organization>UCLouvain</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</organization>
      <address>
        <email>thomas.wirtgen@uclouvain.be</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <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>
        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/IPNetworkingLab/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 mechanism can be used to authenticate the TCP packets of BGP sessions when TLS
is used as discussed in <xref target="CONEXT24"/>.</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 own 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
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 message 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>
        <t>A similar extension could be defined for other protocols that derive a
security key such as SSH <xref target="RFC4253"/>.</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 inhibit 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-combined-references">
      <name>References</name>
      <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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CONEXT24">
          <front>
            <title>The Multiple Benefits of a Secure Transport for BGP</title>
            <author fullname="Thomas Wirtgen" initials="T." surname="Wirtgen">
              <organization>ICTEAM, UCLouvain &amp;amp; WEL Research Institute, Louvain-la-Neuve, Walloon Brabant, BE</organization>
            </author>
            <author fullname="Nicolas Rybowski" initials="N." surname="Rybowski">
              <organization>ICTEAM, UCLouvain &amp;amp; WEL Research Institute, Louvain-la-Neuve, Walloon Brabant, Belgium</organization>
            </author>
            <author fullname="Cristel Pelsser" initials="C." surname="Pelsser">
              <organization>ICTEAM, UCLouvain, Louvain-la-Neuve, Walloon Brabant, Belgium</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>ICTEAM, UCLouvain &amp;amp; WEL Research Institute, Louvain-la-Neuve, Walloon Brabant, Belgium</organization>
            </author>
            <date month="November" year="2024"/>
          </front>
          <seriesInfo name="Proceedings of the ACM on Networking" value="vol. 2, no. CoNEXT4, pp. 1-23"/>
          <seriesInfo name="DOI" value="10.1145/3696406"/>
          <refcontent>Association for Computing Machinery (ACM)</refcontent>
        </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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
