<?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.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-extended-key-update-00" category="std" consensus="true" submissionType="IETF" updates="9001" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title>Extended Key Update for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-extended-key-update-00"/>
    <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <date year="2025" month="May" day="10"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>quic</keyword>
    <keyword>extended key update</keyword>
    <keyword>forward secrecy</keyword>
    <abstract>
      <?line 46?>

<t>This document specifies an Extended Key Update mechanism for the QUIC protocol, building on the
foundation of the TLS Extended Key Update. The TLS Extended Key Update specification enhances the
TLS protocol by introducing key updates with forward secrecy, eliminating the need to perform a
full handshake. This feature is particularly beneficial for maintaining security in scenarios
involving long-lived connections.</t>
      <t>This specification replaces the QUIC Key Update mechanism described in the "Using TLS to
Secure QUIC" specification.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://quicwg.org/extended-key-update/draft-ietf-quic-extended-key-update.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-quic-extended-key-update/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/quicwg/extended-key-update"/>.</t>
    </note>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The QUIC protocol <xref target="QUIC"/> provides a secure, versatile transport for various applications, suitable for long-lived sessions
in environments like industrial IoT, telecommunication networks or Virtual Private Networks (VPN), as specified in <xref target="RFC9484"/>.</t>
      <t>The TLS Extended Key Update <xref target="I-D.ietf-tls-extended-key-update"/> introduces a mechanism to enhance the security and flexibility
of encrypted communication protocols by enabling frequent key updates without requiring a full handshake renegotiation. This
approach allows applications to refresh their encryption keys more often, improving forward secrecy and reducing the risk of
key compromise over long-lived connections. By separating key updates from the computationally expensive handshake process,
the specification provides a lightweight method for maintaining robust encryption in scenarios where connections need to
remain secure for extended periods.</t>
      <t>This new TLS capability is particularly valuable in environments where interruptions to perform a full key exchange would cause
significant disruption. Other encrypted communication protocols, such as IPsec <xref target="IKEv2"/> and SSH <xref target="SSH-TRANSPORT"/>,
include mechanisms for re-exchanging keys without interrupting active sessions. The TLS Extended Key Update specification ensures
that even in the face of potential key compromise, sensitive data remains protected due to frequent key rotation and the use
of forward secrecy.</t>
      <t>This specification builds on concepts from <xref target="I-D.ietf-tls-extended-key-update"/> and applies them to the QUIC protocol context.
It thereby replaces the QUIC Key Update mechanism described in <xref section="6" sectionFormat="of" target="QUIC-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?>

<t>Readers are assumed to be familiar with <xref target="I-D.ietf-tls-extended-key-update"/>.</t>
    </section>
    <section anchor="extended-key-update-negotiation">
      <name>Extended Key Update Negotiation</name>
      <t>QUIC peers negotiate Extended Key Update through the TLS handshake process, as outlined in <xref section="4" sectionFormat="of" target="I-D.ietf-tls-extended-key-update"/>.
Extended Key Update <bcp14>MUST NOT</bcp14> be used unless both QUIC peers include the TLS flags extension <xref target="I-D.ietf-tls-tlsflags"/> in the handshake and
set the "Extended_Key_Update" flag.</t>
      <t>Once Extended Key Update has been succesfully negotiated, QUIC peers <bcp14>MUST</bcp14> only use the Extended Key Update process defined in this document.
The standard QUIC Key Update mechanism from <xref section="6" sectionFormat="of" target="QUIC-TLS"/> <bcp14>MUST NOT</bcp14> be used for the duration of the session, as both
Key Update and Extended Key Update use the Key Phase bit to signal the use of updated keys. The Key Phase bit is initially set to 0 and
toggled to indicate a key update following the succesful post-handshake exchange of Extended Key Update messsages.</t>
    </section>
    <section anchor="extended-key-update-messages">
      <name>Extended Key Update Messages</name>
      <t>Either party <bcp14>MAY</bcp14> initiate the Extended Key Update process by sending an ExtendedKeyUpdateRequest TLS handshake message in a QUIC CRYPTO frame.
