<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-westerlund-tsvwg-sctp-dtls-handshake-04" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="DTLS in SCTP">Datagram Transport Layer Security (DTLS) in the Stream Control Transmission Protocol (SCTP) DTLS Chunk</title>
    <seriesInfo name="Internet-Draft" value="draft-westerlund-tsvwg-sctp-dtls-handshake-04"/>
    <author initials="M." surname="Westerlund" fullname="Magnus Westerlund">
      <organization>Ericsson</organization>
      <address>
        <email>magnus.westerlund@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="C." surname="Porfiri" fullname="Claudio Porfiri">
      <organization>Ericsson</organization>
      <address>
        <email>claudio.porfiri@ericsson.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>Transport</area>
    <workgroup>TSVWG</workgroup>
    <abstract>
      <?line 96?>

<t>This document defines a usage of Datagram Transport Layer Security
(DTLS) 1.3 to protect the content of Stream Control Transmission
Protocol (SCTP) packets using the framework provided by the SCTP DTLS
chunk which we name DTLS in SCTP. DTLS in SCTP provides encryption,
source authentication, integrity and replay protection for the SCTP
association with in-band DTLS based key-management and mutual
authentication of the peers. The specification is enabling very
long-lived sessions of weeks and months and supports mutual
re-authentication and rekeying with ephemeral key exchange. This is
intended as an alternative to using DTLS/SCTP (RFC6083) and
SCTP-AUTH (RFC4895).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-westerlund-tsvwg-sctp-dtls-handshake/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Area Working Group (tsvwg) Working Group mailing list (<eref target="mailto:tsvwg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tsvwg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tsvwg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/gloinul/draft-westerlund-tsvwg-sctp-dtls-handshake"/>.</t>
    </note>
  </front>
  <middle>
    <?line 110?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>This document describes the usage of the Datagram Transport Layer
   Security (DTLS) protocol, as defined in
   DTLS 1.3 <xref target="RFC9147"/>, in the Stream Control
   Transmission Protocol (SCTP), as defined in <xref target="RFC9260"/> with SCTP
   DTLS chunk <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>.  This
   specification is intended as an alternative to DTLS/SCTP <xref target="RFC6083"/>
   and usage of SCTP-AUTH <xref target="RFC4895"/>.</t>
        <t>This specification provides mutual authentication of endpoints,
   data confidentiality, data origin authentication, data integrity
   protection, and data replay protection of SCTP packets. Ensuring
   these security services to the application and its upper layer
   protocol over SCTP.  Thus, it allows client/server applications to
   communicate in a way that is designed with communications
   privacy and preventing eavesdropping and detect tampering or
   message forgery.</t>
        <t>Applications using DTLS in SCTP can use all currently existing
   transport features provided by SCTP and its extensions, in some
   cases with some limitations, as specified in
   <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>. DTLS in SCTP supports:</t>
        <ul spacing="normal">
          <li>
            <t>preservation of message boundaries.</t>
          </li>
          <li>
            <t>no limitation on number of unidirectional and bidirectional streams.</t>
          </li>
          <li>
            <t>ordered and unordered delivery of SCTP user messages.</t>
          </li>
          <li>
            <t>the partial reliability extension as defined in <xref target="RFC3758"/>.</t>
          </li>
          <li>
            <t>multi-homing of the SCTP association per <xref target="RFC9260"/>.</t>
          </li>
          <li>
            <t>the dynamic address reconfiguration extension as defined in
 <xref target="RFC5061"/>.</t>
          </li>
          <li>
            <t>User messages of any size.</t>
          </li>
          <li>
            <t>SCTP Packets with a protected set of chunks up to a size of
2<sup>14</sup> (16384) bytes.</t>
          </li>
        </ul>
      </section>
      <section anchor="protocol_overview">
        <name>Protocol Overview</name>
        <t>DTLS in SCTP is a key management specification for the SCTP DTLS
   1.3 chunk <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/> that together
   utilizes all parts of DTLS 1.3 for the security functions like key
   exchange, authentication, encryption, integrity protection, and
   replay protection. All key management message exchange happens
   inband over the SCTP assocation. The basic functionalities and how
   things are related are described below.</t>
        <t>In a SCTP association where DTLS 1.3 Chunk usage has been
   negotiated in the SCTP INIT and INIT-ACK, to initilize and
   authenticate the peer the DTLS handshake is exchanged as SCTP user
   messages with the DTLS Chunk Key-Management Messages PPID (see section 10.6 of
   <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>) until an initial DTLS
   connection has been established.  If the DTLS handshake fails, the
   SCTP association is aborted. With succesful handshake and
   authentication of the peer the key material is configured for the
   DTLS 1.3 chunk. From that point until SCTP association termination
   the DTLS chunk will protect the SCTP packets. When the DTLS
   connection has been established and the DTLS Chunk configured with
   keys the PVALID chunk is exchanged to verify that no downgrade
   attack between any offered protection solutions has occurred. To
   prevent manipulation, the PVALID chunks are sent encapsulated in
   DTLS chunks.</t>
        <t>Assuming that the PVALID validation is successful the SCTP
   association is established and the Upper Layer Protocol (ULP) can
   start sending data over the SCTP association. From this point all
   chunks will be protected by encapsulating them in
   DTLS chunks as defined in <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>.
   The DTLS chunk protects all of the SCTP Chunks to be sent in a SCTP
   packet. Using the selected key-material the DTLS Protection
   operator protects the plain text producing a DTLS Record that is
   encapsualted in the DTLS chunk and the transmitted as a SCTP packet
   with a common header.</t>
        <t>In the receiving SCTP endpoint each incoming SCTP packet on any of
   its interfaces and ports are matched to the SCTP association based
   on ports and VTAG in the common header. In that association context
   for the DTLS chunk the DTLS Connection Index (DCI) is used to look
   up the key-material from the one DTLS connection used to
   authenticate the peer and establish this key-material. Using the
   identified key-material and context the content of the DTLS chunk
   is attempted to be processed, including replay protection,
   decryption, and integrity checking. And if decryption and integrity
   verification was successful the produced plain text of one or more
   SCTP chunks are provided for normal SCTP processing in the
   identified SCTP association along with associated per-packet meta
   data such as path received on, original packet size, and ECN bits.</t>
        <t>When mutual re-authentication or rekeying with ephemeral key
   exchange is needed or desired by either endpoint a new DTLS
   connection handshake is performed between the SCTP endpoints. A
   different DCI than currently used in the DTLS chunk are used to
   indicate that this is a new handshake. The DCI is sent as pre-amble
   to any DTLS message sent as SCTP user message. When the handshake
   has completed the DTLS in SCTP implementation can simply switch to
   use this DTLS connection's key-material in the DTLS chunk.  After a
   short while (no longer than 2 min) to enable any outstanding
   packets to drain from the network path between the endpoints the
   old DTLS connection can be terminated and the key-material deleted
   from the DTLS chunk's key store.</t>
        <t>The DTLS connection is free to send any alert, handshake message, or
   other non-application data to its peer at any point in time. Thus,
   enabling DTLS 1.3 Key Updates for example.
   All DTLS message will be sent by means of SCTP user messages
   with the DTLS Chunk Key-Management Messages PPID as specified in
   <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>.</t>
        <figure anchor="overview-layering">
          <name>DTLS in SCTP layer in regard to SCTP and upper layer protocol</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="496" viewBox="0 0 496 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,336" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,96" fill="none" stroke="black"/>
                <path d="M 152,32 L 152,96" fill="none" stroke="black"/>
                <path d="M 184,96 L 184,336" fill="none" stroke="black"/>
                <path d="M 224,208 L 224,272" fill="none" stroke="black"/>
                <path d="M 320,32 L 320,96" fill="none" stroke="black"/>
                <path d="M 400,208 L 400,272" fill="none" stroke="black"/>
                <path d="M 440,80 L 440,224" fill="none" stroke="black"/>
                <path d="M 8,32 L 136,32" fill="none" stroke="black"/>
                <path d="M 152,32 L 320,32" fill="none" stroke="black"/>
                <path d="M 320,64 L 424,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 320,96" fill="none" stroke="black"/>
                <path d="M 424,96 L 456,96" fill="none" stroke="black"/>
                <path d="M 336,128 L 352,128" fill="none" stroke="black"/>
                <path d="M 200,176 L 216,176" fill="none" stroke="black"/>
                <path d="M 8,208 L 184,208" fill="none" stroke="black"/>
                <path d="M 224,208 L 400,208" fill="none" stroke="black"/>
                <path d="M 192,240 L 216,240" fill="none" stroke="black"/>
                <path d="M 408,240 L 424,240" fill="none" stroke="black"/>
                <path d="M 8,272 L 184,272" fill="none" stroke="black"/>
                <path d="M 224,272 L 400,272" fill="none" stroke="black"/>
                <path d="M 200,304 L 216,304" fill="none" stroke="black"/>
                <path d="M 8,336 L 184,336" fill="none" stroke="black"/>
                <path d="M 184,272 L 200,304" fill="none" stroke="black"/>
                <path d="M 320,96 L 336,128" fill="none" stroke="black"/>
                <path d="M 184,208 L 200,176" fill="none" stroke="black"/>
                <path d="M 424,64 C 432.83064,64 440,71.16936 440,80" fill="none" stroke="black"/>
                <path d="M 424,240 C 432.83064,240 440,232.83064 440,224" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="416,240 404,234.4 404,245.6" fill="black" transform="rotate(180,408,240)"/>
                <polygon class="arrowhead" points="224,240 212,234.4 212,245.6" fill="black" transform="rotate(0,216,240)"/>
                <polygon class="arrowhead" points="200,240 188,234.4 188,245.6" fill="black" transform="rotate(180,192,240)"/>
                <g class="text">
                  <text x="228" y="52">DTLS</text>
                  <text x="264" y="52">1.3</text>
                  <text x="356" y="52">Keys</text>
                  <text x="72" y="68">ULP</text>
                  <text x="192" y="84">Key</text>
                  <text x="252" y="84">Management</text>
                  <text x="480" y="100">API</text>
                  <text x="380" y="116">User</text>
                  <text x="384" y="132">Level</text>
                  <text x="36" y="148">SCTP</text>
                  <text x="84" y="148">Chunks</text>
                  <text x="144" y="148">Handler</text>
                  <text x="396" y="148">Messages</text>
                  <text x="244" y="180">SCTP</text>
                  <text x="312" y="180">Unprotected</text>
                  <text x="392" y="180">Payload</text>
                  <text x="92" y="228">DTLS</text>
                  <text x="300" y="228">DTLS</text>
                  <text x="336" y="228">1.3</text>
                  <text x="96" y="244">Chunk</text>
                  <text x="96" y="260">Handler</text>
                  <text x="276" y="260">Protection</text>
                  <text x="356" y="260">Operator</text>
                  <text x="36" y="308">SCTP</text>
                  <text x="84" y="308">Header</text>
                  <text x="144" y="308">Handler</text>
                  <text x="244" y="308">SCTP</text>
                  <text x="304" y="308">Protected</text>
                  <text x="376" y="308">Payload</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+---------------+ +--------------------+
|               | |       DTLS 1.3     |  Keys
|      ULP      | |                    +-------------.
|               | |   Key Management   |              |
+---------------+-+---+----------------+            --+-- API
|                     |                 \    User     |
|                     |                  +-- Level    |
| SCTP Chunks Handler |                      Messages |
|                     |                               |
|                     | +-- SCTP Unprotected Payload  |
|                     |/                              |
+---------------------+    +---------------------+    |
|        DTLS         |    |       DTLS 1.3      |    |
|        Chunk        |<-->|                     |<--'
|       Handler       |    | Protection Operator |
+---------------------+    +---------------------+
|                     |\
| SCTP Header Handler | +-- SCTP Protected Payload
|                     |
+---------------------+
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="properties-of-dtls-in-sctp">
        <name>Properties of DTLS in SCTP</name>
        <t>DTLS in SCTP (as the combination of the DTLS chunk and the in-band
   authentication and key-management using DTLS handshakes defined in
   this document) has a number of properties that are attractive.</t>
        <ul spacing="normal">
          <li>
            <t>Provides confidentiality, integrity protection, and source
authentication for each SCTP packet.</t>
          </li>
          <li>
            <t>Provides replay protection on SCTP packet level preventing
malicious replay attacks on SCTP, both protecting the data as well
as the SCTP functions themselves.</t>
          </li>
          <li>
            <t>Provides mutual authentication of the endpoints based on any
authentication mechanism supported by DTLS.</t>
          </li>
          <li>
            <t>Uses parallel DTLS connections to enable mutual re-authentication
and rekeying with ephemeral key-exchange. Thus, enabling SCTP
association lifetimes without known limitations and without
needing to drain the SCTP association.</t>
          </li>
          <li>
            <t>Uses core of DTLS as it is and updates and fixes to DTLS security
properties can be implemented without further changes to this
specification.</t>
          </li>
          <li>
            <t>Secures all SCTP packets exchanged after SCTP association has
reached the established state and the initial key-exchange has
completed. Making targeted attacks against the SCTP protocol and
implementation much harder.</t>
          </li>
          <li>
            <t>DTLS in SCTP results in no limitations on user message
transmission or message sizes, those properties are the same as
for an unprotected SCTP association.</t>
          </li>
          <li>
            <t>Limited overhead on a per packet basis, with 4 bytes for the
DTLS chunk plus the DTLS record overhead. The DTLS
overhead is dependent on the DTLS version and cipher suit.</t>
          </li>
          <li>
            <t>Support of SCTP packet plain text payload sizes up to
2<sup>14</sup> bytes.</t>
          </li>
        </ul>
        <section anchor="benefits-compared-to-dtlssctp">
          <name>Benefits Compared to DTLS/SCTP</name>
          <t>DTLS/SCTP as defined by <xref target="I-D.ietf-tsvwg-dtls-over-sctp-bis"/>
   has several important differences most to the benefit of DTLS in
   SCTP. This section reviews these differences.</t>
          <ul spacing="normal">
            <li>
              <t>Replay Protection in DTLS/SCTP has some limitations due to
SCTP-AUTH <xref target="RFC4895"/> and its interaction with the SCTP implementation and
dependencies on the actual SCTP-AUTH rekeying frequency. DTLS
in SCTP relies on DTLS mechanism for replay protection that can
prevent both duplicates from being delivered as well as
preventing packets from outside the current window to be
delivered. Thus, a stronger protection especially for non-DATA
chunk is provided and protects the SCTP stack from replayed or
duplicated packets.</t>
            </li>
            <li>
              <t>Encryption in DTLS/SCTP is only applied to ULP data. For DTLS in
SCTP all chunk types after the association has reached
established state and the initial DTLS handshake has compeleted
will be encrypted. This, makes protocol attacks harder as a
third-party attacker will have less insight into SCTP protocol
state. Also, protocol header information likes PPIDs will also be
encrypted, which makes targeted attacks harder but may also make
management and debugging harder.</t>
            </li>
            <li>
              <t>DTLS/SCTP Rekeying is complicated and require advanced API or
user message tracking to determine when a key is no longer needed
so that it can be discarded. A DTLS/SCTP key that is prematurely
discarded can result in loss of parts of a user message and
failure of the assumptions on the transport where the sender
believes it delivered and the receiver never gets it. This
usually will result in the need to terminate the SCTP association
to restart the ULP session to avoid any issues due to
inconsistencies. DTLS in SCTP is robustly handling of any early
discard of the DTLS key-material after having switched to a new
established DTLS connection and its key-material. Any outstanding
packet that has not been decoded yet will simply be treated as
lost between the SCTP endpoints, and SCTP's retransmission will
retransmit any user message data that requires it. Also, the
algorithm for when to discard a DTLS connection can be much
simpler.</t>
            </li>
            <li>
              <t>DTLS/SCTP rekeying can put restrictions on user message sizes
unless the right APIs exist to the SCTP implementation to
determine the state of user messages. No such restriction exists
in DTLS in SCTP.</t>
            </li>
            <li>
              <t>By using the DTLS chunk that is acting on SCTP packet level
instead of user messages the consideration for extensions are
quite different. Only extensions that would affect the common
header or how packets are formed would interact with this
mechanism, any extension that just defines new chunks or
parameters for existing chunks is expected to just work and be
secured by the mechanism. DTLS/SCTP instead interact with
extensions that affects how user messages are handled.</t>
            </li>
            <li>
              <t>A known limitation is that DTLS in SCTP does not support more
than 2<sup>14</sup> bytes of chunks per SCTP packet. If the DTLS
implementation does not support the full DTLS record size the
maximum supported packet size might be even lower. However, this
value needs to be compared to the supported MTU of IP, and are
thus in reality often not an actual limitation. Only for some
special deployments or over loopback may this limitation be
visible. Also if the proposed extension to (D)TLS record sizes
<xref target="I-D.mattsson-tls-super-jumbo-record-limit"/> are published and
implemented this extension could be used to achieve full IP MTU
(64k).</t>
            </li>
          </ul>
          <t>There are several significant differences in regard to
   implementation between the two realizations.</t>
          <ul spacing="normal">
            <li>
              <t>DTLS in SCTP do requires the DTLS chunk to be implemented in the
SCTP stack implementation, and not as an adaptation layer above
the SCTP stack which DTLS/SCTP instead requires. This has some
extra challenges for operating system level
implementations. However, as some updates anyway will be required
to support the updated SCTP-AUTH specficiation the implementation
burden is likely similar in this regard.</t>
            </li>
            <li>
              <t>DTLS in SCTP implemented in operating system kernels will require
that the DTLS implementation is split. Where the protection
operations performed to create DTLS records needs to be
implemented in the kernel and have an appropriate API for setting
keying materia and managed the functions of the protection
operation. While the DTLS handshake is residing as an application
on top of SCTP interface.</t>
            </li>
            <li>
              <t>DTLS in SCTP can use a DTLS implementation that does not rely on
features from outside of the core protocol, where DTLS/SCTP
required a number of features as listed below:  </t>
              <ul spacing="normal">
                <li>
                  <t>DTLS Connection Index to identify which DTLS connection that
should process the DTLS record.</t>
                </li>
                <li>
                  <t>Support for DTLS records of the maximum size of 16 KB.</t>
                </li>
                <li>
                  <t>Optional to support negotiation of maximum DTLS record size
unless not supporting 16 KB records when it is
required. Even if implementing the negotiation,
interoperability failure may occur. DTLS in SCTP will only
require supporting DTLS record sizes that matches the
largest IP packet size that endpoint support or the SCTP
implementation.</t>
                </li>
                <li>
                  <t>Implementation is required to support turning off the DTLS
replay protection.</t>
                </li>
                <li>
                  <t>Implementation is required to not use DTLS Key-update
functionality. Where DTLS in SCTP is agnostic to its usage,
and it provides a useful tool to ensure that the key lifetime
is not an issue.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>The conclusion of these implementation details is that DTLS
   in SCTP can use existing DTLS implementations, at least for user
   land SCTP implementation. It is not known if any DTLS 1.3 stack
   exist that fully support the requirements of DTLS/SCTP. It is
   expected that a DTLS/SCTP implementation will have to also extend
   some DTLS implementation.</t>
        </section>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>This document uses the following terms:</t>
        <dl>
          <dt>Association:</dt>
          <dd>
            <t>An SCTP association.</t>
          </dd>
          <dt>Connection:</dt>
          <dd>
            <t>A DTLS connection. It is uniquely identified by a DTLS
   connection index (DCI).</t>
          </dd>
          <dt>Restart DCI:</dt>
          <dd>
            <t>A DTLS connection index indicating a DTLS connection to be
used for an SCTP Association Restart</t>
          </dd>
          <dt>Stream:</dt>
          <dd>
            <t>A unidirectional stream of an SCTP association.  It is
   uniquely identified by a stream identifier.</t>
          </dd>
          <dt>Traffic DCI:</dt>
          <dd>
            <t>A DTLS Connection index indicating a DTLS connection used to
protect the regular SCTP traffic, i.e. not a restart DCI.</t>
          </dd>
        </dl>
      </section>
      <section anchor="abbreviations">
        <name>Abbreviations</name>
        <dl>
          <dt>AEAD:</dt>
          <dd>
            <t>Authenticated Encryption with Associated Data</t>
          </dd>
          <dt>DCI:</dt>
          <dd>
            <t>DTLS Connection Index</t>
          </dd>
          <dt>DTLS:</dt>
          <dd>
            <t>Datagram Transport Layer Security</t>
          </dd>
          <dt>MTU:</dt>
          <dd>
            <t>Maximum Transmission Unit</t>
          </dd>
          <dt>PPID:</dt>
          <dd>
            <t>Payload Protocol Identifier</t>
          </dd>
          <dt>SCTP:</dt>
          <dd>
            <t>Stream Control Transmission Protocol</t>
          </dd>
          <dt>SCTP-AUTH:</dt>
          <dd>
            <t>Authenticated Chunks for SCTP <xref target="RFC4895"/></t>
          </dd>
          <dt>ULP:</dt>
          <dd>
            <t>Upper Layer Protocol</t>
          </dd>
        </dl>
      </section>
      <section anchor="conventions">
        <name>Conventions</name>
        <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.
<?line -6?>
        </t>
      </section>
    </section>
    <section anchor="dtls-usage-of-dtls-chunk">
      <name>DTLS usage of DTLS Chunk</name>
      <t>DTLS in SCTP uses the DTLS chunk as specified in
   <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>. The chunk if just
   repeated here for the reader's convience.</t>
      <figure anchor="sctp-dtls-chunk-structure">
        <name>DTLS Chunk Structure</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
              <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
              <path d="M 216,64 L 216,96" fill="none" stroke="black"/>
              <path d="M 232,64 L 232,96" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
              <path d="M 264,160 L 264,192" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 264,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="36" y="84">Type</text>
                <text x="64" y="84">=</text>
                <text x="92" y="84">0x4x</text>
                <text x="172" y="84">reserved</text>
                <text x="224" y="84">R</text>
                <text x="248" y="84">DCI</text>
                <text x="360" y="84">Chunk</text>
                <text x="412" y="84">Length</text>
                <text x="264" y="132">Payload</text>
                <text x="384" y="180">Padding</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0x4x   |reserved |R|DCI|         Chunk Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                            Payload                            |
|                                                               |
|                               +-------------------------------+
|                               |           Padding             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
      </figure>
      <dl>
        <dt>reserved: 5 bits</dt>
        <dd>
          <t>Reserved bits for future use.</t>
        </dd>
        <dt>R: 1 bit (boolean)</dt>
        <dd>
          <t>Restart indicator. If this bit is set this DTLS chunk is protected
with an restart DTLS Connection with the index indicated by the
DCI. If not set, then a traffic DCI is indicated.</t>
        </dd>
        <dt>DCI: 2 bits (unsigned integer)</dt>
        <dd>
          <t>DTLS Connection Index is the lower two bits of an DTLS Connection
 Index counter for the traffic or restart DTLS connection index.
 This is a counter implemented in DTLS in
 SCTP that is used to identify which DTLS connection instance that
 is capable of processing any received packet or DTLS message over
 an user message. This counter is recommended to be the lower part
 of a larger variable.
 DCI is unrelated to the DTLS Connection ID (CID) <xref target="RFC9147"/>.</t>
        </dd>
        <dt>Payload: variable length</dt>
        <dd>
          <t>One DTLS record.</t>
        </dd>
      </dl>
    </section>
    <section anchor="dtls-user-message">
      <name>DTLS messages over SCTP User Messages</name>
      <t>DTLS messages that are not DTLS records containing protected SCTP
chunk payloads will be sent as SCTP user messages using the format
defined below. A DTLS handshake message may be fragmented by DTLS to a
set of DTLS records of a maximum configured fragment size. Each DTLS
message fragment is sent as a SCTP user message on the same stream
where each message is configured for reliable and in-order delivery
with the PPID set to DTLS Chunk Key-Management Messages
<xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>. The SCTP user message is
created by having each DTLS message prepended with a single byte
containing the Restart flag and DTLS connection index value. These user
messages MAY contain one or more DTLS records. The SCTP stream ID used
MAY be any stream ID that the ULP alreay uses, and if not know Stream
0. Note that all fragments of a handshake message MUST be sent with
the same stream ID to ensure the in-order delivery.</t>
      <figure anchor="sctp-dtls-user-message">
        <name>DTLS User Message Structure</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
              <path d="M 88,64 L 88,96" fill="none" stroke="black"/>
              <path d="M 104,64 L 104,96" fill="none" stroke="black"/>
              <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
              <path d="M 264,160 L 264,192" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 136,96" fill="none" stroke="black"/>
              <path d="M 264,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 264,192" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="44" y="84">reserved</text>
                <text x="96" y="84">R</text>
                <text x="120" y="84">DCI</text>
                <text x="252" y="132">DTLS</text>
                <text x="304" y="132">Message</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|reserved |R|DCI|                                               |
+-+-+-+-+-+-+-+-+                                               |
|                                                               |
|                            DTLS Message                       |
|                                                               |
|                               +-------------------------------+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
      </figure>
      <dl>
        <dt>reserved: 5 bits</dt>
        <dd>
          <t>Reserved bits for future use. Sender MUST set these bits to 0 and
MUST be ignored on reception.</t>
        </dd>
        <dt>R: 1 bit (boolean)</dt>
        <dd>
          <t>Restart indicator. If this bit is set this DTLS message is for the
restart DTLS Connection with the index indicated by the
DCI field. If not set, then a traffic DCI is indicated.</t>
        </dd>
        <dt>DCI: 2 bits (unsigned integer)</dt>
        <dd>
          <t>DTLS Connection Index is the lower two bits of an DTLS Connection
 Index counter for the traffic or restart DTLS connection index.
 This is a counter implemented in DTLS in
 SCTP that is used to identify which DTLS connection instance that
 is capable of processing any received packet or DTLS message over
 an user message. This counter is recommended to be the lower part
 of a larger variable.
 DCI is unrelated to the DTLS Connection ID <xref target="RFC9147"/>.</t>
        </dd>
        <dt>DTLS Message: variable length</dt>
        <dd>
          <t>One or more DTLS records. In cases more
 than one DTLS record is included all DTLS records except the last
 MUST include a length field. Note that this matches what is
 specified in DTLS 1.3 <xref target="RFC9147"/> will always include the length
 field in each record.</t>
        </dd>
      </dl>
    </section>
    <section anchor="dtls-chunk-integration">
      <name>DTLS Chunk Integration</name>
      <t>The <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/> contains a high-level
description of the basic DTLS in SCTP architecture, this section deals
with details related to the DTLS 1.3 inband key-establishment
integration with SCTP.</t>
      <section anchor="state-machine">
        <name>State Machine</name>
        <t>DTLS in SCTP uses inband key-establishment, thus the DTLS handshake
establishes shared keys with the remote peer. As soon as the SCTP
State Machine enters PROTECTION INITILIZATION state, DTLS in SCTP is
responsible for progressing to the PROTECTED state when DTLS handshake
has completed. The DCI counter is initialized to the value zero that
is used for the initial DTLS handshake.</t>
        <section anchor="protection-initilization-state">
          <name>PROTECTION INITILIZATION state</name>
          <t>When entering PROTECTION INITILIZATION state, DTLS will start the handshake
according to <xref target="dtls-handshake"/>.</t>
          <t>DTLS being initialized for a new SCTP association will set the Traffic
DCI counter = 0, which implies a DCI field value of 0, for the initial
DTLS connection. The DTLS handshake messages are transmitted from this
endpoint to the peer using SCTP User message <xref target="dtls-user-message"/>
with the PPID value set to DTLS Chunk Key-Management Messages
<xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>. Note that in case of SCTP
association restart, the negotiation of the new Traffic DTLS
connection SHALL still use a new Traffic DCI counter = 0 as the restarting
SCTP endpoint may not know the old traffic DCI counter value for the
last active DTLS connection.</t>
          <t>When in PROTECTION INITILIZATION state, DTLS in SCTP MAY create a DTLS
connection for Restart purposes. Such Restart connection is identified
by a Restart DCI, that is based on a DCI counter independent from the
traffic DCI. Whilst the first Restart DCI has value = 0, further
Restart DCI will be increased using the same procedure than Traffic
DCI and implementing the same parallel connection mechanism (see
<xref target="add-dtls-connection"/> and <xref target="remove-dtls-connection"/>).</t>
          <t>When a successful handshake for the traffic DCI = 0 has been completed
and the keying material is established for DTLS connection and set for
the DCI the DTLS chunk Handler will move to the VALIDATION state and
perform validation and then move SCTP State Machine into PROTECTED
state.</t>
        </section>
        <section anchor="protected-state">
          <name>PROTECTED state</name>
          <t>In the PROTECTED state the currently active DTLS connection is used
for protection operation of the payload of SCTP chunks in each packet
per below specification.  When necessary to meet requirements on
periodic re-authentication of the peer and establishment of new
forward secrecy keys, the existing DTLS 1.3 connection is being
replaced with a new one by first opening a new parallel DTLS
connection as further specified in <xref target="parallel-dtls"/> and then close
the old DTLS connection.</t>
          <t>When in PROTECTED state, DTLS in SCTP if it has not yet been done,
SHALL create a DTLS connection for Restart purposes.</t>
        </section>
        <section anchor="shutdown-states">
          <name>SHUTDOWN states</name>
          <t>When the SCTP association leaves the ESTABLISHED state per <xref target="RFC9260"/>
to be shutdown the DTLS connection is kept and continues to protect
the SCTP packet payloads through the shutdown process.</t>
          <t>When the association reaches the CLOSED state as part of the SCTP
association closing process all DTLS connections existing (traffic and
restart) for this association are terminated without further
transmissions, i.e. DTLS close_notify is not transmitted.</t>
        </section>
      </section>
      <section anchor="dtls-connection-handling">
        <name>DTLS Connection Handling</name>
        <t>It's up to DTLS key-establishment function to manage the DTLS
connections and their related DCI state in the DTLS chunk.</t>
        <section anchor="add-dtls-connection">
          <name>Add a New DTLS Connection</name>
          <t>Either peer can add a new DTLS connection to the SCTP association at
any time, but no more than 2 DTLS connections can exist at the same
time per DTLS connection type (Traffic or Restart).  The new DCI
value shall be the last active Traffic or Restart DCI increased by one.
What is encoded in the DTLS chunk and DTLS user messages are the
DCI value modulo 4. This makes the attempt to create a new DTLS
connection to use the same, known, value of DCI from either peer.  A
new handshake will be initiated by DTLS using the new DCI.  Details of
the handshake are described in <xref target="dtls-handshake"/>.</t>
          <t>As either endpoint can initiate a DTLS handshake at the same time,
either endpoint may receive a DTLS ClientHello message when it has
sent its own ClientHello. In this case the ClientHello from the
endpoint that had the DTLS Client role in the establishment of the
previous DTLS connection shall be continued to be processed and the
other dropped.</t>
          <t>When the handshake has been completed successfully, the new DTLS
connection will be possible to use, if the handshake is
not completed successfully, the new DCI value will not be considered
used and a next DTLS handshake attempt will reuse that DCI.</t>
        </section>
        <section anchor="remove-dtls-connection">
          <name>Remove an existing DTLS Connection</name>
          <t>A DTLS connection is removed when a
newer DTLS connection is in use. It is RECOMMENDED to not initiate
removal until at least one SCTP packet protected by the new DTLS
connection has been received, and any transmitted packets protected
using the new DTLS connection has been acknowledge, alternatively one
Maximum Segment Lifetime (120 seconds) has passed since the last SCTP
packet protected by the old DTLS connection was transmitted.</t>
          <t>Either peers can initialize the removal of a DTLS connection from the
current SCTP association when needed when a new have been established.
The closing of the DTLS connection when the SCTP association is in
PROTECTED and ESTABLISHED state is done by having the DTLS connection
send a DTLS close_notify. When DTLS closure for a DTLS connection is
completed, the related DCI information in the DTLS chunk is released.</t>
        </section>
        <section anchor="removal_dtls_consideration">
          <name>Considerations about removal of DTLS Connections</name>
          <t>Removal of a DTLS connection may happen under circumstances as
described above in <xref target="remove-dtls-connection"/> in different states
of the Association. This section describes how the implementation
should take care of the DTLS connection removal in details.</t>
          <t>The initial DTLS connection exists as soon as Association reaches
the PROTECTED state. As long as one DCI only exists, that DTLS
connection SHALL NOT be removed as it won't be possible for the
Association to proceed further. In such case the implementation
SHALL take care of instantiating all the needed DCI and provide
them valid keys in order to reach a condition where failure in
the current DCI, or in any alternative DCI, won't cause a deadlock.
In general a DTLS connection can be removed when there's at least
another active DTLS connection with valid keys that can be used
for negotiating further DTLS DTLS 1.3 connections.
In case the DTLS connection is removed and no useable DCI exist
for DTLS 1.3 negotiation, the Association SHALL be ABORTED.</t>
          <t>It is up to the implementation to guarantee that at least one
available DCI and a spare DCI exists at any time, for avoiding
that undesired DTLS connection closure causes the Association abortion.</t>
        </section>
      </section>
      <section anchor="dtls-key-update">
        <name>DTLS Key Update</name>
        <t>To perform a DTLS Key Update when using the DTLS chunk for protection
the following process is performed. Either endpoint can trigger a DTLS
key update when needed to update the key used. The DTLS key-update
process is detailed in Section 8 of <xref target="RFC9147"/> including a example of
the DTLS key update procedure. Note that in line with DTLS, and in
contrast to TLS, DTLS in SCTP endpoints MUST NOT start using new epoch
keys until the DTLS ACK has been recived. This to avoid being unable
to process any DTLS chunk due to the key-update in case of network
packet reordering or usage of multiple paths.</t>
        <t>Note: The below role describes the keys in realtion to the endpoint
and traffic it will receive or send. This will have to be translated
into client or server key depending on the role the endpoint has in
the DTLS connection the KeyUpdate happens in.</t>
        <section anchor="initiator">
          <name>Initiator</name>
          <t>The below assumes that the Intitiator (I) are currentnly using key
epoch N.</t>
          <ol spacing="normal" type="1"><li>
              <t>The endpoint Initiates the key update and generates the new key
  for Epoch N+1. Epoch N+1 transmission key-materaial is set for the
  current DCI and epoch N+1 but not yet enabled for use. DTLS
  generates DTLS records containing the KeyUpdate DTLS message and
  update_requested, which is then sent using SCTP user message
  (<xref target="dtls-user-message"/>) to the responder.</t>
            </li>
            <li>
              <t>Initiator receives a DTLS user message containing the DTLS ACK
  message acknowledging the reception of the KeyUpdate message sent in
  step 1. The Initiator actives the new Epoch N+1 key in the DTLS
  chunk for protection of future transmissions of SCTP packets. The
  epoch N send direction key can be removed from the DTLS chunk key
  store.</t>
            </li>
            <li>
              <t>Initiator receives a DTLS user message with the Responder's
  KeyUpdate message. The initator generates the recevie keys for epoch
  N+1 using the received message and installs them in the DTLS chunks
  key store. Then it generates a DTLS ACK for the KeyUpdate and sends
  it to the responder as a SCTP user message.</t>
            </li>
            <li>
              <t>When the first SCTP packet protected by epoch N+1 has been
  received and succesfully decrypted by DTLS chunk the epoch N reception
  keys can be removed. Although to deal with network reordering, a
  delay of no more than 2 minutes are RECOMMENDED.</t>
            </li>
          </ol>
          <t>This completes the key-update procedure.</t>
          <t>Note that even if both endpoints runs the Initiator process the
KeyUpdate will complete. The main difference is that step 3 may occur
before step 2 has happened.</t>
        </section>
        <section anchor="responder">
          <name>Responder</name>
          <t>The process for a responder to a peer initiating KeyUpdate.</t>
          <ol spacing="normal" type="1"><li>
              <t>The responder receives an SCTP DTLS user message containing a
  KeyUpdate message. The epoch N+1 keys reception keys are generated
  and installed into the DTLS chunk key store. A DTLS ACK message is
  generated and transmitted to the peer using a SCTP user message.</t>
            </li>
            <li>
              <t>The responder initiates its own Key Update by generating keys and
  creating the KeyUpdate message. The send direction keys for epoch
  N+1 is installed but not enabled for use. The KeyUpdate message is
  transmitted to the peer using a SCTP user message.</t>
            </li>
            <li>
              <t>The responder receives a DTLS user message containing the DTLS
  ACK message acknowledging the reception of the KeyUpdate message
  sent in step 2. The responder actives the new Epoch N+1 key in the
  DTLS chunk for protection of future transmissions of SCTP
  packets. The epoch N send direction key can be removed from the DTLS
  chunk key store.</t>
            </li>
            <li>
              <t>When the first SCTP packet protected by epoch N+1 has been
  received and succesfully decrypted by DTLS chunk the epoch N reception
  keys can be removed. Although to deal with network reordering, a
  delay of no more than 2 minutes are RECOMMENDED.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="error-cases">
        <name>Error Cases</name>
        <t>As DTLS has its own error reporting mechanism by exchanging DTLS alert
messages no new DTLS related cause codes are defined to use the error
handling defined in <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>.</t>
        <t>When DTLS encounters an error it may report that issue using DTLS
alert message to its peer by putting the created DTLS record in a SCTP
user message (<xref target="dtls-user-message"/>).  This is independent of what to do
in relation to the SCTP association.  Depending on the severance of
the error different paths can be the result:</t>
        <dl>
          <dt>Non-critical:</dt>
          <dd>
            <t>the DTLS connection can continue to protect
   the SCTP association. In this case the issue may be worth reporting
   to the peer using a DTLS alert message, but otherwise continue
   without further action.</t>
          </dd>
          <dt>Critical, but not immediately fatal:</dt>
          <dd>
            <t>If the DTLS connection has a
   critical issue, but can still protect packets then a the endpoint
   SHOULD attempt to establish a new DTLS connection. If that succeeds
   then the SCTP association switches over to the new DTLS connection
   and can terminate the old one including reporting the error. In
   case the establishment fails, then this critical issue MUST be reported
   to the SCTP association so that it can send an ABORT chunk with the
   Error in Protection cause code. This will terminate the SCTP
   association immediately, provide ULP with notification of the
   failure and speeding up any higher layer management of the failure.</t>
          </dd>
          <dt>Critical, and immediately fatal:</dt>
          <dd>
            <t>If the DTLS connection fails so
   that no further data can be protected (i.e. either sent or
   received) with maintained security then it is not possible to
   establish a new DTLS connection and DTLS will
   have to indicate this to the SCTP implementation so it can perform
   a one sides SCTP association termination. This will lead to an
   eventual SCTP association timeout in the peer.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="dtls-considerations">
      <name>DTLS Considerations</name>
      <section anchor="version-of-dtls">
        <name>Version of DTLS</name>
        <t>This document defines the usage of DTLS 1.3 <xref target="RFC9147"/>.
   Earlier versions of DTLS MUST NOT be used
   (see <xref target="RFC8996"/>). It is expected that DTLS in SCTP as described in
   this document will work with future versions of DTLS.</t>
        <t>Only one version of DTLS MUST be used during the lifetime of an
   SCTP Association, meaning that the procedure for replacing the DTLS
   version in use requires the existing SCTP Association to be
   terminated and a new SCTP Association with the desired DTLS version
   to be instantiated.</t>
      </section>
      <section anchor="configuration-of-dtls">
        <name>Configuration of DTLS</name>
        <section anchor="general">
          <name>General</name>
          <t>The DTLS Connection ID SHOULD NOT be included in the DTLS records as
   it is not needed, the DTLS chunk indicates which DTLS connection
   the DTLS records are intended for using the DCI bits. Avoiding
   overhead and addition implementation requirements on DTLS
   implementation.</t>
          <t>The DTLS record length field is normally not needed as the DTLS
   Chunk provides a length field unless multiple records are put in
   same DTLS chunk payload or user message. If multiple DTLS records
   are included in one DTLS chunk payload or user message the DTLS
   record length field MUST be present in all but the last.</t>
          <t>DTLS record replay detection MUST be used.</t>
          <t>Sequence number size can be adapted based on how quickly it wraps.</t>
          <t>Many of the TLS registries have a "Recommended" column. Parameters
   not marked as "Y" are NOT RECOMMENDED to support in DTLS in
   SCTP. Non-AEAD cipher suites or cipher suites without
   confidentiality MUST NOT be supported. Cipher suites and parameters
   that do not provide ephemeral key-exchange MUST NOT be supported.</t>
        </section>
        <section anchor="authentication-and-policy-decisions">
          <name>Authentication and Policy Decisions</name>
          <t>DTLS in SCTP MUST be mutually authenticated. Authentication is the
process of establishing the identity of a user or system and verifying
that the identity is valid. DTLS only provides proof of possession of
a key. DTLS in SCTP MUST perform identity authentication. It is
RECOMMENDED that DTLS in SCTP is used with certificate-based
authentication. When certificates are used the application using DTLS
in SCTP is responsible for certificate policies, certificate chain
validation, and identity authentication (HTTPS does for example match
the hostname with a subjectAltName of type dNSName). The application
using DTLS in SCTP defines what the identity is and how it is encoded
and the client and server MUST use the same identity format. Guidance
on server certificate validation can be found in
<xref target="I-D.ietf-uta-rfc6125bis"/>. DTLS in SCTP enables periodic transfer of
mutual revocation information (OSCP stapling) every time a new
parallel connection is set up. All security decisions MUST be based on
the peer's authenticated identity, not on its transport layer
identity.</t>
          <t>It is possible to authenticate DTLS endpoints based on IP addresses in
certificates. SCTP associations can use multiple IP addresses per SCTP
endpoint. Therefore, it is possible that DTLS records will be sent
from a different source IP address or to a different destination IP
address than that originally authenticated. This is not a problem
provided that no security decisions are made based on the source or
destination IP addresses.</t>
        </section>
        <section anchor="new-connections">
          <name>New Connections</name>
          <t>Implementations MUST set up a new DTLS connection using a full handshake
before any of the
certificates expire. It is RECOMMENDED that all negotiated and
exchanged parameters are the same except for the timestamps in the
certificates. Clients and servers MUST NOT accept a change of identity
during the setup of a new connections, but MAY accept negotiation of
stronger algorithms and security parameters, which might be motivated
by new attacks.</t>
          <t>Allowing new connections can enable denial-of-service attacks. The
endpoints MUST limit the number of simultaneous connections to two.</t>
          <t>To force attackers to do dynamic key exfiltration and limit the
amount of compromised data due to key compromise, implementations MUST
have policies for how often to set up new connections with ephemeral
key exchange such as ECDHE. Implementations SHOULD set up new
connections frequently to force attackers to dynamic key
extraction. E.g., at least every hour and every 100 GB of data which
is a common policy for IPsec <xref target="ANSSI-DAT-NT-003"/>. See
<xref target="I-D.ietf-tls-rfc8446bis"/> for a more detailed discussion on key
compromise and key exfiltration in (D)TLS. As recommended in
<xref target="KTH-NCSA"/>, resumption can be used to chain the connections,
increasing security by forcing an adversary to break them in sequence.</t>
          <t>For many DTLS in SCTP deployments the SCTP association is expected to
have a very long lifetime of months or even years. For associations
with such long lifetimes there is a need to frequently re-authenticate
both client and server by setting up a new connection using a full
handshake. TLS Certificate
lifetimes significantly shorter than a year are common which is
shorter than many expected SCTP associations protected by DTLS in
SCTP.</t>
        </section>
        <section anchor="padding-of-dtls-records">
          <name>Padding of DTLS Records</name>
          <t>Both SCTP and DTLS contains mechanisms to padd SCTP payloads, and DTLS
records respectively. If padding of SCTP packets are desired to hide
actual message sizes it RECOMMEDED to use the SCTP Padding Chunck
<xref target="RFC4820"/> to generate a consistent SCTP payload size. Support of this
chunk is only required on the sender side. However, if the PAD chunk
is not supported DTLS padding MAY be used.</t>
          <t>It needs to be noted that independent if SCTP padding or DTLS padding
is used the padding is not taken into account by the SCTP congestion
control. Extensive use of padding has potential for worsen congestion
situations as the SCTP association will consume more bandwidth than
its derived share by the congestion control.</t>
          <t>The use of SCTP PAD chunk is recommened as it at least can enable
future extension or SCTP implementation that account also for the
padding. Use of DTLS padding hides this packet expansion from SCTP.</t>
        </section>
        <section anchor="dtls-13">
          <name>DTLS 1.3</name>
          <t>DTLS 1.3 is used instead of DTLS 1.2 being a newer protocol that
addresses known vulnerabilities and only defines strong algorithms
without known major weaknesses at the time of publication.</t>
          <t>DTLS 1.3 requires rekeying before algorithm specific AEAD limits have
been reached. Implementations MAY setup a new DTLS connection instead
of using key-update.</t>
          <t>In DTLS 1.3 any number of tickets can be issued in a connection and
the tickets can be used for resumption as long as they are valid,
which is up to seven days. The nodes in a resumed connection have the
same roles (client or server) as in the connection where the ticket
was issued. Resumption can have significant latency benefits for
quickly restarting a broken DTLS/SCTP association. If tickets and
resumption are used it is enough to issue a single ticket per
connection.</t>
          <t>The PSK key exchange mode psk_ke MUST NOT be used as it does not
provide ephemeral key exchange.</t>
        </section>
      </section>
    </section>
    <section anchor="establishing-dtls-in-sctp">
      <name>Establishing DTLS in SCTP</name>
      <t>This section specifies how DTLS in SCTP is established
   <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>.</t>
      <t>A DTLS in SCTP Association is built up with traffic
   DTLS connection and Restart DTLS connection.</t>
      <t>Traffic DTLS connection is established as part of extra procedures
   for the DTLS chunk initial handshake (see
   <xref target="initial_dtls_connection"/>) whilst Restart DTLS connection may be
   established when Association is in PROTECTION INITILIZATION state
   or later, and follows the procedure described in
   <xref target="further_dtls_connection"/>.</t>
      <section anchor="dtls-handshake">
        <name>DTLS Handshake</name>
        <section anchor="initial_dtls_connection">
          <name>Handshake of initial DTLS connection</name>
          <t>The handshake of the initial DTLS connection is part of the
   DTLS in SCTP Association initialization.
   The initialization is split in three distinct phases:</t>
          <ul spacing="normal">
            <li>
              <t>SCTP Handshake</t>
            </li>
            <li>
              <t>DTLS Handshake</t>
            </li>
            <li>
              <t>Validation</t>
            </li>
          </ul>
          <t>Moving towards next phase is possible only when the previous
   phase handshake is completed.</t>
          <t>SCTP Handshake is strictly compliant to <xref target="RFC9260"/>.</t>
          <t>As soon the SCTP Association has entered the SCTP state PROTECTION
   INITILIZATION as defined by <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/> the
   DTLS handshake procedure is initiated by the endpoint that has
   initiated the SCTP association. The initial DTLS handshake or as a
   result of a SCTP association restart SHALL use DCI = 0;</t>
          <t>The DTLS endpoint will send the DTLS message in one or more SCTP
   user message depending if the DTLS endpoint fragments the message
   or not <xref target="dtls-user-message"/>.  The DTLS instance SHOULD NOT
   use DTLS retransmission to repair any packet losses of handshake
   message fragment. Note: If the DTLS implementation support
   configuring a MTU larger than the actual IP MTU it MAY be used as
   SCTP provides reliability and fragmentation.</t>
          <t>If the DTLS handshake is successful in establishing a security
   context to protect further communication and the peer identity is
   accepted the keying material is installed for the DTLS chunk. This
   then triggers validated of the association establishment (see
   <xref target="protocol_overview"/>) by handshaking PVALID chunks inside DTLS
   CHUNK payload.</t>
          <t>Once the Association has been validated, then the SCTP association
   is informed that it can move to the PROTECTED state.</t>
          <t>If the DTLS handshake failed the SCTP association SHALL be aborted
   and an ERROR chunk with the Error in Protection error cause, with
   the appropriate extra error causes is generated, the right
   selection of "Error During Protection Handshake" or "Timeout During
   Protection Handshake or Validation".</t>
          <figure anchor="sctp-DTLS-initial-dtls-connection">
            <name>Handshake of initial DTLS connection</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="536" viewBox="0 0 536 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,48 L 40,368" fill="none" stroke="black"/>
                  <path d="M 408,48 L 408,368" fill="none" stroke="black"/>
                  <path d="M 440,64 L 440,112" fill="none" stroke="black"/>
                  <path d="M 440,160 L 440,208" fill="none" stroke="black"/>
                  <path d="M 440,256 L 440,272" fill="none" stroke="black"/>
                  <path d="M 440,320 L 440,368" fill="none" stroke="black"/>
                  <path d="M 40,64 L 200,64" fill="none" stroke="black"/>
                  <path d="M 256,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 48,80 L 184,80" fill="none" stroke="black"/>
                  <path d="M 272,80 L 408,80" fill="none" stroke="black"/>
                  <path d="M 40,96 L 168,96" fill="none" stroke="black"/>
                  <path d="M 280,96 L 400,96" fill="none" stroke="black"/>
                  <path d="M 440,96 L 480,96" fill="none" stroke="black"/>
                  <path d="M 48,112 L 176,112" fill="none" stroke="black"/>
                  <path d="M 280,112 L 408,112" fill="none" stroke="black"/>
                  <path d="M 40,160 L 120,160" fill="none" stroke="black"/>
                  <path d="M 328,160 L 400,160" fill="none" stroke="black"/>
                  <path d="M 48,176 L 64,176" fill="none" stroke="black"/>
                  <path d="M 376,176 L 408,176" fill="none" stroke="black"/>
                  <path d="M 40,192 L 64,192" fill="none" stroke="black"/>
                  <path d="M 368,192 L 400,192" fill="none" stroke="black"/>
                  <path d="M 440,192 L 480,192" fill="none" stroke="black"/>
                  <path d="M 48,208 L 152,208" fill="none" stroke="black"/>
                  <path d="M 288,208 L 408,208" fill="none" stroke="black"/>
                  <path d="M 48,256 L 136,256" fill="none" stroke="black"/>
                  <path d="M 304,256 L 408,256" fill="none" stroke="black"/>
                  <path d="M 40,272 L 136,272" fill="none" stroke="black"/>
                  <path d="M 304,272 L 400,272" fill="none" stroke="black"/>
                  <path d="M 440,272 L 528,272" fill="none" stroke="black"/>
                  <path d="M 40,320 L 96,320" fill="none" stroke="black"/>
                  <path d="M 328,320 L 400,320" fill="none" stroke="black"/>
                  <path d="M 48,336 L 104,336" fill="none" stroke="black"/>
                  <path d="M 336,336 L 408,336" fill="none" stroke="black"/>
                  <path d="M 440,336 L 512,336" fill="none" stroke="black"/>
                  <path d="M 424,48 C 432.83064,48 440,55.16936 440,64" fill="none" stroke="black"/>
                  <path d="M 424,128 C 432.83064,128 440,120.83064 440,112" fill="none" stroke="black"/>
                  <path d="M 424,144 C 432.83064,144 440,151.16936 440,160" fill="none" stroke="black"/>
                  <path d="M 424,224 C 432.83064,224 440,216.83064 440,208" fill="none" stroke="black"/>
                  <path d="M 424,240 C 432.83064,240 440,247.16936 440,256" fill="none" stroke="black"/>
                  <path d="M 424,288 C 432.83064,288 440,280.83064 440,272" fill="none" stroke="black"/>
                  <path d="M 424,304 C 432.83064,304 440,311.16936 440,320" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="408,320 396,314.4 396,325.6" fill="black" transform="rotate(0,400,320)"/>
                  <polygon class="arrowhead" points="408,272 396,266.4 396,277.6" fill="black" transform="rotate(0,400,272)"/>
                  <polygon class="arrowhead" points="408,192 396,186.4 396,197.6" fill="black" transform="rotate(0,400,192)"/>
                  <polygon class="arrowhead" points="408,160 396,154.4 396,165.6" fill="black" transform="rotate(0,400,160)"/>
                  <polygon class="arrowhead" points="408,96 396,90.4 396,101.6" fill="black" transform="rotate(0,400,96)"/>
                  <polygon class="arrowhead" points="408,64 396,58.4 396,69.6" fill="black" transform="rotate(0,400,64)"/>
                  <polygon class="arrowhead" points="56,336 44,330.4 44,341.6" fill="black" transform="rotate(180,48,336)"/>
                  <polygon class="arrowhead" points="56,256 44,250.4 44,261.6" fill="black" transform="rotate(180,48,256)"/>
                  <polygon class="arrowhead" points="56,208 44,202.4 44,213.6" fill="black" transform="rotate(180,48,208)"/>
                  <polygon class="arrowhead" points="56,176 44,170.4 44,181.6" fill="black" transform="rotate(180,48,176)"/>
                  <polygon class="arrowhead" points="56,112 44,106.4 44,117.6" fill="black" transform="rotate(180,48,112)"/>
                  <polygon class="arrowhead" points="56,80 44,74.4 44,85.6" fill="black" transform="rotate(180,48,80)"/>
                  <g class="text">
                    <text x="40" y="36">Initiator</text>
                    <text x="408" y="36">Responder</text>
                    <text x="228" y="68">[INIT]</text>
                    <text x="228" y="84">[INIT-ACK]</text>
                    <text x="468" y="84">SCTP</text>
                    <text x="200" y="100">[COOKIE</text>
                    <text x="256" y="100">ECHO]</text>
                    <text x="208" y="116">[COOKIE</text>
                    <text x="260" y="116">ACK]</text>
                    <text x="164" y="164">[DATA(DTLS</text>
                    <text x="236" y="164">Client</text>
                    <text x="296" y="164">Hello)]</text>
                    <text x="108" y="180">[DATA(DTLS</text>
                    <text x="180" y="180">Server</text>
                    <text x="232" y="180">Hello</text>
                    <text x="272" y="180">...</text>
                    <text x="332" y="180">Finished)]</text>
                    <text x="468" y="180">DTLS</text>
                    <text x="108" y="196">[DATA(DTLS</text>
                    <text x="200" y="196">Certificate</text>
                    <text x="264" y="196">...</text>
                    <text x="324" y="196">Finished)]</text>
                    <text x="196" y="212">[DATA(DTLS</text>
                    <text x="264" y="212">ACK)]</text>
                    <text x="160" y="260">[DTLS</text>
                    <text x="244" y="260">CHUNK(PVALID)]</text>
                    <text x="492" y="260">VALIDATION</text>
                    <text x="160" y="276">[DTLS</text>
                    <text x="244" y="276">CHUNK(PVALID)]</text>
                    <text x="120" y="324">[DTLS</text>
                    <text x="204" y="324">CHUNK(DATA(APP</text>
                    <text x="296" y="324">DATA))]</text>
                    <text x="464" y="324">APP</text>
                    <text x="500" y="324">DATA</text>
                    <text x="128" y="340">[DTLS</text>
                    <text x="212" y="340">CHUNK(DATA(APP</text>
                    <text x="304" y="340">DATA))]</text>
                    <text x="216" y="356">...</text>
                    <text x="216" y="372">...</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
Initiator                                     Responder
    |                                             | -.
    +--------------------[INIT]------------------>|   |
    |<-----------------[INIT-ACK]-----------------+   | SCTP
    +----------------[COOKIE ECHO]--------------->|   +-----
    |<----------------[COOKIE ACK]----------------+   |
    |                                             | -'
    |                                             | -.
    +----------[DATA(DTLS Client Hello)]--------->|   |
    |<--[DATA(DTLS Server Hello ... Finished)]----+   | DTLS
    +---[DATA(DTLS Certificate ... Finished)]---->|   +-----
    |<-------------[DATA(DTLS ACK)]---------------+   |
    |                                             | -'
    |                                             | -.
    |<-----------[DTLS CHUNK(PVALID)]-------------+   | VALIDATION
    +------------[DTLS CHUNK(PVALID)]------------>|   +-----------
    |                                             | -'
    |                                             | -.
    +-------[DTLS CHUNK(DATA(APP DATA))]--------->|   | APP DATA
    +<-------[DTLS CHUNK(DATA(APP DATA))]---------+   +---------
    |                    ...                      |   |
    |                    ...                      |   |

]]></artwork>
            </artset>
          </figure>
          <t>The <xref target="sctp-DTLS-initial-dtls-connection"/> shows a successfull
