Internet Engineering Task Force                                M. Badra
INTERNET DRAFT                                               ENST Paris
                                                              I. Hajjeh
                                                              ESRGroups
Expires: March 2006                                    October 10, 2005

                             TLS Multiplexing
                     <draft-badra-hajjeh-mtls-00.txt>


Status

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that
   other groups may also distribute working documents as Internet
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsoleted by other documents
   at any time. It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This Internet-Draft will expire on March 10, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   TLS is the famous protocol that provides authentication and data
   protection for communication between two entities. However, missing
   from the protocol is a way to multiplex application data over the
   same TLS session.

   This document defines a new TLS sub-protocol called MTLS running
   over TLS (or DTLS) Record protocol. The MTLS design provides
   application multiplexing over a single TLS session. Instead of
   associating a TLS connection with each application, MTLS allows

Badra & Hajjeh               Expires March 2006                [Page 1]


INTERNET-DRAFT                TLS Multiplexing             October 2005


   several applications to protect their exchanges over a single TLS
   session.

1 Introduction

   SMTP over TLS [SMTPTLS], HTTP over TLS [HTTPTLS], POP over TLS and
   IMAP over TLS [POPTLS] are examples of securing, respectively, SMTP,
   HTTP, POP and IMAP data exchanges using the TLS protocol [TLS].

   TLS ([TLS], [TLSv1.1]) is the most deployed security protocol for
   securing exchanges, authenticating entities and for generating and
   distributing cryptographic keys. However, what is missing from the
   protocol is the way to multiplex application data over the same TLS
   session.

   Actually, TLS (or DTLS [DTLS]) clients and servers MUST establish a
   TLS (or DTLS) session for each application they want to run over TCP
   (or UDP). However, some applications may agree or be configured to
   use the same security policies or parameters (f.g. authentication
   method and cipher_suite) and then to share one and only one TLS
   session to protect their exchanges. In this way, this document
   extends TLS to allow an application multiplexing functionality over
   TLS.

   The document motivations included:

   o   TLS is application protocol-independent. Higher-level protocol
       can operate on top of the TLS protocol transparently.

   o   TLS is a modular nature protocol. Since TLS is developed in four
       independent protocols, the approach defined in this document can
       be added by extending the TLS protocol and with a total
       reuse of pre-existing TLS infrastructures and implementations.

   o   It provides a secure VPN tunnel over a transport layer.

   o   Establishing a single session for a number of applications
       reduces resource consumption, latency and messages flow that are
       associated with executing simultaneous TLS sessions.

   o   TLS can not forbid an intruder to analyze the traffic and cannot
       protect data from inference. Thus, the intruder can know the
       type of application data transmitted through the TLS session.
       However, the extension defined in this document allows, by its
       design, data protection against inference.

1.2 Requirements language

   The key words "MUST", "SHALL", "SHOULD", and "MAY", in this document
   are to be interpreted as described in RFC-2119.

Badra & Hajjeh               Expires March 2006                [Page 2]


INTERNET-DRAFT                TLS Multiplexing             October 2005


2 TLS multiplexing overview and considerations

   This document defines a new TLS sub-protocol called Multiplexing TLS
   (MTLS) to handle data multiplexing, and it specifies the content
   type mtls(26) for this sub-protocol.

   MTLS communication can take place over TCP or UDP. The default port
   is TBC, but other ports can be used.

2.1 Handshake

   Based on the TLS Extensions [TLSExt], a client and a server can, in
   an ordinary TLS handshake, negotiate the future use of MTLS. If the
   client does attempt to initiate a TLS connection using MTLS with a
   server that does not support it, it will be automatically alerted.
   For servers aware of MTLS but not wishing to use it, it will
   gracefully revert to an ordinary TLS handshake or stop the
   negotiation.

   The negotiation starts usually with the client determining whether
   the server is capable of and willing to use MTLS or not. In order to
   allow a TLS client to negotiate the application multiplexing
   functionality, a new extension type SHOULD be added to the Extended
   Client and Extended Server Hello messages.

   This document defines an extension of type
   "application_layer_protocol". The "extension_data" field of this
   extension contains a "data_multiplexing", where:

       Struct {
              ApplicationLayerProtocol alp_list<0..2^20-1>;
           } data_multiplexing;

       struct {
              ApplicationpProtocolName apn;
              select (Version)
                 case { 3, 1 }:// TLS Version 1.0
                   TCPPort tcp_port;
                 case { 3, 2 }:// TLS Version 1.1
                   TCPPort tcp_port;
                 case { 254, 255 }:// Datagram TLS Version 1.0
                   UDPPort udp_port;
           } ApplicationLayerProtocol;

       opaque TCPPort[2];
       opaque UDPPort[2];
       Opaque ApplicationpProtocolName<1..16>;

   tcp_port (respectively udp_port) is the application port number at
   the server side. The client MUST use as destination ports, the TCP
   (respectively UDP) port numbers that are assigned by IANA.
