<?xml version='1.0' encoding='utf-8'?>
<?xml-model href="rfc7991bis.rnc"?>
<?rfc toc='yes'?>
<?rfc compact='yes'?>
<?rfc subcompact='no'?>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     xml:lang="en"
     ipr="trust200902"
     submissionType="IETF"
     consensus="true"
     category="std"
     docName="draft-ietf-tsvwg-dtls-chunk-key-management-01"
     version="3">

<front>
<title abbrev="DTLS for Key Management for DTLS Chunks">
Using Datagram Transport Layer Security (DTLS) for Key Management for the Stream Control Transmission Protocol (SCTP) DTLS Chunk
</title>
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-dtls-chunk-key-management-01"/>

<author initials="M." surname="Tüxen" fullname="Michael Tüxen">
  <organization abbrev='Münster Univ. of Appl. Sciences'>
                Münster University of Applied Sciences</organization>
  <address>
    <postal>
        <street>Stegerwaldstrasse 39</street>
        <city>48565 Steinfurt</city>
        <country>Germany</country>
    </postal>
    <email>tuexen@fh-muenster.de</email>
  </address>
</author>

<author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
  <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
  <address>
    <email>Hannes.Tschofenig@gmx.net</email>
  </address>
</author>

<author initials="T." surname="Reddy" fullname="Tirumaleswar Reddy">
  <organization>Nokia</organization>
  <address>
    <email>kondtir@gmail.com</email>
  </address>
</author>

<date />

<abstract>
<t>This document defines how Datagram Transport Layer Security (DTLS) 1.3
is used to establish keys for securing SCTP using the DTLS Chunk mechanism.
It specifies how a DTLS handshake is used to establish the initial security
context for an SCTP association and describes procedures for key updates and
post-handshake authentication. The goal is to enable authenticated,
and confidential communication over SCTP using the DTLS Chunk,
leveraging standardized DTLS features for key management and rekeying.</t>
</abstract>
</front>

<middle>
<section anchor="introduction">
<name>Introduction</name>
<t>The Stream Control Transmission Protocol (SCTP) is a transport protocol
designed to support message-oriented communication with features such as
multi-streaming and multi-homing.
In many deployments, particularly those telecommunication networks and WebRTC
data channels, it is essential to provide confidentiality, integrity, and peer
authentication for SCTP traffic.</t>
<t><xref target="RFC6083"/> defines a mechanism for securing SCTP by
encapsulating it over DTLS 1.0/1.2, establishing a secure channel between
SCTP endpoints.
However, with the introduction of DTLS 1.3 <xref target="RFC9147"/>, the
protocol underwent significant changes, including removal of renegotiation,
a new key schedule, and support for post-handshake operations.
Without additional description, RFC 6083 cannot be used with DTLS 1.3.</t>
<t>Additionally, <xref target="I-D.ietf-tsvwg-sctp-dtls-chunk"/> defines
a new method for secure and confidential transfer for SCTP packets but leaves
key management to a separate specification.</t>
<t>This document complements <xref target="I-D.ietf-tsvwg-sctp-dtls-chunk"/>
by specifying how DTLS 1.3 is used to derive and manage the cryptographic keys
required for use with the DTLS Chunk, addressing key management aspects not
covered in that specification. Specifically, it describes:</t>
<ul>
<li><t>How the DTLS 1.3 handshake establishes the initial security context
between SCTP endpoints.</t></li>
<li><t>How keying material is derived and associated with the
SCTP association.</t></li>
<li><t>How DTLS 1.3 features, such as key updates and post-handshake
authentication, are leveraged to support long-lived secure sessions.</t></li>
</ul>
<t>The goal of this specification is to modernize and extend the approach defined
in RFC 6083, aligning it with the architectural and cryptographic changes introduced
in DTLS 1.3, while enabling a cleaner and more efficient integration with native
SCTP functionality.</t>
</section>

<section anchor='conventions'>
<name>Conventions</name>
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
"<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to
be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
they appear in all capitals, as shown here.</t>
</section>

<section>
<name>Architecture</name>
<t>This document describes how Datagram Transport Layer Security (DTLS) 1.3 is
used to establish keys for securing SCTP using the DTLS Chunk as defined in
<xref target="I-D.ietf-tsvwg-sctp-dtls-chunk"/>.
This approach combines the performance and encryption flexibility of
DTLS Chunks with the integrated key management capabilities of DTLS.</t>

