7 Network Working Group S. Santesson
8 Request for Comments: 4680 Microsoft
9 Updates: 4346 September 2006
10 Category: Standards Track
13 TLS Handshake Message for Supplemental Data
17 This document specifies an Internet standards track protocol for the
18 Internet community, and requests discussion and suggestions for
19 improvements. Please refer to the current edition of the "Internet
20 Official Protocol Standards" (STD 1) for the standardization state
21 and status of this protocol. Distribution of this memo is unlimited.
25 Copyright (C) The Internet Society (2006).
29 This specification defines a TLS handshake message for exchange of
30 supplemental application data. TLS hello message extensions are used
31 to determine which supplemental data types are supported by both the
32 TLS client and the TLS server. Then, the supplemental data handshake
33 message is used to exchange the data. Other documents will define
34 the syntax of these extensions and the syntax of the associated
35 supplemental data types.
58 Santesson Standards Track [Page 1]
60 RFC 4680 TLS Handshake Message for Supplemental Data September 2006
65 Recent standards activities have proposed different mechanisms for
66 transmitting supplemental application data in the TLS handshake
67 message. For example, recent proposals transfer data that is not
68 processed by the TLS protocol itself, but assist the TLS-protected
69 application in the authentication and authorization decisions. One
70 proposal transfers user name hints for locating credentials, and
71 another proposal transfers attribute certificates and Security
72 Assertions Markup Language (SAML) assertions for authorization
75 In order to avoid definition of multiple handshake messages, one for
76 each new type of application-specific supplemental data, this
77 specification defines a new handshake message type that bundles
78 together all data objects that are to be delivered to the TLS-
79 protected application and sends them in a single handshake message.
83 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
84 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
85 document are to be interpreted as described in RFC 2119 [N1].
87 The syntax for the supplemental_data handshake message is defined
88 using the TLS Presentation Language, which is specified in Section 4
91 2. Supplemental Data Handshake Message
93 The new supplemental_data handshake message type is defined to
94 accommodate communication of supplemental data objects as agreed
95 during the exchange of extensions in the client and server hello
96 messages. See RFC 2246 (TLS 1.0) [N2] and RFC 4346 (TLS 1.1) [N3]
97 for other handshake message types.
99 Information provided in a supplemental data object MUST be intended
100 to be used exclusively by applications and protocols above the TLS
101 protocol layer. Any such data MUST NOT need to be processed by the
114 Santesson Standards Track [Page 2]
116 RFC 4680 TLS Handshake Message for Supplemental Data September 2006
120 supplemental_data(23), (255)
124 HandshakeType msg_type; /* handshake type */
125 uint24 length; /* octets in message */
126 select (HandshakeType) {
127 case supplemental_data: SupplementalData;
132 SupplementalDataEntry supp_data<1..2^24-1>;
136 SupplementalDataType supp_data_type;
137 uint16 supp_data_length;
138 select(SupplementalDataType) { }
139 } SupplementalDataEntry;
143 } SupplementalDataType;
146 This field is the length (in bytes) of the data selected by
147 SupplementalDataType.
149 The client MUST NOT send more than one SupplementalData handshake
150 message, and the server MUST NOT send more than one SupplementalData
151 handshake message. Receiving more than one SupplementalData
152 handshake message results in a fatal error, and the receiver MUST
153 close the connection with a fatal unexpected_message alert.
155 If present, the SupplementalData handshake message MUST contain a
156 non-empty SupplementalDataEntry structure carrying data associated
157 with at least one defined SupplementalDataType. An explicit
158 agreement that governs presence of any supplemental data MUST be
159 concluded between client and server for each SupplementalDataType
160 using the TLS extensions [N4] in the client and server hello
161 messages. Receiving an unexpected SupplementalData handshake message
162 results in a fatal error, and the receiver MUST close the connection
163 with a fatal unexpected_message alert.
170 Santesson Standards Track [Page 3]
172 RFC 4680 TLS Handshake Message for Supplemental Data September 2006
175 Other documents will define specific SupplementalDataTypes and their
176 associated data syntax and processing. These same specifications
177 must also specify the client and server hello message extensions that
178 are used to negotiate the support for the specified supplemental data
179 type. This document simply specifies the TLS Handshake Protocol
180 message that will carry the supplemental data objects.
182 Different situations require the transfer of supplemental data from
183 the client to the server, require the transfer of supplemental data
184 from the server to the client, or both ways. All three situations
189 The SupplementalData handshake message, if exchanged, MUST be sent as
190 the first handshake message as illustrated in Figure 1 below.
194 ClientHello (with extensions) -------->
196 ServerHello(with extensions)
201 <-------- ServerHelloDone
211 Application Data <-------> Application Data
213 * Indicates optional or situation-dependent messages.
215 Figure 1. Message Flow with SupplementalData
226 Santesson Standards Track [Page 4]
228 RFC 4680 TLS Handshake Message for Supplemental Data September 2006
231 4. Security Considerations
233 Each SupplementalDataType included in the handshake message defined
234 in this specification introduces its own unique set of security
235 properties and related considerations. Security considerations must
236 therefore be defined in each document that defines a supplemental
239 In some cases, the SupplementalData information may be sensitive.
240 The double handshake technique can be used to provide protection for
241 the SupplementalData information. Figure 2 illustrates the double
242 handshake, where the initial handshake does not include any
243 extensions, but it does result in protected communications. Then, a
244 second handshake that includes the SupplementalData information is
245 performed using the protected communications. In Figure 2, the
246 number on the right side indicates the amount of protection for the
247 TLS message on that line. A zero (0) indicates that there is no
248 communication protection; a one (1) indicates that protection is
249 provided by the first TLS session; and a two (2) indicates that
250 protection is provided by both TLS sessions.
252 The placement of the SupplementalData message in the TLS Handshake
253 results in the server providing its SupplementalData information
254 before the client is authenticated. In many situations, servers will
255 not want to provide authorization information until the client is
256 authenticated. The double handshake illustrated in Figure 2 provides
257 a technique to ensure that the parties are mutually authenticated
258 before either party provides SupplementalData information.
282 Santesson Standards Track [Page 5]
284 RFC 4680 TLS Handshake Message for Supplemental Data September 2006
289 ClientHello (no extensions) --------> |0
290 ServerHello (no extensions) |0
292 ServerKeyExchange* |0
293 CertificateRequest* |0
294 <-------- ServerHelloDone |0
297 CertificateVerify* |0
298 [ChangeCipherSpec] |0
299 Finished --------> |1
300 [ChangeCipherSpec] |0
301 <-------- Finished |1
302 ClientHello (w/ extensions) --------> |1
303 ServerHello (w/ extensions) |1
306 ServerKeyExchange* |1
307 CertificateRequest* |1
308 <-------- ServerHelloDone |1
312 CertificateVerify* |1
313 [ChangeCipherSpec] |1
314 Finished --------> |2
315 [ChangeCipherSpec] |1
316 <-------- Finished |2
317 Application Data <-------> Application Data |2
319 * Indicates optional or situation-dependent messages.
321 Figure 2. Double Handshake to Protect Supplemental Data
338 Santesson Standards Track [Page 6]
340 RFC 4680 TLS Handshake Message for Supplemental Data September 2006
343 5. IANA Considerations
345 IANA has taken the following actions:
347 1) Created an entry, supplemental_data(23), in the existing registry
348 for HandshakeType (defined in RFC 2246 [N2]).
350 2) Established a registry for TLS Supplemental Data Formats
351 (SupplementalDataType). Values in the inclusive range 0-16385
352 (decimal) are assigned via RFC 2434 [N5] Standards Action. Values
353 from the inclusive range 16386-65279 (decimal) are assigned via
354 RFC 2434 IETF Consensus. Values from the inclusive range
355 65280-65535 (decimal) are reserved for RFC 2434 Private Use.
357 6. Normative References
359 [N1] Bradner, S., "Key words for use in RFCs to Indicate
360 Requirement Levels", BCP 14, RFC 2119, March 1997.
362 [N2] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC
365 [N3] Dierks, T. and E. Rescorla, "The Transport Layer Security
366 (TLS) Protocol Version 1.1", RFC 4346, April 2006.
368 [N4] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., and
369 T. Wright, "Transport Layer Security (TLS) Extensions", RFC
372 [N5] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA
373 Considerations Section in RFCs", BCP 26, RFC 2434, October
378 The fundamental architectural idea for the supplemental data
379 handshake message was provided by Russ Housley and Eric Rescorla.
394 Santesson Standards Track [Page 7]
396 RFC 4680 TLS Handshake Message for Supplemental Data September 2006
407 EMail: stefans@microsoft.com
450 Santesson Standards Track [Page 8]
452 RFC 4680 TLS Handshake Message for Supplemental Data September 2006
455 Full Copyright Statement
457 Copyright (C) The Internet Society (2006).
459 This document is subject to the rights, licenses and restrictions
460 contained in BCP 78, and except as set forth therein, the authors
461 retain all their rights.
463 This document and the information contained herein are provided on an
464 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
465 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
466 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
467 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
468 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
469 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
471 Intellectual Property
473 The IETF takes no position regarding the validity or scope of any
474 Intellectual Property Rights or other rights that might be claimed to
475 pertain to the implementation or use of the technology described in
476 this document or the extent to which any license under such rights
477 might or might not be available; nor does it represent that it has
478 made any independent effort to identify any such rights. Information
479 on the procedures with respect to rights in RFC documents can be
480 found in BCP 78 and BCP 79.
482 Copies of IPR disclosures made to the IETF Secretariat and any
483 assurances of licenses to be made available, or the result of an
484 attempt made to obtain a general license or permission for the use of
485 such proprietary rights by implementers or users of this
486 specification can be obtained from the IETF on-line IPR repository at
487 http://www.ietf.org/ipr.
489 The IETF invites any interested party to bring to its attention any
490 copyrights, patents or patent applications, or other proprietary
491 rights that may cover technology that may be required to implement
492 this standard. Please address the information to the IETF at
497 Funding for the RFC Editor function is provided by the IETF
498 Administrative Support Activity (IASA).
506 Santesson Standards Track [Page 9]