<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.3 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="pre5378Trust200902" docName="draft-ietf-tls-dtls13-39" category="std" obsoletes="6347">

  <front>
    <title abbrev="DTLS 1.3">The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>

    <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
      <organization>RTFM, Inc.</organization>
      <address>
        <email>ekr@rtfm.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Arm Limited</organization>
      <address>
        <email>hannes.tschofenig@arm.com</email>
      </address>
    </author>
    <author initials="N." surname="Modadugu" fullname="Nagendra Modadugu">
      <organization>Google, Inc.</organization>
      <address>
        <email>nagendra@cs.stanford.edu</email>
      </address>
    </author>

    <date year="2020" month="November" day="02"/>

    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>Internet-Draft</keyword>

    <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 intentionally 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>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>RFC EDITOR: PLEASE REMOVE THE FOLLOWING PARAGRAPH</t>

<t>The source for this draft is maintained in GitHub. Suggested changes
should be submitted as pull requests at https://github.com/tlswg/dtls13-spec.
Instructions are on that page as well. Editorial changes can be managed in GitHub,
but any substantive change should be discussed on the TLS mailing list.</t>

<t>The primary goal of the TLS protocol is to establish an authenticated,
confidentiality and integrity protected channel between two communicating peers.
The TLS protocol is composed of two layers:
the TLS Record Protocol and the TLS Handshake Protocol. However, TLS must
run over a reliable transport channel – typically TCP <xref target="RFC0793"/>.</t>

<t>There are applications that use UDP <xref target="RFC0768"/> as a transport and to offer communication
security protection for those applications the Datagram Transport Layer
Security (DTLS) protocol has been developed. DTLS is deliberately designed to be
as similar to TLS as possible, both to minimize new security invention and to
maximize the amount of code and infrastructure reuse.</t>

<t>DTLS 1.0 <xref target="RFC4347"/> was originally defined as a delta from TLS 1.1 <xref target="RFC4346"/> and
DTLS 1.2 <xref target="RFC6347"/> was defined as a series of deltas to TLS 1.2 <xref target="RFC5246"/>.  There
is no DTLS 1.1; that version number was skipped in order to harmonize version numbers
with TLS.  This specification describes the most current version of the DTLS protocol
based on TLS 1.3 <xref target="TLS13"/>.</t>

<t>Implementations that speak both DTLS 1.2 and DTLS 1.3 can interoperate with those
that speak only DTLS 1.2 (using DTLS 1.2 of course), just as TLS 1.3 implementations
can interoperate with TLS 1.2 (see Appendix D of <xref target="TLS13"/> for details).
While backwards compatibility with DTLS 1.0 is possible the use of DTLS 1.0 is not
recommended as explained in Section 3.1.2 of RFC 7525 <xref target="RFC7525"/>.</t>

</section>
<section anchor="conventions-and-terminology" title="Conventions and Terminology">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” 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>

<t>The following terms are used:</t>

<t><list style="symbols">
  <t>client: The endpoint initiating the DTLS connection.</t>
  <t>connection: A transport-layer connection between two endpoints.</t>
  <t>endpoint: Either the client or server of the connection.</t>
  <t>handshake: An initial negotiation between client and server that establishes
the parameters of their transactions.</t>
  <t>peer: An endpoint. When discussing a particular endpoint, “peer” refers to
the endpoint that is remote to the primary subject of discussion.</t>
  <t>receiver: An endpoint that is receiving records.</t>
  <t>sender: An endpoint that is transmitting records.</t>
  <t>session: An association between a client and a server resulting from a handshake.</t>
  <t>server: The endpoint which did not initiate the DTLS connection.</t>
  <t>CID: Connection ID</t>
  <t>MSL: Maximum Segment Lifetime</t>
</list></t>

<t>The reader is assumed to be familiar with the TLS 1.3 specification since this
document is defined as a delta from TLS 1.3. As in TLS 1.3 the HelloRetryRequest has
the same format as a ServerHello message but for convenience we use the term
HelloRetryRequest throughout this document as if it were a distinct message.</t>

<t>The reader is also as to be familiar with <xref target="I-D.ietf-tls-dtls-connection-id"/>
as this document applies the CID functionality to DTLS 1.3.</t>

<t>Figures in this document illustrate various combinations of the DTLS protocol exchanges and the symbols have the following meaning:</t>

<t><list style="symbols">
  <t>’+’  indicates noteworthy extensions sent in the previously noted message.</t>
  <t>‘*’  indicates optional or situation-dependent messages/extensions that are not always sent.</t>
  <t>’{}’ indicates messages protected using keys derived from a [sender]_handshake_traffic_secret.</t>
  <t>’[]’ indicates messages protected using keys derived from traffic_secret_N.</t>
</list></t>

</section>
<section anchor="dtls-rational" title="DTLS Design Rationale and Overview">

<t>The basic design philosophy of DTLS is to construct “TLS over datagram transport”.
Datagram transport does not require nor provide reliable or in-order delivery of data.
The DTLS protocol preserves this property for application data.
Applications such as media streaming, Internet telephony, and online gaming use
datagram transport for communication due to the delay-sensitive nature
of transported data.  The behavior of such applications is unchanged when the
DTLS protocol is used to secure communication, since the DTLS protocol
does not compensate for lost or reordered data traffic.</t>

<t>TLS cannot be used directly in datagram environments for the following five reasons:</t>

<t><list style="numbers">
  <t>TLS relies on an implicit sequence number on records.  If a record is not
received, then the recipient will use the wrong sequence number when
attempting to remove record protection from subsequent records. DTLS solves
this problem by adding sequence numbers.</t>
  <t>The TLS handshake is a lock-step cryptographic handshake.  Messages must be
transmitted and received in a defined order; any other order is an error.
DTLS handshake messages are also assigned sequence numbers to enable
reassembly in the correct order in case datagrams are lost or reordered.</t>
  <t>During the handshake, messages are implicitly acknowledged by other handshake
messages. Some handshake messages, such as the NewSessionTicket message, do
not result in any direct response that would allow the sender to detect loss.
DTLS adds an acknowledgment message to enable better loss recovery.</t>
  <t>Handshake messages are potentially larger than can be contained in a single
datagram.  DTLS adds fields to handshake messages to support fragmentation
and reassembly.</t>
  <t>Datagram transport protocols, like UDP, are susceptible to abusive behavior
effecting denial of service attacks against nonparticipants.  DTLS adds a
return-routability check that uses the TLS HelloRetryRequest message (see
<xref target="dos"/> for details).</t>
</list></t>

<section anchor="packet-loss" title="Packet Loss">

<t>DTLS uses a simple retransmission timer to handle packet loss.
<xref target="dtls-retransmission"/> demonstrates the basic concept, using the first
phase of the DTLS handshake:</t>

<figure title="DTLS retransmission example" anchor="dtls-retransmission"><artwork><![CDATA[
         Client                                   Server
         ------                                   ------
         ClientHello           ------>

                                 X<-- HelloRetryRequest
                                                  (lost)

         [Timer Expires]

         ClientHello           ------>
         (retransmit)
]]></artwork></figure>

<t>Once the client has transmitted the ClientHello message, it expects
to see a HelloRetryRequest or a ServerHello from the server. However, if the
server’s message is lost, the client knows that either the
ClientHello or the response from the server has been lost and retransmits.
When the server receives the retransmission, it knows to retransmit.</t>

<t>The server also maintains a retransmission timer and retransmits when
that timer expires.</t>

<t>Note that timeout and retransmission do not apply to the
HelloRetryRequest since this would require creating state on the
server.  The HelloRetryRequest is designed to be small enough that
it will not itself be fragmented, thus avoiding concerns about
interleaving multiple HelloRetryRequests.</t>

</section>
<section anchor="reordering" title="Reordering">

<t>In DTLS, each handshake message is assigned a specific sequence
number.  When a peer receives a handshake
message, it can quickly determine whether that message is the next
message it expects.  If it is, then it processes it.  If not, it
queues it for future handling once all previous messages have been
received.</t>

</section>
<section anchor="message-size" title="Message Size">

<t>TLS and DTLS handshake messages can be quite large (in theory up to
2^24-1 bytes, in practice many kilobytes).  By contrast, UDP
datagrams are often limited to less than 1500 bytes if IP fragmentation is not
desired.  In order to compensate for this limitation, each DTLS
handshake message may be fragmented over several DTLS records, each
of which is intended to fit in a single UDP datagram.  Each DTLS
handshake message contains both a fragment offset and a fragment
length.  Thus, a recipient in possession of all bytes of a handshake
message can reassemble the original unfragmented message.</t>

</section>
<section anchor="replay-detection" title="Replay Detection">

<t>DTLS optionally supports record replay detection.  The technique used
is the same as in IPsec AH/ESP, by maintaining a bitmap window of
received records.  Records that are too old to fit in the window and
records that have previously been received are silently discarded.
The replay detection feature is optional, since packet duplication is
not always malicious, but can also occur due to routing errors.
Applications may conceivably detect duplicate packets and accordingly
modify their data transmission strategy.</t>

</section>
</section>
<section anchor="the-dtls-record-layer" title="The DTLS Record Layer">

<t>The DTLS 1.3 record layer is different from the TLS 1.3 record layer and
also different from the DTLS 1.2 record layer.</t>

<t><list style="numbers">
  <t>The DTLSCiphertext structure omits the superfluous version number and
type fields.</t>
  <t>DTLS adds an epoch and sequence number to the TLS record header.
This sequence number allows the recipient to correctly verify the DTLS MAC.
However, the number of bits used for the epoch and sequence number fields in
the DTLSCiphertext structure have been reduced from those in previous
versions.</t>
  <t>The DTLSCiphertext structure has a variable length header.</t>
</list></t>

<t>DTLSPlaintext records are used to send unprotected records and DTLSCiphertext
records are used to send protected records.</t>

<t>The DTLS record formats are shown below. Unless explicitly stated the
meaning of the fields is unchanged from previous TLS / DTLS versions.</t>