handshake and highlits the different parts of the setup. DTLS
handshake messages are transported by means of DATA Chunks
with the DTLS Chunk Key-Management Messages PPID.</t>
        </section>
        <section anchor="further_dtls_connection">
          <name>Handshake of further DTLS connections</name>
          <t>When the SCTP Association has entered the PROTECTED state, each of
   the endpoint can initiate a DTLS handshake for rekeying when
   necessary of the traffic or restart DTLS connections.</t>
          <t>The DTLS endpoint will if necessary fragment the handshake into
   multiple records. Each DTLS handshake message fragment
   is sent as a SCTP user message <xref target="dtls-user-message"/>.
   The DTLS instance SHOULD NOT use DTLS retransmission to repair any
   packet losses of handshake message fragment. Note: If the DTLS
   implementation support configuring a MTU larger than the actual IP
   MTU it could be used as SCTP provides reliability and
   fragmentation.</t>
          <t>If the DTLS handshake failed the SCTP association SHALL generate
   an ERROR chunk with the Error in Protection error cause, with
   extra error causes "Error During Protection Handshake".</t>
          <t>The DCI to be used for the handshake depends on the purpose
   of the DTLS connection. If this DTLS connection is being used
   for traffic purpose, DCI value is computed as the last active
   Traffic DCI increased by one modulo 4.
   If this DTLS connection is being used for Restart purpose
   DCI value is computed as the last active Restart DCI increased
   by one modulo 4 and setting R bit to 1.</t>
          <figure anchor="sctp-DTLS-further-dtls-connection">
            <name>Handshake of further DTLS connection</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="448" viewBox="0 0 448 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,48 L 40,128" fill="none" stroke="black"/>
                  <path d="M 408,48 L 408,128" fill="none" stroke="black"/>
                  <path d="M 40,64 L 120,64" fill="none" stroke="black"/>
                  <path d="M 328,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 48,80 L 64,80" fill="none" stroke="black"/>
                  <path d="M 376,80 L 408,80" fill="none" stroke="black"/>
                  <path d="M 40,96 L 64,96" fill="none" stroke="black"/>
                  <path d="M 368,96 L 400,96" fill="none" stroke="black"/>
                  <path d="M 48,112 L 152,112" fill="none" stroke="black"/>
                  <path d="M 288,112 L 408,112" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="408,96 396,90.4 396,101.6" fill="black" transform="rotate(0,400,96)"/>
                  <polygon class="arrowhead" points="408,64 396,58.4 396,69.6" fill="black" transform="rotate(0,400,64)"/>
                  <polygon class="arrowhead" points="56,112 44,106.4 44,117.6" fill="black" transform="rotate(180,48,112)"/>
                  <polygon class="arrowhead" points="56,80 44,74.4 44,85.6" fill="black" transform="rotate(180,48,80)"/>
                  <g class="text">
                    <text x="40" y="36">Initiator</text>
                    <text x="408" y="36">Responder</text>
                    <text x="164" y="68">[DATA(DTLS</text>
                    <text x="236" y="68">Client</text>
                    <text x="296" y="68">Hello)]</text>
                    <text x="108" y="84">[DATA(DTLS</text>
                    <text x="180" y="84">Server</text>
                    <text x="232" y="84">Hello</text>
                    <text x="272" y="84">...</text>
                    <text x="332" y="84">Finished)]</text>
                    <text x="108" y="100">[DATA(DTLS</text>
                    <text x="200" y="100">Certificate</text>
                    <text x="264" y="100">...</text>
                    <text x="324" y="100">Finished)]</text>
                    <text x="196" y="116">[DATA(DTLS</text>
                    <text x="264" y="116">ACK)]</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
