Internet-Draft TLS for DTLS in SCTP June 2026
Westerlund, et al. Expires 20 December 2026 [Page]
Workgroup:
TSVWG
Internet-Draft:
draft-porfiri-tsvwg-sctp-dtls-handshake-00
Published:
Intended Status:
Standards Track
Expires:
Authors:
M. Westerlund
Ericsson
J. Preuß Mattsson
Ericsson
C. Porfiri
Ericsson

Transport Layer Security (TLS) based key-management of the Stream Control Transmission Protocol (SCTP) DTLS Chunk

Abstract

This document defines how Transport Layer Security (TLS) 1.3 is used as a key-management method for the SCTP DTLS Chunk mechanism. It specifies how a TLS handshake establishes the initial security context for an SCTP association and how subsequent TLS handshakes provide key updates and re-authentication. The goal is to enable authenticated and confidential communication over SCTP using the DTLS Chunk, leveraging standardized TLS 1.3 features for key management and rekeying.

About This Document

This note is to be removed before publishing as an RFC.

Status information for this document may be found at https://datatracker.ietf.org/doc/draft-porfiri-tsvwg-sctp-dtls-handshake/.

Discussion of this document takes place on the Transport Area Working Group (tsvwg) Working Group mailing list (mailto:tsvwg@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/tsvwg/. Subscribe at https://www.ietf.org/mailman/listinfo/tsvwg/.

Source for this draft and an issue tracker can be found at https://github.com/teiclap/draft-porfiri-tsvwg-sctp-dtls-handshake.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 20 December 2026.

Table of Contents

1. Introduction

The Stream Control Transmission Protocol (SCTP) [RFC9260] is a transport protocol designed to support message-oriented communication with features such as multi-streaming and multi-homing. In many deployments, particularly telecommunication networks and WebRTC data channels, it is essential to provide confidentiality, integrity, and peer authentication for SCTP traffic.

[I-D.ietf-tsvwg-sctp-dtls-chunk] defines a mechanism for securing SCTP by encapsulating SCTP chunks within DTLS 1.3 records at the chunk level. That specification defines the DTLS chunk format, negotiation procedures, and an abstract API for key management, but delegates the actual key management to external methods identified by a DTLS Key Management Identifier.

This document defines one such method: it uses TLS 1.3 [RFC8446] handshakes carried as SCTP user messages to perform mutual authentication and derive keying material for the DTLS Chunk Protection Operator. The combination of the SCTP DTLS Chunk and the key-management defined in this document is referred to as "TLS for DTLS in SCTP".

The key advantages of this approach are:

1.1. Conventions

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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

In this document, || denotes concatenation of byte sequences.

1.2. Terminology

This document uses the following terms:

Association:

An SCTP association.

Connection:

A TLS 1.3 connection used for key management.

DTLS Key Context (DKC):

The keying material (record payload key, sequence number key, and IV) for both send and receive directions, together with the replay window and last used sequence number. Each DKC is identified by a tuple of (SCTP Association, restart indicator, DTLS epoch).

Initiator:

The endpoint assigned the client role during SCTP association establishment. This corresponds to the "client" role (C bit) in the DTLS Key Management Parameter of [I-D.ietf-tsvwg-sctp-dtls-chunk].

Primary DKC:

A DTLS Key Context used to protect regular SCTP association traffic.

Responder:

The endpoint assigned the server role during SCTP association establishment. This corresponds to the "server" role (S bit) in the DTLS Key Management Parameter of [I-D.ietf-tsvwg-sctp-dtls-chunk].

Restart DKC:

A DTLS Key Context reserved exclusively for the SCTP association restart procedure.

1.3. Abbreviations

AEAD:

Authenticated Encryption with Associated Data

DKC:

DTLS Key Context

DTLS:

Datagram Transport Layer Security

PPID:

Payload Protocol Identifier

SCTP:

Stream Control Transmission Protocol

TLS:

Transport Layer Security

ULP:

Upper Layer Protocol

2. Overview

This section provides an informational overview of TLS for DTLS in SCTP. Normative procedures are specified in Section 6.

2.1. Architecture

ULP TLS 1.3 Key Exporter Key Management ContentType TLS Record Protection Operator keys PPID SCTP DTLS Chunk Protection Operator
Figure 1: Architecture

Application data is never transmitted in TLS application_data records. Instead, application data is sent via SCTP DATA chunks protected by the DTLS Chunk Protection Operator. TLS 1.3 is used solely for key management: performing handshakes, deriving keys via the TLS Exporter, and then closing the TLS connection.

2.2. Protocol Flow Summary

The protocol operates in three phases:

  1. Initial Establishment: After SCTP association setup (with DTLS Key Management Parameter negotiation), a TLS 1.3 handshake derives the initial Primary and Restart DKCs. Protection is then enforced.

  2. Rekeying: Either endpoint initiates a new TLS 1.3 handshake to derive fresh DKCs for the next epoch, providing forward secrecy and re-authentication. Old DKCs are removed after draining.

  3. SCTP Restart: The pre-established Restart DKC protects the COOKIE ECHO/COOKIE ACK exchange, followed by a new TLS handshake to establish fresh Primary and Restart DKCs.

3. TLS Configuration Requirements

3.1. TLS Version

This document defines the usage of TLS 1.3 [RFC8446]. Earlier versions of TLS MUST NOT be used. Only one version of TLS MUST be used during the lifetime of an SCTP Association.

3.2. Cipher Suite Constraints

Parameters not marked as "Y" in the "Recommended" column of TLS registries are NOT RECOMMENDED to support. 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.

The cipher suites negotiated in the key-management TLS connection MUST only include those supported by the DTLS Chunk Protection Operator. The DTLS Chunk provides an API to query supported cipher suites (see Section 7.3 of [I-D.ietf-tsvwg-sctp-dtls-chunk]).

3.3. Authentication and Identity

TLS for DTLS in SCTP MUST be mutually authenticated. It is RECOMMENDED to use certificate-based authentication.

When certificates are used, the application is responsible for certificate policies, certificate chain validation, and identity authentication. The application defines what the identity is and how it is encoded. Guidance on server certificate validation can be found in [RFC9525].

All security decisions MUST be based on the peer's authenticated identity, not on its transport layer identity. Since SCTP associations can use multiple IP addresses per endpoint, DTLS records may arrive from different source IP addresses than those originally authenticated.

Clients and servers MUST NOT accept a change of identity during the setup of a new TLS connection, but MAY accept negotiation of stronger algorithms and security parameters.

3.4. Rekeying Policy

Implementations MUST have policies for how often to set up new TLS connections with ephemeral key exchange. Implementations SHOULD rekey at least every hour and every 100 GB of data, which is a common policy for IPsec [ANSSI-DAT-NT-003].

Implementations MUST set up a new TLS connection using a full handshake before any of the certificates expire.

The PSK key exchange mode psk_ke MUST NOT be used as it does not provide ephemeral key exchange. TLS Key Update MUST NOT be used.

TLS 1.3 tickets MAY be used for resumption (valid up to seven days). Resumption can be used to chain the connections, increasing security by forcing an adversary to break them in sequence [KTH-NCSA].

The endpoints MUST limit the number of simultaneous TLS connections to one.

4. TLS Message Transport

TLS records and control messages for key-management are sent as SCTP user messages using reliable in-order delivery on stream 0 with the DTLS Key Management Messages PPID (4242) [I-D.ietf-tsvwg-sctp-dtls-chunk].

Each SCTP user message uses the format defined in Figure 2.

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 T Epoch Payload
Figure 2: Key Management User Message Structure
T (Message Type): 1 bit

Indicates the type of payload carried in this user message. A value of 0 indicates that the payload contains TLS records. A value of 1 indicates that the payload is a control message (see Section 4.1).

Epoch: 7 bits

The 7 lowest bits of the DTLS Key Context epoch that this message corresponds to — i.e., the DKC that will be created from this handshake, or that already exists. The receiver uses this field to associate incoming data with the correct key-management session.

Payload: variable length

When T=0, one or more complete TLS records. When T=1, a control message as defined in Section 4.1.

4.1. Control Messages

When the T bit is set to 1, the payload of the user message is a control message with the following format:

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 Ctrl Type Control Data (variable
Figure 3: Control Message Format
Ctrl Type: 8 bits

Identifies the control message type.

Control Data: variable length

Type-specific data. May be empty.

The following control message type is defined:

Table 1: Control Message Types
Ctrl Type Name Description
0x01 Protection Established Signals that DTLS chunk protection has been enforced

4.1.1. Protection Established

The Protection Established control message (Ctrl Type = 0x01) is sent by the Responder to the Initiator after the Responder has installed all keys and enforced DTLS chunk protection. This message carries no Control Data (the payload following the Ctrl Type byte is empty).

Upon receiving this message, the Initiator enforces DTLS chunk protection and informs the ULP that the association is protected.

5. Key Derivation

5.1. Role Determination

Role determination and method selection follow the procedure defined in Section 5.1 of [I-D.ietf-tsvwg-sctp-dtls-chunk]. After the SCTP association is established, the key-management function retrieves from the SCTP stack's DTLS chunk API the assigned role (Initiator/client or Responder/server), the selected DTLS Key Management Method, and the downgrade prevention data (both endpoints' DTLS Key Management Parameters) used as input to key derivation.

5.2. Exporter Context

DTLS Key Contexts are derived using the TLS Exporter as defined in Section 7.5 of [RFC8446]. The exporter context is constructed as the concatenation of the following fields:

Table 2
Field Length Value
Direction 1 byte 0x00 = Client, 0x01 = Server
Key role 1 byte 0x00 = primary/traffic, 0x01 = restart
Key type 1 byte 0x00 = Key, 0x01 = SN_KEY, 0x02 = IV
Initiator KM Param variable DTLS Key Management Parameter sent by the Initiator
Responder KM Param variable DTLS Key Management Parameter sent by the Responder

Each DTLS Key Management Parameter (Section 4.1 of [I-D.ietf-tsvwg-sctp-dtls-chunk]) is included as the sequence of bytes sent on the wire, including the parameter header and excluding padding.

This construction ensures that any modification to the DTLS Key Management Parameter during the SCTP handshake (a downgrade attack) results in mismatched keys and association failure.

5.3. Exporter Labels

A single TLS Exporter label is used to derive all keying material:

EXPORTER_TLS_FOR_DTLS_IN_SCTP

The specific key material (direction, role, and type) is differentiated by the exporter context (Section 5.2). Each combination of Direction, Key role, and Key type values produces a distinct export, yielding 12 values in total (2 directions × 2 roles × 3 types).

The Initiator (TLS client) installs exports with Direction=Client as its write keys and Direction=Server as its read keys. The Responder does the reverse.

The length of exported material depends on the negotiated cipher suite.

5.4. DKC Installation

Each successful TLS handshake produces two DKCs:

  • A Primary DKC for regular SCTP traffic.

  • A Restart DKC for the SCTP restart procedure.

The first DKC established for any SCTP association MUST use DTLS epoch 3. Each subsequent Primary DKC uses the next consecutive epoch. After an SCTP restart, the epoch resets to 3.

The Restart DKC MUST be maintained in a well-defined state (initialized but never used for regular traffic) so that both endpoints have a consistent view of sequence numbers and replay window.

6. Procedures

6.1. Initial Establishment

Initiator Responder 1. [INIT] [INIT-ACK] [COOKIE ECHO] 2. 3. [COOKIE ACK] Key Manager Key Manager | 4. TLS START TLS START [DATA(TLS Client Hello)] 5. 6. 8. <-[DATA(TLS Server Hello ... Finished)] 7. 9. [DATA(TLS Certificate ... Finished)] 10. 11. 13. [DATA(Protection Established)] 12. 14. [DTLS CHUNK(DATA(APP DATA))] APP DATA [DTLS CHUNK(DATA(APP DATA))] ...
Figure 4: Initial Establishment

The diagram Figure 4 shows the case where SCTP Initiator is also resulting as Key Manager Client. The opposite case is identical but with inverted roles among Key Managers. In the following procedure we use Initiator and Responder referring to SCTP, Client and Server referring to Keymanager role, and implicitly TLS roles.

The procedure is as follows:

  1. The Initiator sends INIT containing the DTLS Key Management Parameter (Section 4.1 of [I-D.ietf-tsvwg-sctp-dtls-chunk]) with this method's identifier (see Section 9.1) in its preference-ordered list.

  2. The Responder enters ESTABLISHED state. It retrieves the agreed DTLS Key Management Method and role from the SCTP stack (e.g., using the "Get Agreed DTLS Key Management Method and Role" API defined in Section 7.2 of [I-D.ietf-tsvwg-sctp-dtls-chunk]) and verifies that the selected method matches the one defined in this document (see Section 9.1) and gets the assigned role as key manager client or server (in the example depicted in Figure 4 it is server).

  3. The Initiator enters ESTABLISHED state. It performs the same retrieval and verification as the Responder, confirming the assigned role as key manager client or server (in the example depicted in Figure 4 it is client).

  4. The client key manager starts a TLS 1.3 handshake, limiting offered cipher suites to those supported by the DTLS Chunk Protection Operator, and sends TLS ClientHello per Section 4.

  5. The server key manager receives the TLS ClientHello. If a HelloRetryRequest is needed, an additional round-trip occurs before proceeding.

  6. The server key manager uses the TLS Exporter to derive the client key material for both the Primary and Restart DKCs and installs it as the read (receive) key material, per Section 5.

  7. The server key manager sends its TLS ServerHello through Finished messages.

  8. The client key manager receives the TLS ServerHello message, exports all Primary and Restart DKC keys, and installs the client key material as its write (send) key and the server key material as its read (receive) key.

  9. The client key manager sends its TLS Certificate/CertificateVerify/Finished, protected by the DTLS Chunk using the new Primary DKC.

  10. The server key manager decrypts the DTLS-chunk-protected TLS messages, completes the handshake, exports the server key material for both the Primary and Restart DKCs, and installs it as its write (send) key.

  11. The server key manager calls Require Protected SCTP Packets to enforce DTLS chunk protection for all future packets and informs the ULP that the association is protected.

  12. The server key manager sends a Protection Established control message (Section 4.1.1) to the client key manager.

  13. The client key manager receives the Protection Established control message, calls Require Protected SCTP Packets to enforce DTLS chunk protection for all future packets, and informs the ULP that the association is protected.

  14. Application traffic can begin.

If the TLS handshake fails, the SCTP association MUST be aborted.

After key installation, the TLS connection SHOULD be closed promptly.

6.2. Rekeying

6.2.1. Triggering Criteria

Rekeying is triggered by implementation-configurable criteria, including:

  • Time elapsed since last peer authentication.

  • Volume of data transferred since last forward-secrecy rekeying.

  • Approaching the cipher suite's AEAD usage limits.

6.2.2. Procedure

Initiator Responder (traffic continues using epoch N DKC) Key Manager Key Manager 1. [DATA(TLS Client Hello)] 2. 4. <-[DATA(TLS Server Hello ... Finished)] 3. 5. [DATA(TLS Certificate ... Finished)] 6. (traffic transitions to epoch N+1 DKC) (after draining, remove epoch N DKC)
Figure 5: Rekeying Procedure

The diagram Figure 5 shows the case where SCTP Initiator is also resulting as Key Manager Client. The opposite case is identical but with inverted roles among Key Managers. In the following procedure we use Initiator and Responder referring to SCTP, Client and Server referring TLS roles. The Key manager roles are only used to handle in the case both sides initiate a rekey simultanously, see Section 6.2.4.

Either endpoint may initiate rekeying. The procedure is as follows:

  1. The peer willing to rekey becomes the TLS client for this rekey procedure. It sends a TLS ClientHello in a key management message. TLS messages are carried inside DTLS chunks (the association is already protected).

  2. The other peer becomes the TLS server for this rekey procedure. It receives and processes the ClientHello, exports the client key material for both the Primary and Restart DKCs, and installs it as its read (receive) key.

  3. The server sends its TLS ServerHello through Finished messages to the client.

  4. The client receives the TLS ServerHello message, exports all Primary and Restart DKC keys, and installs the client key material as its write (send) key and the server key material as its read (receive) key.

  5. The client sends its TLS Certificate/CertificateVerify/Finished encrypted with the new keys and starts the drain timer to remove the old (epoch N) DKC. From now on the client uses new keys.

  6. The server receives and verifies the Finished message, exports and installs the server key material for both the Primary and Restart DKCs as its write (send) key, and starts the drain timer to remove the old (epoch N) DKC. From now on the server uses new keys.

The new DKCs use epoch N+1 (where N is the current epoch). Both old (epoch N) and new (epoch N+1) DKCs coexist temporarily until the drain timer expires (see Section 6.2.3).

All rekeying MUST use ephemeral key exchange. TLS Key Update MUST NOT be used.

6.2.3. Drain Timer Considerations

The drain timer determines how long old (epoch N) DKCs are retained after new (epoch N+1) DKCs have been activated. Its purpose is to allow in-flight packets protected with the old keys to be received and processed before those keys are removed.

The drain timer value depends on whether the delivery of the final rekeying message has been confirmed:

  • If delivery of the last rekeying message has been confirmed (e.g., through SCTP acknowledgment of the DATA chunk carrying the TLS Finished), the old DKC MAY be removed after a short drain timer. A value of 120 seconds (one Maximum Segment Lifetime) is RECOMMENDED in this case.

  • If delivery has not been confirmed, the drain timer MUST be set to at least the SCTP association failure time (T_fail). This ensures that if the final rekeying message is lost and requires retransmission, the old DKC remains available for as long as SCTP continues retransmission attempts. If the association fails (i.e., SCTP declares the peer unreachable), the DKCs are removed as part of association teardown.

The SCTP association failure time depends on the Retransmission Timeout (RTO) and the maximum number of retransmissions (Association.Max.Retrans, as defined in [RFC9260]). With the default values from [RFC9260] (RTO.Initial = 1s, RTO.Max = 60s, Association.Max.Retrans = 10), T_fail is approximately 303 seconds.

Implementations SHOULD set the drain timer to at least T_fail when delivery of the final rekeying message has not been confirmed.

6.2.4. Simultaneous Rekey Resolution

As either endpoint can initiate a TLS handshake at the same time, either endpoint may receive a TLS ClientHello when it has already sent its own. In this case, the ClientHello from the Initiator (the endpoint with the keymanager client role) SHALL be processed, and the other SHALL be dropped.

6.2.5. Key Transition State Machine

This specification allows up to 2 Primary DKCs to be active at the same time. The following state machine governs the transition:

INIT Association started No TLS H/S yet 1. TLS initial H/S completed Association Restart YOUNG 2. Client Hello 3. Aging event from peer 4. Client H 5. TLS H/S REMOTE tie-break LOCAL Timeout OLD AGED 7. Flush 6. Server Hello LOCAL ABORT OLD 8. Flush
Figure 6: State Diagram for Rekeying
INIT:

Initial state. Only event 1 (TLS handshake completed) transitions to YOUNG.

YOUNG:

Only the Current DKC is populated. Event 2 (peer ClientHello) transitions to REMOTE OLD; event 3 (aging) transitions to LOCAL AGED.

LOCAL AGED:

A supervision timer runs. Event 5 (timeout) causes the key manager to check for local aging expire, in that case ABORT otherwise return to YOUNG. Event 4 (peer ClientHello with tie-break yielding server role) transitions to REMOTE OLD. Event 6 (ServerHello received) transitions to LOCAL OLD.

REMOTE OLD:

Both Old and Current DKCs exist. Old DKC is used for sending until the first packet encrypted with Current DKC is received from the peer. Event 7 (flush timer expires) transitions to YOUNG.

LOCAL OLD:

Both Old and Current DKCs exist. Current DKC is used for sending. Event 8 (flush timer expires) transitions to YOUNG.

In REMOTE OLD and LOCAL OLD, if a new ClientHello or Aging event arrives, the flushing timer is cleared and behavior is as in YOUNG.

6.3. SCTP Association Restart

6.3.1. Prerequisites

For protected SCTP restart to succeed:

  • Both endpoints MUST have a valid Restart DKC.

  • The Restart DKC MUST be stored securely and persistently to survive crash events (see Section 10.4 of [I-D.ietf-tsvwg-sctp-dtls-chunk]).

  • Both endpoints MUST have indicated restart support (R bit) in the DTLS Key Management Parameter.

6.3.2. Restart Procedure

Initiator Responder 1. (install restart keys from storage) 2. INIT Plain 3. INIT-ACK 4. [DTLS CHUNK(COOKIE ECHO)] Protected 5. [DTLS CHUNK(COOKIE ACK)] 6. 7. (TLS handshake for new keys, steps 8-13) 15. [DATA(Protection Established)] 14. 16. 17. [DTLS CHUNK(DATA(APP DATA))] APP DATA [DTLS CHUNK(DATA(APP DATA))]
Figure 7: SCTP Restart Procedure
  1. The restarting endpoint (Initiator) retrieves the restart key material from persistent secure storage and installs the Restart DKC for both send and receive directions.

  2. The Initiator sends INIT (VTag=0).

  3. The Responder replies INIT-ACK in plain text per [RFC9260]. Both include the DTLS Key Management Parameter with the same method list but a new random Tie Breaker.

  4. The Initiator sends COOKIE ECHO in a DTLS chunk protected with the Restart DKC (R bit set).

  5. The Responder replies COOKIE ACK in a DTLS chunk protected with the Restart DKC.

  6. Both endpoints have a new established association. Each endpoint immediately calls Require Protected SCTP Packets to enforce DTLS chunk protection (using the Restart DKC), then retrieves the agreed DTLS Key Management Method and role from the SCTP stack (e.g., using the "Get Agreed DTLS Key Management Method and Role" API defined in Section 7.2 of [I-D.ietf-tsvwg-sctp-dtls-chunk]) and verifies that the selected method matches the one defined in this document (see Section 9.1) and that the assigned role is as expected.

  7. The ULP MAY be informed that the association is protected at this point. ULP traffic MAY begin immediately using the Restart DKC.

  8. The client key manager starts a TLS 1.3 handshake, limiting offered cipher suites to those supported by the DTLS Chunk Protection Operator, and sends TLS ClientHello per Section 4, protected by the Restart DKC.

  9. The server key manager receives the TLS ClientHello, exports the client key material for the Primary DKC, and installs it as its read (receive) key.

  10. The server key manager sends its TLS ServerHello through Finished messages.

  11. The client key manager receives the TLS ServerHello message, exports all Primary DKC keys, and installs the client key material as its write (send) key and the server key material as its read (receive) key for the Primary DKC.

  12. The client key manager sends its TLS Certificate/CertificateVerify/Finished, protected by the DTLS Chunk using the new Primary DKC.

  13. The server key manager decrypts the DTLS-chunk-protected TLS messages, completes the handshake, exports the server key material for the Primary DKC, and installs it as its write (send) key.

  14. The server key manager sends a Protection Established control message (Section 4.1.1) to the client key manager. The server endpoint export and install the new Restart DKC key material (both send and receive directions), remove the old Restart DKC, and commit the new Restart DKC to persistent secure storage.

  15. The client key manager receives the Protection Established control message.

  16. The client key manager export and install the new Restart DKC key material (both send and receive directions), remove the old Restart DKC, and commit the new Restart DKC to persistent secure storage.

  17. Application traffic uses to the new Primary DKC.

After restart, the new Primary DKC MUST use epoch 3 (the epoch resets).

The Responder MUST NOT change the Restart DKC during the restart procedure. After the new Restart DKC is installed, the old one is removed.

It is RECOMMENDED to complete the TLS handshake and install new DKCs as soon as possible after restart, to minimize the window during which no Restart DKC is available for a subsequent restart.

Note: There MAY exist a short time gap after association establishment where no Restart DKC is yet installed. If an SCTP restart is initiated during that time, it will fail. However, this is unlikely as the restarting endpoint sends INIT multiple times with exponential back-off.

7. Error Handling

TLS has its own error reporting via TLS alert messages. When a TLS handshake error occurs, the TLS alert is sent in an SCTP user message (see Section 4) with the DTLS Key Management Messages PPID (4242).

If a TLS handshake fails during initial establishment, the SCTP association MUST be aborted.

If a TLS handshake fails during rekeying, and the current DKC has not yet reached its usage limits, the implementation SHOULD retry the handshake. If retry is not possible or the current DKC is aged beyond policy limits, the association MUST be aborted.

8. Security Considerations

8.1. General

The security considerations given in [RFC8446], [RFC9147], and [RFC9260] also apply to this document. BCP 195 [RFC9325] [RFC8996] provides recommendations and requirements for improving the security of deployed services that use TLS. BCP 195 MUST be followed.

8.2. Privacy Considerations

Although TLS for DTLS in SCTP provides privacy for user messages and almost all SCTP chunks, the SCTP common header, DTLS chunk header, and DTLS record header are not confidentiality protected. An attacker can correlate TLS connections over the same SCTP association using the SCTP common header.

To provide identity protection, it is RECOMMENDED to use certificate-based authentication in TLS 1.3 and to not reuse tickets. TLS 1.3 with external PSK authentication does not provide identity protection.

By mandating ephemeral key exchange and cipher suites with confidentiality, TLS for DTLS in SCTP effectively mitigates many forms of passive pervasive monitoring. Frequent rekeying forces attackers to perform dynamic key exfiltration and limits the amount of compromised data due to key compromise.

9. IANA Considerations

9.1. DTLS Key Management Method Identifier

IANA is requested to assign one DTLS Key Management Method Identifier in the "DTLS Key Management Method" registry defined by [I-D.ietf-tsvwg-sctp-dtls-chunk] to identify the key-management method defined in this document.

Table 3: DTLS Key Management Method Identifier
Identifier Key Management Method Name Reference Contact
192 TLS for DTLS in SCTP RFC-TBD Draft Authors

9.2. TLS Exporter Labels

IANA is requested to register the following value in the TLS Exporter Label Registry [RFC5705] with Reference RFC-TBD and empty Comment.

Table 4: TLS Exporter Label
Value DTLS-OK Recommended
EXPORTER_TLS_FOR_DTLS_IN_SCTP Y N

10. References

10.1. Normative References

[RFC8446]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.
[RFC8996]
Moriarty, K. and S. Farrell, "Deprecating TLS 1.0 and TLS 1.1", BCP 195, RFC 8996, DOI 10.17487/RFC8996, , <https://www.rfc-editor.org/info/rfc8996>.
[RFC9147]
Rescorla, E., Tschofenig, H., and N. Modadugu, "The Datagram Transport Layer Security (DTLS) Protocol Version 1.3", RFC 9147, DOI 10.17487/RFC9147, , <https://www.rfc-editor.org/info/rfc9147>.
[RFC9260]
Stewart, R., Tüxen, M., and K. Nielsen, "Stream Control Transmission Protocol", RFC 9260, DOI 10.17487/RFC9260, , <https://www.rfc-editor.org/info/rfc9260>.
[RFC9325]
Sheffer, Y., Saint-Andre, P., and T. Fossati, "Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, , <https://www.rfc-editor.org/info/rfc9325>.
[I-D.ietf-tsvwg-sctp-dtls-chunk]
Westerlund, M., Mattsson, J. P., Porfiri, C., and M. Tüxen, "Stream Control Transmission Protocol (SCTP) DTLS Chunk", Work in Progress, Internet-Draft, draft-ietf-tsvwg-sctp-dtls-chunk-03, , <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-sctp-dtls-chunk-03>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.

10.2. Informative References

[RFC5705]
Rescorla, E., "Keying Material Exporters for Transport Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, , <https://www.rfc-editor.org/info/rfc5705>.
[RFC9525]
Saint-Andre, P. and R. Salz, "Service Identity in TLS", RFC 9525, DOI 10.17487/RFC9525, , <https://www.rfc-editor.org/info/rfc9525>.
[ANSSI-DAT-NT-003]
Agence nationale de la sécurité des systèmes d'information, "Recommendations for securing networks with IPsec", ANSSI Technical Report DAT-NT-003 , , <<https://www.ssi.gouv.fr/uploads/2015/09/NT_IPsec_EN.pdf>>.
[KTH-NCSA]
Ekerå, M., "On factoring integers, and computing discrete logarithms and orders, quantumly", KTH, School of Electrical Engineering and Computer Science (EECS), Computer Science, Theoretical Computer Science, TCS. Swedish NCSA, Swedish Armed Forces. , , <http://kth.diva-portal.org/smash/get/diva2:1902626/FULLTEXT01.pdf>.

Authors' Addresses

Magnus Westerlund
Ericsson
John Preuß Mattsson
Ericsson
Claudio Porfiri
Ericsson