<figure title="DTLS 1.3 Record Format" anchor="dtls-record"><artwork><![CDATA[
    struct {
        ContentType type;
        ProtocolVersion legacy_record_version;
        uint16 epoch = 0
        uint48 sequence_number;
        uint16 length;
        opaque fragment[DTLSPlaintext.length];
    } DTLSPlaintext;

    struct {
         opaque content[DTLSPlaintext.length];
         ContentType type;
         uint8 zeros[length_of_padding];
    } DTLSInnerPlaintext;

    struct {
        opaque unified_hdr[variable];
        opaque encrypted_record[length];
    } DTLSCiphertext;
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='unified_hdr:'>
  The unified_hdr is a field of variable length, as shown in <xref target="cid_hdr"/>.</t>
  <t hangText='encrypted_record:'>
  Identical to the encrypted_record field in a TLS 1.3 record.</t>
</list></t>

<t>The DTLSCiphertext header is tightly bit-packed, as shown below:</t>

<figure title="DTLS 1.3 CipherText Header" anchor="cid_hdr"><artwork><![CDATA[
    0 1 2 3 4 5 6 7
    +-+-+-+-+-+-+-+-+
    |0|0|1|C|S|L|E E|
    +-+-+-+-+-+-+-+-+
    | Connection ID |   Legend:
    | (if any,      |
    /  length as    /   C   - Connection ID (CID) present
    |  negotiated)  |   S   - Sequence number length
    +-+-+-+-+-+-+-+-+   L   - Length present
    |  8 or 16 bit  |   E   - Epoch
    |Sequence Number|
    +-+-+-+-+-+-+-+-+
    | 16 bit Length |
    | (if present)  |
    +-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='Fixed Bits:'>
  The three high bits of the first byte of the DTLSCiphertext header are set to
001.</t>
  <t hangText='C:'>
  The C bit (0x10) is set if the Connection ID is present.</t>
  <t hangText='S:'>
  The S bit (0x08) indicates the size of the sequence number.
0 means an 8-bit sequence number, 1 means 16-bit.</t>
  <t hangText='L:'>
  The L bit (0x04) is set if the length is present.</t>
  <t hangText='E:'>
  The two low bits (0x03) include the low order two bits of the epoch.</t>
  <t hangText='Connection ID:'>
  Variable length CID. The CID functionality
is described in <xref target="I-D.ietf-tls-dtls-connection-id"/>. An example
can be found in <xref target="connection-id-example"/>.</t>
  <t hangText='Sequence Number:'>
  The low order 8 or 16 bits of the record sequence number.  This value is 16
bits if the S bit is set to 1, and 8 bits if the S bit is 0.</t>
  <t hangText='Length:'>
  Identical to the length field in a TLS 1.3 record.</t>
</list></t>

<t>As with previous versions of DTLS, multiple DTLSPlaintext
and DTLSCiphertext records can be included in the same
underlying transport datagram.</t>

<t><xref target="hdr_examples"/> illustrates different record layer header types.</t>

<figure title="Header Examples" anchor="hdr_examples"><artwork><![CDATA[
 0 1 2 3 4 5 6 7       0 1 2 3 4 5 6 7       0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
| Content Type  |     |0|0|1|1|1|1|E E|     |0|0|1|0|0|0|E E|
+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
|   16 bit      |     |               |     |8-bit Seq. No. |
|   Version     |     / Connection ID /     +-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+     |               |     |               |
|   16 bit      |     +-+-+-+-+-+-+-+-+     |   Encrypted   |
|    Epoch      |     |    16 bit     |     /   Record      /
+-+-+-+-+-+-+-+-+     |Sequence Number|     |               |
|               |     +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
|               |     |   16 bit      |
|   48 bit      |     |   Length      |       DTLSCiphertext
|Sequence Number|     +-+-+-+-+-+-+-+-+         Structure
|               |     |               |         (minimal)
|               |     |  Encrypted    |
+-+-+-+-+-+-+-+-+     /  Record       /
|    16 bit     |     |               |
|    Length     |     +-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+
|               |      DTLSCiphertext
|               |        Structure
/   Fragment    /          (full)
|               |
+-+-+-+-+-+-+-+-+

 DTLSPlaintext
   Structure
]]></artwork></figure>

<t>The length field MAY be omitted by clearing the L bit, which means that the
record consumes the entire rest of the datagram in the lower
level transport. In this case it is not possible to have multiple
DTLSCiphertext format records without length fields in the same datagram.
Omitting the length field MUST only be used for the last record in a
datagram.</t>

<t>If a connection ID is negotiated, then it MUST be contained in all
datagrams. Sending implementations MUST NOT mix records from multiple DTLS associations
in the same datagram. If the second or later record has a connection
ID which does not correspond to the same association used
for previous records, the rest of the datagram MUST be discarded.</t>

<t>When expanded, the epoch and sequence number can be combined into an
unpacked RecordNumber structure, as shown below:</t>

<figure><artwork><![CDATA[
    struct {
        uint16 epoch;
        uint48 sequence_number;
    } RecordNumber;
]]></artwork></figure>

<t>This 64-bit value is used in the ACK message as well as in the “record_sequence_number”
input to the AEAD function.</t>

<t>The entire header value shown in <xref target="hdr_examples"/> (but prior to record number
encryption) is used as as the additional data value for the AEAD
function. For instance, if the minimal variant is used,
the AAD is 2 octets long. Note that this design is different from the additional data
calculation for DTLS 1.2 and for DTLS 1.2 with Connection ID.</t>

<section anchor="determining-the-header-format" title="Determining the Header Format">

<t>Implementations can distinguish the two header formats by examining
the first byte:</t>

<t><list style="symbols">
  <t>If the first byte is alert(21), handshake(22), or ack(proposed, 26),
the record MUST be interpreted as a DTLSPlaintext record.</t>
  <t>If the first byte is any other value, then receivers
MUST check to see if the leading bits of the first byte are
001. If so, the implementation MUST process the record as
DTLSCiphertext; the true content type will be inside the
protected portion.</t>
  <t>Otherwise, the record MUST be rejected as if it had failed
deprotection, as described in <xref target="handling-invalid-records"/>.</t>
</list></t>

</section>
<section anchor="sequence-number-and-epoch" title="Sequence Number and Epoch">

<t>DTLS uses an explicit or partly explicit sequence number, rather than an implicit one,
carried in the sequence_number field of the record.  Sequence numbers
are maintained separately for each epoch, with each sequence_number
initially being 0 for each epoch.</t>

<t>The epoch number is initially zero and is incremented each time
keying material changes and a sender aims to rekey. More details
are provided in <xref target="dtls-epoch"/>.</t>

<section anchor="processing-guidelines" title="Processing Guidelines">

<t>Because DTLS records could be reordered, a record from epoch
M may be received after epoch N (where N &gt; M) has begun.  In general,
implementations SHOULD discard records from earlier epochs, but if
packet loss causes noticeable problems implementations MAY choose to
retain keying material from previous epochs for up to the default MSL
specified for TCP <xref target="RFC0793"/> to allow for packet reordering.  (Note that
the intention here is that implementers use the current guidance from
the IETF for MSL, as specified in <xref target="RFC0793"/> or successors
not that they attempt to interrogate the MSL that
the system TCP stack is using.)</t>

<t>Conversely, it is possible for records that are protected with the
new epoch to be received prior to the completion of a
handshake.  For instance, the server may send its Finished message
and then start transmitting data.  Implementations MAY either buffer
or discard such records, though when DTLS is used over reliable
transports (e.g., SCTP <xref target="RFC4960"/>), they SHOULD be buffered and
processed once the handshake completes.  Note that TLS’s restrictions
on when records may be sent still apply, and the receiver treats the
records as if they were sent in the right order.</t>

<t>Implementations MUST send retransmissions of lost messages using the same
epoch and keying material as the original transmission.</t>

<t>Implementations MUST either abandon an association or re-key prior to
allowing the sequence number to wrap.</t>

<t>Implementations MUST NOT allow the epoch to wrap, but instead MUST
establish a new association, terminating the old association.</t>

</section>
<section anchor="reconstructing" title="Reconstructing the Sequence Number and Epoch">

<t>When receiving protected DTLS records message, the recipient does not
have a full epoch or sequence number value and so there is some
opportunity for ambiguity.  Because the full epoch and sequence number
are used to compute the per-record nonce, failure to reconstruct these
values leads to failure to deprotect the record, and so implementations
MAY use a mechanism of their choice to determine the full values.
This section provides an algorithm which is comparatively simple
and which implementations are RECOMMENDED to follow.</t>

<t>If the epoch bits match those of the current epoch, then
implementations SHOULD reconstruct the sequence number by computing
the full sequence number which is numerically closest to one plus the
sequence number of the highest successfully deprotected record.</t>

<t>During the handshake phase, the epoch bits unambiguously indicate the
correct key to use. After the
handshake is complete, if the epoch bits do not match those from the
current epoch implementations SHOULD use the most recent past epoch
which has matching bits, and then reconstruct the sequence number as
described above.</t>

</section>
<section anchor="sne" title="Sequence Number Encryption">

<t>In DTLS 1.3, when records are encrypted, record sequence numbers are
also encrypted. The basic pattern is that the underlying encryption
algorithm used with the AEAD algorithm is used to generate a mask
which is then XORed with the sequence number.</t>

<t>When the AEAD is based on AES, then the Mask is generated by
computing AES-ECB on the first 16 bytes of the ciphertext:</t>

<figure><artwork><![CDATA[
  Mask = AES-ECB(sn_key, Ciphertext[0..15])
]]></artwork></figure>

<t>When the AEAD is based on ChaCha20, then the mask is generated
by treating the first 4 bytes of the ciphertext as the block
counter and the next 12 bytes as the nonce, passing them to the ChaCha20
block function (Section 2.3 of <xref target="CHACHA"/>):</t>

<figure><artwork><![CDATA[
  Mask = ChaCha20(sn_key, Ciphertext[0..3], Ciphertext[4..15])
]]></artwork></figure>

<t>The sn_key is computed as follows:</t>

<figure><artwork><![CDATA[
   [sender]_sn_key  = HKDF-Expand-Label(Secret, "sn" , "", key_length)
]]></artwork></figure>

<t>[sender] denotes the sending side. The Secret value to be used is described
in Section 7.3 of <xref target="TLS13"/>.</t>

<t>The encrypted sequence number is computed by XORing the leading
bytes of the Mask with the sequence number. Decryption is
accomplished by the same process.</t>

<t>This procedure requires the ciphertext length be at least 16 bytes. Receivers
MUST reject shorter records as if they had failed deprotection, as described in
<xref target="handling-invalid-records"/>. Senders MUST pad short plaintexts out (using the
conventional record padding mechanism) in order to make a suitable-length
ciphertext. Note most of the DTLS AEAD algorithms have a 16-byte authentication
tag and need no padding. However, some algorithms such as
TLS_AES_128_CCM_8_SHA256 have a shorter authentication tag and may require padding
for short inputs.</t>

<t>Note that sequence number encryption is only applied to the DTLSCiphertext
structure and not to the DTLSPlaintext structure, which also contains a
sequence number.</t>

</section>
</section>
<section anchor="transport-layer-mapping" title="Transport Layer Mapping">

<t>DTLS messages MAY be fragmented into multiple DTLS records.
Each DTLS record MUST fit within a single datagram.  In order to
avoid IP fragmentation, clients of the DTLS record layer SHOULD
attempt to size records so that they fit within any PMTU estimates
obtained from the record layer.</t>

<t>Multiple DTLS records MAY be placed in a single datagram.  Records are encoded
consecutively.  The length field from DTLS records containing that field can be
used to determine the boundaries between records.  The final record in a
datagram can omit the length field.  The first byte of the datagram payload MUST
be the beginning of a record.  Records MUST NOT span datagrams.</t>

<t>DTLS records without CIDs do not contain any association
identifiers and applications must arrange to multiplex between associations.
With UDP, the host/port number is used to look up the appropriate security
association for incoming records.</t>

<t>Some transports, such as DCCP <xref target="RFC4340"/>, provide their own sequence
numbers.  When carried over those transports, both the DTLS and the
transport sequence numbers will be present.  Although this introduces
a small amount of inefficiency, the transport layer and DTLS sequence
numbers serve different purposes; therefore, for conceptual simplicity,
it is superior to use both sequence numbers.</t>

<t>Some transports provide congestion control for traffic
carried over them.  If the congestion window is sufficiently narrow,
DTLS handshake retransmissions may be held rather than transmitted
immediately, potentially leading to timeouts and spurious
retransmission.  When DTLS is used over such transports, care should
be taken not to overrun the likely congestion window. <xref target="RFC5238"/>
defines a mapping of DTLS to DCCP that takes these issues into account.</t>

</section>
<section anchor="pmtu-issues" title="PMTU Issues">

<t>In general, DTLS’s philosophy is to leave PMTU discovery to the application.
However, DTLS cannot completely ignore PMTU for three reasons:</t>

<t><list style="symbols">
  <t>The DTLS record framing expands the datagram size, thus lowering
the effective PMTU from the application’s perspective.</t>
  <t>In some implementations, the application may not directly talk to
the network, in which case the DTLS stack may absorb ICMP
<xref target="RFC1191"/> “Datagram Too Big” indications or ICMPv6 <xref target="RFC4443"/>
“Packet Too Big” indications.</t>
  <t>The DTLS handshake messages can exceed the PMTU.</t>
</list></t>

<t>In order to deal with the first two issues, the DTLS record layer
SHOULD behave as described below.</t>

<t>If PMTU estimates are available from the underlying transport
protocol, they should be made available to upper layer
protocols. In particular:</t>

<t><list style="symbols">
  <t>For DTLS over UDP, the upper layer protocol SHOULD be allowed to
obtain the PMTU estimate maintained in the IP layer.</t>
  <t>For DTLS over DCCP, the upper layer protocol SHOULD be allowed to
obtain the current estimate of the PMTU.</t>
  <t>For DTLS over TCP or SCTP, which automatically fragment and
reassemble datagrams, there is no PMTU limitation.  However, the
upper layer protocol MUST NOT write any record that exceeds the
maximum record size of 2^14 bytes.</t>
</list></t>

<t>Note that DTLS does not defend against spoofed ICMP messages;
implementations SHOULD ignore any such messages that indicate
PMTUs below the IPv4 and IPv6 minimums of 576 and 1280 bytes
respectively</t>

<t>The DTLS record layer SHOULD allow the upper layer protocol to
discover the amount of record expansion expected by the DTLS
processing.</t>

<t>If there is a transport protocol indication (either via ICMP or via a
refusal to send the datagram as in Section 14 of <xref target="RFC4340"/>), then the
DTLS record layer MUST inform the upper layer protocol of the error.</t>

<t>The DTLS record layer SHOULD NOT interfere with upper layer protocols
performing PMTU discovery, whether via <xref target="RFC1191"/> or <xref target="RFC4821"/>
mechanisms.  In particular:</t>

<t><list style="symbols">
  <t>Where allowed by the underlying transport protocol, the upper
layer protocol SHOULD be allowed to set the state of the DF bit
(in IPv4) or prohibit local fragmentation (in IPv6).</t>
  <t>If the underlying transport protocol allows the application to
request PMTU probing (e.g., DCCP), the DTLS record layer SHOULD
honor this request.</t>
</list></t>

<t>The final issue is the DTLS handshake protocol.  From the perspective
of the DTLS record layer, this is merely another upper layer
protocol.  However, DTLS handshakes occur infrequently and involve
only a few round trips; therefore, the handshake protocol PMTU
handling places a premium on rapid completion over accurate PMTU
discovery.  In order to allow connections under these circumstances,
DTLS implementations SHOULD follow the following rules:</t>

<t><list style="symbols">
  <t>If the DTLS record layer informs the DTLS handshake layer that a
message is too big, it SHOULD immediately attempt to fragment it,
using any existing information about the PMTU.</t>
  <t>If repeated retransmissions do not result in a response, and the
PMTU is unknown, subsequent retransmissions SHOULD back off to a
smaller record size, fragmenting the handshake message as
appropriate.  This standard does not specify an exact number of
retransmits to attempt before backing off, but 2-3 seems
appropriate.</t>
</list></t>

</section>
<section anchor="record-payload-protection" title="Record Payload Protection">

<t>Like TLS, DTLS transmits data as a series of protected records.  The
rest of this section describes the details of that format.</t>

<section anchor="anti-replay" title="Anti-Replay">

<t>Each DTLS record contains a sequence number to provide replay protection.
Sequence number verification SHOULD be performed using the following
sliding window procedure, borrowed from Section 3.4.3 of <xref target="RFC4303"/>.</t>

<t>The received record counter for a session MUST be initialized to
zero when that session is established. For each received record, the
receiver MUST verify that the record contains a sequence number that
does not duplicate the sequence number of any other record received
during the lifetime of the session. This check SHOULD happen after
deprotecting the record; otherwise the record discard might itself
serve as a timing channel for the record number. Note that decompressing
the records number is still a potential timing channel for the record
number, though a less powerful one than whether it was deprotected.</t>

<t>Duplicates are rejected through the use of a sliding receive window.
(How the window is implemented is a local matter, but the following
text describes the functionality that the implementation must
exhibit.) The receiver SHOULD pick a window large enough to handle
any plausible reordering, which depends on the data rate.
(The receiver does not notify the sender of the window
size.)</t>

<t>The “right” edge of the window represents the highest validated
sequence number value received on the session.  Records that contain
sequence numbers lower than the “left” edge of the window are
rejected.  Records falling within the window are checked against a
list of received records within the window.  An efficient means for
performing this check, based on the use of a bit mask, is described in
Section 3.4.3 of <xref target="RFC4303"/>. If the received record falls within the
window and is new, or if the record is to the right of the window,
then the record is new.</t>

<t>The window MUST NOT be updated until the record has been deprotected
successfully.</t>

</section>
<section anchor="handling-invalid-records" title="Handling Invalid Records">

<t>Unlike TLS, DTLS is resilient in the face of invalid records (e.g.,
invalid formatting, length, MAC, etc.).  In general, invalid records
SHOULD be silently discarded, thus preserving the association;
however, an error MAY be logged for diagnostic purposes.
Implementations which choose to generate an alert instead, MUST
generate error alerts to avoid attacks where the attacker
repeatedly probes the implementation to see how it responds to
various types of error.  Note that if DTLS is run over UDP, then any
implementation which does this will be extremely susceptible to
denial-of-service (DoS) attacks because UDP forgery is so easy.
Thus, this practice is NOT RECOMMENDED for such transports, both
to increase the reliability of DTLS service and to avoid the risk
of spoofing attacks sending traffic to unrelated third parties.</t>

<t>If DTLS is being carried over a transport that is resistant to
forgery (e.g., SCTP with SCTP-AUTH), then it is safer to send alerts
because an attacker will have difficulty forging a datagram that will
not be rejected by the transport layer.</t>

</section>
<section anchor="aead-limits" title="AEAD Limits">

<t>Section 5.5 of TLS <xref target="TLS13"/> defines limits on the number of records that can
be protected using the same keys. These limits are specific to an AEAD
algorithm, and apply equally to DTLS. Implementations SHOULD NOT protect more
records than allowed by the limit specified for the negotiated AEAD.
Implementations SHOULD initiate a key update before reaching this limit.</t>

<t><xref target="TLS13"/> does not specify a limit for AEAD_AES_128_CCM, but the analysis in
<xref target="ccm-bounds"/> shows that a limit of 2^23 packets can be used to obtain the
same confidentiality protection as the limits specified in TLS.</t>

<t>The usage limits defined in TLS 1.3 exist for protection against attacks
on confidentiality and apply to successful applications of AEAD protection. The
integrity protections in authenticated encryption also depend on limiting the
number of attempts to forge packets. TLS achieves this by closing connections
after any record fails an authentication check. In comparison, DTLS ignores any
packet that cannot be authenticated, allowing multiple forgery attempts.</t>

<t>Implementations MUST count the number of received packets that fail
authentication with each key. If the number of packets that fail authentication
exceed a limit that is specific to the AEAD in use, an implementation SHOULD
immediately close the connection. Implementations SHOULD initiate a key update
with update_requested before reaching this limit. Once a key update has been
initiated, the previous keys can be dropped when the limit is reached rather
than closing the connection. Applying a limit reduces the probability that an
attacker is able to successfully forge a packet; see <xref target="AEBounds"/> and
<xref target="ROBUST"/>.</t>

<t>For AEAD_AES_128_GCM, AEAD_AES_256_GCM, and AEAD_CHACHA20_POLY1305, the limit
on the number of records that fail authentication is 2^36. Note that the
analysis in <xref target="AEBounds"/> supports a higher limit for the AEAD_AES_128_GCM and
AEAD_AES_256_GCM, but this specification recommends a lower limit. For
AEAD_AES_128_CCM, the limit on the number of records that fail authentication
is 2^23.5; see <xref target="ccm-bounds"/>.</t>

<t>The AEAD_AES_128_CCM_8 AEAD, as used in TLS_AES_128_CCM_SHA256, does not have a
limit on the number of records that fail authentication that both limits the
probability of forgery by the same amount and does not expose implementations
to the risk of denial of service; see <xref target="ccm-short"/>. Therefore,
TLS_AES_128_CCM_SHA256 MUST NOT used in DTLS without additional safeguards
against forgery. Implementations MUST set usage limits for AEAD_AES_128_CCM_8
based on an understanding of any additional forgery protections that are used.</t>

<t>Any TLS cipher suite that is specified for use with DTLS MUST define limits on
the use of the associated AEAD function that preserves margins for both
confidentiality and integrity. That is, limits MUST be specified for the number
of packets that can be authenticated and for the number packets that can fail
authentication. Providing a reference to any analysis upon which values are
based - and any assumptions used in that analysis - allows limits to be adapted
to varying usage conditions.</t>

</section>
</section>
</section>
<section anchor="dtls" title="The DTLS Handshake Protocol">

<t>DTLS 1.3 re-uses the TLS 1.3 handshake messages and flows, with
the following changes:</t>

<t><list style="numbers">
  <t>To handle message loss, reordering, and fragmentation modifications to
the handshake header are necessary.</t>
  <t>Retransmission timers are introduced to handle message loss.</t>
  <t>A new ACK content type has been added for reliable message delivery of handshake messages.</t>
</list></t>

<t>Note that TLS 1.3 already supports a cookie extension, which is used to
prevent denial-of-service attacks. This DoS prevention mechanism is
described in more detail below since UDP-based protocols are more vulnerable
to amplification attacks than a connection-oriented transport like TCP
that performs return-routability checks as part of the connection establishment.</t>

<t>DTLS implementations do not use the TLS 1.3 “compatibility mode” described in
Section D.4 of <xref target="TLS13"/>.  DTLS servers MUST NOT echo the
“session_id” value from the client and endpoints MUST NOT send ChangeCipherSpec
messages.</t>

<t>With these exceptions, the DTLS message formats, flows, and logic are
the same as those of TLS 1.3.</t>

<section anchor="dos" title="Denial-of-Service Countermeasures">

<t>Datagram security protocols are extremely susceptible to a variety of
DoS attacks.  Two attacks are of particular concern:</t>

<t><list style="numbers">
  <t>An attacker can consume excessive resources on the server by
transmitting a series of handshake initiation requests, causing
the server to allocate state and potentially to perform
expensive cryptographic operations.</t>
  <t>An attacker can use the server as an amplifier by sending
connection initiation messages with a forged source of the
victim.  The server then sends its response to the victim
machine, thus flooding it. Depending on the selected
parameters this response message can be quite large, as it
is the case for a Certificate message.</t>
</list></t>

<t>In order to counter both of these attacks, DTLS borrows the stateless
cookie technique used by Photuris <xref target="RFC2522"/> and IKE <xref target="RFC7296"/>.  When
the client sends its ClientHello message to the server, the server
MAY respond with a HelloRetryRequest message. The HelloRetryRequest message,
as well as the cookie extension, is defined in TLS 1.3.
The HelloRetryRequest message contains a stateless cookie generated using
the technique of <xref target="RFC2522"/>. The client MUST retransmit the ClientHello
with the cookie added as an extension.  The server then verifies the cookie
and proceeds with the handshake only if it is valid.  This mechanism forces
the attacker/client to be able to receive the cookie, which makes DoS attacks
with spoofed IP addresses difficult.  This mechanism does not provide any defense
against DoS attacks mounted from valid IP addresses.</t>

<t>The DTLS 1.3 specification changes how cookies are exchanged
compared to DTLS 1.2. DTLS 1.3 re-uses the HelloRetryRequest message
and conveys the cookie to the client via an extension. The client
receiving the cookie uses the same extension to place
the cookie subsequently into a ClientHello message.
DTLS 1.2 on the other hand used a separate message, namely the HelloVerifyRequest,
to pass a cookie to the client and did not utilize the extension mechanism.
For backwards compatibility reasons, the cookie field in the ClientHello
is present in DTLS 1.3 but is ignored by a DTLS 1.3 compliant server
implementation.</t>

<t>The exchange is shown in <xref target="dtls-cookie-exchange"/>. Note that
the figure focuses on the cookie exchange; all other extensions
are omitted.</t>

<figure title="DTLS exchange with HelloRetryRequest containing the &quot;cookie&quot; extension" anchor="dtls-cookie-exchange"><artwork><![CDATA[
      Client                                   Server
      ------                                   ------
      ClientHello           ------>

                            <----- HelloRetryRequest
                                    + cookie

      ClientHello           ------>
       + cookie

      [Rest of handshake]
]]></artwork></figure>

<t>The cookie extension is defined in Section 4.2.2 of <xref target="TLS13"/>. When sending the
initial ClientHello, the client does not have a cookie yet. In this case,
the cookie extension is omitted and the legacy_cookie field in the ClientHello
message MUST be set to a zero length vector (i.e., a single zero byte length field).</t>

<t>When responding to a HelloRetryRequest, the client MUST create a new
ClientHello message following the description in Section 4.1.2 of <xref target="TLS13"/>.</t>

<t>If the HelloRetryRequest message is used, the initial ClientHello and
the HelloRetryRequest are included in the calculation of the
transcript hash. The computation of the
message hash for the HelloRetryRequest is done according to the description
in Section 4.4.1 of <xref target="TLS13"/>.</t>

<t>The handshake transcript is not reset with the second ClientHello
and a stateless server-cookie implementation requires the transcript
of the HelloRetryRequest to be stored in the cookie or the internal state
of the hash algorithm, since only the hash of the transcript is required
for the handshake to complete.</t>

<t>When the second ClientHello is received, the server can verify that
the cookie is valid and that the client can receive packets at the
given IP address. If the client’s apparent IP address is embedded
in the cookie, this prevents an attacker from generating an acceptable
ClientHello apparently from another user.</t>

<t>One potential attack on this scheme is for the attacker to collect a
number of cookies from different addresses where it controls endpoints
and then reuse them to attack the server.
The server can defend against this attack by
changing the secret value frequently, thus invalidating those
cookies. If the server wishes to allow legitimate clients to
handshake through the transition (e.g., a client received a cookie with
Secret 1 and then sent the second ClientHello after the server has
changed to Secret 2), the server can have a limited window during
which it accepts both secrets.  <xref target="RFC7296"/> suggests adding a key
identifier to cookies to detect this case. An alternative approach is
simply to try verifying with both secrets. It is RECOMMENDED that
servers implement a key rotation scheme that allows the server
to manage keys with overlapping lifetime.</t>

<t>Alternatively, the server can store timestamps in the cookie and
reject cookies that were generated outside a certain
interval of time.</t>

<t>DTLS servers SHOULD perform a cookie exchange whenever a new
handshake is being performed.  If the server is being operated in an
environment where amplification is not a problem, the server MAY be
configured not to perform a cookie exchange.  The default SHOULD be
that the exchange is performed, however.  In addition, the server MAY
choose not to do a cookie exchange when a session is resumed or, more
generically, when the DTLS handshake uses a PSK-based key exchange.
Clients MUST be prepared to do a cookie exchange with every
handshake.</t>

<t>If a server receives a ClientHello with an invalid cookie, it
MUST NOT terminate the handshake with an “illegal_parameter” alert.
This allows the client to restart the connection from
scratch without a cookie.</t>

<t>As described in Section 4.1.4 of <xref target="TLS13"/>, clients MUST
abort the handshake with an “unexpected_message” alert in response
to any second HelloRetryRequest which was sent in the same connection
(i.e., where the ClientHello was itself in response to a HelloRetryRequest).</t>

</section>
<section anchor="dtls-handshake-message-format" title="DTLS Handshake Message Format">

<t>In order to support message loss, reordering, and message
fragmentation, DTLS modifies the TLS 1.3 handshake header:</t>

<figure><artwork><![CDATA[
    enum {
        hello_request_RESERVED(0),
        client_hello(1),
        server_hello(2),
        hello_verify_request_RESERVED(3),
        new_session_ticket(4),
        end_of_early_data(5),
        hello_retry_request_RESERVED(6),
        encrypted_extensions(8),
        certificate(11),
        server_key_exchange_RESERVED(12),
        certificate_request(13),
        server_hello_done_RESERVED(14),
        certificate_verify(15),
        client_key_exchange_RESERVED(16),
        finished(20),
        key_update(24),
        message_hash(254),
        (255)
    } HandshakeType;

    struct {
        HandshakeType msg_type;    /* handshake type */
        uint24 length;             /* bytes in message */
        uint16 message_seq;        /* DTLS-required field */
        uint24 fragment_offset;    /* DTLS-required field */
        uint24 fragment_length;    /* DTLS-required field */
        select (HandshakeType) {
            case client_hello:          ClientHello;
            case server_hello:          ServerHello;
            case end_of_early_data:     EndOfEarlyData;
            case encrypted_extensions:  EncryptedExtensions;
            case certificate_request:   CertificateRequest;
            case certificate:           Certificate;
            case certificate_verify:    CertificateVerify;
            case finished:              Finished;
            case new_session_ticket:    NewSessionTicket;
            case key_update:            KeyUpdate;
        } body;
    } Handshake;
]]></artwork></figure>

<t>The first message each side transmits in each association always has
message_seq = 0.  Whenever a new message is generated, the
message_seq value is incremented by one. When a message is
retransmitted, the old message_seq value is re-used, i.e., not
incremented. From the perspective of the DTLS record layer, the retransmission is
a new record.  This record will have a new
DTLSPlaintext.sequence_number value.</t>

<t>Note: In DTLS 1.2 the message_seq was reset to zero in case of a
rehandshake (i.e., renegotiation). On the surface, a rehandshake in DTLS 1.2
shares similarities with a post-handshake message exchange in DTLS 1.3. However,
in DTLS 1.3 the message_seq is not reset to allow distinguishing a
retransmission from a previously sent post-handshake message from a newly
sent post-handshake message.</t>

<t>DTLS implementations maintain (at least notionally) a
next_receive_seq counter.  This counter is initially set to zero.
When a handshake message is received, if its message_seq value matches
next_receive_seq, next_receive_seq is incremented and the message is
processed.  If the sequence number is less than next_receive_seq, the
message MUST be discarded.  If the sequence number is greater than
next_receive_seq, the implementation SHOULD queue the message but MAY
discard it.  (This is a simple space/bandwidth tradeoff).</t>

<t>In addition to the handshake messages that are deprecated by the TLS 1.3
specification, DTLS 1.3 furthermore deprecates the HelloVerifyRequest message
originally defined in DTLS 1.0. DTLS 1.3-compliant implements MUST NOT
use the HelloVerifyRequest to execute a return-routability check. A
dual-stack DTLS 1.2/DTLS 1.3 client MUST, however, be prepared to
interact with a DTLS 1.2 server.</t>

</section>
<section anchor="clienthello-message" title="ClientHello Message">

<t>The format of the ClientHello used by a DTLS 1.3 client differs from the
TLS 1.3 ClientHello format as shown below.</t>

<figure><artwork><![CDATA[
    uint16 ProtocolVersion;
    opaque Random[32];

    uint8 CipherSuite[2];    /* Cryptographic suite selector */

    struct {
        ProtocolVersion legacy_version = { 254,253 }; // DTLSv1.2
        Random random;
        opaque legacy_session_id<0..32>;
        opaque legacy_cookie<0..2^8-1>;                  // DTLS
        CipherSuite cipher_suites<2..2^16-2>;
        opaque legacy_compression_methods<1..2^8-1>;
        Extension extensions<8..2^16-1>;
    } ClientHello;
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='legacy_version:'>
  In previous versions of DTLS, this field was used for version
negotiation and represented the highest version number supported by
the client. Experience has shown that many servers do not properly
implement version negotiation, leading to “version intolerance” in
which the server rejects an otherwise acceptable ClientHello with a
version number higher than it supports. In DTLS 1.3, the client
indicates its version preferences in the “supported_versions”
extension (see Section 4.2.1 of <xref target="TLS13"/>) and the
legacy_version field MUST be set to {254, 253}, which was the version
number for DTLS 1.2. The version fields for DTLS 1.0 and DTLS 1.2 are
0xfeff and 0xfefd (to match the wire versions) but the version field
for DTLS 1.3 is 0x0304.</t>
  <t hangText='random:'>
  Same as for TLS 1.3.</t>
  <t hangText='legacy_session_id:'>
  Same as for TLS 1.3.</t>
  <t hangText='legacy_cookie:'>
  A DTLS 1.3-only client MUST set the legacy_cookie field to zero length.
If a DTLS 1.3 ClientHello is received with any other value in this field,
the server MUST abort the handshake with an “illegal_parameter” alert.</t>
  <t hangText='cipher_suites:'>
  Same as for TLS 1.3.</t>
  <t hangText='legacy_compression_methods:'>
  Same as for TLS 1.3.</t>
  <t hangText='extensions:'>
  Same as for TLS 1.3.</t>
</list></t>

</section>
<section anchor="handshake-message-fragmentation-and-reassembly" title="Handshake Message Fragmentation and Reassembly">

<t>Each DTLS message MUST fit within a single
transport layer datagram.  However, handshake messages are
potentially bigger than the maximum record size.  Therefore, DTLS
provides a mechanism for fragmenting a handshake message over a
number of records, each of which can be transmitted separately, thus
avoiding IP fragmentation.</t>

<t>When transmitting the handshake message, the sender divides the
message into a series of N contiguous data ranges. The ranges MUST NOT
overlap.  The sender then creates N handshake messages, all with the
same message_seq value as the original handshake message.  Each new
message is labeled with the fragment_offset (the number of bytes
contained in previous fragments) and the fragment_length (the length
of this fragment).  The length field in all messages is the same as
the length field of the original message.  An unfragmented message is
a degenerate case with fragment_offset=0 and fragment_length=length.
Each range MUST be delivered in a single UDP datagram.</t>

<t>When a DTLS implementation receives a handshake message fragment, it
MUST buffer it until it has the entire handshake message.  DTLS
implementations MUST be able to handle overlapping fragment ranges.
This allows senders to retransmit handshake messages with smaller
fragment sizes if the PMTU estimate changes.</t>

<t>Note that as with TLS, multiple handshake messages may be placed in
the same DTLS record, provided that there is room and that they are
part of the same flight.  Thus, there are two acceptable ways to pack
two DTLS messages into the same datagram: in the same record or in
separate records.</t>

</section>
<section anchor="end-of-early-data" title="End Of Early Data">

<t>The DTLS 1.3 handshake has one important difference from the
TLS 1.3 handshake: the EndOfEarlyData message is omitted both
from the wire and the handshake transcript: because DTLS
records have epochs, EndOfEarlyData is not necessary to determine
when the early data is complete, and because DTLS is lossy,
attackers can trivially mount the deletion attacks that EndOfEarlyData
prevents in TLS. Servers SHOULD aggressively
age out the epoch 1 keys upon receiving the first epoch 2 record
and SHOULD NOT accept epoch 1 data after the first epoch 3 record
is received. (See <xref target="dtls-epoch"/> for the definitions of each epoch.)</t>

</section>
<section anchor="dtls-handshake-flights" title="DTLS Handshake Flights">

<t>DTLS messages are grouped into a series of message flights, according
to the diagrams below.</t>

<figure title="Message flights for a full DTLS Handshake (with cookie exchange)" anchor="dtls-full"><artwork><![CDATA[
Client                                             Server

ClientHello                                                 +----------+
 + key_share*                                               | Flight 1 |
 + pre_shared_key*      -------->                           +----------+

                                                            +----------+
                        <--------        HelloRetryRequest  | Flight 2 |
                                          + cookie          +----------+


ClientHello                                                 +----------+
 + key_share*                                               | Flight 3 |
 + pre_shared_key*      -------->                           +----------+
 + cookie

                                               ServerHello
                                              + key_share*
                                         + pre_shared_key*  +----------+
                                     {EncryptedExtensions}  | Flight 4 |
                                     {CertificateRequest*}  +----------+
                                            {Certificate*}
                                      {CertificateVerify*}
                        <--------               {Finished}
                                       [Application Data*]


 {Certificate*}                                             +----------+
 {CertificateVerify*}                                       | Flight 5 |
 {Finished}             -------->                           +----------+
 [Application Data]

                                                            +----------+
                        <--------                    [ACK]  | Flight 6 |
                                       [Application Data*]  +----------+

 [Application Data]     <------->      [Application Data]
]]></artwork></figure>

<figure title="Message flights for resumption and PSK handshake (without cookie exchange)" anchor="dtls-psk"><artwork><![CDATA[
 ClientHello                                              +----------+
  + pre_shared_key                                        | Flight 1 |
  + key_share*         -------->                          +----------+


                                             ServerHello
                                        + pre_shared_key  +----------+
                                            + key_share*  | Flight 2 |
                                   {EncryptedExtensions}  +----------+
                       <--------              {Finished}
                                     [Application Data*]
                                                          +----------+
 {Finished}            -------->                          | Flight 3 |
 [Application Data*]                                      +----------+

                                                          +----------+
                       <--------                   [ACK]  | Flight 4 |
                                     [Application Data*]  +----------+

 [Application Data]    <------->      [Application Data]
]]></artwork></figure>

<figure title="Message flights for the Zero-RTT handshake" anchor="dtls-zero-rtt"><artwork><![CDATA[
Client                                            Server

 ClientHello
  + early_data
  + psk_key_exchange_modes                                +----------+
  + key_share*                                            | Flight 1 |
  + pre_shared_key                                        +----------+
 (Application Data*)     -------->

                                             ServerHello
                                        + pre_shared_key
                                            + key_share*  +----------+
                                   {EncryptedExtensions}  | Flight 2 |
                                              {Finished}  +----------+
                       <--------     [Application Data*]


                                                          +----------+
 {Finished}            -------->                          | Flight 3 |
 [Application Data*]                                      +----------+

                                                          +----------+
                       <--------                   [ACK]  | Flight 4 |
                                     [Application Data*]  +----------+

 [Application Data]    <------->      [Application Data]
]]></artwork></figure>

<figure title="Message flights for the new session ticket message" anchor="dtls-post-handshake-ticket"><artwork><![CDATA[
Client                                            Server

                                                          +----------+
                       <--------       [NewSessionTicket] | Flight 1 |
                                                          +----------+

                                                          +----------+
[ACK]                  -------->                          | Flight 2 |
                                                          +----------+
]]></artwork></figure>

<t>Note: The application data sent by the client is not included in the
timeout and retransmission calculation.</t>

</section>
<section anchor="timeout-and-retransmission" title="Timeout and Retransmission">

<section anchor="state-machine" title="State Machine">

<t>DTLS uses a simple timeout and retransmission scheme with the
state machine shown in <xref target="dtls-timeout-state-machine"/>.
Because DTLS clients send the first message
(ClientHello), they start in the PREPARING state.  DTLS servers start
in the WAITING state, but with empty buffers and no retransmit timer.</t>

<figure title="DTLS timeout and retransmission state machine" anchor="dtls-timeout-state-machine"><artwork><![CDATA[
                             +-----------+
                             | PREPARING |
                +----------> |           |
                |            |           |
                |            +-----------+
                |                  |
                |                  | Buffer next flight
                |                  |
                |                 \|/
                |            +-----------+
                |            |           |
                |            |  SENDING  |<------------------+
                |            |           |                   |
                |            +-----------+                   |
        Receive |                  |                         |
           next |                  | Send flight or partial  |
         flight |                  | flight                  |
                |                  |                         |
                |                  | Set retransmit timer    |
                |                 \|/                        |
                |            +-----------+                   |
                |            |           |                   |
                +------------|  WAITING  |-------------------+
                |     +----->|           |   Timer expires   |
                |     |      +-----------+                   |
                |     |          |  |   |                    |
                |     |          |  |   |                    |
                |     +----------+  |   +--------------------+
                |    Receive record |   Read retransmit or ACK
        Receive |     Send ACK      |
           last |                   |
         flight |                   | Receive ACK
                |                   | for last flight
               \|/                  |
                                    |
            +-----------+           |
            |           | <---------+
            | FINISHED  |
            |           |
            +-----------+
                |  /|\
                |   |
                |   |
                +---+

          Server read retransmit
              Retransmit ACK
]]></artwork></figure>

<t>The state machine has four basic states: PREPARING, SENDING, WAITING,
and FINISHED.</t>

<t>In the PREPARING state, the implementation does whatever computations
are necessary to prepare the next flight of messages.  It then
buffers them up for transmission (emptying the buffer first) and
enters the SENDING state.</t>

<t>In the SENDING state, the implementation transmits the buffered
flight of messages. If the implementation has received one or more
ACKs (see <xref target="ack-msg"/>) from the peer, then it SHOULD omit any messages or
message fragments which have already been ACKed. Once the messages
have been sent, the implementation then sets a retransmit timer
and enters the WAITING state.</t>

<t>There are four ways to exit the WAITING state:</t>

<t><list style="numbers">
  <t>The retransmit timer expires: the implementation transitions to
the SENDING state, where it retransmits the flight, resets the
retransmit timer, and returns to the WAITING state.</t>
  <t>The implementation reads an ACK from the peer: upon receiving
an ACK for a partial flight (as mentioned in <xref target="sending-acks"/>),
the implementation transitions
to the SENDING state, where it retransmits the unacked portion
of the flight, resets the retransmit timer, and returns to the
WAITING state. Upon receiving an ACK for a complete flight,
the implementation cancels all retransmissions and either
remains in WAITING, or, if the ACK was for the final flight,
transitions to FINISHED.</t>
  <t>The implementation reads a retransmitted flight from the peer: the
implementation transitions to the SENDING state, where it
retransmits the flight, resets the retransmit timer, and returns
to the WAITING state.  The rationale here is that the receipt of a
duplicate message is the likely result of timer expiry on the peer
and therefore suggests that part of one’s previous flight was
lost.</t>
  <t>The implementation receives some or all next flight of messages: if
this is the final flight of messages, the implementation
transitions to FINISHED.  If the implementation needs to send a new
flight, it transitions to the PREPARING state. Partial reads
(whether partial messages or only some of the messages in the
flight) may also trigger the implementation to send an ACK, as
described in <xref target="sending-acks"/>.</t>
</list></t>

<t>Because DTLS clients send the first message (ClientHello), they start
in the PREPARING state.  DTLS servers start in the WAITING state, but
with empty buffers and no retransmit timer.</t>

<t>In addition, for at least twice the default MSL defined for <xref target="RFC0793"/>,
when in the FINISHED state, the server MUST respond to retransmission
of the client’s second flight with a retransmit of its ACK.</t>

<t>Note that because of packet loss, it is possible for one side to be
sending application data even though the other side has not received
the first side’s Finished message.  Implementations MUST either
discard or buffer all application data records for the new epoch
until they have received the Finished message for that epoch.
Implementations MAY treat receipt of application data with a new
epoch prior to receipt of the corresponding Finished message as
evidence of reordering or packet loss and retransmit their final
flight immediately, shortcutting the retransmission timer.</t>

</section>
<section anchor="timer-values" title="Timer Values">

<t>Though timer values are the choice of the implementation, mishandling
of the timer can lead to serious congestion problems; for example, if
many instances of a DTLS time out early and retransmit too quickly on
a congested link.  Implementations SHOULD use an initial timer value
of 100 msec (the minimum defined in RFC 6298 <xref target="RFC6298"/>) and double
the value at each retransmission, up to no less than the RFC 6298
maximum of 60 seconds. Application specific profiles, such as those
used for the Internet of Things environment, may recommend longer
timer values. Note that a 100 msec timer is recommended
rather than the 3-second RFC 6298 default in order to improve latency
for time-sensitive applications.  Because DTLS only uses
retransmission for handshake and not dataflow, the effect on
congestion should be minimal.</t>

<t>Implementations SHOULD retain the current timer value until a
transmission without loss occurs, at which time the value may be
reset to the initial value.  After a long period of idleness, no less
than 10 times the current timer value, implementations may reset the
timer to the initial value.</t>

</section>
<section anchor="state-machine-duplication" title="State machine duplication for post-handshake messages">

<t>DTLS 1.3 makes use of the following categories of post-handshake messages:</t>

<t><list style="numbers">
  <t>NewSessionTicket</t>
  <t>KeyUpdate</t>
  <t>NewConnectionId</t>
  <t>RequestConnectionId</t>
  <t>Post-handshake client authentication</t>
</list></t>

<t>Messages of each category can be sent independently, and reliability is established
via independent state machines each of which behaves as described in <xref target="state-machine"/>.
For example, if a server sends a NewSessionTicket and a CertificateRequest message,
two independent state machines will be created.</t>

<t>As explained in the corresponding sections, sending multiple instances of messages of
a given category without having completed earlier transmissions is allowed for some
categories, but not for others. Specifically, a server MAY send multiple NewSessionTicket
messages at once without awaiting ACKs for earlier NewSessionTicket first. Likewise, a
server MAY send multiple CertificateRequest messages at once without having completed
earlier client authentication requests before. In contrast, implementations MUST NOT
have send KeyUpdate, NewConnectionId or RequestConnectionId message if an earlier message
of the same type has not yet been acknowledged.</t>

<t>Note: Except for post-handshake client authentication, which involves handshake messages
in both directions, post-handshake messages are single-flight, and their respective state
machines on the sender side reduce to waiting for an ACK and retransmitting the original
message. In particular, note that a RequestConnectionId message does not force the receiver
to send a NewConnectionId message in reply, and both messages are therefore treated
independently.</t>

<t>Creating and correctly updating multiple state machines requires feedback from the handshake
logic to the state machine layer, indicating which message belongs to which state machine.
For example, if a server sends multiple CertificateRequest messages and receives a Certificate
message in response, the corresponding state machine can only be determined after inspecting the
certificate_request_context field. Similarly, a server sending a single CertificateRequest
and receiving a NewConnectionId message in response can only decide that the NewConnectionId
message should be treated through an independent state machine after inspecting the handshake
message type.</t>

</section>
</section>
<section anchor="certificateverify-and-finished-messages" title="CertificateVerify and Finished Messages">

<t>CertificateVerify and Finished messages have the same format as in
TLS 1.3.  Hash calculations include entire handshake messages, including
DTLS-specific fields: message_seq, fragment_offset, and
fragment_length.  However, in order to remove sensitivity to
handshake message fragmentation, the CertificateVerify and the Finished messages MUST be computed as
if each handshake message had been sent as a single fragment following
the algorithm described in Section 4.4.3 and Section 4.4.4 of <xref target="TLS13"/>, respectively.</t>

</section>
<section anchor="cryptographic-label-prefix" title="Cryptographic Label Prefix">

<t>Section 7.1 of <xref target="TLS13"/> specifies that HKDF-Expand-Label uses
a label prefix of “tls13 “. For DTLS 1.3, that label SHALL be
“dtls13”.  This ensures key separation between DTLS 1.3 and
TLS 1.3. Note that there is no trailing space; this is necessary
in order to keep the overall label size inside of one hash
iteration because “DTLS” is one letter longer than “TLS”.</t>

</section>
<section anchor="alert-messages" title="Alert Messages">

<t>Note that Alert messages are not retransmitted at all, even when they
occur in the context of a handshake.  However, a DTLS implementation
which would ordinarily issue an alert SHOULD generate a new alert
message if the offending record is received again (e.g., as a
retransmitted handshake message).  Implementations SHOULD detect when
a peer is persistently sending bad messages and terminate the local
connection state after such misbehavior is detected.</t>

</section>
<section anchor="establishing-new-associations-with-existing-parameters" title="Establishing New Associations with Existing Parameters">

<t>If a DTLS client-server pair is configured in such a way that
repeated connections happen on the same host/port quartet, then it is
possible that a client will silently abandon one connection and then
initiate another with the same parameters (e.g., after a reboot).
This will appear to the server as a new handshake with epoch=0.  In
cases where a server believes it has an existing association on a
given host/port quartet and it receives an epoch=0 ClientHello, it
SHOULD proceed with a new handshake but MUST NOT destroy the existing
association until the client has demonstrated reachability either by
completing a cookie exchange or by completing a complete handshake
including delivering a verifiable Finished message.  After a correct
Finished message is received, the server MUST abandon the previous
association to avoid confusion between two valid associations with
overlapping epochs.  The reachability requirement prevents
off-path/blind attackers from destroying associations merely by
sending forged ClientHellos.</t>

<t>Note: it is not always possible to distinguish which association
a given record is from. For instance, if the client performs
a handshake, abandons the connection, and then immediately starts
a new handshake, it may not be possible to tell which connection
a given protected record is for. In these cases, trial decryption
MAY be necessary, though implementations could use CIDs.</t>

</section>
</section>
<section anchor="example-of-handshake-with-timeout-and-retransmission" title="Example of Handshake with Timeout and Retransmission">

<t>The following is an example of a handshake with lost packets and
retransmissions.</t>

<figure title="Example DTLS exchange illustrating message loss" anchor="dtls-msg-loss"><artwork><![CDATA[
Client                                                Server
------                                                ------

 Record 0                  -------->
 ClientHello
 (message_seq=0)

                             X<-----                 Record 0
                             (lost)               ServerHello
                                              (message_seq=1)
                                          EncryptedExtensions
                                              (message_seq=2)
                                                  Certificate
                                              (message_seq=3)


                           <--------                 Record 1
                                            CertificateVerify
                                              (message_seq=4)
                                                     Finished
                                              (message_seq=5)

 Record 1                  -------->
 ACK []


                           <--------                 Record 2
                                                  ServerHello
                                              (message_seq=1)
                                          EncryptedExtensions
                                              (message_seq=2)
                                                  Certificate
                                              (message_seq=3)

 Record 2                  -------->
 Certificate
 (message_seq=1)
 CertificateVerify
 (message_seq=2)
 Finished
 (message_seq=3)

                           <--------               Record 3
                                                    ACK [2]

]]></artwork></figure>

<section anchor="dtls-epoch" title="Epoch Values and Rekeying">

<t>A recipient of a DTLS message needs to select the correct keying material
in order to process an incoming message. With the possibility of message
 loss and re-ordering, an identifier is needed to determine which cipher state
has been used to protect the record payload. The epoch value fulfills this
role in DTLS. In addition to the TLS 1.3-defined key derivation steps, see
Section 7 of <xref target="TLS13"/>, a sender may want to rekey at any time during
the lifetime of the connection. It therefore needs to indicate that it is
updating its sending cryptographic keys.</t>

<t>This version of DTLS assigns dedicated epoch values to messages in the
protocol exchange to allow identification of the correct cipher state:</t>

<t><list style="symbols">
  <t>epoch value (0) is used with unencrypted messages. There are
three unencrypted messages in DTLS, namely ClientHello, ServerHello,
and HelloRetryRequest.</t>
  <t>epoch value (1) is used for messages protected using keys derived
from client_early_traffic_secret. Note this epoch is skipped if
the client does not offer early data.</t>
  <t>epoch value (2) is used for messages protected using keys derived
from [sender]_handshake_traffic_secret. Messages transmitted during
the initial handshake, such as EncryptedExtensions,
CertificateRequest, Certificate, CertificateVerify, and Finished
belong to this category. Note, however, post-handshake are
protected under the appropriate application traffic key and are not included in this category.</t>
  <t>epoch value (3) is used for payloads protected using keys derived
from the initial [sender]_application_traffic_secret_0. This may include
handshake messages, such as post-handshake messages (e.g., a
NewSessionTicket message).</t>
  <t>epoch value (4 to 2^16-1) is used for payloads protected using keys from
the [sender]_application_traffic_secret_N (N&gt;0).</t>
</list></t>

<t>Using these reserved epoch values a receiver knows what cipher state
has been used to encrypt and integrity protect a
message. Implementations that receive a payload with an epoch value
for which no corresponding cipher state can be determined MUST
generate a “unexpected_message” alert. For example, if a client incorrectly
uses epoch value 5 when sending early application data in a 0-RTT
exchange. A server will not be able to compute the appropriate keys
and will therefore have to respond with an alert.</t>

<t>Note that epoch values do not wrap. If a DTLS implementation would
need to wrap the epoch value, it MUST terminate the connection.</t>

<t>The traffic key calculation is described in Section 7.3 of <xref target="TLS13"/>.</t>

<t><xref target="dtls-msg-epoch"/> illustrates the epoch values in an example DTLS handshake.</t>

<figure title="Example DTLS exchange with epoch information" anchor="dtls-msg-epoch"><artwork><![CDATA[
Client                                             Server
------                                             ------

 ClientHello
 (epoch=0)
                            -------->

                            <--------             ServerHello
                                          [HelloRetryRequest]
                                                    (epoch=0)

 ClientHello                -------->
 (epoch=0)

                            <--------             ServerHello
                                                    (epoch=0)
                                        {EncryptedExtensions}
                                                    (epoch=2)
                                                {Certificate}
                                                    (epoch=2)
                                          {CertificateVerify}
                                                    (epoch=2)
                                                   {Finished}
                                                    (epoch=2)

 {Certificate}              -------->
 (epoch=2)
 {CertificateVerify}
 (epoch=2)
 {Finished}
 (epoch=2)

                            <--------                   [ACK]
                                                    (epoch=3)

 [Application Data]         -------->
 (epoch=3)

                            <--------      [Application Data]
                                                    (epoch=3)

                         Some time later ...
                 (Post-Handshake Message Exchange)

                            <--------      [NewSessionTicket]
                                                    (epoch=3)

 [ACK]                      -------->
 (epoch=3)

                         Some time later ...
                           (Rekeying)

                            <--------      [Application Data]
                                                    (epoch=4)
 [Application Data]         -------->
 (epoch=4)
]]></artwork></figure>

</section>
</section>
<section anchor="ack-msg" title="ACK Message">

<t>The ACK message is used by an endpoint to indicate which handshake records
it has received and processed from the other side. ACK is not
a handshake message but is rather a separate content type,
with code point TBD (proposed, 25). This avoids having ACK being added
to the handshake transcript. Note that ACKs can still be
sent in the same UDP datagram as handshake records.</t>

<figure><artwork><![CDATA[
    struct {
        RecordNumber record_numbers<0..2^16-1>;
    } ACK;
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='record_numbers:'>
  a list of the records containing handshake messages in the current
flight which the endpoint has received and either processed or buffered,
in numerically increasing
order.</t>
</list></t>

<t>Implementations MUST NOT acknowledge records containing
handshake messages or fragments which have not been
processed or buffered. Otherwise, deadlock can ensue.
As an example, implementations MUST NOT send ACKs for
handshake messages which they discard because they are
not the next expected message.</t>

<t>During the handshake, ACKs only cover the current outstanding flight (this is
possible because DTLS is generally a lockstep protocol). Thus, an ACK
from the server would not cover both the ClientHello and the client’s
Certificate. Implementations can accomplish this by clearing their ACK
list upon receiving the start of the next flight.</t>

<t>After the handshake, ACKs SHOULD be sent once for each received
and processed handshake record (potentially subject to some delay) and MAY
cover more than one flight. This includes messages which are
discarded because a previous copy has been received.</t>

<t>During the handshake, ACK records MUST be sent with an epoch that is
equal to or higher than the record which is being acknowledged.
Note that some care is required when processing flights spanning
multiple epochs. For instance, if the client receives only the Server Hello
and Certificate and wishes to ACK them in a single record,
it must do so in epoch 2, as it is required to use an epoch
greater than or equal to 2 and cannot yet send with any greater
epoch. Implementations SHOULD simply use the highest
current sending epoch, which will generally be the highest available.
After the handshake, implementations MUST use the highest available
sending epoch.</t>

<section anchor="sending-acks" title="Sending ACKs">

<t>When an implementation detects a disruption in the receipt of the
current incoming flight, it SHOULD generate an ACK that covers the
messages from that flight which it has received and processed so far.
Implementations have some discretion about which events to treat
as signs of disruption, but it is RECOMMENDED that they generate
ACKs under two circumstances:</t>

<t><list style="symbols">
  <t>When they receive a message or fragment which is out of order,
either because it is not the next expected message or because
it is not the next piece of the current message.</t>
  <t>When they have received part of a flight and do not immediately
receive the rest of the flight (which may be in the same UDP
datagram). A reasonable approach here is to
set a timer for 1/4 the current retransmit timer value when
the first record in the flight is received and then send an
ACK when that timer expires.</t>
</list></t>

<t>In general, flights MUST be ACKed unless they are implicitly
acknowledged. In the present specification the following flights are implicitly acknowledged
by the receipt of the next flight, which generally immediately follows the flight,</t>

<t><list style="numbers">
  <t>Handshake flights other than the client’s final flight</t>
  <t>The server’s post-handshake CertificateRequest.</t>
</list></t>

<t>ACKs SHOULD NOT be sent for these flights unless generating
the responding flight takes significant time. In this case,
implementations MAY send explicit ACKs for the complete received
flight even though it will eventually also be implicitly acknowledged
through the responding flight. A notable example for this is
the case of post-handshake client authentication in constrained
environments, where generating the CertificateVerify message can
take considerable time on the client. All other flights MUST be ACKed.
Implementations MAY acknowledge the records corresponding to each transmission of
each flight or simply acknowledge the most recent one. In general,
implementations SHOULD ACK as many received packets as can fit
into the ACK record, as this provides the most complete information
and thus reduces the chance of spurious retransmission; if space
is limited, implementations SHOULD favor including records which
have not yet been acknowledged.</t>

<t>Note: While some post-handshake messages follow a request/response
pattern, this does not necessarily imply receipt.
For example, a KeyUpdate sent in response to a KeyUpdate with update_requested does
not implicitly acknowledge that message because the KeyUpdates might have
crossed in flight.</t>

<t>ACKs MUST NOT be sent for other records of any content type
other than handshake or for records which cannot be unprotected.</t>

<t>Note that in some cases it may be necessary to send an ACK which
does not contain any record numbers. For instance, a client
might receive an EncryptedExtensions message prior to receiving
a ServerHello. Because it cannot decrypt the EncryptedExtensions,
it cannot safely acknowledge it (as it might be damaged). If the client
does not send an ACK, the server will eventually retransmit
its first flight, but this might take far longer than the
actual round trip time between client and server. Having
the client send an empty ACK shortcuts this process.</t>

</section>
<section anchor="receiving-acks" title="Receiving ACKs">

<t>When an implementation receives an ACK, it SHOULD record that the
messages or message fragments sent in the records being
ACKed were received and omit them from any future
retransmissions. Upon receipt of an ACK that leaves it with
only some messages from a flight having been acknowledged
an implementation SHOULD retransmit the unacknowledged
messages or fragments. Note that this requires implementations to
track which messages appear in which records. Once all the messages in a flight have been
acknowledged, the implementation MUST cancel all retransmissions
of that flight.
Implementations MUST treat a record
as having been acknowledged if it appears in any ACK; this
prevents spurious retransmission in cases where a flight is
very large and the receiver is forced to elide acknowledgements
for records which have already been ACKed.
As noted above, the receipt of any record responding
to a given flight MUST be taken as an implicit acknowledgement for the entire
flight.</t>

</section>
<section anchor="design-rational" title="Design Rational">

<t>ACK messages are used in two circumstances, namely :</t>

<t><list style="symbols">
  <t>on sign of disruption, or lack of progress, and</t>
  <t>to indicate complete receipt of the last flight in a handshake.</t>
</list></t>

<t>In the first case the use of the ACK message is optional because
the peer will retransmit in any case and therefore the ACK just
allows for selective retransmission, as opposed to the whole
flight retransmission in previous versions of DTLS. For instance
in the flow shown in Figure 11 if the client does not send the ACK message when it
received and processed record 1 indicating loss of record 0,
the entire flight would be retransmitted. When DTLS 1.3 is used in deployments
with loss networks, such as low-power, long range radio networks as well as
low-power mesh networks, the use of ACKs is recommended.</t>

<t>The use of the ACK for the second case is mandatory for the proper functioning of the
protocol. For instance, the ACK message sent by the client in Figure 12,
acknowledges receipt and processing of record 2 (containing the NewSessionTicket
message) and if it is not sent the server will continue retransmission
of the NewSessionTicket indefinitely.</t>

</section>
</section>
<section anchor="key-updates" title="Key Updates">

<t>As with TLS 1.3, DTLS 1.3 implementations send a KeyUpdate message to
indicate that they are updating their sending keys.  As with other
handshake messages with no built-in response, KeyUpdates MUST be
acknowledged.  In order to facilitate epoch reconstruction
<xref target="reconstructing"/> implementations MUST NOT send with the new keys or
send a new KeyUpdate until the previous KeyUpdate has been
acknowledged (this avoids having too many epochs in active use).</t>

<t>Due to loss and/or re-ordering, DTLS 1.3 implementations
may receive a record with an older epoch than the
current one (the requirements above preclude receiving
a newer record). They SHOULD attempt to process those records
with that epoch (see <xref target="reconstructing"/> for information
on determining the correct epoch), but MAY opt to discard
such out-of-epoch records.</t>

<t>Due to the possibility of an ACK message for a KeyUpdate being lost and thereby
preventing the sender of the KeyUpdate from updating its keying material,
receivers MUST retain the pre-update keying material until receipt and successful
decryption of a message using the new keys.</t>

</section>
<section anchor="connection-id-updates" title="Connection ID Updates">

<t>If the client and server have negotiated the “connection_id”
extension <xref target="I-D.ietf-tls-dtls-connection-id"/>, either side
can send a new CID which it wishes the other side to use
in a NewConnectionId message.</t>

<figure><artwork><![CDATA[
    enum {
        cid_immediate(0), cid_spare(1), (255)
    } ConnectionIdUsage;

    opaque ConnectionId<0..2^8-1>;

    struct {
        ConnectionIds cids<0..2^16-1>;
        ConnectionIdUsage usage;
    } NewConnectionId;
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='cid'>
  Indicates the set of CIDs which the sender wishes the peer to use.</t>
  <t hangText='usage'>
  Indicates whether the new CIDs should be used immediately or are
spare.  If usage is set to “cid_immediate”, then one of the new CID
MUST be used immediately for all future records. If it is set to
“cid_spare”, then either existing or new CID MAY be used.</t>
</list></t>

<t>Endpoints SHOULD use receiver-provided CIDs in the order they were provided.
Endpoints MUST NOT have more than one NewConnectionId message outstanding.</t>

<t>If the client and server have negotiated the “connection_id” extension,
either side can request a new CID using the RequestConnectionId message.</t>

<figure><artwork><![CDATA[
    struct {
      uint8 num_cids;
    } RequestConnectionId;
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='num_cids'>
  The number of CIDs desired.</t>
</list></t>

<t>Endpoints SHOULD respond to RequestConnectionId by sending a
NewConnectionId with usage “cid_spare” containing num_cid CIDs soon as
possible.  Endpoints MUST NOT send a RequestConnectionId message
when an existing request is still unfulfilled; this implies that
endpoints needs to request new CIDs well in advance.  An endpoint MAY
ignore requests, which it considers excessive (though they MUST be
acknowledged as usual).</t>

<t>Endpoints MUST NOT send either of these messages if they did not negotiate a
CID. If an implementation receives these messages when CIDs
were not negotiated, it MUST abort the connection with an unexpected_message
alert.</t>

<section anchor="connection-id-example" title="Connection ID Example">

<t>Below is an example exchange for DTLS 1.3 using a single
CID in each direction.</t>

<t>Note: The connection_id extension is defined in
<xref target="I-D.ietf-tls-dtls-connection-id"/>, which is used
in ClientHello and ServerHello messages.</t>

<figure title="Example DTLS 1.3 Exchange with CIDs" anchor="dtls-example"><artwork><![CDATA[
Client                                             Server
------                                             ------

ClientHello
(connection_id=5)
                            -------->


                            <--------       HelloRetryRequest
                                                     (cookie)

ClientHello                 -------->
(connection_id=5)
  +cookie

                            <--------             ServerHello
                                          (connection_id=100)
                                          EncryptedExtensions
                                                      (cid=5)
                                                  Certificate
                                                      (cid=5)
                                            CertificateVerify
                                                      (cid=5)
                                                     Finished
                                                      (cid=5)

Certificate                -------->
(cid=100)
CertificateVerify
(cid=100)
Finished
(cid=100)
                           <--------                      Ack
                                                      (cid=5)

Application Data           ========>
(cid=100)
                           <========         Application Data
                                                      (cid=5)
]]></artwork></figure>

<t>If no CID is negotiated, then the receiver MUST reject any
records it receives that contain a CID.</t>

</section>
</section>
<section anchor="application-data-protocol" title="Application Data Protocol">

<t>Application data messages are carried by the record layer and are fragmented
and encrypted based on the current connection state. The messages
are treated as transparent data to the record layer.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>Security issues are discussed primarily in <xref target="TLS13"/>.</t>

<t>The primary additional security consideration raised by DTLS is that
of denial of service.  DTLS includes a cookie exchange designed to
protect against denial of service.  However, implementations that do
not use this cookie exchange are still vulnerable to DoS.  In
particular, DTLS servers that do not use the cookie exchange may be
used as attack amplifiers even if they themselves are not
experiencing DoS.  Therefore, DTLS servers SHOULD use the cookie
exchange unless there is good reason to believe that amplification is
not a threat in their environment.  Clients MUST be prepared to do a
cookie exchange with every handshake.</t>

<t>DTLS implementations MUST NOT update their sending address in response
to packets from a different address unless they first perform some
reachability test; no such test is defined in this specification. Even
with such a test, an on-path adversary can also black-hole traffic or
create a reflection attack against third parties because a DTLS peer
has no means to distinguish a genuine address update event (for
example, due to a NAT rebinding) from one that is malicious. This
attack is of concern when there is a large asymmetry of
request/response message sizes.</t>

<t>With the exception of order protection and non-replayability, the security
guarantees for DTLS 1.3 are the same as TLS 1.3. While TLS always provides
order protection and non-replayability, DTLS does not provide order protection
and may not provide replay protection.</t>

<t>Unlike TLS implementations, DTLS implementations SHOULD NOT respond
to invalid records by terminating the connection.</t>

<t>If implementations process out-of-epoch records as recommended in
<xref target="key-updates"/>, then this creates a denial of service risk since an adversary could
inject records with fake epoch values, forcing the recipient
to compute the next-generation application_traffic_secret using the
HKDF-Expand-Label construct to only find out that the message was
does not pass the AEAD cipher processing. The impact of this
attack is small since the HKDF-Expand-Label only performs symmetric
key hashing operations. Implementations which are concerned about
this form of attack can discard out-of-epoch records.</t>

<t>The security and privacy properties of the CID for DTLS 1.3 builds
on top of what is described in <xref target="I-D.ietf-tls-dtls-connection-id"/>. There are,
however, several improvements:</t>

<t><list style="symbols">
  <t>The use of the Post-Handshake message allows the client and the server
to update their CIDs and those values are exchanged with confidentiality
protection.</t>
  <t>With multi-homing, an adversary is able to correlate the communication
interaction over the two paths, which adds further privacy concerns. In order
to prevent this, implementations SHOULD attempt to use fresh CIDs
whenever they change local addresses or ports (though this is not always
possible to detect). The RequestConnectionId message can be used by a peer
to ask for new CIDs to ensure that a pool of suitable CIDs is available.</t>
  <t>Switching CID based on certain events, or even regularly, helps against
tracking by on-path adversaries but the sequence numbers can still allow
linkability. For this reason this specification defines an algorithm for encrypting
sequence numbers, see <xref target="sne"/>. Note that sequence number encryption is used for
all encrypted DTLS 1.3 records irrespective of whether a CID is used or not.
Unlike the sequence number, the epoch is not encrypted. This may improve
correlation of packets from a single connection across different network paths.</t>
  <t>DTLS 1.3 encrypts handshake messages much earlier than in previous
DTLS versions. Therefore, less information identifying the DTLS client, such as
the client certificate, is available to an on-path adversary.</t>
</list></t>

</section>
<section anchor="changes-to-dtls-12" title="Changes to DTLS 1.2">

<t>Since TLS 1.3 introduces a large number of changes to TLS 1.2, the list
of changes from DTLS 1.2 to DTLS 1.3 is equally large. For this reason
this section focuses on the most important changes only.</t>

<t><list style="symbols">
  <t>New handshake pattern, which leads to a shorter message exchange</t>
  <t>Only AEAD ciphers are supported. Additional data calculation has been simplified.</t>
  <t>Removed support for weaker and older cryptographic algorithms</t>
  <t>HelloRetryRequest of TLS 1.3 used instead of HelloVerifyRequest</t>
  <t>More flexible ciphersuite negotiation</t>
  <t>New session resumption mechanism</t>
  <t>PSK authentication redefined</t>
  <t>New key derivation hierarchy utilizing a new key derivation construct</t>
  <t>Improved version negotiation</t>
  <t>Optimized record layer encoding and thereby its size</t>
  <t>Added CID functionality</t>
  <t>Sequence numbers are encrypted.</t>
</list></t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>IANA is requested to allocate a new value in the “TLS ContentType”
registry for the ACK message, defined in <xref target="ack-msg"/>, with content type 26.
The value for the “DTLS-OK” column is “Y”.  IANA is requested to reserve
the content type range 32-63 so that content types in this range are not
allocated.</t>

<t>IANA is requested to allocate two values in the “TLS Handshake Type”
registry, defined in <xref target="TLS13"/>, for RequestConnectionId (TBD), and
NewConnectionId (TBD), as defined in this document.  The value for the
“DTLS-OK” columns are “Y”.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC0768" target='https://www.rfc-editor.org/info/rfc768'>
<front>
<title>User Datagram Protocol</title>
<author initials='J.' surname='Postel' fullname='J. Postel'><organization /></author>
<date year='1980' month='August' />
</front>
<seriesInfo name='STD' value='6'/>
<seriesInfo name='RFC' value='768'/>
<seriesInfo name='DOI' value='10.17487/RFC0768'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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="RFC1191" target='https://www.rfc-editor.org/info/rfc1191'>
<front>
<title>Path MTU discovery</title>
<author initials='J.C.' surname='Mogul' fullname='J.C. Mogul'><organization /></author>
<author initials='S.E.' surname='Deering' fullname='S.E. Deering'><organization /></author>
<date year='1990' month='November' />
<abstract><t>This memo describes a technique for dynamically discovering the maximum transmission unit (MTU) of an arbitrary internet path.  It specifies a small change to the way routers generate one type of ICMP message.  For a path that passes through a router that has not been so changed, this technique might not discover the correct Path MTU, but it will always choose a Path MTU as accurate as, and in many cases more accurate than, the Path MTU that would be chosen by current practice.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='1191'/>
<seriesInfo name='DOI' value='10.17487/RFC1191'/>
</reference>



<reference  anchor="RFC4443" target='https://www.rfc-editor.org/info/rfc4443'>
<front>
<title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
<author initials='A.' surname='Conta' fullname='A. Conta'><organization /></author>
<author initials='S.' surname='Deering' fullname='S. Deering'><organization /></author>
<author initials='M.' surname='Gupta' fullname='M. Gupta' role='editor'><organization /></author>
<date year='2006' month='March' />
<abstract><t>This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol).  ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='89'/>
<seriesInfo name='RFC' value='4443'/>
<seriesInfo name='DOI' value='10.17487/RFC4443'/>
</reference>



<reference  anchor="RFC4821" target='https://www.rfc-editor.org/info/rfc4821'>
<front>
<title>Packetization Layer Path MTU Discovery</title>
<author initials='M.' surname='Mathis' fullname='M. Mathis'><organization /></author>
<author initials='J.' surname='Heffner' fullname='J. Heffner'><organization /></author>
<date year='2007' month='March' />
<abstract><t>This document describes a robust method for Path MTU Discovery (PMTUD) that relies on TCP or some other Packetization Layer to probe an Internet path with progressively larger packets.  This method is described as an extension to RFC 1191 and RFC 1981, which specify ICMP-based Path MTU Discovery for IP versions 4 and 6, respectively.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4821'/>
<seriesInfo name='DOI' value='10.17487/RFC4821'/>
</reference>



<reference  anchor="RFC0793" target='https://www.rfc-editor.org/info/rfc793'>
<front>
<title>Transmission Control Protocol</title>
<author initials='J.' surname='Postel' fullname='J. Postel'><organization /></author>
<date year='1981' month='September' />
</front>
<seriesInfo name='STD' value='7'/>
<seriesInfo name='RFC' value='793'/>
<seriesInfo name='DOI' value='10.17487/RFC0793'/>
</reference>



<reference  anchor="RFC6298" target='https://www.rfc-editor.org/info/rfc6298'>
<front>
<title>Computing TCP's Retransmission Timer</title>
<author initials='V.' surname='Paxson' fullname='V. Paxson'><organization /></author>
<author initials='M.' surname='Allman' fullname='M. Allman'><organization /></author>
<author initials='J.' surname='Chu' fullname='J. Chu'><organization /></author>
<author initials='M.' surname='Sargent' fullname='M. Sargent'><organization /></author>
<date year='2011' month='June' />
<abstract><t>This document defines the standard algorithm that Transmission Control Protocol (TCP) senders are required to use to compute and manage their retransmission timer.  It expands on the discussion in Section 4.2.3.1 of RFC 1122 and upgrades the requirement of supporting the algorithm from a SHOULD to a MUST.  This document obsoletes RFC 2988.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6298'/>
<seriesInfo name='DOI' value='10.17487/RFC6298'/>
</reference>



<reference  anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference anchor="I-D.ietf-tls-dtls-connection-id">
<front>
<title>Connection Identifiers for DTLS 1.2</title>

<author initials='E' surname='Rescorla' fullname='Eric Rescorla'>
    <organization />
</author>

<author initials='H' surname='Tschofenig' fullname='Hannes Tschofenig'>
    <organization />
</author>

<author initials='T' surname='Fossati' fullname='Thomas Fossati'>
    <organization />
</author>

<date month='October' day='21' year='2019' />

<abstract><t>This document specifies the Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS) protocol version 1.2.  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></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tls-dtls-connection-id-07' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-dtls-connection-id-07.txt' />
</reference>



<reference  anchor="TLS13" target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2018' month='August' />
<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="CHACHA" target='https://www.rfc-editor.org/info/rfc8439'>
<front>
<title>ChaCha20 and Poly1305 for IETF Protocols</title>
<author initials='Y.' surname='Nir' fullname='Y. Nir'><organization /></author>
<author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author>
<date year='2018' month='June' />
<abstract><t>This document defines the ChaCha20 stream cipher as well as the use of the Poly1305 authenticator, both as stand-alone algorithms and as a &quot;combined mode&quot;, or Authenticated Encryption with Associated Data (AEAD) algorithm.</t><t>RFC 7539, the predecessor of this document, was meant to serve as a stable reference and an implementation guide.  It was a product of the Crypto Forum Research Group (CFRG).  This document merges the errata filed against RFC 7539 and adds a little text to the Security Considerations section.</t></abstract>
</front>
<seriesInfo name='RFC' value='8439'/>
<seriesInfo name='DOI' value='10.17487/RFC8439'/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC7296" target='https://www.rfc-editor.org/info/rfc7296'>
<front>
<title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
<author initials='C.' surname='Kaufman' fullname='C. Kaufman'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<author initials='Y.' surname='Nir' fullname='Y. Nir'><organization /></author>
<author initials='P.' surname='Eronen' fullname='P. Eronen'><organization /></author>
<author initials='T.' surname='Kivinen' fullname='T. Kivinen'><organization /></author>
<date year='2014' month='October' />
<abstract><t>This document describes version 2 of the Internet Key Exchange (IKE) protocol.  IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs).  This document obsoletes RFC 5996, and includes all of the errata for it.  It advances IKEv2 to be an Internet Standard.</t></abstract>
</front>
<seriesInfo name='STD' value='79'/>
<seriesInfo name='RFC' value='7296'/>
<seriesInfo name='DOI' value='10.17487/RFC7296'/>
</reference>



<reference  anchor="RFC2522" target='https://www.rfc-editor.org/info/rfc2522'>
<front>
<title>Photuris: Session-Key Management Protocol</title>
<author initials='P.' surname='Karn' fullname='P. Karn'><organization /></author>
<author initials='W.' surname='Simpson' fullname='W. Simpson'><organization /></author>
<date year='1999' month='March' />
<abstract><t>This document defines the basic protocol mechanisms. This document defines an Experimental Protocol for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='2522'/>
<seriesInfo name='DOI' value='10.17487/RFC2522'/>
</reference>



<reference  anchor="RFC4303" target='https://www.rfc-editor.org/info/rfc4303'>
<front>
<title>IP Encapsulating Security Payload (ESP)</title>
<author initials='S.' surname='Kent' fullname='S. Kent'><organization /></author>
<date year='2005' month='December' />
<abstract><t>This document describes an updated version of the Encapsulating Security Payload (ESP) protocol, which is designed to provide a mix of security services in IPv4 and IPv6.  ESP is used to provide confidentiality, data origin authentication, connectionless integrity, an anti-replay service (a form of partial sequence integrity), and limited traffic flow confidentiality.  This document obsoletes RFC 2406 (November 1998).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4303'/>
<seriesInfo name='DOI' value='10.17487/RFC4303'/>
</reference>



<reference  anchor="RFC4340" target='https://www.rfc-editor.org/info/rfc4340'>
<front>
<title>Datagram Congestion Control Protocol (DCCP)</title>
<author initials='E.' surname='Kohler' fullname='E. Kohler'><organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'><organization /></author>
<author initials='S.' surname='Floyd' fullname='S. Floyd'><organization /></author>
<date year='2006' month='March' />
<abstract><t>The Datagram Congestion Control Protocol (DCCP) is a transport protocol that provides bidirectional unicast connections of congestion-controlled unreliable datagrams.  DCCP is suitable for applications that transfer fairly large amounts of data and that can benefit from control over the tradeoff between timeliness and reliability.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4340'/>
<seriesInfo name='DOI' value='10.17487/RFC4340'/>
</reference>



<reference  anchor="RFC4346" target='https://www.rfc-editor.org/info/rfc4346'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.1</title>
<author initials='T.' surname='Dierks' fullname='T. Dierks'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2006' month='April' />
<abstract><t>This document specifies Version 1.1 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4346'/>
<seriesInfo name='DOI' value='10.17487/RFC4346'/>
</reference>



<reference  anchor="RFC4347" target='https://www.rfc-editor.org/info/rfc4347'>
<front>
<title>Datagram Transport Layer Security</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<author initials='N.' surname='Modadugu' fullname='N. Modadugu'><organization /></author>
<date year='2006' month='April' />
<abstract><t>This document specifies Version 1.0 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.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4347'/>
<seriesInfo name='DOI' value='10.17487/RFC4347'/>
</reference>



<reference  anchor="RFC5238" target='https://www.rfc-editor.org/info/rfc5238'>
<front>
<title>Datagram Transport Layer Security (DTLS) over the Datagram Congestion Control Protocol (DCCP)</title>
<author initials='T.' surname='Phelan' fullname='T. Phelan'><organization /></author>
<date year='2008' month='May' />
<abstract><t>This document specifies the use of Datagram Transport Layer Security (DTLS) over the Datagram Congestion Control Protocol (DCCP).  DTLS provides communications privacy for applications that use datagram transport protocols and allows client/server applications to communicate in a way that is designed to prevent eavesdropping and detect tampering or message forgery.  DCCP is a transport protocol that provides a congestion-controlled unreliable datagram service.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5238'/>
<seriesInfo name='DOI' value='10.17487/RFC5238'/>
</reference>



<reference  anchor="RFC5246" target='https://www.rfc-editor.org/info/rfc5246'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
<author initials='T.' surname='Dierks' fullname='T. Dierks'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2008' month='August' />
<abstract><t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5246'/>
<seriesInfo name='DOI' value='10.17487/RFC5246'/>
</reference>



<reference  anchor="RFC6347" target='https://www.rfc-editor.org/info/rfc6347'>
<front>
<title>Datagram Transport Layer Security Version 1.2</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<author initials='N.' surname='Modadugu' fullname='N. Modadugu'><organization /></author>
<date year='2012' month='January' />
<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="RFC7525" target='https://www.rfc-editor.org/info/rfc7525'>
<front>
<title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
<author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></author>
<author initials='R.' surname='Holz' fullname='R. Holz'><organization /></author>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'><organization /></author>
<date year='2015' month='May' />
<abstract><t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP.  Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation.  This document provides recommendations for improving the security of deployed services that use TLS and DTLS. The recommendations are applicable to the majority of use cases.</t></abstract>
</front>
<seriesInfo name='BCP' value='195'/>
<seriesInfo name='RFC' value='7525'/>
<seriesInfo name='DOI' value='10.17487/RFC7525'/>
</reference>


<reference anchor="AEBounds" target="http://www.isg.rhul.ac.uk/~kp/TLS-AEbounds.pdf">
  <front>
    <title>Limits on Authenticated Encryption Use in TLS</title>
    <author initials="A." surname="Luykx">
      <organization></organization>
    </author>
    <author initials="K." surname="Paterson">
      <organization></organization>
    </author>
    <date year="2016" month="March" day="08"/>
  </front>
</reference>
<reference anchor="ROBUST" target="https://eprint.iacr.org/2020/718">
  <front>
    <title>Robust Channels: Handling Unreliable Networks in the Record Layers of QUIC and DTLS 1.3</title>
    <author initials="M." surname="Fischlin">
      <organization></organization>
    </author>
    <author initials="F." surname="Günther">
      <organization></organization>
    </author>
    <author initials="C." surname="Janson">
      <organization></organization>
    </author>
    <date year="2020" month="June" day="15"/>
  </front>
</reference>




<reference  anchor="RFC4960" target='https://www.rfc-editor.org/info/rfc4960'>
<front>
<title>Stream Control Transmission Protocol</title>
<author initials='R.' surname='Stewart' fullname='R. Stewart' role='editor'><organization /></author>
<date year='2007' month='September' />
<abstract><t>This document obsoletes RFC 2960 and RFC 3309.  It describes the Stream Control Transmission Protocol (SCTP).  SCTP is designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks, but is capable of broader applications.</t><t>SCTP is a reliable transport protocol operating on top of a connectionless packet network such as IP.  It offers the following services to its users:</t><t>--  acknowledged error-free non-duplicated transfer of user data,</t><t>--  data fragmentation to conform to discovered path MTU size,</t><t>--  sequenced delivery of user messages within multiple streams, with an option for order-of-arrival delivery of individual user messages,</t><t>--  optional bundling of multiple user messages into a single SCTP packet, and</t><t>--  network-level fault tolerance through supporting of multi-homing at either or both ends of an association.</t><t> The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4960'/>
<seriesInfo name='DOI' value='10.17487/RFC4960'/>
</reference>

<reference anchor="CCM-ANALYSIS" >
  <front>
    <title>On the Security of CTR + CBC-MAC</title>
    <author initials="J." surname="Jonsson" fullname="Jakob Jonsson">
      <organization></organization>
    </author>
    <date year="2003"/>
  </front>
  <seriesInfo name="Selected Areas in Cryptography" value="pp. 76-93"/>
  <seriesInfo name="DOI" value="10.1007/3-540-36492-7_7"/>
</reference>




    </references>


<section anchor="protocol-data-structures-and-constant-values" title="Protocol Data Structures and Constant Values">

<t>This section provides the normative protocol types and constants definitions.</t>

<t>%%## Record Layer
%%## Handshake Protocol
%%## ACKs
%%## Connection ID Management</t>

</section>
<section anchor="ccm-bounds" title="Analysis of Limits on CCM Usage">

<t>TLS <xref target="TLS13"/> and <xref target="AEBounds"/> do not specify limits on key usage for
AEAD_AES_128_CCM. However, any AEAD that is used with DTLS requires limits on
use that ensure that both confidentiality and integrity are preserved. This
section documents that analysis for AEAD_AES_128_CCM.</t>

<t><xref target="CCM-ANALYSIS"/> is used as the basis of this
analysis. The results of that analysis are used to derive usage limits that are
based on those chosen in <xref target="TLS13"/>.</t>

<t>This analysis uses symbols for multiplication (*), division (/), and
exponentiation (^), plus parentheses for establishing precedence. The following
symbols are also used:</t>

<t><list style="hanging">
  <t hangText='t:'>
  The size of the authentication tag in bits. For this cipher, t is 128.</t>
  <t hangText='n:'>
  The size of the block function in bits. For this cipher, n is 128.</t>
  <t hangText='l:'>
  The number of blocks in each packet (see below).</t>
  <t hangText='q:'>
  The number of genuine packets created and protected by endpoints. This value
is the bound on the number of packets that can be protected before updating
keys.</t>
  <t hangText='v:'>
  The number of forged packets that endpoints will accept. This value is the
bound on the number of forged packets that an endpoint can reject before
updating keys.</t>
</list></t>

<t>The analysis of AEAD_AES_128_CCM relies on a count of the number of block
operations involved in producing each message. For simplicity, and to match the
analysis of other AEAD functions in <xref target="AEBounds"/>, this analysis assumes a
packet length of 2^10 blocks and a packet size limit of 2^14.</t>

<t>For AEAD_AES_128_CCM, the total number of block cipher operations is the sum
of: the length of the associated data in blocks, the length of the ciphertext
in blocks, the length of the plaintext in blocks, plus 1. In this analysis,
this is simplified to a value of twice the maximum length of a record in blocks
(that is, <spanx style="verb">2l = 2^11</spanx>). This simplification is based on the associated data
being limited to one block.</t>

<section anchor="ccm-confidentiality" title="Confidentiality Limits">

<t>For confidentiality, Theorem 2 in <xref target="CCM-ANALYSIS"/> establishes that an attacker
gains a distinguishing advantage over an ideal pseudorandom permutation (PRP) of
no more than:</t>

<figure><artwork><![CDATA[
(2l * q)^2 / 2^n
]]></artwork></figure>

<t>For a target advantage of 2^-60, which matches that used by <xref target="TLS13"/>, this
results in the relation:</t>

<figure><artwork><![CDATA[
q <= 2^23
]]></artwork></figure>

<t>That is, endpoints cannot protect more than 2^23 packets with the same set of
keys without causing an attacker to gain an larger advantage than the target of
2^-60.</t>

</section>
<section anchor="ccm-integrity" title="Integrity Limits">

<t>For integrity, Theorem 1 in <xref target="CCM-ANALYSIS"/> establishes that an attacker
gains an advantage over an ideal PRP of no more than:</t>

<figure><artwork><![CDATA[
v / 2^t + (2l * (v + q))^2 / 2^n
]]></artwork></figure>

<t>The goal is to limit this advantage to 2^-57, to match the target in
<xref target="TLS13"/>. As <spanx style="verb">t</spanx> and <spanx style="verb">n</spanx> are both 128, the first term is negligible relative
to the second, so that term can be removed without a significant effect on the
result. This produces the relation:</t>

<figure><artwork><![CDATA[
v + q <= 2^24.5
]]></artwork></figure>

<t>Using the previously-established value of 2^23 for <spanx style="verb">q</spanx> and rounding, this leads
to an upper limit on <spanx style="verb">v</spanx> of 2^23.5. That is, endpoints cannot attempt to
authenticate more than 2^23.5 packets with the same set of keys without causing
an attacker to gain an larger advantage than the target of 2^-57.</t>

</section>
<section anchor="ccm-short" title="Limits for AEAD_AES_128_CCM_8">

<t>The TLS_AES_128_CCM_8_SHA256 cipher suite uses the AEAD_AES_128_CCM_8 function,
which uses a short authentication tag (that is, t=64).</t>

<t>The confidentiality limits of AEAD_AES_128_CCM_8 are the same as those for
AEAD_AES_128_CCM, as this does not depend on the tag length; see
<xref target="ccm-confidentiality"/>.</t>

<t>The shorter tag length of 64 bits means that the simplification used in
<xref target="ccm-integrity"/> does not apply to AEAD_AES_128_CCM_8. If the goal is to
preserve the same margins as other cipher suites, then the limit on forgeries
is largely dictated by the first term of the advantage formula:</t>

<figure><artwork><![CDATA[
v <= 2^7
]]></artwork></figure>

<t>As this represents attempts to fail authentication, applying this limit might
be feasible in some environments. However, applying this limit in an
implementation intended for general use exposes connections to an inexpensive
denial of service attack.</t>

<t>This analysis supports the view that TLS_AES_128_CCM_8_SHA256 is not suitable
for general use. Specifically, TLS_AES_128_CCM_8_SHA256 cannot be used without
additional measures to prevent forgery of records, or to mitigate the effect of
forgeries. This might require understanding the constraints that exist in a
particular deployment or application. For instance, it might be possible to set
a different target for the advantage an attacker gains based on an
understanding of the constraints imposed on a specific usage of DTLS.</t>

</section>
</section>
<section anchor="history" title="History">

<t>RFC EDITOR: PLEASE REMOVE THE THIS SECTION</t>

<t>IETF Drafts</t>

<t>draft-39
- Updated Figure 4 due to misalignment with Figure 3 content</t>

<t>draft-38
- Ban implicit connection IDs (*)
- ACKs are processed as the union.</t>

<t>draft-37:
- Fix the other place where we have ACK.</t>

<t>draft-36:
- Some editorial changes.
- Changed the content type to not conflict with existing allocations (*)</t>

<t>draft-35:
- I-D.ietf-tls-dtls-connection-id became a normative reference
- Removed duplicate reference to I-D.ietf-tls-dtls-connection-id.
- Fix figure 11 to have the right numbers andno cookie in message 1.
- Clarify when you can ACK.
- Clarify additional data computation.</t>

<t>draft-33:
- Key separation between TLS and DTLS. Issue #72.</t>

<t>draft-32:
- Editorial improvements and clarifications.</t>

<t>draft-31:
- Editorial improvements in text and figures.
- Added normative reference to ChaCha20 and Poly1305.</t>

<t>draft-30:
- Changed record format
- Added text about end of early data
- Changed format of the Connection ID Update message
- Added Appendix A “Protocol Data Structures and Constant Values”</t>

<t>draft-29:
- Added support for sequence number encryption
- Update to new record format
- Emphasize that compatibility mode isn’t used.</t>

<t>draft-28:
- Version bump to align with TLS 1.3 pre-RFC version.</t>

<t>draft-27:
- Incorporated unified header format.
- Added support for CIDs.</t>

<t>draft-04 - 26:
- Submissions to align with TLS 1.3 draft versions</t>

<t>draft-03
- Only update keys after KeyUpdate is ACKed.</t>

<t>draft-02
- Shorten the protected record header and introduce an ultra-short
  version of the record header.
- Reintroduce KeyUpdate, which works properly now that we have ACK.
- Clarify the ACK rules.</t>

<t>draft-01
- Restructured the ACK to contain a list of records and also
  be a record rather than a handshake message.</t>

<t>draft-00
- First IETF Draft</t>

<t>Personal Drafts
draft-01
- Alignment with version -19 of the TLS 1.3 specification</t>

<t>draft-00</t>

<t><list style="symbols">
  <t>Initial version using TLS 1.3 as a baseline.</t>
  <t>Use of epoch values instead of KeyUpdate message</t>
  <t>Use of cookie extension instead of cookie field in
ClientHello and HelloVerifyRequest messages</t>
  <t>Added ACK message</t>
  <t>Text about sequence number handling</t>
</list></t>

</section>
<section anchor="working-group-information" title="Working Group Information">

<t>RFC EDITOR: PLEASE REMOVE THIS SECTION.</t>

<t>The discussion list for the IETF TLS working group is located at the e-mail
address <eref target="mailto:tls@ietf.org">tls@ietf.org</eref>. Information on the group and information on how to
subscribe to the list is at <eref target="https://www1.ietf.org/mailman/listinfo/tls">https://www1.ietf.org/mailman/listinfo/tls</eref></t>

<t>Archives of the list can be found at:
<eref target="https://www.ietf.org/mail-archive/web/tls/current/index.html">https://www.ietf.org/mail-archive/web/tls/current/index.html</eref></t>

</section>
<section anchor="contributors" title="Contributors">

<t>Many people have contributed to previous DTLS versions and they are acknowledged
in prior versions of DTLS specifications or in the referenced specifications. The
sequence number encryption concept is taken from the QUIC specification. We would
like to thank the authors of the QUIC specification for their work. Felix
Günther and Martin Thomson contributed the analysis in <xref target="ccm-bounds"/>.</t>

<t>In addition, we would like to thank:</t>

<figure><artwork><![CDATA[
* David Benjamin
  Google
  davidben@google.com
]]></artwork></figure>

<figure><artwork><![CDATA[
* Thomas Fossati
  Arm Limited
  Thomas.Fossati@arm.com
]]></artwork></figure>

<figure><artwork><![CDATA[
* Tobias Gondrom
  Huawei
  tobias.gondrom@gondrom.org
]]></artwork></figure>

<figure><artwork><![CDATA[
* Felix Günther
  ETH Zurich
  mail@felixguenther.info
]]></artwork></figure>

<figure><artwork><![CDATA[
* Ilari Liusvaara
  Independent
  ilariliusvaara@welho.com
]]></artwork></figure>

<figure><artwork><![CDATA[
* Martin Thomson
  Mozilla
  martin.thomson@gmail.com
]]></artwork></figure>

<figure><artwork><![CDATA[
* Christopher A. Wood
  Apple Inc.
  cawood@apple.com
]]></artwork></figure>

<figure><artwork><![CDATA[
* Yin Xinxing
  Huawei
  yinxinxing@huawei.com
]]></artwork></figure>

<figure><artwork><![CDATA[
* Hanno Becker
  Arm Limited
  Hanno.Becker@arm.com
]]></artwork></figure>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>We would like to thank Jonathan Hammell for his review comments.</t>

</section>


  </back>

<!-- ##markdown-source:
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
p6eePf4LmOAX/3zJvvzSjt78tc3o/iWj+Ve1I6TT/vmcM/T5PGXtaOI7NYrG
G3KA7KcICEMwNfNH3tBckY8aUYk25rCuFZkbKQBQ4rPExSw221Zes5NSpRKm
EQUgBinPEqF0GjwcQ7MxqvUJASK9Ykig5PYryuAdCkSQYtNJJpKEpt3Rv+TP
eZdcw+UOufU2DIQ0NIz7/DhyP4SWZs3PsepwUbyw2wxEjC0tAElJQ1p68d3R
2/13x6//yNnJbaQwelYTcH/ePz61JxlmlLOmQHhaiReplrLkEbQNotxFaBOf
prZPXagfgpF3CTxo6A/waPBa59EP6/74xKN3j/VD+4NPtqcf/cDOOAyjlOPz
r2r8Lx8e/Mum9HlrenL0+hA3Kvnw3bDz8zk9tZ/8dO/RnO58/Z2kr/fuyrqf
qHfas97XTzICpeT6HxUjw6Wz6HX5tvd1+e7u3teN9J6DX//6SdZ0TvN9Xwea
+8Le779xva9/PtmEHQ7hFeV2yYcuza4lWm7kD+3eT2nNsvcLgpZYP/gP3aF8
ztw/RB98WDP1/7de/3006A+teXxq6fT4iWf6A32UTkLKQxjigx/XHFg6YoiL
2h3jDIP/P0EE648ffKY9hb3Hc29/hgIPddvPwnuPxf3ktPipdZQSPxWT43dr
tgJExuPXxycvjg7vfH99/31r8+DDX3qXrJ+I+k9lJE+faMBqRBut9955osE9
iwTXXrkqQmm6S4QLRTaFYorluEsK5VsiBFmNMeH4Zf3UiysDvQ4HymIG5HDX
xecUhh7ZrDeTgpCZbi7ha4JP8GA9DPUVRTRIBL9I4iZfBB5yqqdLgQOFU3mO
AEeWC5bhw7XYJLlPAwkkiIjET4rjchguxe+bAMAypk0w+rh3ekHNS+sDoW96
Bi75Ka0GLtMgfBRjVGAWBDIAdFFz1PDtbTq+Gs7rC4wSnvpcM8klK4ICpxiR
QvGnFndQVq4dWKVlozijTBCUCZwZ+sR4CKrPEGS91I4epUdqiszqWwnGNyEM
5vZt7Bib15Y7EtQZQ0kiiYgwNX4oey+4k9HzAo0dJtHppS8X2NO1O5W3MbFb
O2w4N1E100tVFAecUqZlyzsDGOiRXFaFVVVrT1ZisDshcemEwtvxiog2+Wkr
LAY71ufIcaXSmhDdZorJXARZzVrn7a1AqQ0xfAfrbuvs1y8RPVF+1hIti5TK
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

-->

</rfc>

