<?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.2.9 -->

<!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-27" 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="2018" month="July" 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.  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 provide privacy and data integrity
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 utilize 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 designed. 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
aligning with the efforts around TLS 1.3 <xref target="I-D.ietf-tls-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="I-D.ietf-tls-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>
</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>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 re-ordered data traffic.</t>

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

<t><list style="numbers">
  <t>TLS does not allow independent decryption of individual records.
Because the integrity check indirectly depends on a sequence number,
if record N is not received, then the integrity check
on record N+1 will be based on the wrong sequence number and
thus will fail. DTLS solves this problem by adding explicit
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.
This is incompatible with reordering and message loss.</t>
  <t>Not all TLS 1.3 handshake messages (such as the NewSessionTicket message)
are acknowledged. Hence, a new acknowledgement message has to be added
to detect message loss.</t>
  <t>Handshake messages are potentially larger than any given datagram,
thus creating the problem of IP fragmentation.</t>
  <t>Datagram transport protocols, like UDP, are susceptible to abusive behavior
effecting denial of
service attacks against nonparticipants,
and require a return-routability check with the help of
cookies to be integrated into the handshake. A detailed discussion of
countermeasures can be found in <xref target="dos"/>.</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 anchor="reordering" title="Reordering">

<t>In DTLS, each handshake message is assigned a specific sequence
number within that handshake.  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 IP 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>
<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 record layer is different from the TLS 1.3 record layer.</t>

<t><list style="numbers">
  <t>The DTLSCiphertext structure omits the superfluous version number and
type fields.</t>
  <t>DTLS adds an explicit 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.</t>
  <t>The DTLSCiphertext structure has a variable length header.</t>
</list></t>

<t>Note that the DTLS 1.3 record layer is different from the DTLS 1.2 record layer.</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                                 // DTLS field
      uint48 sequence_number;                          // DTLS field
      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;
  [[OPEN ISSUE: Should we try to find some way to render this?]]
]]></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|L|X|X|X|
 +-+-+-+-+-+-+-+-+
 |Ep.| 14 bit    |   Legend:
 +-+-+           |
 |Sequence Number|   Ep. - Epoch
 +-+-+-+-+-+-+-+-+   C   - CID present
 | Connection ID |   L   - Length present
 | (if any,      |   X   - Reserved
 /  length as    /
 |  negotiated)  |
 +-+-+-+-+-+-+-+-+
 | 16 bit Length |
 | (if present)  |
 +-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='Ep.'>
  The low order two bits of the epoch.</t>
  <t hangText='sequence number:'>
  The low order 14 bits of the record sequence number.</t>
  <t hangText='length:'>
  Identical to the length field in a TLS 1.3 record.</t>
  <t hangText='connection ID:'>
  Variable length connection ID. The connection ID concept
is described in <xref target="I-D.ietf-tls-dtls-connection-id"/>. An example
can be found in <xref target="connection-id-example"/>.</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|C|L|X|X|X|     |0|0|1|0|0|X|X|X|
+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
|   16 bit      |     |E|E| 14 bit    |     |E|E| 14 bit    |
|   Version     |     +-+-+           |     +-+-+           |
+-+-+-+-+-+-+-+-+     |Sequence Number|     |Sequence Number|
|   16 bit      |     +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
|    Epoch      |     |               |     |               |
+-+-+-+-+-+-+-+-+     / Connection ID /     |   Encrypted   |
|               |     |               |     /   Record      /
|               |     +-+-+-+-+-+-+-+-+     |               |
|   48 bit      |     |   16 bit      |     +-+-+-+-+-+-+-+-+
|Sequence Number|     |   Length      |
|               |     +-+-+-+-+-+-+-+-+       DTLSCiphertext
|               |     |               |         Structure
+-+-+-+-+-+-+-+-+     |  Encrypted    |         (minimal)
|    16 bit     |     /  Record       /
|    Length     |     |               |
+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
|               |
|               |      DTLSCiphertext
/   Fragment    /        Structure
|               |          (full)
+-+-+-+-+-+-+-+-+

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

<t>The length field may be omitted and therefore 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.</t>

<t>Omitting the length field MUST only be used for data which is protected with
one of the application_traffic_secret values, and not for messages
protected with either [sender]_handshake_traffic_sercret or
[sender]_early_traffic_secret values. When using an
[sender]_application_traffic_secret for message protection,
Implementations MAY include the length field at their discretion.</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, 25),
the record MUST be interpreted as a DTLSPlaintext record.</t>
  <t>If the first byte is any other 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">

