TLS Working Group | P. Gutmann |
Internet-Draft | University of Auckland |
Intended status: Standards Track | April 24, 2011 |
Expires: October 26, 2011 |
Standardised ECC Cipher Suites for TLS
draft-gutmann-tls-eccsuites-00.txt
This document describes a set of standard ECC cipher suites for TLS that simplify the complex selection procedure described in the existing ECC RFC, simplifying implementation and easing interoperability problems.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/.
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."
This Internet-Draft will expire on October 26, 2011.
Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
[TLS-ECC] provides an extremely flexible, and by extension extremely complex means of specifying a large number of options involving the use of ECC algorithms for [TLS]. As such the "cipher suites" in [TLS-ECC] aren't suites in the conventional TLS sense but more an indication of intent to negotiate a Chinese menu, with details to be decided on later via various TLS extensions and parameter settings. This makes deciding on a particular suite nondeterministic, since later parameter choices and settings can negate the initial "cipher suite" choice, requiring returning to the suite list to try with another Chinese-menu suite in the hope that later parameter choices allow it to be used.
In practice no deployed implementation actually does this, either dropping the connection or aborting the handshake with a handshake-failure if the expected parameters aren't present throughout the various locations in the TLS handshake in which ECC parameters can be specified. This means that establishing a TLS connection using ECC often requires trial-and-error probing to ascertain what the other side is expecting to see before a connection can be established.
Experience with deployed implementations indicates that all of them appear to implement a common subset of fixed ECC parameters that work in all cases (alongside the more obscure options), representing a de facto profile of standard cipher suites rather than Chinese-menu selection options. This document standardises this de facto usage by defining a small number of standard ECC cipher suites with unambiguous parameters and settings.
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 [RFC2119].
CipherSuite TLS_ECDHE_ECDSA_P256_WITH_AES_128_CBC_SHA = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P256_WITH_AES_256_CBC_SHA = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P384_WITH_AES_128_CBC_SHA = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P384_WITH_AES_256_CBC_SHA = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P256_WITH_AES_128_CBC_SHA256 = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P256_WITH_AES_256_CBC_SHA256 = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P384_WITH_AES_128_CBC_SHA384 = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P384_WITH_AES_256_CBC_SHA384 = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P256_WITH_AES_128_GCM_SHA256 = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P256_WITH_AES_256_GCM_SHA256 = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P384_WITH_AES_128_GCM_SHA384 = { 0x00, 0xXX } CipherSuite TLS_ECDHE_ECDSA_P384_WITH_AES_256_GCM_SHA384 = { 0x00, 0xXX }
The table below defines standard ECC cipher suites with fixed, unambiguous parameters, based on the de facto profiles of suites seen in use in practice. Since the form of these suites match the existing non-ECC suites, they follow the existing suites in the { 0x00, 0xXX } range rather than being placed with the Chinese-menu-selection suites at { 0xC0, 0xXX }.
[[[At least one major implementation, Microsoft's SChannel, already does this, see http://msdn.microsoft.com/en-us/library/aa374757%28v=vs.85%29.aspx. For example it lists 'suites' like TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256 and TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256. The above choices happen to coincide with the Microsoft ones not because of any explicit attempt to copy the Microsoft options but because they represent the obvious, logical choices]]].
For each cipher suite with their ECC parameters denoted 'P256' or 'P384', the ECC parameters are:
If no additional Chinese-menu ECC suites are used, implementations SHOULD NOT send the Supported Elliptic Curves or Supported Point Formats extensions since these parameters are fully specified by the suite choice. If additional Chinese-menu suites are used, implementations MUST send the Supported Elliptic Curves and Supported Point Formats extensions as per [TLS-ECC]. The parameters specified in these extensions apply only to the Chinese-menu suites, not the fixed suites defined above.
Note that the suites defined in this document augment, rather than supplant, the existing Chinese-menu suites options. Anyone requiring the use of more unusual ECC parameters and options can use the Chinese-menu capability to specify and select any parameters that they require.
This document is a profile of, and simplifcation of, [TLS-ECC]. No further security considerations are introduced beyond those present in [TLS-ECC] .
This document defines new ciphers suites for TLS [to be allocated in the currently unallocated range { 0x00, 0xC6 } - { 0x00, 0xD1 }].
[1] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[2] | Dierks, T and E Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008. |
[3] | Blake-Wilson, S, Bolyard, N, Gupta, V and C Hawk, "Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)", RFC 4492, May 2006. |