<t>The key characteristics of the solution are as follows:</t>
<ul>
<li><t>Application data is protected using DTLS Chunks.</t></li>
<li><t>The DTLS handshake is used to establish keying material, algorithms,
and parameters for use with DTLS Chunks.</t></li>
<li><t>DTLS and relevant extensions are used to negotiate cryptographic
algorithms and parameters, perform extended key updates, enable larger
record sizes, and support post-handshake authentication.</t></li>
<li><t>All other DTLS record-layer content types are protected using
standard DTLS record framing.</t></li>
</ul>

<t>Application data (except the messages for post handshake authentication)
is never transmitted in DTLS record-layer application_data records.
Instead, application data is sent via SCTP DATA chunks which are protected by
the DTLS Chunk Protection Operator.
This operator encapsulates all SCTP chunks into a DTLS Chunk, applying
appropriate protection.</t>

<t>The figure below illustrates the architecture, highlighting the
role of the upper-layer protocol (ULP), which acts as the consumer of
SCTP's transport services.
The ULP may interface directly with the SCTP stack or operate through the
DTLS 1.3 stack.
This specification builds upon DTLS 1.3 by introducing additional extensions
to support enhanced functionality, including post-handshake authentication as
described in <xref target="RFC9261"/> and the extended key update mechanism
defined in <xref target="I-D.ietf-tls-extended-key-update"/>.</t>

<t>Following the initial SCTP association setup, a DTLS 1.3 handshake
is performed to mutually authenticate the endpoints and to derive keying
material for the DTLS Chunk Protection Operator.
The TLS exporter, as defined in Section 7.5 of <xref target="RFC8446"/>, is
used to derive this keying material.
It leverages the same cryptographic algorithms that were negotiated during the
DTLS handshake for use with the DTLS Record Layer, thereby eliminating the
need for separate algorithm negotiation for the DTLS Chunk.
However, this approach requires that only algorithm suites compatible with
both DTLS 1.3 and DTLS Chunks be configured and supported.</t>
<figure>
<name>Architecture</name>
<artwork align="center">
+---------------+ +-------------------------------+
|     Upper     | |        Post Handshake         |
|     Layer     | |        Authentication         |
|   Protocol    | +-------------------------------+
|     (ULP)     | +-------------------------------+
|               | |            DTLS 1.3           |
|               | |    +---------------------+    |
|               | | +->+    Key Exporter     +--+ |
|               | | |  +---------------------+  | |
|               | | |                           | |
|               | | |  +---------------------+  | |
|               | | +--+    Key Management   +  | |
|               | | |  +---------------------+  | |
|               | | |    +---+ +---+ +---+      | |
|               | | |    | H | |   | | A |      | |
|               | | |    | a | |   | | p |      | |
|               | | | k  | n | | A | | p |    k | |
|               | | | e  | d | | l | |   |    e | |
|               | | | y  | s | | e | | D |... y | |
|               | | | s  | h | | r | | a |    s | |
|               | | |    | a | | t | | t |      | |
|               | | |    | k | |   | | a |      | |
|               | | |    | e | |   | |   |      | |
|               | | |    +-+-+ +-+-+ +-+-+      | |
|               | | |       |     |    | ...    | |
|               | | |       +-----+----+        | |
|               | | | ContentType |             | |
|               | | |  +----------+----------+  | |
|               | | +->|     DTLS Record     |  | |
|               | |    | Protection Operator |  | |
+               | |    +----------+----------+  | |
+-------+-------+ +-----------------------------+-+
        ^                         ^             |
        |                         |             |
        +--+----------------------+             | keys
      PPID |                                    |
           V                                    V
+-----------------------------------------------+-+
|                    +---------------------+    | |
|        SCTP        |     DTLS  Chunk     |&lt;---+ |
|                    | Protection Operator |      |
|                    +---------------------+      |
+-------------------------------------------------+
</artwork>
</figure>
</section>