Initiator                                     Responder
    |                                             |
    +----------[DATA(DTLS Client Hello)]--------->|
    |<--[DATA(DTLS Server Hello ... Finished)]----+
    +---[DATA(DTLS Certificate ... Finished)]---->|
    |<-------------[DATA(DTLS ACK)]---------------+
    |                                             |

]]></artwork>
            </artset>
          </figure>
          <t>The <xref target="sctp-DTLS-further-dtls-connection"/> shows a successfull
handshake of a further DTLS connection. Such connections can
be initiated by any of the peers. Same as during the initial
handshake, DTLS handshake messages are transported by means
of DATA chunks with the DTLS Chunk Key-Management Messages PPID.</t>
        </section>
      </section>
      <section anchor="sctp-restart">
        <name>SCTP Association Restart</name>
        <t>In order to achieve an Association Restart as described in
<xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>, a safe connection
dedicated to Restart SHALL exist and be available.  Furthermore, both
peers SHALL have safely stored both the current Restart DCI value and the
related keying material.  Here we assume that Restart DCI and keying
material are maintained across the events leading to SCTP Restart
request.</t>
        <section anchor="init-dtls-restart-connection">
          <name>Handshake of initial DTLS Restart connection</name>
          <t>As soon as the Association has reached the PROTECTED INITILIZATION state, a
