<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-dtls-rrc-18" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="DTLS Return Routability Check">Return Routability Check for DTLS 1.2 and DTLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls-rrc-18"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig" role="editor">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="A." surname="Kraus" fullname="Achim Kraus">
      <organization/>
      <address>
        <email>achimkraus@gmx.net</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date year="2025" month="June" day="26"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>DTLS, RRC, CID</keyword>
    <abstract>
      <?line 46?>

<t>This document specifies a return routability check for use in context of the
Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS)
protocol versions 1.2 and 1.3.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Transport Layer Security Working Group mailing list (tls@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/tlswg/dtls-rrc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>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"/> for
DTLS 1.2 and in <xref target="RFC9147"/> for DTLS 1.3.</t>
      <t>Section 6 of <xref target="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
(D)DoS.  It also describes the steps a DTLS principal must take when a
record with a CID is received that has a source address (and/or port) 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) sub-protocol for DTLS 1.2 and 1.3.</t>
      <t>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 (and port) indicated in the received datagram.</t>
      <t><xref target="regular"/> of this document explains the fundamental mechanism that aims to reduce the DDoS attack surface.
Additionally, in <xref target="enhanced"/>, a more advanced address validation mechanism is discussed.
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"/>.</t>
      <t>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">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document assumes familiarity with the CID format and protocol defined for
DTLS 1.2 <xref target="RFC9146"/> and for DTLS 1.3 <xref target="RFC9147"/>.  The presentation language
used in this document is described in Section 4 of <xref target="RFC8446"/>.</t>
      <t>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"/>, applying a similar concept to DTLS.</t>
      <t>The terms "peer" and "endpoint" are defined in <xref section="1.1" sectionFormat="of" target="RFC8446"/>.</t>
    </section>
    <section anchor="rrc-extension">
      <name>RRC Extension</name>
      <t>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 DTLS 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 a
<tt>rrc</tt> extension in its ServerHello.  The <tt>extension_type</tt> value for this
extension is TBD1 and the <tt>extension_data</tt> field of this extension is empty.
The client and server <bcp14>MUST NOT</bcp14> use RRC unless both sides have successfully
exchanged <tt>rrc</tt> extensions.
A client offering the <tt>rrc</tt> extension <bcp14>MUST</bcp14> also offer the <tt>connection_id</tt> extension <xref target="RFC9146"/>.
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.</t>
      <section anchor="rrc-and-cid-interplay">
        <name>RRC and CID Interplay</name>
        <t>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"/>.  Specifically, when both CID <xref target="RFC9146"/> and RRC have been
successfully negotiated for the session, if a record with CID is received that
has the source address and/or source port number 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"/>, unless an application-specific
address validation mechanism can be triggered instead (e.g., CoAP Echo <xref target="RFC9175"/>).</t>
      </section>
    </section>
    <section anchor="return-routability-check-message-types">
      <name>Return Routability Check Message Types</name>
      <t>This document defines the <tt>return_routability_check</tt> content type
(<xref target="fig-rrc-msg"/>) to carry Return Routability Check messages.</t>
      <t>The RRC sub-protocol consists of three message types: <tt>path_challenge</tt>, <tt>path_response</tt>
