7 Internet Engineering Task Force (IETF) D. McGrew
8 Request for Comments: 5764 Cisco Systems
9 Category: Standards Track E. Rescorla
10 ISSN: 2070-1721 RTFM, Inc.
14 Datagram Transport Layer Security (DTLS) Extension to Establish Keys
15 for the Secure Real-time Transport Protocol (SRTP)
19 This document describes a Datagram Transport Layer Security (DTLS)
20 extension to establish keys for Secure RTP (SRTP) and Secure RTP
21 Control Protocol (SRTCP) flows. DTLS keying happens on the media
22 path, independent of any out-of-band signalling channel present.
26 This is an Internet Standards Track document.
28 This document is a product of the Internet Engineering Task Force
29 (IETF). It represents the consensus of the IETF community. It has
30 received public review and has been approved for publication by the
31 Internet Engineering Steering Group (IESG). Further information on
32 Internet Standards is available in Section 2 of RFC 5741.
34 Information about the current status of this document, any errata,
35 and how to provide feedback on it may be obtained at
36 http://www.rfc-editor.org/info/rfc5764.
40 Copyright (c) 2010 IETF Trust and the persons identified as the
41 document authors. All rights reserved.
43 This document is subject to BCP 78 and the IETF Trust's Legal
44 Provisions Relating to IETF Documents
45 (http://trustee.ietf.org/license-info) in effect on the date of
46 publication of this document. Please review these documents
47 carefully, as they describe your rights and restrictions with respect
48 to this document. Code Components extracted from this document must
49 include Simplified BSD License text as described in Section 4.e of
50 the Trust Legal Provisions and are provided without warranty as
51 described in the Simplified BSD License.
58 McGrew & Rescorla Standards Track [Page 1]
60 RFC 5764 SRTP Extension for DTLS May 2010
63 This document may contain material from IETF Documents or IETF
64 Contributions published or made publicly available before November
65 10, 2008. The person(s) controlling the copyright in some of this
66 material may not have granted the IETF Trust the right to allow
67 modifications of such material outside the IETF Standards Process.
68 Without obtaining an adequate license from the person(s) controlling
69 the copyright in such materials, this document may not be modified
70 outside the IETF Standards Process, and derivative works of it may
71 not be created outside the IETF Standards Process, except to format
72 it for publication as an RFC or to translate it into languages other
77 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
78 2. Conventions Used In This Document . . . . . . . . . . . . . . 3
79 3. Overview of DTLS-SRTP Operation . . . . . . . . . . . . . . . 4
80 4. DTLS Extensions for SRTP Key Establishment . . . . . . . . . . 5
81 4.1. The use_srtp Extension . . . . . . . . . . . . . . . . . . 5
82 4.1.1. use_srtp Extension Definition . . . . . . . . . . . . 7
83 4.1.2. SRTP Protection Profiles . . . . . . . . . . . . . . . 8
84 4.1.3. srtp_mki value . . . . . . . . . . . . . . . . . . . . 9
85 4.2. Key Derivation . . . . . . . . . . . . . . . . . . . . . . 10
86 4.3. Key Scope . . . . . . . . . . . . . . . . . . . . . . . . 12
87 4.4. Key Usage Limitations . . . . . . . . . . . . . . . . . . 12
88 5. Use of RTP and RTCP over a DTLS-SRTP Channel . . . . . . . . . 13
89 5.1. Data Protection . . . . . . . . . . . . . . . . . . . . . 13
90 5.1.1. Transmission . . . . . . . . . . . . . . . . . . . . . 13
91 5.1.2. Reception . . . . . . . . . . . . . . . . . . . . . . 13
92 5.2. Rehandshake and Rekey . . . . . . . . . . . . . . . . . . 16
93 6. Multi-Party RTP Sessions . . . . . . . . . . . . . . . . . . . 17
94 7. Security Considerations . . . . . . . . . . . . . . . . . . . 17
95 7.1. Security of Negotiation . . . . . . . . . . . . . . . . . 17
96 7.2. Framing Confusion . . . . . . . . . . . . . . . . . . . . 17
97 7.3. Sequence Number Interactions . . . . . . . . . . . . . . . 18
98 7.3.1. Alerts . . . . . . . . . . . . . . . . . . . . . . . . 18
99 7.3.2. Renegotiation . . . . . . . . . . . . . . . . . . . . 18
100 7.4. Decryption Cost . . . . . . . . . . . . . . . . . . . . . 19
101 8. Session Description for RTP/SAVP over DTLS . . . . . . . . . . 19
102 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20
103 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20
104 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21
105 11.1. Normative References . . . . . . . . . . . . . . . . . . . 21
106 11.2. Informative References . . . . . . . . . . . . . . . . . . 21
107 Appendix A. Overview of DTLS . . . . . . . . . . . . . . . . . . 23
108 Appendix B. Performance of Multiple DTLS Handshakes . . . . . . . 24
114 McGrew & Rescorla Standards Track [Page 2]
116 RFC 5764 SRTP Extension for DTLS May 2010
121 The Secure RTP (SRTP) profile [RFC3711] can provide confidentiality,
122 message authentication, and replay protection to RTP data and RTP
123 Control (RTCP) traffic. SRTP does not provide key management
124 functionality, but instead depends on external key management to
125 exchange secret master keys, and to negotiate the algorithms and
126 parameters for use with those keys.
128 Datagram Transport Layer Security (DTLS) [RFC4347] is a channel
129 security protocol that offers integrated key management, parameter
130 negotiation, and secure data transfer. Because DTLS data transfer
131 protocol is generic, it is less highly optimized for use with RTP
132 than is SRTP, which has been specifically tuned for that purpose.
134 This document describes DTLS-SRTP, a SRTP extension for DTLS that
135 combines the performance and encryption flexibility benefits of SRTP
136 with the flexibility and convenience of DTLS-integrated key and
137 association management. DTLS-SRTP can be viewed in two equivalent
138 ways: as a new key management method for SRTP, and a new RTP-specific
139 data format for DTLS.
141 The key points of DTLS-SRTP are that:
143 o application data is protected using SRTP,
145 o the DTLS handshake is used to establish keying material,
146 algorithms, and parameters for SRTP,
148 o a DTLS extension is used to negotiate SRTP algorithms, and
150 o other DTLS record-layer content types are protected using the
151 ordinary DTLS record format.
153 The remainder of this memo is structured as follows. Section 2
154 describes conventions used to indicate normative requirements.
155 Section 3 provides an overview of DTLS-SRTP operation. Section 4
156 specifies the DTLS extensions, while Section 5 discusses how RTP and
157 RTCP are transported over a DTLS-SRTP channel. Section 6 describes
158 use with multi-party sessions. Section 7 and Section 9 describe
159 Security and IANA considerations.
161 2. Conventions Used In This Document
163 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
164 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
165 document are to be interpreted as described in [RFC2119].
170 McGrew & Rescorla Standards Track [Page 3]
172 RFC 5764 SRTP Extension for DTLS May 2010
175 3. Overview of DTLS-SRTP Operation
177 DTLS-SRTP is defined for point-to-point media sessions, in which
178 there are exactly two participants. Each DTLS-SRTP session contains
179 a single DTLS association (called a "connection" in TLS jargon), and
180 either two SRTP contexts (if media traffic is flowing in both
181 directions on the same host/port quartet) or one SRTP context (if
182 media traffic is only flowing in one direction). All SRTP traffic
183 flowing over that pair in a given direction uses a single SRTP
184 context. A single DTLS-SRTP session only protects data carried over
185 a single UDP source and destination port pair.
187 The general pattern of DTLS-SRTP is as follows. For each RTP or RTCP
188 flow the peers do a DTLS handshake on the same source and destination
189 port pair to establish a DTLS association. Which side is the DTLS
190 client and which side is the DTLS server must be established via some
191 out-of-band mechanism such as SDP. The keying material from that
192 handshake is fed into the SRTP stack. Once that association is
193 established, RTP packets are protected (becoming SRTP) using that
196 RTP and RTCP traffic is usually sent on two separate UDP ports. When
197 symmetric RTP [RFC4961] is used, two bidirectional DTLS-SRTP sessions
198 are needed, one for the RTP port, one for the RTCP port. When RTP
199 flows are not symmetric, four unidirectional DTLS-SRTP sessions are
200 needed (for inbound and outbound RTP, and inbound and outbound RTCP).
202 Symmetric RTP [RFC4961] is the case in which there are two RTP
203 sessions that have their source and destination ports and addresses
204 reversed, in a manner similar to the way that a TCP connection uses
205 its ports. Each participant has an inbound RTP session and an
206 outbound RTP session. When symmetric RTP is used, a single DTLS-SRTP
207 session can protect both of the RTP sessions. It is RECOMMENDED that
208 symmetric RTP be used with DTLS-SRTP.
210 RTP and RTCP traffic MAY be multiplexed on a single UDP port
211 [RFC5761]. In this case, both RTP and RTCP packets may be sent over
212 the same DTLS-SRTP session, halving the number of DTLS-SRTP sessions
213 needed. This improves the cryptographic performance of DTLS, but may
214 cause problems when RTCP and RTP are subject to different network
215 treatment (e.g., for bandwidth reservation or scheduling reasons).
217 Between a single pair of participants, there may be multiple media
218 sessions. There MUST be a separate DTLS-SRTP session for each
219 distinct pair of source and destination ports used by a media session
220 (though the sessions can share a single DTLS session and hence
221 amortize the initial public key handshake!).
226 McGrew & Rescorla Standards Track [Page 4]
228 RFC 5764 SRTP Extension for DTLS May 2010
231 A DTLS-SRTP session may be indicated by an external signaling
232 protocol like SIP. When the signaling exchange is integrity-
233 protected (e.g., when SIP Identity protection via digital signatures
234 is used), DTLS-SRTP can leverage this integrity guarantee to provide
235 complete security of the media stream. A description of how to
236 indicate DTLS-SRTP sessions in SIP and SDP [RFC4566], and how to
237 authenticate the endpoints using fingerprints can be found in
240 In a naive implementation, when there are multiple media sessions,
241 there is a new DTLS session establishment (complete with public key
242 cryptography) for each media channel. For example, a videophone may
243 be sending both an audio stream and a video stream, each of which
244 would use a separate DTLS session establishment exchange, which would
245 proceed in parallel. As an optimization, the DTLS-SRTP
246 implementation SHOULD use the following strategy: a single DTLS
247 association is established, and all other DTLS associations wait
248 until that connection is established before proceeding with their
249 handshakes. This strategy allows the later sessions to use DTLS
250 session resumption, which allows the amortization of the expensive
251 public key cryptography operations over multiple DTLS handshakes.
253 The SRTP keys used to protect packets originated by the client are
254 distinct from the SRTP keys used to protect packets originated by the
255 server. All of the RTP sources originating on the client for the
256 same channel use the same SRTP keys, and similarly, all of the RTP
257 sources originating on the server for the same channel use the same
258 SRTP keys. The SRTP implementation MUST ensure that all of the
259 synchronization source (SSRC) values for all of the RTP sources
260 originating from the same device over the same channel are distinct,
261 in order to avoid the "two-time pad" problem (as described in Section
262 9.1 of RFC 3711). Note that this is not an issue for separate media
263 streams (on different host/port quartets) that use independent keying
264 material even if an SSRC collision occurs.
266 4. DTLS Extensions for SRTP Key Establishment
268 4.1. The use_srtp Extension
270 In order to negotiate the use of SRTP data protection, clients
271 include an extension of type "use_srtp" in the DTLS extended client
272 hello. This extension MUST only be used when the data being
273 transported is RTP or RTCP [RFC3550]. The "extension_data" field of
274 this extension contains the list of acceptable SRTP protection
275 profiles, as indicated below.
282 McGrew & Rescorla Standards Track [Page 5]
284 RFC 5764 SRTP Extension for DTLS May 2010
287 Servers that receive an extended hello containing a "use_srtp"
288 extension can agree to use SRTP by including an extension of type
289 "use_srtp", with the chosen protection profile in the extended server
290 hello. This process is shown below.
294 ClientHello + use_srtp -------->
295 ServerHello + use_srtp
299 <-------- ServerHelloDone
307 SRTP packets <-------> SRTP packets
309 Note that '*' indicates messages that are not always sent in DTLS.
310 The CertificateRequest, client and server Certificates, and
311 CertificateVerify will be sent in DTLS-SRTP.
313 Once the "use_srtp" extension is negotiated, the RTP or RTCP
314 application data is protected solely using SRTP. Application data is
315 never sent in DTLS record-layer "application_data" packets. Rather,
316 complete RTP or RTCP packets are passed to the DTLS stack, which
317 passes them to the SRTP stack, which protects them appropriately.
318 Note that if RTP/RTCP multiplexing [RFC5761] is in use, this means
319 that RTP and RTCP packets may both be passed to the DTLS stack.
320 Because the DTLS layer does not process the packets, it does not need
321 to distinguish them. The SRTP stack can use the procedures of
322 [RFC5761] to distinguish RTP from RTCP.
324 When the "use_srtp" extension is in effect, implementations must not
325 place more than one application data "record" per datagram. (This is
326 only meaningful from the perspective of DTLS because SRTP is
327 inherently oriented towards one payload per packet, but this is
328 stated purely for clarification.)
330 Data other than RTP/RTCP (i.e., TLS control messages) MUST use
331 ordinary DTLS framing and MUST be placed in separate datagrams from
338 McGrew & Rescorla Standards Track [Page 6]
340 RFC 5764 SRTP Extension for DTLS May 2010
343 A DTLS-SRTP handshake establishes one or more SRTP crypto contexts;
344 however, they all have the same SRTP Protection Profile and Master
345 Key Identifier (MKI), if any. MKIs are used solely to distinguish
346 the keying material and protection profiles between distinct
347 handshakes, for instance, due to rekeying. When an MKI is
348 established in a DTLS-SRTP session, it MUST apply for all of the
349 SSRCs within that session -- though a single endpoint may negotiate
350 multiple DTLS-SRTP sessions due, for instance, to forking. (Note
351 that RFC 3711 allows packets within the same session but with
352 different SSRCs to use MKIs differently; in contrast, DTLS-SRTP
353 requires that MKIs and the keys that they are associated with have
354 the same meaning and are uniform across the entire SRTP session.)
356 4.1.1. use_srtp Extension Definition
358 The client MUST fill the extension_data field of the "use_srtp"
359 extension with an UseSRTPData value (see Section 9 for the
362 uint8 SRTPProtectionProfile[2];
365 SRTPProtectionProfiles SRTPProtectionProfiles;
366 opaque srtp_mki<0..255>;
369 SRTPProtectionProfile SRTPProtectionProfiles<2..2^16-1>;
371 The SRTPProtectionProfiles list indicates the SRTP protection
372 profiles that the client is willing to support, listed in descending
373 order of preference. The srtp_mki value contains the SRTP Master Key
374 Identifier (MKI) value (if any) that the client will use for his SRTP
375 packets. If this field is of zero length, then no MKI will be used.
377 Note: for those unfamiliar with TLS syntax, "srtp_mki<0..255>"
378 indicates a variable-length value with a length between 0 and 255
379 (inclusive). Thus, the MKI may be up to 255 bytes long.
381 If the server is willing to accept the use_srtp extension, it MUST
382 respond with its own "use_srtp" extension in the ExtendedServerHello.
383 The extension_data field MUST contain a UseSRTPData value with a
384 single SRTPProtectionProfile value that the server has chosen for use
385 with this connection. The server MUST NOT select a value that the
386 client has not offered. If there is no shared profile, the server
387 SHOULD NOT return the use_srtp extension at which point the
388 connection falls back to the negotiated DTLS cipher suite. If that
389 is not acceptable, the server SHOULD return an appropriate DTLS
394 McGrew & Rescorla Standards Track [Page 7]
396 RFC 5764 SRTP Extension for DTLS May 2010
399 4.1.2. SRTP Protection Profiles
401 A DTLS-SRTP SRTP Protection Profile defines the parameters and
402 options that are in effect for the SRTP processing. This document
403 defines the following SRTP protection profiles.
405 SRTPProtectionProfile SRTP_AES128_CM_HMAC_SHA1_80 = {0x00, 0x01};
406 SRTPProtectionProfile SRTP_AES128_CM_HMAC_SHA1_32 = {0x00, 0x02};
407 SRTPProtectionProfile SRTP_NULL_HMAC_SHA1_80 = {0x00, 0x05};
408 SRTPProtectionProfile SRTP_NULL_HMAC_SHA1_32 = {0x00, 0x06};
410 The following list indicates the SRTP transform parameters for each
411 protection profile. The parameters cipher_key_length,
412 cipher_salt_length, auth_key_length, and auth_tag_length express the
413 number of bits in the values to which they refer. The
414 maximum_lifetime parameter indicates the maximum number of packets
415 that can be protected with each single set of keys when the parameter
416 profile is in use. All of these parameters apply to both RTP and
417 RTCP, unless the RTCP parameters are separately specified.
419 All of the crypto algorithms in these profiles are from [RFC3711].
421 SRTP_AES128_CM_HMAC_SHA1_80
423 cipher_key_length: 128
424 cipher_salt_length: 112
425 maximum_lifetime: 2^31
426 auth_function: HMAC-SHA1
429 SRTP_AES128_CM_HMAC_SHA1_32
431 cipher_key_length: 128
432 cipher_salt_length: 112
433 maximum_lifetime: 2^31
434 auth_function: HMAC-SHA1
437 RTCP auth_tag_length: 80
438 SRTP_NULL_HMAC_SHA1_80
441 cipher_salt_length: 0
442 maximum_lifetime: 2^31
443 auth_function: HMAC-SHA1
450 McGrew & Rescorla Standards Track [Page 8]
452 RFC 5764 SRTP Extension for DTLS May 2010
455 SRTP_NULL_HMAC_SHA1_32
458 cipher_salt_length: 0
459 maximum_lifetime: 2^31
460 auth_function: HMAC-SHA1
463 RTCP auth_tag_length: 80
465 With all of these SRTP Parameter profiles, the following SRTP options
468 o The TLS PseudoRandom Function (PRF) is used to generate keys to
469 feed into the SRTP Key Derivation Function (KDF). When DTLS 1.2
470 [DTLS1.2] is in use, the PRF is the one associated with the cipher
471 suite. Note that this specification is compatible with DTLS 1.0
474 o The Key Derivation Rate (KDR) is equal to zero. Thus, keys are
475 not re-derived based on the SRTP sequence number.
477 o The key derivation procedures from Section 4.3 with the AES-CM PRF
478 from RFC 3711 are used.
480 o For all other parameters (in particular, SRTP replay window size
481 and FEC order), the default values are used.
483 If values other than the defaults for these parameters are required,
484 they can be enabled by writing a separate specification specifying
485 SDP syntax to signal them.
487 Applications using DTLS-SRTP SHOULD coordinate the SRTP Protection
488 Profiles between the DTLS-SRTP session that protects an RTP flow and
489 the DTLS-SRTP session that protects the associated RTCP flow (in
490 those cases in which the RTP and RTCP are not multiplexed over a
491 common port). In particular, identical ciphers SHOULD be used.
493 New SRTPProtectionProfile values must be defined according to the
494 "Specification Required" policy as defined by RFC 5226 [RFC5226].
495 See Section 9 for IANA Considerations.
497 4.1.3. srtp_mki value
499 The srtp_mki value MAY be used to indicate the capability and desire
500 to use the SRTP Master Key Identifier (MKI) field in the SRTP and
501 SRTCP packets. The MKI field indicates to an SRTP receiver which key
502 was used to protect the packet that contains that field. The
506 McGrew & Rescorla Standards Track [Page 9]
508 RFC 5764 SRTP Extension for DTLS May 2010
511 srtp_mki field contains the value of the SRTP MKI which is associated
512 with the SRTP master keys derived from this handshake. Each SRTP
513 session MUST have exactly one master key that is used to protect
514 packets at any given time. The client MUST choose the MKI value so
515 that it is distinct from the last MKI value that was used, and it
516 SHOULD make these values unique for the duration of the TLS session.
518 Upon receipt of a "use_srtp" extension containing a "srtp_mki" field,
519 the server MUST either (assuming it accepts the extension at all):
521 1. include a matching "srtp_mki" value in its "use_srtp" extension
522 to indicate that it will make use of the MKI, or
523 2. return an empty "srtp_mki" value to indicate that it cannot make
526 If the client detects a nonzero-length MKI in the server's response
527 that is different than the one the client offered, then the client
528 MUST abort the handshake and SHOULD send an invalid_parameter alert.
529 If the client and server agree on an MKI, all SRTP packets protected
530 under the new security parameters MUST contain that MKI.
532 Note that any given DTLS-SRTP session only has a single active MKI
533 (if any). Thus, at any given time, a set of endpoints will generally
534 only be using one MKI (the major exception is during rehandshakes).
538 When SRTP mode is in effect, different keys are used for ordinary
539 DTLS record protection and SRTP packet protection. These keys are
540 generated using a TLS exporter [RFC5705] to generate
542 2 * (SRTPSecurityParams.master_key_len +
543 SRTPSecurityParams.master_salt_len) bytes of data
545 which are assigned as shown below. The per-association context value
548 client_write_SRTP_master_key[SRTPSecurityParams.master_key_len];
549 server_write_SRTP_master_key[SRTPSecurityParams.master_key_len];
550 client_write_SRTP_master_salt[SRTPSecurityParams.master_salt_len];
551 server_write_SRTP_master_salt[SRTPSecurityParams.master_salt_len];
553 The exporter label for this usage is "EXTRACTOR-dtls_srtp". (The
554 "EXTRACTOR" prefix is for historical compatibility.)
556 The four keying material values (the master key and master salt for
557 each direction) are provided as inputs to the SRTP key derivation
558 mechanism, as shown in Figure 1 and detailed below. By default, the
562 McGrew & Rescorla Standards Track [Page 10]
564 RFC 5764 SRTP Extension for DTLS May 2010
567 mechanism defined in Section 4.3 of [RFC3711] is used, unless another
568 key derivation mechanism is specified as part of an SRTP Protection
571 The client_write_SRTP_master_key and client_write_SRTP_master_salt
572 are provided to one invocation of the SRTP key derivation function,
573 to generate the SRTP keys used to encrypt and authenticate packets
574 sent by the client. The server MUST only use these keys to decrypt
575 and to check the authenticity of inbound packets.
577 The server_write_SRTP_master_key and server_write_SRTP_master_salt
578 are provided to one invocation of the SRTP key derivation function,
579 to generate the SRTP keys used to encrypt and authenticate packets
580 sent by the server. The client MUST only use these keys to decrypt
581 and to check the authenticity of inbound packets.
591 +-> client_write_SRTP_master_key ----+--->| SRTP |-> client
595 +-> server_write_SRTP_master_key -- | | +------+ SRTCP
596 | \ \--->|SRTCP |-> client
599 +-> client_write_SRTP_master_salt ---|-+
602 | +--->| SRTP |-> server
603 +-> server_write_SRTP_master_salt -+-|--->| KDF | write
607 | +--->|SRTCP |-> server
611 Figure 1: The derivation of the SRTP keys.
618 McGrew & Rescorla Standards Track [Page 11]
620 RFC 5764 SRTP Extension for DTLS May 2010
623 When both RTCP and RTP use the same source and destination ports,
624 then both the SRTP and SRTCP keys are needed. Otherwise, there are
625 two DTLS-SRTP sessions, one of which protects the RTP packets and one
626 of which protects the RTCP packets; each DTLS-SRTP session protects
627 the part of an SRTP session that passes over a single source/
628 destination transport address pair, as shown in Figure 2, independent
629 of which SSRCs are used on that pair. When a DTLS-SRTP session is
630 protecting RTP, the SRTCP keys derived from the DTLS handshake are
631 not needed and are discarded. When a DTLS-SRTP session is protecting
632 RTCP, the SRTP keys derived from the DTLS handshake are not needed
637 (1) <----- DTLS ------> src/dst = a/b and b/a
638 ------ SRTP ------> src/dst = a/b, uses client write keys
640 (2) <----- DTLS ------> src/dst = c/d and d/c
641 ------ SRTCP -----> src/dst = c/d, uses client write keys
642 <----- SRTCP ------ src/dst = d/c, uses server write keys
644 Figure 2: A DTLS-SRTP session protecting RTP (1) and another one
645 protecting RTCP (2), showing the transport addresses and keys used.
649 Because of the possibility of packet reordering, DTLS-SRTP
650 implementations SHOULD store multiple SRTP keys sets during a rekey
651 in order to avoid the need for receivers to drop packets for which
654 4.4. Key Usage Limitations
656 The maximum_lifetime parameter in the SRTP protection profile
657 indicates the maximum number of packets that can be protected with
658 each single encryption and authentication key. (Note that, since RTP
659 and RTCP are protected with independent keys, those protocols are
660 counted separately for the purposes of determining when a key has
661 reached the end of its lifetime.) Each profile defines its own
662 limit. When this limit is reached, a new DTLS session SHOULD be used
663 to establish replacement keys, and SRTP implementations MUST NOT use
664 the existing keys for the processing of either outbound or inbound
674 McGrew & Rescorla Standards Track [Page 12]
676 RFC 5764 SRTP Extension for DTLS May 2010
679 5. Use of RTP and RTCP over a DTLS-SRTP Channel
683 Once the DTLS handshake has completed, the peers can send RTP or RTCP
684 over the newly created channel. We describe the transmission process
685 first followed by the reception process.
687 Within each RTP session, SRTP processing MUST NOT take place before
688 the DTLS handshake completes.
692 DTLS and TLS define a number of record content types. In ordinary
693 TLS/DTLS, all data is protected using the same record encoding and
694 mechanisms. When the mechanism described in this document is in
695 effect, this is modified so that data written by upper-level protocol
696 clients of DTLS is assumed to be RTP/RTP and is encrypted using SRTP
697 rather than the standard TLS record encoding.
699 When a user of DTLS wishes to send an RTP packet in SRTP mode, it
700 delivers it to the DTLS implementation as an ordinary application
701 data write (e.g., SSL_write()). The DTLS implementation then invokes
702 the processing described in RFC 3711, Sections 3 and 4. The
703 resulting SRTP packet is then sent directly on the wire as a single
704 datagram with no DTLS framing. This provides an encapsulation of the
705 data that conforms to and interoperates with SRTP. Note that the RTP
706 sequence number rather than the DTLS sequence number is used for
711 When DTLS-SRTP is used to protect an RTP session, the RTP receiver
712 needs to demultiplex packets that are arriving on the RTP port.
713 Arriving packets may be of types RTP, DTLS, or STUN [RFC5389]. If
714 these are the only types of packets present, the type of a packet can
715 be determined by looking at its first byte.
717 The process for demultiplexing a packet is as follows. The receiver
718 looks at the first byte of the packet. If the value of this byte is
719 0 or 1, then the packet is STUN. If the value is in between 128 and
720 191 (inclusive), then the packet is RTP (or RTCP, if both RTCP and
721 RTP are being multiplexed over the same destination port). If the
722 value is between 20 and 63 (inclusive), the packet is DTLS. This
723 process is summarized in Figure 3.
730 McGrew & Rescorla Standards Track [Page 13]
732 RFC 5764 SRTP Extension for DTLS May 2010
736 | 127 < B < 192 -+--> forward to RTP
738 packet --> | 19 < B < 64 -+--> forward to DTLS
740 | B < 2 -+--> forward to STUN
743 Figure 3: The DTLS-SRTP receiver's packet demultiplexing algorithm.
744 Here the field B denotes the leading byte of the packet.
746 If other packet types are to be multiplexed as well, implementors
747 and/or designers SHOULD ensure that they can be demultiplexed from
748 these three packet types.
750 In some cases, there will be multiple DTLS-SRTP associations for a
751 given SRTP endpoint. For instance, if Alice makes a call that is SIP
752 forked to both Bob and Charlie, she will use the same local host/port
753 pair for both of them, as shown in Figure 4, where XXX and YYY
754 represent different DTLS-SRTP associations. (The SSRCs shown are the
755 ones for data flowing to Alice.)
764 Alice (192.0.2.0:5555)
771 Charlie (192.0.2.2:6666)
773 Figure 4: RTP sessions with SIP forking.
775 Because DTLS operates on the host/port quartet, the DTLS association
776 will still complete correctly, with the foreign host/port pair being
777 used, to distinguish the associations. However, in RTP the source
778 host/port is not used and sessions are identified by the destination
779 host/port and the SSRC. Thus, some mechanism is needed to determine
780 which SSRCs correspond to which DTLS associations. The following
781 method SHOULD be used.
786 McGrew & Rescorla Standards Track [Page 14]
788 RFC 5764 SRTP Extension for DTLS May 2010
791 For each local host/port pair, the DTLS-SRTP implementation maintains
792 a table listing all the SSRCs it knows about and the DTLS-SRTP
793 associations they correspond to. Initially, this table is empty.
794 When an SRTP packet is received for a given RTP endpoint (destination
795 IP/port pair), the following procedure is used:
797 1. If the SSRC is already known for that endpoint, then the
798 corresponding DTLS-SRTP association and its keying material is
799 used to decrypt and verify the packet.
800 2. If the SSRC is not known, then the receiver tries to decrypt it
801 with the keying material corresponding to each DTLS-SRTP
802 association for that endpoint.
803 3. If the decryption and verification succeeds (the authentication
804 tag verifies), then an entry is placed in the table mapping the
805 SSRC to that association.
806 4. If the decryption and verification fails, then the packet is
808 5. When a DTLS-SRTP association is closed (for instance, because the
809 fork is abandoned), its entries MUST be removed from the mapping
812 The average cost of this algorithm for a single SSRC is the
813 decryption and verification time of a single packet times the number
814 of valid DTLS-SRTP associations corresponding to a single receiving
815 port on the host. In practice, this means the number of forks; so in
816 the case shown in Figure 4, that would be two. This cost is only
817 incurred once for any given SSRC, since afterwards that SSRC is
818 placed in the map table and looked up immediately. As with normal
819 RTP, this algorithm allows new SSRCs to be introduced by the source
820 at any time. They will automatically be mapped to the correct DTLS
823 Note that this algorithm explicitly allows multiple SSRCs to be sent
824 from the same address/port pair. One way in which this can happen is
825 an RTP translator. This algorithm will automatically assign the
826 SSRCs to the correct associations. Note that because the SRTP
827 packets are cryptographically protected, such a translator must
828 either share keying material with one endpoint or refrain from
829 modifying the packets in a way which would cause the integrity check
830 to fail. This is a general property of SRTP and is not specific to
833 There are two error cases that should be considered. First, if an
834 SSRC collision occurs, then only the packets from the first source
835 will be processed. When the packets from the second source arrive,
836 the DTLS association with the first source will be used for
837 decryption and verification, which will fail, and the packet will be
838 discarded. This is consistent with [RFC3550], which permits the
842 McGrew & Rescorla Standards Track [Page 15]
844 RFC 5764 SRTP Extension for DTLS May 2010
847 receiver to keep the packets from one source and discard those from
848 the other. Of course the RFC 3550 SSRC collision detection and
849 handling procedures MUST also be followed.
851 Second, there may be cases where a malfunctioning source is sending
852 corrupt packets that cannot be decrypted and verified. In this case,
853 the SSRC will never be entered into the mapping table because the
854 decryption and verification always fails. Receivers MAY keep records
855 of unmapped SSRCs that consistently fail decryption and verification
856 and abandon attempts to process them once they reach some limit.
857 That limit MUST be large enough to account for the effects of
858 transmission errors. Entries MUST be pruned from this table when the
859 relevant SRTP endpoint is deleted (e.g., the call ends) and SHOULD
860 time out faster than that (we do not offer a hard recommendation but
861 10 to 30 seconds seems appropriate) in order to allow for the
862 possibility that the peer implementation has been corrected.
864 5.2. Rehandshake and Rekey
866 Rekeying in DTLS is accomplished by performing a new handshake over
867 the existing DTLS channel. That is, the handshake messages are
868 protected by the existing DTLS cipher suite. This handshake can be
869 performed in parallel with data transport, so no interruption of the
870 data flow is required. Once the handshake is finished, the newly
871 derived set of keys is used to protect all outbound packets, both
874 Because of packet reordering, packets protected by the previous set
875 of keys can appear on the wire after the handshake has completed. To
876 compensate for this fact, receivers SHOULD maintain both sets of keys
877 for some time in order to be able to decrypt and verify older
878 packets. The keys should be maintained for the duration of the
879 maximum segment lifetime (MSL).
881 If an MKI is used, then the receiver should use the corresponding set
882 of keys to process an incoming packet. If no matching MKI is
883 present, the packet MUST be rejected. Otherwise, when a packet
884 arrives after the handshake completed, a receiver SHOULD use the
885 newly derived set of keys to process that packet unless there is an
886 MKI. (If the packet was protected with the older set of keys, this
887 fact will become apparent to the receiver as an authentication
888 failure will occur.) If the authentication check on the packet fails
889 and no MKI is being used, then the receiver MAY process the packet
890 with the older set of keys. If that authentication check indicates
891 that the packet is valid, the packet should be accepted; otherwise,
892 the packet MUST be discarded and rejected.
898 McGrew & Rescorla Standards Track [Page 16]
900 RFC 5764 SRTP Extension for DTLS May 2010
903 Receivers MAY use the SRTP packet sequence number to aid in the
904 selection of keys. After a packet has been received and
905 authenticated with the new key set, any packets with sequence numbers
906 that are greater will also have been protected with the new key set.
908 6. Multi-Party RTP Sessions
910 Since DTLS is a point-to-point protocol, DTLS-SRTP is intended only
911 to protect unicast RTP sessions. This does not preclude its use with
912 RTP mixers. For example, a conference bridge may use DTLS-SRTP to
913 secure the communication to and from each of the participants in a
914 conference. However, because each flow between an endpoint and a
915 mixer has its own key, the mixer has to decrypt and then reencrypt
916 the traffic for each recipient.
918 A future specification may describe methods for sharing a single key
919 between multiple DTLS-SRTP associations thus allowing conferencing
920 systems to avoid the decrypt/reencrypt stage. However, any system in
921 which the media is modified (e.g., for level balancing or
922 transcoding) will generally need to be performed on the plaintext and
923 will certainly break the authentication tag, and therefore will
924 require a decrypt/reencrypt stage.
926 7. Security Considerations
928 The use of multiple data protection framings negotiated in the same
929 handshake creates some complexities, which are discussed here.
931 7.1. Security of Negotiation
933 One concern here is that attackers might be able to implement a bid-
934 down attack forcing the peers to use ordinary DTLS rather than SRTP.
935 However, because the negotiation of this extension is performed in
936 the DTLS handshake, it is protected by the Finished messages.
937 Therefore, any bid-down attack is automatically detected, which
938 reduces this to a denial-of-service attack -- which can be mounted by
939 any attacker who can control the channel.
941 7.2. Framing Confusion
943 Because two different framing formats are used, there is concern that
944 an attacker could convince the receiver to treat an SRTP-framed RTP
945 packet as a DTLS record (e.g., a handshake message) or vice versa.
946 This attack is prevented by using different keys for Message
947 Authentication Code (MAC) verification for each type of data.
948 Therefore, this type of attack reduces to being able to forge a
949 packet with a valid MAC, which violates a basic security invariant of
954 McGrew & Rescorla Standards Track [Page 17]
956 RFC 5764 SRTP Extension for DTLS May 2010
959 As an additional defense against injection into the DTLS handshake
960 channel, the DTLS record type is included in the MAC. Therefore, an
961 SRTP record would be treated as an unknown type and ignored. (See
962 Section 6 of [RFC5246].)
964 7.3. Sequence Number Interactions
966 As described in Section 5.1.1, the SRTP and DTLS sequence number
967 spaces are distinct. This means that it is not possible to
968 unambiguously order a given DTLS control record with respect to an
969 SRTP packet. In general, this is relevant in two situations: alerts
974 Because DTLS handshake and change_cipher_spec messages share the same
975 sequence number space as alerts, they can be ordered correctly.
976 Because DTLS alerts are inherently unreliable and SHOULD NOT be
977 generated as a response to data packets, reliable sequencing between
978 SRTP packets and DTLS alerts is not an important feature. However,
979 implementations that wish to use DTLS alerts to signal problems with
980 the SRTP encoding SHOULD simply act on alerts as soon as they are
981 received and assume that they refer to the temporally contiguous
982 stream. Such implementations MUST check for alert retransmission and
983 discard retransmitted alerts to avoid overreacting to replay attacks.
987 Because the rehandshake transition algorithm specified in Section 5.2
988 requires trying multiple sets of keys if no MKI is used, it slightly
989 weakens the authentication. For instance, if an n-bit MAC is used
990 and k different sets of keys are present, then the MAC is weakened by
991 log_2(k) bits to n - log_2(k). In practice, since the number of keys
992 used will be very small and the MACs in use are typically strong (the
993 default for SRTP is 80 bits), the decrease in security involved here
996 Another concern here is that this algorithm slightly increases the
997 work factor on the receiver because it needs to attempt multiple
998 validations. However, again, the number of potential keys will be
999 very small (and the attacker cannot force it to be larger) and this
1000 technique is already used for rollover counter management, so the
1001 authors do not consider this to be a serious flaw.
1010 McGrew & Rescorla Standards Track [Page 18]
1012 RFC 5764 SRTP Extension for DTLS May 2010
1015 7.4. Decryption Cost
1017 An attacker can impose computational costs on the receiver by sending
1018 superficially valid SRTP packets that do not decrypt correctly. In
1019 general, encryption algorithms are so fast that this cost is
1020 extremely small compared to the bandwidth consumed. The SSRC-DTLS
1021 mapping algorithm described in Section 5.1.2 gives the attacker a
1022 slight advantage here because he can force the receiver to do more
1023 then one decryption per packet. However, this advantage is modest
1024 because the number of decryptions that the receiver does is limited
1025 by the number of associations he has corresponding to a given
1026 destination host/port, which is typically quite small. For
1027 comparison, a single 1024-bit RSA private key operation (the typical
1028 minimum cost to establish a DTLS-SRTP association) is hundreds of
1029 times as expensive as decrypting an SRTP packet.
1031 Implementations can detect this form of attack by keeping track of
1032 the number of SRTP packets that are observed with unknown SSRCs and
1033 that fail the authentication tag check. If under such attack,
1034 implementations SHOULD prioritize decryption and verification of
1035 packets that either have known SSRCs or come from source addresses
1036 that match those of peers with which it has DTLS-SRTP associations.
1038 8. Session Description for RTP/SAVP over DTLS
1040 This specification defines new tokens to describe the protocol used
1041 in SDP media descriptions ("m=" lines and their associated
1042 parameters). The new values defined for the proto field are:
1044 o When a RTP/SAVP or RTP/SAVPF [RFC5124] stream is transported over
1045 DTLS with the Datagram Congestion Control Protocol (DCCP), then
1046 the token SHALL be DCCP/TLS/RTP/SAVP or DCCP/TLS/RTP/SAVPF
1049 o When a RTP/SAVP or RTP/SAVPF stream is transported over DTLS with
1050 UDP, the token SHALL be UDP/TLS/RTP/SAVP or UDP/TLS/RTP/SAVPF
1053 The "fmt" parameter SHALL be as defined for RTP/SAVP.
1055 See [RFC5763] for how to use offer/answer with DTLS-SRTP.
1057 This document does not specify how to protect RTP data transported
1058 over TCP. Potential approaches include carrying the RTP over TLS
1059 over TCP (see [SRTP-NOT-MAND]) or using a mechanism similar to that
1060 in this document over TCP, either via TLS or DTLS, with DTLS being
1061 used for consistency between reliable and unreliable transports. In
1066 McGrew & Rescorla Standards Track [Page 19]
1068 RFC 5764 SRTP Extension for DTLS May 2010
1071 the latter case, it would be necessary to profile DTLS so that
1072 fragmentation and retransmissions no longer occurred. In either
1073 case, a new document would be required.
1075 9. IANA Considerations
1077 This document adds a new extension for DTLS, in accordance with
1079 enum { use_srtp (14) } ExtensionType;
1081 This extension MUST only be used with DTLS, and not with TLS
1082 [RFC4572], which specifies that TLS can be used over TCP but does not
1083 address TCP for RTP/SAVP.
1085 Section 4.1.2 requires that all SRTPProtectionProfile values be
1086 defined by RFC 5226 "Specification Required". IANA has created a
1087 DTLS SRTPProtectionProfile registry initially populated with values
1088 from Section 4.1.2 of this document. Future values MUST be allocated
1089 via the "Specification Required" profile of [RFC5226].
1091 This specification updates the "Session Description Protocol (SDP)
1092 Parameters" registry as defined in Section 8.2.2 of [RFC4566].
1093 Specifically, it adds the following values to the table for the
1096 Type SDP Name Reference
1097 ---- ------------------ ---------
1098 proto UDP/TLS/RTP/SAVP [RFC5764]
1099 proto DCCP/TLS/RTP/SAVP [RFC5764]
1101 proto UDP/TLS/RTP/SAVPF [RFC5764]
1102 proto DCCP/TLS/RTP/SAVPF [RFC5764]
1104 IANA has registered the "EXTRACTOR-dtls_srtp" value in the TLS
1105 Extractor Label Registry to correspond to this specification.
1109 Special thanks to Flemming Andreasen, Francois Audet, Pasi Eronen,
1110 Roni Even, Jason Fischl, Cullen Jennings, Colin Perkins, Dan Wing,
1111 and Ben Campbell for input, discussions, and guidance. Pasi Eronen
1122 McGrew & Rescorla Standards Track [Page 20]
1124 RFC 5764 SRTP Extension for DTLS May 2010
1129 11.1. Normative References
1131 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1132 Requirement Levels", BCP 14, RFC 2119, March 1997.
1134 [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E.,
1135 and K. Norrman, "The Secure Real-time Transport
1136 Protocol (SRTP)", RFC 3711, March 2004.
1138 [RFC4347] Rescorla, E. and N. Modadugu, "Datagram Transport
1139 Layer Security", RFC 4347, April 2006.
1141 [RFC4961] Wing, D., "Symmetric RTP / RTP Control Protocol
1142 (RTCP)", BCP 131, RFC 4961, July 2007.
1144 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer
1145 Security (TLS) Protocol Version 1.2", RFC 5246,
1148 [RFC5705] Rescorla, E., "Keying Material Exporters for
1149 Transport Layer Security (TLS)", RFC 5705,
1152 [RFC5761] Perkins, C. and M. Westerlund, "Multiplexing RTP
1153 Data and Control Packets on a Single Port",
1154 RFC 5761, April 2010.
1156 11.2. Informative References
1158 [DTLS1.2] Rescorla, E. and N. Modadugu, "Datagram Transport
1159 Layer Security version 1.2", Work in Progress,
1162 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
1163 Jacobson, "RTP: A Transport Protocol for Real-Time
1164 Applications", STD 64, RFC 3550, July 2003.
1166 [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP:
1167 Session Description Protocol", RFC 4566, July 2006.
1169 [RFC4572] Lennox, J., "Connection-Oriented Media Transport
1170 over the Transport Layer Security (TLS) Protocol in
1171 the Session Description Protocol (SDP)", RFC 4572,
1178 McGrew & Rescorla Standards Track [Page 21]
1180 RFC 5764 SRTP Extension for DTLS May 2010
1183 [RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile
1184 for Real-time Transport Control Protocol (RTCP)-
1185 Based Feedback (RTP/SAVPF)", RFC 5124,
1188 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for
1189 Writing an IANA Considerations Section in RFCs",
1190 BCP 26, RFC 5226, May 2008.
1192 [RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing,
1193 "Session Traversal Utilities for NAT (STUN)",
1194 RFC 5389, October 2008.
1196 [RFC5763] Fischl, J., Tschofenig, H., and E. Rescorla,
1197 "Framework for Establishing a Secure Real-time
1198 Transport Protocol (SRTP) Security Context Using
1199 Datagram Transport Layer Security (DTLS)", RFC 5763,
1202 [SRTP-NOT-MAND] Perkins, C. and M. Westerlund, "Why RTP Does Not
1203 Mandate a Single Security Mechanism", Work in
1204 Progress, January 2010.
1234 McGrew & Rescorla Standards Track [Page 22]
1236 RFC 5764 SRTP Extension for DTLS May 2010
1239 Appendix A. Overview of DTLS
1241 This section provides a brief overview of Datagram TLS (DTLS) for
1242 those who are not familiar with it. DTLS is a channel security
1243 protocol based on the well-known Transport Layer Security (TLS)
1244 [RFC5246] protocol. Where TLS depends on a reliable transport
1245 channel (typically TCP), DTLS has been adapted to support unreliable
1246 transports such as UDP. Otherwise, DTLS is nearly identical to TLS
1247 and generally supports the same cryptographic mechanisms.
1249 Each DTLS association begins with a handshake exchange (shown below)
1250 during which the peers authenticate each other and negotiate
1251 algorithms, modes, and other parameters and establish shared keying
1252 material, as shown below. In order to support unreliable transport,
1253 each side maintains retransmission timers to provide reliable
1254 delivery of these messages. Once the handshake is completed,
1255 encrypted data may be sent.
1259 ClientHello -------->
1264 <-------- ServerHelloDone
1272 Application Data <-------> Application Data
1274 '*' indicates messages that are not always sent.
1276 Figure 5: Basic DTLS Handshake Exchange (after [RFC4347]).
1278 Application data is protected by being sent as a series of DTLS
1279 "records". These records are independent and can be processed
1280 correctly even in the face of loss or reordering. In DTLS-SRTP, this
1281 record protocol is replaced with SRTP [RFC3711]
1290 McGrew & Rescorla Standards Track [Page 23]
1292 RFC 5764 SRTP Extension for DTLS May 2010
1295 Appendix B. Performance of Multiple DTLS Handshakes
1297 Standard practice for security protocols such as TLS, DTLS, and SSH,
1298 which do inline key management, is to create a separate security
1299 association for each underlying network channel (TCP connection, UDP
1300 host/port quartet, etc.). This has dual advantages of simplicity and
1301 independence of the security contexts for each channel.
1303 Three concerns have been raised about the overhead of this strategy
1304 in the context of RTP security. The first concern is the additional
1305 performance overhead of doing a separate public key operation for
1306 each channel. The conventional procedure here (used in TLS and DTLS)
1307 is to establish a master context that can then be used to derive
1308 fresh traffic keys for new associations. In TLS/DTLS, this is called
1309 "session resumption" and can be transparently negotiated between the
1312 The second concern is network bandwidth overhead for the
1313 establishment of subsequent connections and for rehandshake (for
1314 rekeying) for existing connections. In particular, there is a
1315 concern that the channels will have very narrow capacity requirements
1316 allocated entirely to media that will be overflowed by the
1317 rehandshake. Measurements of the size of the rehandshake (with
1318 resumption) in TLS indicate that it is about 300-400 bytes if a full
1319 selection of cipher suites is offered. (The size of a full handshake
1320 is approximately 1-2 kilobytes larger because of the certificate and
1321 keying material exchange.)
1323 The third concern is the additional round-trips associated with
1324 establishing the second, third, ... channels. In TLS/DTLS, these can
1325 all be done in parallel, but in order to take advantage of session
1326 resumption they should be done after the first channel is
1327 established. For two channels, this provides a ladder diagram
1328 something like this (parenthetical numbers are media channel numbers)
1346 McGrew & Rescorla Standards Track [Page 24]
1348 RFC 5764 SRTP Extension for DTLS May 2010
1352 -------------------------------------------
1357 <- ClientKeyExchange (1)
1358 ChangeCipherSpec (1)
1360 ChangeCipherSpec (1)->
1362 <--- Channel 1 ready
1366 ChangeCipherSpec(2)->
1368 <- ChangeCipherSpec (2)
1370 <--- Channel 2 ready
1372 Figure 6: Parallel DTLS-SRTP negotiations.
1374 So, there is an additional 1 RTT (round-trip time) after Channel 1 is
1375 ready before Channel 2 is ready. If the peers are potentially
1376 willing to forego resumption, they can interlace the handshakes, like
1402 McGrew & Rescorla Standards Track [Page 25]
1404 RFC 5764 SRTP Extension for DTLS May 2010
1408 -------------------------------------------
1413 <- ClientKeyExchange (1)
1414 ChangeCipherSpec (1)
1417 ChangeCipherSpec (1)->
1419 <--- Channel 1 ready
1421 ChangeCipherSpec(2)->
1423 <- ChangeCipherSpec (2)
1425 <--- Channel 2 ready
1427 Figure 7: Interlaced DTLS-SRTP negotiations.
1429 In this case, the channels are ready contemporaneously, but if a
1430 message in handshake (1) is lost, then handshake (2) requires either
1431 a full rehandshake or that Alice be clever and queue the resumption
1432 attempt until the first handshake completes. Note that just dropping
1433 the packet works as well, since Bob will retransmit.
1443 EMail: mcgrew@cisco.com
1458 McGrew & Rescorla Standards Track [Page 26]