DTLS Restart connection MAY be instantiated.  The instantiation of
the initial DTLS Restart connection follows the rules given in
<xref target="further_dtls_connection"/> where the DCI = 0 (that is initial DCI
= 0) and R bit = 1. Unless a SCTP association restart has happened and
the restart DCI has been used. In this case a new restart DTLS
connection SHALL be established using a restart DCI counter of the current + 1.</t>
          <t>It MAY exist a time gap where the Association is in PROTECTED state
but no DTLS Restart connection exists yet. If a SCTP Restart procedure
will be initiated during that time, it will fail and the Association
will also fail.</t>
          <t>Once initiated, no traffic will be sent over the Restart DTLS
connection so that both endpoints will have a known DTLS record state.</t>
        </section>
        <section anchor="further-dtls-restart-connection">
          <name>Handshake of further DTLS Restart connection</name>
          <t>After the initial DTLS Restart connection has been established, at
least an active DTLS Restart connection shall exist in a known state.
It is recommended that updating of DTLS Restart connection follows the
same times and rules as the traffic DTLS connections and is
implemented by following the rules described in <xref target="parallel-dtls"/>.</t>
          <t>The next DTLS Restart DCI is computed as described in
<xref target="add-dtls-connection"/>.</t>
          <t>The handshake of further DTLS Restart Connection is sequenced as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Perform the DTLS Handshake as described in <xref target="further_dtls_connection"/> on the next Restart DCI</t>
            </li>
            <li>
              <t>The Responder will store the new key before sending DTLS ACK</t>
            </li>
            <li>
              <t>The Initiator at reception of DTLS ACK will initiate closing the current Restart DCI</t>
            </li>
            <li>
              <t>The Responder will reply to the DTLS Close and remove the old key</t>
            </li>
            <li>
              <t>The Initiator receives the answer and remove the old key</t>
            </li>
          </ul>
        </section>
        <section anchor="sctp-assoc-restart-procedure">
          <name>SCTP Association Restart Procedure</name>
          <t>The DTLS in SCTP Association Restart is meant to preserve the security