<section anchor="processing-guidlines" title="Processing Guidlines">

<t>DTLS uses an 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>

<t>Because DTLS records may be reordered, a record from epoch
1 may be received after epoch 2 has begun.  In general,
implementations SHOULD discard packets 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.)  Until the handshake has completed,
implementations MUST accept packets from the old epoch.</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 packets, 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 packets may be sent still apply, and the receiver treats the
packets as if they were sent in the right order.  In particular, it is
still impermissible to send data prior to completion of the first
handshake.</t>

<t>Note that some care needs to be taken during the handshake to ensure
that retransmitted messages use the right epoch and keying material.</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>
<section anchor="transport-layer-mapping" title="Transport Layer Mapping">

<t>DTLS messages MAY be fragmentmented 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.  They are
simply encoded consecutively.  The DTLS record framing is sufficient
to determine the boundaries.  Note, however, that the first byte of
the datagram payload MUST be the beginning of a record.  Records MUST
NOT span datagrams.</t>

<t>DTLS records, as defined in this document, 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. However, the Connection ID extension
defined in <xref target="I-D.ietf-tls-dtls-connection-id"/> adds an association identifier
to DTLS 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>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 packet 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 SHOULD be the first check
applied to a packet after it has been matched to a session, to speed
up the rejection of duplicate records.</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.)  A minimum window size of 32 MUST be supported, but a
window size of 64 is preferred and SHOULD be employed as the default.
Another window size (larger than the minimum) MAY be chosen by the
receiver.  (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.  Packets falling within the window are checked against a
list of received packets 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"/>.</t>

<t>If the received record falls within the window and is new, or if the
packet is to the right of the window, then the receiver proceeds to
MAC verification.  If the MAC validation fails, the receiver MUST
discard the received record as invalid.  The receive window is
updated only if the MAC verification succeeds.</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>
</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>With these exceptions, the DTLS message formats, flows, and logic are
the same as those of TLS 1.3. DTLS implementations SHOULD not use
the TLS 1.3 “compatibility mode” described in <xref target="I-D.ietf-tls-tls13"/>, Section D.4
and DTLS servers SHOULD ignore the “session_id” value generated by the
client rather than sending ChangeCipherSpec messages. Implementations MUST still
ignore ChangeCipherSpec messages received during the handshake
and at all other times SHOULD treat them as if they had failed to
deprotect.</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
ciphersuite 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 defence
against DoS attacks mounted from valid IP addresses.</t>

<t>The DTLS 1.3 specification changes the way 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 reason 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="I-D.ietf-tls-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 SHOULD be set to a zero length vector (i.e., a single zero byte length field)
and MUST be ignored by a server negotiating DTLS 1.3.</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="I-D.ietf-tls-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="I-D.ietf-tls-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 that legitimate clients be able to
handshake through the transition (e.g., they 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 those cookies that were not generated within a certain
amount 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.
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 respond with a HelloRetryRequest. Restarting the handshake from
scratch, without a cookie, allows the client to recover from a situation
where it obtained a cookie that cannot be verified by the server.
As described in Section 4.1.4 of <xref target="I-D.ietf-tls-tls13"/>, clients SHOULD
also 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>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="I-D.ietf-tls-tls13"/>) and the
legacy_version field MUST be set to {254, 253}, which was the version
number for DTLS 1.2.</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.</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.  These ranges MUST
NOT be larger than the maximum handshake fragment size and MUST
jointly contain the entire handshake message.  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.</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="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*]


                                                          +----------+
 (EndOfEarlyData)                                         | Flight 3 |
 {Finished}            -------->                          +----------+
 [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 enters the FINISHED state
if this is the last flight in the handshake.  Or, if the
implementation expects to receive more messages, it sets a
retransmit timer and then 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 a 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 Maximum Segment Lifetime
(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 packets 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 recommend
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.  One situation where this might occur is
when a rehandshake is used after substantial data transfer.</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="I-D.ietf-tls-tls13"/>, respectively.</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 packet 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 also use some sort
of connection identifier, such as the one specified in
<xref target="I-D.rescorla-tls-dtls-connection-id"/>.</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)
  +cookie

                             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 [1]


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

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

                           <--------               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-order 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 key derivation steps described in
Section 7 of <xref target="I-D.ietf-tls-tls13"/> triggered by the states during the handshake
a sender may want to rekey at any time during
the lifetime of the connection and has to have a way 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. This includes early data sent by the
client and the EndOfEarlyData message.</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 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 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, 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="I-D.ietf-tls-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)
                            -------->

                            <--------       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 handshake-containing
the TLS records it has received 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 it consuming space in the
handshake message sequence. Note that ACKs can still be
piggybacked on the same UDP datagram as handshake records.</t>

<figure><artwork><![CDATA[
struct {
       uint64 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, in numerically increasing
order. 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>
</list></t>

<t>ACK records MUST be sent with an epoch that is equal to or higher
than the record which is being acknowledged. Implementations SHOULD
simply use the current key.</t>

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

<t>When an implementation receives a partial flight, it SHOULD generate
an ACK that covers the messages from that flight which it has
received so far. Implementations have some discretion about when
to generate ACKs, but it is RECOMMENDED that they do so 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. Implementations
MUST NOT send ACKs for handshake messages which they discard
as out-of-order, because otherwise those messages will not be
retransmitted.</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 addition, implementations MUST send ACKs upon receiving
all of any flight which they do not respond to with their
own messages. Specifically, this means the client’s final
flight of the main handshake, the server’s transmission
of the NewSessionTicket, and KeyUpdate messages.
ACKs SHOULD NOT be sent for other
complete flights because they are implicitly acknowledged
by the receipt of the next flight, which generally
immediately follows the flight. Each NewSessionTicket
or KeyUpdate is an individual flight; in particular, a KeyUpdate
sent in response to a KeyUpdate with update_requested does not
implicitly acknowledge that message. Implementations MAY
ACK the records corresponding to each transmission of
that flight or simply ACK the most recent one.</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 ACK 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 for only some messages
from a flight, an implementation SHOULD retransmit the remaining
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. As noted above, the receipt of any packet responding
to a given flight MUST be taken as an implicit ACK for the entire
flight.</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>Although KeyUpdate MUST be ACKed, it is possible for the ACK to be
lost, in which case the sender of the KeyUpdate will retransmit it.
Implementations MUST retain the ability to ACK the KeyUpdate for
up to 2MSL. It is RECOMMENDED that they do so by retaining the
pre-update keying material, but they MAY do so by responding
to messages which appear to be out-of-epoch with a canned ACK
message; in this case, implementations SHOULD rate limit how
often they send such ACKs.</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 connection ID 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;

   struct {
       opaque cid<0..2^8-1>;
       ConnectionIdUsage usage;
   } NewConnectionId;
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='cid'>
  Indicates the CID which the sender wishes the peer to use.</t>
  <t hangText='usage'>
  Indicates whether the new CID should be used immediately or is a spare.
If usage is set to “cid_immediate”, then the new CID MUST be used immediately
for all future records. If it is set to “cid_spare”, then either CID MAY
be used.</t>
</list></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 {
   } RequestConnectionId;
]]></artwork></figure>

<t>Endpoints SHOULD respond to RequestConnectionId by sending a NewConnectionId
with usage “cid_spare” as soon as possible. Note that an endpoint MAY ignore
requests, which it considers excessive (though they MUST be ACKed as usual).</t>

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

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

<t>Below is an example exchange for DTLS 1.3 using a single
connection id 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 Connection IDs" 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>

</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="I-D.ietf-tls-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>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 packets 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 connection ID 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 connection IDs 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 connection IDs
whenever they change local addresses or ports (though this is not always
possible to detect). The RequestConnectionId message can be used
to ask for new IDs in order to ensure that you have a pool of suitable IDs.</t>
  <t>Switching connection ID based on certain events, or even regularly, helps against
tracking by onpath adversaries but the sequence numbers can still allow
linkability. [[OPEN ISSUE: We need to update the document to offer sequence number encryption. ]]</t>
  <t>Since the DTLS 1.3 exchange encrypts handshake messages much earlier than in previous
DTLS versions information identifying the DTLS client, such as the client certificate, less
information 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>Support for AEAD-only ciphers</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>Removed support for weaker and older cryptographic algorithms</t>
  <t>Improved version negotation</t>
  <t>Optimized record layer encoding and thereby its size</t>
  <t>Added connection ID functionality</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 25.</t>

<t>IANA is requested to allocate two values in the “TLS Handshake Type”
registry, defined in <xref target="RFC5246"/>, for RequestConnectionId (TBD), and
NewConnectionId (TBD), as defined in this document.</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-tls13">
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>

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

<date month='July' day='3' year='2017' />

<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></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tls-tls13-21' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-tls13-21.txt' />
</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="I-D.ietf-tls-dtls-connection-id">
<front>
<title>The Datagram Transport Layer Security (DTLS) Connection Identifier</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>

<author initials='T' surname='Gondrom' fullname='Tobias Gondrom'>
    <organization />
</author>

<date month='December' day='27' year='2017' />

<abstract><t>This document specifies the "Connection ID" concept for the Datagram Transport Layer Security (DTLS) protocol, version 1.2 and version 1.3.  A Connection ID 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-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-dtls-connection-id-00.txt' />
</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="I-D.rescorla-tls-dtls-connection-id">
<front>
<title>The Datagram Transport Layer Security (DTLS) Connection Identifier</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>

<author initials='T' surname='Gondrom' fullname='Tobias Gondrom'>
    <organization />
</author>

<date month='November' day='14' year='2017' />

<abstract><t>This document specifies the "Connection ID" concept for the Datagram Transport Layer Security (DTLS) protocol, version 1.2 and version 1.3.  A Connection ID 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-rescorla-tls-dtls-connection-id-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-rescorla-tls-dtls-connection-id-02.txt' />
</reference>




    </references>


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

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

<t>IETF Drafts
draft-27:
- Incorporated unified header format.
- Added support for connection IDs.</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 packets 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>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.</t>

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

<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[
* Yin Xinxing
  Huawei
  yinxinxing@huawei.com
]]></artwork></figure>

<figure><artwork><![CDATA[
* Thomas Fossati
  Nokia
  thomas.fossati@nokia.com
]]></artwork></figure>

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

</section>


  </back>

<!-- ##markdown-source:
H4sIAHwsOlsAA+29a3fbRrYg+r1+BZbzoaWEpCX5kUROcqK25LZW+3UtudPn
+uR4QSRIoUUCPAAomW37rvkh9/65+SV3P6t2AaAs2ZnpmbVGWUkkEqjHrl37
/RgOh67Jm3m2n5yeZ8lh2qSzKl0kp1Va1MuyapJn6TqrkpNsvKryZp1sHZ4+
O9lOXlVlU47LefK3rKrzskh2R/dcenZWZZf7CT5CH0zKcZEuYOxJlU6bYZ41
02Ezr4cT+M/uveHe926cNtmsrNb7Sd1MXHlWl/Osyer95OG9+987ly+r/WRZ
ZQ/uff/DabWqm72dnR939lxaZem+X5S7KquLWVWulrCLZyfuIlvDJ5P95Lho
sqrImuEhzu9c3aTF5F06LwtY0zqr3TLfd0lSTcfZpG7Wc/k0SWBv5te8mGRF
ox/UAJUqm9b+7/Ui+rOp8rF/eFwuFvCu/zYv5nkRpsneN8N5XjdDGOSsnMNj
w/Lb7+AbgNwiXS7zYsbPpqvmvKxgsUP4kn7yAp4+GiWvs3pcVvNUP2eAH8Ei
Ol+V1Swt8n+mDRzYfvL69MnzAYBoPNLvs0Waz/eT7KL6tWqmixEs3rVnfDpK
TuvxeTnNinwWz/k0LYqs7vk6nvegWiTP8kXeZJPWxOc0wKjxA/yaVv2reDFK
npeTdLKareI1vEhnWQHY1vk6XsNfynI2z3p3X8gIv47rEeLLFDBplE1WzhVl
tYD3LzPEmddPHu98//AH+XVvd/dH+RV+25Vf79+/f09//WFv17/2o376cO9H
HeGH3e/v46/Hw8ORvyd0TfZdjouIpv5+78eHOvWDvT2d5N6On+/e/Z3w68Pw
6/fy64O9ez/4X/0DD8MD3z/Ye9BZEF7c4biEYxojIIf5ZN8Nh8MkPQO0T8dw
xU7P8xqxd4Von9TLbJxPc8AKQyeScpo0NyE2TojNUojNyFOWJJ3Py6s6Gc9z
mOZunVWX8B5cmHk+piOu4d7S5VsV+EmWlPgAzOqUJgAiJWlyla7h0xT+glVn
dT4rsgm+CjTnEjeQpZdZPalKuoqDpEkXy6yiX4GSJIusrgFdHBzPLKvWI9x+
Fhap68bBc5i2wJXBytfJWVrDPAAOhMNmWou7d9FIOCv8cZnDYpPsv1b5ZTon
QOs7s1UKwzUZ3KMkQLgG5IbZxzXA3uGcKyBp1XwNO0kaPz1QVdw4QXOSnK35
lHA3/gQcHfcin0zmmXPumwRpbFVOVoQPzgHiJEeHx6cvX+8nr54dHZwcJa+P
nr/821Fy+vQoefLy2bOXvx2/+Evy6uD1wV9eH7x6yiCry1U1zhKAI8yJR4H0
GsEGd7Jo4F9YD5zXX/Lm6epslJysZrOsBgKSjIFmwK+uPi9Xc1gzDLU6A9qC
36V1slzN50kFcIKn6wSO+bxplvX+3buzvDmHkQBD7gJKX83uCktChB0BjgA6
85ZqggqdFLy+hNPGca+yOWDj0SRvyipP57qMZJwWuAYANjxoljxwZyuAb7HG
5SFVwbssbyVh7ZO8Hq9qixoAeyRLeE7IJwTDllW+SCs47BLmlttkjwkhR0hM
iIKPX6bjNSHPBFCCkHFGN+wsa66yDCa7stcFp1tmcGNHJBW0h4YHlyWtckov
zhFt632ny3idAduZBBkB59XvgElM6vP0IvNfj5Kn5RXctmrA2wUu76pVwTc2
hdOb5+nZPDN4OiZGMU8AE5v1EhaMV+r08avkwwehr58+MaTg6PD4YsKAB7lq
AKj/zJI3h/6thz98+oRnm9obURA1KKdTWIuBD6C6v3EIGSaHgr8AmvaMm4md
a0tWHtDnsJYzPBulS0L+iFLN87OsAroGG7dk6yxz8FYN3HWeVvgBvoD3oKzr
/Aw53lnZnOMXi7yApwACRXYVqEdeXDKVkp27RfqeH8M9pItyBbQGTn1cAlrh
I8CaqpQvywoAXWWrOgPQCwncYdgi2wHYXsFC4LrMcqaBk2xK95pADjsCvJxW
5SLhV3f9qw/xWIqJjrnHXzwMY0YDAfFCdgNrpCFrBYJ/EbkdoEeSEHo4gGZR
KsnefcTYcSnMqlgtAMw0SX2RL5d8pQG3MwLuOYgnZYHQiV+o3RWQF5yWpoEp
hA8yQuCJjSs4QMaMRVkDSq+qCum4DqQs0l49l87hoPFu0vD4fTYFlEPKBsIv
nIYyng8fumIEXYnjxXKeIWe2dwEWl14wYngY49l6PoZUDUkGsEFCOp0fEN2Z
EcoCTtWPsLWqcan+b8KaVVVn24PkH3DH8bh0gjxeluuf0I9cZ1lyAKdRTPL3
ySGO3L9huo+TDPjHvN4eud/OcyAjZ+n44iqtJkzGYMIzoASA+jSFx9s83BkC
NKA1zmO/L0qgUxkL+BNGv+z9cu6Z1YkQhXsj2T7yRpSqGA/xNzoTZKKPS714
NYH+NKvggpbzcrZmig8qTYI6TZ3cef7m5PTOgP+fvHhJv78++r/eHL8+OsTf
T54ePHvmf9EnTp6+fPMMvnfyW3jz8cvnz49eHPLL8GnS+uj5wb/fYXHnzstX
p8cvXxw8u4P7Q0btvKSHZJYIEB8ciBHCghXZCSZ/BiK9e58BgDIznBH9jtLv
p0/u6jwreCrCJf4TwL9GepoBRUOZDTj6OF3mTTqvBzgBsM+rIsHLLNxxWqJw
SKINgJEZOJwfiKogzg5FZmR9F05uWcKCYeC8yZnx+XsX5NyRvOk/AC0mcIkh
8T/zbWK5qk5RyyD6N+hogHEslMqagLIkIsrK/e8s4VzZJ6ygkFXPgYbPSlq+
mVuGRGDKmHRVQRACbprX56SAJjTLEkTGBZxXVcu8ecW7S1kEkrlRIqBpdQuj
5Ldz5E8stSDsUhwL5MwVsh99DHAIX70D3GGKcwBb0Zk9/FUGr7IFcFPEpMbI
OSA0/QPAQFRdJvMQgSuYgTAVr8yMh9/i0ioSSnQvNd7ZDe/Q1lGG7HuNpqb3
0rouxy2gpxbsqQIeROrVnEYjBpeGU/TDVrSDCCWvzvPxOex3gpRGETTbgJ74
ZpWlyJhgB7A0uJUiESTTFMSBHA7Esw2luzFbghMcZ61rndef4dP3RskBajd+
TBz/KYjH5eusqdavWfZGYYbEwxoQLWFtlgc8oa3TC6pOJSgrI+keE1UEeMKy
rpgG4xh4q113iuYcmOAMZOlGdAhPmmB90yQHiJI8iCgEhwHoJPMB+J7kMxBf
aiVr4d18Pl+haguAv0yrvFwR2zgDEYaJdR+fBjag+oBKvmLeATBc8h4CjVpk
KfJ0Ik7fJn/67k9o4piQ0ko8JgOy35yvYVBQIGuatKaVFXJFsktcFpBLfHgS
NkXDfRsNVy5ZAyVCkzcr2sRwkiErxTHl3fqumYxuBZJQxMJ0DgozL0Am+PDp
T2YCHUCFYlgPiwHAvxCTQBGBj+QWvOVL+Ps7fx3eAaSngI/vQCAFBiJTvP39
C6eIR3v3gpktndUhCc3J65QBwsLsS8DEyxzk4Q/fkKGjkm8/8f0CpT0fi7id
LEGYKOtyCSejckEuRgdRHpM7+CFpMRMV/j3PuDNyh50PAe34zEllzQnmldfi
vCJUIh8cshSKmgDMQIvAWUbBAuHRUVX6mnF7SVIVSDx4xYyeIu8fWM2lXgEJ
ShHokzxF02YGtAStH96KAipItjwvi7Xn20Askhk9hjfWdfcud9soU8lk5Wk+
7ChdD2tEP1KS4abB1XR40XSAjNVYluGBwsGtykvimbxeuwPY8Krg6zghgYKM
QDGA8JmaySVpQlm8uoGnjG2B3J8XipKwYiQTuLk5ivQlEn4+JlmwIiTSayTg
oMXCu2csnQBZAl7TzFEJCwiTFZd5VRZkQxb10hKPKUIIDqWGrQIF2R0RGfbL
IisZ3h1/wydwFdZEBRBceKsAt1bpPPA54Mx/zsapEltvKgCtOxtf0CuyTh61
RlsFsjqgwgglVoEGOA5QXR42eSECs3LrCYl1Rd8M+CKMqC9+twtsC0S+syw2
ml0BVGbtWUlPJNEC6DS9NgXZX/TmupzbOwA3aYE2rnQyQUii6J6P8wZfb42K
zH8vWEI8tSJOC2c9vhjWTbZMCLIlHBvQhrHl8TDkc6VaaN7AzXghAzkrXBwF
DJsllecS9jzCAdB2VJK8yBcf5wbZparKiiYgNZPsjKrWzEVtqjJ6g8SzYLNE
HMWNAf9+wZjiOXjYoKe1W0oIEPQvsqsTloNO8/FF5tnGNq0TWez4oiiv5tlk
hkaLpwhKoA5kaTBfLQzHIWMHSytwHuwYgD9Bd8sCn9Yl3x8ZK5JfIhkvSzKy
knkBJNAZC70FAW8G0A0Xa+DRBFhDkPsVL+BuHL8CJpLOvFYKEz8YJT1EW6kB
aCPz/IJMSgNaTb2qx9mSTwI2k54Bn7oM9ApXAPo7inAwO9zOnIx5jIDAhwD/
0qYBgMHeZqBVAt4UZcHydb5MgSAMGDEmnl2gtQyoZTEESQjEfFZs+d562e88
my9lmnFZXqCxJOhtM5R0EAeFGAckBoWHNWmiVCqD+4FWyA9AlKlJjBIz6JSM
EoDQHz5MypqU3W++AW33VUpo8wyOU0xFQG3IeEOGANwE3w6eo8kXam8pJnNU
V+h1xgYYmlh19AqolRNQJAqW3BhrmXsDd8YzGYjMQNQ0r+rGLQEDs0icC6qW
c/8P/KifCLR1lvE//8PCbXhxSD83eJEfbM/IUnL7qV+c6w7Q+vn7TzBtR2T+
/Hudny1kbdtmxrendDpH75eAgPXv7qZrDiP6o4NxCc4f9pNveg41IT/1z3fo
cFpfZe9TxJw7IKm9VFYtmhhRFkNs8Su7NCEgA1QQgAnAdQRNBQUBvE5dLQNl
pkhpYUkTZXz60Fizc0Imx5//yUuuSKURigO7SqSKImtn3izg7DqF9wOQl4DY
WXveYC4m4YOpgu67RuOXsFuvkxK/qWVQC00ChSyoNKOImqnOtnldevdMzaSn
e2tb6yAJjG2G/H3GeANDvyC9X78pV6098KCTkuUakPDWIjD2aIJBkU2uyLWi
9NHT+rohn2BhDkikye5oLc8gupgWyC6zAtVNWrJD5RLFDdLUmzqbT4n+Cf9g
cQd4TXpZ5iRtEBmqEGxnsFNHJrN5lpKhYoG2AiSDnaXUSkBfe5bu3HFB5GqQ
ZCmw6A7vFnMALz/1Gr+XcZzauAHrcvFyGarPFp6UbD8BZ4wFw9n7g3QfID2+
IOmwISNmhmcuGJ02dlmIeQVoms5/5m8gTHxMKntei6SYE6Mdw5Oopjf8AIAb
53WwlRV9TCLydEW+COIWCFCENQk4qisHoYH0cbw1TuUvBbEIbMlJ/s+MxXVv
Eu+Rj4Thwd4BrUjySLZYQS9BN1st0ea1959794e7IHICRxogV1yixxzZ/ALl
kwvQJ+m7bdjbn9eIIg26VgYoUHgtStyR0wYvOgdRIFLOYSEs6uw+2NnhOZD+
tIUYtVsjQlconIEiF/wZLS2GLhBNImoQYRiCwHXRbJGuY5RnzbdGUghyjRBt
0jF4INTo2MSl3vEJ72Wai28eOTRcA9iD7h7We3TNGhBkRIzIl5H6xaD/rs7U
KKefunlWzJpzuvcrNCXj+vJlLsYVNP9nKuQQ+jBU8Y8u+hMGoCJWZwv1Gaiv
CxRQA5ZgdHJ8lZeg7yaHmfgQRSBSS80cjZ/LJTl5RCWq+I2JviGEC/46L3K4
CaRNOrlfZG9LybB1/AqU2+Tg6d2jExBQQfNR4s2G27O8WaRLoAPFBHRGkOu8
RqKqYSKOXWMTakpgTHN7bKSb8RiojFX2DbptxmBF7MpPQyJzjtEMSD1AxEwB
LycjMW3Ge06mGZkFEHcUVKqmi3g4WQXLRl47Y70C6g0SdIlnjpZGPDliZuUY
dH81RaAETXohalh1yyyCyE4kPL9Mz+a6Lj+lroHtf+kYQYC4vHaLcpJP12Ji
V5NAYG8sr87WbKjylhzxp7O/OBh4BB/Y+4BcKkc3NaKvlw1UpbOPjthOIKM8
zpdAmzEQLQlu3JJ4NeHPaplV0/kKqWbLK6q69nqJMnQ2n4ieTGsDLY4VVFGr
k2xZogZJ3ohYZxdVw+zonAzZI44l6qj4HPnDYoveVyJeldglYJ0CZF7L84PH
I+elMuI6PBRc5TPcKJlf1LiyeaG8SSdIvhF4nqfA+iarMbGUe58B+DnZwtHC
TBY+pkweDlY2svFFN0AA735tYQB+/gp9lbQQvaXqKWNLGIBgVQQrq39I+GDY
iNv4fuftURd/2RvAL7Mv7yyDIx4lbwpia4pCSAqbVER4J2Zz1dj4bGJrHwHB
83yc8S5PLIiMixHFTiy2H0QteVxStNYpojbi9yP5XENWNJhtns3S8fodb+Sd
DKsPrwC4uw8Fn35Odj6rW92V5dFezCD3f/Co+I5R8dHtB4GVMFbp8splisxC
OdPbCCNG/Ozv+PCnJPrqkevCSwcbM9w2j3UtdGmdPyT/zKqyfssvvSun75Zs
oTNrOS6KrLp2QbKeVYHBh5N355PqrV6u31sAALCi3Q6e4mN829l6QHT87O3b
l6+OXiTHJydvjvaTE47dukKD3prZIFKOErguhRai/lSQeAW07N9+/72j4dIV
sJotXmwh+E/oZqBSazay79hPaD5iQySdON6HFhkxTnIyxYxzeonMMe3N4+DH
aCjGoCqlzO2HZCaS0WJSNIKdnVWfwh03xO7ceyebfHaOtxlo75AY5cQske5+
sLjsJLvJXnIvuZ88SB4m37vku2HrH5d83IF/dj8+/vjs49/pn/6njpajjxh8
ANPi8X+Ef59lGOu7L8+bWwRDfDxR8v+C7hw+D0MkQ/gv3OieORC10cKRPD4+
ZKcLCJkwz+MQGABf0Lz02DOm8ubJLRDZU3SlJLrCv9OTryUm0wEFU+YAEMPr
jq95/3822aa1920/AQqAW5dZP+p8Mv2mFz2+Ctp0cJWP+BSP+CkdMeIrAErQ
FB0QomBclcxuhWQTYQQcbLHZ/c6LfGb+PUHC1mswEAOmF4UFZtcgrhvbU8JB
/tbixtEDzM+jj9S26PJW0EsrOKkbQ43haAfeiOW61tPo6aE8Rxf4oGbLrmdz
ytvUKzkI9oSIKrsuG/ccXhYA0vR8NeE9qC7hegOHvX7m3IcPgCTvZIn1p0/G
g24FlEh0EdKAvCDw5NbNl4vZ/2mHTPTdzaT3xvZ86j4qi0qIR9FFTLpkxn6K
/xXi87VzJ3pTPRGA/x7BPy3i1fMpva3CSXiuQ936P92w8j5C2PPphpXfZt9M
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
F5Qv8EZahm8BK3GPtnhsqHbO7h/nmye36/15H6MNeu0VmtRCTHmGk5z3ZKVG
CWQK8bIvyBXGlSE52Zoqx0lKNVAa/jPUtTuTuM0eGFuDrCTfU06lRhW4f6Cn
jYtS+RoyGbfb6GxF083C9CRdiafDx/xpzYJCgglq2FEXTcgEHOpNk1WzK+0L
1fBtbfvWRBiNeo9tdp6CFGPqWbdtKckWfmh6cqIZxwkQWMr0bFBfrT0VbJtX
eDT+3Wm2uz6zLYDp9AOD7fs7E7fOdU37eZH6PBzC7g+K3l6/rDJOMp96Rlo9
gaMFip93ohwY2dLPntiJvtajLlrXQvce6oDBpcAFspHbraj4uSRjfwbliBr0
lkI3sZ2ST2Odbh7h5fZwWVzxOzCWtprN9xEzDgTlig8uukOaANAq9yRhmVG6
TSrjxL3RemaTAne+RGdI/TB2Al8DMcQicHmhqiR3fviYK3naXBUaazrHlFbf
hJrfp9bKV6UVY8gEQ4GP4wuH38XFV4lw+UGVOexHfgqh8VR50vmgy5A83+du
eELLq9u1XnGBM1DNllrh1dJMj3T87iBE4TiNwsmlmXmk3tw4rjD8SIRhFFNx
25/vhv7nO5d8R9Y22HyVfXvLgT4KtJJdaqWIRIsHmqDxXUbTqX656YpuFK54
o5E2PfSTPqIfdL1fYW97uLebz6+ewf4V/a92cPf+yIPrhIPe+MeY4m/5qgXC
zV/t2fGNECf6+dBj1/9kYHv/pojzoWvl//bTl6yoZ7xvP93w1Q8d6/81r3Yu
kA6inoCbzpq8NW3mE3SqfPs7XJLWFm44Fv/EYOvb1g0H8gf5AA8ybC166PaX
pLPj3/8VFM/+vD14/NffzX4f3pzi9Rxfh5p3Nxwt6ZcNI7Ujx6m+voSLP48Z
riSH0RMtdr5Fok8rcGUbw8TZwPjF5LgF9jZFuekwMQvtp+k3wLEWk7nVTr6E
+Ha3+8XUKt7ybdnuBiJ8k9VsuBO3pWF9FOxGL/b+tKhXL9G5AT7EDL73lt56
NX/Yrvp/riNRbQp1Y9b65fTptuRpWV9cR50oyG7pbWKvTv5qNLAtjVDbSKdu
rymoohBF5ONtCzENTLbqizhSBlPy68+N3qF+XyaKdqjflxHReDVbnTPfpqf8
tfkX0MevoIi3JayfE0tvp8/QiIYK3f4mb5DwvvinddhxSM72jYeJKeQXE9rP
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

-->

</rfc>

