| Internet-Draft | TLS based Key Management for SCTP DTLS C | October 2026 |
| Westerlund, et al. | Expires 11 April 2027 | [Page] |
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.¶
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.¶
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 11 April 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The Stream Control Transmission Protocol (SCTP) [RFC9260] is a transport protocol designed to support message-oriented communication with features such as multiple streams for messages and multi-homing. In many deployments, particularly telecommunication networks, 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 [RFC9846] 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 "DTLS in SCTP".¶
The key advantages of this approach are:¶
It requires no extensions to TLS 1.3 to support long-lived sessions.¶
It is based on TLS 1.3 rather than DTLS 1.3, leveraging widely available TLS implementations.¶
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.¶
This document uses the following terms:¶
An SCTP association.¶
The endpoint that has the key management client role. This corresponds to the "client" role (C bit) in the DTLS Key Management Parameter of [I-D.ietf-tsvwg-sctp-dtls-chunk].¶
A TLS 1.3 connection used for key management.¶
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).¶
The endpoint initiating the SCTP association. In case of simultaneous open, both SCTP endpoints may have started as Initiator.¶
A DTLS Key Context used to protect regular SCTP association traffic.¶
The endpoint acting as server during SCTP association establishment.¶
A DTLS Key Context reserved exclusively for the SCTP association restart procedure.¶
The endpoint taking the key management server role. This corresponds to the "server" role (S bit) in the DTLS Key Management Parameter of [I-D.ietf-tsvwg-sctp-dtls-chunk].¶
This section provides an informational overview of TLS for DTLS in SCTP. Normative procedures are specified in Section 6.¶
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.¶
The protocol operates in three phases:¶
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.¶
Rekeying: Either endpoint may trigger rekeying to derive fresh DKCs for the next epoch, providing forward secrecy and re-authentication. The client key manager always performs the TLS 1.3 handshake; when the server key manager needs to rekey it requests one via a Rekey Request. Old DKCs are removed after draining.¶
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.¶
This document defines the usage of TLS 1.3 [RFC9846]. Earlier versions of TLS MUST NOT be used. Only one version of TLS MUST be used during the lifetime of an SCTP Association.¶
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]).¶
DTLS in SCTP MUST be mutually authenticated. It is RECOMMENDED to use certificate-based authentication.¶
When certificates are used, the application is responsible for trust anchor management, 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.¶
The authenticated peer identity MUST remain stable across every TLS connection established for the lifetime of the SCTP association, including the connections used for rekeying (Section 6.2) and the connection established after an SCTP restart (Section 6.3). 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.¶
This requirement is independent of the key management role: the Client and Server roles are re-derived from the SCTP handshake and MAY differ after an SCTP restart (Section 6.3), but an endpoint that changes role MUST still present the same authenticated identity.¶
Implementations need to implement criteria for when to initiate rekeying. Implementations are RECOMMENDED to rekey at least every hour and every 100 GB of data, which matches what is specified for IPsec in [ANSSI-DAT-NT-003].¶
Implementations MUST set up a new TLS connection using a full handshake with new certificates before any last used 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 as it doesn't provide a new ephemeral key for the key exporter.¶
TLS 1.3 tickets MAY be used for session resumption (see Section 3.5).¶
The endpoints MUST limit the number of simultaneous TLS connections to one.¶
Support for TLS 1.3 session resumption is OPTIONAL. When supported, it provides the following benefits:¶
It avoids re-sending the full certificate chain on subsequent TLS connections. This saves a significant amount of message size, especially with post-quantum cryptography (PQC) certificates, which can be significantly larger than certificates based on Elliptic Curve Cryptography.¶
It reduces processing, and thus energy consumption and latency.¶
It allows successive TLS connections to be chained, increasing security by forcing an adversary to break them in sequence [KTH-NCSA].¶
Session resumption tickets are delivered using the standard TLS 1.3 mechanisms: the server MAY send tickets unsolicited [RFC9846], and the client MAY request them [RFC9149]. To ensure the client has the opportunity to obtain a ticket before the TLS connection is torn down, the client key manager SHOULD initiate the closure of the TLS connection, and the server key manager SHOULD NOT close the TLS connection before the client has had the opportunity to obtain the tickets it requested.¶
All key management messages MUST be sent as SCTP user messages using reliable in-order delivery on stream 0.¶
There are two classes of these key management messages:¶
These two classes are identified by using a specific PPID each.¶
One or more complete TLS records are sent as an SCTP user message. These user messages MUST use PPID 4242. Other SCTP user messages MUST NOT use this PPID.¶
Control messages are sent as SCTP user messages, they MUST use PPID 4243 and contain a single byte identifying the type as shown in the following Figure 2. Other user messages MUST NOT use this PPID.¶
Identifies the control message type.¶
The following control message type is defined:¶
| Ctrl Type | Name | Description |
|---|---|---|
| 0x01 | Read Key Installed | Notifies the peer that the read key is installed |
| 0x02 | Rekey Request | Requests the client key manager to initiate a rekeying TLS handshake |
The Read Key Installed control message (Ctrl Type = 0x01) is sent by a key manager to its peer key manager for indicating that it has set the read key material. This enables the peer receiving this message to set its write key.¶
The message is also used during rekeying in the same way as in the initial handshake.¶
The Rekey Request control message (Ctrl Type = 0x02) is sent by the server key manager to the client key manager to request that the client key manager initiate a rekeying TLS handshake (see Section 6.2).¶
Because only the client key manager initiates a TLS handshake, the server key manager uses this message when it determines that rekeying is needed (per its own criteria in Section 3.4). This division of roles allows an endpoint holding only the client role to implement a TLS client only, and an endpoint holding only the server role to implement a TLS server only.¶
Upon receiving a Rekey Request, the client key manager initiates a rekeying TLS handshake as described in Section 6.2, unless a rekeying is already in progress, in which case the Rekey Request is ignored (see Section 6.2.4).¶
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 (Client or Server), the selected DTLS Key Management Method, and the downgrade prevention data (both endpoints' DTLS Key Management Parameters) used as input to key derivation.¶
DTLS Key Contexts are derived using the TLS Exporter as defined in Section 7.5 of [RFC9846]. The exporter context is constructed as the concatenation of the following fields:¶
| Field | Length | Value |
|---|---|---|
| Direction | 1 byte | 0x00 = Client to Server, 0x01 = Server to Client |
| Key role | 1 byte | 0x00 = primary/traffic, 0x01 = restart |
| Key type | 1 byte | 0x00 = Key, 0x01 = SN_KEY, 0x02 = IV |
| Client KM Param | variable | DTLS Key Management Parameter sent by the endpoint designated as Client |
| Server KM Param | variable | DTLS Key Management Parameter sent by the endpoint designated as Server |
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.¶
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 Client installs exports with Direction=Client to server as its write keys and Direction=Server to client as its read keys. The Responder does the reverse.¶
The length of exported material depends on the negotiated cipher suite.¶
Each successful TLS handshake produces one or two (if restart is supported) DKCs:¶
The first DKC established for any SCTP association MUST use DTLS epoch 3. Each subsequent Primary DKC, together with its paired Restart DKC, uses the next consecutive epoch. After an SCTP restart, the epoch resets to 3.¶
If SCTP Restart is supported the endpoint MUST generate a Restart DKC for each epoch where a Primary DKC is generated. The Restart DKC uses the same DTLS epoch as the Primary DKC generated alongside it; the two are distinguished not by epoch but by the restart indicator (the R bit in the DTLS chunk, see [I-D.ietf-tsvwg-sctp-dtls-chunk]) and by the Key role field of the exporter context (Section 5.2). 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.¶
Legend: TLS = local TLS engine; client KM/server KM = client/server key manager; RKI = Read Key Installed control message; R+W = read and write keys.¶
The diagram Figure 3 shows the case where SCTP Initiator ends up with the Key Manager client role. 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 key managers drive TLS solely through the TLS user API.¶
The procedure is as follows:¶
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.¶
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 3 it is server).¶
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 3 it is client).¶
The client key manager starts a TLS 1.3 handshake, limiting offered cipher suites to those supported by the DTLS Chunk Protection Operator, and relays the resulting flight of TLS records to the server key manager per Section 4.¶
The server key manager starts a TLS 1.3 server and is ready to relay any received TLS records to the TLS server and to forward any TLS records produced by the TLS server to the client key manager per Section 4.¶
The TLS endpoints continue exchange TLS messages to complete the TLS handshake.¶
The client key manager's TLS handshake completes. It exports all Primary and Restart DKC keys, installs the server to client key material as its read (receive) key, and sends a Read Key Installed control message (Section 4.2.1) to the server key manager.¶
The server key manager proceeds only after both its own TLS handshake has completed (8a) and it has received the client key manager's Read Key Installed control message (8b). Once both conditions are met, it exports both direction key material for both the Primary and Restart DKCs, installs both the read (receive) key and the write (send) key, calls Require Protected SCTP Packets to enforce DTLS chunk protection for all future packets, informs the ULP that the association is protected, and sends a Read Key Installed control message (Section 4.2.1) to the client key manager.¶
The client key manager receives the Read Key Installed control message, installs the client key material as its write (send) key, calls Require Protected SCTP Packets to enforce DTLS chunk protection for all future packets, and informs the ULP that the association is protected.¶
Protected application traffic can begin.¶
If the TLS handshake fails in step 6, it SHOULD be retried according to Section 7.¶
After key installation, the TLS connection SHOULD be closed promptly. When session resumption is supported, closure follows the procedure in Section 3.5.¶
Rekeying is triggered by implementation-configurable criteria, including:¶
The client key manager and the server key manager keep the same key management roles for the entire lifetime of the SCTP association: the client key manager is always the TLS client and the server key manager is always the TLS server, for the initial handshake and for every rekeying. Consequently, only the client key manager ever initiates a TLS handshake. This allows an endpoint holding only the client role to implement only a TLS client, and an endpoint holding only the server role to implement only a TLS server.¶
Either endpoint may need to rekey. The need is acted upon as follows:¶
If the client key manager needs to rekey, it directly initiates a rekeying TLS handshake.¶
If the server key manager needs to rekey, it cannot initiate a TLS handshake itself. Instead it sends a Rekey Request control message (Section 4.2.2) to the client key manager, which then initiates the rekeying TLS handshake.¶
Because the key management messages are carried on SCTP stream 0 with reliable, in-order delivery, the Rekey Request and all handshake messages are guaranteed to be delivered and are not lost; no key-management-level retransmission is required.¶
Legend: TLS = local TLS engine; cliKM/srvKM = client/server key manager; Rekey Req = Rekey Request control message; RKI = Read Key Installed control message; R+W = read and write keys; N, N+1 = old and new epoch; TX->N+1 = switch sending to the epoch N+1 DKC.¶
The diagram in Figure 4 shows both triggers. Steps 1 and 2 (the Rekey Request) are present only when the server key manager is the one that needs to rekey; when the client key manager needs to rekey it starts directly at step 3. As in initial establishment, the key managers drive TLS solely through the TLS user API.¶
The procedure is as follows:¶
If the server key manager needs to rekey, it sends a Rekey Request control message (Section 4.2.2) to the client key manager. The server key manager does not start a TLS handshake.¶
The client key manager receives the Rekey Request. If it is not already rekeying, it proceeds to initiate a rekeying TLS handshake (step 3). If it is already rekeying, it ignores the Rekey Request (see Section 6.2.4).¶
The client key manager starts a rekeying TLS handshake for epoch N+1 and relays the resulting flight of TLS records to the server key manager per Section 4.¶
The server key manager awaits the rekeying TLS handshake as a TLS server.¶
The TLS endpoints continue exchange TLS messages to complete the TLS handshake.¶
The client key manager's TLS handshake completes. It exports all Primary and Restart DKC keys for epoch N+1, installs the server to client key material as its read (receive) key, and sends a Read Key Installed control message (Section 4.2.1) to the server key manager.¶
The server key manager proceeds only after both its own TLS handshake has completed (7a) and it has received the client key manager's Read Key Installed control message (7b). Once both conditions are met, it exports both direction key material for both the Primary and Restart DKCs for epoch N+1, installs both the read (receive) key and the write (send) key, starts the drain timer to remove the old (epoch N) DKC, and switches sending to the epoch N+1 DKC. The server key manager sends a Read Key Installed control message (Section 4.2.1) to the client key manager.¶
The client key manager receives the Read Key Installed control message (Section 4.2.1), installs the client key material as its write (send) key, starts the drain timer to remove the old (epoch N) DKC, and switches sending to the epoch N+1 DKC.¶
If the TLS handshake fails in step 5, it SHOULD be retried according to Section 7.¶
The new DKCs use epoch N+1 (where N is the current epoch when initiating rekeying). 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.¶
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.¶
Because only the client key manager ever initiates a TLS handshake, two ClientHellos cannot cross and no tie-breaker is needed.¶
The only concurrency to resolve is when the server key manager sends a Rekey Request while the client key manager has already initiated (or is about to initiate) a rekeying to epoch N+1. Since both the direct client trigger and the server's Rekey Request lead to the same outcome, a single client-initiated rekeying to epoch N+1, the client key manager treats an incoming Rekey Request as redundant and ignores it while a rekeying is already in progress.¶
Similarly, if the server key manager needs to rekey while a client-initiated rekeying is already in progress, it does not send a Rekey Request, as the in-progress rekeying already satisfies the need.¶
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.¶
The restarting endpoint (Initiator) retrieves the restart key material from persistent secure storage and installs the Restart DKC for both send and receive directions.¶
The Initiator sends INIT (VTag=0). Include the DTLS Key Management Parameter with the same method list but a new random Tie Breaker.¶
The Responder (the not restarting endpoint) replies INIT-ACK in plain text per [RFC9260]. Include the DTLS Key Management Parameter with the same method list but a new random Tie Breaker.¶
The Initiator sends COOKIE ECHO in a DTLS chunk protected with the Restart DKC (R bit set).¶
The Responder replies COOKIE ACK in a DTLS chunk protected with the Restart DKC (R bit set).¶
Both endpoints have a restarted association, whose state is as described in Section 5.2.4.1 of [RFC9260], with two differences specific to this document: DTLS chunk protection is enforced using the Restart DKC (the COOKIE ECHO and COOKIE ACK were exchanged protected with it), and the DTLS Key Management Client and Server roles may differ from those of the previous instance of the association, since the new INIT handshake re-runs role determination. The authenticated peer identity, however, MUST remain the same as in the previous instance of the association (see Section 3.3). The ULP MAY be informed that the association is restarted at this point. ULP traffic MAY begin immediately using the Restart DKC.¶
Steps 7 to 12 perform the TLS 1.3 handshake and key installation, and correspond one-to-one to steps 4 to 9 of the initial establishment procedure (Section 6.1). They differ only as follows:¶
all key management messages are carried inside DTLS chunks protected with the Restart DKC;¶
in addition to the Primary DKC, each endpoint exports, installs, and commits the new Restart DKC to persistent secure storage, removing the old one;¶
at the key transition (steps 11 and 12), each endpoint switches the active DTLS key context from the Restart DKC to the new Primary DKC after the Read Key Installed exchange completes (the Read Key Installed messages themselves are protected with the Restart DKC), rather than enforcing protection for the first time; the ULP was already informed at step 6.¶
Protected application traffic uses 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.¶
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 TLS records for DTLS Chunk Key Management PPID (4242).¶
If a TLS handshake fails during initial establishment and the implementation determines that it can address the cause of the error (for example, by retrying with different parameters, as long as doing so does not compromise security), it SHOULD retry the TLS handshake. Otherwise, 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 limits, the association MUST be aborted.¶
The security considerations given in [RFC9846], [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.¶
Although 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, 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.¶
It is RECOMMENDED that implementations of this key management method do not allow the ULP to exchange any data beyond the key management information following this specification until the peer is authenticated and the local endpoint and the remote have both installed read and write keys and enforced protection. This is to avoid any information leakage from the ULP to unintended parties.¶
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.¶
| Identifier | Key Management Method Name | Reference | Contact |
|---|---|---|---|
| 192 | TLS based Key Management for SCTP DTLS Chunk | RFC-TBD | Draft Authors |
IANA is requested to register the following value in the TLS Exporter Label Registry [RFC5705] with Reference RFC-TBD and empty Comment.¶
| Value | DTLS-OK | Recommended |
|---|---|---|
| EXPORTER_TLS_FOR_DTLS_IN_SCTP | Y | N |
IANA is requested to create a new registry called "DTLS Chunk Key Management Control Message Types" in the Stream Control Transmission Protocol (SCTP) Parameters group. This registry governs the values of the Ctrl Type field of the control messages defined in Section 4.2.¶
The registration policy for this registry is IETF Review as defined in [RFC8126].¶
Each entry in the registry MUST contain the following fields:¶
Ctrl Type: an 8-bit unsigned integer value (0x00-0xFF).¶
Name: a short, human-readable name for the control message type.¶
Reference: a reference to the document defining the control message type.¶
The initial contents of the registry are shown in Table 5. The value 0x00 is reserved.¶
| Ctrl Type | Name | Reference |
|---|---|---|
| 0x00 | Reserved | RFC-TBD |
| 0x01 | Read Key Installed | RFC-TBD |
| 0x02 | Rekey Request | RFC-TBD |
| 0x03-0xFF | Unassigned |
In the Stream Control Transmission Protocol (SCTP) Parameters group's "Payload Protocol Identifiers" registry, IANA is requested to update the name and reference for the PPID 4242 as depicted in Table 6. Furthermore, IANA is requested to add an entry in the "Payload Protocol Identifiers" registry for the PPID 4243 as depicted in Table 6.¶
| ID Value | SCTP Payload Protocol Identifier | Reference |
|---|---|---|
| 4242 | TLS records for DTLS Chunk Key Management | RFC-To-Be |
| 4243 | Control Messages for DTLS Chunk Key Management | RFC-To-Be |