<?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.31 (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-12" category="std" consensus="true" submissionType="IETF" updates="9261, 8446" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.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-12"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Siemens</organization>
      <address>
        <email>hannes.tschofenig@gmx.net</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="T." surname="Reddy" fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <email>kondtir@gmail.com</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="April" day="06"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 83?>

<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. 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 Diffie-Hellman exchange within an active session, thereby
ensuring post-compromise security. 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 101?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Transport Layer Security (TLS) 1.3 protocol 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 key 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 that are independent of main secrets from prior epochs. 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>To distinguish the key update procedure defined in <xref target="TLS"/>
from the key update procedure specified in this document, we use the terms
"standard key update" and "extended key update", respectively.</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"/>. We assume that an adversary may obtain
access to the application traffic keys.</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>
    </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 classic <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 Considerations</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. While an extended
key update is in progress, the responder <bcp14>MUST NOT</bcp14> initiate another
key update. 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. 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 Considerations</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. While an extended key update
is in progress, the responder <bcp14>MUST NOT</bcp14> initiate further key updates. 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>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 (EC)DHE exchange (or from a PQ/T hybrid or
post-quantum KEM exchange),</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 together the previous transcript hash value with the current
ExtendedKeyUpdate(key_update_request) and ExtendedKeyUpdate(key_update_response)
messages, which contain the key shares, thereby binding the encapsulated shared
secret ciphertext to the IKM in the case of PQ/T hybrid or
post-quantum-only key exchange and
cryptographically binding the newly derived secrets to the prior handshake
transcript and all preceding EKU exchanges, as well as to the current EKU
exchange, 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. During each Extended Key Update exchange, the transcript
hash value for the next generation is computed as follows:</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.
transcript_hash_0 denotes the transcript hash of the initial TLS handshake,
covering all messages from the ClientHello up to and including the
client Finished message.</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", "")
             |
             v
 (EC)DHE -> 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
             |
             +-----> Derive-Secret(., "res master",
             |                     transcript_hash_N+1)
                              = resumption_main_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 ephemeral (EC)DHE-
established value as input keying material (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 ephemeral (EC)DHE value as IKM. This
process is repeated for each additional key update procedure.</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>
      <t>When using this extension, it is important to consider its interaction with
PSK-based resumption using PSKs established via the NewSessionTicket mechanism
defined in <xref target="TLS"/>.</t>
      <t>EKU provides post-compromise recovery for the TLS connection in which it is performed.
The recovery guarantees depend on the assumed compromise model. In typical deployment
environments, PSKs established via the NewSessionTicket mechanism are generated and
reside in memory within the rich operating system. 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.</t>
    </section>
    <section anchor="post-quantum-cryptography-considerations">
      <name>Post-Quantum Cryptography Considerations</name>
      <t>Hybrid key exchange refers to the simultaneous use of multiple key
exchange algorithms, with the resulting shared secret derived by
combining the outputs of each. The goal of this approach is to maintain
security even if all but one of the component algorithms are later found
to be vulnerable.</t>
      <t>The transition to post-quantum cryptography has motivated the adoption of
hybrid key exchanges in TLS, as described in
<xref target="TLS-HYBRID"/>. Specific hybrid groups
have been registered in <xref target="TLS-ECDHE-MLKEM"/>.
When hybrid key exchange is used, the <tt>key_exchange</tt> field of each
<tt>KeyShareEntry</tt> in the initial handshake is formed by concatenating
the <tt>key_exchange</tt> fields of the constituent algorithms. This same
approach is reused during the Extended Key Update, when new key
shares are exchanged.</t>
      <t><xref target="TLS-MLKEM"/> registers the lattice-based
ML-KEM algorithm and its variants, such as ML-KEM-512, ML-KEM-768 and
ML-KEM-1024. The KEM encapsulation key or KEM ciphertext is represented
as a 'KeyShareEntry' field. This same approach is reused during the
Extended Key Update, when new key shares are exchanged.</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, two 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 "sk" derived in the <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.
The newly derived exporter secret is cryptographically independent of
previous exporter secrets.</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 epoch has become active, and the (D)TLS implementation can
include the corresponding epoch identifier. Applications receiving an
epoch identifier can use it to request keying material for that
specific epoch through an epoch-aware exporter interface.
In TLS, this identifier represents a local logical counter that may differ between peers.</t>
          </li>
        </ul>
        <t>Applications are notified that a new epoch is active only after both peers have 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 4 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 9 in <xref target="DTLSC"/>.</t>
          </li>
        </ul>
        <t>The corresponding EKM is obtained by the application through the TLS/DTLS exporter
interface using its chosen label and context values as defined in <xref section="4" sectionFormat="of" target="RFC5705"/>.</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 EKU alone does not authenticate that both endpoints
derived the same updated keys. An attacker that temporarily compromises an endpoint
may later act as an active MitM capable of interfering with the EKU exchange.
Such an attacker can cause the peers to transition to divergent traffic secrets without detection,
but cannot compromise the endpoint to derive secrets after the new epoch is established.
To confirm that both peers transitioned to the same new key state, TLS 1.3 provides two
mechanisms: Post-Handshake Certificate-Based Client Authentication and
Exported Authenticators <xref target="RFC9261"/>.</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 (Section 4.6.2 of <xref 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. The Finished message is computed using a
MAC key derived from the Base Key of the new epoch (client_application_traffic_secret_N+1).
This confirms that both peers are operating with the same updated traffic keys
and completes an authenticated transition after the EKU.</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 associated with the current epoch.
Implementations that support the epoch-aware Exported Authenticators interface <bcp14>MUST</bcp14> provide a means
for applications to request the generation or validation of Exported Authenticators using
the exporter secret for a specific epoch.</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 associated with the current epoch.
If a MitM interferes with the EKU exchange and causes the peers to derive different traffic
and exporter secrets, their Handshake Contexts and Finished MAC Keys will differ.
As a result, validation procedures specified in Section 5.2.4 of <xref target="RFC9261"/> will fail, thereby
detecting the divergence of key state between peers.</t>
        <t>A new optional API <bcp14>SHOULD</bcp14> be defined to permit applications to request or verify
Exported Authenticators for a specific exporter epoch. As discussed in Section 7
of <xref target="RFC9261"/>, this can, as an exception, be implemented at the application
layer when the epoch-aware TLS exporter is available. The APIs defined in <xref target="RFC9261"/>
remain unchanged, so existing applications continue to operate without
modification. The epoch-aware API accepts an epoch identifier; when present,
the (D)TLS implementation <bcp14>MUST</bcp14> derive the Handshake Context and Finished MAC Key
from the exporter secret associated with that epoch. When Exported Authenticators
are generated using the epoch-aware Exported Authenticators interface, the
epoch identifier 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 Section 4.4 of <xref 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 epoch-aware,
the exporter secret used for an Exported Authenticator exchange is
explicitly determined by the epoch 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="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="scope">
        <name>Scope of Key Compromise</name>
        <t>Extended Key Update (EKU) assumes a transient compromise of the current application
traffic keys, rather than a persistent attacker with ongoing access to key material.
The EKU procedure does not rely on long-term private keys, which may be stored in a
secure element (e.g., a Hardware Security Module (HSM)) or within the rich OS.
Moreover, in security‑critical scenarios, these long‑term private keys are typically stored separately from the primary secret or the traffic keys.</t>
        <t>Two threat scenarios are relevant:</t>
        <ol spacing="normal" type="1"><li>
            <t>The long-term private key remains secure, while application traffic keys in the
rich operating system are temporarily exposed. EKU addresses this case for the current
TLS connection.</t>
          </li>
          <li>
            <t>If the long-term private key in the rich OS is compromised, EKU can still protect
the current TLS connection by updating the main secret and traffic keys. However, all
future TLS connections are at risk, as the attacker can impersonate the endpoint using
the stolen private key.</t>
          </li>
        </ol>
        <t>Extended Key Update can restore confidentiality only if the attacker no longer
has access to either peer. If an adversary retains access to current application traffic
keys and can act as a man-in-the-middle during the Extended Key Update, then the
update cannot restore security unless <xref target="exported"/> is used.</t>
        <t>If one of the mechanisms defined in <xref target="exported"/> is not used, the attacker can
impersonate each endpoint, substitute EKU messages, and maintain control
of the communication. When Post-handshake Certificate-Based Client Authentication
or the modified Exported Authenticator mechanism is used, the authentication messages
are bound to the keys established after the EKU. Any modification or substitution of
EKU messages therefore becomes detectable, preventing this attack.</t>
        <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. In that case, only the
initial handshake messages and the application data encrypted under the initial
client_/server_application_traffic_secret can be decrypted until the Extended Key
Update procedure completes. The Extended Key Update procedure derives fresh
application_traffic_secrets from a new ephemeral key exchange, ensuring that all
subsequent application data remains confidential.</t>
      </section>
      <section anchor="post-compromise-security">
        <name>Post-Compromise Security</name>
        <t>Extended Key Update provides post-compromise security for long-lived TLS sessions.
To ensure post-compromise security guarantees:</t>
        <ul spacing="normal">
          <li>
            <t>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>
          </li>
        </ul>
      </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 Types" 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="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="13" month="September" year="2025"/>
            <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.

   This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
   RFCs 5077, 5246, 6961, 8422, and 8446.  This document also specifies
   new requirements for TLS 1.2 implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-14"/>
        </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="17" month="March" 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-17"/>
        </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="RFC5705">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes. This document describes a general mechanism for allowing that. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5705"/>
          <seriesInfo name="DOI" value="10.17487/RFC5705"/>
        </reference>
        <reference anchor="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="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-HYBRID">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Shay Gueron" initials="S." surname="Gueron">
              <organization>University of Haifa and Meta</organization>
            </author>
            <date day="7" month="September" year="2025"/>
            <abstract>
              <t>   Hybrid key exchange refers to using multiple key exchange algorithms
   simultaneously and combining the result with the goal of providing
   security even if a way is found to defeat the encryption for all but
   one of the component algorithms.  It is motivated by transition to
   post-quantum cryptography.  This document provides a construction for
   hybrid key exchange in the Transport Layer Security (TLS) protocol
   version 1.3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-16"/>
        </reference>
        <reference anchor="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="8" month="February" 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-04"/>
        </reference>
        <reference anchor="TLS-MLKEM">
          <front>
            <title>ML-KEM Post-Quantum Key Agreement for TLS 1.3</title>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <date day="12" month="February" year="2026"/>
            <abstract>
              <t>   This memo defines ML-KEM-512, ML-KEM-768, and ML-KEM-1024 as
   NamedGroups and 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-07"/>
        </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 1117?>

<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:</t>
      <ul spacing="normal">
        <li>
          <t>Marcelo Ricardo Leitner</t>
        </li>
        <li>
          <t>Zaheduzzaman Sarker</t>
        </li>
        <li>
          <t>Magnus Westerlund</t>
        </li>
        <li>
          <t>John Mattsson</t>
        </li>
        <li>
          <t>Claudio Porfiri</t>
        </li>
        <li>
          <t>Xin Long</t>
        </li>
        <li>
          <t>Michael Tüxen</t>
        </li>
        <li>
          <t>Hannes Tschofenig</t>
        </li>
        <li>
          <t>K Tirumaleswar Reddy</t>
        </li>
        <li>
          <t>Bertrand Rault</t>
        </li>
      </ul>
      <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 Martin Thomson, Ilari Liusvaara,
Benjamin Kaduk, Scott Fluhrer, Dennis Jackson, David Benjamin,
Matthijs van Duin, Rifaat Shekh-Yusef, Joe Birr-Pixton, Eric Rescorla,
and Thom Wiggers for their review comments.</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 classic 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 classic 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="560" viewBox="0 0 560 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,320" fill="none" stroke="black"/>
                <path d="M 56,352 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="136" y="340">|</text>
                  <text x="440" y="340">act</text>
                  <text x="468" y="340">as</text>
                  <text x="520" 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 supports post-compromise security under the assumptions described in <xref target="scope"/>. If an attacker temporarily compromises an endpoint and obtains the traffic keys in use before an Extended Key Update takes place, but the compromise does not persist after the EKU completes, the attacker cannot derive the new keying material established by EKU. This property follows from the use of fresh ephemeral key exchange material during each Extended Key Update, which produces new traffic keys that are independent of the previous ones. This
property provides only best-effort post-compromise security, as it assumes the attacker is not acting as a MiTM
during the Extended Key Update.</t>
        <t>As a result, confidentiality of application data encrypted after the Extended Key Update is preserved even if the earlier traffic keys were exposed.</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>The new traffic keys established by an Extended Key Update are independent of the previous traffic keys.</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"/>, both Post-handshake Certificate-Based Client Authentication and Exported Authenticators can be used after an Extended Key Update to confirm that both endpoints derived the same
traffic keys. Because the authentication messages produced by these mechanisms depend on values
derived from the updated traffic keys, any divergence in those traffic keys causes validation to fail,
revealing interference by an active attacker.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
FdX/AAA=

-->

</rfc>