characteristics.</t>
          <t>In order the Association Restart to proceed both Initiator and Responder
SHALL use the same Restart DCI for COOKIE-ECHO/COOKIE-ACK handshake, that implies
that the Initiator must preserve the Key for that DCI and that the Responder
SHALL NOT change the Key for the Restart DCI during the Restart procedure.</t>
          <figure anchor="sctp-assoc-restart-sequence">
            <name>SCTP Restart sequence for DTLS in SCTP</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="464" width="576" viewBox="0 0 576 464" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,48 L 40,432" fill="none" stroke="black"/>
                  <path d="M 408,48 L 408,432" fill="none" stroke="black"/>
                  <path d="M 440,64 L 440,80" fill="none" stroke="black"/>
                  <path d="M 440,128 L 440,144" fill="none" stroke="black"/>
                  <path d="M 440,192 L 440,240" fill="none" stroke="black"/>
                  <path d="M 440,288 L 440,336" fill="none" stroke="black"/>
                  <path d="M 440,384 L 440,432" fill="none" stroke="black"/>
                  <path d="M 40,64 L 200,64" fill="none" stroke="black"/>
                  <path d="M 256,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 48,80 L 184,80" fill="none" stroke="black"/>
                  <path d="M 272,80 L 408,80" fill="none" stroke="black"/>
                  <path d="M 440,80 L 528,80" fill="none" stroke="black"/>
                  <path d="M 40,128 L 112,128" fill="none" stroke="black"/>
                  <path d="M 320,128 L 400,128" fill="none" stroke="black"/>
                  <path d="M 48,144 L 112,144" fill="none" stroke="black"/>
                  <path d="M 312,144 L 408,144" fill="none" stroke="black"/>
                  <path d="M 440,144 L 520,144" fill="none" stroke="black"/>
                  <path d="M 40,192 L 120,192" fill="none" stroke="black"/>
                  <path d="M 328,192 L 400,192" fill="none" stroke="black"/>
                  <path d="M 48,208 L 64,208" fill="none" stroke="black"/>
                  <path d="M 376,208 L 408,208" fill="none" stroke="black"/>
                  <path d="M 40,224 L 64,224" fill="none" stroke="black"/>
                  <path d="M 368,224 L 400,224" fill="none" stroke="black"/>
                  <path d="M 440,224 L 568,224" fill="none" stroke="black"/>
                  <path d="M 48,240 L 152,240" fill="none" stroke="black"/>
                  <path d="M 288,240 L 408,240" fill="none" stroke="black"/>
                  <path d="M 40,288 L 120,288" fill="none" stroke="black"/>
                  <path d="M 328,288 L 400,288" fill="none" stroke="black"/>
                  <path d="M 48,304 L 64,304" fill="none" stroke="black"/>
                  <path d="M 376,304 L 408,304" fill="none" stroke="black"/>
                  <path d="M 40,320 L 64,320" fill="none" stroke="black"/>
                  <path d="M 368,320 L 400,320" fill="none" stroke="black"/>
                  <path d="M 440,320 L 568,320" fill="none" stroke="black"/>
                  <path d="M 48,336 L 152,336" fill="none" stroke="black"/>
                  <path d="M 288,336 L 408,336" fill="none" stroke="black"/>
                  <path d="M 40,384 L 96,384" fill="none" stroke="black"/>
                  <path d="M 328,384 L 400,384" fill="none" stroke="black"/>
                  <path d="M 48,400 L 104,400" fill="none" stroke="black"/>
                  <path d="M 336,400 L 408,400" fill="none" stroke="black"/>
                  <path d="M 440,400 L 512,400" fill="none" stroke="black"/>
                  <path d="M 424,48 C 432.83064,48 440,55.16936 440,64" fill="none" stroke="black"/>
                  <path d="M 424,96 C 432.83064,96 440,88.83064 440,80" fill="none" stroke="black"/>
                  <path d="M 424,112 C 432.83064,112 440,119.16936 440,128" fill="none" stroke="black"/>
                  <path d="M 424,160 C 432.83064,160 440,152.83064 440,144" fill="none" stroke="black"/>
                  <path d="M 424,176 C 432.83064,176 440,183.16936 440,192" fill="none" stroke="black"/>
                  <path d="M 424,256 C 432.83064,256 440,248.83064 440,240" fill="none" stroke="black"/>
                  <path d="M 424,272 C 432.83064,272 440,279.16936 440,288" fill="none" stroke="black"/>
                  <path d="M 424,352 C 432.83064,352 440,344.83064 440,336" fill="none" stroke="black"/>
                  <path d="M 424,368 C 432.83064,368 440,375.16936 440,384" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="408,384 396,378.4 396,389.6" fill="black" transform="rotate(0,400,384)"/>
                  <polygon class="arrowhead" points="408,320 396,314.4 396,325.6" fill="black" transform="rotate(0,400,320)"/>
                  <polygon class="arrowhead" points="408,288 396,282.4 396,293.6" fill="black" transform="rotate(0,400,288)"/>
                  <polygon class="arrowhead" points="408,224 396,218.4 396,229.6" fill="black" transform="rotate(0,400,224)"/>
                  <polygon class="arrowhead" points="408,192 396,186.4 396,197.6" fill="black" transform="rotate(0,400,192)"/>
                  <polygon class="arrowhead" points="408,128 396,122.4 396,133.6" fill="black" transform="rotate(0,400,128)"/>
                  <polygon class="arrowhead" points="408,64 396,58.4 396,69.6" fill="black" transform="rotate(0,400,64)"/>
                  <polygon class="arrowhead" points="56,400 44,394.4 44,405.6" fill="black" transform="rotate(180,48,400)"/>
                  <polygon class="arrowhead" points="56,336 44,330.4 44,341.6" fill="black" transform="rotate(180,48,336)"/>
                  <polygon class="arrowhead" points="56,304 44,298.4 44,309.6" fill="black" transform="rotate(180,48,304)"/>
                  <polygon class="arrowhead" points="56,240 44,234.4 44,245.6" fill="black" transform="rotate(180,48,240)"/>
                  <polygon class="arrowhead" points="56,208 44,202.4 44,213.6" fill="black" transform="rotate(180,48,208)"/>
                  <polygon class="arrowhead" points="56,144 44,138.4 44,149.6" fill="black" transform="rotate(180,48,144)"/>
                  <polygon class="arrowhead" points="56,80 44,74.4 44,85.6" fill="black" transform="rotate(180,48,80)"/>
                  <g class="text">
                    <text x="40" y="36">Initiator</text>
                    <text x="408" y="36">Responder</text>
                    <text x="228" y="68">[INIT]</text>
                    <text x="472" y="68">Plain</text>
                    <text x="516" y="68">SCTP</text>
                    <text x="228" y="84">[INIT-ACK]</text>
                    <text x="136" y="132">[DTLS</text>
                    <text x="212" y="132">CHUNK(COOKIE</text>
                    <text x="292" y="132">ECHO)]</text>
                    <text x="488" y="132">Encrypted</text>
                    <text x="136" y="148">[DTLS</text>
                    <text x="212" y="148">CHUNK(COOKIE</text>
                    <text x="288" y="148">ACK)]</text>
                    <text x="164" y="196">[DATA(DTLS</text>
                    <text x="236" y="196">Client</text>
                    <text x="296" y="196">Hello)]</text>
                    <text x="108" y="212">[DATA(DTLS</text>
                    <text x="180" y="212">Server</text>
                    <text x="232" y="212">Hello</text>
                    <text x="272" y="212">...</text>
                    <text x="332" y="212">Finished)]</text>
                    <text x="464" y="212">New</text>
                    <text x="512" y="212">Traffic</text>
                    <text x="560" y="212">DCI</text>
                    <text x="108" y="228">[DATA(DTLS</text>
                    <text x="200" y="228">Certificate</text>
                    <text x="264" y="228">...</text>
                    <text x="324" y="228">Finished)]</text>
                    <text x="196" y="244">[DATA(DTLS</text>
                    <text x="264" y="244">ACK)]</text>
                    <text x="164" y="292">[DATA(DTLS</text>
                    <text x="236" y="292">Client</text>
                    <text x="296" y="292">Hello)]</text>
                    <text x="108" y="308">[DATA(DTLS</text>
                    <text x="180" y="308">Server</text>
                    <text x="232" y="308">Hello</text>
                    <text x="272" y="308">...</text>
                    <text x="332" y="308">Finished)]</text>
                    <text x="464" y="308">New</text>
                    <text x="512" y="308">Restart</text>
                    <text x="560" y="308">DCI</text>
                    <text x="108" y="324">[DATA(DTLS</text>
                    <text x="200" y="324">Certificate</text>
                    <text x="264" y="324">...</text>
                    <text x="324" y="324">Finished)]</text>
                    <text x="196" y="340">[DATA(DTLS</text>
                    <text x="264" y="340">ACK)]</text>
                    <text x="120" y="388">[DTLS</text>
                    <text x="204" y="388">CHUNK(DATA(APP</text>
                    <text x="296" y="388">DATA))]</text>
                    <text x="464" y="388">APP</text>
                    <text x="500" y="388">DATA</text>
                    <text x="128" y="404">[DTLS</text>
                    <text x="212" y="404">CHUNK(DATA(APP</text>
                    <text x="304" y="404">DATA))]</text>
                    <text x="216" y="420">...</text>
                    <text x="216" y="436">...</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
