]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Add.
authorSimon Josefsson <simon@josefsson.org>
Thu, 23 Aug 2007 23:36:17 +0000 (01:36 +0200)
committerSimon Josefsson <simon@josefsson.org>
Thu, 23 Aug 2007 23:36:17 +0000 (01:36 +0200)
doc/protocol/draft-babu-serv-cert-trans-from-proxy-00.txt [new file with mode: 0644]

diff --git a/doc/protocol/draft-babu-serv-cert-trans-from-proxy-00.txt b/doc/protocol/draft-babu-serv-cert-trans-from-proxy-00.txt
new file mode 100644 (file)
index 0000000..a860e87
--- /dev/null
@@ -0,0 +1,381 @@
+
+Network Working Group                                       Babu Neelam
+Internet-Draft                                              Independent
+Intended status: Standards Track                        August 19, 2007
+Expires: February 15, 2008
+
+
+        TLS extension for Proxies to transfer Server certificate
+                 draft-babu-serv-cert-trans-from-proxy-00
+
+Status of this Memo
+
+   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 January 10, 2008.
+
+Copyright Notice
+
+   Copyright (C) The IETF Trust (2007).
+
+Abstract
+
+   Intercepting transparent proxies splice the client-Server connection
+   into two connections: Client-Proxy connection, Proxy-server 
+   connection. On Client-Proxy connection, proxy sends it's certificate
+   to the client. As client is generally (in such a scenario) 
+   pre-configured to accept proxy's certificate, client accepts and 
+   proceeds further with the connection. On Proxy-Server connection, 
+   server sends its certificate to the proxy. Proxy typically doesn't 
+   possess the information (like MX domain name in case of SMTP)    
+   required to validate the certificate. The certificate validation is
+   at times very complex & hence it is better to offload this 
+   reponsibility to the original client itself.
+
+   This document addresses this issue by extending TLS to let proxy 
+   send server's certificate to the client for validation and suggests
+   how client can indicate certificate validation result to the proxy.
+
+Requirements Language
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in RFC 2119 [RFC2119].
+
+Table of Contents
+
+   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
+   2.  Mechanism Overview . . . . . . . . . . . . . . . . . . . . . .  2
+   3.  Need Server certificate extension. . . . . . . . . . . . . . .  2
+   4.  Handshake message to transfer server certificate . . . . . . .  3
+   5.  various scenarios. . . . . . . . . . . . . . . . . . . . . . .  4
+   6.  Security Considerations  . . . . . . . . . . . . . . . . . . .  6
+   7.  Normative References . . . . . . . . . . . . . . . . . . . . .  6
+   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . .  6
+   Intellectual Property and Copyright Statements . . . . . . . . . .  7
+
+
+1.  Introduction
+
+   Today, intercepting transparent proxies are very common in
+   applications (say SMTP, HTTP) using [TLS]. In SMTP, these 
+   intercepting proxies may provide functionality like anti-virus 
+   scanning, anti-spam scanning. HTTP intercepting proxies may provide
+   functionality like anti-virus scanning, URL filtering etc. 
+
+        Client ---- Transparent Proxy -------- Server
+
+   This document defines a way for proxy to send original server's 
+   certificate to the original client and suggests how client can 
+   indicate certificate validation result to the proxy. The mechanism
+   makes use of TLS extension framework defined in [RFC4366] and defines
+   a new TLS handshake message type.
+
+   The clients supporting this extension receive certificates of 
+   intercepting proxy (if interception happens) as well as the original
+   server. So clients should be capable of handling validations on both
+   the certificates.
+
+2.  Mechanism Overview
+
+   This extension defines
+      - A new extension type (need_server_certificate) for extended 
+        client hellos defined in [RFC4366].
+      - A new handshake message (Orig_server_certificate)
+
+3. Need Server certificate extension
+
+   Who should send this extension ?
+      - A client which is configured to request the original server
+        certificate for validation includes an extension of type 
+        "need_server_certificate" in (extended) client hello. 
+      - It is possible that there could be more than one proxy 
+        between client and server:
+
+            Client --- P1 --- P2 ------ Server
+
+        In such a scenario, P1 also includes "need_server_certificate"
+        in (extended) client hello in its connection to P2, unless it 
+        has the knowledge that it is the last proxy between client and
+        server. If a proxy is configured that it is the edge proxy in 
+        client's trust domain, then it need not send this extension.
+
+   How should a receiver respond to this ?
+      - If a proxy intercepts the connection, it SHOULD respond back to
+        the client with "need_server_certificate" extension. 
+      - When there are no intercepting proxies, a server receives this
+        extension. A server which understands this extension should 
+        ignore this. It is not clear from [RFC4366] what a server does
+        when it receives an extension which it doesn't understand. 
+        This item is TBD.
+      - If a proxy which doesn't have the capability to validate server
+        certificate or is configured to offload this responsibility to 
+        the original client doesn't receive "need_server_certificate" 
+        extension, it should return a fatal error like handshake failure
+        or insufficient security (TBD).
+
+   When a proxy responds with "need_server_certificate" extension to the
+   client, proxy MUST send the its certificate as well as the original 
+   server certificate to the client (discussed in section 4).
+   
+
+   How should client handle ServerHello?
+      - If the client receives "need server_certificate" extension in 
+        ServerHello, it MUST expect the nexthop proxy certificate as 
+        well as the original server certificate. Client MUST perform 
+        validations on both proxy certificate as well as original server
+        certificate. If a client doesn't receive server certificate, it 
+        MUST abort the connection.
+      - If the client doesn't receive "need_server_certificate" 
+        extention in SerVerHello, client MUST assume that there is no 
+        proxy in between and MUST perform server certificate validations
+        on the received certificate. 
+
+   The "extension_data" field of this extension in both clientHello as 
+   well as ServerHello SHALL be empty.
+
+   Note on backward compatibility: Suppose a client supports this 
+   extension, but a intercepting proxy or the actual server doesn't 
+   understand extended hello or "need_server_certificate", client 
+   MUST proceed with the connection and MUST perform server certificate 
+   validations on the received certificate. By validating this way, 
+   clientcan deny connections from any proxies (because certificate 
+   validation fails) which do not support this mechanism, but still 
+   accept connections from server which do not support this.
+
+4. Handshake message to transfer server certificate
+
+   This docuemnt suggests the use of a new handshake message, 
+   "orig_server_certificate" to transfer the original server's 
+   certificate to the client. The new handshake message structure 
+   therefore becomes:
+
+      enum {
+          hello_request(0), client_hello(1), server_hello(2),
+          certificate(11), server_key_exchange (12),
+          certificate_request(13), server_hello_done(14),
+          certificate_verify(15), client_key_exchange(16),
+          finished(20), certificate_url(21), certificate_status(22),
+          orig_server_certificate(23),
+          (255)
+      } HandshakeType;
+
+      struct {
+          HandshakeType msg_type;    /* handshake type */
+          uint24 length;             /* bytes in message */
+          select (HandshakeType) {
+              case hello_request:       HelloRequest;
+              case client_hello:        ClientHello;
+              case server_hello:        ServerHello;
+              case certificate:         Certificate;
+              case server_key_exchange: ServerKeyExchange;
+              case certificate_request: CertificateRequest;
+              case server_hello_done:   ServerHelloDone;
+              case certificate_verify:  CertificateVerify;
+              case client_key_exchange: ClientKeyExchange;
+              case finished:            Finished;
+              case certificate_url:     CertificateURL;
+              case certificate_status:  CertificateStatus;
+              case orig_server_certificate: Certificate; /*new*/
+          } body;
+      } Handshake;
+
+   The structure of Certificate is defined in [RFC4346].
+
+   If proxy responded to the client with "need_server_certificate" 
+   extension, this message MUST be sent immediately after the 
+   "Certificate" handshake message in Client-Proxy connection.
+
+   The client MUST perform validations on the received proxy 
+   certificate as well as the server certificate. If either proxy or
+   server certificate is not valid, client should respond with 
+   certificate related error messages defined in [RFC4346]. On 
+   reception of such an error, proxy MUST close the Proxy-Server 
+   connection.
+   
+   It should be noted that proxy transparency is lost at TLS layer 
+   due to the fact that client is sent both proxy as well as original
+   server certificate for validation. Though transparency is not 
+   possible at TLS layer, application protocols can still remain 
+   transparent to the proxy operation.
+
+5. various scenarios
+
+   Client, Proxy understand this extension. 
+
+     Client                   Proxy                 Server
+
+     ClientHelo
+     (with 
+      "need_orig_server") -->   
+                             ClientHelo
+                             (with 
+                             "need_orig_server")--->
+                                                  ServerHelo
+                                                (without 
+                                                "need_orig_server")
+                                                  Certificate
+                                                  ServerkeyExchange
+                                            <---  ServerhelloDone
+                             ServerHelo
+                             (with "need_orig_server")
+                             Certificate
+                             orig_server_certificate
+                             ServerkeyExchange
+                         <-- ServerHelloDone
+      ClientKeyExchange
+      CertificateVerify
+      [ChangeCipherSpec]
+      [Finished]         -->
+                             [ChangeCipherSpec]
+                         <-- [Finished]
+                             [ChangeCipherSpec]
+                             [Finished]      -->
+                                                [ChangeCipherSpec]
+                                            <-- [Finished]
+                                  
+
+   
+   Client understands this extension. Proxy doesn't. In this case, 
+   certificate validation fails on the received proxy certificate.
+
+
+     Client                   Proxy                 Server
+
+     ClientHelo
+     (with 
+      "need_orig_server") -->   
+                             ServerHelo
+                             (without "need_orig_server")
+                             Certificate
+                             orig_server_certificate
+                             ServerkeyExchange
+                         <-- ServerHelloDone
+     Certificate error
+                                  
+
+
+   Client doesn;t understand this extension, but proxy is configured
+   to offload original server certificate responsibility to the 
+   original client:
+
+     Client                   Proxy                 Server
+
+     ClientHelo
+     (with 
+      "need_orig_server") -->   
+                             Fatal Error
+
+   TBD: Two proxies between client and server. Client as well as two
+   proxies undertsand this extension.
+
+6.  IANA Considerations
+
+   This document (if approved) requests IANA to allocate 
+   "need-server_certificate" TLS extension and 
+   "Orig_server_certificate" handhsake message.
+
+   Note to RFC Editor: this section may be removed on publication as an
+   RFC.
+
+7.  Security Considerations
+
+   Though this extension equips clients with an ability to validate
+   original server certificate as well as it's nexthop, it doesn't 
+   provide a mechanism to transmit certficates of any proxies between
+   the first proxy and the original server. It is assumed that client
+   trusts the first proxy to either not allow any other proxies in 
+   between or to allow only a proxy which is in the trusted domain.
+
+8.  Normative References
+
+   [RFC4346] The Transport Layer Security (TLS) Protocol Version 1.1.
+             T.Dierks, E. Rescorla. April 2006. 
+   [RFC4366] Transport Layer Security (TLS) Extensions. 
+             S. Blake-Wilson, M.Nystrom, D. Hopwood, J. Mikkelsen,
+             T. Wright. April 2006. 
+   [RFC2818] HTTP Over TLS. E. Rescorla. May 2000. 
+   [RFC3207] SMTP Service Extension for Secure SMTP over Transport 
+             Layer Security. P. Hoffman. February 2002.
+
+Author's Address
+
+   Babu Neelam
+   Intoto Software India Private Ltd.
+   8-3-1111/2, kesava nagar colony,
+   sriniagar colony main road,
+   punjagutta,
+   Hyderabad,
+   India.
+
+   Email: babun@intoto.com
+
+   Comments are solicited and should be addressed to the working 
+   group's mailing list at ietf-http-wg@w3.org and/or the author(s).
+
+
+Full Copyright Statement
+
+   Copyright (C) The IETF Trust (2007).
+
+   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.
+
+   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, THE IETF TRUST 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.
+
+
+Intellectual Property
+
+   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 procedures with respect to rights in RFC 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.
+
+
+Acknowledgment
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).