and <tt>path_drop</tt> that are used for path validation and selection as described in
<xref target="path-validation"/>.</t>
      <t>Each message carries a Cookie, an 8-byte field containing 64 bits of entropy (e.g., obtained from the CSPRNG used by the TLS implementation, see <xref section="C.1" sectionFormat="of" target="RFC8446"/>).</t>
      <t>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">
        <name>Return Routability Check Message</name>
        <sourcecode type="tls-msg"><![CDATA[
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(TBD2), /* 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>Future extensions to the Return Routability Check sub-protocol 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="attacker">
      <name>Attacker Model</name>
      <t>We define two classes of attackers, off-path and on-path, with increasing
capabilities (see <xref target="fig-attacker-capabilities"/>) partly following terminology
introduced in QUIC (<xref section="21.1" sectionFormat="of" target="RFC9000"/>):</t>
      <ul spacing="normal">
        <li>
          <t>An off-path attacker is not on the original path between the DTLS peers, but
is able to observe packets on the original path and has faster routing
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>
          <t>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>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">
        <name>Attacker capabilities</name>
        <artset>
          <artwork type="svg" align="center"><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">un-encrypted</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">un-authenticated</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"><![CDATA[
    .--> .------------------------------------. <--.
    |    | Inspect un-encrypted portions      |    |
    |    +------------------------------------+    |
    |    | Inject                             |    |
off-path +------------------------------------+    |
    |    | Reorder                            |    |
    |    +------------------------------------+    |
    |    | Modify un-authenticated portions   | on-path
    '--> +------------------------------------+    |
         | Delay                              |    |
         +------------------------------------+    |
         | Drop                               |    |
         +------------------------------------+    |
         | Manipulate the packetization layer |    |
         '------------------------------------' <--'
]]></artwork>
        </artset>
      </figure>
      <t>RRC is designed to defend against the following attacks:</t>
      <ul spacing="normal">
        <li>
          <t>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"/>).</t>
        </li>
        <li>
          <t>Off-path attackers that try to put themselves on-path (<xref target="off-path"/>),
provided that the enhanced path validation algorithm is used (<xref target="enhanced"/>).</t>
        </li>
      </ul>
      <section anchor="sec-amplification">
        <name>Amplification</name>
        <t>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-bytes GET request <xref target="I-D.irtf-t2trg-amplification-attacks"/>) the
attacker can use the server as a traffic amplifier toward the victim.</t>
        <section anchor="mitigation-strategy">
          <name>Mitigation Strategy</name>
          <t>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>Note that in 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">
        <name>Off-Path Packet Forwarding</name>
        <t>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>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>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. Note however that, unlike QUIC,
DTLS has no "non-probing" packets so this would require application specific
mechanisms.</t>
        <section anchor="mitigation-strategy-1">
          <name>Mitigation Strategy</name>
          <t><xref target="fig-off-path"/> illustrates the case where a receiver receives a
packet with a new source IP address and/or new port number. In order
to determine that this path change was not triggered
by an off-path attacker, the receiver will send a RRC message of type
<tt>path_challenge</tt> (1) on the old path.</t>
          <figure anchor="fig-off-path">
            <name>Off-Path Packet Forwarding Scenario</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="256" viewBox="0 0 256 368" 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,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"/>
                  <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="64" y="196">Attacker?</text>
                    <text x="156" y="308">Sender</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
        new                  old
        path  .----------.  path
              |          |
        .-----+ Receiver +-----.
        |     |          |     |
        |     '----------'     |
        |                      |
        |                      |
        |                      |
   .----+------.               |
  / Attacker? /                |
 '------+----'                 |
        |                      |
        |                      |
        |                      |
        |     .----------.     |
        |     |          |     |
        '-----+  Sender  +-----'
              |          |
              '----------'
]]></artwork>
            </artset>
          </figure>
          <t>Three cases need to be considered:</t>
          <t>Case 1: The old path is dead (e.g., due to a NAT rebinding), which leads to a
timeout of (1).</t>
          <t>As shown in <xref target="fig-old-path-dead"/>, 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">
            <name>Old path is dead</name>
            <artset>
              <artwork type="svg" align="center"><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"><![CDATA[
          new                      old
          path    .----------.    path
          .------>|          +-------.
          | .-----+ Receiver +...... |
          | | .---+          |     . |
          | | |   '----------'     . |
 path-    3 | |                    . 1 path-
 response | | |                    . | challenge
          | | |                    . |
       .--|-+-|----------------------v--.
      /   |   |       NAT            X / timeout
     '----|-+-|-----------------------'
          | | |                    .
          | | 2 path-              .
          | | | challenge          .
          | | |   .----------.     .
          | | '-->|          |     .
          | '-----+  Sender  +.....'
          '-------+          |
                  '----------'
]]></artwork>
            </artset>
          </figure>
          <t>Case 2: The old path is alive but not preferred.</t>
          <t>This case is shown in <xref target="fig-old-path-not-preferred"/> 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">
            <name>Old path is not preferred</name>
            <artset>
              <artwork type="svg" align="center"><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="52" y="196">AP/NAT</text>
                    <text x="88" y="196">A</text>
                    <text x="356" y="196">AP/NAT</text>
                    <text x="392" 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"><![CDATA[
            new                      old
            path    .----------.    path
            .------>|          |<------.
            | .-----+ Receiver +-----. |
            | | .---+          +---. | |
            | | |   '----------'   | | |
   path-    4 | |        path-     1 | |
   response | | |        challenge | | |
            | | |                  | | |
  .---------|-+-|----.          .--|-+-|-----------.
 / AP/NAT A |   |   /          /   |   | AP/NAT B /
'-----------|---|--'          '----|-+-|---------'
            | | |                  | | |
            | | 3 path-            | | 2 path-
            | | | challenge        | | | drop
            | | |   .----------.   | | |
            | | '-->|          |<--' | |
            | '-----+  Sender  +-----' |
            '-------+          +-------'
                    '----------'
]]></artwork>
            </artset>
          </figure>
          <t>Case 3: The old path is alive and preferred.</t>
          <t>This is most likely the result of an off-path attacker trying to place itself
on path.  The receiver sends a <tt>path_challenge</tt> on the old path and the sender
replies with a <tt>path_response</tt> (2) on the old path. The interaction is shown in
<xref target="fig-old-path-preferred"/>. This results in the connection not being migrated
to the new path, thus thwarting the attack.</t>
          <figure anchor="fig-old-path-preferred">
            <name>Old path is preferred</name>
            <artset>
              <artwork type="svg" align="center"><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="220" y="196">AP</text>
                    <text x="248" y="196">/</text>
                    <text x="280" 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"><![CDATA[
        new                    old
        path  .----------.    path
              |          +-------.
        .-----+ Receiver +-----. |
        |     |          |<--. | |
        |     '----------'   | | |
        |                    | | 1 path-
        |                    | | | challenge
        |                    | | |
    .---+------.          .--|-+-|-----.
   / off-path /          / AP| / |NAT /
  / attacker /          '----|-+-|---'
 '------+---'                | | |
        |                    | | |
        |           path-    2 | |
        |           response | | |
        |     .----------.   | | |
        |     |          +---' | |
        '-----+  Sender  +-----' |
              |          |<------'
              '----------'
]]></artwork>
            </artset>
          </figure>
          <t>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>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; similarly, rebinding
is rare on IPv6 paths. Endpoints can also look for duplicated
packets. Conversely, a change in connection ID is more likely to
indicate an intentional migration rather than an attack. Note that
changes in connection IDs are supported in DTLS 1.3 but not in
DTLS 1.2.</t>
        </section>
      </section>
    </section>
    <section anchor="path-validation">
      <name>Path Validation Procedure</name>
      <t>The receiver that observes the peer's address or port 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>This document describes two kinds of checks: basic (<xref target="regular"/>) and enhanced (<xref target="enhanced"/>).
The choice of one or the other depends on whether the off-path attacker scenario described in <xref target="off-path"/> 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>After the path validation procedure is completed, any pending send operation is
resumed to the bound peer address.</t>
      <t><xref target="path-challenge-reqs"/> and <xref target="path-response-reqs"/> list the requirements for
the initiator and responder roles, broken down per protocol phase.</t>
      <t>Please note that the presented algorithms are not designed to handle nested rebindings.
If this happens (which should rarely occur), 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>
      <section anchor="regular">
        <name>Basic</name>
        <t>The basic return routability check comprises the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>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>
            <t>The message is sent to the observed new address and a timer T (see
<xref target="timer-choice"/>) is started.</t>
          </li>
          <li>
            <t>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>
            <t>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>
            <t>If T expires the peer address binding is not updated.</t>
          </li>
        </ol>
      </section>
      <section anchor="enhanced">
        <name>Enhanced</name>
        <t>The enhanced return routability check comprises the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>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>
            <t>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"/>.</t>
          </li>
          <li>
            <t>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 or not the path through which the message was received is still the preferred one:
            </t>
            <ul spacing="normal">
              <li>
                <t>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.</t>
              </li>
              <li>
                <t>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.
In either case, the peer echoes the cookie value in the response.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>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">
              <li>
                <t>When a <tt>return_routability_check</tt> message of type <tt>path_response</tt> was 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>
                <t>When a <tt>return_routability_check</tt> message of type <tt>path_drop</tt> was received,
the initiator <bcp14>MUST</bcp14> perform a return routability check on the observed new
address, as described in <xref target="regular"/>.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If T expires the peer address binding is not updated. In this case, the
initiator <bcp14>MUST</bcp14> perform a return routability check on the observed new
address, as described in <xref target="regular"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="path-challenge-reqs">
        <name> Path Challenge Requirements</name>
        <ul spacing="normal">
          <li>
            <t>The initiator <bcp14>MAY</bcp14> send multiple <tt>return_routability_check</tt> messages of type
<tt>path_challenge</tt> to cater for packet loss on the probed path.
            </t>
            <ul spacing="normal">
              <li>
                <t>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>
                <t>The transmission of subsequent <tt>path_challenge</tt> messages <bcp14>SHOULD</bcp14> be paced to
decrease the chance of loss.</t>
              </li>
              <li>
                <t>Each <tt>path_challenge</tt> message <bcp14>MUST</bcp14> contain random data.</t>
              </li>
              <li>
                <t>In general, the number of "backup" <tt>path_challenge</tt> messages depends on the application, since some are more sensitive to latency caused by changes in the path than others.
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>
            <t>The initiator <bcp14>MAY</bcp14> use padding using the record padding mechanism available in
DTLS 1.3 (and in DTLS 1.2, when CID is enabled on the sending direction) 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">
        <name>Path Response/Drop Requirements</name>
        <ul spacing="normal">
          <li>
            <t>The responder <bcp14>MUST NOT</bcp14> delay sending an elicited <tt>path_response</tt> or
<tt>path_drop</tt> messages.</t>
          </li>
          <li>
            <t>The responder <bcp14>MUST</bcp14> send exactly one <tt>path_response</tt> or <tt>path_drop</tt> message
for each received <tt>path_challenge</tt>.</t>
          </li>
          <li>
            <t>The responder <bcp14>MUST</bcp14> send the <tt>path_response</tt> or the <tt>path_drop</tt> on the path
where the corresponding <tt>path_challenge</tt> has been received, so that validation
succeeds only if the path is functional in both directions.</t>
          </li>
          <li>
            <t>The initiator <bcp14>MUST</bcp14> silently discard any invalid <tt>path_response</tt> or
<tt>path_drop</tt> it receives.</t>
          </li>
        </ul>
        <t>Note that RRC does not cater 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">
        <name>Timer Choice</name>
        <t>When setting T, implementations are cautioned that the new path could have a
longer RTT than the original.</t>
        <t>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>If an implementation has no way to obtain information regarding the RTT of the
active path, T <bcp14>SHOULD</bcp14> be set to 1s.</t>
        <t>Profiles for specific deployment environments -- for example, constrained
networks <xref target="I-D.ietf-uta-tls13-iot-profile"/> -- <bcp14>MAY</bcp14> specify a different, more
suitable value for T.</t>
      </section>
    </section>
    <section anchor="example">
      <name>Example</name>
      <t>In the example DTLS 1.3 handshake shown in <xref target="fig-handshake"/>, a client
and a server successfully negotiate support for both CID and the RRC
extension.</t>
      <figure anchor="fig-handshake">
        <name>Message Flow for Full DTLS Handshake</name>
        <artwork><![CDATA[
       Client                                           Server

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

     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]      <------->  [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>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>At some point in the communication interaction, the IP 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 IP address.</t>
      <t><xref target="fig-rrc-example"/> shows the server initiating a "basic" RRC exchange
(see <xref target="regular"/>) that establishes reachability of the client at the new
IP address.</t>
      <figure anchor="fig-rrc-example">
        <name>"Basic" Return Routability Example</name>
        <artwork><![CDATA[
      Client                                             Server
      ------                                             ------

      Application Data            ========>
      <CID=100>
      Src-IP=A
      Dst-IP=Z
                                  <========        Application Data
                                                       Src-IP=Z
                                                       Dst-IP=A

                              <<------------->>
                              <<   Some      >>
                              <<   Time      >>
                              <<   Later     >>
                              <<------------->>


      Application Data            ========>
      <CID=100>
      Src-IP=B
      Dst-IP=Z

                                             <<< Unverified IP
                                                 Address B >>

                                  <--------  Return Routability Check
                                             path_challenge(cookie)
                                                    Src-IP=Z
                                                    Dst-IP=B

      Return Routability Check    -------->
      path_response(cookie)
      Src-IP=B
      Dst-IP=Z

                                             <<< IP Address B
                                                 Verified >>


                                  <========        Application Data
                                                       Src-IP=Z
                                                       Dst-IP=B
]]></artwork>
      </figure>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>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>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"/> and <xref section="4.1.2.6" sectionFormat="of" target="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 freshly generated using a reliable source of entropy (see <xref target="RFC4086"/>).
A suitable source is the cryptographically secure pseudorandom number generator (CSPRNG) provided by the TLS implementation (see <xref section="C.1" sectionFormat="of" target="RFC8446"/>).</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>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"/>, 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>Note that DTLS 1.2 does not offer the ability to request new CIDs during the session lifetime since CIDs have the same life-span
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="operational-considerations">
      <name>Operational Considerations</name>
      <section anchor="logging-anomalous-events">
        <name>Logging Anomalous Events</name>
        <t>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>
      </section>
      <section anchor="middlebox-interference">
        <name>Middlebox Interference</name>
        <t>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 didn't negotiate a CID or it 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 using RRC in DTLS 1.2, it is recommended to enable CID in both directions.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t><cref anchor="to-be-removed">RFC Editor: please replace RFCthis with this RFC number and remove this note.</cref></t>
      <section anchor="new-tls-contenttype">
        <name>New TLS ContentType</name>
        <t>IANA is requested to allocate an entry in the TLS <tt>ContentType</tt>
registry for the <tt>return_routability_check(TBD2)</tt> message defined in
this document.  IANA is requested to set the <tt>DTLS_OK</tt> column to <tt>Y</tt> and
to add the following note prior to the table:</t>
        <ul empty="true">
          <li>
            <t>NOTE: The return_routability_check content type is only
applicable to DTLS 1.2 and 1.3.</t>
          </li>
        </ul>
      </section>
      <section anchor="new-tls-extensiontype">
        <name>New TLS ExtensionType</name>
        <t>IANA is requested to allocate the extension code point (TBD1) for the <tt>rrc</tt>
extension to the <tt>TLS ExtensionType Values</tt> registry as described in
<xref target="tbl-ext"/>.</t>
        <table align="left" anchor="tbl-ext">
          <name>rrc entry in the TLS ExtensionType Values registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Extension Name</th>
              <th align="left">TLS 1.3</th>
              <th align="left">DTLS-Only</th>
              <th align="left">Recommended</th>
              <th align="left">Reference</th>
              <th align="left">Comment</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD1</td>
              <td align="left">rrc</td>
              <td align="left">CH, SH</td>
              <td align="left">Y</td>
              <td align="left">N</td>
              <td align="left">RFCthis</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="new-rrc-message-type-registry">
        <name>New "RRC Message Type" Registry</name>
        <t>IANA is requested to create a new registry "RRC Message Types" within the TLS Parameters registry group <xref target="IANA.tls-parameters"/>.
This registry will be administered under the "Expert Review" policy (<xref section="4.5" sectionFormat="of" target="RFC8126"/>).</t>
        <t>Follow the procedures in <xref section="16" sectionFormat="of" target="I-D.ietf-tls-rfc8447bis"/> to submit registration requests.</t>
        <t>Each entry in the registry must include the following fields:</t>
        <dl newline="true">
          <dt>Value:</dt>
          <dd>
            <t>A (decimal) number in the range 0 to 253</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>A brief description of the RRC message</t>
          </dd>
          <dt>DTLS-Only:</dt>
          <dd>
            <t>Whether the message applies only to DTLS.
Since RRC is only available in DTLS, this column will be set to <tt>Y</tt> for all the current entries in this registry.
Future work may define new RRC Message Types that also apply to TLS.</t>
          </dd>
          <dt>Recommended:</dt>
          <dd>
            <t>Whether the message is recommended for implementations to support.
The semantics for this field is defined in <xref section="5" sectionFormat="of" target="RFC8447"/> and updated in <xref section="3" sectionFormat="of" target="I-D.ietf-tls-rfc8447bis"/></t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>A reference to a publicly available specification for the value</t>
          </dd>
          <dt>Comment:</dt>
          <dd>
            <t>Any relevant notes or comments that relate to this entry</t>
          </dd>
        </dl>
        <t>The initial state of this sub-registry is as follows:</t>
        <table align="left" anchor="tbl-rrc-mt">
          <name>Initial Entries in RRC Message Type registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">DTLS-Only</th>
              <th align="left">Recommended</th>
              <th align="left">Reference</th>
              <th align="left">Comment</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">path_challenge</td>
              <td align="left">Y</td>
              <td align="left">Y</td>
              <td align="left">RFCthis</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">path_response</td>
              <td align="left">Y</td>
              <td align="left">Y</td>
              <td align="left">RFCthis</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">path_drop</td>
              <td align="left">Y</td>
              <td align="left">Y</td>
              <td align="left">RFCthis</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">3-253</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">254-255</td>
              <td align="left">Reserved for Private Use</td>
              <td align="left">Y</td>
              <td align="left"> </td>
              <td align="left">RFCthis</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>IANA is requested to add the following note for additional information regarding the use of RRC message codepoints in experiments:</t>
        <dl>
          <dt>Note:</dt>
          <dd>
            <t>As specified in <xref target="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"/>) are available.</t>
          </dd>
        </dl>
        <section anchor="designated-expert-instructions">
          <name>Designated Expert Instructions</name>
          <t>To enable a broadly informed review of registration decisions, it is recommended that multiple Designated Experts be appointed who are able to represent the perspectives of both the transport and security areas.</t>
          <t>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>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank
Colin Perkins,
Eric Rescorla,
Hanno Becker,
<contact fullname="Hanno Böck"/>,
Joe Clarke,
<contact fullname="Manuel Pégourié-Gonnard"/>,
Marco Tiloca,
Martin Thomson,
Mike Bishop,
Mike Ounsworth,
Mohit Sahni,
Rich Salz,
Russ Housley,
Sean Turner, and
Yaron Sheffer
for their input to this document.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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>This document specifies the Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS) protocol version 1.2.</t>
              <t>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>The new ciphertext record format with the CID also provides content type encryption and record layer padding.</t>
              <t>This document updates RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9146"/>
          <seriesInfo name="DOI" value="10.17487/RFC9146"/>
        </reference>
        <reference anchor="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>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="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>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document 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="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>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="IANA.tls-parameters" target="https://www.iana.org/assignments/tls-parameters">
          <front>
            <title>Transport Layer Security (TLS) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="I-D.ietf-tls-rfc8447bis">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Venafi</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="16" month="June" year="2025"/>
            <abstract>
              <t>   This document updates the changes to 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.

   This document updates RFC 8447.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8447bis-14"/>
        </reference>
        <reference anchor="RFC8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="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>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">
          <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>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>
        <reference anchor="I-D.irtf-t2trg-amplification-attacks">
          <front>
            <title>Amplification Attacks Using the Constrained Application Protocol (CoAP)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
              <organization>Energy Harvesting Solutions</organization>
            </author>
            <date day="18" month="June" year="2025"/>
            <abstract>
              <t>   Protecting Internet of Things (IoT) devices against attacks is not
   enough.  IoT deployments need to make sure that they are not used for
   Distributed Denial-of-Service (DDoS) attacks.  DDoS attacks are
   typically done with compromised devices or with amplification attacks
   using a spoofed source address.  This document gives examples of
   different theoretical amplification attacks using the Constrained
   Application Protocol (CoAP).  The goal with this document is to raise
   awareness and to motivate generic and protocol-specific
   recommendations on the usage of CoAP.  Some of the discussed attacks
   can be mitigated by not using NoSec or by using the Echo option.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-amplification-attacks-05"/>
        </reference>
        <reference anchor="I-D.ietf-uta-tls13-iot-profile">
          <front>
            <title>TLS/DTLS 1.3 Profiles for the Internet of Things</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="5" month="May" year="2025"/>
            <abstract>
              <t>   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-14"/>
        </reference>
        <reference anchor="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>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>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>
      </references>
    </references>
    <?line 802?>



  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+V963bbRprg/3qKWvmctRSTtCXb6bTiJCNbclvTvo0ld282
J22BQJHEGATYKEAyW1I/y/ydF5gHmH6x+W5VKFwoy0l2ds9ZnhNHBAt1/e63
Go/H6nxfP1SqSqvM7Ot3pqrLXL8r6iqapllarfWzhYk/6llR6sPTlyd6d7Kn
ozxxXx6qaDotDXRCDza9r5IizqMljJCU0awap6aajavMjhP8pyzj8e43Ko4q
My/K9b62VaLiIrcmt7Xd11VZG2Xr6TK1Ni3yar2Cjo6PTp8rla5K+t1Wew8e
/P7BnopKE+3rExPXJYyuLory47ws6tW+hvmpj2YNTxKe7Ui/e/dspJ8dHypl
K1jUhygrcuh6baxapftK63IWm8RW60yeal0VcfBnmicmr9wDW5RVaWbWf18v
W1+rMo1947hYLuFd/2uaZ2nuh4H9WkarVZrP+YmK6mpRlDinMTSFt15M9KmN
F8XM5OkcHmvNG/wiynNju78VJXT0Pk/PTWnxVIqZPlitstQk+iROTR7DK0+L
PB+/W5g0H5+kht9zp/ti/PTdCT0pC9wMk6RVUdIDs4zSzI07acb9p/ny0yQ3
VTPlg4n+YxnVNpjtQbxIl8FT6SzCxx/xab+X04l+XlgbVWnQz+miWEa29QMs
OcrTv8HXIt/XL9M8KotwjIpemcz4lX/KqMEE3lIKzgU2CTf75Ojl83299e75
s2qR2i2lxuMxbAocZRRXSp3CQzyrGo9S25WJ01kKWxnpkjGhDDAh9phUWwNr
ARDIK/OpwsOoFkY9g/03MU5XHx/qbYDLHWwCY9VxRe9BK30YVdG8jJb6tIxy
uwKQ0y+jtSk9zOttBO4dtSoLgNAi03Tm0I/HXUDbCa9kmSZJZpS6o4/zqiyS
moZX6kAPTQbWGuU6RZDHZZY6jsoSQQjWglMrTQzIpTOazsJECfwP1hYxbUhk
4qpaRJWeAyha95ZBuNRRAkAFA0YZdAjLXdLR0cKtyXAy+ZzeAMQoi1WZAr1Q
1q1aNnOiARYMIrVemngBEGCXegGgMTUm9ydEU768/B9wrr/fffT19TWOoloE
LmzwO27giR7s3olszte4wlZPibFxmU5hdYviguaLxw2tcE5pHgOBsrL0qKoi
II62LmdRTG1aU4CR9HStYbHnaYKLnxbVQhf5eBXB/7FFMZvJF+oJDhpPqFgh
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
XIk9jAAA

-->

</rfc>