Initiator                                     Responder
    |                                             | -.
    +--------------------[INIT]------------------>|   | Plain SCTP
    |<-----------------[INIT-ACK]-----------------+   +-----------
    |                                             | -'
    |                                             | -.
    +---------[DTLS CHUNK(COOKIE ECHO)]---------->|   | Encrypted
    |<--------[DTLS CHUNK(COOKIE ACK)]------------+   +----------
    |                                             | -'
    |                                             | -.
    +----------[DATA(DTLS Client Hello)]--------->|   |
    |<--[DATA(DTLS Server Hello ... Finished)]----+   | New Traffic DCI
    +---[DATA(DTLS Certificate ... Finished)]---->|   +----------------
    |<-------------[DATA(DTLS ACK)]---------------+   |
    |                                             | -'
    |                                             | -.
    +----------[DATA(DTLS Client Hello)]--------->|   |
    |<--[DATA(DTLS Server Hello ... Finished)]----+   | New Restart DCI
    +---[DATA(DTLS Certificate ... Finished)]---->|   +----------------
    |<-------------[DATA(DTLS ACK)]---------------+   |
    |                                             | -'
    |                                             | -.
    +-------[DTLS CHUNK(DATA(APP DATA))]--------->|   | APP DATA
    +<-------[DTLS CHUNK(DATA(APP DATA))]---------+   +---------
    |                    ...                      |   |
    |                    ...                      |   |

]]></artwork>
            </artset>
          </figure>
          <t>The <xref target="sctp-assoc-restart-sequence"/> shows a successfull
SCTP Association Restart.</t>
          <t>From procedure viewpoint the sequence is the following:</t>
          <ul spacing="normal">
            <li>
              <t>Initiator sends plain INIT (VTag=0), Responder replies INIT-ACK</t>
            </li>
            <li>
              <t>Initiator sends COOKIE-ECHO using DTLS CHUNK encrypted with the Key
tied to the Restart DCI</t>
            </li>
            <li>
              <t>Responder replies with COOKIE-ACK using DTLS CHUNK encrypted with
the Key tied to the Restart DCI</t>
            </li>
            <li>
              <t>Initiator sends handshakes for new Traffic DTLS connnection as well
as new Restart DTLS connection.</t>
            </li>
            <li>
              <t>When the handshake for the a new traffic DTLS connection has been
completed, the DCI used to protect
any SCTP chunks is switched from the restart DCI to the new traffic
DCI enabling the Validation and transit to PROTECTED state.</t>
            </li>
          </ul>
          <t>User Data for any ULP traffic MAY be initiated immediately after
COOKIE-ECHO/COOKIE-ACK handshake using the current Restart DCI, that
is even before a new Traffic DCI or a Restart DCI have been
handshaked.  If a problem occurs before the new Restart DCI has been
handshaked, the Association cannot be Restarted, thus it's RECOMMENDED
the new Restart DCI to be handshaked as early as possible.</t>
          <t>Note that, different than the initial Association establishment,
the ULP traffic is permitted immediately after the
COOKIE-ECHO/COOKIE-ACK handshake, the reason is that the
validation has already been performed prior to the restart DCI was
created.</t>
        </section>
      </section>
    </section>
    <section anchor="parallel-dtls">
      <name>Parallel DTLS Rekeying</name>
      <t>Rekeying in this specification is implemented by replacing the DTLS
connection getting old with a new one by first creating the new DTLS
connection, start using it, then closing the old one.</t>
      <section anchor="criteria-for-rekeying">
        <name>Criteria for Rekeying</name>
        <t>The criteria for rekeying may vary depending on the ULP requirement on
security properties, chosen cipher suits etc. Therefore it is assumed
that the implementation will be configurable by the ULP to meet its demand.</t>
        <t>Likely criteria to impact the need for rekeying through the usage of
new DTLS connection are:</t>
        <ul spacing="normal">
          <li>
            <t>Maximum time since last authentication of the peer</t>
          </li>
          <li>
            <t>Amount of data transferred since last forward secrecy preserving
rekeying</t>
          </li>
          <li>
            <t>The cipher suit's maximum key usage being reached. Although for
DTLS 1.3 usage of the Key Update mechanism can generate new keys
not having the same security properties as opening a new DTLS
connection.</t>
          </li>
        </ul>
      </section>
      <section anchor="procedure-for-rekeying">
        <name>Procedure for Rekeying</name>
        <t>This specification allows up to 2 DTLS connection to be active at the same
