<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-tls-dtls-rrc-20" number="9853" category="std" consensus="true" submissionType="IETF" updates="9146, 9147" obsoletes="" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" prepTime="2026-03-10T22:24:49" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-tls-dtls-rrc-20" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9853" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="DTLS Return Routability Check">Return Routability Check for DTLS 1.2 and 1.3</title>
    <seriesInfo name="RFC" value="9853" stream="IETF"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig" role="editor">
      <organization abbrev="UniBw M." showOnFrontPage="true">University of the Bundeswehr Munich</organization>
      <address>
        <postal>
          <extaddr>Institute of Distributed Intelligent Systems</extaddr>
          <street>Werner-Heisenberg-Weg 39</street>
          <city>Neubiberg</city>
          <code>85577</code>
          <country>Germany</country>
        </postal>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="A." surname="Kraus" fullname="Achim Kraus">
      <organization showOnFrontPage="true"/>
      <address>
        <email>achimkraus@gmx.net</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization showOnFrontPage="true">Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date month="03" year="2026"/>
    <area>SEC</area>
    <workgroup>tls</workgroup>
    <keyword>DTLS</keyword>
    <keyword>RRC</keyword>
    <keyword>CID</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document specifies a Return Routability Check (RRC) subprotocol for use in the context of the
Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS)
protocol versions 1.2 and 1.3.</t>
      <t indent="0" pn="section-abstract-2">Implementations offering the CID functionality described in RFCs 9146 and 9147 are encouraged to also provide the RRC functionality described in this document.
For this reason, this document updates RFCs 9146 and 9147.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9853" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-and-terminology">Conventions and Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rrc-extension">RRC Extension</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rrc-and-cid-interplay">RRC and CID Interplay</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-return-routability-check-me">Return Routability Check Message Types</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-path-validation-procedure">Path Validation Procedure</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-basic">Basic</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-enhanced">Enhanced</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-path-challenge-requirements">Path Challenge Requirements</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-path-response-drop-requirem">Path Response/Drop Requirements</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.5">
                <t indent="0" pn="section-toc.1-1.5.2.5.1"><xref derivedContent="5.5" format="counter" sectionFormat="of" target="section-5.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-timer-choice">Timer Choice</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-example">Example</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations">Operational Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-logging-anomalous-events">Logging Anomalous Events</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-middlebox-interference">Middlebox Interference</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-attacker-model">Attacker Model</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2.1.2">
                  <li pn="section-toc.1-1.8.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.8.2.1.2.1.1"><xref derivedContent="8.1.1" format="counter" sectionFormat="of" target="section-8.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-amplification">Amplification</xref></t>
                  </li>
                  <li pn="section-toc.1-1.8.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.8.2.1.2.2.1"><xref derivedContent="8.1.2" format="counter" sectionFormat="of" target="section-8.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-off-path-packet-forwarding">Off-Path Packet Forwarding</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-privacy-considerations">Privacy Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-new-tls-contenttype">New TLS ContentType</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-new-tls-extensiontype">New TLS ExtensionType</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.3">
                <t indent="0" pn="section-toc.1-1.10.2.3.1"><xref derivedContent="10.3" format="counter" sectionFormat="of" target="section-10.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-new-tls-rrc-message-type-re">New "TLS RRC Message Type" Registry</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2.3.2">
                  <li pn="section-toc.1-1.10.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.10.2.3.2.1.1"><xref derivedContent="10.3.1" format="counter" sectionFormat="of" target="section-10.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-designated-expert-instructi">Designated Expert Instructions</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">A Connection ID (CID) is an identifier carried in the record layer header of a DTLS datagram
that gives the receiver additional information for selecting the appropriate
security context.  The CID mechanism has been specified in <xref target="RFC9146" format="default" sectionFormat="of" derivedContent="RFC9146"/> for
DTLS 1.2 and in <xref target="RFC9147" format="default" sectionFormat="of" derivedContent="RFC9147"/> for DTLS 1.3.</t>
      <t indent="0" pn="section-1-2"><xref section="6" sectionFormat="of" target="RFC9146" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9146#section-6" derivedContent="RFC9146"/> describes how the use of CID increases the attack
surface of DTLS 1.2 and 1.3 by providing both on-path and off-path attackers an opportunity for
DoS or DDoS.  It also describes the steps a DTLS principal must take when a
record with a CID is received that has a source address different
from the one currently associated with the DTLS connection.  However, the
actual mechanism for ensuring that the new peer address is willing to receive
and process DTLS records is left open.  To address the gap, this document defines a Return
Routability Check (RRC) subprotocol for DTLS 1.2 and 1.3, inspired by the path validation procedure defined in <xref section="8.2" sectionFormat="of" target="RFC9000" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9000#section-8.2" derivedContent="RFC9000"/>.
As such, this document updates <xref target="RFC9146" format="default" sectionFormat="of" derivedContent="RFC9146"/> and <xref target="RFC9147" format="default" sectionFormat="of" derivedContent="RFC9147"/>.</t>
      <t indent="0" pn="section-1-3">The return routability check is performed by the receiving endpoint before the
CID-address binding is updated in that endpoint's session state.
This is done in order to give the receiving endpoint confidence
that the sending peer is in fact reachable at the source address indicated in the received datagram.
For an illustration of the handshake and address validation phases, see <xref target="overview" format="default" sectionFormat="of" derivedContent="Section 6"/>.</t>
      <t indent="0" pn="section-1-4"><xref target="regular" format="default" sectionFormat="of" derivedContent="Section 5.1"/> of this document explains the fundamental mechanism that aims to reduce the DDoS attack surface.
Additionally, <xref target="enhanced" format="default" sectionFormat="of" derivedContent="Section 5.2"/> discusses a more advanced address validation mechanism.
This mechanism is designed to counteract off-path attackers trying to place themselves on-path by racing packets that trigger address rebinding at the receiver.
To gain a detailed understanding of the attacker model, please refer to <xref target="attacker" format="default" sectionFormat="of" derivedContent="Section 8.1"/>.</t>
      <t indent="0" pn="section-1-5">Apart from of its use in the context of CID-address binding updates,
the path validation capability offered by RRC can be used at any time by either endpoint. For
instance, an endpoint might use RRC to check that a peer is still reachable at
its last known address after a period of quiescence.</t>
    </section>
    <section anchor="conventions-and-terminology" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-conventions-and-terminology">Conventions and Terminology</name>
      <t indent="0" pn="section-2-1">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
      <t indent="0" pn="section-2-2">This document assumes familiarity with the CID format and protocol defined for
DTLS 1.2 <xref target="RFC9146" format="default" sectionFormat="of" derivedContent="RFC9146"/> and for DTLS 1.3 <xref target="RFC9147" format="default" sectionFormat="of" derivedContent="RFC9147"/>.  The presentation language
used in this document is described in <xref section="4" sectionFormat="of" target="RFC8446" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-4" derivedContent="RFC8446"/>.</t>
      <t indent="0" pn="section-2-3">In this document, the term "anti-amplification limit" means three times the amount of data received from an unvalidated address.
This includes all DTLS records originating from that source address, excluding those that have been discarded.
This follows the pattern of <xref target="RFC9000" format="default" sectionFormat="of" derivedContent="RFC9000"/>, applying a similar concept to DTLS.</t>
      <t indent="0" pn="section-2-4">The term "address" is defined in <xref section="1.2" sectionFormat="of" target="RFC9000" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9000#section-1.2" derivedContent="RFC9000"/>.</t>
      <t indent="0" pn="section-2-5">The terms "client", "server", "peer", and "endpoint" are defined in <xref section="1.1" sectionFormat="of" target="RFC8446" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-1.1" derivedContent="RFC8446"/>.</t>
    </section>
    <section anchor="rrc-extension" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-rrc-extension">RRC Extension</name>
      <t indent="0" pn="section-3-1">The use of RRC is negotiated via the <tt>rrc</tt> extension.
The <tt>rrc</tt> extension is only defined for DTLS 1.2 and 1.3.
On connecting, a client wishing to use RRC includes the <tt>rrc</tt> extension in its ClientHello.
If the server is capable of meeting this requirement, it responds with an
<tt>rrc</tt> extension in its ServerHello.  The <tt>extension_type</tt> value for this
extension is 61, and the <tt>extension_data</tt> field of this extension is empty.
A client offering the <tt>rrc</tt> extension <bcp14>MUST</bcp14> also offer the <tt>connection_id</tt> extension <xref target="RFC9146" format="default" sectionFormat="of" derivedContent="RFC9146"/>.
If the client includes the <tt>rrc</tt> extension in its ClientHello but omits the <tt>connection_id</tt> extension, the server <bcp14>MUST NOT</bcp14> include the <tt>rrc</tt> extension in its ServerHello.
A client offering the <tt>connection_id</tt> extension <bcp14>SHOULD</bcp14> also offer the <tt>rrc</tt> extension, unless the application using DTLS has its own address validation mechanism.
The client and server <bcp14>MUST NOT</bcp14> use RRC unless both sides have successfully exchanged <tt>rrc</tt> extensions.</t>
      <section anchor="rrc-and-cid-interplay" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-rrc-and-cid-interplay">RRC and CID Interplay</name>
        <t indent="0" pn="section-3.1-1">RRC offers an in-protocol mechanism to perform peer address validation that
complements the "peer address update" procedure described in <xref section="6" sectionFormat="of" target="RFC9146" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9146#section-6" derivedContent="RFC9146"/>.  Specifically, when both CID <xref target="RFC9146" format="default" sectionFormat="of" derivedContent="RFC9146"/> and RRC have been
successfully negotiated for the session, if a record with CID is received that
has the source address of the enclosing UDP datagram different from what is
currently associated with that CID value, the receiver <bcp14>SHOULD</bcp14> perform a return
routability check as described in <xref target="path-validation" format="default" sectionFormat="of" derivedContent="Section 5"/>, unless an application-specific
address validation mechanism can be triggered instead (e.g., Constrained Application Protocol (CoAP) Echo <xref target="RFC9175" format="default" sectionFormat="of" derivedContent="RFC9175"/>).</t>
      </section>
    </section>
    <section anchor="return-routability-check-message-types" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-return-routability-check-me">Return Routability Check Message Types</name>
      <t indent="0" pn="section-4-1">This document defines the <tt>return_routability_check</tt> content type
