<?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.43 (Ruby 3.2.3) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-extended-key-update-14" category="std" consensus="true" submissionType="IETF" updates="9261, 9846" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="Extended Key Update for TLS">Extended Key Update for Transport Layer Security (TLS) 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-extended-key-update-14"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Siemens</organization>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="T." surname="Reddy" fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Tüxen" fullname="Michael Tüxen">
      <organization>Münster Univ. of Applied Sciences</organization>
      <address>
        <email>tuexen@fh-muenster.de</email>
      </address>
    </author>
    <author initials="S." surname="Fries" fullname="Steffen Fries">
      <organization>Siemens</organization>
      <address>
        <email>steffen.fries@siemens.com</email>
      </address>
    </author>
    <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 86?>

<t>TLS 1.3 ensures forward secrecy by performing an ephemeral Diffie-Hellman key exchange
during the initial handshake, protecting past communications even if a party's
long-term keys (typically a private key with a corresponding certificate) are later
compromised.</t>
      <t>While the built-in KeyUpdate mechanism allows application traffic keys to be refreshed
during a session, it does not incorporate fresh entropy from a new key exchange and
therefore does not provide post-compromise security. This limitation can pose a security
risk in long-lived sessions, such as those found in industrial IoT or telecommunications
environments.</t>
      <t>To address this, this specification defines an extended key update mechanism that
performs a fresh execution of the key exchange negotiated during the initial handshake
within an active session to support post-compromise security.</t>
      <t>By forcing attackers to exfiltrate new key material repeatedly, this approach mitigates
the risks associated with static key compromise. Regular renewal of session keys helps
contain the impact of such compromises. The extension is applicable to both TLS 1.3
and DTLS 1.3.</t>
    </abstract>
  </front>
  <middle>
    <?line 108?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Transport Layer Security (TLS) 1.3 protocol <xref target="TLS"/> provides forward secrecy by using
fresh ephemeral key exchange during the initial handshake. In the base protocol,
this key exchange is performed with (EC)DHE. By registering new NamedGroup codepoints,
TLS specifications also define hybrid and post-quantum key exchange mechanisms for
the same purpose. This ensures that encrypted communication remains confidential even
if an attacker later obtains a party's long-term private key, protecting against passive
adversaries who record encrypted traffic for later decryption.</t>
      <t>TLS 1.3 also includes a KeyUpdate mechanism that allows traffic keys to be refreshed
during an established session. However, this mechanism does not provide
post-compromise security, as it applies only a key derivation function to the
previous application traffic secret as input. While this design is generally sufficient
for short-lived connections, it may present security limitations in scenarios where
sessions persist for extended periods, such as in industrial IoT or telecommunications
systems, where continuous availability is critical and session renegotiation or resumption
is impractical.</t>
      <t>Earlier versions of TLS supported session renegotiation, which allowed peers to negotiate
fresh keying material, including performing new Diffie-Hellman exchanges during the
session lifetime. Due to protocol complexity and known vulnerabilities, renegotiation
was first restricted by <xref target="TLS-RENEGOTIATION"/> and ultimately removed in TLS 1.3. While the
KeyUpdate message was introduced to offer limited rekeying functionality, it does
not fulfill the same cryptographic role as renegotiation and cannot refresh
the TLS main secret and consequently cannot derive new secrets from fresh key
exchange input. This limitation applies regardless of whether the session was
established with traditional (EC)DHE, a post-quantum/traditional (PQ/T) hybrid exchange,
or a post-quantum KEM exchange.</t>
      <t>Security guidance from national agencies, such as ANSSI (France <xref target="ANSSI"/>), recommends the
periodic renewal of cryptographic keys during long-lived sessions to limit the
impact of key compromise. This approach encourages designs that force an
attacker to perform dynamic key exfiltration, as defined in <xref target="CONFIDENTIALITY"/>. Dynamic
key exfiltration refers to attack scenarios where an adversary must repeatedly
extract fresh keying material to maintain access to protected data, increasing
operational cost and risk for the attacker. In contrast, static key exfiltration,
where the TLS main secret is extracted once and reused, poses a greater long-term
threat, especially when session keys are not refreshed with fresh key exchange input
rather than key derivation.</t>
      <t>This specification defines a TLS extension that introduces an extended key update
mechanism for sessions established with traditional (EC)DHE, hybrid
PQ/T hybrid key exchange, or post-quantum KEM exchange. Unlike the
standard key update, this mechanism allows peers to inject fresh key exchange
input from the negotiated mechanism into an active session. By periodically
rerunning the negotiated key exchange, this extension enables the derivation of
new traffic keys. Compromise of prior traffic keys does not suffice to
derive the new traffic keys. As noted in
<xref section="F" sectionFormat="of" target="TLS"/>,
this approach mitigates the risk of static key exfiltration and shifts the attacker
burden toward dynamic key exfiltration.</t>
      <t>The proposed extension is applicable to both TLS 1.3 <xref target="TLS"/> and DTLS 1.3  <xref target="DTLS"/>. For clarity,
the term "TLS" is used throughout this document to refer to both protocols unless
otherwise specified.</t>
    </section>
    <section anchor="term">
      <name>Terminology and Requirements Language</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>In this document, "standard key update" refers to the KeyUpdate procedure
defined in <xref section="4.7.3" sectionFormat="of" target="TLS"/>, with traffic secret derivation as
specified in <xref section="7.2" sectionFormat="of" target="TLS"/>. "Extended key update" refers to the
procedure specified in this document.</t>
      <t>For terminology regarding traditional and PQ/T hybrid algorithms please
see <xref target="RFC9794"/>.</t>
      <t>In this document, we use the term post-compromise security, as defined in
<xref target="CCG16"/>. The threat model in <xref target="threat-model"/> describes the assumed
compromise of connection state and the conditions for recovery.</t>
      <t>Unless otherwise specified, all references to traffic keys in this document
refer to application traffic keys and because the Extended Key Update procedure
occurs after the handshake phase has completed, no handshake traffic keys
are involved.</t>
      <t>In this document, send key refers to the [sender]_write_key, and receive key
refers to the [receiver]_write_key. These keys are derived from the active
client_application_traffic_secret_N and server_application_traffic_secret_N,
as defined in (D)TLS 1.3 <xref target="TLS"/>, and are replaced with new ones
after each successful Extended Key Update.</t>
      <t>Generation N refers to client_/server_application_traffic_secret_N,
exporter_secret_N, and transcript_hash_N. Generation 0 is established by
the initial handshake, and each Extended Key Update establishes the next
generation, following <xref section="7.2" sectionFormat="of" target="TLS"/>.</t>
    </section>
    <section anchor="negotiating-the-extended-key-update">
      <name>Negotiating the Extended Key Update</name>
      <t>Client and servers use the TLS flags extension
<xref target="TLS-FLAGS"/> to indicate support for the functionality
defined in this document.  We call this flag "Extended_Key_Update"
flag.</t>
      <t>The "Extended_Key_Update" flag proposed by the client in the
ClientHello (CH) <bcp14>MUST</bcp14> be acknowledged in the EncryptedExtensions
(EE), if the server also supports the functionality defined in this
document and is configured to use it.</t>
      <t>If the "Extended_Key_Update" flag is not set, servers ignore any of the
functionality specified in this document and applications that
require post-compromise security will have to initiate a full
handshake.</t>
    </section>
    <section anchor="ext-key-update">
      <name>Extended Key Update Messages</name>
      <t>If the client and server agree to use the extended key update mechanism,
the standard key update <bcp14>MUST NOT</bcp14> be used. In this case, the extended key
update fully replaces the standard key update functionality.</t>
      <t>Implementations that receive a standard <tt>KeyUpdate</tt> message after
successfully negotiating the Extended Key Update functionality <bcp14>MUST</bcp14>
terminate the connection with an <tt>"unexpected_message"</tt> alert.</t>
      <t>The extended key update messages are signaled in a new handshake message named
<tt>ExtendedKeyUpdate</tt> (EKU), with an internal uint8 message subtype indicating its role.
This specification defines three ExtendedKeyUpdate message subtypes:</t>
      <ul spacing="normal">
        <li>
          <t><tt>key_update_request</tt> (0)</t>
        </li>
        <li>
          <t><tt>key_update_response</tt> (1)</t>
        </li>
        <li>
          <t><tt>key_update_finish</tt> (2)</t>
        </li>
      </ul>
      <t>New ExtendedKeyUpdate message subtypes are assigned by IANA as described in <xref target="iana-eku-registry"/>.</t>
      <t>A TLS peer which receives a ExtendedKeyUpdate with an unexpected message subtype <bcp14>MUST</bcp14>
abort the connection with an <tt>"unexpected_message"</tt> alert.</t>
      <t>The extended key update process can be initiated by either peer after it has
sent a <tt>Finished</tt> message. Implementations that receive an <tt>ExtendedKeyUpdate</tt>
message prior to the sender having sent <tt>Finished</tt> <bcp14>MUST</bcp14> terminate the connection with
an <tt>"unexpected_message"</tt> alert.</t>
      <t>The <tt>KeyShareEntry</tt> carried in a <tt>key_update_request</tt> and in
a <tt>key_update_response</tt> <bcp14>MUST</bcp14> use the group that was negotiated by the client
and server during the initial handshake. An implementation that receives an
algorithm other than previously negotiated <bcp14>MUST</bcp14> terminate the connection
with an <tt>"illegal_parameter"</tt> alert.</t>
      <t><xref target="fig-key-update"/> shows the interaction graphically. First, support
for the functionality in this specification is negotiated in the
<tt>ClientHello</tt> and the <tt>EncryptedExtensions</tt> messages. Then, the
<tt>ExtendedKeyUpdate</tt> exchange is sent to update the application traffic
secrets.</t>
      <t>The extended key update exchange is performed between the initiator
and the responder; either the TLS client or the TLS server may act
as initiator.</t>
      <figure anchor="fig-key-update">
        <name>Extended Key Update Message Exchange in TLS 1.3.</name>
        <artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + key_share
     | + signature_algorithms
     v + extended_key_update   -------->
                                                  ServerHello  ^ Key
                                                  + key_share  | Exch
                                                               v
                                        {EncryptedExtensions   ^ Server
                                       + extended_key_update}  | Params
                                         {CertificateRequest}  v
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                                                   {Finished}  v
                               <--------
     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]N     <------->  [Application Data]N
                                  ...
  [EKU(key_update_request)]N   -------->
                               <--------  [EKU(key_update_response)]N
   [EKU(key_update_finish)]N   -------->
                                  ...
       [Application Data]N+1   <------->  [Application Data]N+1

Legend:

    +   Indicates noteworthy extensions sent in the
    previously noted message.

    -   Indicates optional or situation-dependent
    messages/extensions that are not always sent.

    () Indicates messages protected using keys
    derived from a client_early_traffic_secret.

    {} Indicates messages protected using keys
    derived from a [sender]_handshake_traffic_secret.

    []N Indicates messages protected using keys
    derived from [sender]_application_traffic_secret_N.
]]></artwork>
      </figure>
      <t>The <tt>ExtendedKeyUpdate</tt> wire format is:</t>
      <artwork><![CDATA[
enum {
   key_update_request(0),
   key_update_response(1),
   key_update_finish(2),
   (255)
} ExtendedKeyUpdateType;

struct {
   ExtendedKeyUpdateType eku_type;
   select (eku_type) {
      case key_update_request: {
          KeyShareEntry key_share;
      }
      case key_update_response: {
          KeyShareEntry key_share;
      }
      case key_update_finish: {
          /* empty */
      }
   };
} ExtendedKeyUpdate;
]]></artwork>
      <t>Fields:</t>
      <ul spacing="normal">
        <li>
          <t><tt>eku_type</tt>: the subtype of the <tt>ExtendedKeyUpdate</tt> message.</t>
        </li>
        <li>
          <t><tt>key_share</tt>: key share information. The contents of this field is