time for the current SCTP Association.
The following state machine applies.</t>
        <figure anchor="dtls-rekeying-state-diagram">
          <name>State Diagram for Rekeying</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="592" width="472" viewBox="0 0 472 592" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,560" fill="none" stroke="black"/>
                <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
                <path d="M 96,144 L 96,176" fill="none" stroke="black"/>
                <path d="M 96,272 L 96,304" fill="none" stroke="black"/>
                <path d="M 96,368 L 96,400" fill="none" stroke="black"/>
                <path d="M 96,480 L 96,512" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,136" fill="none" stroke="black"/>
                <path d="M 136,176 L 136,264" fill="none" stroke="black"/>
                <path d="M 136,304 L 136,360" fill="none" stroke="black"/>
                <path d="M 136,400 L 136,472" fill="none" stroke="black"/>
                <path d="M 136,512 L 136,560" fill="none" stroke="black"/>
                <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
                <path d="M 176,144 L 176,176" fill="none" stroke="black"/>
                <path d="M 176,272 L 176,304" fill="none" stroke="black"/>
                <path d="M 176,368 L 176,400" fill="none" stroke="black"/>
                <path d="M 176,480 L 176,512" fill="none" stroke="black"/>
                <path d="M 96,32 L 176,32" fill="none" stroke="black"/>
                <path d="M 8,48 L 88,48" fill="none" stroke="black"/>
                <path d="M 96,64 L 176,64" fill="none" stroke="black"/>
                <path d="M 96,144 L 176,144" fill="none" stroke="black"/>
                <path d="M 96,176 L 176,176" fill="none" stroke="black"/>
                <path d="M 96,272 L 176,272" fill="none" stroke="black"/>
                <path d="M 96,304 L 176,304" fill="none" stroke="black"/>
                <path d="M 96,368 L 176,368" fill="none" stroke="black"/>
                <path d="M 96,400 L 176,400" fill="none" stroke="black"/>
                <path d="M 96,480 L 176,480" fill="none" stroke="black"/>
                <path d="M 96,512 L 176,512" fill="none" stroke="black"/>
                <path d="M 8,560 L 136,560" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="144,472 132,466.4 132,477.6" fill="black" transform="rotate(90,136,472)"/>
                <polygon class="arrowhead" points="144,360 132,354.4 132,365.6" fill="black" transform="rotate(90,136,360)"/>
                <polygon class="arrowhead" points="144,264 132,258.4 132,269.6" fill="black" transform="rotate(90,136,264)"/>
                <polygon class="arrowhead" points="144,136 132,130.4 132,141.6" fill="black" transform="rotate(90,136,136)"/>
                <polygon class="arrowhead" points="96,48 84,42.4 84,53.6" fill="black" transform="rotate(0,88,48)"/>
                <g class="text">
                  <text x="136" y="52">YOUNG</text>
                  <text x="224" y="52">There's</text>
                  <text x="276" y="52">only</text>
                  <text x="312" y="52">one</text>
                  <text x="212" y="68">DTLS</text>
                  <text x="276" y="68">connection</text>
                  <text x="344" y="68">until</text>
                  <text x="216" y="84">aging</text>
                  <text x="276" y="84">criteria</text>
                  <text x="328" y="84">are</text>
                  <text x="360" y="84">met</text>
                  <text x="96" y="116">AGING</text>
                  <text x="180" y="116">REMOTE</text>
                  <text x="232" y="116">AGING</text>
                  <text x="132" y="164">AGED</text>
                  <text x="212" y="164">When</text>
                  <text x="244" y="164">in</text>
                  <text x="276" y="164">AGED</text>
                  <text x="320" y="164">state</text>
                  <text x="352" y="164">a</text>
                  <text x="208" y="180">new</text>
                  <text x="244" y="180">DTLS</text>
                  <text x="308" y="180">connection</text>
                  <text x="204" y="196">is</text>
                  <text x="240" y="196">added</text>
                  <text x="284" y="196">with</text>
                  <text x="312" y="196">a</text>
                  <text x="336" y="196">new</text>
                  <text x="384" y="196">Traffic</text>
                  <text x="432" y="196">DCI</text>
                  <text x="72" y="212">NEW</text>
                  <text x="108" y="212">DTLS</text>
                  <text x="212" y="212">Also</text>
                  <text x="240" y="212">a</text>
                  <text x="264" y="212">new</text>
                  <text x="324" y="212">connection</text>
                  <text x="384" y="212">for</text>
                  <text x="432" y="212">Restart</text>
                  <text x="220" y="228">SHOULD</text>
                  <text x="260" y="228">be</text>
                  <text x="296" y="228">added</text>
                  <text x="340" y="228">with</text>
                  <text x="368" y="228">a</text>
                  <text x="208" y="244">new</text>
                  <text x="256" y="244">Restart</text>
                  <text x="304" y="244">DCI</text>
                  <text x="136" y="292">OLD</text>
                  <text x="204" y="292">In</text>
                  <text x="232" y="292">OLD</text>
                  <text x="272" y="292">state</text>
                  <text x="320" y="292">there</text>
                  <text x="208" y="308">are</text>
                  <text x="232" y="308">2</text>
                  <text x="268" y="308">active</text>
                  <text x="316" y="308">DTLS</text>
                  <text x="384" y="308">connections</text>
                  <text x="224" y="324">Traffic</text>
                  <text x="268" y="324">is</text>
                  <text x="316" y="324">switched</text>
                  <text x="364" y="324">to</text>
                  <text x="392" y="324">the</text>
                  <text x="424" y="324">new</text>
                  <text x="456" y="324">one</text>
                  <text x="84" y="340">SWITCH</text>
                  <text x="136" y="388">DRAIN</text>
                  <text x="208" y="388">The</text>
                  <text x="244" y="388">aged</text>
                  <text x="284" y="388">DTLS</text>
                  <text x="348" y="388">connection</text>
                  <text x="204" y="404">is</text>
                  <text x="248" y="404">drained</text>
                  <text x="308" y="404">before</text>
                  <text x="360" y="404">being</text>
                  <text x="408" y="404">ready</text>
                  <text x="204" y="420">to</text>
                  <text x="228" y="420">be</text>
                  <text x="268" y="420">closed</text>
                  <text x="96" y="452">DRAINED</text>
                  <text x="164" y="452">DTLS</text>
                  <text x="236" y="452">close_notify</text>
                  <text x="132" y="500">DEAD</text>
                  <text x="204" y="500">In</text>
                  <text x="236" y="500">DEAD</text>
                  <text x="280" y="500">state</text>
                  <text x="320" y="500">the</text>
                  <text x="356" y="500">aged</text>
                  <text x="236" y="516">connection</text>
                  <text x="292" y="516">is</text>
                  <text x="332" y="516">closed</text>
                  <text x="88" y="548">REMOVED</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
           +---------+
+--------->|  YOUNG  |  There's only one
|          +----+----+  DTLS connection until
|               |       aging criteria are met
|               |
|        AGING  |  REMOTE AGING
|               V
|          +---------+
|          |  AGED   |  When in AGED state a
|          +----+----+  new DTLS connection
|               |       is added with a new Traffic DCI
|      NEW DTLS |       Also a new connection for Restart
|               |       SHOULD be added with a
|               |       new Restart DCI
|               V
|          +---------+
|          |   OLD   |  In OLD state there
|          +----+----+  are 2 active DTLS connections
|               |       Traffic is switched to the new one
|      SWITCH   |
|               V
|          +---------+
|          |  DRAIN  |  The aged DTLS connection
|          +----+----+  is drained before being ready
|               |       to be closed
|               |
|       DRAINED | DTLS close_notify
|               V
|          +---------+
|          |  DEAD   |  In DEAD state the aged
|          +----+----+  connection is closed
|               |
|      REMOVED  |
+---------------+

]]></artwork>
          </artset>
        </figure>
        <t>Trigger for rekeying can either be a local AGING event, triggered by
the DTLS connection meeting the criteria for rekeying, or a REMOTE AGING
event, triggered by receiving a DTLS record on the Traffic DCI that would be
used for new DTLS connection. In such case a new DTLS connection
shall be added according to <xref target="add-dtls-connection"/> with a new Traffic DCI.</t>
        <t>As soon as the new DTLS connection completes handshaking, the traffic
is moved from the old one, then the procedure for closing the old DTLS
connection is initiated, see <xref target="remove-dtls-connection"/>.</t>
        <t>On Restart connection, trigger for rekeying can either be a local
AGING event, triggered by the DTLS connection meeting the criteria for
rekeying, or a REMOTE AGING event, triggered by receiving a DTLS
record on the Restart DCI that would be used for new DTLS
connection. In such case a new DTLS connection shall be added
according to <xref target="add-dtls-connection"/> with a new Restart DCI.</t>
      </section>
      <section anchor="race-condition-in-rekeying">
        <name>Race Condition in Rekeying</name>
        <t>A race condition may happen when both peer experience local AGING event at
the same time and start creation of a new DTLS connection.</t>
        <t>Since the criteria for calculating a new DCI is known and specified in
<xref target="add-dtls-connection"/>, the peers will use the same DCI for
identifying the new DTLS connection. And the race condition is solved
as specified in <xref target="add-dtls-connection"/>.</t>
      </section>
    </section>
    <section anchor="pmtu-discovery-considerations">
      <name>PMTU Discovery Considerations</name>
      <t>Due to the DTLS record limitation for application data SCTP MUST use
2<sup>14</sup> as input to determine absolute maximum MTU when running
PMTUD and using DTLS in SCTP.</t>
      <t>The implementor needs to handle the DTLS 1.3 record overhead. SCTP
PMTUD needs to include both the DTLS record as well as the DTLS chunk
overhead in this consideration and ensure that produced packets,
especially those that are not PMTUD probes do not become oversized.
The DTLS record size may change during the SCTP associations lifetime
due to future handshakes affecting cipher suit in use, or changes to
record layer configurations.</t>
      <t>Note that this implies that DTLS 1.3 is expected to
accept application data payloads of potentially larger sizes than what
it configured to use for messages the DTLS implementation generates
itself for signaling.</t>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>For each DTLS connection, there are certain crypto state infomration
that needs to be handled thread safe to avoid nonce re-use and correct
replay protection. This arises as the key materials for DTLS epoch=3
and higher are shared between the DTLS chunk and the DTLS handshake
parts.</t>
      <t>This issue is primarily for implementations of SCTP implementation and
thus the DTLS chunk implementation resides in kernel space, and the
DTLS handshake resides in user space. For user space implementations
where both DTLS handshake messages and SCTP message protection can
directly call the same DTLS implementation instance the issue is
avoided.</t>
      <t>Different implementation strategies do exists for the kernel
implementations but likely have some impact on the DTLS implementation
itself as the DTLS record protection processing either need to synchronize
over state variables, alternatively use the DTLS Chunk protection operation
using an extended DTLS Chunk API <xref target="I-D.westerlund-tsvwg-sctp-dtls-chunk"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="general-1">
        <name>General</name>
        <t>The security considerations given in <xref target="RFC9147"/>, <xref target="RFC6347"/>, and
<xref target="RFC9260"/> also apply to this document. BCP 195 <xref target="RFC9325"/>
          <xref target="RFC8996"/> provides recommendations and requirements for improving
the security of deployed services that use DTLS. BCP 195 MUST be
followed which implies that DTLS 1.0 SHALL NOT be supported and are
therefore not defined.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>Although DTLS in SCTP provides privacy for the actual user message as
well as almost all chunks, some fields are not confidentiality
protected.  In addition to the DTLS record header, the SCTP common
header and the DTLS chunk header are not confidentiality
protected. An attacker can correlate DTLS connections over the same
SCTP association using the SCTP common header.</t>
        <t>To provide identity protection it is RECOMMENDED that DTLS in SCTP is
used with certificate-based authentication in DTLS 1.3 <xref target="RFC9147"/> and
to not reuse tickets.  DTLS 1.3 with external PSK
authentication does not provide identity protection.</t>
        <t>By mandating ephemeral key exchange and cipher suites with