Badra & Hajjeh               Expires March 2006                [Page 3]


INTERNET-DRAFT                TLS Multiplexing             October 2005


   Application layer running on unreliable links MUST be negotiated in
   a separate session using the DTLS Handshake [DTLS].

   Note: if the server agrees, the client SHOULD establish a single TLS
   (respectively DTLS) session for all applications it wishes to run
   over TCP (respectively UDP). In this case, the client SHOULD send a
   data multiplexing extension containing "ALL" as
   ApplicationpProtocolName value and "NULL" as TCPPort (or UDPPort)
   value. If the server is not able to negotiate such session, it
   replays with a list of applications (names and ports) it can accept
   to run through a single TLS session, falls back on an ordinary TLS
   handshake or stops the negotiation.

  2.1.1. Multi-connections during application session

   Once the establishment is complete, the client MAY open many
   connections related to an arbitrary application over the secure
   session. In this case, the application client MUST locally reserve a
   port number for each connection. Next, the client application sends
   its request to the MTLS client which is listening on the TBC port
   number. This latter will check if it has an established secure
   session with the requested hostname (the server). If then it checks
   if the application protocol name has been accepted to run over MTLS,
   before sends the request to the MTLS server.

2.2 MTLS sub-protocol

   The structure of MTLS packet is described below. The first 8 bytes
   of the packet represent the source and the destination ports of the
   connexion, and the length contains the length of the MTLS data.

   enum {
        change_cipher_spec(20), alert(21), handshake(22),
        application_data(23), mtls(26), (255)
     } ContentType;

   struct {
          uint32 SourcePort
          uint32 DestinationPort
          uint16 length;
          opaque data[MTLSPlaintext.length];
       } MTLSPlaintext;

   The TLS Record Layer receives data from MTLS, supposes it as
   uninterpreted data and applies the fragmentation and the
   cryptographic operations on it, as defined in [TLS].

   Note: multiple MTLS fragments MAY be coalesced into a single
   TLSPlaintext record.

Badra & Hajjeh               Expires March 2006                [Page 4]


INTERNET-DRAFT                TLS Multiplexing             October 2005


   Received data is decrypted, verified, decompressed, and reassembled,
   then delivered to MTLS sub-protocol. Next, the MTLS sends data to
   the appropriate application using the source and destination port
   numbers and the length value.

Security Considerations

   Security issues are discussed throughout this document, and in
   [TLS], [TLSv1.1], [DTLS] and [TLSEXT] documents.

   If a fatal error related to a connexion of an arbitrary application
   is occurred, the secure session MUST NOT be resumed.

IANA Considerations

   This document requires IANA to allocate the TBC TCP and UDP port
   numbers.

Acknowledgment

   This document defined TLS Multiplexing for applications running over
   IP. Beyond that definition, generic options may be added to future
   versions of the current document.

References

   [TLS]      Dierks, T., et. al., "The TLS Protocol Version 1.0", RFC
              2246, January 1999.

   [TLSExt]   Blake-Wilson, S., et. al., "Transport Layer Security
             (TLS) Extensions", RFC 3546, June 2003.

   [DTLS]     Rescorla, E., Modadugu, N., "Datagram Transport Layer
              Security", draft-rescorla-dtls-05.txt, June 2004.

   [TLSv1.1]  Dierks, T., Rescorla, E., "The TLS Protocol Version 1.1",
              draft-ietf-tls-rfc2246-bis-13.txt, June 2005

   [SMTPTLS]  Hoffman, P., "SMTP Service Extension for Secure SMTP over
              TLS", RFC 2487, January 1999.

   [HTTPTLS]  Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.

   [POPTLS]   Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC
              2595, June 1999.

Author's Addresses

   Mohamad Badra
   ENST Paris
   France                    Email: Mohamad.Badra@enst.fr

Badra & Hajjeh               Expires March 2006                [Page 5]


INTERNET-DRAFT                TLS Multiplexing             October 2005


   Ibrahim Hajjeh
   ESRGroups, Security WG
   France                    Email: Ibrahim.Hajjeh@esrgroups.org

   Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed
   to pertain to the implementation or use of the technology described
   in this document or the extent to which any license under such
   rights might or might not be available; nor does it represent that
   it has made any independent effort to identify any such rights.
   Information on the IETF's procedures with respect to rights in IETF
   Documents can be found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use
   of such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository
   at http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard. Please address the information to the IETF at ietf-
   ipr@ietf.org.

   Disclaimer of Validity

   This document and the information contained herein are provided on
   an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
   REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
   INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

   Copyright Statement

   Copyright (C) The Internet Society (2004). This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.

   Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.
Badra & Hajjeh               Expires March 2006                [Page 6]