determined by the specified group and its corresponding definition
(see <xref section="4.2.8" sectionFormat="of" target="TLS"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="TLSC">
      <name>TLS 1.3 Extended Key Update Procedure</name>
      <t>The following steps are taken by a TLS 1.3 implementation; the steps
executed with DTLS 1.3 differ slightly.</t>
      <ol spacing="normal" type="1"><li>
          <t>The initiator sends <tt>ExtendedKeyUpdate(key_update_request)</tt> carrying a
<tt>KeyShareEntry</tt>. While an extended key update is in progress, the
initiator <bcp14>MUST NOT</bcp14> initiate another key update.</t>
        </li>
        <li>
          <t>Upon receipt, the responder sends its own <tt>KeyShareEntry</tt> in a
<tt>ExtendedKeyUpdate(key_update_response)</tt> message. After receiving an
<tt>ExtendedKeyUpdate(key_update_request)</tt>, the responder <bcp14>MUST NOT</bcp14> send an
<tt>ExtendedKeyUpdate(key_update_request)</tt> until it has received
<tt>ExtendedKeyUpdate(key_update_finish)</tt>. The responder <bcp14>MAY</bcp14> defer sending a response if system load or resource
constraints prevent immediate processing. In such cases, the response <bcp14>MUST</bcp14>
be sent once sufficient resources become available.</t>
        </li>
        <li>
          <t>After the responder sends the <tt>ExtendedKeyUpdate(key_update_response)</tt> it
<bcp14>MUST</bcp14> update its send keys.</t>
        </li>
        <li>
          <t>Upon receipt of an <tt>ExtendedKeyUpdate(key_update_response)</tt> the initiator
derives the new secrets from the exchanged key shares. The initiator then updates
its receive keys and sends an empty ExtendedKeyUpdate(key_update_finish) message to
complete the process. The initiator <bcp14>MUST NOT</bcp14> defer derivation of the secrets and
sending the ExtendedKeyUpdate(key_update_finish) message as it would stall the
communication.</t>
        </li>
        <li>
          <t>After sending <tt>ExtendedKeyUpdate(key_update_finish)</tt>, the initiator <bcp14>MUST</bcp14> update its
send keys.</t>
        </li>
        <li>
          <t>Upon receiving the initiator’s <tt>ExtendedKeyUpdate(key_update_finish)</tt>,
the responder <bcp14>MUST</bcp14> update its receive keys.</t>
        </li>
      </ol>
      <t>Both initiator and responder <bcp14>MUST</bcp14> encrypt their <tt>ExtendedKeyUpdate</tt> messages
using the old keys. The Responder <bcp14>MUST</bcp14> ensure that it has received <tt>ExtendedKeyUpdate(key_update_finish)</tt>,
encrypted with the old key, before accepting any messages encrypted with the new keys.</t>
      <t>If TLS peers independently initiate the extended key update and the
requests cross in flight, the <tt>ExtendedKeyUpdate(key_update_request)</tt> with the
lower lexicographic order of the <tt>key_exchange</tt> value in
<tt>KeyShareEntry</tt> <bcp14>MUST</bcp14> be ignored. It <bcp14>MUST NOT</bcp14> be included in the
transcript hash. This prevents each
side from advancing keys by two generations. If the tie-break comparison yields
equality (an event that should be impossible for genuine
asymmetric key pairs), the endpoint <bcp14>MUST</bcp14> treat this as a protocol violation,
send an "unexpected_message" alert, and close the connection.</t>
      <t>The handshake framing uses a single <tt>HandshakeType</tt> for this message
(see <xref target="fig-handshake"/>).</t>
      <figure anchor="fig-handshake">
        <name>TLS 1.3 Handshake Structure.</name>
        <artwork><![CDATA[
      struct {
          HandshakeType msg_type;    /* handshake type */
          uint24 length;             /* bytes in message */
          select (Handshake.msg_type) {
              case client_hello:          ClientHello;
              case server_hello:          ServerHello;
              case end_of_early_data:     EndOfEarlyData;
              case encrypted_extensions:  EncryptedExtensions;
              case certificate_request:   CertificateRequest;
              case certificate:           Certificate;
              case certificate_verify:    CertificateVerify;
              case finished:              Finished;
              case new_session_ticket:    NewSessionTicket;
              case key_update:            KeyUpdate;
              case extended_key_update:   ExtendedKeyUpdate;
          };
      } Handshake;
]]></artwork>
      </figure>
      <section anchor="tls-13-extended-key-update-example">
        <name>TLS 1.3 Extended Key Update Example</name>
        <t><xref target="fig-key-update"/> shows the high-level interaction between a TLS 1.3 client
and server, while <xref target="fig-key-update2"/> illustrates an example message exchange
including the updated keys. Similar to the <tt>key_update message</tt>, the
<tt>extended_key_update</tt> message can be sent by either peer after sending its
Finished message.</t>
        <figure anchor="fig-key-update2">
          <name>Extended Key Update Example.</name>
          <artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + key_share
     | + signature_algorithms
     v + extended_key_update
                             -------->
                                                  ServerHello  ^ Key
                                                  + key_share  | Exch
                                                               v
                                        {EncryptedExtensions   ^ Server
                                       + extended_key_update}  | Params
                                         {CertificateRequest}  v
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                                                   {Finished}  v
                               <--------
     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
                                  ...
                              some time later
                                  ...
 [EKU(key_update_request       -------->
       (with key_share))]
                               <-------- [EKU(key_update_response
                                           (with key_share))]
                                        # Server derives new secrets
                                        # and updates SEND keys here
# Client derives new secrets
# and updates RECEIVE keys here
     [EKU(key_update_finish)]  -------->
# Client updates SEND keys here
                                    # Server updates RECEIVE keys here
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="DTLSC">
      <name>DTLS 1.3 Extended Key Update Procedure</name>
      <t>Unlike TLS 1.3, DTLS 1.3 implementations must take into account that handshake
messages are not transmitted over a reliable transport protocol.</t>
      <t>EKU messages <bcp14>MUST</bcp14> be transmitted reliably, like other DTLS handshake messages.
If necessary, EKU messages <bcp14>MAY</bcp14> be fragmented as described in <xref section="5.5" sectionFormat="of" target="DTLS"/>.
Due to the possibility of an <tt>ExtendedKeyUpdate</tt> messages being
lost and thereby preventing the sender of that message from updating its keying
material, receivers <bcp14>MUST</bcp14> retain the pre-update keying material until receipt
and successful decryption of a message using the new keys.</t>
      <t>Due to packet loss and/or reordering, DTLS 1.3 peers <bcp14>MAY</bcp14> receive records from an
earlier epoch. If the necessary keys are available, implementations <bcp14>SHOULD</bcp14> attempt
to process such records; however, they <bcp14>MAY</bcp14> choose to discard them.</t>
      <t>The exchange has the following steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>The initiator sends an <tt>ExtendedKeyUpdate(key_update_request)</tt> message, which contains a
key share. While an extended key update is in progress, the initiator <bcp14>MUST NOT</bcp14>
initiate further key updates. This message is subject to DTLS handshake
retransmission, but delivery is only confirmed when the initiator either receives the
corresponding <tt>ExtendedKeyUpdate(key_update_response)</tt> or an ACK.</t>
        </li>
        <li>
          <t>Upon receipt, the responder sends its own <tt>KeyShareEntry</tt> in a
<tt>ExtendedKeyUpdate(key_update_response)</tt> message. After receiving an
<tt>ExtendedKeyUpdate(key_update_request)</tt>, the responder <bcp14>MUST NOT</bcp14> send an
<tt>ExtendedKeyUpdate(key_update_request)</tt> until it has received
<tt>ExtendedKeyUpdate(key_update_finish)</tt>. The responder <bcp14>MAY</bcp14> defer
sending a response if system load or resource constraints prevent immediate processing.
In such cases, the responder <bcp14>MUST</bcp14> acknowledge receipt of the key_update_request with an ACK and, once
sufficient resources become available, retransmit the key_update_response until it is acknowledged by the
initiator. key_update_response and ACK message <bcp14>MAY</bcp14> be received out of order; a late ACK <bcp14>MUST</bcp14> be ignored and <bcp14>MUST NOT</bcp14> affect the extended key update state machine.</t>
        </li>
        <li>
          <t>On receipt of <tt>ExtendedKeyUpdate(key_update_response)</tt> the initiator derives a secret key based on the
exchanged key shares. This message also serves as an implicit acknowledgment of the
initiator's <tt>ExtendedKeyUpdate(key_update_request)</tt>, so no separate ACK is required. The initiator <bcp14>MUST</bcp14>
update its receive keys and epoch value. The initiator <bcp14>MUST NOT</bcp14> defer derivation of the secrets.</t>
        </li>
        <li>
          <t>The initiator transmits an <tt>ExtendedKeyUpdate(key_update_finish)</tt> message. This message is subject to DTLS
retransmission until acknowledged.</t>
        </li>
        <li>
          <t>The responder <bcp14>MUST</bcp14> acknowledge the received message by sending an ACK message.</t>
        </li>
        <li>
          <t>After the responder receives the initiator's <tt>ExtendedKeyUpdate(key_update_finish)</tt>,
the responder <bcp14>MUST</bcp14> update its send key and epoch value. With the receipt of
that message, the responder <bcp14>MUST</bcp14> also update its receive keys.</t>
        </li>
        <li>
          <t>On receipt of the ACK message, the initiator updates its send key and epoch
value. If this ACK is not received, the initiator re-transmits its
<tt>ExtendedKeyUpdate(key_update_finish)</tt> until ACK is received. The key update is
complete once this ACK is processed by the initiator.</t>
        </li>
      </ol>
      <t>If DTLS peers independently initiate the extended key update and the
requests cross in flight, they are resolved as specified in <xref target="TLSC"/>.</t>
      <t>The handshake framing uses a single <tt>HandshakeType</tt> for this message
(see <xref target="fig-dtls-handshake"/>).</t>
      <figure anchor="fig-dtls-handshake">
        <name>DTLS 1.3 Handshake Structure.</name>
        <artwork><![CDATA[
       enum {
           client_hello(1),
           server_hello(2),
           new_session_ticket(4),
           end_of_early_data(5),
           encrypted_extensions(8),
           request_connection_id(9),
           new_connection_id(10),
           certificate(11),
           certificate_request(13),
           certificate_verify(15),
           finished(20),
           key_update(24),
           extended_key_update(TBD),  /* new */
           message_hash(254),
           (255)
       } HandshakeType;

       struct {
           HandshakeType msg_type;    /* handshake type */
           uint24 length;             /* bytes in message */
           uint16 message_seq;        /* DTLS-required field */
           uint24 fragment_offset;    /* DTLS-required field */
           uint24 fragment_length;    /* DTLS-required field */
           select (msg_type) {
               case client_hello:          ClientHello;
               case server_hello:          ServerHello;
               case end_of_early_data:     EndOfEarlyData;
               case encrypted_extensions:  EncryptedExtensions;
               case certificate_request:   CertificateRequest;
               case certificate:           Certificate;
               case certificate_verify:    CertificateVerify;
               case finished:              Finished;
               case new_session_ticket:    NewSessionTicket;
               case key_update:            KeyUpdate;
               case extended_key_update:   ExtendedKeyUpdate;
               case request_connection_id: RequestConnectionId;
               case new_connection_id:     NewConnectionId;
           } body;
       } DTLSHandshake;
]]></artwork>
      </figure>
      <section anchor="dtls-13-extended-key-update-example">
        <name>DTLS 1.3 Extended Key Update Example</name>
        <t>The following example illustrates a successful extended key update,
including how the epochs change during the exchange.</t>
        <figure anchor="dtls-key-update">
          <name>Example DTLS 1.3 Extended Key Update: Message Exchange.</name>
          <artwork><![CDATA[
Client                            Server
(Initiator)                       (Responder)

  /---------------------------------------\
 |           Initial Handshake             |
  \---------------------------------------/

[C: tx=3, rx=3]                   [S: tx=3, rx=3]
[Application Data]               -------->
[C: tx=3, rx=3]                   [S: tx=3, rx=3]

[C: tx=3, rx=3]                   [S: tx=3, rx=3]
                                  <--------   [Application Data]
[C: tx=3, rx=3]                   [S: tx=3, rx=3]

  /---------------------------------------\
 |           Some time later ...           |
  \---------------------------------------/

[C: tx=3, rx=3]                   [S: tx=3, rx=3]
[EKU(key_update_request)]  -------->
                                  # no epoch change yet

                           <-------- [EKU(key_update_response)]
# Sent under OLD epoch. Server does NOT bump yet.

# Step 3: initiator bumps RECEIVE epoch on
# receiving key update response-in:
# (rx:=rx+1; tx still old)
[C: tx=3, rx=4]                   [S: tx=3, rx=3]

[EKU(key_update_finish)]   -------->
# Sender's Fin is tagged with OLD tx (3).

# Epoch switch point:
# Step 6: responder bumps BOTH tx and rx on Fin-in:
[C: tx=3, rx=4]                   [S: tx=4, rx=4]

                           <-------- [ACK] (tag=new)

# Step 7: initiator bumps SEND epoch on ACK-in:
[C: tx=4, rx=4]                   [S: tx=4, rx=4]

[Application Data]         -------->
[C: tx=4, rx=4]                   [S: tx=4, rx=4]

                           <--------   [Application Data]
[C: tx=4, rx=4]                   [S: tx=4, rx=4]
]]></artwork>
        </figure>
        <t><xref target="dtls-table"/> shows the steps, the message in flight, and the epoch changes on both sides.
The A/B -&gt; X/Y notation indicates the change of epoch values for tx/rx before and after
the message transmission.</t>
        <figure anchor="dtls-table">
          <name>Example DTLS 1.3 Extended Key Update: Epoch Changes.</name>
          <artwork><![CDATA[
+--------------------+----------------+--------------+
| Message            | Client tx/rx   | Server tx/rx |
+--------------------+----------------+--------------+
| APP ------------>  | 3/3 -> 3/3     | 3/3 -> 3/3   |
| <------------ APP  | 3/3 -> 3/3     | 3/3 -> 3/3   |
| req -------------> | 3/3 -> 3/3     | 3/3 -> 3/3   |
| <------------ resp | 3/3 -> 3/4     | 3/3 -> 3/3   | <- step 3
| Fin  ------------> | 3/4 -> 3/4     | 3/3 -> 4/4   | <- step 6
| <------------- ACK | 3/4 -> 4/4     | 4/4 -> 4/4   | <- step 7
| APP -------------> | 4/4 -> 4/4     | 4/4 -> 4/4   |
| <------------- APP | 4/4 -> 4/4     | 4/4 -> 4/4   |
+--------------------+----------------+--------------+
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="key_update">
      <name>Updating Traffic Keys</name>
      <t>When the extended key update message exchange is completed both peers
have successfully updated their application traffic keys. The
key derivation function described in this document is used to perform
this update.</t>
      <t>The design of the key derivation function for computing the next
generation of application_traffic_secret is motivated by the desire
to include</t>
      <ul spacing="normal">
        <li>
          <t>a secret derived from the negotiated key exchange, whether (EC)DHE, post-quantum KEM, or a PQ/T hybrid mechanism,</t>
        </li>
        <li>
          <t>a secret that allows the new key exchange to be cryptographically
bound to the previously established secret,</t>
        </li>
        <li>
          <t>a transcript hash that is updated after each Extended Key Update exchange by
hashing the previous transcript hash together with the current
ExtendedKeyUpdate(key_update_request) and
ExtendedKeyUpdate(key_update_response) messages. This binds any
encapsulation ciphertext and public key used in PQ/T hybrid or post-quantum key exchanges
to the input keying material (IKM) and cryptographically binds the newly derived secrets to the
original handshake transcript, all prior EKU exchanges, the current EKU
exchange, and the corresponding KEM public key and encapsulation ciphertext, and</t>
        </li>
        <li>
          <t>new label strings to distinguish it from the key derivation used in
TLS 1.3.</t>
        </li>
      </ul>
      <t>The transcript_hash_N denotes the transcript hash value associated with
generation N. transcript_hash_0 is Transcript-Hash(ClientHello..client
Finished) of the initial handshake. During each Extended Key Update
exchange, transcript_hash_N+1 is computed over the concatenation of
transcript_hash_N, the <tt>ExtendedKeyUpdate(key_update_request)</tt> handshake
message, and the <tt>ExtendedKeyUpdate(key_update_response)</tt> handshake message,
with handshake messages encoded as specified in <xref section="4.1" sectionFormat="of" target="TLS"/>
for TLS and <xref section="5.2" sectionFormat="of" target="DTLS"/> for DTLS:</t>
      <artwork><![CDATA[
 transcript_hash_N+1 = Transcript-Hash(transcript_hash_N ||
                                       EKU(key_update_request) ||
                                       EKU(key_update_response))
]]></artwork>
      <t>Once transcript_hash_N+1 has been computed, transcript_hash_N can be deleted.
No prior transcript hash values need to be retained for future EKU exchanges.</t>
      <t><tt>main_secret_N</tt> denotes the Main Secret (see <xref section="7.1" sectionFormat="of" target="TLS"/>)
associated with generation N.</t>
      <t><xref target="key-hierarchy"/> shows the key derivation hierarchy.</t>
      <figure anchor="key-hierarchy">
        <name>Key Derivation Hierarchy.</name>
        <artwork><![CDATA[
       main_secret_N
             |
             v
       Derive-Secret(., "derived", "")
             |
Shared       v
Secret -> HKDF-Extract = main_secret_N+1
             |
             +-----> Derive-Secret(., "c ap traffic",
             |                     transcript_hash_N+1)
             |                = client_application_traffic_secret_N+1
             |
             +-----> Derive-Secret(., "s ap traffic",
             |                     transcript_hash_N+1)
             |                = server_application_traffic_secret_N+1
             |
             +-----> Derive-Secret(., "exp master",
             |                     transcript_hash_N+1)
             |                = exporter_secret_N+1
]]></artwork>
      </figure>
      <t>During the initial handshake, the Main Secret is generated (see
<xref section="7.1" sectionFormat="of" target="TLS"/>). Since the main_secret
is discarded during the key derivation procedure, a derived value is
stored. This stored value then serves as the input salt to the first
key update procedure that incorporates the shared secret as
IKM to produce main_secret_N+1. The derived value
from this new main secret serves as input salt to the subsequent key
update procedure, which also incorporates a fresh shared secret as
IKM. This process is repeated for each additional key update procedure.</t>
      <t>The shared secret is determined by the negotiated key exchange mechanism.
In the base protocol, this mechanism is (EC)DHE (see <xref section="7.4" sectionFormat="of" target="TLS"/>). Post-quantum and hybrid key exchange mechanisms derive the
shared secret as specified by their respective definitions. See also
<xref target="pqc-cons"/>.</t>
      <t>The traffic keys are re-derived from
client_application_traffic_secret_N+1 and
server_application_traffic_secret_N+1, as described in
<xref section="7.3" sectionFormat="of" target="TLS"/>.</t>
      <t>Once client_/server_application_traffic_secret_N+1 and its associated
traffic keys have been computed, implementations <bcp14>SHOULD</bcp14> delete
client_/server_application_traffic_secret_N and its associated
traffic keys as soon as possible. Note: The
client_/server_application_traffic_secret_N and its associated
traffic keys can only be deleted by the responder after receiving the
<tt>ExtendedKeyUpdate(key_update_finish)</tt> message.</t>
      <t>Once client_/server_application_traffic_secret_N+1 and the corresponding traffic
keys are in use, all subsequent records, including alerts and post-handshake
messages <bcp14>MUST</bcp14> be protected using those keys.</t>
    </section>
    <section anchor="resumption">
      <name>Resumption</name>
      <t>EKU provides post-compromise recovery for the TLS connection in which it is performed.
The recovery guarantees depend on the threat model in <xref target="threat-model"/>. In typical deployment
environments, PSKs established via the NewSessionTicket mechanism are generated and
reside in endpoint memory. Although such PSKs may subsequently
be stored in secure storage, they are exposed during this initial processing window,
and compromise of endpoint memory during this period is sufficient to reveal them.
Consequently, later protection using secure storage does not prevent their prior
compromise. These PSKs are sufficient to establish new authenticated TLS connections.
Even if an implementation invalidates previously issued PSKs upon completion of the
EKU exchange, an attacker that has already obtained such a PSK may initiate and
complete a resumed session prior to that invalidation. In such environments, EKU does
not prevent the use of previously issued PSKs.</t>
      <t>Accordingly, endpoints that enable EKU <bcp14>MUST</bcp14> disable resumption using PSKs established
via the NewSessionTicket mechanism. <tt>resumption_main_secret_N+1</tt> is not
derived for this reason in <xref target="key-hierarchy"/>.</t>
    </section>
    <section anchor="pqc-cons">
      <name>Post-Quantum Cryptography Considerations</name>
      <t>The shared secret used by the Extended Key Update mechanism is derived according
to the negotiated key exchange method. As a result, this specification supports
the same classes of key establishment mechanisms as TLS itself, including traditional
Diffie-Hellman-based key exchanges, post-quantum key encapsulation mechanisms (KEMs),
and hybrid combinations thereof.</t>
      <t>In the base TLS protocol, the shared secret is typically established using (EC)DHE
(see <xref section="7.4" sectionFormat="of" target="TLS"/>). Recent extensions have introduced support for post-quantum
and hybrid key establishment mechanisms to facilitate the transition to post-quantum
cryptography. The rationale for this transition and the associated terminology are
discussed in <xref target="RFC9958"/> and <xref target="RFC9794"/>, respectively.</t>
      <t>For hybrid mechanisms such as SecP256r1MLKEM768, defined in <xref target="I-D.ietf-tls-ecdhe-mlkem"/>,
the shared secret is derived by combining the outputs of the constituent algorithms;
specifically, it is the concatenation of the ECDHE and ML-KEM shared secrets. For
ML-KEM-only key exchange, as defined in <xref target="I-D.ietf-tls-mlkem"/>, the ML-KEM shared
secret is provided directly to the TLS key schedule in place of the (EC)DHE shared
secret.</t>
      <t>The Extended Key Update protocol reuses the key exchange representation defined by the
negotiated mechanism. Consequently, the exchange of fresh key shares during an Extended
Key Update follows the same encoding and shared-secret derivation rules as the
corresponding TLS handshake. For KEMs, the initiator generates the encapsulation key
and the responder performs encapsulation against it, regardless of which peer acted
as the TLS client or server during the initial handshake.</t>
    </section>
    <section anchor="sslkeylogfile-update">
      <name>SSLKEYLOGFILE Update</name>
      <t>As a successful extended key update exchange invalidates previous secrets,
SSLKEYLOGFILE <xref target="TLS-KEYLOGFILE"/> needs to be populated with new
entries. As a result, three additional secret labels are utilized in the
SSLKEYLOGFILE:</t>
      <ol spacing="normal" type="1"><li>
          <t><tt>CLIENT_TRAFFIC_SECRET_N+1</tt>: identifies the
client_application_traffic_secret_N+1 in the key schedule</t>
        </li>
        <li>
          <t><tt>SERVER_TRAFFIC_SECRET_N+1</tt>: identifies the
server_application_traffic_secret_N+1 in the key schedule</t>
        </li>
        <li>
          <t><tt>EXPORTER_SECRET_N+1</tt>: identifies the
exporter_secret_N+1 in the key schedule</t>
        </li>
      </ol>
      <t>Similar to other entries in the SSLKEYLOGFILE, the label is followed by the
32-byte value of the Random field from the ClientHello message that
established the TLS connection, and the corresponding secret encoded in
hexadecimal.</t>
      <t>SSLKEYLOGFILE entries for the extended key update <bcp14>MUST NOT</bcp14> be produced if
SSLKEYLOGFILE was not used for other secrets in the handshake.</t>
      <t>Note that each successful Extended Key Update invalidates all previous
SSLKEYLOGFILE secrets including past iterations of <tt>CLIENT_TRAFFIC_SECRET_</tt>,
<tt>SERVER_TRAFFIC_SECRET_</tt> and <tt>EXPORTER_SECRET_</tt>.</t>
    </section>
    <section anchor="exporter">
      <name>Exporter</name>
      <section anchor="post-compromise-security-for-the-initial-exporter-secret">
        <name>Post-Compromise Security for the Initial Exporter Secret</name>
        <t>The TLS 1.3 Key Schedule, see Figure 5 of <xref target="TLS"/>, derives the exporter_secret from the main secret. This
exporter_secret is static for the lifetime of the connection and is not updated by a standard key update.</t>
        <t>A core design goal of this specification is not met if the exporter_secret does not change.
Therefore, this document defines an exporter interface that derives a fresh exporter secret
whenever new application traffic keys are updated through the EKU.</t>
        <t>If the initial exporter secret for this new interface were identical to exporter_secret,
then compromising exporter_secret at any point during the lifetime of the connection
would enable an attacker to recompute all exporter outputs derived from it.
This would break post-compromise security for exported keying material.</t>
        <t>Therefore, the initial exporter secret used by the exporter interface defined in
this document, i.e., the exporter output available prior to the first Extended
Key Update, <bcp14>MUST</bcp14> be distinct from the exporter_secret. This separation
ensures that compromise of the TLS exporter interface does not compromise outputs
derived from the exporter interface defined in this document.</t>
        <t>Prior to the first Extended Key Update, the exporter interface provides an
initial exporter secret, denoted exporter_secret_0. This secret is derived
from the TLS main secret and the handshake transcript, but is cryptographically
independent of the TLS exporter_secret. It is computed as follows:</t>
        <artwork><![CDATA[
exporter_secret_0 =
Derive-Secret(Main Secret,
"exporter eku",
Transcript-Hash(ClientHello..server Finished))
]]></artwork>
        <t>Applications that require post-compromise security <bcp14>MUST</bcp14> use the exporter
interface defined in this document. This exporter interface is independent of
the TLS exporter defined in <xref section="7.5" sectionFormat="of" target="TLS"/>, which continues to use a
static <tt>exporter_secret</tt> for the lifetime of the connection for compatiblity with "legacy" applications.</t>
      </section>
      <section anchor="exporter-usage-after-extended-key-update">
        <name>Exporter Usage After Extended Key Update</name>
        <t>Protocols such as DTLS-SRTP and DTLS-over-SCTP rely on TLS or DTLS for
key establishment, but reuse portions of the derived keying material for
their own specific purposes. These protocols use the TLS exporter defined
in <xref section="7.5" sectionFormat="of" target="TLS"/>. Exporters are also used for deriving
authentication related values such as nonces, as described in <xref target="RFC9729"/>.</t>
        <t>Once the Extended Key Update mechanism is complete, such protocols would
need to use the newly derived exporter secret to generate Exported Keying Material
(EKM) to protect packets. The exporter_secret_N+1 derived in
<xref target="key_update"/> will be used as the "Secret" in the exporter function, defined in
<xref section="7.5" sectionFormat="of" target="TLS"/>, to generate EKM, ensuring that the exported keying material
is aligned with the updated security context. Compromise of a previous exporter secret does not suffice to derive
exporter_secret_N+1.</t>
        <t>When a new exporter secret becomes active following a successful Extended
Key Update, the TLS or DTLS implementation would have to provide an
asynchronous notification to the application indicating that:</t>
        <ul spacing="normal">
          <li>
            <t>A new generation has become active, and the (D)TLS implementation
<bcp14>MUST</bcp14> include the corresponding generation N, where exporter_secret_N
is the exporter secret of that generation. Generation 0 corresponds
to exporter_secret_0, and each successful Extended Key Update
increments N by one, so both peers associate the same generation
with the same exporter secret. Applications use the generation to
request keying material through a generation-aware exporter
interface, so a subsequent Extended Key Update does not change the
result.</t>
          </li>
        </ul>
        <t>Applications are notified that a new generation is active only after the endpoint
has completed the Extended Key Update exchange and switched to the new traffic keys.</t>
        <ul spacing="normal">
          <li>
            <t>In TLS, the initiator triggers notification after Step 5 in <xref target="TLSC"/>,
and the responder triggers notification after Step 6 in <xref target="TLSC"/>.</t>
          </li>
          <li>
            <t>In DTLS, the initiator triggers notification to the application
after Step 7 in <xref target="DTLSC"/>, and the responder triggers notification
after Step 6 in <xref target="DTLSC"/>.</t>
          </li>
        </ul>
        <t>The corresponding EKM is obtained by the application through the generation-aware
exporter interface using the generation and its chosen label and context
values as defined in <xref section="7.5" sectionFormat="of" target="TLS"/>. The application conveys the
generation it used to the peer, for example with the protected data, so that
the peer derives the same EKM.</t>
        <t>To prevent desynchronization, the application will have to retain both the
previous and the newly derived exporter secrets for a short period. For TLS,
the previous exporter secret would be discarded once data derived from the
new exporter has been successfully processed, and no records protected with
the old exporter secret are expected to arrive. For DTLS, the previous exporter
secret needs to be retained until the retention timer expires for the prior epoch,
to allow for processing of packets that may arrive out of order.  The retention policy
for exporter secrets is application-specific. For example, in DTLS-SRTP,
the application might retain the previous exporter secret until its
replay window no longer accepts packets protected with keys derived from that
secret, as described in Section 3.3.2 of <xref target="RFC3711"/>.</t>
      </section>
    </section>
    <section anchor="exported">
      <name>Use of Post-Handshake Authentication and Exported Authenticators with Extended Key Update</name>
      <t>EKU provides fresh traffic secrets, but after compromise of the connection state
described in <xref target="threat-model"/>, EKU alone does not authenticate the exchange.
An attacker that retains this state, including the value used to derive
main_secret_N+1, can act as a person-in-the-middle during the exchange,
cause the peers to derive divergent traffic secrets, and learn the new keys.
TLS 1.3 provides two mechanisms that can detect such divergence, each with a different scope.
Post-Handshake Certificate-Based Client Authentication (<xref section="4.3.6" sectionFormat="of" target="TLS"/>) only authenticates the client to the server,
and therefore allows only the server to detect divergence. Exported Authenticators <xref target="RFC9261"/>
authenticate the endpoint that produces the authenticator, so detection at both endpoints
requires an authenticator in each direction.</t>
      <section anchor="post-handshake-certificate-based-client-authentication">
        <name>Post-Handshake Certificate-Based Client Authentication</name>
        <t>When Post-Handshake Certificate-Based Client Authentication (<xref section="4.7.2" sectionFormat="of" target="TLS"/>) is
performed after an Extended Key Update (EKU) is complete, the Handshake Context used for
the transcript hash is updated. It consists of transcript_hash_N+1 concatenated
with the CertificateRequest message. Both endpoints use the Handshake Context in effect
when the CertificateRequest is sent. The Finished message is computed using a
MAC key derived from the Base Key of the new generation (client_application_traffic_secret_N+1).
Because the CertificateVerify message is signed with the private key corresponding to the
client's end-entity certificate over this Handshake Context, the server can detect divergent
key state. Post-Handshake Certificate-Based Client Authentication does not reauthenticate the server, so the client gains
no equivalent assurance. A client that requires such assurance can request an Exported
Authenticator from the server.</t>
      </section>
      <section anchor="exported-authenticators">
        <name>Exported Authenticators</name>
        <t>This document updates Section 5.1 of <xref target="RFC9261"/> to specify that, after an
Extended Key Update has completed, the Handshake Context and Finished MAC Key used for
Exported Authenticators <bcp14>MUST</bcp14> be derived from the exporter secret of the current generation.
Implementations that support the generation-aware Exported Authenticators interface <bcp14>MUST</bcp14> provide a means
for applications to request the creation or validation of Exported Authenticators using
the exporter secret of a specific generation.</t>
        <t>The Handshake Context and Finished MAC Key used in both the CertificateVerify message
(Section 5.2.2 of <xref target="RFC9261"/>) and the Finished message (Section 5.2.3 of <xref target="RFC9261"/>)
are derived from the exporter secret of the current generation.
If a person-in-the-middle attacker interferes with the EKU exchange, the peers derive
different exporter secrets. Validation as specified in Section 5.2.4 of <xref target="RFC9261"/>
then fails at the endpoint that receives the authenticator, since the CertificateVerify
message is signed with a private key the attacker does not hold.</t>
        <t>A new optional API <bcp14>SHOULD</bcp14> be defined to permit applications to request or verify
Exported Authenticators for a specific generation. As discussed in Section 7
of <xref target="RFC9261"/>, this can, as an exception, be implemented at the application
layer when the generation-aware TLS exporter is available. The APIs defined in <xref target="RFC9261"/>
remain unchanged, so existing applications continue to operate without
modification. The generation-aware API accepts a generation; when present,
the (D)TLS implementation <bcp14>MUST</bcp14> derive the Handshake Context and Finished MAC Key
from the exporter secret of that generation. When Exported Authenticators
are generated using the generation-aware Exported Authenticators interface, the
generation used for their derivation can be conveyed in the
certificate_request_context field, allowing the peer, particularly in
DTLS where records may be reordered, to determine the correct exporter
secret for validation.</t>
      </section>
      <section anchor="interaction-of-extended-key-update-and-post-handshake-authentication">
        <name>Interaction of Extended Key Update and Post-Handshake Authentication</name>
        <t>EKU and Post-Handshake Authentication may both occur during the lifetime
of a (D)TLS connection.  Post-Handshake Certificate-Based Client
Authentication (PHA) is bound to the handshake transcript and computes
its <tt>Finished</tt> message as specified in <xref section="4.5.3" sectionFormat="of" target="TLS"/>, using a key
derived from the application traffic secret that is active at the time
the <tt>CertificateRequest</tt> is sent. Therefore, specific ordering constraints
are required to preserve cryptographic consistency.</t>
        <section anchor="post-handshake-certificate-based-client-authentication-1">
          <name>Post-Handshake Certificate-Based Client Authentication</name>
          <t>An endpoint <bcp14>MUST NOT</bcp14> complete an EKU exchange in a manner that
transitions to new application traffic secrets while a PHA exchange
is in progress.</t>
          <t>The following constraints apply to both TLS 1.3 and DTLS 1.3:</t>
          <ul spacing="normal">
            <li>
              <t>An endpoint <bcp14>MUST NOT</bcp14> initiate PHA while an EKU exchange is in progress.</t>
            </li>
            <li>
              <t>If PHA has been initiated and the corresponding authentication exchange
has not yet completed, neither endpoint <bcp14>MUST</bcp14> initiate an EKU exchange.</t>
            </li>
            <li>
              <t>In a cross-flight condition, if a (D)TLS client sends an EKU request and,
before receiving a response, receives a <tt>CertificateRequest</tt> from the
(D)TLS server, the endpoints <bcp14>MUST</bcp14> defer completion of the EKU exchange
and proceed with the Post-Handshake Authentication exchange. The endpoints
<bcp14>MUST NOT</bcp14> transition to new application traffic secrets until the
authentication exchange has completed.</t>
            </li>
          </ul>
          <t>In DTLS, deferred EKU request is acknowledged as specified in <xref target="DTLSC"/>.</t>
        </section>
        <section anchor="exported-authenticators-1">
          <name>Exported Authenticators</name>
          <t>Because the exporter interface defined in this document is generation-aware,
the exporter secret used for an Exported Authenticator exchange is
explicitly determined by the generation selected by the application.</t>
          <t>As a result, cross-flight exchanges of EKU and <tt>AuthenticatorRequest</tt>
messages do not introduce cryptographic ambiguity. Therefore, no
serialization requirement is imposed between EKU and Exported Authenticator
exchanges.</t>
        </section>
      </section>
    </section>
    <section anchor="deployment">
      <name>Deployment Considerations</name>
      <t>Extended Key Update is enabled by explicit configuration, either by an
operator for all applications on a device or by an application that
needs it. The configuration includes a policy for when to initiate an
Extended Key Update, for example at a fixed interval or after a certain
amount of data has been exchanged. When enabled by an operator, the
application may not be aware of Extended Key Update. Enabling it has
the following effects:</t>
      <ul spacing="normal">
        <li>
          <t>Resumption using PSKs established via the NewSessionTicket mechanism is
disabled (<xref target="resumption"/>).</t>
        </li>
        <li>
          <t>Applications that use exported keying material and require post-compromise
security use the exporter interface defined in <xref target="exporter"/>.</t>
        </li>
        <li>
          <t>Post-Handshake Certificate-Based Client Authentication and Exported
Authenticators performed after an Extended Key Update are bound to the
updated keys (<xref target="exported"/>).</t>
        </li>
      </ul>
      <t>Implementations can warn when the exporter defined in
<xref section="7.5" sectionFormat="of" target="TLS"/> is used on a connection where Extended Key
Update was negotiated.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section discusses additional security and operational aspects introduced by the Extended Key Update mechanism. All security considerations of TLS 1.3 <xref target="TLS"/> and DTLS 1.3 <xref target="DTLS"/> continue to apply.</t>
      <section anchor="threat-model">
        <name>Threat Model</name>
        <t>The specification assumes that the adversary has the following capabilities:</t>
        <ul spacing="normal">
          <li>
            <t>Network attacker: The adversary has full control over the network
between the endpoints. It can read, modify, inject, drop, delay, and
reorder messages, including EKU messages. This is the same
attacker model assumed by TLS 1.3 (see <xref section="F" sectionFormat="of" target="TLS"/>).</t>
          </li>
          <li>
            <t>Transient endpoint compromise: For a limited period of time, the adversary
can read the memory of one or both endpoints. During this period it obtains
all keying material held by that endpoint for the connection, including the
current application traffic secrets and keys, the exporter secrets, the
value retained for deriving main_secret_N+1, transcript_hash_N, and any
ephemeral key exchange material in use. After the compromise ends, the adversary
retains all keying material obtained but has no access to ephemeral key
exchange material generated afterwards.</t>
          </li>
        </ul>
        <t>The security guarantees of Extended Key Update depend on the time of compromise
and the adversary's subsequent actions:</t>
        <ol spacing="normal" type="1"><li>
            <t>If compromise ends before an Extended Key Update starts, and the adversary
does not interfere with the exchange, then the adversary cannot derive the
traffic keys and exporter secrets established by that Extended Key Update.</t>
          </li>
          <li>
            <t>If the adversary uses keying material obtained during the compromise to act
as a person-in-the-middle attacker during an Extended Key Update, then security
cannot be restored. Such interference is detected by the endpoint that
validates the peer's authentication using a mechanism described in <xref target="exported"/>.</t>
          </li>
        </ol>
        <t>The following are out of scope:</t>
        <ul spacing="normal">
          <li>
            <t>An adversary with ongoing access to keying material on an endpoint,
also called a persistent adversary.</t>
          </li>
          <li>
            <t>Compromise of a long-term private key. An adversary holding it can
impersonate that endpoint in future TLS connections. The detection guarantees
in <xref target="exported"/> rely on the corresponding private key remaining secure.</t>
          </li>
        </ul>
        <t>If a compromise occurs before the handshake completes, the ephemeral key exchange,
client_handshake_traffic_secret, server_handshake_traffic_secret, and the initial
client_/server_application_traffic_secret could be exposed. Recovery then depends
on the conditions stated above.</t>
      </section>
      <section anchor="post-compromise-security">
        <name>Post-Compromise Security</name>
        <t>Under the threat model described in <xref target="threat-model"/>, Extended Key Update
provides post-compromise security for long-lived TLS sessions.
To ensure post-compromise security guarantees each update <bcp14>MUST</bcp14> use freshly generated
ephemeral key exchange material. Implementations <bcp14>MUST NOT</bcp14> reuse ephemeral key
exchange material across updates or across TLS sessions.</t>
      </section>
      <section anchor="denial-of-service-dos">
        <name>Denial-of-Service (DoS)</name>
        <t>The Extended Key Update mechanism increases computational and state-management overhead. A malicious peer could attempt to exhaust CPU or memory resources by initiating excessive update requests.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> apply the following mitigations:</t>
        <ul spacing="normal">
          <li>
            <t>Limit the frequency of accepted Extended Key Update requests per session.</t>
          </li>
          <li>
            <t>A peer that has sent an Extended Key Update <bcp14>MUST NOT</bcp14> initiate another until the previous update completes.
If a peer violates this rule, the receiving peer <bcp14>MUST</bcp14> treat it as a protocol violation, send an "unexpected_message" alert, and terminate the connection.</t>
          </li>
        </ul>
      </section>
      <section anchor="operational-guidance">
        <name>Operational Guidance</name>
        <t>Deployments <bcp14>SHOULD</bcp14> evaluate Extended Key Update performance under load and fault conditions, such as high-frequency or concurrent updates. TLS policies <bcp14>SHOULD</bcp14> define explicit rate limits that balance post-compromise security benefits against potential DoS exposure.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="tls-flags">
        <name>TLS Flags</name>
        <t>IANA is requested to add the following entry to the "TLS Flags"
extension registry <xref target="TLS-Ext-Registry"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Value: TBD1</t>
          </li>
          <li>
            <t>Flag Name: extended_key_update</t>
          </li>
          <li>
            <t>Messages: CH, EE</t>
          </li>
          <li>
            <t>Recommended: Y</t>
          </li>
          <li>
            <t>Reference: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="tls-handshaketype">
        <name>TLS HandshakeType</name>
        <t>IANA is requested to add the following entry to the "TLS HandshakeType"
registry <xref target="TLS-Param-Registry"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Value: TBD2</t>
          </li>
          <li>
            <t>Description: extended_key_update</t>
          </li>
          <li>
            <t>DTLS-OK: Y</t>
          </li>
          <li>
            <t>Reference: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-eku-registry">
        <name>ExtendedKeyUpdate Message Subtypes Registry</name>
        <t>IANA is requested to create a new registry "TLS ExtendedKeyUpdate Message Subtypes", within the existing "Transport Layer Security (TLS) Parameters" registry group
<xref target="TLS-Param-Registry"/>.
This new registry reserves types used for Extended Key Update entries.
The initial contents of this registry are as follows.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">DTLS-OK</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">key_update_request</td>
              <td align="left">Y</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">key_update_response</td>
              <td align="left">Y</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">key_update_finish</td>
              <td align="left">Y</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>New assignments in the "TLS ExtendedKeyUpdate Message Subtypes" registry will be administered by
IANA through Specification Required procedure <xref target="RFC8126"/>.  The role of the
designated expert is described in <xref section="17" sectionFormat="of" target="RFC8447"/>.  The designated expert
<xref target="RFC8126"/> ensures that the specification is publicly available.  It is sufficient to
have an Internet-Draft (that is posted and never published as an RFC) or to cite a
document from another standards body, industry consortium, or any other location.
An expert may provide more in-depth reviews, but their approval should not be taken as an
endorsement of the ExtendedKeyUpdate Message Subtype.</t>
      </section>
      <section anchor="sslkeylogfile-labels">
        <name>SSLKEYLOGFILE labels</name>
        <t>IANA is requested to add the following entries to the "TLS SSLKEYLOGFILE Labels"
extension registry <xref target="TLS-Ext-Registry"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
              <th align="left">Comment</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CLIENT_TRAFFIC_SECRET_N+1</td>
              <td align="left">Secret protecting client records after Extended Key Update</td>
              <td align="left">This document</td>
              <td align="left">N represents iteration of Extended Key Update</td>
            </tr>
            <tr>
              <td align="left">SERVER_TRAFFIC_SECRET_N+1</td>
              <td align="left">Secret protecting server records after Extended Key Update</td>
              <td align="left">This document</td>
              <td align="left">N represents iteration of Extended Key Update</td>
            </tr>
            <tr>
              <td align="left">EXPORTER_SECRET_N+1</td>
              <td align="left">Exporter secret after Extended Key Update</td>
              <td align="left">This document</td>
              <td align="left">N represents iteration of Extended Key Update</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <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 obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="DTLS">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </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="TLS-FLAGS">
          <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="10" month="September" year="2026"/>
            <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-18"/>
        </reference>
        <reference anchor="RFC9729">
          <front>
            <title>The Concealed HTTP Authentication Scheme</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="D. Oliver" initials="D." surname="Oliver"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <date month="February" year="2025"/>
            <abstract>
              <t>Most HTTP authentication schemes are probeable in the sense that it is possible for an unauthenticated client to probe whether an origin serves resources that require authentication. It is possible for an origin to hide the fact that it requires authentication by not generating Unauthorized status codes; however, that only works with non-cryptographic authentication schemes: cryptographic signatures require a fresh nonce to be signed. Prior to this document, there was no existing way for the origin to share such a nonce without exposing the fact that it serves resources that require authentication. This document defines a new non-probeable cryptographic authentication scheme.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9729"/>
          <seriesInfo name="DOI" value="10.17487/RFC9729"/>
        </reference>
        <reference anchor="RFC3711">
          <front>
            <title>The Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="M. Baugher" initials="M." surname="Baugher"/>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="M. Naslund" initials="M." surname="Naslund"/>
            <author fullname="E. Carrara" initials="E." surname="Carrara"/>
            <author fullname="K. Norrman" initials="K." surname="Norrman"/>
            <date month="March" year="2004"/>
            <abstract>
              <t>This document describes the Secure Real-time Transport Protocol (SRTP), a profile of the Real-time Transport Protocol (RTP), which can provide confidentiality, message authentication, and replay protection to the RTP traffic and to the control traffic for RTP, the Real-time Transport Control Protocol (RTCP). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3711"/>
          <seriesInfo name="DOI" value="10.17487/RFC3711"/>
        </reference>
        <reference anchor="RFC9261">
          <front>
            <title>Exported Authenticators in TLS</title>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that builds on Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS) and enables peers to provide proof of ownership of an identity, such as an X.509 certificate. This proof can be exported by one peer, transmitted out of band to the other peer, and verified by the receiving peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9261"/>
          <seriesInfo name="DOI" value="10.17487/RFC9261"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-tls-ecdhe-mlkem">
          <front>
            <title>Post-quantum hybrid ECDHE-MLKEM Key Agreement for TLSv1.3</title>
            <author fullname="Kris Kwiatkowski" initials="K." surname="Kwiatkowski">
              <organization>PQShield</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <date day="26" month="May" year="2026"/>
            <abstract>
              <t>   This draft defines three hybrid key agreement mechanisms for TLS 1.3
   - X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024 - that
   combine the post-quantum ML-KEM (Module-Lattice-Based Key
   Encapsulation Mechanism) with an ECDHE (Elliptic Curve Diffie-
   Hellman) exchange.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ecdhe-mlkem-05"/>
        </reference>
        <reference anchor="I-D.ietf-tls-mlkem">
          <front>
            <title>ML-KEM Post-Quantum Key Agreement for TLS 1.3</title>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>Selkie Cryptography</organization>
            </author>
            <date day="16" month="September" year="2026"/>
            <abstract>
              <t>   This memo defines ML-KEM-512, ML-KEM-768, and ML-KEM-1024 as
   NamedGroups and registers IANA values in the TLS Supported Groups
   registry for use in TLS 1.3 to achieve post-quantum (PQ) key
   establishment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-mlkem-11"/>
        </reference>
        <reference anchor="RFC9958">
          <front>
            <title>Post-Quantum Cryptography for Engineers</title>
            <author fullname="A. Banerjee" initials="A." surname="Banerjee"/>
            <author fullname="T. Reddy.K" initials="T." surname="Reddy.K"/>
            <author fullname="D. Schoinianakis" initials="D." surname="Schoinianakis"/>
            <author fullname="T. Hollebeek" initials="T." surname="Hollebeek"/>
            <author fullname="M. Ounsworth" initials="M." surname="Ounsworth"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>The advent of a cryptographically relevant quantum computer (CRQC) would render state-of-the-art, traditional public key algorithms deployed today obsolete, as the mathematical assumptions underpinning their security would no longer hold. To address this, protocols and infrastructure must transition to post-quantum algorithms, which are designed to resist both traditional and quantum attacks. This document explains why engineers need to be aware of and understand post-quantum cryptography (PQC), and it details the impact of CRQCs on existing systems and the challenges involved in transitioning to post-quantum algorithms. Unlike previous cryptographic updates, this shift may require significant protocol redesign due to the unique properties of post-quantum algorithms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9958"/>
          <seriesInfo name="DOI" value="10.17487/RFC9958"/>
        </reference>
        <reference anchor="ANSSI" target="https://cyber.gouv.fr/sites/default/files/2012/09/NT_IPsec_EN.pdf">
          <front>
            <title>Recommendations for securing networks with IPsec, Technical Report</title>
            <author>
              <organization>ANSSI</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
        </reference>
        <reference anchor="TLS-Ext-Registry" target="https://www.iana.org/assignments/tls-extensiontype-values">
          <front>
            <title>Transport Layer Security (TLS) Extensions</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2023" month="November"/>
          </front>
        </reference>
        <reference anchor="TLS-Param-Registry" target="https://www.iana.org/assignments/tls-parameters">
          <front>
            <title>Transport Layer Security (TLS) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2023" month="November"/>
          </front>
        </reference>
        <reference anchor="CCG16" target="https://doi.org/10.1109/csf.2016.19">
          <front>
            <title>On Post-compromise Security</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2016" month="August"/>
          </front>
        </reference>
        <reference anchor="TLS-RENEGOTIATION">
          <front>
            <title>Transport Layer Security (TLS) Renegotiation Indication Extension</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="M. Ray" initials="M." surname="Ray"/>
            <author fullname="S. Dispensa" initials="S." surname="Dispensa"/>
            <author fullname="N. Oskov" initials="N." surname="Oskov"/>
            <date month="February" year="2010"/>
            <abstract>
              <t>Secure Socket Layer (SSL) and Transport Layer Security (TLS) renegotiation are vulnerable to an attack in which the attacker forms a TLS connection with the target server, injects content of his choice, and then splices in a new TLS connection from a client. The server treats the client's initial TLS handshake as a renegotiation and thus believes that the initial data transmitted by the attacker is from the same entity as the subsequent client data. This specification defines a TLS extension to cryptographically tie renegotiations to the TLS connections they are being performed over, thus preventing this attack. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5746"/>
          <seriesInfo name="DOI" value="10.17487/RFC5746"/>
        </reference>
        <reference anchor="CONFIDENTIALITY">
          <front>
            <title>Confidentiality in the Face of Pervasive Surveillance: A Threat Model and Problem Statement</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Schneier" initials="B." surname="Schneier"/>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="D. Borkmann" initials="D." surname="Borkmann"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>Since the initial revelations of pervasive surveillance in 2013, several classes of attacks on Internet communications have been discovered. In this document, we develop a threat model that describes these attacks on Internet confidentiality. We assume an attacker that is interested in undetected, indiscriminate eavesdropping. The threat model is based on published, verified attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7624"/>
          <seriesInfo name="DOI" value="10.17487/RFC7624"/>
        </reference>
        <reference anchor="RFC9794">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="F. Driscoll" initials="F." surname="Driscoll"/>
            <author fullname="M. Parsons" initials="M." surname="Parsons"/>
            <author fullname="B. Hale" initials="B." surname="Hale"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>One aspect of the transition to post-quantum algorithms in cryptographic protocols is the development of hybrid schemes that incorporate both post-quantum and traditional asymmetric algorithms. This document defines terminology for such schemes. It is intended to be used as a reference and, hopefully, to ensure consistency and clarity across different protocols, standards, and organisations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9794"/>
          <seriesInfo name="DOI" value="10.17487/RFC9794"/>
        </reference>
        <reference anchor="TLS-KEYLOGFILE">
          <front>
            <title>The SSLKEYLOGFILE Format for TLS</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="9" month="June" year="2025"/>
            <abstract>
              <t>   A format that supports logging information about the secrets used in
   a TLS connection is described.  Recording secrets to a file in
   SSLKEYLOGFILE format allows diagnostic and logging tools that use
   this file to decrypt messages exchanged by TLS endpoints.  This
   format is intended for use in systems where TLS only protects test
   data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-keylogfile-05"/>
        </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="RFC8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
      </references>
    </references>
    <?line 1185?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank the members of the "TSVWG DTLS for SCTP
Requirements Design Team" for their discussion. The members, in
no particular order, were: Marcelo Ricardo Leitner, Xin Long,
John Mattsson, Claudio Porfiri, Bertrand Rault, K Tirumaleswar Reddy,
Zaheduzzaman Sarker, Hannes Tschofenig, Michael Tüxen, and
Magnus Westerlund.</t>
      <t>Additionally, we would like to thank the chairs of the
Transport and Services Working Group (tsvwg) Gorry Fairhurst and
Marten Seemann as well as the responsible area director Martin Duke.</t>
      <t>Finally, we would like to thank David Benjamin, Joe Birr-Pixton,
Matthijs van Duin, Scott Fluhrer, Dennis Jackson, Benjamin Kaduk,
Ilari Liusvaara, Eric Rescorla, Rifaat Shekh-Yusef, Martin Thomson,
Nik Stuckenbrock, Mathy Vanhoef, and Thom Wiggers for their review comments
and contributions.</t>
    </section>
    <section anchor="state-machines">
      <name>State Machines</name>
      <t>The sections below describe the state machines for the extended key update
operation for TLS 1.3 and DTLS 1.3.</t>
      <t>The state machine diagrams in the Appendix are provided for illustrative
purposes only to aid understanding of the protocol flow. They are not normative.
In case of any discrepancy between the Appendix diagrams and the protocol
behavior specified in the main body of this document, the text in the
draft takes precedence.</t>
      <t>For editorial reasons we abbreviate the protocol message types:</t>
      <ul spacing="normal">
        <li>
          <t>Req - ExtendedKeyUpdate(request)</t>
        </li>
        <li>
          <t>Resp - ExtendedKeyUpdate(response)</t>
        </li>
        <li>
          <t>Fin - ExtendedKeyUpdate(key_update_finish)</t>
        </li>
        <li>
          <t>ACK - Acknowledgement message from <xref section="7" sectionFormat="of" target="DTLS"/></t>
        </li>
        <li>
          <t>APP - application data payloads</t>
        </li>
      </ul>
      <t>In the (D)TLS 1.3 state machines discussed below, the terms SEND and RECEIVE keys
refer to the send and receive key variables defined in <xref target="term"/>.</t>
      <t>The TLS state machine diagrams use the following notation:</t>
      <ul spacing="normal">
        <li>
          <t>Numbered labels (1), (2), … denote normal protocol transitions in the order they occur.</t>
        </li>
        <li>
          <t>Lettered labels (A), (B), … denote exceptional or conditional transitions.</t>
        </li>
        <li>
          <t>Self-loops indicate that the state does not change as a result of the event.</t>
        </li>
      </ul>
      <section anchor="tls-13-state-machines">
        <name>TLS 1.3 State Machines</name>
        <t>This section describes the initiator and responder state machines.</t>
        <section anchor="initiator-state-machine">
          <name>Initiator State Machine</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="536" viewBox="0 0 536 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
                <path d="M 8,192 L 8,496" fill="none" stroke="black"/>
                <path d="M 8,528 L 8,560" fill="none" stroke="black"/>
                <path d="M 192,32 L 192,112" fill="none" stroke="black"/>
                <path d="M 192,192 L 192,240" fill="none" stroke="black"/>
                <path d="M 192,528 L 192,560" fill="none" stroke="black"/>
                <path d="M 8,32 L 192,32" fill="none" stroke="black"/>
                <path d="M 8,112 L 192,112" fill="none" stroke="black"/>
                <path d="M 8,192 L 192,192" fill="none" stroke="black"/>
                <path d="M 8,240 L 192,240" fill="none" stroke="black"/>
                <path d="M 8,528 L 192,528" fill="none" stroke="black"/>
                <path d="M 8,560 L 192,560" fill="none" stroke="black"/>
                <path d="M 28,248 L 72,336" fill="none" stroke="black"/>
                <circle cx="96" cy="352" r="6" class="closeddot" fill="black"/>
                <circle cx="96" cy="368" r="6" class="closeddot" fill="black"/>
                <g class="text">
                  <text x="40" y="52">START</text>
                  <text x="88" y="68">send_key=current,</text>
                  <text x="96" y="84">receive_key=current</text>
                  <text x="60" y="100">updating=0</text>
                  <text x="56" y="132">|</text>
                  <text x="16" y="148">(1)</text>
                  <text x="52" y="148">send</text>
                  <text x="88" y="148">Req</text>
                  <text x="124" y="148">with</text>
                  <text x="168" y="148">local</text>
                  <text x="248" y="148">KeyShareEntry</text>
                  <text x="48" y="164">set</text>
                  <text x="108" y="164">updating=1</text>
                  <text x="56" y="180">v</text>
                  <text x="56" y="212">WAIT_RESP</text>
                  <text x="60" y="228">updating=1</text>
                  <text x="64" y="276">(A)</text>
                  <text x="100" y="276">recv</text>
                  <text x="140" y="276">peer</text>
                  <text x="176" y="276">Req</text>
                  <text x="228" y="276">(crossed</text>
                  <text x="304" y="276">updates):</text>
                  <text x="96" y="292">compare</text>
                  <text x="200" y="292">peer.key_exchange</text>
                  <text x="284" y="292">to</text>
                  <text x="372" y="292">local.key_exchange</text>
                  <text x="80" y="308">-</text>
                  <text x="100" y="308">if</text>
                  <text x="132" y="308">peer</text>
                  <text x="160" y="308">&lt;</text>
                  <text x="196" y="308">local:</text>
                  <text x="252" y="308">IGNORE</text>
                  <text x="300" y="308">peer</text>
                  <text x="336" y="308">Req</text>
                  <text x="376" y="308">(send</text>
                  <text x="436" y="308">nothing)</text>
                  <text x="80" y="324">-</text>
                  <text x="100" y="324">if</text>
                  <text x="132" y="324">peer</text>
                  <text x="164" y="324">==</text>
                  <text x="204" y="324">local:</text>
                  <text x="256" y="324">ABORT</text>
                  <text x="364" y="324">"unexpected_message"</text>
                  <text x="88" y="340">-</text>
                  <text x="108" y="340">if</text>
                  <text x="140" y="340">peer</text>
                  <text x="168" y="340">&gt;</text>
                  <text x="204" y="340">local:</text>
                  <text x="264" y="340">ABANDON</text>
                  <text x="320" y="340">local</text>
                  <text x="376" y="340">update:</text>
                  <text x="120" y="356">set</text>
                  <text x="180" y="356">updating=0</text>
                  <text x="120" y="372">act</text>
                  <text x="148" y="372">as</text>
                  <text x="204" y="372">RESPONDER:</text>
                  <text x="268" y="372">send</text>
                  <text x="308" y="372">Resp</text>
                  <text x="348" y="372">with</text>
                  <text x="428" y="372">KeyShareEntry,</text>
                  <text x="132" y="388">derive</text>
                  <text x="176" y="388">new</text>
                  <text x="228" y="388">secrets,</text>
                  <text x="284" y="388">then</text>
                  <text x="336" y="388">proceed</text>
                  <text x="380" y="388">as</text>
                  <text x="404" y="388">in</text>
                  <text x="456" y="388">responder</text>
                  <text x="516" y="388">flow</text>
                  <text x="40" y="420">(2)</text>
                  <text x="76" y="420">recv</text>
                  <text x="116" y="420">Resp</text>
                  <text x="156" y="420">with</text>
                  <text x="220" y="420">key_share:</text>
                  <text x="84" y="436">derive</text>
                  <text x="128" y="436">new</text>
                  <text x="176" y="436">secrets</text>
                  <text x="76" y="452">send</text>
                  <text x="112" y="452">Fin</text>
                  <text x="172" y="452">(encrypted</text>
                  <text x="240" y="452">under</text>
                  <text x="280" y="452">old</text>
                  <text x="320" y="452">keys)</text>
                  <text x="84" y="468">update</text>
                  <text x="132" y="468">SEND</text>
                  <text x="168" y="468">key</text>
                  <text x="224" y="468">(send_key</text>
                  <text x="276" y="468">:=</text>
                  <text x="308" y="468">new)</text>
                  <text x="84" y="484">update</text>
                  <text x="144" y="484">RECEIVE</text>
                  <text x="192" y="484">key</text>
                  <text x="260" y="484">(receive_key</text>
                  <text x="324" y="484">:=</text>
                  <text x="356" y="484">new)</text>
                  <text x="72" y="500">set</text>
                  <text x="132" y="500">updating=0</text>
                  <text x="64" y="516">v</text>
                  <text x="52" y="548">FINISHED</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----------------------+
| START                |
| send_key=current,    |
| receive_key=current  |
| updating=0           |
+----------------------+
      |
(1) send Req with local KeyShareEntry
    set updating=1
      v
+----------------------+
| WAIT_RESP            |
| updating=1           |
+----------------------+
|  \
|   \ (A) recv peer Req (crossed updates):
|    \  compare peer.key_exchange to local.key_exchange
|     \  - if peer < local: IGNORE peer Req (send nothing)
|      \ - if peer == local: ABORT "unexpected_message"
|       \ - if peer > local: ABANDON local update:
|          * set updating=0
|          * act as RESPONDER: send Resp with KeyShareEntry,
|            derive new secrets, then proceed as in responder flow
|
|  (2) recv Resp with key_share:
|      derive new secrets
|      send Fin (encrypted under old keys)
|      update SEND key (send_key := new)
|      update RECEIVE key (receive_key := new)
|      set updating=0
       v
+----------------------+
| FINISHED             |
+----------------------+
]]></artwork>
          </artset>
          <t>Notes:</t>
          <ul spacing="normal">
            <li>
              <t>Fin message is sent under old keys.</t>
            </li>
            <li>
              <t>If a standard KeyUpdate arrives (EKU negotiated), ABORT "unexpected_message".</t>
            </li>
            <li>
              <t>Crossed-requests: ignore the request with LOWER lexicographic key_exchange; if equal, abort.</t>
            </li>
          </ul>
        </section>
        <section anchor="responder-state-machine">
          <name>Responder State Machine</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="544" width="360" viewBox="0 0 360 544" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
                <path d="M 8,192 L 8,320" fill="none" stroke="black"/>
                <path d="M 8,352 L 8,400" fill="none" stroke="black"/>
                <path d="M 8,496 L 8,528" fill="none" stroke="black"/>
                <path d="M 192,32 L 192,112" fill="none" stroke="black"/>
                <path d="M 192,192 L 192,224" fill="none" stroke="black"/>
                <path d="M 192,352 L 192,400" fill="none" stroke="black"/>
                <path d="M 192,496 L 192,528" fill="none" stroke="black"/>
                <path d="M 8,32 L 192,32" fill="none" stroke="black"/>
                <path d="M 8,112 L 192,112" fill="none" stroke="black"/>
                <path d="M 8,192 L 192,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 192,224" fill="none" stroke="black"/>
                <path d="M 32,320 L 48,320" fill="none" stroke="black"/>
                <path d="M 8,352 L 192,352" fill="none" stroke="black"/>
                <path d="M 8,400 L 192,400" fill="none" stroke="black"/>
                <path d="M 8,496 L 192,496" fill="none" stroke="black"/>
                <path d="M 8,528 L 192,528" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="56,320 44,314.4 44,325.6" fill="black" transform="rotate(0,48,320)"/>
                <g class="text">
                  <text x="40" y="52">START</text>
                  <text x="88" y="68">send_key=current,</text>
                  <text x="96" y="84">receive_key=current</text>
                  <text x="60" y="100">updating=0</text>
                  <text x="56" y="132">|</text>
                  <text x="16" y="148">(1)</text>
                  <text x="52" y="148">recv</text>
                  <text x="88" y="148">Req</text>
                  <text x="48" y="164">set</text>
                  <text x="108" y="164">updating=1</text>
                  <text x="56" y="180">v</text>
                  <text x="48" y="212">RESPOND</text>
                  <text x="44" y="244">send</text>
                  <text x="84" y="244">Resp</text>
                  <text x="124" y="244">with</text>
                  <text x="200" y="244">KeyShareEntry</text>
                  <text x="44" y="260">(may</text>
                  <text x="88" y="260">defer</text>
                  <text x="144" y="260">sending</text>
                  <text x="188" y="260">if</text>
                  <text x="224" y="260">under</text>
                  <text x="272" y="260">load;</text>
                  <text x="52" y="276">must</text>
                  <text x="92" y="276">send</text>
                  <text x="132" y="276">once</text>
                  <text x="192" y="276">resources</text>
                  <text x="256" y="276">free)</text>
                  <text x="52" y="292">derive</text>
                  <text x="96" y="292">new</text>
                  <text x="144" y="292">secrets</text>
                  <text x="52" y="308">update</text>
                  <text x="100" y="308">SEND</text>
                  <text x="140" y="308">keys</text>
                  <text x="200" y="308">(send_key</text>
                  <text x="252" y="308">:=</text>
                  <text x="284" y="308">new)</text>
                  <text x="100" y="324">WAIT_I_FIN</text>
                  <text x="56" y="340">v</text>
                  <text x="60" y="372">WAIT_I_FIN</text>
                  <text x="60" y="388">updating=1</text>
                  <text x="56" y="420">|</text>
                  <text x="16" y="436">(2)</text>
                  <text x="52" y="436">recv</text>
                  <text x="88" y="436">Fin</text>
                  <text x="148" y="436">(encrypted</text>
                  <text x="216" y="436">under</text>
                  <text x="256" y="436">old</text>
                  <text x="296" y="436">keys)</text>
                  <text x="60" y="452">update</text>
                  <text x="120" y="452">RECEIVE</text>
                  <text x="172" y="452">keys</text>
                  <text x="244" y="452">(receive_key</text>
                  <text x="308" y="452">:=</text>
                  <text x="340" y="452">new)</text>
                  <text x="48" y="468">set</text>
                  <text x="108" y="468">updating=0</text>
                  <text x="56" y="484">v</text>
                  <text x="52" y="516">FINISHED</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----------------------+