confidentiality DTLS in SCTP effectively mitigate many forms of
passive pervasive monitoring.  By recommending implementations to
frequently set up new DTLS connections with (EC)DHE force attackers to
do dynamic key exfiltration and limits the amount of compromised data
due to key compromise.</t>
      </section>
    </section>
    <section anchor="iana-consideration">
      <name>IANA Consideration</name>
      <t>This document has no IANA considerations currently.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4820" target="https://www.rfc-editor.org/info/rfc4820" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4820.xml">
          <front>
            <title>Padding Chunk and Parameter for the Stream Control Transmission Protocol (SCTP)</title>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="P. Lei" initials="P." surname="Lei"/>
            <date month="March" year="2007"/>
            <abstract>
              <t>This document defines a padding chunk and a padding parameter and describes the required receiver side procedures. The padding chunk is used to pad a Stream Control Transmission Protocol (SCTP) packet to an arbitrary size. The padding parameter is used to pad an SCTP INIT chunk to an arbitrary size. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4820"/>
          <seriesInfo name="DOI" value="10.17487/RFC4820"/>
        </reference>
        <reference anchor="RFC6347" target="https://www.rfc-editor.org/info/rfc6347" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996" xml:base="https://static.ietf.org/tmp/reference.RFC.8996.xml">
          <front>
            <title>Deprecating TLS 1.0 and TLS 1.1</title>
            <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <date month="March" year="2021"/>
            <abstract>
              <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
              <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
              <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="8996"/>
          <seriesInfo name="DOI" value="10.17487/RFC8996"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9147.xml">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9325" target="https://www.rfc-editor.org/info/rfc9325" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9325.xml">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="November" year="2022"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
              <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="9325"/>
          <seriesInfo name="DOI" value="10.17487/RFC9325"/>
        </reference>
        <reference anchor="RFC9260" target="https://www.rfc-editor.org/info/rfc9260" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9260.xml">
          <front>
            <title>Stream Control Transmission Protocol</title>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <author fullname="K. Nielsen" initials="K." surname="Nielsen"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document describes the Stream Control Transmission Protocol (SCTP) and obsoletes RFC 4960. It incorporates the specification of the chunk flags registry from RFC 6096 and the specification of the I bit of DATA chunks from RFC 7053. Therefore, RFCs 6096 and 7053 are also obsoleted by this document. In addition, RFCs 4460 and 8540, which describe errata for SCTP, are obsoleted by this document.</t>
              <t>SCTP was originally designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks. It is also suited to be used for other applications, for example, WebRTC.</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>The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9260"/>
          <seriesInfo name="DOI" value="10.17487/RFC9260"/>
        </reference>
        <reference anchor="I-D.westerlund-tsvwg-sctp-dtls-chunk" target="https://datatracker.ietf.orghttps://datatracker.ietf.org/doc/draft-westerlund-tsvwg-sctp-dtls-chunk/">
          <front>
            <title>Stream Control Transmission Protocol (SCTP) DTLS chunk</title>
            <author initials="M." surname="Westerlund" fullname="Magnus Westerlund">
              <organization>Ericsson</organization>
            </author>
            <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author initials="C." surname="Porfiri" fullname="Claudio Porfiri">
              <organization>Ericsson</organization>
            </author>
            <date year="2025" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3758" target="https://www.rfc-editor.org/info/rfc3758" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3758.xml">
          <front>
            <title>Stream Control Transmission Protocol (SCTP) Partial Reliability Extension</title>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="M. Ramalho" initials="M." surname="Ramalho"/>
            <author fullname="Q. Xie" initials="Q." surname="Xie"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="P. Conrad" initials="P." surname="Conrad"/>
            <date month="May" year="2004"/>
            <abstract>
              <t>This memo describes an extension to the Stream Control Transmission Protocol (SCTP) that allows an SCTP endpoint to signal to its peer that it should move the cumulative ack point forward. When both sides of an SCTP association support this extension, it can be used by an SCTP implementation to provide partially reliable data transmission service to an upper layer protocol. This memo describes the protocol extensions, which consist of a new parameter for INIT and INIT ACK, and a new FORWARD TSN chunk type, and provides one example of a partially reliable service that can be provided to the upper layer via this mechanism. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3758"/>
          <seriesInfo name="DOI" value="10.17487/RFC3758"/>
        </reference>
        <reference anchor="RFC4895" target="https://www.rfc-editor.org/info/rfc4895" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4895.xml">
          <front>
            <title>Authenticated Chunks for the Stream Control Transmission Protocol (SCTP)</title>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="P. Lei" initials="P." surname="Lei"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>This document describes a new chunk type, several parameters, and procedures for the Stream Control Transmission Protocol (SCTP). This new chunk type can be used to authenticate SCTP chunks by using shared keys between the sender and receiver. The new parameters are used to establish the shared keys. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4895"/>
          <seriesInfo name="DOI" value="10.17487/RFC4895"/>
        </reference>
        <reference anchor="RFC5061" target="https://www.rfc-editor.org/info/rfc5061" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5061.xml">
          <front>
            <title>Stream Control Transmission Protocol (SCTP) Dynamic Address Reconfiguration</title>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="Q. Xie" initials="Q." surname="Xie"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="S. Maruyama" initials="S." surname="Maruyama"/>
            <author fullname="M. Kozuka" initials="M." surname="Kozuka"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>A local host may have multiple points of attachment to the Internet, giving it a degree of fault tolerance from hardware failures. Stream Control Transmission Protocol (SCTP) (RFC 4960) was developed to take full advantage of such a multi-homed host to provide a fast failover and association survivability in the face of such hardware failures. This document describes an extension to SCTP that will allow an SCTP stack to dynamically add an IP address to an SCTP association, dynamically delete an IP address from an SCTP association, and to request to set the primary address the peer will use when sending to an endpoint. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5061"/>
          <seriesInfo name="DOI" value="10.17487/RFC5061"/>
        </reference>
        <reference anchor="RFC6083" target="https://www.rfc-editor.org/info/rfc6083" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6083.xml">
          <front>
            <title>Datagram Transport Layer Security (DTLS) for Stream Control Transmission Protocol (SCTP)</title>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document describes the usage of the Datagram Transport Layer Security (DTLS) protocol over the Stream Control Transmission Protocol (SCTP).</t>
              <t>DTLS over SCTP provides communications privacy for applications that use SCTP as their transport protocol and allows client/server applications to communicate in a way that is designed to prevent eavesdropping and detect tampering or message forgery.</t>
              <t>Applications using DTLS over SCTP can use almost all transport features provided by SCTP and its extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6083"/>
          <seriesInfo name="DOI" value="10.17487/RFC6083"/>
        </reference>
        <reference anchor="I-D.ietf-tls-rfc8446bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-rfc8446bis-12" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-rfc8446bis.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="17" month="February" year="2025"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery. This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes RFCs 5077, 5246, 6961, 8422, and 8446. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-12"/>
        </reference>
        <reference anchor="I-D.ietf-tsvwg-dtls-over-sctp-bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-dtls-over-sctp-bis-08" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tsvwg-dtls-over-sctp-bis.xml">
          <front>
            <title>Datagram Transport Layer Security (DTLS) over Stream Control Transmission Protocol (SCTP)</title>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Claudio Porfiri" initials="C." surname="Porfiri">
              <organization>Ericsson</organization>
            </author>
            <date day="3" month="May" year="2024"/>
            <abstract>
              <t>This document describes the usage of the Datagram Transport Layer Security (DTLS) protocol to protect user messages sent over the Stream Control Transmission Protocol (SCTP). It is an improved alternative to the existing RFC 6083. DTLS over SCTP provides mutual authentication, confidentiality, integrity protection, and partial replay protection for applications that use SCTP as their transport protocol and allows client/server applications to communicate in a way that is designed to give communications privacy and to prevent eavesdropping and detect tampering or message forgery. Applications using DTLS over SCTP can use almost all transport features provided by SCTP and its extensions. This document is an improved alternative to RFC 6083 and removes the 16 kbytes limitation on protected user message size by defining a secure user message fragmentation so that multiple DTLS records can be used to protect a single user message. It further contains a large number of security fixes and improvements. It updates the DTLS versions and SCTP-AUTH HMAC algorithms to use. It mitigates reflection attacks of data and control chunks and replay attacks of data chunks. It simplifies secure implementation by some stricter requirements on the establishment procedures as well as rekeying to align with zero trust principles.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-dtls-over-sctp-bis-08"/>
        </reference>
        <reference anchor="I-D.ietf-uta-rfc6125bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-uta-rfc6125bis-15" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-uta-rfc6125bis.xml">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="Peter Saint-Andre" initials="P." surname="Saint-Andre">
              <organization>independent</organization>
            </author>
            <author fullname="Rich Salz" initials="R." surname="Salz">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="10" month="August" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure Using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions. This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-rfc6125bis-15"/>
        </reference>
        <reference anchor="I-D.mattsson-tls-super-jumbo-record-limit" target="https://datatracker.ietf.org/doc/html/draft-mattsson-tls-super-jumbo-record-limit-05" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.mattsson-tls-super-jumbo-record-limit.xml">
          <front>
            <title>Large Record Sizes for TLS and DTLS with Reduced Overhead</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Siemens</organization>
            </author>
            <author fullname="Michael Tüxen" initials="M." surname="Tüxen">
              <organization>Münster Univ. of Applied Sciences</organization>
            </author>
            <date day="5" month="September" year="2024"/>
            <abstract>
              <t>TLS 1.3 records limit the inner plaintext (TLSInnerPlaintext) size to 2^14 + 1 bytes, which includes one byte for the content type. Records also have a 3-byte overhead due to the fixed opaque_type and legacy_record_version fields. This document defines a TLS extension that allows endpoints to negotiate a larger maximum inner plaintext size, up to 2^32 - 256 bytes, while reducing overhead.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mattsson-tls-super-jumbo-record-limit-05"/>
        </reference>
        <reference anchor="ANSSI-DAT-NT-003" target="&lt;https://www.ssi.gouv.fr/uploads/2015/09/NT_IPsec_EN.pdf&gt;">
          <front>
            <title>Recommendations for securing networks with IPsec</title>
            <author initials="" surname="Agence nationale de la sécurité des systèmes d'information">
              <organization/>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="ANSSI Technical Report DAT-NT-003" value=""/>
        </reference>
        <reference anchor="KTH-NCSA" target="http://kth.diva-portal.org/smash/get/diva2:1902626/FULLTEXT01.pdf">
          <front>
            <title>On factoring integers, and computing discrete logarithms and orders, quantumly</title>
            <author initials="M." surname="Ekerå" fullname="Martin Ekerå">
              <organization/>
            </author>
            <date year="2024" month="October"/>
          </front>
          <seriesInfo name="KTH, School of Electrical Engineering and Computer Science (EECS), Computer Science, Theoretical Computer Science, TCS. Swedish NCSA, Swedish Armed Forces." value=""/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
Qa5AMPk8KDzcjRa342owhj2ez+FqyAOk8xbfhO6absPVoni3anITV4vigK99
LldzPDVscPK3TZKBiB1XFRzHEQaikgdGLOv+nqX0QJVq6REflzJzHb6dOZ3a
wPhEEliIMyKrjZCtHegiq8UvxMlIxmVFU0auPOVntZmLvDUTHXItxzYmup9M
fUNSnIJcd3WbmgYFEW3GF0c1bWpg55u2cZRFM3iCuF3XqS64pDsk2omPy7Yx
TNianTuwxouSmz7kidXEBiorPO0qTVyEDFmdqM0MAW+3JI3QNRDiyw3aIhe8
eFkWY1AJMWgkl+z7IWUL31anlI0kiOMd6+w50xj8knIG+E3tuwTpaJgBsulx
zvcbQvJMtq+rrPaOMhyhWyY/MZVmjmSLI0fes/U6XSDLwcp3SeN2fzJsi11p
OWIFFm+Ix6OeVI1txenaQElmgdWqMfCeSw0Yd6/vTDfoZZc0CZRjkAilJJ7y
6IMeBSnZKvmLAtuBcTn2ngvyhoVr0QdTUlyV6VInNMJhGZ4zAUVPuRPS4Fqw
KjYEwHMpJDwy12rbFU7QKUEsnanYROiaobJigsMw3csKW3LdkyZrtejX6yWg
WPeMR5WRmpEp0Y3JNbpXwpgripIXkzExjo30lGg3ZP7BuHbXycUUgxYmLa92
MZfjCz8Ja+kAAHSSfkAxGHo9qKStUAXPCPcpHEb87DXbbLg6AzPCA940Stko
jaQL3wu6cbW16IIZ7zEV/rkewX3whBbkVWuSaVWX1dfVrMUqk4wcYvSkcyQk
rqmiUw+nTG9dixE5ljGk1na0cCw4ooXxw9ezdYoERzRQirHwaRCB34t48U/S
VkG8XgPFibTQKw4XlubopGlQWstxUuUZRgDzuL7zj7NoqrkfHqYOzTTCV19/
/Zh4EhvVw4pMYTpFHYR1MBbZ9RK4SFghrBA5r7seRmSqMYqHcRmCwVEBCgIA
FVEpjNbW4nQpl69kbOsjavEWdOv18bmu/cC8IzK7BbDnPiyp6cIHesWRXA2l
Tg8+E70/DaL3xUoSuA1kaiF0FHmjrivROxFxKLHZERTGFdRIf2CnUdi5L8xf
8kVsJIyZU4uskUQNfVw8219YNvaPei5duX/1cEKYigDh0BWXuykWToFyh3B0
ws0446n6V2LTk4QguhDnW+eCd2Jf3XkOVa87D5cUJErxhrFlab41O9eQfB32
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
WnMwaQj2AAA=

-->

</rfc>
