Drop experimental stuff.
[gnutls.git] / doc / protocol / draft-badra-hajjeh-mtls-01.txt
blob247806d18f4363660f8a45a58f4c620f739aebe9
2  
4 Internet Engineering Task Force                                M. Badra 
5 INTERNET DRAFT                                               ENST Paris 
6                                                               I. Hajjeh 
7                                                               ESRGroups 
8 Expires: December 2006                                    June 15, 2006 
9     
10                            MTLS: TLS Multiplexing 
11                       <draft-badra-hajjeh-mtls-01.txt> 
12     
13     
14 Status 
15     
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. 
20     
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 
24    Drafts. 
25     
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." 
30     
31    The list of current Internet-Drafts can be accessed at 
32    http://www.ietf.org/ietf/1id-abstracts.txt 
33     
34    The list of Internet-Draft Shadow Directories can be accessed at 
35    http://www.ietf.org/shadow.html  
36     
37    This Internet-Draft will expire on November 20, 2006. 
38     
39 Copyright Notice 
40     
41    Copyright (C) The Internet Society (2006). All Rights Reserved. 
42     
43 Abstract 
44     
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. 
50     
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 
63    session. 
64     
65 1 Introduction 
66     
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]. 
70     
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. 
76     
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. 
84     
85    The document motivations included: 
86     
87    o   TLS is application protocol-independent. Higher-level protocol  
88        can operate on top of the TLS protocol transparently. 
89     
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  
94        implementations. 
95     
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. 
99     
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. 
104     
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. 
110     
113 Badra & Hajjeh            Expires December 2006                [Page 2] \f
115 Internet-Draft              TLS Multiplexing                  June 2006 
118 1.2 Requirements language 
119     
120    The key words "MUST", "SHALL", "SHOULD", and "MAY", in this document 
121    are to be interpreted as described in RFC-2119. 
122     
123 2 TLS multiplexing overview and considerations 
124     
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. 
129     
130 2.1 Handshake 
131     
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 
138    negotiation. 
139     
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. 
145     
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: 
149     
150        Struct { 
151               ApplicationLayerProtocol alp_list<0..2^22-1>; 
152            } data_multiplexing; 
153     
154        struct { 
155               SenderChannelID sender_channel_id; 
156               ReceiverChannelID receiver_channel_id; 
157               uint32 max_packet_length; 
158               ApplicationpProtocolName apn; 
159            } ApplicationLayerProtocol; 
160     
161        opaque SenderChannelID [2]; 
162        opaque ReceiverChannelID [2]; 
163        Opaque ApplicationpProtocolName<1..2^4>; 
164     
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. 
177     
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'. 
183     
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. 
193     
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 
204    omitted. 
205     
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. 
214     
215   2.1.1. Opening and closing connections 
216     
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. 
221     
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 
232    request: 
233     
234        struct { 
235               uint8 type; 
236               SenderChannelID sender_channel_id; 
237               uint32 max_packet_length;// of the sender of this packet 
238               ApplicationpProtocolName apn; 
239            } RequestEstablishmentChannel; 
240     
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. 
244     
245    The receiver decides whether it can open the channel, and replies 
246    with one of the following messages: 
247     
248        struct { 
249               uint8 type; 
250               SenderChannelID sender_channel_id; 
251               ReceiverChannelID receiver_channel_id; 
252               uint32 max_packet_length; 
253            } RequestEstablishmentSuccess; 
254     
255        struct { 
256               uint8 type; 
257               SenderChannelID sender_channel_id; 
258               opaque error<0..2^16>; 
259            } RequestEchecChannel; 
260     
261    The field "error" conveys a description of the error. 
262     
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. 
270     
271        struct { 
272               uint8 type; 
273               SenderChannelID sender_channel_id; 
274               ReceiverChannelID receiver_channel_id; 
275            } CloseChannel; 
276     
277     
278     
279     
281 Badra & Hajjeh            Expires December 2006                [Page 5] \f
283 Internet-Draft              TLS Multiplexing                  June 2006 
286        struct { 
287               uint8 type; 
288               SenderChannelID sender_channel_id; 
289               ReceiverChannelID receiver_channel_id; 
290            } ConfirmationCloseChannel; 
291     
292 2.2 MTLS sub-protocol 
293     
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. 
299     
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. 
307     
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 
312    new value. 
313     
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. 
319     
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. 
325     
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. 
330     
331     
332     
333     
334     
335     
337 Badra & Hajjeh            Expires December 2006                [Page 6] \f
339 Internet-Draft              TLS Multiplexing                  June 2006 
342      struct { 
343               uint8 type; 
344               uint16 channel_id; 
345               uint8 max_packet_length_changed; 
346               uint32 extra_length; // omitted if the value of the 
347                                    // max_packet_length_changed is 0 
348               uint32 length; 
349               opaque data[MTLSPlaintext.length]; 
350            } MTLSPlaintext; 
351       
352      struct { 
353               uint8 type; 
354               uint16 channel_id; // of the receiver of that packet 
355               uint32 extra_length; 
356            } Acknowledgment; 
357     
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]. 
361     
362    Note: multiple MTLS fragments MAY be coalesced into a single 
363    TLSPlaintext record. 
364     
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 
368    length value. 
369     
370 2.3 MTLS Message Types 
371     
372                 RequestEstablishmentChannel        0x01 
373                 RequestEstablishmentSuccess        0x02 
374                 RequestEchecChannel                0x03 
375                 CloseChannel                       0x04 
376                 ConfirmationCloseChannel           0x05 
377                 MTLSPlaintext                      0x06 
378                 Acknowledgment                     0x07 
379     
380 Security Considerations 
381     
382    Security issues are discussed throughout this document, and in 
383    [TLS], [TLSv1.1], [DTLS] and [TLSEXT] documents. 
384     
385    If a fatal error related to a channel or a connection of an 
386    arbitrary application occurs, the secure session MUST NOT be 
387    resumed. 
388     
389     
390     
393 Badra & Hajjeh            Expires December 2006                [Page 7] \f
395 Internet-Draft              TLS Multiplexing                  June 2006 
398 IANA Considerations  
399     
400    This section provides guidance to the IANA regarding registration of 
401    values related to the TLS protocol. 
402     
403    There are name spaces that require registration: the mtls content 
404    type, the data_multiplexing extension, and the MTLS message types. 
405     
406     
407 References 
408     
409    [TLS]      Dierks, T., et. al., "The TLS Protocol Version 1.0", RFC 
410               2246, January 1999. 
411     
412    [TLSExt]   Blake-Wilson, S., et. al., "Transport Layer Security  
413              (TLS) Extensions", RFC 4346, April 2006. 
414     
415    [DTLS]     Rescorla, E., Modadugu, N., "Datagram Transport Layer  
416               Security", RFC 4347, April 2006. 
417     
418    [TLSv1.1]  Dierks, T., Rescorla, E., "The TLS Protocol Version 1.1",  
419               RFC 4346, April 200P. 
420     
421    [SMTPTLS]  Hoffman, P., "SMTP Service Extension for Secure SMTP over  
422               TLS", RFC 2487, January 1999. 
423     
424    [HTTPTLS]  Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. 
425     
426    [POPTLS]   Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC   
427               2595, June 1999. 
428     
429    [SSHCON]   Lonvick, C., "SSH Connection Protocol", RFC 4254, January  
430               2005. 
431     
432 Author's Addresses 
433     
434    Mohamad Badra 
435    ENST Paris 
436    France                    Email: Mohamad.Badra@enst.fr 
437     
438    Ibrahim Hajjeh 
439    ESRGroups, Security WG 
440    France                    Email: Ibrahim.Hajjeh@esrgroups.org 
441     
449 Badra & Hajjeh            Expires December 2006                [Page 8] \f
451 Internet-Draft              TLS Multiplexing                  June 2006 
454    Intellectual Property Statement 
455     
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. 
464     
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. 
471     
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-
476    ipr@ietf.org. 
477     
478    Disclaimer of Validity 
479     
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. 
487     
488    Copyright Statement 
489     
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. 
493     
494    Acknowledgment 
495     
496    Funding for the RFC Editor function is currently provided by the 
497    Internet Society. 
505 Badra & Hajjeh            Expires December 2006                [Page 9] \f