This message <bcp14>MUST NOT</bcp14> be sent before the QUIC handshake is confirmed, as described in <xref section="4.1.2" sectionFormat="of" target="QUIC-TLS"/>, or before previous Extended
Key Update process is complete. If a QUIC endpoints receives an ExtendedKeyUpdateRequest message before the QUIC handshake is complete or during ongoing
prior Extended Key Update, it <bcp14>MUST</bcp14> terminate the connection with an error of type 0x010a, equivalent to TLS unexpected_message alert as specified
in <xref section="4.8" sectionFormat="of" target="QUIC-TLS"/>.</t>
      <t>Upon receiving an ExtendedKeyUpdateRequest, the recipient <bcp14>MUST</bcp14> respond with an ExtendedKeyUpdateResponse TLS handshake message within a QUIC CRYPTO frame.
If a QUIC endpoint receives an unexpected ExtendedKeyUpdateResponse message from its peer, it <bcp14>MUST</bcp14> treat this as a TLS protocol error and terminate
the connection.</t>
      <t>Specifications of the ExtendedKeyUpdateRequest and ExtendedKeyUpdateResponse messages are provided in <xref section="5" sectionFormat="of" target="I-D.ietf-tls-extended-key-update"/>.
Any mismatch between the negotiated NamedGroup during the initial handshake and the group used in the Extended Key Update message, or an incorrect length
of the encapsulated key <bcp14>MUST</bcp14> result in connection termination with error of type 0x012f, equivalend to TLS illegal_parameter alert.</t>
      <t>If the Extended Key Update initiator receives a retry or rejected status in the ExtendedKeyUpdateResponse message, it <bcp14>MAY</bcp14> terminate the connection with
error of type 0x01TBD, equivalent to TLS extended_key_update_required alert.</t>
    </section>
    <section anchor="updating-the-traffic-secrets">
      <name>Updating the Traffic Secrets</name>
      <t>After sending an ExtendedKeyUpdateResponse with accepted status, the responder derives new packet protection traffic secrets. The responder <bcp14>MUST</bcp14> continue
using the previous secrets until it has received a packet with the Key Phase bit flipped and has successfully unprotected it using the new keys.</t>
      <t>After receiving and succesfully processing an ExtendedKeyUpdateResponse with accepted status, the initiator derives new packet protection traffic secrets,
flips the Key Phase bit for new packets, and uses the new write secret to protect them. The initiator <bcp14>MUST</bcp14> retain the old read secret until
it has received a packet with a flipped Key Phase bit from the responder and succesfully unprotected it using the new read secret.</t>
      <t>Both endpoints <bcp14>SHOULD</bcp14> retain old read secrets for some time after unprotecting a packet encrypted with the new keys. Discarding old secret too early may