(<xref target="fig-rrc-msg" format="default" sectionFormat="of" derivedContent="Figure 1"/>) to carry Return Routability Check messages.</t>
      <t indent="0" pn="section-4-2">The RRC subprotocol consists of three message types: <tt>path_challenge</tt>, <tt>path_response</tt>,
and <tt>path_drop</tt>. These message types are used for path validation and selection as described in
<xref target="path-validation" format="default" sectionFormat="of" derivedContent="Section 5"/>.</t>
      <t indent="0" pn="section-4-3">Each message carries a <tt>Cookie</tt>, an 8-byte field containing 64 bits of entropy (e.g., obtained from the cryptographically secure pseudorandom number generator (CSPRNG) used by the TLS implementation; see <xref section="C.1" sectionFormat="of" target="RFC8446" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#appendix-C.1" derivedContent="RFC8446"/>).</t>
      <t indent="0" pn="section-4-4">The <tt>return_routability_check</tt> message <bcp14>MUST</bcp14> be authenticated and encrypted
using the currently active security context.</t>
      <figure anchor="fig-rrc-msg" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-return-routability-check-mes">Return Routability Check Message and Content Type</name>
        <sourcecode type="tls-presentation" markers="false" pn="section-4-5.1">
enum {
    invalid(0),
    change_cipher_spec(20),
    alert(21),
    handshake(22),
    application_data(23),
    heartbeat(24),  /* RFC 6520 */
    tls12_cid(25),  /* RFC 9146, DTLS 1.2 only */
    return_routability_check(27), /* NEW */
    (255)
} ContentType;

uint64 Cookie;

enum {
    path_challenge(0),
    path_response(1),
    path_drop(2),
    (255)
} rrc_msg_type;

struct {
    rrc_msg_type msg_type;
    select (return_routability_check.msg_type) {
        case path_challenge: Cookie;
        case path_response:  Cookie;
        case path_drop:      Cookie;
    };
} return_routability_check;
</sourcecode>
      </figure>
      <t indent="0" pn="section-4-6">Future extensions to the RRC subprotocol may
define new message types.
Implementations <bcp14>MUST</bcp14> be able to parse and understand the three RRC message types defined in this document.
In addition, implementations <bcp14>MUST</bcp14> be able to parse and gracefully ignore messages with an unknown <tt>msg_type</tt>.</t>
    </section>
    <section anchor="path-validation" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-path-validation-procedure">Path Validation Procedure</name>
      <t indent="0" pn="section-5-1">A receiver that observes the peer's address change <bcp14>MUST</bcp14> stop sending
any buffered application data or limit the data sent to the unvalidated
address to the anti-amplification limit.
It then initiates the return routability check.</t>
      <t indent="0" pn="section-5-2">This document describes two kinds of checks: basic (<xref target="regular" format="default" sectionFormat="of" derivedContent="Section 5.1"/>) and enhanced (<xref target="enhanced" format="default" sectionFormat="of" derivedContent="Section 5.2"/>).
The choice of one or the other depends on whether the off-path attacker scenario described in <xref target="off-path" format="default" sectionFormat="of" derivedContent="Section 8.1.2"/> is to be considered.
(The decision on what strategy to choose depends mainly on the threat model but
may also be influenced by other considerations.  Examples of impacting factors
include the need to minimise implementation complexity, privacy concerns, and the
need to reduce the time it takes to switch path.  The choice may be offered as
a configuration option to the user of the TLS implementation.)</t>
      <t indent="0" pn="section-5-3">After the path validation procedure is complete, any pending send operation is
resumed to the bound peer address.</t>
      <t indent="0" pn="section-5-4">Sections <xref target="path-challenge-reqs" format="counter" sectionFormat="of" derivedContent="5.3"/> and <xref target="path-response-reqs" format="counter" sectionFormat="of" derivedContent="5.4"/> list the requirements for
the initiator and responder roles, broken down per protocol phase.</t>
      <t indent="0" pn="section-5-5">Please note that the presented algorithms are not designed to handle nested rebindings, i.e. rebindings that may occur while a path is being validated following a previous rebinding.
This should rarely occur, but if it happens, the <tt>path_response</tt> message is dropped, the address validation times out, and the address will not be updated.
A new path validation will start when new data is received.</t>
      <t indent="0" pn="section-5-6">Also, note that in the event of a NAT rebind, the initiator and responder will have different views of the path: The initiator will see a new path, while the responder will still see the old one.</t>
      <section anchor="regular" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-basic">Basic</name>
        <t indent="0" pn="section-5.1-1">The basic return routability check comprises the following steps:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-5.1-2"><li pn="section-5.1-2.1" derivedCounter="1.">
            <t indent="0" pn="section-5.1-2.1.1">The receiver (i.e., the initiator) creates a <tt>return_routability_check</tt> message of
type <tt>path_challenge</tt> and places the unpredictable cookie into the message.</t>
          </li>
          <li pn="section-5.1-2.2" derivedCounter="2.">
            <t indent="0" pn="section-5.1-2.2.1">The message is sent to the observed new address and a timer T (see
<xref target="timer-choice" format="default" sectionFormat="of" derivedContent="Section 5.5"/>) is started.</t>
          </li>
          <li pn="section-5.1-2.3" derivedCounter="3.">
            <t indent="0" pn="section-5.1-2.3.1">The peer (i.e., the responder) cryptographically verifies the received
<tt>return_routability_check</tt> message of
type <tt>path_challenge</tt> and responds by echoing the cookie value in a
<tt>return_routability_check</tt> message of type <tt>path_response</tt>.</t>
          </li>
          <li pn="section-5.1-2.4" derivedCounter="4.">
            <t indent="0" pn="section-5.1-2.4.1">When the initiator receives the <tt>return_routability_check</tt>
message  of type <tt>path_response</tt> and verifies that it contains the sent cookie, it updates the peer
address binding.</t>
          </li>
          <li pn="section-5.1-2.5" derivedCounter="5.">
            <t indent="0" pn="section-5.1-2.5.1">If T expires, the peer address binding is not updated.</t>
          </li>
        </ol>
      </section>
      <section anchor="enhanced" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-enhanced">Enhanced</name>
        <t indent="0" pn="section-5.2-1">The enhanced return routability check comprises the following steps:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-5.2-2"><li pn="section-5.2-2.1" derivedCounter="1.">
            <t indent="0" pn="section-5.2-2.1.1">The receiver (i.e., the initiator) creates a <tt>return_routability_check</tt> message of
type <tt>path_challenge</tt> and places the unpredictable cookie into the message.</t>
          </li>
          <li pn="section-5.2-2.2" derivedCounter="2.">
            <t indent="0" pn="section-5.2-2.2.1">The message is sent to the previously valid address, which corresponds to the
old path. Additionally, a timer T is started (see <xref target="timer-choice" format="default" sectionFormat="of" derivedContent="Section 5.5"/>).</t>
          </li>
          <li pn="section-5.2-2.3" derivedCounter="3.">
            <t indent="0" pn="section-5.2-2.3.1">If the path is still functional, the peer (i.e., the responder) cryptographically verifies the received
<tt>return_routability_check</tt> message of
type <tt>path_challenge</tt>.
The action to be taken depends on whether the path through which the message was received remains the preferred one.
            </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.2-2.3.2">
              <li pn="section-5.2-2.3.2.1">
                <t indent="0" pn="section-5.2-2.3.2.1.1">If the path through which the message was received is preferred,
a <tt>return_routability_check</tt> message of type <tt>path_response</tt> <bcp14>MUST</bcp14> be returned. (Note that, from the responder's perspective, the preferred path and the old path coincide in the event of a NAT rebind.)</t>
              </li>
              <li pn="section-5.2-2.3.2.2">
                <t indent="0" pn="section-5.2-2.3.2.2.1">If the path through which the message was received is no longer preferred,
a <tt>return_routability_check</tt> message of type <tt>path_drop</tt> <bcp14>MUST</bcp14> be returned.  (Note that the responder must have initiated a voluntary path migration in order to know that this path is no longer the preferred one.)</t>
              </li>
            </ul>
            <t indent="0" pn="section-5.2-2.3.3">
In either case, the peer echoes the cookie value in the response.</t>
          </li>
          <li pn="section-5.2-2.4" derivedCounter="4.">
            <t indent="0" pn="section-5.2-2.4.1">The initiator receives and verifies that the <tt>return_routability_check</tt>
message contains the previously sent cookie. The actions taken by the
initiator differ based on the received message:
            </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.2-2.4.2">
              <li pn="section-5.2-2.4.2.1">
                <t indent="0" pn="section-5.2-2.4.2.1.1">When a <tt>return_routability_check</tt> message of type <tt>path_response</tt> is received,
the initiator <bcp14>MUST</bcp14> continue using the previously valid address, i.e., no switch
to the new path takes place and the peer address binding is not updated.</t>
              </li>
              <li pn="section-5.2-2.4.2.2">
                <t indent="0" pn="section-5.2-2.4.2.2.1">When a <tt>return_routability_check</tt> message of type <tt>path_drop</tt> is received,
the initiator <bcp14>MUST</bcp14> perform a basic return routability check on the observed new
address, as described in <xref target="regular" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.</t>
              </li>
            </ul>
          </li>
          <li pn="section-5.2-2.5" derivedCounter="5.">
            <t indent="0" pn="section-5.2-2.5.1">If T expires, the peer address binding is not updated. In this case, the
initiator <bcp14>MUST</bcp14> perform a basic return routability check on the observed new
address, as described in <xref target="regular" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="path-challenge-reqs" numbered="true" removeInRFC="false" toc="include" pn="section-5.3">
        <name slugifiedName="name-path-challenge-requirements">Path Challenge Requirements</name>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.3-1">
          <li pn="section-5.3-1.1">
            <t indent="0" pn="section-5.3-1.1.1">The initiator <bcp14>MAY</bcp14> send multiple <tt>return_routability_check</tt> messages of type
<tt>path_challenge</tt> to account for packet loss on the probed path.
            </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.3-1.1.2">
              <li pn="section-5.3-1.1.2.1">
                <t indent="0" pn="section-5.3-1.1.2.1.1">Each <tt>path_challenge</tt> <bcp14>SHOULD</bcp14> go into different transport packets.  (Note that
the DTLS implementation may not have control over the packetization done by
the transport layer.)</t>
              </li>
              <li pn="section-5.3-1.1.2.2">
                <t indent="0" pn="section-5.3-1.1.2.2.1">The transmission of subsequent <tt>path_challenge</tt> messages <bcp14>SHOULD</bcp14> be paced to
decrease the chance of loss.</t>
              </li>
              <li pn="section-5.3-1.1.2.3">
                <t indent="0" pn="section-5.3-1.1.2.3.1">Each <tt>path_challenge</tt> message <bcp14>MUST</bcp14> contain random data.</t>
              </li>
              <li pn="section-5.3-1.1.2.4">
                <t indent="0" pn="section-5.3-1.1.2.4.1">In general, the number of "backup" <tt>path_challenge</tt> messages depends on the application, since some are more sensitive than others to latency caused by changes in the path.
In the absence of application-specific requirements, the initiator can send a <tt>path_challenge</tt> message once per round-trip time (RTT), up to the anti-amplification limit.</t>
              </li>
            </ul>
          </li>
          <li pn="section-5.3-1.2">
            <t indent="0" pn="section-5.3-1.2.1">The initiator <bcp14>MAY</bcp14> use the record padding mechanism available in
DTLS 1.3 (and in DTLS 1.2, when CID is enabled on the sending direction) to add padding up
to the anti-amplification limit to probe if the Path MTU (PMTU) for the new
path is still acceptable.</t>
          </li>
        </ul>
      </section>
      <section anchor="path-response-reqs" numbered="true" removeInRFC="false" toc="include" pn="section-5.4">
        <name slugifiedName="name-path-response-drop-requirem">Path Response/Drop Requirements</name>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.4-1">
          <li pn="section-5.4-1.1">
            <t indent="0" pn="section-5.4-1.1.1">The responder <bcp14>MUST NOT</bcp14> delay sending an elicited <tt>path_response</tt> or
<tt>path_drop</tt> messages.</t>
          </li>
          <li pn="section-5.4-1.2">
            <t indent="0" pn="section-5.4-1.2.1">The responder <bcp14>MUST</bcp14> send exactly one <tt>path_response</tt> or <tt>path_drop</tt> message
for each valid <tt>path_challenge</tt> it received.</t>
          </li>
          <li pn="section-5.4-1.3">
            <t indent="0" pn="section-5.4-1.3.1">The responder <bcp14>MUST</bcp14> send the <tt>path_response</tt> or the <tt>path_drop</tt> to the address from
which the corresponding <tt>path_challenge</tt> was received.  This ensures that the
path is functional in both directions.</t>
          </li>
          <li pn="section-5.4-1.4">
            <t indent="0" pn="section-5.4-1.4.1">The initiator <bcp14>MUST</bcp14> silently discard any invalid <tt>path_response</tt> or
<tt>path_drop</tt> it receives.</t>
          </li>
        </ul>
        <t indent="0" pn="section-5.4-2">Note that RRC does not account for PMTU discovery on the reverse path.  If the
responder wants to do PMTU discovery using RRC, it should initiate a new path
validation procedure.</t>
      </section>
      <section anchor="timer-choice" numbered="true" removeInRFC="false" toc="include" pn="section-5.5">
        <name slugifiedName="name-timer-choice">Timer Choice</name>
        <t indent="0" pn="section-5.5-1">When setting T, implementations are cautioned that the new path could have a
	longer RTT than the original.</t>
        <t indent="0" pn="section-5.5-2">In settings where there is external information about the RTT of the active
path (i.e., the old path), implementations <bcp14>SHOULD</bcp14> use T = 3xRTT.</t>
        <t indent="0" pn="section-5.5-3">If an implementation has no way to obtain information regarding the RTT of the
active path, T <bcp14>SHOULD</bcp14> be set to 1 second.</t>
        <t indent="0" pn="section-5.5-4">Profiles for specific deployment environments -- for example, constrained
networks <xref target="I-D.ietf-uta-tls13-iot-profile" format="default" sectionFormat="of" derivedContent="IOT-PROFILE"/> -- <bcp14>MAY</bcp14> specify a different, more
suitable value for T.</t>
      </section>
    </section>
    <section anchor="overview" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-example">Example</name>
      <t indent="0" pn="section-6-1"><xref target="fig-handshake" format="default" sectionFormat="of" derivedContent="Figure 2"/> shows an example of a DTLS 1.3 handshake in which a client and a server successfully negotiate support for both the CID and RRC extensions.</t>
      <figure anchor="fig-handshake" align="left" suppress-title="false" pn="figure-2">
        <name slugifiedName="name-message-flow-for-full-dtls-">Message Flow for Full DTLS Handshake</name>
        <artwork align="left" pn="section-6-2.1">
       Client                                           Server

Key  ^ ClientHello
Exch | + key_share
     | + signature_algorithms
     | + rrc
     v + connection_id=empty
                               --------&gt;
                                                  ServerHello  ^ Key
                                                 +  key_share  | Exch
                                          + connection_id=100  |
                                                        + rrc  v
                                        {EncryptedExtensions}  ^  Server
                                         {CertificateRequest}  v  Params
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                               &lt;--------           {Finished}  v

     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              --------&gt;
       [Application Data]      &lt;-------&gt;  [Application Data]


              +  Indicates noteworthy extensions sent in the
                 previously noted message.

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

              [] Indicates messages protected using keys
                 derived from [sender]_application_traffic_secret_N.</artwork>
      </figure>
      <t indent="0" pn="section-6-3">Once a connection has been established, the client and the server
exchange application payloads protected by DTLS with a unilaterally used
CID. In this case, the client is requested to use CID 100 for records
sent to the server.</t>
      <t indent="0" pn="section-6-4">At some point in the communication interaction, the address used by
the client changes, and thanks to the CID usage, the security context to
interpret the record is successfully located by the server.  However, the
server wants to test the reachability of the client at its new address.</t>
      <t indent="0" pn="section-6-5"><xref target="fig-rrc-example" format="default" sectionFormat="of" derivedContent="Figure 3"/> shows the server initiating a basic RRC exchange
(see <xref target="regular" format="default" sectionFormat="of" derivedContent="Section 5.1"/>) that establishes reachability of the client at the new
address.</t>
      <figure anchor="fig-rrc-example" align="left" suppress-title="false" pn="figure-3">
        <name slugifiedName="name-basic-return-routability-ex">Basic Return Routability Example</name>
        <artwork align="left" pn="section-6-6.1">
      Client                                             Server
      ------                                             ------

      Application Data            ========&gt;
      &lt;CID=100&gt;
      Src-IP=A
      Dst-IP=Z
                                  &lt;========        Application Data
                                                       Src-IP=Z
                                                       Dst-IP=A

                              &lt;&lt;-------------&gt;&gt;
                              &lt;&lt;   Some      &gt;&gt;
                              &lt;&lt;   Time      &gt;&gt;
                              &lt;&lt;   Later     &gt;&gt;
                              &lt;&lt;-------------&gt;&gt;


      Application Data            ========&gt;
      &lt;CID=100&gt;
      Src-IP=B
      Dst-IP=Z

                                             &lt;&lt;&lt; Unverified IP
                                                 Address B &gt;&gt;

                                  &lt;--------  Return Routability Check
                                             path_challenge(cookie)
                                                    Src-IP=Z
                                                    Dst-IP=B

      Return Routability Check    --------&gt;
      path_response(cookie)
      Src-IP=B
      Dst-IP=Z

                                             &lt;&lt;&lt; IP Address B
                                                 Verified &gt;&gt;


                                  &lt;========        Application Data
                                                       Src-IP=Z
                                                       Dst-IP=B</artwork>
      </figure>
    </section>
    <section anchor="operational-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <section anchor="logging-anomalous-events" numbered="true" removeInRFC="false" toc="include" pn="section-7.1">
        <name slugifiedName="name-logging-anomalous-events">Logging Anomalous Events</name>
        <t indent="0" pn="section-7.1-1">Logging of RRC operations at both ends of the protocol can be generally useful for the users of an implementation.
In particular, for Security Information and Event Management (SIEM) and troubleshooting purposes, it is strongly advised that implementations collect statistics about any unsuccessful RRC operations, as they could represent security-relevant events when they coincide with attempts by an attacker to interfere with the end-to-end path.
It is also advisable to log instances where multiple responses to a single <tt>path_challenge</tt> are received, as this could suggest an off-path attack attempt.</t>
        <t indent="0" pn="section-7.1-2">In some cases, the presence of frequent path probes could indicate a problem with the stability of the path.
This information can be used to identify any issues with the underlying connectivity service.</t>
      </section>
      <section anchor="middlebox-interference" numbered="true" removeInRFC="false" toc="include" pn="section-7.2">
        <name slugifiedName="name-middlebox-interference">Middlebox Interference</name>
        <t indent="0" pn="section-7.2-1">Since the DTLS 1.3 encrypted packet's record type is opaque to on-path observers, RRC messages are immune to middlebox interference when using DTLS 1.3.
In contrast, DTLS 1.2 RRC messages that are not wrapped in the <tt>tls12_cid</tt> record (e.g., in the server-to-client direction if the server negotiated a zero-length CID) have the <tt>return_routability_check</tt> content type in plain text, making them susceptible to interference (e.g., dropping of <tt>path_challenge</tt> messages), which would hinder the RRC functionality altogether.
Therefore, when RRC is used in DTLS 1.2 and middlebox interference is a concern, it is recommended to enable CID in both directions.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-8-1">Note that the return routability checks do not protect against flooding of
third parties if the attacker is on-path, as the attacker can redirect the
return routability checks to the real peer (even if those datagrams are
cryptographically authenticated).  On-path adversaries can, in general, pose a
harm to connectivity.</t>
      <t indent="0" pn="section-8-2">If the RRC challenger reuses a cookie that was previously used in the same connection and does not implement anti-replay protection (see <xref section="4.5.1" sectionFormat="of" target="RFC9147" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9147#section-4.5.1" derivedContent="RFC9147"/> and <xref section="4.1.2.6" sectionFormat="of" target="RFC6347" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6347#section-4.1.2.6" derivedContent="RFC6347"/>), an attacker could replay a previously sent <tt>path_response</tt> message containing the reused cookie to mislead the challenger into switching to a path of the attacker's choosing.
To prevent this, RRC cookies must be <em>freshly</em> generated using a reliable source of entropy <xref target="RFC4086" format="default" sectionFormat="of" derivedContent="RFC4086"/>.
See <xref section="C.1" sectionFormat="of" target="RFC8446" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#appendix-C.1" derivedContent="RFC8446"/> for guidance.</t>
      <section anchor="attacker" numbered="true" removeInRFC="false" toc="include" pn="section-8.1">
        <name slugifiedName="name-attacker-model">Attacker Model</name>
        <t indent="0" pn="section-8.1-1">Two classes of attackers are considered, off-path and on-path, with increasing
capabilities (see <xref target="fig-attacker-capabilities" format="default" sectionFormat="of" derivedContent="Figure 4"/>).  The following descriptions of these attackers are based on those
introduced in QUIC (<xref section="21.1" sectionFormat="of" target="RFC9000" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9000#section-21.1" derivedContent="RFC9000"/>):</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8.1-2">
          <li pn="section-8.1-2.1">
            <t indent="0" pn="section-8.1-2.1.1">An off-path attacker is not on the original path between the DTLS peers, but
it is able to observe packets on the original path and has a faster forwarding path
compared to the DTLS peers, which allows it to make copies of the observed
packets, race its copies to either peer, and consistently win the race.</t>
          </li>
          <li pn="section-8.1-2.2">
            <t indent="0" pn="section-8.1-2.2.1">An on-path attacker is on the original path between the DTLS peers and is
therefore capable, compared to the off-path attacker, to also drop and delay
records at will.</t>
          </li>
        </ul>
        <t indent="0" pn="section-8.1-3">Note that, in general, attackers cannot craft DTLS records in a way that would
successfully pass verification, due to the cryptographic protections applied by
the DTLS record layer.</t>
        <figure anchor="fig-attacker-capabilities" align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-attacker-capabilities">Attacker Capabilities</name>
          <artset pn="section-8.1-4.1">
            <artwork type="svg" align="center" pn="section-8.1-4.1.1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="448" viewBox="0 0 448 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 40,32 L 40,80" fill="none" stroke="black"/>
                <path d="M 40,112 L 40,160" fill="none" stroke="black"/>
                <path d="M 80,32 L 80,256" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,256" fill="none" stroke="black"/>
                <path d="M 416,32 L 416,128" fill="none" stroke="black"/>
                <path d="M 416,160 L 416,256" fill="none" stroke="black"/>
                <path d="M 40,32 L 64,32" fill="none" stroke="black"/>
                <path d="M 80,32 L 376,32" fill="none" stroke="black"/>
                <path d="M 392,32 L 416,32" fill="none" stroke="black"/>
                <path d="M 80,64 L 376,64" fill="none" stroke="black"/>
                <path d="M 80,96 L 376,96" fill="none" stroke="black"/>
                <path d="M 80,128 L 376,128" fill="none" stroke="black"/>
                <path d="M 40,160 L 64,160" fill="none" stroke="black"/>
                <path d="M 80,160 L 376,160" fill="none" stroke="black"/>
                <path d="M 80,192 L 376,192" fill="none" stroke="black"/>
                <path d="M 80,224 L 376,224" fill="none" stroke="black"/>
                <path d="M 80,256 L 376,256" fill="none" stroke="black"/>
                <path d="M 392,256 L 416,256" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="400,256 388,250.4 388,261.6" fill="black" transform="rotate(180,392,256)"/>
                <polygon class="arrowhead" points="400,32 388,26.4 388,37.6" fill="black" transform="rotate(180,392,32)"/>
                <polygon class="arrowhead" points="72,160 60,154.4 60,165.6" fill="black" transform="rotate(0,64,160)"/>
                <polygon class="arrowhead" points="72,32 60,26.4 60,37.6" fill="black" transform="rotate(0,64,32)"/>
                <g class="text">
                  <text x="120" y="52">Inspect</text>
                  <text x="204" y="52">unencrypted</text>
                  <text x="292" y="52">portions</text>
                  <text x="116" y="84">Inject</text>
                  <text x="36" y="100">off-path</text>
                  <text x="120" y="116">Reorder</text>
                  <text x="116" y="148">Modify</text>
                  <text x="212" y="148">unauthenticated</text>
                  <text x="316" y="148">portions</text>
                  <text x="416" y="148">on-path</text>
                  <text x="112" y="180">Delay</text>
                  <text x="108" y="212">Drop</text>
                  <text x="132" y="244">Manipulate</text>
                  <text x="192" y="244">the</text>
                  <text x="264" y="244">packetization</text>
                  <text x="344" y="244">layer</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center" pn="section-8.1-4.1.2">
    .--&gt; .------------------------------------. &lt;--.
    |    | Inspect unencrypted portions       |    |
    |    +------------------------------------+    |
    |    | Inject                             |    |
off-path +------------------------------------+    |
    |    | Reorder                            |    |
    |    +------------------------------------+    |
    |    | Modify unauthenticated portions    | on-path
    '--&gt; +------------------------------------+    |
         | Delay                              |    |
         +------------------------------------+    |
         | Drop                               |    |
         +------------------------------------+    |
         | Manipulate the packetization layer |    |
         '------------------------------------' &lt;--'
</artwork>
          </artset>
        </figure>
        <t indent="0" pn="section-8.1-5">RRC is designed to defend against the following attacks:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8.1-6">
          <li pn="section-8.1-6.1">
            <t indent="0" pn="section-8.1-6.1.1">On-path and off-path attackers that try to create an amplification attack by
spoofing the source address of the victim (<xref target="sec-amplification" format="default" sectionFormat="of" derivedContent="Section 8.1.1"/>).</t>
          </li>
          <li pn="section-8.1-6.2">
            <t indent="0" pn="section-8.1-6.2.1">Off-path attackers that try to put themselves on-path (<xref target="off-path" format="default" sectionFormat="of" derivedContent="Section 8.1.2"/>),
provided that the enhanced path validation algorithm is used (<xref target="enhanced" format="default" sectionFormat="of" derivedContent="Section 5.2"/>).</t>
          </li>
        </ul>
        <section anchor="sec-amplification" numbered="true" removeInRFC="false" toc="include" pn="section-8.1.1">
          <name slugifiedName="name-amplification">Amplification</name>
          <t indent="0" pn="section-8.1.1-1">Both on-path and off-path attackers can send a packet (either by modifying it
on the fly or by copying, injecting, and racing it, respectively) with the
source address modified to that of a victim host.  If the traffic generated by
the server in response is larger compared to the received packet (e.g., a CoAP
server returning an MTU's worth of data from a 20-byte GET request <xref target="I-D.irtf-t2trg-amplification-attacks" format="default" sectionFormat="of" derivedContent="AMP-ATTACKS"/>), the
attacker can use the server as a traffic amplifier toward the victim.</t>
          <section anchor="mitigation-strategy" numbered="true" removeInRFC="false" toc="exclude" pn="section-8.1.1.1">
            <name slugifiedName="name-mitigation-strategy">Mitigation Strategy</name>
            <t indent="0" pn="section-8.1.1.1-1">When receiving a packet with a known CID that has a source address different from the one currently associated with the DTLS connection, an
RRC-capable endpoint will not send a (potentially large) response but instead a
small <tt>path_challenge</tt> message to the victim host.  Since the host is not able
to decrypt it and generate a valid <tt>path_response</tt>, the address validation
fails, which in turn keeps the original address binding unaltered.</t>
            <t indent="0" pn="section-8.1.1.1-2">Note that in the case of an off-path attacker, the original packet still reaches
the intended destination; therefore, an implementation could use a different
strategy to mitigate the attack.</t>
          </section>
        </section>
        <section anchor="off-path" numbered="true" removeInRFC="false" toc="include" pn="section-8.1.2">
          <name slugifiedName="name-off-path-packet-forwarding">Off-Path Packet Forwarding</name>
          <t indent="0" pn="section-8.1.2-1">An off-path attacker that can observe packets might forward copies of
genuine packets to endpoints over a different path. If the copied packet arrives before
the genuine packet, this will appear as a path change, like in a genuine NAT rebinding occurrence. Any genuine
packet will be discarded as a duplicate. If the attacker is able to
continue forwarding packets, it might be able to cause migration to a
path via the attacker. This places the attacker on-path, giving it
the ability to observe or drop all subsequent packets.</t>
          <t indent="0" pn="section-8.1.2-2">This style of attack relies on the attacker using a path that has
the same or better characteristics (e.g., due to a more favourable service level agreements) as the direct path between
endpoints. The attack is more effective if relatively few packets are
sent or if packet loss coincides with the attempted attack.</t>
          <t indent="0" pn="section-8.1.2-3">A data packet received on the original path that increases the
maximum received packet number will cause the endpoint to move back
to that path. Therefore, eliciting packets on this path increases the
likelihood that the attack is unsuccessful. However, note that, unlike QUIC,
DTLS has no "non-probing" packets so this would require application-specific
mechanisms.</t>
          <section anchor="mitigation-strategy-1" numbered="true" removeInRFC="false" toc="exclude" pn="section-8.1.2.1">
            <name slugifiedName="name-mitigation-strategy-2">Mitigation Strategy</name>
            <t indent="0" pn="section-8.1.2.1-1"><xref target="fig-off-path" format="default" sectionFormat="of" derivedContent="Figure 5"/> illustrates the case where a receiver receives a
packet with a new source address. In order
to determine that this path change was not triggered
by an off-path attacker, the receiver will send an RRC message of type
<tt>path_challenge</tt> (1) on the old path.</t>
            <figure anchor="fig-off-path" align="left" suppress-title="false" pn="figure-5">
              <name slugifiedName="name-off-path-packet-forwarding-">Off-Path Packet Forwarding Scenario</name>
              <artset pn="section-8.1.2.1-2.1">
                <artwork type="svg" align="center" pn="section-8.1.2.1-2.1.1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="256" viewBox="0 0 256 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                    <path d="M 64,80 L 64,176" fill="none" stroke="black"/>
                    <path d="M 64,208 L 64,304" fill="none" stroke="black"/>
                    <path d="M 112,48 L 112,112" fill="none" stroke="black"/>
                    <path d="M 112,272 L 112,336" fill="none" stroke="black"/>
                    <path d="M 200,48 L 200,112" fill="none" stroke="black"/>
                    <path d="M 200,272 L 200,336" fill="none" stroke="black"/>
                    <path d="M 248,80 L 248,112" fill="none" stroke="black"/>
                    <path d="M 248,144 L 248,304" fill="none" stroke="black"/>
                    <path d="M 112,48 L 200,48" fill="none" stroke="black"/>
                    <path d="M 64,80 L 112,80" fill="none" stroke="black"/>
                    <path d="M 200,80 L 248,80" fill="none" stroke="black"/>
                    <path d="M 112,112 L 200,112" fill="none" stroke="black"/>
                    <path d="M 24,176 L 120,176" fill="none" stroke="black"/>
                    <path d="M 8,208 L 104,208" fill="none" stroke="black"/>
                    <path d="M 112,272 L 200,272" fill="none" stroke="black"/>
                    <path d="M 64,304 L 112,304" fill="none" stroke="black"/>
                    <path d="M 200,304 L 248,304" fill="none" stroke="black"/>
                    <path d="M 112,336 L 200,336" fill="none" stroke="black"/>
                    <path d="M 8,208 L 24,176" fill="none" stroke="black"/>
                    <path d="M 104,208 L 120,176" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="256,184 244,178.4 244,189.6" fill="black" transform="rotate(90,248,184)"/>
                    <g class="text">
                      <text x="72" y="36">new</text>
                      <text x="240" y="36">old</text>
                      <text x="76" y="52">path</text>
                      <text x="236" y="52">path</text>
                      <text x="156" y="84">Receiver</text>
                      <text x="248" y="132">1</text>
                      <text x="64" y="196">Attacker?</text>
                      <text x="156" y="308">Sender</text>
                    </g>
                  </svg>
                </artwork>
                <artwork type="ascii-art" align="center" pn="section-8.1.2.1-2.1.2">
       new                  old
       path  .----------.  path
             |          |
       .-----+ Receiver +-----.
       |     |          |     |
       |     '----------'     |
       |                      1
       |                      |
       |                      |
  .----+------.               v
 / Attacker? /                |
'------+----'                 |
       |                      |
       |                      |
       |                      |
       |     .----------.     |
       |     |          |     |
       '-----+  Sender  +-----'
             |          |
             '----------'
</artwork>
              </artset>
            </figure>
            <t indent="0" pn="section-8.1.2.1-3">Three cases need to be considered:</t>
            <t indent="0" pn="section-8.1.2.1-4">Case 1: The old path is dead (e.g., due to a NAT rebinding), which leads to a
timeout of (1).</t>
            <t indent="0" pn="section-8.1.2.1-5">As shown in <xref target="fig-old-path-dead" format="default" sectionFormat="of" derivedContent="Figure 6"/>, a <tt>path_challenge</tt> (2) needs to be sent on
the new path.  If the sender replies with a <tt>path_response</tt> on the new path
(3), the switch to the new path is considered legitimate.</t>
            <figure anchor="fig-old-path-dead" align="left" suppress-title="false" pn="figure-6">
              <name slugifiedName="name-old-path-is-dead">Old Path Is Dead</name>
              <artset pn="section-8.1.2.1-6.1">
                <artwork type="svg" align="center" pn="section-8.1.2.1-6.1.1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="384" viewBox="0 0 384 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                    <path d="M 80,64 L 80,112" fill="none" stroke="black"/>
                    <path d="M 80,144 L 80,320" fill="none" stroke="black"/>
                    <path d="M 96,80 L 96,176" fill="none" stroke="black"/>
                    <path d="M 96,208 L 96,304" fill="none" stroke="black"/>
                    <path d="M 112,96 L 112,224" fill="none" stroke="black"/>
                    <path d="M 112,256 L 112,288" fill="none" stroke="black"/>
                    <path d="M 144,48 L 144,112" fill="none" stroke="black"/>
                    <path d="M 144,272 L 144,336" fill="none" stroke="black"/>
                    <path d="M 232,48 L 232,112" fill="none" stroke="black"/>
                    <path d="M 232,272 L 232,336" fill="none" stroke="black"/>
                    <path d="M 296,64 L 296,112" fill="none" stroke="black"/>
                    <path d="M 296,144 L 296,176" fill="none" stroke="black"/>
                    <path d="M 144,48 L 232,48" fill="none" stroke="black"/>
                    <path d="M 80,64 L 136,64" fill="none" stroke="black"/>
                    <path d="M 232,64 L 296,64" fill="none" stroke="black"/>
                    <path d="M 96,80 L 144,80" fill="none" stroke="black"/>
                    <path d="M 112,96 L 144,96" fill="none" stroke="black"/>
                    <path d="M 144,112 L 232,112" fill="none" stroke="black"/>
                    <path d="M 56,176 L 72,176" fill="none" stroke="black"/>
                    <path d="M 88,176 L 104,176" fill="none" stroke="black"/>
                    <path d="M 120,176 L 288,176" fill="none" stroke="black"/>
                    <path d="M 304,176 L 320,176" fill="none" stroke="black"/>
                    <path d="M 40,208 L 72,208" fill="none" stroke="black"/>
                    <path d="M 88,208 L 104,208" fill="none" stroke="black"/>
                    <path d="M 120,208 L 304,208" fill="none" stroke="black"/>
                    <path d="M 144,272 L 232,272" fill="none" stroke="black"/>
                    <path d="M 112,288 L 136,288" fill="none" stroke="black"/>
                    <path d="M 96,304 L 144,304" fill="none" stroke="black"/>
                    <path d="M 80,320 L 144,320" fill="none" stroke="black"/>
                    <path d="M 144,336 L 232,336" fill="none" stroke="black"/>
                    <path d="M 40,208 L 56,176" fill="none" stroke="black"/>
                    <path d="M 304,208 L 320,176" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="304,176 292,170.4 292,181.6" fill="black" transform="rotate(90,296,176)"/>
                    <polygon class="arrowhead" points="144,288 132,282.4 132,293.6" fill="black" transform="rotate(0,136,288)"/>
                    <polygon class="arrowhead" points="144,64 132,58.4 132,69.6" fill="black" transform="rotate(0,136,64)"/>
                    <g class="text">
                      <text x="88" y="36">new</text>
                      <text x="288" y="36">old</text>
                      <text x="92" y="52">path</text>
                      <text x="284" y="52">path</text>
                      <text x="188" y="84">Receiver</text>
                      <text x="260" y="84">......</text>
                      <text x="280" y="100">.</text>
                      <text x="280" y="116">.</text>
                      <text x="24" y="132">path-</text>
                      <text x="80" y="132">3</text>
                      <text x="280" y="132">.</text>
                      <text x="296" y="132">1</text>
                      <text x="328" y="132">path-</text>
                      <text x="36" y="148">response</text>
                      <text x="280" y="148">.</text>
                      <text x="344" y="148">challenge</text>
                      <text x="280" y="164">.</text>
                      <text x="184" y="196">NAT</text>
                      <text x="296" y="196">X</text>
                      <text x="352" y="196">timeout</text>
                      <text x="280" y="228">.</text>
                      <text x="112" y="244">2</text>
                      <text x="144" y="244">path-</text>
                      <text x="280" y="244">.</text>
                      <text x="160" y="260">challenge</text>
                      <text x="280" y="260">.</text>
                      <text x="280" y="276">.</text>
                      <text x="280" y="292">.</text>
                      <text x="188" y="308">Sender</text>
                      <text x="260" y="308">.....'</text>
                    </g>
                  </svg>
                </artwork>
                <artwork type="ascii-art" align="center" pn="section-8.1.2.1-6.1.2">
          new                      old
          path    .----------.    path
          .------&gt;|          +-------.
          | .-----+ Receiver +...... |
          | | .---+          |     . |
          | | |   '----------'     . |
 path-    3 | |                    . 1 path-
 response | | |                    . | challenge
          | | |                    . |
       .--|-+-|----------------------v--.
      /   |   |       NAT            X / timeout
     '----|-+-|-----------------------'
          | | |                    .
          | | 2 path-              .
          | | | challenge          .
          | | |   .----------.     .
          | | '--&gt;|          |     .
          | '-----+  Sender  +.....'
          '-------+          |
                  '----------'
</artwork>
              </artset>
            </figure>
            <t indent="0" pn="section-8.1.2.1-7">Case 2: The old path is alive but not preferred.</t>
            <t indent="0" pn="section-8.1.2.1-8">This case is shown in <xref target="fig-old-path-not-preferred" format="default" sectionFormat="of" derivedContent="Figure 7"/> whereby the sender
replies with a <tt>path_drop</tt> message (2) on the old path.  This triggers
the receiver to send a <tt>path_challenge</tt> (3) on the new path. The sender
will reply with a <tt>path_response</tt> (4) on the new path, thus providing
confirmation for the path migration.</t>
            <figure anchor="fig-old-path-not-preferred" align="left" suppress-title="false" pn="figure-7">
              <name slugifiedName="name-old-path-is-not-preferred">Old Path Is Not Preferred</name>
              <artset pn="section-8.1.2.1-9.1">
                <artwork type="svg" align="center" pn="section-8.1.2.1-9.1.1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="424" viewBox="0 0 424 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                    <path d="M 104,64 L 104,112" fill="none" stroke="black"/>
                    <path d="M 104,144 L 104,320" fill="none" stroke="black"/>
                    <path d="M 120,80 L 120,176" fill="none" stroke="black"/>
                    <path d="M 120,216 L 120,304" fill="none" stroke="black"/>
                    <path d="M 136,96 L 136,224" fill="none" stroke="black"/>
                    <path d="M 136,256 L 136,288" fill="none" stroke="black"/>
                    <path d="M 168,48 L 168,112" fill="none" stroke="black"/>
                    <path d="M 168,272 L 168,336" fill="none" stroke="black"/>
                    <path d="M 256,48 L 256,112" fill="none" stroke="black"/>
                    <path d="M 256,272 L 256,336" fill="none" stroke="black"/>
                    <path d="M 288,96 L 288,112" fill="none" stroke="black"/>
                    <path d="M 288,144 L 288,288" fill="none" stroke="black"/>
                    <path d="M 304,80 L 304,176" fill="none" stroke="black"/>
                    <path d="M 304,208 L 304,304" fill="none" stroke="black"/>
                    <path d="M 320,64 L 320,224" fill="none" stroke="black"/>
                    <path d="M 320,256 L 320,320" fill="none" stroke="black"/>
                    <path d="M 168,48 L 256,48" fill="none" stroke="black"/>
                    <path d="M 104,64 L 160,64" fill="none" stroke="black"/>
                    <path d="M 264,64 L 320,64" fill="none" stroke="black"/>
                    <path d="M 120,80 L 168,80" fill="none" stroke="black"/>
                    <path d="M 256,80 L 304,80" fill="none" stroke="black"/>
                    <path d="M 136,96 L 168,96" fill="none" stroke="black"/>
                    <path d="M 256,96 L 288,96" fill="none" stroke="black"/>
                    <path d="M 168,112 L 256,112" fill="none" stroke="black"/>
                    <path d="M 24,176 L 96,176" fill="none" stroke="black"/>
                    <path d="M 112,176 L 128,176" fill="none" stroke="black"/>
                    <path d="M 144,176 L 176,176" fill="none" stroke="black"/>
                    <path d="M 264,176 L 280,176" fill="none" stroke="black"/>
                    <path d="M 296,176 L 312,176" fill="none" stroke="black"/>
                    <path d="M 328,176 L 416,176" fill="none" stroke="black"/>
                    <path d="M 8,208 L 96,208" fill="none" stroke="black"/>
                    <path d="M 112,208 L 128,208" fill="none" stroke="black"/>
                    <path d="M 144,208 L 160,208" fill="none" stroke="black"/>
                    <path d="M 248,208 L 280,208" fill="none" stroke="black"/>
                    <path d="M 296,208 L 312,208" fill="none" stroke="black"/>
                    <path d="M 328,208 L 400,208" fill="none" stroke="black"/>
                    <path d="M 168,272 L 256,272" fill="none" stroke="black"/>
                    <path d="M 136,288 L 160,288" fill="none" stroke="black"/>
                    <path d="M 264,288 L 288,288" fill="none" stroke="black"/>
                    <path d="M 120,304 L 168,304" fill="none" stroke="black"/>
                    <path d="M 256,304 L 304,304" fill="none" stroke="black"/>
                    <path d="M 104,320 L 168,320" fill="none" stroke="black"/>
                    <path d="M 256,320 L 320,320" fill="none" stroke="black"/>
                    <path d="M 168,336 L 256,336" fill="none" stroke="black"/>
                    <path d="M 8,208 L 24,176" fill="none" stroke="black"/>
                    <path d="M 160,208 L 176,176" fill="none" stroke="black"/>
                    <path d="M 248,208 L 264,176" fill="none" stroke="black"/>
                    <path d="M 400,208 L 416,176" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="272,288 260,282.4 260,293.6" fill="black" transform="rotate(180,264,288)"/>
                    <polygon class="arrowhead" points="272,64 260,58.4 260,69.6" fill="black" transform="rotate(180,264,64)"/>
                    <polygon class="arrowhead" points="168,288 156,282.4 156,293.6" fill="black" transform="rotate(0,160,288)"/>
                    <polygon class="arrowhead" points="168,64 156,58.4 156,69.6" fill="black" transform="rotate(0,160,64)"/>
                    <g class="text">
                      <text x="112" y="36">new</text>
                      <text x="312" y="36">old</text>
                      <text x="116" y="52">path</text>
                      <text x="308" y="52">path</text>
                      <text x="212" y="84">Receiver</text>
                      <text x="48" y="132">path-</text>
                      <text x="104" y="132">4</text>
                      <text x="224" y="132">path-</text>
                      <text x="288" y="132">1</text>
                      <text x="60" y="148">response</text>
                      <text x="240" y="148">challenge</text>
                      <text x="64" y="196">NAT</text>
                      <text x="88" y="196">A</text>
                      <text x="344" y="196">NAT</text>
                      <text x="368" y="196">B</text>
                      <text x="136" y="244">3</text>
                      <text x="168" y="244">path-</text>
                      <text x="320" y="244">2</text>
                      <text x="352" y="244">path-</text>
                      <text x="184" y="260">challenge</text>
                      <text x="348" y="260">drop</text>
                      <text x="212" y="308">Sender</text>
                    </g>
                  </svg>
                </artwork>
                <artwork type="ascii-art" align="center" pn="section-8.1.2.1-9.1.2">
            new                      old
            path    .----------.    path
            .------&gt;|          |&lt;------.
            | .-----+ Receiver +-----. |
            | | .---+          +---. | |
            | | |   '----------'   | | |
   path-    4 | |        path-     1 | |
   response | | |        challenge | | |
            | | |                  | | |
  .---------|-+-|----.          .--|-+-|-----------.
 /    NAT A |   |   /          /   |   | NAT B    /
'-----------|---|--'          '----|-+-|---------'
            | | |                  | | |
            | | 3 path-            | | 2 path-
            | | | challenge        | | | drop
            | | |   .----------.   | | |
            | | '--&gt;|          |&lt;--' | |
            | '-----+  Sender  +-----' |
            '-------+          +-------'
                    '----------'
</artwork>
              </artset>
            </figure>
            <t indent="0" pn="section-8.1.2.1-10">Case 3: The old path is alive and preferred.</t>
            <t indent="0" pn="section-8.1.2.1-11">This is most likely the result of an off-path attacker trying to place itself
on-path.  As shown in         
<xref target="fig-old-path-preferred" format="default" sectionFormat="of" derivedContent="Figure 8"/>, the receiver sends a <tt>path_challenge</tt> (1) on the old path, and the sender
replies with a <tt>path_response</tt> (2) on the old path. This results in the connection not being migrated
to the new path, thus thwarting the attack.</t>
            <figure anchor="fig-old-path-preferred" align="left" suppress-title="false" pn="figure-8">
              <name slugifiedName="name-old-path-is-preferred">Old Path Is Preferred</name>
              <artset pn="section-8.1.2.1-12.1">
                <artwork type="svg" align="center" pn="section-8.1.2.1-12.1.1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="352" viewBox="0 0 352 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                    <path d="M 64,80 L 64,176" fill="none" stroke="black"/>
                    <path d="M 64,224 L 64,320" fill="none" stroke="black"/>
                    <path d="M 112,48 L 112,112" fill="none" stroke="black"/>
                    <path d="M 112,288 L 112,352" fill="none" stroke="black"/>
                    <path d="M 200,48 L 200,112" fill="none" stroke="black"/>
                    <path d="M 200,288 L 200,352" fill="none" stroke="black"/>
                    <path d="M 232,96 L 232,240" fill="none" stroke="black"/>
                    <path d="M 232,272 L 232,304" fill="none" stroke="black"/>
                    <path d="M 248,80 L 248,176" fill="none" stroke="black"/>
                    <path d="M 248,208 L 248,320" fill="none" stroke="black"/>
                    <path d="M 264,64 L 264,112" fill="none" stroke="black"/>
                    <path d="M 264,144 L 264,336" fill="none" stroke="black"/>
                    <path d="M 112,48 L 200,48" fill="none" stroke="black"/>
                    <path d="M 200,64 L 264,64" fill="none" stroke="black"/>
                    <path d="M 64,80 L 112,80" fill="none" stroke="black"/>
                    <path d="M 200,80 L 248,80" fill="none" stroke="black"/>
                    <path d="M 208,96 L 232,96" fill="none" stroke="black"/>
                    <path d="M 112,112 L 200,112" fill="none" stroke="black"/>
                    <path d="M 32,176 L 120,176" fill="none" stroke="black"/>
                    <path d="M 208,176 L 224,176" fill="none" stroke="black"/>
                    <path d="M 240,176 L 256,176" fill="none" stroke="black"/>
                    <path d="M 272,176 L 312,176" fill="none" stroke="black"/>
                    <path d="M 192,208 L 224,208" fill="none" stroke="black"/>
                    <path d="M 240,208 L 256,208" fill="none" stroke="black"/>
                    <path d="M 272,208 L 296,208" fill="none" stroke="black"/>
                    <path d="M 8,224 L 96,224" fill="none" stroke="black"/>
                    <path d="M 112,288 L 200,288" fill="none" stroke="black"/>
                    <path d="M 200,304 L 232,304" fill="none" stroke="black"/>
                    <path d="M 64,320 L 112,320" fill="none" stroke="black"/>
                    <path d="M 200,320 L 248,320" fill="none" stroke="black"/>
                    <path d="M 208,336 L 264,336" fill="none" stroke="black"/>
                    <path d="M 112,352 L 200,352" fill="none" stroke="black"/>
                    <path d="M 8,224 L 32,176" fill="none" stroke="black"/>
                    <path d="M 96,224 L 120,176" fill="none" stroke="black"/>
                    <path d="M 192,208 L 208,176" fill="none" stroke="black"/>
                    <path d="M 296,208 L 312,176" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="216,336 204,330.4 204,341.6" fill="black" transform="rotate(180,208,336)"/>
                    <polygon class="arrowhead" points="216,96 204,90.4 204,101.6" fill="black" transform="rotate(180,208,96)"/>
                    <g class="text">
                      <text x="72" y="36">new</text>
                      <text x="256" y="36">old</text>
                      <text x="76" y="52">path</text>
                      <text x="252" y="52">path</text>
                      <text x="156" y="84">Receiver</text>
                      <text x="264" y="132">1</text>
                      <text x="296" y="132">path-</text>
                      <text x="312" y="148">challenge</text>
                      <text x="68" y="196">off-path</text>
                      <text x="248" y="196">NAT</text>
                      <text x="60" y="212">attacker</text>
                      <text x="176" y="260">path-</text>
                      <text x="232" y="260">2</text>
                      <text x="188" y="276">response</text>
                      <text x="156" y="324">Sender</text>
                    </g>
                  </svg>
                </artwork>
                <artwork type="ascii-art" align="center" pn="section-8.1.2.1-12.1.2">
        new                    old
        path  .----------.    path
              |          +-------.
        .-----+ Receiver +-----. |
        |     |          |&lt;--. | |
        |     '----------'   | | |
        |                    | | 1 path-
        |                    | | | challenge
        |                    | | |
    .---+------.          .--|-+-|-----.
   / off-path /          /   |NAT|    /
  / attacker /          '----|-+-|---'
 '------+---'                | | |
        |                    | | |
        |           path-    2 | |
        |           response | | |
        |     .----------.   | | |
        |     |          +---' | |
        '-----+  Sender  +-----' |
              |          |&lt;------'
              '----------'
</artwork>
              </artset>
            </figure>
            <t indent="0" pn="section-8.1.2.1-13">Note that this defense is imperfect, but this is not considered a serious
problem. If the path via the attacker is reliably faster than the
old path despite multiple attempts to use that old path, it
is not possible to distinguish between an attack and an improvement
in routing.</t>
            <t indent="0" pn="section-8.1.2.1-14">An endpoint could also use heuristics to improve detection of this
style of attack. For instance, NAT rebinding is improbable if
packets were recently received on the old path.
Endpoints can also look for duplicated
packets. Conversely, a change in CID is more likely to
indicate an intentional migration rather than an attack. Note that
changes in CIDs are supported in DTLS 1.3 but not in
DTLS 1.2.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-privacy-considerations">Privacy Considerations</name>
      <t indent="0" pn="section-9-1">When using DTLS 1.3, peers <bcp14>SHOULD</bcp14> avoid using the same CID on multiple network
paths, in particular when initiating connection migration or when probing a new
network path, as described in <xref target="path-validation" format="default" sectionFormat="of" derivedContent="Section 5"/>, as an adversary can otherwise
correlate the communication interaction across those different paths.  DTLS 1.3
provides mechanisms to ensure that a new CID can always be used.  In
general, an endpoint should proactively send a RequestConnectionId message to ask for new
CIDs as soon as the pool of spare CIDs is depleted (or goes below a threshold).
Also, in case a peer might have exhausted available CIDs, a migrating endpoint
could include NewConnectionId in packets sent on the new path to make sure that
the subsequent path validation can use fresh CIDs.</t>
      <t indent="0" pn="section-9-2">Note that DTLS 1.2 does not offer the ability to request new CIDs during the session lifetime since CIDs have the same lifespan
of the connection.  Therefore, deployments that use DTLS in multihoming
environments <bcp14>SHOULD</bcp14> refuse to use CIDs with DTLS 1.2
and switch to DTLS 1.3 if the correlation privacy threat is a concern.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-10">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="new-tls-contenttype" numbered="true" removeInRFC="false" toc="include" pn="section-10.1">
        <name slugifiedName="name-new-tls-contenttype">New TLS ContentType</name>
        <t indent="0" pn="section-10.1-1">IANA has allocated an entry in the "TLS ContentType" registry within the "Transport Layer Security (TLS) Parameters" registry group <xref target="IANA.tls-parameters" format="default" sectionFormat="of" derivedContent="IANA.tls-parameters"/> for the <tt>return_routability_check</tt> (27) message defined in this document.
IANA set the DTLS_OK column to "Y" and added the following note to the registry:</t>
        <blockquote pn="section-10.1-2">
          <t indent="0" pn="section-10.1-2.1">Note: The return_routability_check content type is only applicable
to DTLS 1.2 and 1.3.</t>
        </blockquote>
      </section>
      <section anchor="new-tls-extensiontype" numbered="true" removeInRFC="false" toc="include" pn="section-10.2">
        <name slugifiedName="name-new-tls-extensiontype">New TLS ExtensionType</name>
        <t indent="0" pn="section-10.2-1">IANA has allocated the extension code point (61) for <tt>rrc</tt>
in the "TLS ExtensionType Values" registry as described in
<xref target="tbl-ext" format="default" sectionFormat="of" derivedContent="Table 1"/>.</t>
        <table align="left" anchor="tbl-ext" pn="table-1">
          <name slugifiedName="name-new-entry-in-the-tls-extens">New Entry in the TLS ExtensionType Values Registry</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Extension Name</th>
              <th align="left" colspan="1" rowspan="1">TLS 1.3</th>
              <th align="left" colspan="1" rowspan="1">DTLS-Only</th>
              <th align="left" colspan="1" rowspan="1">Recommended</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
              <th align="left" colspan="1" rowspan="1">Comment</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">61</td>
              <td align="left" colspan="1" rowspan="1">rrc</td>
              <td align="left" colspan="1" rowspan="1">CH, SH</td>
              <td align="left" colspan="1" rowspan="1">Y</td>
              <td align="left" colspan="1" rowspan="1">N</td>
              <td align="left" colspan="1" rowspan="1">RFC 9853</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="new-tls-rrc-message-type-registry" numbered="true" removeInRFC="false" toc="include" pn="section-10.3">
        <name slugifiedName="name-new-tls-rrc-message-type-re">New "TLS RRC Message Type" Registry</name>
        <t indent="0" pn="section-10.3-1">IANA has created the "TLS RRC Message Types" registry within the "Transport Layer Security (TLS) Parameters" registry group <xref target="IANA.tls-parameters" format="default" sectionFormat="of" derivedContent="IANA.tls-parameters"/>.
This registration procedure is "Expert Review" (<xref section="4.5" sectionFormat="of" target="RFC8126" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8126#section-4.5" derivedContent="RFC8126"/>).</t>
        <t indent="0" pn="section-10.3-2">To submit registration requests, follow the procedures in <xref section="16" sectionFormat="of" target="RFC9847" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9847#section-16" derivedContent="RFC9847"/>.</t>
        <t indent="0" pn="section-10.3-3">Each entry in the registry must include the following fields:</t>
        <dl newline="true" indent="3" spacing="normal" pn="section-10.3-4">
          <dt pn="section-10.3-4.1">Value:</dt>
          <dd pn="section-10.3-4.2">
            <t indent="0" pn="section-10.3-4.2.1">A (decimal) number in the range 0 to 253.</t>
          </dd>
          <dt pn="section-10.3-4.3">Description:</dt>
          <dd pn="section-10.3-4.4">
            <t indent="0" pn="section-10.3-4.4.1">A brief description of the RRC message.</t>
          </dd>
          <dt pn="section-10.3-4.5">DTLS-Only:</dt>
          <dd pn="section-10.3-4.6">
            <t indent="0" pn="section-10.3-4.6.1">Indication of whether the message only applies to DTLS.
Since RRC is only available in DTLS, this column is set to "Y" for all the initial entries in this registry.
Future work may define new RRC message types that also apply to TLS.</t>
          </dd>
          <dt pn="section-10.3-4.7">Recommended:</dt>
          <dd pn="section-10.3-4.8">
            <t indent="0" pn="section-10.3-4.8.1">Indication of whether the message is recommended for implementations to support.
The semantics for this field is defined in <xref section="5" sectionFormat="of" target="RFC8447" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8447#section-5" derivedContent="RFC8447"/> and updated in <xref section="3" sectionFormat="of" target="RFC9847" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9847#section-3" derivedContent="RFC9847"/>.</t>
          </dd>
          <dt pn="section-10.3-4.9">Reference:</dt>
          <dd pn="section-10.3-4.10">
            <t indent="0" pn="section-10.3-4.10.1">A reference to a publicly available specification for the value.</t>
          </dd>
          <dt pn="section-10.3-4.11">Comment:</dt>
          <dd pn="section-10.3-4.12">
            <t indent="0" pn="section-10.3-4.12.1">Any relevant notes or comments that relate to this entry.</t>
          </dd>
        </dl>
        <t indent="0" pn="section-10.3-5"><xref target="tbl-rrc-mt" format="default" sectionFormat="of" derivedContent="Table 2"/> shows the initial contents of this registry:</t>
        <table align="left" anchor="tbl-rrc-mt" pn="table-2">
          <name slugifiedName="name-initial-entries-in-tls-rrc-">Initial Entries in TLS RRC Message Type Registry</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">DTLS-Only</th>
              <th align="left" colspan="1" rowspan="1">Recommended</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
              <th align="left" colspan="1" rowspan="1">Comment</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0</td>
              <td align="left" colspan="1" rowspan="1">path_challenge</td>
              <td align="left" colspan="1" rowspan="1">Y</td>
              <td align="left" colspan="1" rowspan="1">Y</td>
              <td align="left" colspan="1" rowspan="1">RFC 9853</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">1</td>
              <td align="left" colspan="1" rowspan="1">path_response</td>
              <td align="left" colspan="1" rowspan="1">Y</td>
              <td align="left" colspan="1" rowspan="1">Y</td>
              <td align="left" colspan="1" rowspan="1">RFC 9853</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">2</td>
              <td align="left" colspan="1" rowspan="1">path_drop</td>
              <td align="left" colspan="1" rowspan="1">Y</td>
              <td align="left" colspan="1" rowspan="1">Y</td>
              <td align="left" colspan="1" rowspan="1">RFC 9853</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">3-253</td>
              <td align="left" colspan="1" rowspan="1">Unassigned</td>
              <td align="left" colspan="1" rowspan="1"/>
              <td align="left" colspan="1" rowspan="1"/>
              <td align="left" colspan="1" rowspan="1"/>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">254-255</td>
              <td align="left" colspan="1" rowspan="1">Reserved for Private Use</td>
              <td align="left" colspan="1" rowspan="1">Y</td>
              <td align="left" colspan="1" rowspan="1"/>
              <td align="left" colspan="1" rowspan="1">RFC 9853</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-10.3-7">IANA added the following note to provide additional information regarding the use of RRC message codepoints in experiments:</t>
        <blockquote pn="section-10.3-8">
          <t indent="0" pn="section-10.3-8.1">Note: As specified in <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>, assignments
made in the Private Use space are not generally useful for broad
interoperability.  Those making use of the Private Use range are responsible
for ensuring that no conflicts occur within the intended scope of use.  For
widespread experiments, provisional registrations (<xref section="4.13" sectionFormat="of" target="RFC8126" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8126#section-4.13" derivedContent="RFC8126"/>) are available.</t>
        </blockquote>
        <section anchor="designated-expert-instructions" numbered="true" removeInRFC="false" toc="include" pn="section-10.3.1">
          <name slugifiedName="name-designated-expert-instructi">Designated Expert Instructions</name>
          <t indent="0" pn="section-10.3.1-1">To enable a broadly informed review of registration decisions, it is recommended that multiple designated experts be appointed to represent the perspectives of both the transport and security areas.</t>
          <t indent="0" pn="section-10.3.1-2">In cases where a registration decision could be perceived as creating a conflict of interest for a particular expert, that expert <bcp14>SHOULD</bcp14> defer to the judgment of the other experts.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-uta-tls13-iot-profile" to="IOT-PROFILE"/>
    <displayreference target="I-D.irtf-t2trg-amplification-attacks" to="AMP-ATTACKS"/>
    <references anchor="sec-combined-references" pn="section-11">
      <name slugifiedName="name-references">References</name>
      <references anchor="sec-normative-references" pn="section-11.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="IANA.tls-parameters" target="https://www.iana.org/assignments/tls-parameters" quoteTitle="true" derivedAnchor="IANA.tls-parameters">
          <front>
            <title>Transport Layer Security (TLS) Parameters</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC6347" target="https://www.rfc-editor.org/info/rfc6347" quoteTitle="true" derivedAnchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t indent="0">This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="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 indent="0">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 indent="0">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 indent="0">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="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8447" target="https://www.rfc-editor.org/info/rfc8447" quoteTitle="true" derivedAnchor="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 indent="0">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 indent="0">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>
        <reference anchor="RFC9146" target="https://www.rfc-editor.org/info/rfc9146" quoteTitle="true" derivedAnchor="RFC9146">
          <front>
            <title>Connection Identifier for DTLS 1.2</title>
            <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="A. Kraus" initials="A." surname="Kraus"/>
            <date month="March" year="2022"/>
            <abstract>
              <t indent="0">This document specifies the Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS) protocol version 1.2.</t>
              <t indent="0">A CID is an identifier carried in the record layer header that gives the recipient additional information for selecting the appropriate security association. In "classical" DTLS, selecting a security association of an incoming DTLS record is accomplished with the help of the 5-tuple. If the source IP address and/or source port changes during the lifetime of an ongoing DTLS session, then the receiver will be unable to locate the correct security context.</t>
              <t indent="0">The new ciphertext record format with the CID also provides content type encryption and record layer padding.</t>
              <t indent="0">This document updates RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9146"/>
          <seriesInfo name="DOI" value="10.17487/RFC9146"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147" quoteTitle="true" derivedAnchor="RFC9147">
          <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 indent="0">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 indent="0">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 indent="0">This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9847" target="https://www.rfc-editor.org/info/rfc9847" quoteTitle="true" derivedAnchor="RFC9847">
          <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="December" year="2025"/>
            <abstract>
              <t indent="0">This document updates the changes to the TLS and DTLS IANA registries made in RFC 8447. It adds a new value, "D" for discouraged, to the "Recommended" column of the selected TLS registries and adds a "Comment" column to all active registries that do not already have a "Comment" column. Finally, it updates the registration request instructions.</t>
              <t indent="0">This document updates RFC 8447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9847"/>
          <seriesInfo name="DOI" value="10.17487/RFC9847"/>
        </reference>
      </references>
      <references anchor="sec-informative-references" pn="section-11.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.irtf-t2trg-amplification-attacks" target="https://datatracker.ietf.org/doc/html/draft-irtf-t2trg-amplification-attacks-05" quoteTitle="true" derivedAnchor="AMP-ATTACKS">
          <front>
            <title>Amplification Attacks Using the Constrained Application Protocol (CoAP)</title>
            <author fullname="John Preuß Mattsson" initials="J." surname="Preuß Mattsson">
              <organization showOnFrontPage="true">Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization showOnFrontPage="true">Ericsson AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
              <organization showOnFrontPage="true">Energy Harvesting Solutions</organization>
            </author>
            <date day="18" month="June" year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-amplification-attacks-05"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-uta-tls13-iot-profile" target="https://datatracker.ietf.org/doc/html/draft-ietf-uta-tls13-iot-profile-19" quoteTitle="true" derivedAnchor="IOT-PROFILE">
          <front>
            <title>TLS/DTLS 1.3 Profiles for the Internet of Things</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization showOnFrontPage="true">University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization showOnFrontPage="true">Linaro</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization showOnFrontPage="true">Sandelman Software Works</organization>
            </author>
            <author fullname="Daniel Migault" initials="D." surname="Migault">
              <organization showOnFrontPage="true">Ericsson</organization>
            </author>
            <date day="20" month="February" year="2026"/>
            <abstract>
              <t indent="0">RFC 7925 offers guidance to developers on using TLS/DTLS 1.2 for Internet of Things (IoT) devices with resource constraints. This document is a companion to RFC 7925, defining TLS/DTLS 1.3 profiles for IoT devices. Additionally, it updates RFC 7925 with respect to the X.509 certificate profile and ciphersuite requirements. Discussion Venues This note is to be removed before publishing as an RFC. Source for this draft and an issue tracker can be found at https://github.com/thomas-fossati/draft-tls13-iot.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls13-iot-profile-19"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4086" quoteTitle="true" derivedAnchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t indent="0">Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t indent="0">Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000" quoteTitle="true" derivedAnchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t indent="0">This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9175" target="https://www.rfc-editor.org/info/rfc9175" quoteTitle="true" derivedAnchor="RFC9175">
          <front>
            <title>Constrained Application Protocol (CoAP): Echo, Request-Tag, and Token Processing</title>
            <author fullname="C. Amsüss" initials="C." surname="Amsüss"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <date month="February" year="2022"/>
            <abstract>
              <t indent="0">This document specifies enhancements to the Constrained Application Protocol (CoAP) that mitigate security issues in particular use cases. The Echo option enables a CoAP server to verify the freshness of a request or to force a client to demonstrate reachability at its claimed network address. The Request-Tag option allows the CoAP server to match block-wise message fragments belonging to the same request. This document updates RFC 7252 with respect to the following: processing requirements for client Tokens, forbidding non-secure reuse of Tokens to ensure response-to-request binding when CoAP is used with a security protocol, and amplification mitigation (where the use of the Echo option is now recommended).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9175"/>
          <seriesInfo name="DOI" value="10.17487/RFC9175"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgments" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.a-1">We would like to thank
<contact fullname="Colin Perkins"/>,
<contact fullname="Deb Cooley"/>,
<contact fullname="Eric Rescorla"/>,
<contact fullname="Éric Vyncke"/>,
<contact fullname="Erik Kline"/>,
<contact fullname="Hanno Becker"/>,
<contact fullname="Hanno Böck"/>,
<contact fullname="Joe Clarke"/>,
<contact fullname="Manuel Pégourié-Gonnard"/>,
<contact fullname="Marco Tiloca"/>,
<contact fullname="Martin Thomson"/>,
<contact fullname="Mike Bishop"/>,
<contact fullname="Mike Ounsworth"/>,
<contact fullname="Mohamed Boucadair"/>,
<contact fullname="Mohit Sahni"/>,
<contact fullname="Rich Salz"/>,
<contact fullname="Russ Housley"/>,
<contact fullname="Sean Turner"/>, and
<contact fullname="Yaron Sheffer"/>
for their input to this document.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig" role="editor">
        <organization abbrev="UniBw M." showOnFrontPage="true">University of the Bundeswehr Munich</organization>
        <address>
          <postal>
            <extaddr>Institute of Distributed Intelligent Systems</extaddr>
            <street>Werner-Heisenberg-Weg 39</street>
            <city>Neubiberg</city>
            <code>85577</code>
            <country>Germany</country>
          </postal>
          <email>Hannes.Tschofenig@gmx.net</email>
        </address>
      </author>
      <author initials="A." surname="Kraus" fullname="Achim Kraus">
        <organization showOnFrontPage="true"/>
        <address>
          <email>achimkraus@gmx.net</email>
        </address>
      </author>
      <author initials="T." surname="Fossati" fullname="Thomas Fossati">
        <organization showOnFrontPage="true">Linaro</organization>
        <address>
          <email>thomas.fossati@linaro.org</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
