the new makeinfo sets the FLOAT_NAME by default.
[gnutls.git] / doc / protocol / draft-badra-hajjeh-mtls-03.txt
bloba4b3fe5036a0ae41e1ea6891ef82f6819560f6a0
1  
3 TLS Working Group                                              M. Badra 
4 Internet-Draft                                         LIMOS Laboratory 
5 Intended status: Standards Track                              I. Hajjeh 
6 Expires:  April 27, 2008                                      ESRGroups 
7                                                        October 25, 2007 
8     
9     
10                            MTLS: TLS Multiplexing 
11                       <draft-badra-hajjeh-mtls-03.txt> 
12     
13 Status of this Memo 
14     
15    By submitting this Internet-Draft, each author represents that any 
16    applicable patent or other IPR claims of which he or she is aware 
17    have been or will be disclosed, and any of which he or she becomes 
18    aware will be disclosed, in accordance with Section 6 of BCP 79. 
19     
20    Internet-Drafts are working documents of the Internet Engineering 
21    Task Force (IETF), its areas, and its working groups. Note that 
22    other groups may also distribute working documents as Internet 
23    Drafts.  
24     
25    Internet-Drafts are draft documents valid for a maximum of six 
26    months and may be updated, replaced, or obsoleted by other documents 
27    at any time. It is inappropriate to use Internet-Drafts as reference 
28    material or to cite them other than as "work in progress." 
29     
30    The list of current Internet-Drafts can be accessed at 
31    http://www.ietf.org/ietf/1id-abstracts.txt  
32     
33    The list of Internet-Draft Shadow Directories can be accessed at 
34    http://www.ietf.org/shadow.html   
35     
36    This Internet-Draft will expire on April 27, 2008. 
37     
38 Copyright Notice  
39     
40    Copyright (C) The IETF Trust (2007).  
41     
42 Abstract 
43     
44    The Transport Layer Security (TLS) standard provides connection 
45    security with mutual authentication, data confidentiality and 
46    integrity, key generation and distribution, and security parameters 
47    negotiation. However, missing from the protocol is a way to 
48    multiplex application data over a single TLS session. 
49     
50    This document defines MTLS, a new TLS sub-protocol running over TLS 
51    (or DTLS) Record protocol. The MTLS design provides application 
52    multiplexing over a single TLS (or DTLS) session. Therefore, instead 
53    of associating a TLS connection with each application, MTLS allows 
56 Badra & Hajjeh            Expires April 2008                   [Page 1] \f
58 Internet-Draft             TLS Multiplexing                October 2007 
60    several applications to protect their exchanges over a single TLS 
61    session. 
62     
63 1. Introduction 
64     
65    HTTP over TLS [HTTPTLS], POP over TLS and IMAP over TLS [POPTLS] are 
66    examples of securing, respectively HTTP, POP and IMAP data exchanges 
67    using the TLS protocol [TLS]. 
68     
69    TLS ([TLS], [DTLS]) is the most deployed security protocol for 
70    securing exchanges, for authenticating entities and for generating 
71    and distributing cryptographic keys. However, what is missing from 
72    the protocol is the way to multiplex application data over the same 
73    TLS session. 
74     
75    Actually, TLS (or DTLS) clients and servers MUST establish a TLS (or 
76    DTLS) session for each application they want to run over a transport 
77    layer. However, some applications may agree or be configured to use 
78    the same security policies or parameters (e.g. authentication method 
79    and cipher_suite) and then to share a single TLS session to protect 
80    their exchanges. In this way, this document extends TLS to allow 
81    application multiplexing over TLS. 
82     
83    The document motivations included: 
84     
85    o   TLS is application protocol-independent. Higher-level protocol  
86        can operate on top of the TLS protocol transparently. 
87     
88    o   TLS is a protocol of a modular nature. Since TLS is developed in  
89        four independent protocols, the approach defined in this  
90        document can be added by extending the TLS protocol and with a  
91        total reuse of pre-existing TLS infrastructures and  
92        implementations. 
93     
94    o   It provides a secure VPN tunnel over a transport layer. Unlike   
95        "ssh-connection" [SSHCON], MTLS can run over unreliable  
96         transport protocols, such as UDP. 
97     
98    o   Establishing a single session for a number of applications  
99        -instead of establishing a session per application- reduces  
100        resource consumption, latency and messages flow that are 
101        associated with executing simultaneous TLS sessions. 
102     
103    o   TLS can not forbid an intruder to analyze the traffic and cannot  
104        protect data from inference. Thus, the intruder can know the  
105        type of application data transmitted through the TLS session.  
106        However, the extension defined in this document allows, by its  
107        design, data protection against inference. 
108     
109     
110     
112 Badra & Hajjeh            Expires April 2008                   [Page 2] \f
114 Internet-Draft             TLS Multiplexing                October 2007 
116 1.2. Requirements language 
117     
118    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
119    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 
120    document are to be interpreted as described in [KEYWORDS]. 
121     
122 2. TLS multiplexing overview and considerations 
123     
124    This document defines a new TLS sub-protocol called Multiplexing TLS 
125    (MTLS) to handle data multiplexing, and it specifies the content 
126    type mtls(TBA). It extends also TLS with a new extension type (TBA) 
127    allowing the negotiation of data multiplexing features. 
128     
129 2.1. Handshake 
130     
131    This document defines an extension of type "data_multiplexing". The 
132    "extension_data" field of this extension is zero-length. 
133     
134    Based on the TLS Extensions [TLSEXT], a client and a server can, in 
135    an ordinary TLS handshake, negotiate the future use of MTLS. If the 
136    client does attempt to initiate a TLS connection using MTLS with a 
137    server that does not support it, it will be automatically alerted. 
138    For servers aware of MTLS but not wishing to use it, it will 
139    gracefully revert to an ordinary TLS handshake or stop the 
140    negotiation. 
141     
142    The negotiation usually starts with the client determining whether 
143    the server is capable of and willing to use MTLS or not. In order to 
144    allow a TLS client to negotiate the application multiplexing 
145    functionality, a new extension type SHOULD be added to the Extended 
146    Client and Extended Server Hello messages. 
147     
148    If the server is able of and willing to use the "data_multiplexing" 
149    extension, it MUST reply with an empty extension of the same type. 
150    Once the Handshake is complete, the client and the server SHOULD 
151    establish and manage many application channels using the 
152    requests/responses defined below. 
153     
154 2.1.1. Opening and closing connections 
155     
156    Once the Handshake is complete, both the client and the server can 
157    start data multiplexing using a set of requests/responses defined 
158    below. All requests/requests will pass through MTLS layer and are 
159    formatted into MTLS packets, depending on each request/response. 
160     
161    The sender MAY request the opening of many channels. For each 
162    channel, the MTLS layer generates and sends the following request: 
163     
164     
165     
166     
168 Badra & Hajjeh            Expires April 2008                   [Page 3] \f
170 Internet-Draft             TLS Multiplexing                October 2007 
172        struct { 
173               uint8 type; 
174               opaque sender_channel_id[2]; 
175               uint32 sender_window_length; 
176               uint32 sender_max_packet_length; 
177               opaque source_address_machine<4..7>; 
178               opaque source_port[2]; 
179               opaque destination_address_machine<4..7>; 
180               opaque destination_port[2]; 
181            } RequestEstablishmentChannel; 
182     
183    The field "type" specifies the MTLS packet type (types are 
184    summarized below), the "max_packet_length" and the 
185    "sender_channel_id" are used as described below. The 
186    "source_address_machine" MAY carry either the numeric IP address or 
187    the domain name of the host from where the application originates 
188    the data multiplexing request and the "port" is the port on the host 
189    from where the connection originated. 
190     
191    The sender initializes its "window_length" with the data length (in 
192    octets), specifying how many bytes the receiver can maximally send 
193    on the channel before receiving a new window length (available free 
194    space). Each end of the channel establishes a "receive buffer" and a 
195    "send buffer". 
196     
197    The sender initializes its "max_packet_length" with the data length 
198    (in octets), specifying the maximal packet's length in octets the 
199    receiver can send on the channel. 
200     
201    The "destination_address_machine" and "destination_port" specify the 
202    TCP/IP host and port where the recipient should connect the channel. 
203    The "destination_address_machine" MAY be either a domain name or a 
204    numeric IP address. 
205     
206    The receiver decides whether it can open the channel, and replies 
207    with one of the following messages: 
208     
209        struct { 
210               uint8 type; 
211               opaque sender_channel_id[2]; 
212               opaque receiver_channel_id[2]; 
213               uint32 receiver_window_length; 
214               uint32 max_packet_length; 
215            } RequestEstablishmentSuccess; 
216     
217        struct { 
218               uint8 type; 
219               opaque sender_channel_id[2]; 
220               opaque error<0..2^16>; 
221            } RequestEchecChannel; 
222     
224 Badra & Hajjeh            Expires April 2008                   [Page 4] \f
226 Internet-Draft             TLS Multiplexing                October 2007 
228    The field "error" conveys a description of the error. 
229     
230    If an error occurs at the MTLS layer, the established secure session 
231    is still valid and no alert of any type is sent by the TLS Record. 
232     
233    Each MTLS channel has its identifier computed as:  
234     
235              channel_id = sender_channel_id" + "receiver_channel_id 
236     
237    Where "+" indicates concatenation. 
238     
239    The following packet MAY be sent to notify the receiver that the 
240    sender will not send any more data on this channel and that any data 
241    received after a closure request will be ignored. The sender of the 
242    closure request MAY close its "receive buffer" without waiting for 
243    the receiver's response. However, the receiver MUST respond with a 
244    confirmation of the closure and close down the channel immediately, 
245    discarding any pending writes. 
246     
247        struct { 
248               uint8 type; 
249               opaque channel_id[4]; 
250            } CloseChannel; 
251     
252        struct { 
253               uint8 type; 
254               opaque channel_id[4]; 
255            } ConfirmationCloseChannel; 
256     
257 2.2. MTLS sub-protocol 
258     
259    The structure of the MTLS packet is described below. The 
260    "sender_channel_id" and "receiver_channel_id" are the same gererated 
261    during the connection establishment. The length conveys the data 
262    length of the current packet. 
263     
264    Each entity maintains its "max_packet_length" (that is originally 
265    initialized during the connection establishment) to a value not 
266    bigger than the maximum size of this entity's "receive buffer". For 
267    each received packet, the entity MUST subtract the packet's length 
268    from the "max_packet_length". The result is always positive since 
269    the packet's length is always less than or equal to the current 
270    "max_packet_length". 
271     
272    The free space of the "receive buffer" MAY increase in length. 
273    Consequently, the entity MUST inform the other end about this 
274    increase, allowing the other entity to send packet with length 
275    bigger than the old "max_packet_length" but smaller or equal than 
276    the new value. 
277     
280 Badra & Hajjeh            Expires April 2008                   [Page 5] \f
282 Internet-Draft             TLS Multiplexing                October 2007 
284    The entity MAY indicate this increase by sending an Acknowledgment 
285    packet. The Acknowledgment packet carries the available free space 
286    ("free_space" field in octets) the receiver of that packet can send 
287    on the channel before receiving a new window length. 
288     
289    If the length of the "receive buffer" does not change, 
290    Acknowledgment packet will never be sent. 
291     
292    In the case where the "receive buffer" of an entity fills up, the 
293    other entity MUST wait for an Acknowledgment packet before sending 
294    any more MTLSPlaintext packets. 
295     
296       struct { 
297               uint8 type; 
298               opaque channel_id[4]; 
299               uint32 length; 
300               opaque data[MTLSPlaintext.length]; 
301             } MTLSPlaintext; 
302     
303       struct { 
304               uint8 type; 
305               opaque channel_id[4]; 
306               uint32 free_space; 
307            } Acknowledgment; 
308     
309    The TLS Record Layer receives data from MTLS, supposes it as 
310    uninterpreted data and applies the fragmentation and the 
311    cryptographic operations on it, as defined in [TLS]. The type is set 
312    to mtls(TBA). 
313     
314    Note: multiple MTLS fragments MAY be coalesced into a single 
315    TLSPlaintext record. 
316     
317    Received data is decrypted, verified, decompressed, and reassembled, 
318    then delivered to MTLS sub-protocol. Next, the MTLS sends data to 
319    the appropriate application using the channel identifier and the 
320    length value. 
321     
322       enum { 
323             change_cipher_spec(20), alert(21), handshake(22), 
324             application_data(23), mtls(TBA), (255) 
325           } ContentType; 
326     
327 2.3. MTLS Message Types 
328     
329    Additional message types can be supported by MTLS. 
330     
331                 RequestEstablishmentChannel        0x01 
332                 RequestEstablishmentSuccess        0x02 
333                 RequestEchecChannel                0x03 
334                 CloseChannel                       0x04 
336 Badra & Hajjeh            Expires April 2008                   [Page 6] \f
338 Internet-Draft             TLS Multiplexing                October 2007 
340                 ConfirmationCloseChannel           0x05 
341                 MTLSPlaintext                      0x06 
342                 Acknowledgment                     0x07 
343     
344 3. Security Considerations 
345     
346    Security issues are discussed throughout this document, and in 
347    [TLS], [DTLS] and [TLSEXT] documents. 
348     
349    If a fatal error related to any channel or a connection of an 
350    arbitrary application occurs, the secure session MUST NOT be 
351    resumed. This is logic since the Record protocol does not 
352    distinguish between the MTLS channels. However, if an error occurs 
353    at the MTLS layer, both parties immediately close the related 
354    channels, but not the TLS session (no alert of any type is sent by 
355    the TLS Record). 
356     
357 4. IANA Considerations  
358     
359    This section provides guidance to the IANA regarding registration of 
360    values related to the TLS protocol. 
361     
362    There are name spaces that require registration: the mtls content 
363    type, the data_multiplexing extension, and the MTLS message types. 
364     
365 5. References 
366     
367 5.1. Normative References 
368     
369    [TLS]      Dierks, T., Rescorla, E., "The TLS Protocol Version 1.1",  
370               RFC 4346, April 200P. 
371     
372    [TLSEXT]   Blake-Wilson, S., et. al., "Transport Layer Security  
373              (TLS) Extensions", RFC 4346, April 2006. 
374     
375    [DTLS]     Rescorla, E., Modadugu, N., "Datagram Transport Layer  
376               Security", RFC 4347, April 2006. 
377     
378    [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate 
379               Requirement Levels", RFC 2119, March 1997. 
380     
381 5.2. Informative References 
382     
383    [HTTPTLS]  Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. 
384     
385    [POPTLS]   Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC   
386               2595, June 1999. 
387     
388    [SSHCON]   Lonvick, C., "SSH Connection Protocol", RFC 4254, January  
389               2005. 
390     
392 Badra & Hajjeh            Expires April 2008                   [Page 7] \f
394 Internet-Draft             TLS Multiplexing                October 2007 
396 Author's Addresses 
397     
398    Mohamad Badra 
399    LIMOS Laboratory - UMR6158, CNRS 
400    France                    Email: badra@isima.fr 
401     
402    Ibrahim Hajjeh 
403    ESRGroups, Security WG 
404    France                    Email: Ibrahim.Hajjeh@esrgroups.org 
405     
406 Full Copyright Statement  
407         
408    Copyright (C) The IETF Trust (2007).   
409     
410    This document is subject to the rights, licenses and restrictions 
411    contained in BCP 78, and except as set forth therein, the authors 
412    retain all their rights. 
413     
414    This document and the information contained herein are provided on 
415    an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE 
416    REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE 
417    IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL 
418    WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY 
419    WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE 
420    ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS 
421    FOR A PARTICULAR PURPOSE. 
422     
423    Intellectual Property   
424     
425    The IETF takes no position regarding the validity or scope of any 
426    Intellectual Property Rights or other rights that might be claimed 
427    to pertain to the implementation or use of the technology described 
428    in this document or the extent to which any license under such might 
429    or might not be available; nor does it represent that it has made 
430    any independent effort to identify any such rights. Information on 
431    the procedures with respect to rights in RFC documents can be found 
432    in BCP 78 and BCP 79.  
433     
434    Copies of IPR disclosures made to the IETF Secretariat and any 
435    assurances of licenses to be made available, or the result of an 
436    attempt made to obtain a general license or permission for the use 
437    of such proprietary rights by implementers or users of this 
438    specification can be obtained from the IETF on-line IPR repository 
439    at http://www.ietf.org/ipr. 
440     
441    The IETF invites any interested party to bring to its attention any 
442    copyrights, patents or patent applications, or other proprietary 
443    rights that may cover technology that may be required to implement 
444    this standard.  Please address the information to the IETF at ietf-
445    ipr@ietf.org.   
446     
448 Badra & Hajjeh            Expires April 2008                   [Page 8] \f
450 Internet-Draft             TLS Multiplexing                October 2007 
452    Acknowledgement   
453     
454    Funding for the RFC Editor function is provided by the IETF 
455    Administrative Support Activity (IASA). 
504 Badra & Hajjeh            Expires April 2008                   [Page 9] \f