Internet Engineering Task Force I. Hajjeh ESRGroups M. Badra ISIMA Laboratory Expires: April 2007 November, 2006 Identity Protection Ciphersuites for Transport Layer Security <draft-hajjeh-tls-identity-protection-00.txt> 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 April 2007. Copyright Notice Copyright (C) The Internet Society (2006). All Rights Reserved. Abstract TLS defines several ciphersuites providing authentication, data protection and session key exchange between two communicating entities. Some of these ciphersuites are used for completely anonymous key exchange, in which neither party is authenticated. However, they are vulnerable to man-in-the-middle attacks and are therefore deprecated. This document defines a set of ciphersuites to add client identity protection to the Transport Layer Security (TLS) protection. Hajjeh & Badra Expires April 2007 [Page 1] Internet-draft Identity Protection Ciphersuites for TLS November 2006 1. Introduction TLS is the most deployed security protocol for securing exchanges. It provides end-to-end secure communications between two entities with authentication and data protection. TLS supports three authentication modes: authentication of both parties, only server-side authentication, and anonymous key exchange. For each mode, TLS specifies a set of ciphersuites. However, anonymous ciphersuites are strongly discouraged because they cannot prevent man-in-the-middle attacks. Client identity protection may be established by changing the order of the messages that the client sends after receiving ServerHelloDone [CORELLA]. This is done by sending the ChangeCipherSpec message before the Certificate and the CertificateVerify messages and after the ClientKeyExchange message. However, it requires a major change to TLS machine state as long as a new TLS version. Client identity protection may also be done through a EDH exchange before establishing an ordinary handshake with identity information [RESCORLA]. This wouldn't however be secure enough against active attackers and wouldn't be favorable for some environments (e.g. mobile), due to the additional cryptographic computations. Client identity protection may be also possible, assuming that the client permits renegotiation after the first server authentication. However, this requires more cryptographic computations and augments significantly the number of rounds trips. Finally, client identity protection may be realized by exchanging a TLS extension that negotiates the symmetric encryption algorithm to be used for client certificate encrypting/decrypting [EAPTLSIP]. This solution may suffer from interoperability issues related to TLS Extensions, TLS 1.0 and TLS 1.1 implementations, as described in [INTEROP]. This document defines a set of ciphersuites to add client identity protection to TLS protocol. Client identity protection is provided by symmetrically encrypting the client certificate with a key derived from the SecurityParameters.master_secret, SecurityParameters.server_random and SecurityParameters.client_random. The symmetric encryption algorithm is set to the cipher algorithm of the ServerHello.cipher_suite. 1.2. Requirements language The key words "MUST", "MUST NOT" and "MAY" in this document are to be interpreted as described in RFC-2119. Hajjeh & Badra Expires April 2007 [Page 2] Internet-draft Identity Protection Ciphersuites for TLS November 2006 2. TLS Identity Protection overview This document specifies a set of ciphersuites for TLS. These ciphersuites reuse existing key exchange algorithms that require based-certificates authentication, and reuse also existing MAC, stream and bloc ciphers algorithms from [TLS] and [TLSCTR], [TLSECC], [TLSAES] and [TLSCAM]. Their names include the text "IP" to refer to the client identity protection. An example is shown below. CipherSuite Key Exchange Cipher Hash TLS_IP_RSA_EXPORT_WITH_RC4_40_MD5 RSA RC4 40 MD5 TLS_IP_DHE_DSS_WITH_AES_128_CBC_SHA DHE AES 128_CBC SHA If the client has not a certificate with a type appropriate for one of the supported cipher key exchange algorithms or if the client will not be able to send such a certificate, it MUST NOT include any ciphersuite with client identity protection in the ClientHello.cipher_suites. If the server selects a ciphersuite with client identity protection, the server MUST request a certificate from the client. If the server selects one of the ciphersuites defined in this document, the client MUST encrypt its certificate using the symmetric algorithm selected by the server from the list in ClientHello.cipher_suites and a key derived from the SecurityParameters.master_secret (see section 3 for the key computation). In the case of DH_DSS and DH_RSA ciphersuites with client authentication, the ClientKeyExchange message always contains explicit Diffie-Hellman public value and it is possible to correlate sessions by the same client. Consequently, DH_DSS and DH_RSA are not currently omitted from this document. For EDH, the client MUST explicitly send its EDH public value in the ClientKeyExchange message. Hajjeh & Badra Expires April 2007 [Page 3] Internet-draft Identity Protection Ciphersuites for TLS November 2006 Client Server ClientHello --------> ServerHello Certificate ServerKeyExchange* CertificateRequest <-------- ServerHelloDone ClientKeyExchange {Certificate} CertificateVerify [ChangeCipherSpec] Finished --------> [ChangeCipherSpec] <-------- Finished Application Data <-------> Application Data * Indicates optional or situation-dependent messages that are not always sent. {} Indicates messages that are symmetrically encrypted. The ciphersuites in Section 4 (IP_RSA Key Exchange Algorithm) use RSA based certificates to mutually authenticate a RSA exchange with the client identity protection. The ciphersuites in Section 5 (IP_EDH Key Exchange Algorithm) use EDH_RSA or EDH_DSS to mutually authenticate a Diffie-Hellman exchange with the client identity protection. The ciphersuites in Section 6 (IP_ECC Key Exchange Algorithm) are TBC. 3. Key computation to encrypt/decrypt client's certificate Before sending its certificate, the client is able to compute the master secret and then the key_block. Thus, the client and the server derive from the key_block a key called identity_protection_key. This key is deployed by the client (respectively the server) to encrypt (respectively decrypt) the client's certificate. The identity_protection_key is set to the low order bits of the key_block, and its length is set appropriately to ServerHello.cipher_suite. For example, if the client and the server have agreed on using a ciphersuite with RC4_128 as symmetric cryptography, they therefore set their key to the low order 128-bits of the key_block. Exportable encryption algorithms (for which CipherSpec.is_exportable is true) require additional processing as follows to derive their final identity_protection_key: Hajjeh & Badra Expires April 2007 [Page 4] Internet-draft Identity Protection Ciphersuites for TLS November 2006 final_identity_protection_key = PRF(SecurityParameters.identity_protection_key, "identity_protection_key", SecurityParameters.client_random + SecurityParameters.server_random); 4. IP_RSA Key Exchange Algorithm This section defines additional ciphersuites that use RSA based certificates to authenticate a RSA exchange. These ciphersuites give client identity protection. CipherSuite Key Exchange Cipher Hash TLS_IP_RSA_EXPORT_WITH_RC4_40_MD5 RSA RC4_40 MD5 TLS_IP_RSA_WITH_RC4_128_MD5 RSA RC4_128 MD5 TLS_IP_RSA_WITH_RC4_128_SHA RSA RC4_128 SHA TLS_IP_RSA_EXPORT_WITH_RC2_CBC_40_MD5 RSA RC2_CBC_40 MD5 TLS_IP_RSA_WITH_IDEA_CBC_SHA RSA IDEA_CBC SHA TLS_IP_RSA_EXPORT_WITH_DES40_CBC_SHA RSA DES40_CBC_ SHA TLS_IP_RSA_WITH_DES_CBC_SHA RSA DES_CBC SHA TLS_IP_RSA_WITH_3DES_EDE_CBC_SHA RSA 3DES_EDE SHA TLS_IP_RSA_WITH_AES_128_CBC_SHA RSA AES_128_CBC SHA TLS_IP_RSA_WITH_AES_256_CBC_SHA RSA AES_256_CBC SHA TLS_IP_RSA_WITH_AES_128_CTR_SHA RSA AES_128_CTR SHA TLS_IP_RSA_WITH_CAMELLIA_128_CBC_SHA RSA CAMELLIA_128_CBC SHA TLS_IP_RSA_WITH_AES_256_CTR_SHA RSA AES_256_CTR SHA TLS_IP_RSA_WITH_CAMELLIA_256_CBC_SHA RSA CAMELLIA_256_CBC SHA 5. IP_EDH Key Exchange Algorithm This section defines additional ciphersuites that use EDH with RSA or DSS based certificates to authenticate a Diffie-Hellman exchange. These ciphersuites give client identity protection. The client MUST explicitly send its EDH public value in the ClientKeyExchange message. Note that this document does not specify any CipherSpec that uses DH RSA or DSS based certificates. CipherSuite Key Exchange Cipher Hash TLS_IP_DHE_DSS_WITH_DES_CBC_SHA DHE DES_CBC SHA TLS_IP_DHE_DSS_WITH_3DES_EDE_CBC_SHA DHE 3DES_EDE_CBC SHA TLS_IP_DHE_RSA_WITH_DES_CBC_SHA DHE DES_CBC SHA TLS_IP_DHE_RSA_WITH_3DES_EDE_CBC_SHA DHE 3DES_EDE_CBC SHA TLS_IP_DHE_DSS_WITH_AES_128_CBC_SHA DHE AES_128_CBC SHA TLS_IP_DHE_RSA_WITH_AES_128_CBC_SHA DHE AES_128_CBC SHA Hajjeh & Badra Expires April 2007 [Page 5] Internet-draft Identity Protection Ciphersuites for TLS November 2006 TLS_IP_DHE_DSS_WITH_AES_256_CBC_SHA DHE AES_256_CBC SHA TLS_IP_DHE_RSA_WITH_AES_256_CBC_SHA DHE AES_256_CBC SHA TLS_IP_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA DHE CAMELLIA_128_CBC SHA TLS_IP_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA DHE CAMELLIA_128_CBC SHA TLS_IP_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA DHE CAMELLIA_256_CBC SHA TLS_IP_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA DHE CAMELLIA_256_CBC SHA TLS_IP_DHE_DSS_WITH_AES_128_CTR_SHA DHE AES_128_CTR SHA TLS_IP_DHE_RSA_WITH_AES_128_CTR_SHA DHE AES_128_CTR SHA TLS_IP_DHE_DSS_WITH_AES_256_CTR_SHA DHE AES_256_CTR SHA TLS_IP_DHE_RSA_WITH_AES_256_CTR_SHA DHE AES_256_CTR SHA 6. IP_ECC Key Exchange Algorithm TBC. 7. Security Considerations The security considerations described throughout [TLS], [DTLS], [TLS1.1], [TLSAES] and [TLSAES] apply here as well. 8. IANA Considerations This section provides guidance to the IANA regarding registration of values related to the identity protection ciphersuites. CipherSuite TLS_IP_RSA_EXPORT_WITH_RC4_40_MD5 = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_RC4_128_MD5 = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_RC4_128_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_IDEA_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_DES_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_3DES_EDE_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_AES_128_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_AES_256_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_AES_128_CTR_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_CAMELLIA_128_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_AES_256_CTR_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_RSA_WITH_CAMELLIA_256_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_DSS_WITH_DES_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_DSS_WITH_3DES_EDE_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_RSA_WITH_DES_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_RSA_WITH_3DES_EDE_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_DSS_WITH_AES_128_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_RSA_WITH_AES_128_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_DSS_WITH_AES_256_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_RSA_WITH_AES_256_CBC_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA= { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA= { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA= { 0xXX,0xXX }; Hajjeh & Badra Expires April 2007 [Page 6] Internet-draft Identity Protection Ciphersuites for TLS November 2006 CipherSuite TLS_IP_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA= { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_DSS_WITH_AES_128_CTR_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_RSA_WITH_AES_128_CTR_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_DSS_WITH_AES_256_CTR_SHA = { 0xXX,0xXX }; CipherSuite TLS_IP_DHE_RSA_WITH_AES_256_CTR_SHA = { 0xXX,0xXX }; Note: For implementation and deployment facilities, it is helpful to reserve a specific registry sub-range (minor, major) for identity protection ciphersuites. References [TLS] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC 2246, January 1999. [TLS1.1] Dierks, T. and E. Rescorla, "The TLS Protocol Version 1.1", RFC 4346, April 2005. [DTLS] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security", RFC 4347, April 2006. [TLSCAM] Moriai, S., Kato, A., Kanda M., "Addition of Camellia Cipher Suites to Transport Layer Security (TLS)", RFC 4132, July 2005. [TLSAES] Chown, P., "Advanced Encryption Standard (AES) Ciphersuites for Transport Layer Security (TLS)", RFC 3268, June 2002. [TLSECC] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., Moeller, B., "Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)", RFC 4492, May 2006 [TLSCTR] Modadugu, N. and E. Rescorla, "AES Counter Mode Cipher Suites for TLS and DTLS", draft-ietf-tls-ctr-01.txt (work in progress), June 2006. [EAPTLSIP] Urien, P. and M. Badra, "Identity Protection within EAP- TLS", draft-urien-badra-eap-tls-identity-protection-01.txt (work in progress), October 2006. [INTEROP] Pettersen, Y., "Clientside interoperability experiences for the SSL and TLS protocols", draft-ietf- tls-interoperability-00 (work in progress), October 2006. [CORELLA] Corella, F., "adding client identity protection to TLS", message on ietf-tls@lists.certicom.com mailing list, http://www.imc.org/ietf-tls/mail-archive/msg02004.html, Hajjeh & Badra Expires April 2007 [Page 7] Internet-draft Identity Protection Ciphersuites for TLS November 2006 August 2000. [RESCORLA] Rescorla, E., "SSL and TLS: Designing and Building Secure Systems", Addison-Wesley, March 2001. Author's Addresses Ibrahim Hajjeh ESRGroups, Security WG France Email: Ibrahim.Hajjeh@esrgroups.org Mohamad Badra LIMOS Laboratory - UMR (6158), CNRS France Email: badra@isima.fr 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 Hajjeh & Badra Expires April 2007 [Page 8] Internet-draft Identity Protection Ciphersuites for TLS November 2006 Copyright (C) The Internet Society (2006). 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. Hajjeh & Badra Expires April 2007 [Page 9]