cause delayed packets to be discarded, which the peer may interpreted as packet loss, potentially impacting performance.</t>
      <t><xref target="fig-extended-key-update"/> shows this interaction graphically.</t>
      <figure anchor="fig-extended-key-update">
        <name>Extended Key Update Process in QUIC.</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="536" viewBox="0 0 536 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 232,80 L 296,80" fill="none" stroke="black"/>
              <path d="M 232,96 L 296,96" fill="none" stroke="black"/>
              <path d="M 232,144 L 296,144" fill="none" stroke="black"/>
              <path d="M 232,160 L 296,160" fill="none" stroke="black"/>
              <path d="M 232,192 L 296,192" fill="none" stroke="black"/>
              <path d="M 232,208 L 296,208" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="304,192 292,186.4 292,197.6" fill="black" transform="rotate(0,296,192)"/>
              <polygon class="arrowhead" points="304,144 292,138.4 292,149.6" fill="black" transform="rotate(0,296,144)"/>
              <polygon class="arrowhead" points="304,80 292,74.4 292,85.6" fill="black" transform="rotate(0,296,80)"/>
              <polygon class="arrowhead" points="240,208 228,202.4 228,213.6" fill="black" transform="rotate(180,232,208)"/>
              <polygon class="arrowhead" points="240,160 228,154.4 228,165.6" fill="black" transform="rotate(180,232,160)"/>
              <polygon class="arrowhead" points="240,96 228,90.4 228,101.6" fill="black" transform="rotate(180,232,96)"/>
              <g class="text">
                <text x="104" y="36">Initiator</text>
                <text x="416" y="36">Responder</text>
                <text x="8" y="68">[</text>
                <text x="52" y="68">packet</text>
                <text x="104" y="68">using</text>
                <text x="144" y="68">old</text>
                <text x="176" y="68">key</text>
                <text x="48" y="84">and</text>
                <text x="88" y="84">prior</text>
                <text x="128" y="84">Key</text>
                <text x="168" y="84">Phase</text>
                <text x="216" y="84">]</text>
                <text x="320" y="100">[</text>
                <text x="364" y="100">packet</text>
                <text x="416" y="100">using</text>
                <text x="456" y="100">old</text>
                <text x="488" y="100">key</text>
                <text x="360" y="116">and</text>
                <text x="400" y="116">prior</text>
                <text x="440" y="116">Key</text>
                <text x="480" y="116">Phase</text>
                <text x="520" y="116">]</text>
                <text x="264" y="132">...</text>
                <text x="108" y="148">[ExtendedKeyUpdateRequest]</text>
                <text x="424" y="164">[ExtendedKeyUpdateResponse]</text>
                <text x="8" y="180">[</text>
                <text x="52" y="180">packet</text>
                <text x="104" y="180">using</text>
                <text x="144" y="180">new</text>
                <text x="176" y="180">key</text>
                <text x="40" y="196">and</text>
                <text x="88" y="196">updated</text>
                <text x="136" y="196">Key</text>
                <text x="176" y="196">Phase</text>
                <text x="216" y="196">]</text>
                <text x="320" y="212">[</text>
                <text x="356" y="212">packet</text>
                <text x="408" y="212">using</text>
                <text x="448" y="212">new</text>
                <text x="480" y="212">key</text>
                <text x="344" y="228">and</text>
                <text x="392" y="228">updated</text>
                <text x="440" y="228">Key</text>
                <text x="480" y="228">Phase</text>
                <text x="512" y="228">]</text>
                <text x="264" y="244">...</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
        Initiator                              Responder

[  packet using old key
    and prior Key Phase   ] -------->
                            <--------  [  packet using old key
                                           and prior Key Phase  ]
                               ...
[ExtendedKeyUpdateRequest]  -------->
                            <--------  [ExtendedKeyUpdateResponse]
[  packet using new key
   and updated Key Phase  ] -------->
                            <--------  [ packet using new key
                                         and updated Key Phase ]
                               ...
]]></artwork>
        </artset>
      </figure>
      <t>QUIC endpoints <bcp14>MUST NOT</bcp14> send NewKeyUpdate TLS handshake messages, defined in <xref target="I-D.ietf-tls-extended-key-update"/>, and
instead rely on the use of the Key Phase bit. Endpoints <bcp14>MUST</bcp14> treat the receipt of a TLS NewKeyUpdate message as a connection error
of type 0x010a. QUIC endpoints that have agreed to the Extended Key Update process <bcp14>MUST NOT</bcp14> change the Key Phase bit without a succesful exchange of
Extended Key Update TLS messages. Receiving a packet with the Key Phase bit changed without a success Extended Key Update exchange <bcp14>MUST</bcp14> be treated as
a connection error of type KEY_UPDATE_ERROR (0x0e).</t>
      <t>The design of the key derivation function for computing the next generation of secrets corresponds to the one described in
<xref section="6" sectionFormat="of" target="I-D.ietf-tls-extended-key-update"/> with the exception of the use of a different label.</t>
      <sourcecode type="pseudocode"><![CDATA[
sk = HKDF-Extract(Transcript-Hash(ExtendedKeyUpdateRequest,
                                  ExtendedKeyUpdateResponse), secret)

secret_<n+1> = HKDF-Expand-Label(sk, "quic eku",
                                 secret_<n>, Hash.length)
]]></sourcecode>
      <t>The corresponding key and IV are derived from the new secret as defined in <xref section="5.1" sectionFormat="of" target="QUIC-TLS"/>. The header protection key is not updated.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This specification describes an update to the key schedule of QUIC. Therefore, implementations <bcp14>MUST</bcp14> ensure that peers adhere strictly to the process