| START                |
| send_key=current,    |
| receive_key=current  |
| updating=0           |
+----------------------+
      |
(1) recv Req
    set updating=1
      v
+----------------------+
| RESPOND              |
+----------------------+
|  send Resp with KeyShareEntry
|  (may defer sending if under load;
|   must send once resources free)
|  derive new secrets
|  update SEND keys (send_key := new)
|  --> WAIT_I_FIN
      v
+----------------------+
| WAIT_I_FIN           |
| updating=1           |
+----------------------+
      |
(2) recv Fin (encrypted under old keys)
    update RECEIVE keys (receive_key := new)
    set updating=0
      v
+----------------------+
| FINISHED             |
+----------------------+
]]></artwork>
          </artset>
          <t>Notes:</t>
          <ul spacing="normal">
            <li>
              <t>Responder may defer Resp under load (no status reply), then must send it once resources are free.</t>
            </li>
            <li>
              <t>If a standard KeyUpdate arrives (EKU negotiated), ABORT "unexpected_message".</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="dtls-13-state-machines">
        <name>DTLS 1.3 State Machines</name>
        <t>This section describes the initiator and responder state machines.</t>
        <section anchor="terms-and-abbreviations">
          <name>Terms and Abbreviations</name>
          <t>The following variables and abbreviations are used in the state machine diagrams.</t>
          <ul spacing="normal">
            <li>
              <t>rx - current, accepted receive epoch.</t>
            </li>
            <li>
              <t>tx - current transmit epoch used for tagging outgoing messages.</t>
            </li>
            <li>
              <t>E - initial epoch value.</t>
            </li>
            <li>
              <t>updating - true while a key-update handshake is in progress.</t>
            </li>
            <li>
              <t>old_rx - the previous receive epoch remembered during retention.</t>
            </li>
            <li>
              <t>retain_old - when true, receiver accepts tags old_rx and rx.</t>
            </li>
            <li>
              <t>tag=... - the TX-epoch value written on an outgoing message.</t>
            </li>
            <li>
              <t>e==... - the epoch tag carried on an incoming message (what the peer sent).</t>
            </li>
            <li>
              <t>FINISHED / START / WAIT_RESP / WAIT_I_FIN / WAIT_R_FIN / ACTIVATE RETENTION / RESPOND / WAIT_ACK - diagram states; FINISHED denotes the steady state after success.</t>
            </li>
          </ul>
          <t>Crossed requests. If both peers independently initiate the extended key update and the key_update_request messages cross in flight, compare the KeyShareEntry.key_exchange values. The request with the lower lexicographic value must be ignored. If the values are equal, the endpoint must abort with an "unexpected_message" alert. If the peer's value is higher than the local one, the endpoint abandons its in-flight update and processes the peer's request as responder.</t>
        </section>
        <section anchor="state-machine-initiator">
          <name>State Machine (Initiator)</name>
          <t>The initiator starts in the START state with matching epochs (rx := E; tx := E). It sends a Req and enters WAIT_RESP (updating := 1). While waiting, APP data may be sent at any time (tagged with the current tx) and received according to the APP acceptance rule below.</t>
          <t>Once the responder returns Resp with a tag matching the current rx, the initiator derives new key material. It then sends Fin still tagged with the old tx. The initiator activates retention mode: the old epoch is remembered, the receive epoch is incremented, and application data is accepted under both epochs for a transition period. Initiator moves to WAIT_ACK.</t>
          <t>If a peer key_update_request arrives while in WAIT_RESP (crossed updates), apply the crossed-request rule above. If the peer's key_exchange is higher, abandon the local update (updating := 0) and continue as responder: send key_update_response, derive new secrets, then proceed with the responder flow. If lower, ignore the peer's request; if equal, abort with "unexpected_message".</t>
          <t>Upon receiving the responder's ACK matching the updated epoch, the initiator completes the transition by synchronizing transmit and receive epochs (tx := rx), disabling retention, and clearing the update flag. The state machine returns to FINISHED, ready for subsequent updates.</t>
          <t>Throughout the process:</t>
          <ul spacing="normal">
            <li>
              <t>Duplicate messages are tolerated (for retransmission handling).</t>
            </li>
            <li>
              <t>Temporary epoch mismatches are permitted while an update is in progress.</t>
            </li>
            <li>
              <t>Application data flows continuously, subject to epoch acceptance rules.</t>
            </li>
          </ul>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="832" width="536" viewBox="0 0 536 832" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 8,512 L 8,576" fill="none" stroke="black"/>
                <path d="M 8,640 L 8,672" fill="none" stroke="black"/>
                <path d="M 8,784 L 8,816" fill="none" stroke="black"/>
                <path d="M 16,200 L 16,432" fill="none" stroke="black"/>
                <path d="M 56,200 L 56,400" fill="none" stroke="black"/>
                <path d="M 56,680 L 56,720" fill="none" stroke="black"/>
                <path d="M 88,464 L 88,504" fill="none" stroke="black"/>
                <path d="M 96,200 L 96,368" fill="none" stroke="black"/>
                <path d="M 184,512 L 184,576" fill="none" stroke="black"/>
                <path d="M 192,200 L 192,256" fill="none" stroke="black"/>
                <path d="M 256,160 L 256,192" fill="none" stroke="black"/>
                <path d="M 256,640 L 256,672" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,80" fill="none" stroke="black"/>
                <path d="M 352,784 L 352,816" fill="none" stroke="black"/>
                <path d="M 8,32 L 280,32" fill="none" stroke="black"/>
                <path d="M 8,80 L 280,80" fill="none" stroke="black"/>
                <path d="M 8,160 L 256,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 256,192" fill="none" stroke="black"/>
                <path d="M 192,256 L 208,256" fill="none" stroke="black"/>
                <path d="M 96,368 L 112,368" fill="none" stroke="black"/>
                <path d="M 56,400 L 72,400" fill="none" stroke="black"/>
                <path d="M 16,432 L 32,432" fill="none" stroke="black"/>
                <path d="M 8,512 L 184,512" fill="none" stroke="black"/>
                <path d="M 8,576 L 184,576" fill="none" stroke="black"/>
                <path d="M 8,640 L 256,640" fill="none" stroke="black"/>
                <path d="M 8,672 L 256,672" fill="none" stroke="black"/>
                <path d="M 8,784 L 352,784" fill="none" stroke="black"/>
                <path d="M 8,816 L 352,816" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="200,200 188,194.4 188,205.6" fill="black" transform="rotate(270,192,200)"/>
                <polygon class="arrowhead" points="104,200 92,194.4 92,205.6" fill="black" transform="rotate(270,96,200)"/>
                <polygon class="arrowhead" points="96,504 84,498.4 84,509.6" fill="black" transform="rotate(90,88,504)"/>
                <polygon class="arrowhead" points="64,200 52,194.4 52,205.6" fill="black" transform="rotate(270,56,200)"/>
                <polygon class="arrowhead" points="24,200 12,194.4 12,205.6" fill="black" transform="rotate(270,16,200)"/>
                <g class="text">
                  <text x="40" y="52">START</text>
                  <text x="28" y="68">rx</text>
                  <text x="52" y="68">:=</text>
                  <text x="76" y="68">E;</text>
                  <text x="100" y="68">tx</text>
                  <text x="124" y="68">:=</text>
                  <text x="148" y="68">E,</text>
                  <text x="196" y="68">updating</text>
                  <text x="244" y="68">:=</text>
                  <text x="264" y="68">0</text>
                  <text x="56" y="100">|</text>
                  <text x="16" y="116">(1)</text>
                  <text x="52" y="116">send</text>
                  <text x="88" y="116">Req</text>
                  <text x="140" y="116">[tag=tx]</text>
                  <text x="48" y="132">set</text>
                  <text x="100" y="132">updating</text>
                  <text x="148" y="132">:=</text>
                  <text x="168" y="132">1</text>
                  <text x="56" y="148">v</text>
                  <text x="56" y="180">WAIT_RESP</text>
                  <text x="232" y="260">(A)</text>
                  <text x="268" y="260">recv</text>
                  <text x="308" y="260">peer</text>
                  <text x="344" y="260">Req</text>
                  <text x="404" y="260">(crossed):</text>
                  <text x="236" y="276">if</text>
                  <text x="268" y="276">peer</text>
                  <text x="296" y="276">&lt;</text>
                  <text x="328" y="276">local</text>
                  <text x="372" y="276">-&gt;</text>
                  <text x="412" y="276">IGNORE</text>
                  <text x="488" y="276">(Self-Loop)</text>
                  <text x="236" y="292">if</text>
                  <text x="268" y="292">peer</text>
                  <text x="300" y="292">==</text>
                  <text x="336" y="292">local</text>
                  <text x="372" y="292">-&gt;</text>
                  <text x="408" y="292">ABORT</text>
                  <text x="472" y="292">(Error)</text>
                  <text x="236" y="308">if</text>
                  <text x="268" y="308">peer</text>
                  <text x="296" y="308">&gt;</text>
                  <text x="328" y="308">local</text>
                  <text x="372" y="308">-&gt;</text>
                  <text x="416" y="308">ABANDON</text>
                  <text x="480" y="308">update;</text>
                  <text x="420" y="324">updating</text>
                  <text x="468" y="324">:=</text>
                  <text x="492" y="324">0;</text>
                  <text x="400" y="340">act</text>
                  <text x="428" y="340">as</text>
                  <text x="480" y="340">RESPONDER</text>
                  <text x="136" y="372">APP</text>
                  <text x="172" y="372">send</text>
                  <text x="232" y="372">(anytime)</text>
                  <text x="400" y="372">(Self-Loop)</text>
                  <text x="96" y="404">APP</text>
                  <text x="136" y="404">recv:</text>
                  <text x="204" y="404">retain_old</text>
                  <text x="260" y="404">&amp;&amp;</text>
                  <text x="280" y="404">e</text>
                  <text x="300" y="404">==</text>
                  <text x="340" y="404">old_rx</text>
                  <text x="432" y="404">(Self-Loop)</text>
                  <text x="56" y="436">APP</text>
                  <text x="96" y="436">recv:</text>
                  <text x="128" y="436">e</text>
                  <text x="148" y="436">==</text>
                  <text x="172" y="436">rx</text>
                  <text x="440" y="436">(Self-Loop)</text>
                  <text x="116" y="468">recv</text>
                  <text x="156" y="468">Resp</text>
                  <text x="188" y="468">[e</text>
                  <text x="212" y="468">==</text>
                  <text x="240" y="468">rx]</text>
                  <text x="124" y="484">derive</text>
                  <text x="184" y="484">secrets</text>
                  <text x="52" y="532">ACTIVATE</text>
                  <text x="128" y="532">RETENTION</text>
                  <text x="60" y="548">old_rx=rx;</text>
                  <text x="72" y="564">retain_old=1;</text>
                  <text x="148" y="564">rx++</text>
                  <text x="88" y="596">|</text>
                  <text x="16" y="612">(2)</text>
                  <text x="52" y="612">send</text>
                  <text x="88" y="612">Fin</text>
                  <text x="140" y="612">[tag=old</text>
                  <text x="192" y="612">tx]</text>
                  <text x="88" y="628">v</text>
                  <text x="52" y="660">WAIT_ACK</text>
                  <text x="128" y="660">(updating</text>
                  <text x="176" y="660">=</text>
                  <text x="196" y="660">1)</text>
                  <text x="88" y="708">APP</text>
                  <text x="144" y="708">send/recv</text>
                  <text x="216" y="708">allowed</text>
                  <text x="16" y="740">(3)</text>
                  <text x="52" y="740">recv</text>
                  <text x="88" y="740">ACK</text>
                  <text x="136" y="740">[e==rx]</text>
                  <text x="60" y="756">tx=rx;</text>
                  <text x="144" y="756">retain_old=0;</text>
                  <text x="236" y="756">updating</text>
                  <text x="284" y="756">:=</text>
                  <text x="304" y="756">0</text>
                  <text x="56" y="772">v</text>
                  <text x="52" y="804">FINISHED</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+---------------------------------+
