4 Internet Engineering Task Force M. Badra
5 INTERNET DRAFT ENST Paris
8 Expires: December 2006 June 15, 2006
10 MTLS: TLS Multiplexing
11 <draft-badra-hajjeh-mtls-01.txt>
16 By submitting this Internet-Draft, each author represents that any
17 applicable patent or other IPR claims of which he or she is aware
18 have been or will be disclosed, and any of which he or she becomes
19 aware will be disclosed, in accordance with Section 6 of BCP 79.
21 Internet-Drafts are working documents of the Internet Engineering
22 Task Force (IETF), its areas, and its working groups. Note that
23 other groups may also distribute working documents as Internet
26 Internet-Drafts are draft documents valid for a maximum of six
27 months and may be updated, replaced, or obsoleted by other documents
28 at any time. It is inappropriate to use Internet-Drafts as reference
29 material or to cite them other than as "work in progress."
31 The list of current Internet-Drafts can be accessed at
32 http://www.ietf.org/ietf/1id-abstracts.txt
34 The list of Internet-Draft Shadow Directories can be accessed at
35 http://www.ietf.org/shadow.html
37 This Internet-Draft will expire on November 20, 2006.
41 Copyright (C) The Internet Society (2006). All Rights Reserved.
45 The Transport Layer Security (TLS) standard provides connection
46 security with mutual authentication, data confidentiality and
47 integrity, key generation and distribution, and security parameters
48 negotiation. However, missing from the protocol is a way to
49 multiplex application data over a single TLS session.
51 This document defines MTLS, a new TLS sub-protocol running over TLS
52 (or DTLS) Record protocol. The MTLS design provides application
53 multiplexing over a single TLS (or DTLS) session. Therefore, instead
54 of associating a TLS connection with each application, MTLS allows
57 Badra & Hajjeh Expires December 2006 [Page 1]
\f
59 Internet-Draft TLS Multiplexing June 2006
62 several applications to protect their exchanges over a single TLS
67 SMTP over TLS [SMTPTLS], HTTP over TLS [HTTPTLS], POP over TLS and
68 IMAP over TLS [POPTLS] are examples of securing, respectively, SMTP,
69 HTTP, POP and IMAP data exchanges using the TLS protocol [TLS].
71 TLS ([TLS], [TLSv1.1] and [DTLS]) is the most deployed security
72 protocol for securing exchanges, authenticating entities and for
73 generating and distributing cryptographic keys. However, what is
74 missing from the protocol is the way to multiplex application data
75 over the same TLS session.
77 Actually, TLS (or DTLS) clients and servers MUST establish a TLS (or
78 DTLS) session for each application they want to run over a transport
79 layer. However, some applications may agree or be configured to use
80 the same security policies or parameters (e.g. authentication method
81 and cipher_suite) and then to share a single TLS session to protect
82 their exchanges. In this way, this document extends TLS to allow
83 application multiplexing over TLS.
85 The document motivations included:
87 o TLS is application protocol-independent. Higher-level protocol
88 can operate on top of the TLS protocol transparently.
90 o TLS is a protocol of a modular nature. Since TLS is developed in
91 four independent protocols, the approach defined in this
92 document can be added by extending the TLS protocol and with a
93 total reuse of pre-existing TLS infrastructures and
96 o It provides a secure VPN tunnel over a transport layer. Unlike
97 "ssh-connection" [SSHCON], MTLS can run over unreliable
98 transport protocols, such as UDP.
100 o Establishing a single session for a number of applications
101 -instead of establishing a session per application- reduces
102 resource consumption, latency and messages flow that are
103 associated with executing simultaneous TLS sessions.
105 o TLS can not forbid an intruder to analyze the traffic and cannot
106 protect data from inference. Thus, the intruder can know the
107 type of application data transmitted through the TLS session.
108 However, the extension defined in this document allows, by its
109 design, data protection against inference.
113 Badra & Hajjeh Expires December 2006 [Page 2]
\f
115 Internet-Draft TLS Multiplexing June 2006
118 1.2 Requirements language
120 The key words "MUST", "SHALL", "SHOULD", and "MAY", in this document
121 are to be interpreted as described in RFC-2119.
123 2 TLS multiplexing overview and considerations
125 This document defines a new TLS sub-protocol called Multiplexing TLS
126 (MTLS) to handle data multiplexing, and it specifies the content
127 type mtls(TBD). It extends also TLS with a new extension type
128 allowing the negotiation of data multiplexing features.
132 Based on the TLS Extensions [TLSExt], a client and a server can, in
133 an ordinary TLS handshake, negotiate the future use of MTLS. If the
134 client does attempt to initiate a TLS connection using MTLS with a
135 server that does not support it, it will be automatically alerted.
136 For servers aware of MTLS but not wishing to use it, it will
137 gracefully revert to an ordinary TLS handshake or stop the
140 The negotiation usually starts with the client determining whether
141 the server is capable of and willing to use MTLS or not. In order to
142 allow a TLS client to negotiate the application multiplexing
143 functionality, a new extension type SHOULD be added to the Extended
144 Client and Extended Server Hello messages.
146 This document defines an extension of type
147 "application_layer_protocol". The "extension_data" field of this
148 extension contains a "data_multiplexing", where:
151 ApplicationLayerProtocol alp_list<0..2^22-1>;
155 SenderChannelID sender_channel_id;
156 ReceiverChannelID receiver_channel_id;
157 uint32 max_packet_length;
158 ApplicationpProtocolName apn;
159 } ApplicationLayerProtocol;
161 opaque SenderChannelID [2];
162 opaque ReceiverChannelID [2];
163 Opaque ApplicationpProtocolName<1..2^4>;
165 Each channel has its identifier, which is composed of two parts
166 (sender_channel_id and receiver_channel_id) generated respectively
167 by the sender and the receiver. During the Handshake phase, the
169 Badra & Hajjeh Expires December 2006 [Page 3]
\f
171 Internet-Draft TLS Multiplexing June 2006
174 sender generates the sender_channel_id's value and initializes the
175 receiver_channel_id to empty field, in which the receiver replies
176 with a generated receiver_channel_id.
178 The sender (respectively the receiver) initializes its
179 max_packet_length with the data length (in octets), specifying how
180 many bytes the receiver (respectively the sender) can maximally send
181 on the channel. Each end of the channel establishes a 'receive
182 buffer' and a 'send buffer'.
184 How the negotiation of options within an extension is handled is up
185 to the definition of that extension. Implementations of this
186 document MAY allow the server to respond with the intersection
187 between what the client and the server support. However, the server
188 MAY reply with all the applications it supports, but in this case
189 the server MUST support at least one application requested by the
190 client. The sender_channel_id, receiver_channel_id and the
191 max_packet_size MUST be omitted from the server response for each
192 application not requested by the client.
194 Note: if the server (receiver) agrees, the client (sender) SHOULD
195 establish a single TLS (respectively DTLS) session for all
196 applications it wishes to run over a single TLS session. In this
197 case, the sender SHOULD send a data multiplexing extension
198 containing "ALL" as ApplicationpProtocolName value. The
199 sender_channel_id, the receiver_channel_id and the max_packet_length
200 fields SHOULD be omitted. If the receiver is able to negotiate such
201 a session, it will reply with a list of applications it can accept
202 to run through a single TLS session. The receiver_channel_id, the
203 sender_channel_id and the max_packet_length fields SHOULD be
206 However, the client MAY indicate to the server its support of the
207 data multiplexing extension without determining the application
208 types it wishes to multiplex. In this case, the client sends an
209 empty data multiplexing extension. If the server is able of and
210 willing to use the data multiplexing extension, it MUST reply with
211 an empty extension of the same type. Once the Handshake is complete,
212 the client and the server SHOULD establish and manage many
213 application channels using the requests/responses defined below.
215 2.1.1. Opening and closing connections
217 Once the Handshake is complete, the two entities can start data
218 multiplexing using a set of requests/responses defined below. All
219 requests/requests will pass through MTLS layer and are formatted
220 into MTLS packets, depending on each request/response.
225 Badra & Hajjeh Expires December 2006 [Page 4]
\f
227 Internet-Draft TLS Multiplexing June 2006
230 The sender MAY request the opening of many channels. For each
231 request, the MTLS layer MUST generate and send the following
236 SenderChannelID sender_channel_id;
237 uint32 max_packet_length;// of the sender of this packet
238 ApplicationpProtocolName apn;
239 } RequestEstablishmentChannel;
241 The field "type" specifies the MTLS packet type (types are
242 summarized below), max_packet_length and the sender_channel_id are
243 used as previously described.
245 The receiver decides whether it can open the channel, and replies
246 with one of the following messages:
250 SenderChannelID sender_channel_id;
251 ReceiverChannelID receiver_channel_id;
252 uint32 max_packet_length;
253 } RequestEstablishmentSuccess;
257 SenderChannelID sender_channel_id;
258 opaque error<0..2^16>;
259 } RequestEchecChannel;
261 The field "error" conveys a description of the error.
263 The following packet MAY be sent to notify the receiver that the
264 sender will not send any more data on this channel and that any data
265 received after a closure request will be ignored. The sender of the
266 closure request MAY close its 'receive buffer' without waiting for
267 the receiver's response. However, the receiver MUST respond with a
268 confirmation of the closure and close down the channel immediately,
269 discarding any pending writes.
273 SenderChannelID sender_channel_id;
274 ReceiverChannelID receiver_channel_id;
281 Badra & Hajjeh Expires December 2006 [Page 5]
\f
283 Internet-Draft TLS Multiplexing June 2006
288 SenderChannelID sender_channel_id;
289 ReceiverChannelID receiver_channel_id;
290 } ConfirmationCloseChannel;
292 2.2 MTLS sub-protocol
294 The structure of the MTLS packet is described below. The channel_id
295 value depends on the originator of the packet; for received
296 (respectively submitted) packets, it conveys the sender_channel_id
297 (respectively receiver_channel_id). The length conveys the data
298 length of the current packet.
300 Each entity maintains its max_packet_length that is originally
301 initialized (during the channel establishment or during the
302 handshake phase) to a value not bigger than the maximum size of this
303 entity's 'receive buffer'. For each received packet, the entity MUST
304 subtract the packet's length from the max_packet_length. The result
305 is always positive since the packet's length is always less than or
306 equal to the current max_packet_length.
308 The free space of the 'receive buffer' MAY increase in length.
309 Consequently, the entity MUST inform the other end about this
310 increase, allowing the other entity to send packet with length
311 bigger than the old max_packet_length but smaller or equal than the
314 The entity MAY indicate this increase using either data or
315 Acknowledgment packets. In the first case, the entity MUST set the
316 max_packet_length_changed to 1 and extra_length set to the extra
317 free space. In the second case, the entity only needs to send the
318 length of the extra free space.
320 If the length of the 'receive buffer' does not change,
321 Acknowledgment packet will never be sent. However, the entity MAY
322 send data packet but in this case, it MUST set the
323 max_packet_length_changed to 0 and MUST consequently remove the
324 extra_length field from the packet header.
326 In the case where the 'receive buffer' of an entity fills up, the
327 other entity MUST wait for an Acknowledgment or a data packet with
328 packet_length_changed set to 1, before sending any more
329 MTLSPlaintext packets.
337 Badra & Hajjeh Expires December 2006 [Page 6]
\f
339 Internet-Draft TLS Multiplexing June 2006
345 uint8 max_packet_length_changed;
346 uint32 extra_length; // omitted if the value of the
347 // max_packet_length_changed is 0
349 opaque data[MTLSPlaintext.length];
354 uint16 channel_id; // of the receiver of that packet
358 The TLS Record Layer receives data from MTLS, supposes it as
359 uninterpreted data and applies the fragmentation and the
360 cryptographic operations on it, as defined in [TLS].
362 Note: multiple MTLS fragments MAY be coalesced into a single
365 Received data is decrypted, verified, decompressed, and reassembled,
366 then delivered to MTLS sub-protocol. Next, the MTLS sends data to
367 the appropriate application using the channel identifier and the
370 2.3 MTLS Message Types
372 RequestEstablishmentChannel 0x01
373 RequestEstablishmentSuccess 0x02
374 RequestEchecChannel 0x03
376 ConfirmationCloseChannel 0x05
380 Security Considerations
382 Security issues are discussed throughout this document, and in
383 [TLS], [TLSv1.1], [DTLS] and [TLSEXT] documents.
385 If a fatal error related to a channel or a connection of an
386 arbitrary application occurs, the secure session MUST NOT be
393 Badra & Hajjeh Expires December 2006 [Page 7]
\f
395 Internet-Draft TLS Multiplexing June 2006
400 This section provides guidance to the IANA regarding registration of
401 values related to the TLS protocol.
403 There are name spaces that require registration: the mtls content
404 type, the data_multiplexing extension, and the MTLS message types.
409 [TLS] Dierks, T., et. al., "The TLS Protocol Version 1.0", RFC
412 [TLSExt] Blake-Wilson, S., et. al., "Transport Layer Security
413 (TLS) Extensions", RFC 4346, April 2006.
415 [DTLS] Rescorla, E., Modadugu, N., "Datagram Transport Layer
416 Security", RFC 4347, April 2006.
418 [TLSv1.1] Dierks, T., Rescorla, E., "The TLS Protocol Version 1.1",
419 RFC 4346, April 200P.
421 [SMTPTLS] Hoffman, P., "SMTP Service Extension for Secure SMTP over
422 TLS", RFC 2487, January 1999.
424 [HTTPTLS] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
426 [POPTLS] Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC
429 [SSHCON] Lonvick, C., "SSH Connection Protocol", RFC 4254, January
436 France Email: Mohamad.Badra@enst.fr
439 ESRGroups, Security WG
440 France Email: Ibrahim.Hajjeh@esrgroups.org
449 Badra & Hajjeh Expires December 2006 [Page 8]
\f
451 Internet-Draft TLS Multiplexing June 2006
454 Intellectual Property Statement
456 The IETF takes no position regarding the validity or scope of any
457 Intellectual Property Rights or other rights that might be claimed
458 to pertain to the implementation or use of the technology described
459 in this document or the extent to which any license under such
460 rights might or might not be available; nor does it represent that
461 it has made any independent effort to identify any such rights.
462 Information on the IETF's procedures with respect to rights in IETF
463 Documents can be found in BCP 78 and BCP 79.
465 Copies of IPR disclosures made to the IETF Secretariat and any
466 assurances of licenses to be made available, or the result of an
467 attempt made to obtain a general license or permission for the use
468 of such proprietary rights by implementers or users of this
469 specification can be obtained from the IETF on-line IPR repository
470 at http://www.ietf.org/ipr.
472 The IETF invites any interested party to bring to its attention any
473 copyrights, patents or patent applications, or other proprietary
474 rights that may cover technology that may be required to implement
475 this standard. Please address the information to the IETF at ietf-
478 Disclaimer of Validity
480 This document and the information contained herein are provided on
481 an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
482 REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
483 INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
484 IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
485 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
486 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
490 Copyright (C) The Internet Society (2006). This document is subject
491 to the rights, licenses and restrictions contained in BCP 78, and
492 except as set forth therein, the authors retain all their rights.
496 Funding for the RFC Editor function is currently provided by the
505 Badra & Hajjeh Expires December 2006 [Page 9]
\f