described in this document. Packets with higher packet numbers <bcp14>MUST NOT</bcp14> be protected using an older generation of secrets, as this could compromise key
synchronization and security.</t>
      <t>As key exchange may be computationally intensive, responders <bcp14>SHOULD</bcp14> consider rate-limiting Extended Key Exchange requests. This can be done by responding
with retry status as outlined in <xref section="5" sectionFormat="of" target="I-D.ietf-tls-extended-key-update"/> and terminating connections for initiators that violate the back-off timer.
This approach helps prevent excessive load on endpoints and mitigates the risk of denial-of-service attacks.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="I-D.ietf-tls-extended-key-update">
          <front>
            <title>Extended Key Update for Transport Layer Security (TLS) 1.3</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Siemens</organization>
            </author>
            <author fullname="Michael Tüxen" initials="M." surname="Tüxen">
              <organization>Münster Univ. of Applied Sciences</organization>
            </author>
            <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
              <organization>Nokia</organization>
            </author>
            <author fullname="Steffen Fries" initials="S." surname="Fries">
              <organization>Siemens</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   The Transport Layer Security (TLS) 1.3 specification provides forward
   secrecy by utilizing an ephemeral key exchange during the initial
   handshake.  Forward secrecy ensures that even if an attacker later
   obtains a party's long-term private key, past encrypted sessions
   cannot be decrypted.  This protects against adversaries who record
   encrypted conversations in the hope of decrypting them later.

   TLS 1.3 also includes a Key Update mechanism, allowing cryptographic
   keys to be refreshed during an ongoing session.  However, this update
   does not establish new forward-secret key material.  While this is
   generally not an issue for short-lived sessions, it can pose a
   security risk for long-lived connections, such as those in industrial
   IoT or telecommunication networks, where an attacker could compromise
   application traffic secrets after the initial handshake.

   Earlier versions of TLS supported session renegotiation, a mechanism
   that allowed peers to establish new cryptographic parameters within
   an existing session.  This included the ability to update the
   originally used long-term keys (certificates) with renewed
   credentials.  However, due to security vulnerabilities, the
   renegotiation mechanism was modified via RFC 5746 and later removed
   entirely in TLS 1.3, leaving a gap in TLS's ability to refresh
   cryptographic material securely.

   This specification introduces an extended key update mechanism that
   supports forward secrecy, forcing attackers to continuously
   exfiltrate key material throughout the session to decrypt the entire
   conversation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-extended-key-update-04"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </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="I-D.ietf-tls-tlsflags">
          <front>
            <title>A Flags Extension for TLS 1.3</title>
            <author fullname="Yoav Nir" initials="Y." surname="Nir">
              <organization>Dell Technologies</organization>
            </author>
            <date day="15" month="March" year="2025"/>
            <abstract>
              <t>   A number of extensions are proposed in the TLS working group that
   carry no interesting information except the 1-bit indication that a
   certain optional feature is supported.  Such extensions take 4 octets
   each.  This document defines a flags extension that can provide such
   indications at an average marginal cost of 1 bit each.  More
   precisely, it provides as many flag extensions as needed at 4 + the
   order of the last set bit divided by 8.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-tlsflags-15"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9484">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="A. Chernyakhovsky" initials="A." surname="Chernyakhovsky"/>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <date month="October" year="2023"/>
            <abstract>
              <t>This document describes how to proxy IP packets in HTTP. This protocol is similar to UDP proxying in HTTP but allows transmitting arbitrary IP packets. More specifically, this document defines a protocol that allows an HTTP client to create an IP tunnel through an HTTP server that acts as an IP proxy. This document updates RFC 9298.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9484"/>
          <seriesInfo name="DOI" value="10.17487/RFC9484"/>
        </reference>
        <reference anchor="IKEv2">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="SSH-TRANSPORT">
          <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>
    <?line 201?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank Martin Thomson and Sean Turner for their early review of this design and their invaluable feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
rzQxhYRBiySwm4vvHHmZOBwn/wPRkgbyvygAAA==

-->

</rfc>