| START                           |
| rx := E; tx := E, updating := 0 |
+---------------------------------+
      |
(1) send Req [tag=tx]
    set updating := 1
      v
+------------------------------+
| WAIT_RESP                    |
+------------------------------+
 ^    ^    ^           ^
 |    |    |           |
 |    |    |           |
 |    |    |           +-- (A) recv peer Req (crossed):
 |    |    |                if peer < local  -> IGNORE (Self-Loop)
 |    |    |                if peer == local -> ABORT  (Error)
 |    |    |                if peer > local  -> ABANDON update;
 |    |    |                                    updating := 0;
 |    |    |                                    act as RESPONDER
 |    |    |
 |    |    +-- APP send (anytime)           (Self-Loop)
 |    |
 |    +-- APP recv: retain_old && e == old_rx   (Self-Loop)
 |
 +-- APP recv: e == rx                           (Self-Loop)

          | recv Resp [e == rx]
          | derive secrets
          v
+---------------------+
| ACTIVATE RETENTION  |
| old_rx=rx;          |
| retain_old=1; rx++  |
+---------------------+
          |
(2) send Fin [tag=old tx]
          v
+------------------------------+
| WAIT_ACK (updating = 1)      |
+------------------------------+
      |
      |  APP send/recv allowed
      |
(3) recv ACK [e==rx]
    tx=rx; retain_old=0; updating := 0
      v