<section>
<name>Setting the Keys Initially</name>
<t>The following figure shows when the key exporter is used to get
key material from the DTLS connection.
Then keys are derived from that and the diagram also shows when these keys
are configured for the DTLS chunk and also when the SCTP stack is
instructed to discard received SCTP packets, when they are unprotected.</t>
<figure>
<name>Usage of Key Exporter</name>
<artwork align="center">
Client                                             Server
------                                             ------

 Record 0
 ClientHello                -------->
 (epoch=0)
                                                     Record 0
                            &lt;--------             ServerHello
                                                    (epoch=0)
                                        {EncryptedExtensions}
                                                    (epoch=2)
                                                {Certificate}
                                                    (epoch=2)
                                          {CertificateVerify}
                                                    (epoch=2)
                                                   {Finished}
                                                    (epoch=2)
 Record 1
 {Certificate}              -------->
 (epoch=2)
 {CertificateVerify}
 (epoch=2)
 {Finished}
 (epoch=2)
SET RECV KEYS
                                                     SET RECV KEYS
                                                     SET SEND KEYS
                                                     Record 1
                            &lt;--------                   [ACK]
                                                    (epoch=3)
ENFORCE PROTECTION
SET SEND KEYS
                                                    on sender dry event
                                                            or
                                                    on reception of
                                                    protected packet
                                                    ENFORCE PROTECTION
</artwork>
</figure>
<t>The key derivation takes into account which protection solution identifiers
have been sent and received. This way the communication is protected against
downgrade attacks against the SCTP handshake.</t>
<t>TBD: Take the message flow into account which was presented by Magnus.</t>
<t>TBD: Provide formulas for deriving the keys and improve the message sequence
diagram.</t>
</section>

<section>
<name>Updating the Keys</name>
<t>For updating the keys used for the DTLS chunk, the key updated described in
<xref target="RFC9147"/> <bcp14>MUST NOT</bcp14> be used, since it does not
update the exporter keys. Therefore the extended key update as described in
<xref target='I-D.ietf-tls-extended-key-update'/> <bcp14>MUST</bcp14> be used.
When a receive key for epoc n + 1 is installed, the receive key for epoc n - 1
<bcp14>SHOULD</bcp14> be removed.
Deriving the keys from the exported keys is done similar to the initial
derivation.</t>
<t>TBD: Provide formulas for the key derivation and a message sequence diagram
for the extended key update.</t>
</section>

<section>
<name>Post-Handshake Authentication</name>
<t>
SCTP peers may require periodic re-authentication after the DTLS
handshake has completed. This is needed, for example, to demonstrate
continued possession of a private key. In such cases, peers
<bcp14>MUST</bcp14> use the post-handshake authentication mechanism
defined in <xref target="RFC9261"/>.
</t>
<t>
The application-layer protocol running over DTLS
<bcp14>MUST</bcp14> be used to transmit the Authenticator Request.
Either the SCTP client or the SCTP server may initiate this request
using the established DTLS connection.
</t>
<t>
Similarly, the application-layer protocol running over DTLS
<bcp14>MUST</bcp14> be used to transmit the corresponding
Authenticator message.
</t>
<t>
TBD: A description of the application-layer message format(s) that
carry the Authenticator Request and Authenticator will be provided
in a future revision.
This includes a message sequence chart illustrating the communication.
</t>
</section>


<section>
<name>IANA Considerations</name>
<t>Note: IANA is requested to replace RFC-to-be with a reference to this document.</t>
<t>IANA is requested to add the following entry to the DTLS Key Management
Method Identifiers registry of the Stream Control Transmission Protocol (SCTP)
Parameters group:</t>

<table>
<thead>
<tr><th>Identifier</th><th>Key Management Method Name</th><th>Reference</th><th>Contact</th></tr>
</thead>
<tbody>
<tr><td>1</td>         <td>Single DTLS Connection</td>    <td>RFC-to-be</td><td>Document Authors</td></tr>
</tbody>
</table>

</section>

<section>
<name>Security Considerations</name>
<t>TBD.</t>
</section>
</middle>

<back>
<references>
<name>References</name>
<references>
<name>Normative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6083.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9147.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9260.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9261.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tsvwg-sctp-dtls-chunk.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-extended-key-update"/>
</references>

</references>

<section numbered='false'>
<name>Acknowledgments</name>
<t>The authors wish to thank
<contact fullname="Claudio Porfiri"/> and
<contact fullname="Magnus Westerlund"/>
for their invaluable comments.</t>
</section>
</back>
</rfc>
