summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9146.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9146.txt')
-rw-r--r--doc/rfc/rfc9146.txt728
1 files changed, 728 insertions, 0 deletions
diff --git a/doc/rfc/rfc9146.txt b/doc/rfc/rfc9146.txt
new file mode 100644
index 0000000..e01e8e7
--- /dev/null
+++ b/doc/rfc/rfc9146.txt
@@ -0,0 +1,728 @@
+
+
+
+
+Internet Engineering Task Force (IETF) E. Rescorla, Ed.
+Request for Comments: 9146 Mozilla
+Updates: 6347 H. Tschofenig, Ed.
+Category: Standards Track T. Fossati
+ISSN: 2070-1721 Arm Limited
+ A. Kraus
+ Bosch.IO GmbH
+ March 2022
+
+
+ Connection Identifier for DTLS 1.2
+
+Abstract
+
+ This document specifies the Connection ID (CID) construct for the
+ Datagram Transport Layer Security (DTLS) protocol version 1.2.
+
+ A CID is an identifier carried in the record layer header that gives
+ the recipient additional information for selecting the appropriate
+ security association. In "classical" DTLS, selecting a security
+ association of an incoming DTLS record is accomplished with the help
+ of the 5-tuple. If the source IP address and/or source port changes
+ during the lifetime of an ongoing DTLS session, then the receiver
+ will be unable to locate the correct security context.
+
+ The new ciphertext record format with the CID also provides content
+ type encryption and record layer padding.
+
+ This document updates RFC 6347.
+
+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/rfc9146.
+
+Copyright Notice
+
+ Copyright (c) 2022 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.
+
+ This document may contain material from IETF Documents or IETF
+ Contributions published or made publicly available before November
+ 10, 2008. The person(s) controlling the copyright in some of this
+ material may not have granted the IETF Trust the right to allow
+ modifications of such material outside the IETF Standards Process.
+ Without obtaining an adequate license from the person(s) controlling
+ the copyright in such materials, this document may not be modified
+ outside the IETF Standards Process, and derivative works of it may
+ not be created outside the IETF Standards Process, except to format
+ it for publication as an RFC or to translate it into languages other
+ than English.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Conventions and Terminology
+ 3. The "connection_id" Extension
+ 4. Record Layer Extensions
+ 5. Record Payload Protection
+ 5.1. Block Ciphers
+ 5.2. Block Ciphers with Encrypt-then-MAC Processing
+ 5.3. AEAD Ciphers
+ 6. Peer Address Update
+ 7. Example
+ 8. Privacy Considerations
+ 9. Security Considerations
+ 10. IANA Considerations
+ 10.1. Extra Column Added to the TLS ExtensionType Values
+ Registry
+ 10.2. New Entry in the TLS ExtensionType Values Registry
+ 10.3. New Entry in the TLS ContentType Registry
+ 11. References
+ 11.1. Normative References
+ 11.2. Informative References
+ Acknowledgements
+ Contributors
+ Authors' Addresses
+
+1. Introduction
+
+ The Datagram Transport Layer Security (DTLS) protocol [RFC6347] was
+ designed for securing data sent over datagram transports (e.g., UDP).
+ DTLS, like TLS, starts with a handshake, which can be computationally
+ demanding (particularly when public key cryptography is used). After
+ a successful handshake, symmetric key cryptography is used to apply
+ data origin authentication, integrity, and confidentiality
+ protection. This two-step approach allows endpoints to amortize the
+ cost of the initial handshake across subsequent application data
+ protection. Ideally, the second phase where application data is
+ protected lasts over a long period of time, since the established
+ keys will only need to be updated once the key lifetime expires.
+
+ In DTLS as specified in RFC 6347, the IP address and port of the peer
+ are used to identify the DTLS association. Unfortunately, in some
+ cases, such as NAT rebinding, these values are insufficient. This is
+ a particular issue in the Internet of Things when devices enter
+ extended sleep periods to increase their battery lifetime. The NAT
+ rebinding leads to connection failure, with the resulting cost of a
+ new handshake.
+
+ This document defines an extension to DTLS 1.2 to add a Connection ID
+ (CID) to the DTLS record layer. The presence of the CID is
+ negotiated via a DTLS extension.
+
+ Adding a CID to the ciphertext record format presents an opportunity
+ to make other changes to the record format. In keeping with the best
+ practices established by TLS 1.3, the type of the record is
+ encrypted, and a mechanism is provided for adding padding to
+ obfuscate the plaintext length.
+
+2. Conventions and Terminology
+
+ 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.
+
+ This document assumes familiarity with DTLS 1.2 [RFC6347]. The
+ presentation language used in this document is described in Section 3
+ of [RFC8446].
+
+3. The "connection_id" Extension
+
+ This document defines the "connection_id" extension, which is used in
+ ClientHello and ServerHello messages.
+
+ The extension type is specified as follows.
+
+ enum {
+ connection_id(54), (65535)
+ } ExtensionType;
+
+ The extension_data field of this extension, when included in the
+ ClientHello, MUST contain the ConnectionId structure. This structure
+ contains the CID value the client wishes the server to use when
+ sending messages to the client. A zero-length CID value indicates
+ that the client is prepared to send using a CID but does not wish the
+ server to use one when sending.
+
+ struct {
+ opaque cid<0..2^8-1>;
+ } ConnectionId;
+
+ A server willing to use CIDs will respond with a "connection_id"
+ extension in the ServerHello, containing the CID it wishes the client
+ to use when sending messages towards it. A zero-length value
+ indicates that the server will send using the client's CID but does
+ not wish the client to include a CID when sending.
+
+ Because each party sends the value in the "connection_id" extension
+ it wants to receive as a CID in encrypted records, it is possible for
+ an endpoint to use a deployment-specific constant length for such
+ connection identifiers. This can in turn ease parsing and connection
+ lookup -- for example, by having the length in question be a compile-
+ time constant. Such implementations MUST still be able to send CIDs
+ of different lengths to other parties. Since the CID length
+ information is not included in the record itself, implementations
+ that want to use variable-length CIDs are responsible for
+ constructing the CID in such a way that its length can be determined
+ on reception.
+
+ In DTLS 1.2, CIDs are exchanged at the beginning of the DTLS session
+ only. There is no dedicated "CID update" message that allows new
+ CIDs to be established mid-session, because DTLS 1.2 in general does
+ not allow TLS 1.3-style post-handshake messages that do not
+ themselves begin other handshakes. When a DTLS session is resumed or
+ renegotiated, the "connection_id" extension is negotiated afresh.
+
+ If DTLS peers have not negotiated the use of CIDs, or a zero-length
+ CID has been advertised for a given direction, then the record format
+ and content type defined in RFC 6347 MUST be used to send in the
+ indicated direction(s).
+
+ If DTLS peers have negotiated the use of a non-zero-length CID for a
+ given direction, then once encryption is enabled, they MUST send with
+ the record format defined in Figure 3 (see Section 4) with the new
+ Message Authentication Code (MAC) computation defined in Section 5
+ and the content type tls12_cid. Plaintext payloads never use the new
+ record format or the CID content type.
+
+ When receiving, if the tls12_cid content type is set, then the CID is
+ used to look up the connection and the security association. If the
+ tls12_cid content type is not set, then the connection and the
+ security association are looked up by the 5-tuple and a check MUST be
+ made to determine whether a non-zero-length CID is expected. If a
+ non-zero-length CID is expected for the retrieved association, then
+ the datagram MUST be treated as invalid, as described in
+ Section 4.1.2.1 of [RFC6347].
+
+ When receiving a datagram with the tls12_cid content type, the new
+ MAC computation defined in Section 5 MUST be used. When receiving a
+ datagram with the record format defined in RFC 6347, the MAC
+ calculation defined in Section 4.1.2 of [RFC6347] MUST be used.
+
+4. Record Layer Extensions
+
+ This specification defines the CID-enhanced record layer format for
+ DTLS 1.2, and [DTLS13] specifies how to carry the CID in DTLS 1.3.
+
+ To allow a receiver to determine whether a record has a CID or not,
+ connections that have negotiated this extension use a distinguished
+ record type tls12_cid(25). The use of this content type has the
+ following three implications:
+
+ * The CID field is present and contains one or more bytes.
+
+ * The MAC calculation follows the process described in Section 5.
+
+ * The real content type is inside the encryption envelope, as
+ described below.
+
+ Plaintext records are not impacted by this extension. Hence, the
+ format of the DTLSPlaintext structure is left unchanged, as shown in
+ Figure 1.
+
+ struct {
+ ContentType type;
+ ProtocolVersion version;
+ uint16 epoch;
+ uint48 sequence_number;
+ uint16 length;
+ opaque fragment[DTLSPlaintext.length];
+ } DTLSPlaintext;
+
+ Figure 1: DTLS 1.2 Plaintext Record Payload
+
+ When CIDs are being used, the content to be sent is first wrapped
+ along with its content type and optional padding into a
+ DTLSInnerPlaintext structure. This newly introduced structure is
+ shown in Figure 2.
+
+ struct {
+ opaque content[length];
+ ContentType real_type;
+ uint8 zeros[length_of_padding];
+ } DTLSInnerPlaintext;
+
+ Figure 2: New DTLSInnerPlaintext Payload Structure
+
+ content: Corresponds to the fragment of a given length.
+
+ real_type: The content type describing the cleartext payload.
+
+ zeros: An arbitrary-length run of zero-valued bytes may appear in
+ the cleartext after the type field. This provides an opportunity
+ for senders to pad any DTLS record by a chosen amount as long as
+ the total stays within record size limits. See Section 5.4 of
+ [RFC8446] for more details. (Note that the term TLSInnerPlaintext
+ in RFC 8446 refers to DTLSInnerPlaintext in this specification.)
+
+ The DTLSInnerPlaintext byte sequence is then encrypted. To create
+ the DTLSCiphertext structure shown in Figure 3, the CID is added.
+
+ struct {
+ ContentType outer_type = tls12_cid;
+ ProtocolVersion version;
+ uint16 epoch;
+ uint48 sequence_number;
+ opaque cid[cid_length]; // New field
+ uint16 length;
+ opaque enc_content[DTLSCiphertext.length];
+ } DTLSCiphertext;
+
+ Figure 3: DTLS 1.2 CID-Enhanced Ciphertext Record
+
+ outer_type: The outer content type of a DTLSCiphertext record
+ carrying a CID is always set to tls12_cid(25). The real content
+ type of the record is found in DTLSInnerPlaintext.real_type after
+ decryption.
+
+ cid: The CID value, cid_length bytes long, as agreed at the time the
+ extension has been negotiated. Recall that each peer chooses the
+ CID value it will receive and use to identify the connection, so
+ an implementation can choose to always receive CIDs of a fixed
+ length. If, however, an implementation chooses to receive CIDs of
+ different lengths, the assigned CID values must be self-
+ delineating, since there is no other mechanism available to
+ determine what connection (and thus, what CID length) is in use.
+
+ enc_content: The encrypted form of the serialized DTLSInnerPlaintext
+ structure.
+
+ All other fields are as defined in RFC 6347.
+
+5. Record Payload Protection
+
+ Several types of ciphers have been defined for use with TLS and DTLS,
+ and the MAC calculations for those ciphers differ slightly.
+
+ This specification modifies the MAC calculation as defined in
+ [RFC6347] and [RFC7366], as well as the definition of the additional
+ data used with Authenticated Encryption with Associated Data (AEAD)
+ ciphers provided in [RFC6347], for records with content type
+ tls12_cid. The modified algorithm MUST NOT be applied to records
+ that do not carry a CID, i.e., records with content type other than
+ tls12_cid.
+
+ The following fields are defined in this document; all other fields
+ are as defined in the cited documents.
+
+ cid: Value of the negotiated CID (variable length).
+
+ cid_length: The length (in bytes) of the negotiated CID (one-byte
+ integer).
+
+ length_of_DTLSInnerPlaintext: The length (in bytes) of the
+ serialized DTLSInnerPlaintext (two-byte integer). The length MUST
+ NOT exceed 2^14.
+
+ seq_num_placeholder: 8 bytes of 0xff.
+
+ Note that "+" denotes concatenation.
+
+5.1. Block Ciphers
+
+ The following MAC algorithm applies to block ciphers that do not use
+ the Encrypt-then-MAC processing described in [RFC7366].
+
+ MAC(MAC_write_key,
+ seq_num_placeholder +
+ tls12_cid +
+ cid_length +
+ tls12_cid +
+ DTLSCiphertext.version +
+ epoch +
+ sequence_number +
+ cid +
+ length_of_DTLSInnerPlaintext +
+ DTLSInnerPlaintext.content +
+ DTLSInnerPlaintext.real_type +
+ DTLSInnerPlaintext.zeros
+ );
+
+ The rationale behind this construction is to separate the MAC input
+ for DTLS without the connection ID from the MAC input with the
+ connection ID. The former always consists of a sequence number
+ followed by some content type other than tls12_cid; the latter always
+ consists of the seq_num_placeholder followed by tls12_cid. Although
+ 2^64-1 is potentially a valid sequence number, tls12_cid will never
+ be a valid content type when the connection ID is not in use. In
+ addition, the epoch and sequence_number are now fed into the MAC in
+ the same order as they appear on the wire.
+
+5.2. Block Ciphers with Encrypt-then-MAC Processing
+
+ The following MAC algorithm applies to block ciphers that use the
+ Encrypt-then-MAC processing described in [RFC7366].
+
+ MAC(MAC_write_key,
+ seq_num_placeholder +
+ tls12_cid +
+ cid_length +
+ tls12_cid +
+ DTLSCiphertext.version +
+ epoch +
+ sequence_number +
+ cid +
+ DTLSCiphertext.length +
+ IV +
+ ENC(content + padding + padding_length)
+ );
+
+5.3. AEAD Ciphers
+
+ For ciphers utilizing AEAD, the following modification is made to the
+ additional data calculation.
+
+ additional_data = seq_num_placeholder +
+ tls12_cid +
+ cid_length +
+ tls12_cid +
+ DTLSCiphertext.version +
+ epoch +
+ sequence_number +
+ cid +
+ length_of_DTLSInnerPlaintext;
+
+6. Peer Address Update
+
+ When a record with a CID is received that has a source address
+ different from the one currently associated with the DTLS connection,
+ the receiver MUST NOT replace the address it uses for sending records
+ to its peer with the source address specified in the received
+ datagram, unless the following three conditions are met:
+
+ * The received datagram has been cryptographically verified using
+ the DTLS record layer processing procedures.
+
+ * The received datagram is "newer" (in terms of both epoch and
+ sequence number) than the newest datagram received. Reordered
+ datagrams that are sent prior to a change in a peer address might
+ otherwise cause a valid address change to be reverted. This also
+ limits the ability of an attacker to use replayed datagrams to
+ force a spurious address change, which could result in denial of
+ service. An attacker might be able to succeed in changing a peer
+ address if they are able to rewrite source addresses and if
+ replayed packets are able to arrive before any original.
+
+ * There is a strategy for ensuring that the new peer address is able
+ to receive and process DTLS records. No strategy is mandated by
+ this specification, but see note (*) below.
+
+ The conditions above are necessary to protect against attacks that
+ use datagrams with spoofed addresses or replayed datagrams to trigger
+ attacks. Note that there is no requirement for the use of the anti-
+ replay window mechanism defined in Section 4.1.2.6 of [RFC6347].
+ Both solutions, the "anti-replay window" or "newer" algorithm, will
+ prevent address updates from replay attacks while the latter will
+ only apply to peer address updates and the former applies to any
+ application layer traffic.
+
+ Note that datagrams that pass the DTLS cryptographic verification
+ procedures but do not trigger a change of peer address are still
+ valid DTLS records and are still to be passed to the application.
+
+ (*) Note: Application protocols that implement protection against
+ spoofed addresses depend on being aware of changes in peer
+ addresses so that they can engage the necessary mechanisms. When
+ delivered such an event, an address validation mechanism specific
+ to the application layer can be triggered -- for example, one that
+ is based on successful exchange of a minimal amount of ping-pong
+ traffic with the peer. Alternatively, a DTLS-specific mechanism
+ may be used, as described in [DTLS-RRC].
+
+ DTLS implementations MUST silently discard records with bad MACs or
+ that are otherwise invalid.
+
+7. Example
+
+ Figure 4 shows an example exchange where a CID is used
+ unidirectionally from the client to the server. To indicate that a
+ zero-length CID is present in the "connection_id" extension, we use
+ the notation 'connection_id=empty'.
+
+ Client Server
+ ------ ------
+
+ ClientHello -------->
+ (connection_id=empty)
+
+
+ <-------- HelloVerifyRequest
+ (cookie)
+
+ ClientHello -------->
+ (connection_id=empty)
+ (cookie)
+
+ ServerHello
+ (connection_id=100)
+ Certificate
+ ServerKeyExchange
+ CertificateRequest
+ <-------- ServerHelloDone
+
+ Certificate
+ ClientKeyExchange
+ CertificateVerify
+ [ChangeCipherSpec]
+ Finished -------->
+ <CID=100>
+
+ [ChangeCipherSpec]
+ <-------- Finished
+
+
+ Application Data ========>
+ <CID=100>
+
+ <======== Application Data
+
+ Legend:
+
+ <...> indicates that a connection ID is used in the record layer
+ (...) indicates an extension
+ [...] indicates a payload other than a handshake message
+
+ Figure 4: Example DTLS 1.2 Exchange with CID
+
+ Note: In the example exchange, the CID is included in the record
+ layer once encryption is enabled. In DTLS 1.2, only one handshake
+ message is encrypted, namely the Finished message. Since the
+ example shows how to use the CID for payloads sent from the client
+ to the server, only the record layer payloads containing the
+ Finished message or application data include a CID.
+
+8. Privacy Considerations
+
+ The CID replaces the previously used 5-tuple and, as such, introduces
+ an identifier that remains persistent during the lifetime of a DTLS
+ connection. Every identifier introduces the risk of linkability, as
+ explained in [RFC6973].
+
+ An on-path adversary observing the DTLS protocol exchanges between
+ the DTLS client and the DTLS server is able to link the observed
+ payloads to all subsequent payloads carrying the same ID pair (for
+ bidirectional communication). Without multihoming or mobility, the
+ use of the CID exposes the same information as the 5-tuple.
+
+ With multihoming, a passive attacker is able to correlate the
+ communication interaction over the two paths. The lack of a CID
+ update mechanism in DTLS 1.2 makes this extension unsuitable for
+ mobility scenarios where correlation must be considered. Deployments
+ that use DTLS in multihoming environments and are concerned about
+ these aspects SHOULD refuse to use CIDs in DTLS 1.2 and switch to
+ DTLS 1.3 where a CID update mechanism is provided and sequence number
+ encryption is available.
+
+ This specification introduces record padding for the CID-enhanced
+ record layer, which is a privacy feature not available with the
+ original DTLS 1.2 specification. Padding allows the size of the
+ ciphertext to be inflated, making traffic analysis more difficult.
+ More details about record padding can be found in Section 5.4 and
+ Appendix E.3 of [RFC8446].
+
+ Finally, endpoints can use the CID to attach arbitrary per-connection
+ metadata to each record they receive on a given connection. This may
+ be used as a mechanism to communicate per-connection information to
+ on-path observers. There is no straightforward way to address this
+ concern with CIDs that contain arbitrary values. Implementations
+ concerned about this aspect SHOULD refuse to use CIDs.
+
+9. Security Considerations
+
+ An on-path adversary can create reflection attacks against third
+ parties because a DTLS peer has no means to distinguish a genuine
+ address update event (for example, due to a NAT rebinding) from one
+ that is malicious. This attack is of particular concern when the
+ request is small and the response large. See Section 6 for more on
+ address updates.
+
+ Additionally, an attacker able to observe the data traffic exchanged
+ between two DTLS peers is able to replay datagrams with modified IP
+ addresses / port numbers.
+
+ The topic of peer address updates is discussed in Section 6.
+
+10. IANA Considerations
+
+ This document implements three IANA updates.
+
+10.1. Extra Column Added to the TLS ExtensionType Values Registry
+
+ IANA has added an extra column named "DTLS-Only" to the "TLS
+ ExtensionType Values" registry to indicate whether an extension is
+ only applicable to DTLS and to include this document as an additional
+ reference for the registry.
+
+10.2. New Entry in the TLS ExtensionType Values Registry
+
+ IANA has allocated an entry in the existing "TLS ExtensionType
+ Values" registry for connection_id(54), as described in the table
+ below. Although the value 53 had been allocated by early allocation
+ for a previous version of this document, it is incompatible with this
+ document. Therefore, the early allocation has been deprecated in
+ favor of this assignment.
+
+ +=======+===============+=====+===========+=============+===========+
+ | Value |Extension Name | TLS | DTLS-Only | Recommended | Reference |
+ | | | 1.3 | | | |
+ +=======+===============+=====+===========+=============+===========+
+ | 54 |connection_id | CH, | Y | N | RFC 9146 |
+ | | | SH | | | |
+ +-------+---------------+-----+-----------+-------------+-----------+
+
+ Table 1
+
+ A new column, "DTLS-Only", has been added to the registry. The valid
+ entries are "Y" if the extension is only applicable to DTLS, "N"
+ otherwise. All the pre-existing entries are given the value "N".
+
+ Note: The value "N" in the "Recommended" column is set because
+ this extension is intended only for specific use cases. This
+ document describes the behavior of this extension for DTLS 1.2
+ only; it is not applicable to TLS, and its usage for DTLS 1.3 is
+ described in [DTLS13].
+
+10.3. New Entry in the TLS ContentType Registry
+
+ IANA has allocated tls12_cid(25) in the "TLS ContentType" registry.
+ The tls12_cid content type is only applicable to DTLS 1.2.
+
+11. References
+
+11.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>.
+
+ [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>.
+
+ [RFC7366] Gutmann, P., "Encrypt-then-MAC for Transport Layer
+ Security (TLS) and Datagram Transport Layer Security
+ (DTLS)", RFC 7366, DOI 10.17487/RFC7366, September 2014,
+ <https://www.rfc-editor.org/info/rfc7366>.
+
+ [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>.
+
+ [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
+ Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
+ <https://www.rfc-editor.org/info/rfc8446>.
+
+11.2. Informative References
+
+ [DTLS-RRC] Tschofenig, H., Ed. and T. Fossati, "Return Routability
+ Check for DTLS 1.2 and DTLS 1.3", Work in Progress,
+ Internet-Draft, draft-ietf-tls-dtls-rrc-05, 7 March 2022,
+ <https://datatracker.ietf.org/doc/html/draft-ietf-tls-
+ dtls-rrc-05>.
+
+ [DTLS13] Rescorla, E., Tschofenig, H., and N. Modadugu, "The
+ Datagram Transport Layer Security (DTLS) Protocol Version
+ 1.3", Work in Progress, Internet-Draft, draft-ietf-tls-
+ dtls13-43, 30 April 2021,
+ <https://datatracker.ietf.org/doc/html/draft-ietf-tls-
+ dtls13-43>.
+
+ [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J.,
+ Morris, J., Hansen, M., and R. Smith, "Privacy
+ Considerations for Internet Protocols", RFC 6973,
+ DOI 10.17487/RFC6973, July 2013,
+ <https://www.rfc-editor.org/info/rfc6973>.
+
+Acknowledgements
+
+ We would like to thank Hanno Becker, Martin Duke, Lars Eggert, Ben
+ Kaduk, Warren Kumari, Francesca Palombini, Tom Petch, John Scudder,
+ Sean Turner, Éric Vyncke, and Robert Wilton for their review
+ comments.
+
+ Finally, we want to thank the IETF TLS Working Group chairs, Chris
+ Wood, Joseph Salowey, and Sean Turner, for their patience, support,
+ and feedback.
+
+Contributors
+
+ Many people have contributed to this specification, and we would like
+ to thank the following individuals for their contributions:
+
+ Yin Xinxing
+ Huawei
+ Email: yinxinxing@huawei.com
+
+
+ Nikos Mavrogiannopoulos
+ RedHat
+ Email: nmav@redhat.com
+
+
+ Tobias Gondrom
+ Email: tobias.gondrom@gondrom.org
+
+
+ Additionally, we would like to thank the Connection ID task force
+ team members:
+
+ * Martin Thomson (Mozilla)
+
+ * Christian Huitema (Private Octopus Inc.)
+
+ * Jana Iyengar (Google)
+
+ * Daniel Kahn Gillmor (ACLU)
+
+ * Patrick McManus (Mozilla)
+
+ * Ian Swett (Google)
+
+ * Mark Nottingham (Fastly)
+
+ The task force team discussed various design ideas, including
+ cryptographically generated session IDs using hash chains and public
+ key encryption, but dismissed them due to their inefficiency. The
+ approach described in this specification is the simplest possible
+ design that works, given the limitations of DTLS 1.2. DTLS 1.3
+ provides better privacy features, and developers are encouraged to
+ switch to the new version of DTLS.
+
+Authors' Addresses
+
+ Eric Rescorla (editor)
+ Mozilla
+ Email: ekr@rtfm.com
+
+
+ Hannes Tschofenig (editor)
+ Arm Limited
+ Email: hannes.tschofenig@arm.com
+
+
+ Thomas Fossati
+ Arm Limited
+ Email: thomas.fossati@arm.com
+
+
+ Achim Kraus
+ Bosch.IO GmbH
+ Email: achim.kraus@bosch.io