+------------------------------------------+
| FINISHED                                 |
+------------------------------------------+
]]></artwork>
          </artset>
        </section>
        <section anchor="state-machine-responder">
          <name>State Machine (Responder)</name>
          <t>The responder starts in the START state with synchronized transmit and receive epochs (rx := E; tx := E) and no update in progress. Application data can be transmitted at any time using the sender's current transmit epoch. A receiver must accept application data if the epoch tag on the DTLS record equals the receiver's current receive epoch. If the receiver has retention active (retain_old == true), the receiver must also accept DTLS records whose epoch tag equals the remembered previous epoch.</t>
          <t>Upon receiving an <tt>ExtendedKeyUpdate(key_update_request)</tt> (Req), the responder transitions to RESPOND. The responder may defer sending <tt>ExtendedKeyUpdate(key_update_response)</tt> under load; in that case it must acknowledge the request with an ACK and retransmit the response until it is acknowledged by the initiator, as specified in DTLS considerations. When sent, <tt>ExtendedKeyUpdate(key_update_response)</tt> is tagged with the current tx.</t>
          <t>After an <tt>ExtendedKeyUpdate(key_update_finish)</tt> (Fin) is received with the correct epoch, the responder:</t>
          <ol spacing="normal" type="1"><li>
              <t>activates retention (old_rx := rx; retain_old := 1),</t>
            </li>
            <li>
              <t>increments both epochs (rx++, tx++),</t>
            </li>
            <li>
              <t>sends ACK tagged with the new tx (which now equals the new rx),</t>
            </li>
            <li>
              <t>clears updating and enters FINISHED.</t>
            </li>
          </ol>
          <t>Retention at the responder ends automatically on the first APP received under the new rx (then retain_old := 0). APP traffic is otherwise permitted at any time; reordering is tolerated by the acceptance rule.</t>
          <t>APP acceptance rule (receiver): accept if e == rx or (retain_old &amp;&amp; e == old_rx). If retain_old is set and an APP with the new rx arrives, clear retain_old.</t>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="624" width="536" viewBox="0 0 536 624" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 8,288 L 8,336" fill="none" stroke="black"/>
                <path d="M 8,400 L 8,480" fill="none" stroke="black"/>
                <path d="M 8,560 L 8,608" fill="none" stroke="black"/>
                <path d="M 56,200 L 56,280" fill="none" stroke="black"/>
                <path d="M 136,288 L 136,336" fill="none" stroke="black"/>
                <path d="M 184,400 L 184,480" fill="none" stroke="black"/>
                <path d="M 192,160 L 192,192" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,80" fill="none" stroke="black"/>
                <path d="M 352,560 L 352,608" fill="none" stroke="black"/>
                <path d="M 8,32 L 280,32" fill="none" stroke="black"/>
                <path d="M 8,80 L 280,80" fill="none" stroke="black"/>
                <path d="M 8,160 L 192,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 192,192" fill="none" stroke="black"/>
                <path d="M 8,288 L 136,288" fill="none" stroke="black"/>
                <path d="M 8,336 L 136,336" fill="none" stroke="black"/>
                <path d="M 8,400 L 184,400" fill="none" stroke="black"/>
                <path d="M 8,480 L 184,480" fill="none" stroke="black"/>
                <path d="M 8,560 L 352,560" fill="none" stroke="black"/>
                <path d="M 8,608 L 352,608" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="64,280 52,274.4 52,285.6" fill="black" transform="rotate(90,56,280)"/>
                <g class="text">
                  <text x="40" y="52">START</text>
                  <text x="28" y="68">rx</text>
                  <text x="52" y="68">:=</text>
                  <text x="76" y="68">E;</text>
                  <text x="100" y="68">tx</text>
                  <text x="124" y="68">:=</text>
                  <text x="148" y="68">E,</text>
                  <text x="196" y="68">updating</text>
                  <text x="244" y="68">:=</text>
                  <text x="264" y="68">0</text>
                  <text x="56" y="100">|</text>
                  <text x="16" y="116">(1)</text>
                  <text x="52" y="116">recv</text>
                  <text x="88" y="116">Req</text>
                  <text x="136" y="116">[e==rx]</text>
                  <text x="48" y="132">set</text>
                  <text x="100" y="132">updating</text>
                  <text x="148" y="132">:=</text>
                  <text x="168" y="132">1</text>
                  <text x="56" y="148">v</text>
                  <text x="48" y="180">RESPOND</text>
                  <text x="84" y="228">send</text>
                  <text x="124" y="228">Resp</text>
                  <text x="180" y="228">[tag=tx]</text>
                  <text x="84" y="244">(may</text>
                  <text x="132" y="244">defer;</text>
                  <text x="172" y="244">if</text>
                  <text x="224" y="244">deferred,</text>
                  <text x="280" y="244">ACK</text>
                  <text x="312" y="244">Req</text>
                  <text x="344" y="244">and</text>
                  <text x="384" y="244">later</text>
                  <text x="452" y="244">retransmit</text>
                  <text x="516" y="244">Resp</text>
                  <text x="96" y="260">until</text>
                  <text x="172" y="260">acknowledged</text>
                  <text x="236" y="260">by</text>
                  <text x="264" y="260">the</text>
                  <text x="324" y="260">initiator)</text>
                  <text x="60" y="308">WAIT_I_FIN</text>
                  <text x="68" y="324">(updating=1)</text>
                  <text x="56" y="356">|</text>
                  <text x="16" y="372">(2)</text>
                  <text x="52" y="372">recv</text>
                  <text x="88" y="372">Fin</text>
                  <text x="136" y="372">[e==rx]</text>
                  <text x="240" y="372">(assert</text>
                  <text x="312" y="372">accepted)</text>
                  <text x="56" y="388">|</text>
                  <text x="52" y="420">ACTIVATE</text>
                  <text x="128" y="420">RETENTION</text>
                  <text x="60" y="436">old_rx=rx;</text>
                  <text x="72" y="452">retain_old=1;</text>
                  <text x="40" y="468">rx=rx</text>
                  <text x="76" y="468">1;</text>
                  <text x="120" y="468">tx=tx+1</text>
                  <text x="56" y="500">|</text>
                  <text x="16" y="516">(3)</text>
                  <text x="52" y="516">send</text>
                  <text x="88" y="516">ACK</text>
                  <text x="140" y="516">[tag=tx]</text>
                  <text x="48" y="532">set</text>
                  <text x="100" y="532">updating</text>
                  <text x="148" y="532">:=</text>
                  <text x="172" y="532">0;</text>
                  <text x="212" y="532">assert</text>
                  <text x="268" y="532">tx==rx</text>
                  <text x="56" y="548">v</text>
                  <text x="52" y="580">FINISHED</text>
                  <text x="72" y="596">(retain_old=0</text>
                  <text x="152" y="596">after</text>
                  <text x="200" y="596">first</text>
                  <text x="240" y="596">APP</text>
                  <text x="268" y="596">at</text>
                  <text x="296" y="596">new</text>
                  <text x="328" y="596">rx)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+---------------------------------+
