summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8842.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8842.txt')
-rw-r--r--doc/rfc/rfc8842.txt962
1 files changed, 962 insertions, 0 deletions
diff --git a/doc/rfc/rfc8842.txt b/doc/rfc/rfc8842.txt
new file mode 100644
index 0000000..c0bd356
--- /dev/null
+++ b/doc/rfc/rfc8842.txt
@@ -0,0 +1,962 @@
+
+
+
+
+Internet Engineering Task Force (IETF) C. Holmberg
+Request for Comments: 8842 Ericsson
+Updates: 5763, 7345 R. Shpount
+Category: Standards Track TurboBridge
+ISSN: 2070-1721 January 2021
+
+
+ Session Description Protocol (SDP) Offer/Answer Considerations for
+ Datagram Transport Layer Security (DTLS) and Transport Layer Security
+ (TLS)
+
+Abstract
+
+ This document defines the Session Description Protocol (SDP) offer/
+ answer procedures for negotiating and establishing a Datagram
+ Transport Layer Security (DTLS) association. The document also
+ defines the criteria for when a new DTLS association must be
+ established. The document updates RFCs 5763 and 7345 by replacing
+ common SDP offer/answer procedures with a reference to this
+ specification.
+
+ This document defines a new SDP media-level attribute, "tls-id".
+
+ This document also defines how the "tls-id" attribute can be used for
+ negotiating and establishing a Transport Layer Security (TLS)
+ connection, in conjunction with the procedures in RFCs 4145 and 8122.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8842.
+
+Copyright Notice
+
+ Copyright (c) 2021 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 Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Conventions
+ 3. Establishing a New DTLS Association
+ 3.1. General
+ 3.2. Change of Local Transport Parameters
+ 3.3. Change of ICE ufrag Value
+ 4. SDP "tls-id" Attribute
+ 5. SDP Offer/Answer Procedures
+ 5.1. General
+ 5.2. Generating the Initial SDP Offer
+ 5.3. Generating the Answer
+ 5.4. Offerer Processing of the SDP Answer
+ 5.5. Modifying the Session
+ 6. ICE Considerations
+ 7. TLS Considerations
+ 8. SIP Considerations
+ 9. RFC Updates
+ 9.1. General
+ 9.2. Update to RFC 5763
+ 9.2.1. Update to Section 1
+ 9.2.2. Update to Section 5
+ 9.2.3. Update to Section 6.6
+ 9.2.4. Update to Section 6.7.1
+ 9.3. Update to RFC 7345
+ 9.3.1. Update to Section 4
+ 9.3.2. Update to Section 5.2.1
+ 9.3.3. Update to Section 9.1
+ 10. Security Considerations
+ 11. IANA Considerations
+ 12. References
+ 12.1. Normative References
+ 12.2. Informative References
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ [RFC5763] defines Session Description Protocol (SDP) offer/answer
+ procedures for Secure Real-time Transport Protocol using Datagram
+ Transport Layer Security (DTLS-SRTP). [RFC7345] defines SDP offer/
+ answer procedures for UDP Transport Layer over Datagram Transport
+ Layer Security (UDPTL-DTLS). This specification defines general
+ offer/answer procedures for DTLS, based on the procedures in
+ [RFC5763]. Other specifications, defining specific DTLS usages, can
+ then reference this specification, in order to ensure that the DTLS
+ aspects are common among all usages. Having common procedures is
+ essential when multiple usages share the same DTLS association
+ [RFC8843]. This document updates [RFC5763] and [RFC7345] by
+ replacing common SDP offer/answer procedures with a reference to this
+ specification.
+
+ | NOTE: Since the publication of [RFC5763], [RFC4474] has been
+ | obsoleted by [RFC8224]. The updating of the references (and
+ | the associated procedures) within [RFC5763] is outside the
+ | scope of this document. However, implementers of [RFC5763]
+ | applications are encouraged to implement [RFC8224] instead of
+ | [RFC4474].
+
+ As defined in [RFC5763], a new DTLS association MUST be established
+ when transport parameters are changed. Transport parameter change is
+ not well defined when Interactive Connectivity Establishment (ICE)
+ [RFC8445] is used. One possible way to determine a transport change
+ is based on ufrag [RFC8445] change, but the ufrag value is changed
+ both when ICE is negotiated and when ICE restart [RFC8445] occurs.
+ These events do not always require a new DTLS association to be
+ established, but previously there was no way to explicitly indicate
+ in an SDP offer or answer whether a new DTLS association was
+ required. To solve that problem, this document defines a new SDP
+ attribute, "tls-id". The pair of SDP "tls-id" attribute values (the
+ attribute values of the offerer and the answerer) uniquely identifies
+ the DTLS association. Providing a new value of the "tls-id"
+ attribute in an SDP offer or answer can be used to indicate whether a
+ new DTLS association is to be established.
+
+ The SDP "tls-id" attribute can be specified when negotiating a
+ Transport Layer Security (TLS) connection, using the procedures in
+ this document in conjunction with the procedures in [RFC5763] and
+ [RFC8122]. The unique combination of SDP "tls-id" attribute values
+ can be used to identify the negotiated TLS connection. The unique
+ value can be used, for example, within TLS protocol extensions to
+ differentiate between multiple TLS connections and correlate those
+ connections with specific offer/answer exchanges. The TLS-specific
+ considerations are described in Section 7.
+
+2. 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.
+
+3. Establishing a New DTLS Association
+
+3.1. General
+
+ A new DTLS association must be established between two endpoints
+ after a successful SDP offer/answer exchange in the following cases:
+
+ * The negotiated DTLS setup roles change; or
+
+ * One or more fingerprint values are modified, added, or removed in
+ either an SDP offer or answer; or
+
+ * The intent to establish a new DTLS association is explicitly
+ signaled using SDP, by changing the value of the SDP "tls-id"
+ attribute defined in this document;
+
+ | NOTE: The first two items above are based on the procedures in
+ | [RFC5763]. This specification adds the support for explicit
+ | signaling using the SDP "tls-id" attribute.
+
+ A new DTLS association can only be established as a result of the
+ successful SDP offer/answer exchange. Whenever an entity determines
+ that a new DTLS association is required, the entity MUST initiate an
+ SDP offer/answer exchange, following the procedures in Section 5.
+
+ The sections below describe typical cases where a new DTLS
+ association needs to be established.
+
+ In this document, a "new DTLS association" between two endpoints
+ refers to either an initial DTLS association (when no DTLS
+ association is currently established between the endpoints) or a DTLS
+ association replacing a previously established one.
+
+3.2. Change of Local Transport Parameters
+
+ If an endpoint modifies its local transport parameters (address and/
+ or port), and if the modification requires a new DTLS association,
+ the endpoint MUST change its local SDP "tls-id" attribute value (see
+ Section 4).
+
+ If the underlying transport protocol prohibits a DTLS association
+ from spanning multiple 5-tuples (transport/source address/source
+ port/destination address/destination port), and if the 5-tuple is
+ changed, the endpoint MUST change its local SDP "tls-id" attribute
+ value (see Section 4). An example of such a case is when DTLS is
+ carried over the Stream Control Transmission Protocol (SCTP), as
+ described in [RFC6083].
+
+3.3. Change of ICE ufrag Value
+
+ If an endpoint uses ICE and modifies a local ufrag value, and if the
+ modification requires a new DTLS association, the endpoint MUST
+ change its local SDP "tls-id" attribute value (see Section 4).
+
+4. SDP "tls-id" Attribute
+
+ The pair of SDP "tls-id" attribute values (the attribute values of
+ the offerer and the answerer) uniquely identifies the DTLS
+ association or TLS connection.
+
+ Name: tls-id
+
+ Value: tls-id-value
+
+ Usage Level: media
+
+ Charset Dependent: no
+
+ Default Value: N/A
+
+ Syntax:
+ tls-id-value = 20*255(tls-id-char)
+ tls-id-char = ALPHA / DIGIT / "+" / "/" / "-" / "_"
+
+ <ALPHA and DIGIT defined in RFC 4566>
+
+ Example:
+ a=tls-id:abc3de65cddef001be82
+
+ Every time an endpoint requests to establish a new DTLS association,
+ the endpoint MUST generate a new local "tls-id" attribute value. An
+ unchanged local "tls-id" attribute value, in combination with non-
+ changed fingerprints, indicates that the endpoint intends to reuse
+ the existing DTLS association.
+
+ The "tls-id" attribute value MUST be generated using a strong random
+ function and include at least 120 bits of randomness.
+
+ No default value is defined for the SDP "tls-id" attribute.
+ Implementations that wish to use the attribute MUST explicitly
+ include it in SDP offers and answers. If an offer or answer does not
+ contain a "tls-id" attribute (this could happen if the offerer or
+ answerer represents an existing implementation that has not been
+ updated to support the "tls-id" attribute), a modification of one or
+ more of the following characteristics MUST be treated as an
+ indication that an endpoint wants to establish a new DTLS
+ association, unless there is another mechanism to explicitly indicate
+ that a new DTLS association is to be established:
+
+ * DTLS setup role; or
+
+ * fingerprint set; or
+
+ * local transport parameters
+
+ | NOTE: A modification of the ufrag value is not treated as an
+ | indication that an endpoint wants to establish a new DTLS
+ | association. In order to indicate that a new DTLS association
+ | is to be established, one or more of the characteristics listed
+ | above have to be modified.
+
+ The mux category [RFC8859] for the "tls-id" attribute is "IDENTICAL",
+ which means that the attribute value applies to all media
+ descriptions being multiplexed [RFC8843]. However, as described in
+ [RFC8843], in order to avoid duplication, the attribute is only
+ associated with the "m=" line representing the offerer/answerer
+ BUNDLE tag.
+
+ For RTP-based media, the "tls-id" attribute applies to the whole
+ associated media description. The attribute MUST NOT be defined per
+ source (using the SDP "ssrc" attribute [RFC5576]).
+
+ The SDP offer/answer procedures [RFC3264] associated with the
+ attribute are defined in Section 5.
+
+5. SDP Offer/Answer Procedures
+
+5.1. General
+
+ This section defines the generic SDP offer/answer procedures for
+ negotiating a DTLS association. Additional procedures (e.g.,
+ regarding usage of specific SDP attributes) for individual DTLS
+ usages (e.g., DTLS-SRTP) are outside the scope of this specification
+ and need to be specified in a usage-specific document.
+
+ | NOTE: The procedures in this section are generalizations of
+ | procedures first specified in the DTLS-SRTP document [RFC5763],
+ | with the addition of usage of the SDP "tls-id" attribute. That
+ | document is herein updated to make use of these new procedures.
+
+ The procedures in this section apply to an SDP media description
+ ("m=" line) associated with DTLS-protected media/data.
+
+ When an offerer or answerer indicates that it wants to establish a
+ new DTLS association, it needs to make sure that media packets
+ associated with any previously established DTLS association and the
+ new DTLS association can be demultiplexed. In the case of an ordered
+ transport (e.g., SCTP), this can be done simply by sending packets
+ for the new DTLS association after all packets associated with a
+ previously established DTLS association have been sent. In the case
+ of an unordered transport, such as UDP, packets associated with a
+ previously established DTLS association can arrive after the answer
+ SDP and the first packets associated with the new DTLS association
+ have been received. The only way to demultiplex packets associated
+ with a previously established DTLS association and the new DTLS
+ association is on the basis of the 5-tuple. Because of this, if an
+ unordered transport is used for the DTLS association, a new 3-tuple
+ (transport/source address/source port) MUST be allocated by at least
+ one of the endpoints so that DTLS packets can be demultiplexed.
+
+ When an offerer needs to establish a new DTLS association, and if an
+ unordered transport (e.g., UDP) is used, the offerer MUST allocate a
+ new 3-tuple for the offer in such a way that the offerer can
+ disambiguate any packets associated with the new DTLS association
+ from any packets associated with any other DTLS association. This
+ typically means using a local address and/or port, or a set of ICE
+ candidates (see Section 6), which were not recently used for any
+ other DTLS association.
+
+ When an answerer needs to establish a new DTLS association, if an
+ unordered transport is used, and the offerer did not allocate a new
+ 3-tuple, the answerer MUST allocate a new 3-tuple for the answer in
+ such a way that it can disambiguate any packets associated with the
+ new DTLS association from any packets associated with any other DTLS
+ association. This typically means using a local address and/or port,
+ or a set of ICE candidates (see Section 6), which were not recently
+ used for any other DTLS association.
+
+ In order to negotiate a DTLS association, the following SDP
+ attributes are used:
+
+ * The SDP "setup" attribute, defined in [RFC4145], is used to
+ negotiate the DTLS roles;
+
+ * The SDP "fingerprint" attribute, defined in [RFC8122], is used to
+ provide one or more fingerprint values; and
+
+ * The SDP "tls-id" attribute, defined in this specification, is used
+ to identity the DTLS association.
+
+ This specification does not define the usage of the SDP "connection"
+ attribute [RFC4145] for negotiating a DTLS association. However, the
+ attribute MAY be used if the DTLS association is used together with
+ another protocol (e.g., SCTP or TCP) for which the usage of the
+ attribute has been defined.
+
+ Unlike for TCP and TLS connections, endpoints MUST NOT use the SDP
+ "setup" attribute "holdconn" value when negotiating a DTLS
+ association.
+
+ Endpoints MUST support the hash functions as defined in [RFC8122].
+
+ The certificate received during the DTLS handshake [RFC6347] MUST
+ match a certificate fingerprint received in SDP "fingerprint"
+ attributes according to the procedures defined in [RFC8122]. If
+ fingerprints do not match the hashed certificate, then an endpoint
+ MUST tear down the media session immediately (see [RFC8122]).
+
+ SDP offerers and answerers might reuse certificates across multiple
+ DTLS associations, and provide identical fingerprint values for each
+ DTLS association. The combination of the SDP "tls-id" attribute
+ values of the SDP offerer and answerer identifies each individual
+ DTLS association.
+
+ | NOTE: There are cases where the SDP "tls-id" attribute value
+ | generated by the offerer will end up being used for multiple
+ | DTLS associations. For that reason, the combination of the
+ | attribute values of the offerer and answerer is needed in order
+ | to identity a DTLS association. An example of such a case is
+ | where the offerer sends an updated offer (Section 5.5) without
+ | modifying its attribute value, but the answerer determines that
+ | a new DTLS association is to be created. The answerer will
+ | generate a new local attribute value for the new DTLS
+ | association (Section 5.3), while the offerer will use the same
+ | attribute value that it used for the current association.
+ | Another example is when the Session Initiation Protocol (SIP)
+ | [RFC3261] is used for signaling, and an offer is forked to
+ | multiple answerers. The attribute value generated by the
+ | offerer will be used for DTLS associations established by each
+ | answerer.
+
+5.2. Generating the Initial SDP Offer
+
+ When an offerer sends the initial offer, the offerer MUST insert an
+ SDP "setup" attribute [RFC4145] with an "actpass" attribute value, as
+ well as one or more SDP "fingerprint" attributes according to the
+ procedures in [RFC8122]. In addition, the offerer MUST insert in the
+ offer an SDP "tls-id" attribute with a unique attribute value.
+
+ As the offerer inserts the SDP "setup" attribute with an "actpass"
+ attribute value, the offerer MUST be prepared to receive a DTLS
+ ClientHello message [RFC6347] from the answerer (if a new DTLS
+ association is established by the answerer) before the offerer
+ receives the SDP answer.
+
+ If the offerer receives a DTLS ClientHello message, and a DTLS
+ association is established before the offerer receives the SDP answer
+ carrying the fingerprint associated with the DTLS association, any
+ data received on the DTLS association before the fingerprint MUST be
+ considered to be coming from an unverified source. The processing of
+ such data and sending of data by the offerer to the unverified source
+ is outside the scope of this document.
+
+5.3. Generating the Answer
+
+ When an answerer sends an answer, the answerer MUST insert in the
+ answer an SDP "setup" attribute according to the procedures in
+ [RFC4145] and one or more SDP "fingerprint" attributes according to
+ the procedures in [RFC8122]. If the answerer determines, based on
+ the criteria specified in Section 3.1, that a new DTLS association is
+ to be established, the answerer MUST insert in the associated answer
+ an SDP "tls-id" attribute with a new unique attribute value. Note
+ that the offerer and answerer generate their own local "tls-id"
+ attribute values, and the combination of both values identifies the
+ DTLS association.
+
+ If the answerer receives an offer that requires establishment of a
+ new DTLS association, and if the answerer does not accept the
+ establishment of a new DTLS association, the answerer MUST reject the
+ "m=" lines associated with the suggested DTLS association [RFC3264].
+
+ If an answerer receives an offer that does not require the
+ establishment of a new DTLS association, and if the answerer
+ determines that a new DTLS association is not to be established, the
+ answerer MUST insert in the associated answer an SDP "tls-id"
+ attribute with the previously assigned attribute value. In addition,
+ the answerer MUST insert an SDP "setup" attribute with an attribute
+ value that does not change the previously negotiated DTLS roles, as
+ well as one or more SDP "fingerprint" attributes values that do not
+ change the previously sent fingerprint set, in the associated answer.
+
+ If the answerer receives an offer that does not contain an SDP "tls-
+ id" attribute, the answerer MUST NOT insert a "tls-id" attribute in
+ the answer.
+
+ If a new DTLS association is to be established, and if the answerer
+ inserts an SDP "setup" attribute with an "active" attribute value in
+ the answer, the answerer MUST initiate a DTLS handshake [RFC6347] by
+ sending a DTLS ClientHello message towards the offerer.
+
+ Even though an offerer is required to insert an "SDP" setup attribute
+ with an "actpass" attribute value in initial offers (Section 5.2) and
+ subsequent offers (Section 5.5), the answerer MUST be able to receive
+ initial and subsequent offers with other attribute values, in order
+ to be backward compatible with older implementations that might
+ insert other attribute values in initial and subsequent offers.
+
+5.4. Offerer Processing of the SDP Answer
+
+ When an offerer receives an answer that establishes a new DTLS
+ association based on criteria defined in Section 3.1, if the offerer
+ becomes DTLS client (based on the value of the SDP "setup" attribute
+ value [RFC4145]), the offerer MUST establish a DTLS association. If
+ the offerer becomes DTLS server, it MUST wait for the answerer to
+ establish the DTLS association.
+
+ If the offerer indicated a desire to reuse an existing DTLS
+ association, and the answerer does not request the establishment of a
+ new DTLS association, the offerer will continue to use the previously
+ established DTLS association.
+
+ A new DTLS association can be established based on changes in either
+ an SDP offer or answer. When communicating with legacy endpoints, an
+ offerer can receive an answer that includes the same fingerprint set
+ and setup role. A new DTLS association will still be established if
+ such an answer is received as a response to an offer that requested
+ the establishment of a new DTLS association, as the transport
+ parameters would have been changed in the offer.
+
+5.5. Modifying the Session
+
+ When an offerer sends a subsequent offer, if the offerer wants to
+ establish a new DTLS association, the offerer MUST insert an SDP
+ "setup" attribute [RFC4145] with an "actpass" attribute value, as
+ well as or more SDP "fingerprint" attributes according to the
+ procedures in [RFC8122]. In addition, the offerer MUST insert in the
+ offer an SDP "tls-id" attribute with a new unique attribute value.
+
+ When an offerer sends a subsequent offer and does not want to
+ establish a new DTLS association, if a previously established DTLS
+ association exists, the offerer MUST insert in the offer an SDP
+ "setup" attribute with an "actpass" attribute value, and one or more
+ SDP "fingerprint" attributes with attribute values that do not change
+ the previously sent fingerprint set. In addition, the offerer MUST
+ insert an SDP "tls-id" attribute with the previously assigned
+ attribute value in the offer.
+
+ | NOTE: When a new DTLS association is being established, each
+ | endpoint needs to be prepared to receive data on both the new
+ | and old DTLS associations as long as both are alive.
+
+6. ICE Considerations
+
+ When the Interactive Connectivity Establishment (ICE) mechanism
+ [RFC8445] is used, the ICE connectivity checks are performed before
+ the DTLS handshake begins. Note that if aggressive nomination mode
+ is used, multiple candidate pairs may be marked valid before ICE
+ finally converges on a single candidate pair.
+
+ | NOTE: Aggressive nomination has been deprecated from ICE but
+ | must still be supported for backwards compatibility reasons
+ | [RFC8445].
+
+ When a new DTLS association is established over an unordered
+ transport, in order to disambiguate any packets associated with the
+ newly established DTLS association, at least one of the endpoints
+ MUST allocate a completely new set of ICE candidates that were not
+ recently used for any other DTLS association. This means the
+ answerer cannot initiate a new DTLS association unless the offerer
+ initiated ICE restart [RFC8445]. If the answerer wants to initiate a
+ new DTLS association, it needs to initiate an ICE restart and a new
+ offer/answer exchange on its own. However, an ICE restart does not
+ by default require a new DTLS association to be established.
+
+ | NOTE: Simple Traversal of the UDP Protocol through NAT (STUN)
+ | packets are sent directly over UDP, not over DTLS. [RFC7983]
+ | describes how to demultiplex STUN packets from DTLS packets and
+ | SRTP packets.
+
+ Each ICE candidate associated with a component is treated as being
+ part of the same DTLS association. Therefore, from a DTLS
+ perspective, it is not considered a change of local transport
+ parameters when an endpoint switches between those ICE candidates.
+
+7. TLS Considerations
+
+ The procedures in this document can also be used for negotiating and
+ establishing a TLS connection, with the restriction described below.
+
+ As specified in [RFC4145], the SDP "connection" attribute is used to
+ indicate whether to establish a new TLS connection. An offerer and
+ answerer MUST ensure that the "connection" attribute value and the
+ "tls-id" attribute value do not cause a conflict regarding whether a
+ new TLS connection is to be established or not.
+
+ | NOTE: Even though the SDP "connection" attribute can be used to
+ | indicate whether a new TLS connection is to be established, the
+ | unique combination of SDP "tls-id" attribute values can be used
+ | to identity a TLS connection. The unique value can be used
+ | e.g., within TLS protocol extensions to differentiate between
+ | multiple TLS connections and correlate those connections with
+ | specific offer/answer exchanges. One such extension is defined
+ | in [RFC8844].
+
+ If an offerer or answerer inserts an SDP "connection" attribute with
+ a "new" value in the offer/answer and also inserts an SDP "tls-id"
+ attribute, the value of the "tls-id" attribute MUST be new and
+ unique.
+
+ If an offerer or answerer inserts an SDP "connection" attribute with
+ an "existing" value in the offer/answer, if a previously established
+ TLS connection exists, and if the offerer/answerer previously
+ inserted an SDP "tls-id" attribute associated with the same TLS
+ connection in an offer/answer, the offerer/answerer MUST also insert
+ an SDP "tls-id" attribute with the previously assigned value in the
+ offer/answer.
+
+ If an offerer or answerer receives an offer/answer with conflicting
+ attribute values, the offerer/answerer MUST process the offer/answer
+ as misformed.
+
+ An endpoint MUST NOT make assumptions regarding the support of the
+ SDP "tls-id" attribute by the peer. Therefore, to avoid ambiguity,
+ both offerers and answerers MUST always use the "connection"
+ attribute in conjunction with the "tls-id" attribute.
+
+ | NOTE: As defined in [RFC4145], if the SDP "connection"
+ | attribute is not explicitly present, the implicit default value
+ | is "new".
+
+ The SDP example below is based on the example in Section 3.4 of
+ [RFC8122], with the addition of the SDP "tls-id" attribute.
+
+ m=image 54111 TCP/TLS t38
+ c=IN IP4 192.0.2.2
+ a=tls-id:abc3de65cddef001be82
+ a=setup:passive
+ a=connection:new
+ a=fingerprint:SHA-256 \
+ 12:DF:3E:5D:49:6B:19:E5:7C:AB:4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF: \
+ 3E:5D:49:6B:19:E5:7C:AB:4A:AD
+ a=fingerprint:SHA-1 \
+ 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB
+
+8. SIP Considerations
+
+ When the Session Initiation Protocol (SIP) [RFC3261] is used as the
+ signal protocol for establishing a multimedia session, dialogs
+ [RFC3261] might be established between the caller and multiple
+ callees. This is referred to as forking. If forking occurs,
+ separate DTLS associations will be established between the caller and
+ each callee.
+
+ When forking occurs, an SDP offerer can receive DTLS ClientHello
+ messages and SDP answers from multiple remote locations. Because of
+ this, the offerer might have to wait for multiple SDP answers (from
+ different remote locations) until it receives a certificate
+ fingerprint that matches the certificate associated with a specific
+ DTLS handshake. The offerer MUST NOT declare a fingerprint mismatch
+ until it determines that it will not receive SDP answers from any
+ additional remote locations.
+
+ It is possible to send an INVITE request that does not contain an SDP
+ offer. Such an INVITE request is often referred to as an "empty
+ INVITE" or an "offerless INVITE". The receiving endpoint will
+ include the SDP offer in a response to the request. When the
+ endpoint generates such an SDP offer, if a previously established
+ DTLS association exists, the offerer MUST insert an SDP "tls-id"
+ attribute and one or more SDP "fingerprint" attributes, with
+ previously assigned attribute values. If a previously established
+ DTLS association does not exist, the offer MUST be generated based on
+ the same rules as a new offer (see Section 5.2). Regardless of the
+ previous existence of a DTLS association, the SDP "setup" attribute
+ MUST be included according to the rules defined in [RFC4145].
+ Furthermore, if ICE is used, ICE restart MUST be initiated, according
+ to the third-party call-control considerations described in
+ [RFC8839].
+
+9. RFC Updates
+
+9.1. General
+
+ This section updates specifications that use DTLS-protected media, in
+ order to reflect the procedures defined in this specification.
+
+9.2. Update to RFC 5763
+
+9.2.1. Update to Section 1
+
+ The reference to [RFC4572] is replaced with a reference to [RFC8122].
+
+9.2.2. Update to Section 5
+
+ The text in [RFC5763], Section 5 ("Establishing a Secure Channel") is
+ modified by replacing generic SDP offer/answer procedures for DTLS
+ with a reference to this specification:
+
+ NEW TEXT:
+
+ | The two endpoints in the exchange present their identities as part
+ | of the DTLS handshake procedure using certificates. This document
+ | uses certificates in the same style as described in "Connection-
+ | Oriented Media Transport over the Transport Layer Security (TLS)
+ | Protocol in the Session Description Protocol (SDP)" [RFC8122].
+ |
+ | If self-signed certificates are used, the content of the
+ | "subjectAltName" attribute inside the certificate MAY use the
+ | uniform resource identifier (URI) of the user. This is useful for
+ | debugging purposes only and is not required to bind the
+ | certificate to one of the communication endpoints. The integrity
+ | of the certificate is ensured through the "fingerprint" attribute
+ | in the SDP.
+ |
+ | The generation of public/private key pairs is relatively
+ | expensive. Endpoints are not required to generate certificates
+ | for each session.
+ |
+ | The offer/answer model, defined in [RFC3264], is used by protocols
+ | like the Session Initiation Protocol (SIP) [RFC3261] to set up
+ | multimedia sessions.
+ |
+ | When an endpoint wishes to set up a secure media session with
+ | another endpoint, it sends an offer in a SIP message to the other
+ | endpoint. This offer includes, as part of the SDP payload, a
+ | fingerprint of a certificate that the endpoint wants to use. The
+ | endpoint SHOULD send the SIP message containing the offer to the
+ | offerer's SIP proxy over an integrity-protected channel. The
+ | proxy SHOULD add an Identity header field according to the
+ | procedures outlined in [RFC4474]. When the far endpoint receives
+ | the SIP message, it can verify the identity of the sender using
+ | the Identity header field. Since the Identity header field is a
+ | digital signature across several SIP header fields, in addition to
+ | the body of the SIP message, the receiver can also be certain that
+ | the message has not been tampered with after the digital signature
+ | was applied and added to the SIP message.
+ |
+ | The far endpoint (answerer) may now establish a DTLS association
+ | with the offerer. Alternately, it can indicate in its answer that
+ | the offerer is to initiate the DTLS association. In either case,
+ | mutual DTLS certificate-based authentication will be used. After
+ | completing the DTLS handshake, information about the authenticated
+ | identities, including the certificates, is made available to the
+ | endpoint application. The answerer is then able to verify that
+ | the offerer's certificate used for authentication in the DTLS
+ | handshake can be associated with a certificate fingerprint
+ | contained in the offer in the SDP. At this point, the answerer
+ | may indicate to the end user that the media is secured. The
+ | offerer may only tentatively accept the answerer's certificate,
+ | since it may not yet have the answerer's certificate fingerprint
+ |
+ | When the answerer accepts the offer, it provides an answer back to
+ | the offerer containing the answerer's certificate fingerprint. At
+ | this point, the offerer can accept or reject the peer's
+ | certificate, and the offerer can indicate to the end user that the
+ | media is secured.
+ |
+ | Note that the entire authentication and key exchange for securing
+ | the media traffic is handled in the media path through DTLS. The
+ | signaling path is only used to verify the peers' certificate
+ | fingerprints.
+ |
+ | The offerer and answerer MUST follow the SDP offer/answer
+ | procedures defined in RFC 8842.
+
+9.2.3. Update to Section 6.6
+
+ The text in [RFC5763], Section 6.6 ("Session Modification") is
+ modified by replacing generic SDP offer/answer procedures for DTLS
+ with a reference to this specification:
+
+ NEW TEXT:
+
+ | Once an answer is provided to the offerer, either endpoint MAY
+ | request a session modification that MAY include an updated offer.
+ | This session modification can be carried in either an INVITE or
+ | UPDATE request. The peers can reuse an existing DTLS association
+ | or establish a new one, following the procedures in RFC 8842.
+
+9.2.4. Update to Section 6.7.1
+
+ The text in [RFC5763], Section 6.7.1 ("ICE Interaction") is modified
+ by replacing the ICE procedures with a reference to this
+ specification:
+
+ NEW TEXT:
+
+ | The Interactive Connectivity Establishment (ICE) [RFC8445]
+ | considerations for DTLS-protected media are described in RFC 8842.
+
+9.3. Update to RFC 7345
+
+9.3.1. Update to Section 4
+
+ The subsections (4.1 - 4.5) in [RFC7345], Section 4 ("SDP Offerer/
+ Answerer Procedures") are removed and replaced with the new text
+ below:
+
+ NEW TEXT:
+
+ | An endpoint (i.e., both the offerer and the answerer) MUST create
+ | an SDP media description ("m=" line) for each UDPTL-over-DTLS
+ | media stream and MUST assign a UDP/TLS/UDPTL value (see Table 1)
+ | to the "proto" field of the "m=" line.
+ |
+ | The offerer and answerer MUST follow the SDP offer/answer
+ | procedures defined in RFC 8842 in order to negotiate the DTLS
+ | association associated with the UDPTL-over-DTLS media stream. In
+ | addition, the offerer and answerer MUST use the SDP attributes
+ | defined for UDPTL over UDP, as defined in [ITU.T38].
+
+9.3.2. Update to Section 5.2.1
+
+ The text in [RFC7345], Section 5.2.1 ("ICE Usage") is modified by
+ replacing the ICE procedures with a reference to this specification:
+
+ NEW TEXT:
+
+ | The Interactive Connectivity Establishment (ICE) [RFC8445]
+ | considerations for DTLS-protected media are described in RFC 8842.
+
+9.3.3. Update to Section 9.1
+
+ A reference to [RFC8122] is added to [RFC7345], Section 9.1
+ ("Normative References"):
+
+ NEW TEXT:
+
+ | [RFC8122] Lennox, J. and C. Holmberg, "Connection-Oriented
+ | Media Transport over the Transport Layer Security
+ | (TLS) Protocol in the Session Description Protocol
+ | (SDP)", RFC 8122, DOI 10.17487/RFC8122, March 2017,
+ | <https://www.rfc-editor.org/info/rfc8122>.
+
+10. Security Considerations
+
+ This specification does not modify the security considerations
+ associated with DTLS or the SDP offer/answer mechanism. In addition
+ to the introduction of the SDP "tls-id" attribute, this document
+ simply clarifies the procedures for negotiating and establishing a
+ DTLS association.
+
+ This specification does not modify the actual TLS connection setup
+ procedures. The SDP "tls-is" attribute as such cannot be used to
+ correlate an SDP offer/answer exchange with a TLS connection setup.
+ Thus, this document does not introduce new security considerations
+ related to correlating an SDP offer/answer exchange with a TLS
+ connection setup.
+
+11. IANA Considerations
+
+ This document updates the "Session Description Protocol Parameters"
+ registry as specified in Section 8.2.2 of [RFC4566]. Specifically,
+ it adds the SDP "tls-id" attribute to the table for SDP media-level
+ attributes as follows.
+
+ Attribute name: tls-id
+
+ Type of attribute: Media-level
+
+ Subject to charset: No
+
+ Purpose: Indicates whether a new DTLS association or TLS connection
+ is to be established/re-established.
+
+ Appropriate Values: See Section 4
+
+ Contact name: Christer Holmberg
+
+ Mux Category: IDENTICAL
+
+12. References
+
+12.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
+ A., Peterson, J., Sparks, R., Handley, M., and E.
+ Schooler, "SIP: Session Initiation Protocol", RFC 3261,
+ DOI 10.17487/RFC3261, June 2002,
+ <https://www.rfc-editor.org/info/rfc3261>.
+
+ [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
+ with Session Description Protocol (SDP)", RFC 3264,
+ DOI 10.17487/RFC3264, June 2002,
+ <https://www.rfc-editor.org/info/rfc3264>.
+
+ [RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in
+ the Session Description Protocol (SDP)", RFC 4145,
+ DOI 10.17487/RFC4145, September 2005,
+ <https://www.rfc-editor.org/info/rfc4145>.
+
+ [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
+ Description Protocol", RFC 4566, DOI 10.17487/RFC4566,
+ July 2006, <https://www.rfc-editor.org/info/rfc4566>.
+
+ [RFC5763] Fischl, J., Tschofenig, H., and E. Rescorla, "Framework
+ for Establishing a Secure Real-time Transport Protocol
+ (SRTP) Security Context Using Datagram Transport Layer
+ Security (DTLS)", RFC 5763, DOI 10.17487/RFC5763, May
+ 2010, <https://www.rfc-editor.org/info/rfc5763>.
+
+ [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
+ Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
+ January 2012, <https://www.rfc-editor.org/info/rfc6347>.
+
+ [RFC7345] Holmberg, C., Sedlacek, I., and G. Salgueiro, "UDP
+ Transport Layer (UDPTL) over Datagram Transport Layer
+ Security (DTLS)", RFC 7345, DOI 10.17487/RFC7345, August
+ 2014, <https://www.rfc-editor.org/info/rfc7345>.
+
+ [RFC8122] Lennox, J. and C. Holmberg, "Connection-Oriented Media
+ Transport over the Transport Layer Security (TLS) Protocol
+ in the Session Description Protocol (SDP)", RFC 8122,
+ DOI 10.17487/RFC8122, March 2017,
+ <https://www.rfc-editor.org/info/rfc8122>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive
+ Connectivity Establishment (ICE): A Protocol for Network
+ Address Translator (NAT) Traversal", RFC 8445,
+ DOI 10.17487/RFC8445, July 2018,
+ <https://www.rfc-editor.org/info/rfc8445>.
+
+ [RFC8843] Holmberg, C., Alvestrand, H., and C. Jennings,
+ "Negotiating Media Multiplexing Using the Session
+ Description Protocol (SDP)", RFC 8843,
+ DOI 10.17487/RFC8843, January 2021,
+ <https://www.rfc-editor.org/info/rfc8843>.
+
+ [RFC8859] Nandakumar, S., "A Framework for Session Description
+ Protocol (SDP) Attributes When Multiplexing", RFC 8859,
+ DOI 10.17487/RFC8859, January 2021,
+ <https://www.rfc-editor.org/info/rfc8859>.
+
+12.2. Informative References
+
+ [ITU.T38] ITU-T, "Procedures for real-time Group 3 facsimile
+ communication over IP networks", Recommendation T.38,
+ September 2010, <https://www.itu.int/rec/T-REC-T.38/en>.
+
+ [RFC4474] Peterson, J. and C. Jennings, "Enhancements for
+ Authenticated Identity Management in the Session
+ Initiation Protocol (SIP)", RFC 4474,
+ DOI 10.17487/RFC4474, August 2006,
+ <https://www.rfc-editor.org/info/rfc4474>.
+
+ [RFC4572] Lennox, J., "Connection-Oriented Media Transport over the
+ Transport Layer Security (TLS) Protocol in the Session
+ Description Protocol (SDP)", RFC 4572,
+ DOI 10.17487/RFC4572, July 2006,
+ <https://www.rfc-editor.org/info/rfc4572>.
+
+ [RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific
+ Media Attributes in the Session Description Protocol
+ (SDP)", RFC 5576, DOI 10.17487/RFC5576, June 2009,
+ <https://www.rfc-editor.org/info/rfc5576>.
+
+ [RFC6083] Tuexen, M., Seggelmann, R., and E. Rescorla, "Datagram
+ Transport Layer Security (DTLS) for Stream Control
+ Transmission Protocol (SCTP)", RFC 6083,
+ DOI 10.17487/RFC6083, January 2011,
+ <https://www.rfc-editor.org/info/rfc6083>.
+
+ [RFC7983] Petit-Huguenin, M. and G. Salgueiro, "Multiplexing Scheme
+ Updates for Secure Real-time Transport Protocol (SRTP)
+ Extension for Datagram Transport Layer Security (DTLS)",
+ RFC 7983, DOI 10.17487/RFC7983, September 2016,
+ <https://www.rfc-editor.org/info/rfc7983>.
+
+ [RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt,
+ "Authenticated Identity Management in the Session
+ Initiation Protocol (SIP)", RFC 8224,
+ DOI 10.17487/RFC8224, February 2018,
+ <https://www.rfc-editor.org/info/rfc8224>.
+
+ [RFC8839] Petit-Huguenin, M., Nandakumar, S., Holmberg, C., Keränen,
+ A., and R. Shpount, "Session Description Protocol (SDP)
+ Offer/Answer Procedures for Interactive Connectivity
+ Establishment (ICE)", RFC 8839, DOI 10.17487/RFC8839,
+ January 2021, <https://www.rfc-editor.org/info/rfc8839>.
+
+ [RFC8844] Thomson, M. and E. Rescorla, "Unknown Key-Share Attacks on
+ Uses of TLS with the Session Description Protocol (SDP)",
+ RFC 8844, DOI 10.17487/RFC8844, January 2021,
+ <https://www.rfc-editor.org/info/rfc8844>.
+
+Acknowledgements
+
+ Thanks to Justin Uberti, Martin Thomson, Paul Kyzivat, Jens Guballa,
+ Charles Eckel, Gonzalo Salgueiro, and Paul Jones for providing
+ comments and suggestions on the document. Ben Campbell performed an
+ Area Director review. Paul Kyzivat performed a Gen-ART review.
+
+Authors' Addresses
+
+ Christer Holmberg
+ Ericsson
+ Hirsalantie 11
+ FI-02420 Jorvas
+ Finland
+
+ Email: christer.holmberg@ericsson.com
+
+
+ Roman Shpount
+ TurboBridge
+ 4905 Del Ray Avenue, Suite 300
+ Bethesda, MD 20814
+ United States of America
+
+ Email: rshpount@turbobridge.com