<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-extended-key-update-01" category="std" consensus="true" submissionType="IETF" updates="9001" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title>Extended Key Update for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-extended-key-update-01"/>
    <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>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>quic</keyword>
    <keyword>extended key update</keyword>
    <keyword>forward secrecy</keyword>
    <abstract>
      <?line 53?>

<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 64?>

<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 using ephemeral keys, 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>The TLS Extended Key Update mechanism 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 rekeying without interrupting active sessions. The TLS Extended Key Update specification helps protect sensitive data even in the event of a potential key compromise by enabling frequent key rotation and leveraging 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"/>. Unlike the previous QUIC key update process, which independently updated keys based on the Key Phase bit, the extended key update mechanism derives a new shared secret using the TLS Extended Key Update procedure. This approach enables a coordinated key transition, integrating TLS for key exchange while refining the QUIC key update process to maintain QUIC-specific key derivation.</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 the Extended Key Update has been successfully negotiated, QUIC peers <bcp14>MUST</bcp14> use only 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 successful post-handshake exchange of Extended Key Update messages.</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"/>. If a QUIC endpoint receives an ExtendedKeyUpdateRequest message before the handshake is complete, it <bcp14>MUST</bcp14> terminate the connection with an error of type 0x010a, equivalent to the TLS unexpected_message alert, as specified in <xref section="4.8" sectionFormat="of" target="QUIC-TLS"/>.</t>
      <t>If both QUIC peers independently initiate an Extended Key Update and their ExtendedKeyUpdateRequest messages cross in flight, the conflict <bcp14>MUST</bcp14> be resolved following the clash error handling defined in <xref target="I-D.ietf-tls-extended-key-update"/>. Specifically, the lexicographic order of the key_exchange value in the KeyShareEntry determines which request is rejected, ensuring a coordinated key update process without advancing by two key generations.</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 ExtendedKeyUpdateResponse without having previously sent an ExtendedKeyUpdateRequest, it <bcp14>MUST</bcp14> treat this as a TLS protocol error and terminate the connection with an error of type 0x010a, equivalent to the TLS unexpected_message alert, as specified in <xref section="4.8" sectionFormat="of" target="QUIC-TLS"/>.</t>
      <t>The ExtendedKeyUpdateRequest and ExtendedKeyUpdateResponse messages are defined 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, equivalent to TLS illegal_parameter alert.</t>
      <t>If the Extended Key Update initiator receives a retry status in the ExtendedKeyUpdateResponse message, it <bcp14>MUST</bcp14> wait for the duration specified in the response before attempting another key update. The ExtendedKeyUpdateResponse message contains a delay value (in seconds) indicating how long the initiator <bcp14>MUST</bcp14> wait before retrying. The initiator <bcp14>MUST NOT</bcp14> retry within this interval and <bcp14>SHOULD</bcp14> retry once it has lapsed. If the initiator cannot proceed without an immediate Extended Key Update, it <bcp14>MUST</bcp14> terminate the connection with an error of type TBD1, equivalent to the TLS extended_key_update_required alert.</t>
      <t>If the initiator receives a rejected status, it <bcp14>MAY</bcp14> terminate the connection with an error of type TBD1, equivalent to the 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 decrypted 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 decrypted 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>Both endpoints <bcp14>SHOULD</bcp14> retain old read secrets for some time after successfully decrypting a packet encrypted with the new keys. Discarding old secrets too early may cause delayed packets to be discarded, which the peer may interpret as packet loss, potentially impacting performance. However, implementations may choose to discard old secrets sooner in environments where memory limitations or security policies require minimizing the lifetime of old keys. The retention period should be chosen carefully to mitigate the risk of cryptographic attacks while still allowing late-arriving packets to be processed.</t>
      <t><xref target="fig-extended-key-update"/> shows this interaction graphically where the initial set of keys used (identified with @M) are replaced by updated keys (identified with @N). The value of the Key Phase bit is indicated in brackets [].</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="432" width="560" viewBox="0 0 560 432" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 240,80 L 304,80" fill="none" stroke="black"/>
              <path d="M 240,112 L 304,112" fill="none" stroke="black"/>
              <path d="M 240,144 L 304,144" fill="none" stroke="black"/>
              <path d="M 240,160 L 304,160" fill="none" stroke="black"/>
              <path d="M 240,208 L 304,208" fill="none" stroke="black"/>
              <path d="M 240,256 L 304,256" fill="none" stroke="black"/>
              <path d="M 240,304 L 304,304" fill="none" stroke="black"/>
              <path d="M 240,384 L 304,384" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="312,384 300,378.4 300,389.6" fill="black" transform="rotate(0,304,384)"/>
              <polygon class="arrowhead" points="312,208 300,202.4 300,213.6" fill="black" transform="rotate(0,304,208)"/>
              <polygon class="arrowhead" points="312,144 300,138.4 300,149.6" fill="black" transform="rotate(0,304,144)"/>
              <polygon class="arrowhead" points="312,80 300,74.4 300,85.6" fill="black" transform="rotate(0,304,80)"/>
              <polygon class="arrowhead" points="248,304 236,298.4 236,309.6" fill="black" transform="rotate(180,240,304)"/>
              <polygon class="arrowhead" points="248,256 236,250.4 236,261.6" fill="black" transform="rotate(180,240,256)"/>
              <polygon class="arrowhead" points="248,160 236,154.4 236,165.6" fill="black" transform="rotate(180,240,160)"/>
              <polygon class="arrowhead" points="248,112 236,106.4 236,117.6" fill="black" transform="rotate(180,240,112)"/>
              <g class="text">
                <text x="104" y="36">Initiator</text>
                <text x="416" y="36">Responder</text>
                <text x="12" y="68">@M</text>
                <text x="40" y="68">[0]</text>
                <text x="76" y="68">QUIC</text>
                <text x="128" y="68">Packets</text>
                <text x="332" y="100">@M</text>
                <text x="360" y="100">[0]</text>
                <text x="396" y="100">QUIC</text>
                <text x="448" y="100">Packets</text>
                <text x="8" y="148">[</text>
                <text x="116" y="148">ExtendedKeyUpdateRequest</text>
                <text x="224" y="148">]</text>
                <text x="328" y="164">[</text>
                <text x="440" y="164">ExtendedKeyUpdateResponse</text>
                <text x="552" y="164">]</text>
                <text x="16" y="180">...</text>
                <text x="60" y="180">Update</text>
                <text x="100" y="180">to</text>
                <text x="124" y="180">@N</text>
                <text x="12" y="196">@N</text>
                <text x="40" y="196">[1]</text>
                <text x="76" y="196">QUIC</text>
                <text x="128" y="196">Packets</text>
                <text x="348" y="228">Update</text>
                <text x="388" y="228">to</text>
                <text x="412" y="228">@N</text>
                <text x="440" y="228">...</text>
                <text x="340" y="244">QUIC</text>
                <text x="392" y="244">Packets</text>
                <text x="440" y="244">[1]</text>
                <text x="468" y="244">@N</text>
                <text x="340" y="276">QUIC</text>
                <text x="392" y="276">Packets</text>
                <text x="440" y="276">[1]</text>
                <text x="468" y="276">@N</text>
                <text x="364" y="292">containing</text>
                <text x="424" y="292">ACK</text>
                <text x="16" y="324">...</text>
                <text x="48" y="324">Key</text>
                <text x="92" y="324">Update</text>
                <text x="160" y="324">Permitted</text>
                <text x="12" y="356">@N</text>
                <text x="40" y="356">[1]</text>
                <text x="76" y="356">QUIC</text>
                <text x="128" y="356">Packets</text>
                <text x="44" y="372">containing</text>
                <text x="104" y="372">ACK</text>
                <text x="136" y="372">for</text>
                <text x="164" y="372">@N</text>
                <text x="208" y="372">packets</text>
                <text x="336" y="404">Key</text>
                <text x="380" y="404">Update</text>
                <text x="448" y="404">Permitted</text>
                <text x="504" y="404">...</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
        Initiator                              Responder

@M [0] QUIC Packets
                             -------->
                                        @M [0] QUIC Packets
                             <--------

[ ExtendedKeyUpdateRequest ] -------->
                             <--------  [ ExtendedKeyUpdateResponse ]
... Update to @N
@N [1] QUIC Packets
                             -------->
                                        Update to @N ...
                                        QUIC Packets [1] @N
                             <--------
                                        QUIC Packets [1] @N
                                        containing ACK
                             <--------
... Key Update Permitted

@N [1] QUIC Packets
containing ACK for @N packets
                             -------->
                                        Key Update Permitted ...

]]></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>Key derivation function for computing the next generation of secrets is described in <xref section="6" sectionFormat="of" target="I-D.ietf-tls-extended-key-update"/>. 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 forward 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 199?>

<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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
0lVzW26CHEIUjrJ/A6F9LSKvMQAA

-->

</rfc>