| START                           |
| rx := E; tx := E, updating := 0 |
+---------------------------------+
      |
(1) recv Req [e==rx]
    set updating := 1
      v
+----------------------+
| RESPOND              |
+----------------------+
      |
      | send Resp [tag=tx]
      | (may defer; if deferred, ACK Req and later retransmit Resp
      |  until acknowledged by the initiator)
      v
+---------------+
| WAIT_I_FIN    |
| (updating=1)  |
+-------+-------+
      |
(2) recv Fin [e==rx]      (assert accepted)
      |
+---------------------+
| ACTIVATE RETENTION  |
| old_rx=rx;          |
| retain_old=1;       |
| rx=rx+1; tx=tx+1    |
+----------+----------+
      |
(3) send ACK [tag=tx]
    set updating := 0; assert tx==rx
      v
+------------------------------------------+
| FINISHED                                 |
| (retain_old=0 after first APP at new rx) |
+------------------------------------------+
]]></artwork>
          </artset>
        </section>
      </section>
    </section>
    <section anchor="overview-of-security-goals">
      <name>Overview of Security Goals</name>
      <t>A complete security analysis of the EKU is outside the scope of this document. This appendix provides an informal description of the primary security goals that EKU is designed to achieve.</t>
      <section anchor="post-compromise-security-pcs">
        <name>Post-Compromise Security (PCS)</name>
        <t>Extended Key Update provides post-compromise security under the conditions
and with the guarantees stated in <xref target="threat-model"/>. This property follows
from the use of fresh ephemeral key exchange material during each
Extended Key Update.</t>
      </section>
      <section anchor="key-freshness-and-cryptographic-independence">
        <name>Key Freshness and Cryptographic Independence</name>
        <t>Each Extended Key Update derives new traffic keys from ephemeral key exchange material. This ensures strong separation between successive traffic keys:</t>
        <ul spacing="normal">
          <li>
            <t>Compromise of prior traffic keys does not suffice to derive the new traffic keys established by an Extended Key Update.</t>
          </li>
          <li>
            <t>Compromise of one of traffic keys does not allow recovery of any earlier or later traffic keys.</t>
          </li>
          <li>
            <t>Application data protected under one of the traffic keys cannot be decrypted using keys from another.</t>
          </li>
        </ul>
      </section>
      <section anchor="elimination-of-standard-keyupdate">
        <name>Elimination of Standard KeyUpdate</name>
        <t>Once Extended Key Update has been negotiated for a session, peers rely exclusively on EKU rather than the standard TLS 1.3 KeyUpdate mechanism. Relying solely on Extended Key Update helps maintain PCS properties throughout the lifetime of the TLS session.</t>
      </section>
      <section anchor="detecting-divergent-key-state">
        <name>Detecting Divergent Key State</name>
        <t>As described in <xref target="exported"/>, Post-Handshake Certificate-Based Client
Authentication and Exported Authenticators can be used after an Extended Key Update to
detect that the endpoints derived different keys. Detection relies on the
CertificateVerify message, which is signed with a private key the attacker
does not hold, so validation fails and the interference is revealed.</t>
        <t>If validation of a Post-Handshake Certificate-Based Client Authentication
CertificateVerify or Finished message fails, the server terminates the connection
with a "decrypt_error" alert (see <xref section="4.5.2" sectionFormat="of" target="TLS"/> and
<xref section="4.5.3" sectionFormat="of" target="TLS"/>). The client is not guaranteed to receive this alert,
since a person-in-the-middle attacker can drop it.</t>
        <t>For Exported Authenticators, the validation result is returned to the application
(see Section 7.4 of <xref target="RFC9261"/>), which decides how to react. Detection at both
endpoints requires an authenticator from each endpoint, as described in <xref target="exported"/>.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
Ss7/BwCg0Y69DQEA

-->

</rfc>
