3 TLS Working Group V. Gupta
4 Internet-Draft Sun Labs
5 Expires: October 9, 2005 S. Blake-Wilson
15 ECC Cipher Suites for TLS
16 <draft-ietf-tls-ecc-09.txt>
20 This document is an Internet-Draft and is subject to all provisions
21 of Section 3 of RFC 3667. By submitting this Internet-Draft, each
22 author represents that any applicable patent or other IPR claims of
23 which he or she is aware have been or will be disclosed, and any of
24 which he or she become aware will be disclosed, in accordance with
27 Internet-Drafts are working documents of the Internet Engineering
28 Task Force (IETF), its areas, and its working groups. Note that
29 other groups may also distribute working documents as Internet-
32 Internet-Drafts are draft documents valid for a maximum of six months
33 and may be updated, replaced, or obsoleted by other documents at any
34 time. It is inappropriate to use Internet-Drafts as reference
35 material or to cite them other than as "work in progress."
37 The list of current Internet-Drafts can be accessed at
38 http://www.ietf.org/ietf/1id-abstracts.txt.
40 The list of Internet-Draft Shadow Directories can be accessed at
41 http://www.ietf.org/shadow.html.
43 This Internet-Draft will expire on October 9, 2005.
47 Copyright (C) The Internet Society (2005).
54 Gupta, et al. Expires October 9, 2005 [Page 1]
56 Internet-Draft ECC Cipher Suites for TLS April 2005
59 This document describes new key exchange algorithms based on Elliptic
60 Curve Cryptography (ECC) for the TLS (Transport Layer Security)
61 protocol. In particular, it specifies the use of Elliptic Curve
62 Diffie-Hellman (ECDH) key agreement in a TLS handshake and the use of
63 Elliptic Curve Digital Signature Algorithm (ECDSA) as a new
64 authentication mechanism.
66 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
67 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
68 document are to be interpreted as described in RFC 2119 [1].
70 Please send comments on this document to the TLS mailing list.
74 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
75 2. Key Exchange Algorithms . . . . . . . . . . . . . . . . . . 5
76 2.1 ECDH_ECDSA . . . . . . . . . . . . . . . . . . . . . . . . 7
77 2.2 ECDHE_ECDSA . . . . . . . . . . . . . . . . . . . . . . . 7
78 2.3 ECDH_RSA . . . . . . . . . . . . . . . . . . . . . . . . . 7
79 2.4 ECDHE_RSA . . . . . . . . . . . . . . . . . . . . . . . . 7
80 2.5 ECDH_anon . . . . . . . . . . . . . . . . . . . . . . . . 8
81 3. Client Authentication . . . . . . . . . . . . . . . . . . . 9
82 3.1 ECDSA_sign . . . . . . . . . . . . . . . . . . . . . . . . 9
83 3.2 ECDSA_fixed_ECDH . . . . . . . . . . . . . . . . . . . . . 10
84 3.3 RSA_fixed_ECDH . . . . . . . . . . . . . . . . . . . . . . 10
85 4. TLS Extensions for ECC . . . . . . . . . . . . . . . . . . . 11
86 5. Data Structures and Computations . . . . . . . . . . . . . . 12
87 5.1 Client Hello Extensions . . . . . . . . . . . . . . . . . 12
88 5.2 Server Hello Extension . . . . . . . . . . . . . . . . . . 15
89 5.3 Server Certificate . . . . . . . . . . . . . . . . . . . . 16
90 5.4 Server Key Exchange . . . . . . . . . . . . . . . . . . . 18
91 5.5 Certificate Request . . . . . . . . . . . . . . . . . . . 22
92 5.6 Client Certificate . . . . . . . . . . . . . . . . . . . . 23
93 5.7 Client Key Exchange . . . . . . . . . . . . . . . . . . . 24
94 5.8 Certificate Verify . . . . . . . . . . . . . . . . . . . . 25
95 5.9 Elliptic Curve Certificates . . . . . . . . . . . . . . . 26
96 5.10 ECDH, ECDSA and RSA Computations . . . . . . . . . . . . 26
97 6. Cipher Suites . . . . . . . . . . . . . . . . . . . . . . . 28
98 7. Security Considerations . . . . . . . . . . . . . . . . . . 30
99 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 31
100 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 32
101 9.1 Normative References . . . . . . . . . . . . . . . . . . . 32
102 9.2 Informative References . . . . . . . . . . . . . . . . . . 32
103 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 33
104 Intellectual Property and Copyright Statements . . . . . . . 35
110 Gupta, et al. Expires October 9, 2005 [Page 2]
112 Internet-Draft ECC Cipher Suites for TLS April 2005
117 Elliptic Curve Cryptography (ECC) is emerging as an attractive
118 public-key cryptosystem for mobile/wireless environments. Compared
119 to currently prevalent cryptosystems such as RSA, ECC offers
120 equivalent security with smaller key sizes. This is illustrated in
121 the following table, based on [13], which gives approximate
122 comparable key sizes for symmetric- and asymmetric-key cryptosystems
123 based on the best-known algorithms for attacking them.
125 Symmetric | ECC | DH/DSA/RSA
126 -------------+---------+------------
133 Table 1: Comparable key sizes (in bits)
136 Smaller key sizes result in power, bandwidth and computational
137 savings that make ECC especially attractive for constrained
140 This document describes additions to TLS to support ECC. In
141 particular, it defines
143 o the use of the Elliptic Curve Diffie-Hellman (ECDH) key agreement
144 scheme with long-term or ephemeral keys to establish the TLS
145 premaster secret, and
147 o the use of fixed-ECDH certificates and ECDSA for authentication of
150 The remainder of this document is organized as follows. Section 2
151 provides an overview of ECC-based key exchange algorithms for TLS.
152 Section 3 describes the use of ECC certificates for client
153 authentication. TLS extensions that allow a client to negotiate the
154 use of specific curves and point formats are presented in Section 4.
155 Section 5 specifies various data structures needed for an ECC-based
156 handshake, their encoding in TLS messages and the processing of those
157 messages. Section 6 defines new ECC-based cipher suites and
158 identifies a small subset of these as recommended for all
159 implementations of this specification. Section 7 and Section 8
160 mention security considerations and acknowledgments, respectively.
161 This is followed by a list of references cited in this document, the
162 authors' contact information, and statements on intellectual property
166 Gupta, et al. Expires October 9, 2005 [Page 3]
168 Internet-Draft ECC Cipher Suites for TLS April 2005
171 rights and copyrights.
173 Implementation of this specification requires familiarity with TLS
174 [2], TLS extensions [3] and ECC [4][5][6][8].
222 Gupta, et al. Expires October 9, 2005 [Page 4]
224 Internet-Draft ECC Cipher Suites for TLS April 2005
227 2. Key Exchange Algorithms
229 This document introduces five new ECC-based key exchange algorithms
230 for TLS. All of them use ECDH to compute the TLS premaster secret
231 and differ only in the lifetime of ECDH keys (long-term or ephemeral)
232 and the mechanism (if any) used to authenticate them. The derivation
233 of the TLS master secret from the premaster secret and the subsequent
234 generation of bulk encryption/MAC keys and initialization vectors is
235 independent of the key exchange algorithm and not impacted by the
238 The table below summarizes the new key exchange algorithms which
239 mimic DH_DSS, DHE_DSS, DH_RSA, DHE_RSA, and DH_anon (see [2]),
244 Algorithm Description
245 --------- -----------
247 ECDH_ECDSA Fixed ECDH with ECDSA-signed certificates.
249 ECDHE_ECDSA Ephemeral ECDH with ECDSA signatures.
251 ECDH_RSA Fixed ECDH with RSA-signed certificates.
253 ECDHE_RSA Ephemeral ECDH with RSA signatures.
255 ECDH_anon Anonymous ECDH, no signatures.
257 Table 2: ECC key exchange algorithms
260 The ECDHE_ECDSA and ECDHE_RSA key exchange mechanisms provide forward
261 secrecy. With ECDHE_RSA, a server can reuse its existing RSA
262 certificate and easily comply with a constrained client's elliptic
263 curve preferences (see Section 4). However, the computational cost
264 incurred by a server is higher for ECDHE_RSA than for the traditional
265 RSA key exchange which does not provide forward secrecy.
267 The ECDH_RSA mechanism requires a server to acquire an ECC
268 certificate but the certificate issuer can still use an existing RSA
269 key for signing. This eliminates the need to update the trusted key
270 store in TLS clients. The ECDH_ECDSA mechanism requires ECC keys for
271 the server as well as the certification authority and is best suited
272 for constrained devices unable to support RSA.
274 The anonymous key exchange algorithm does not provide authentication
278 Gupta, et al. Expires October 9, 2005 [Page 5]
280 Internet-Draft ECC Cipher Suites for TLS April 2005
283 of the server or the client. Like other anonymous TLS key exchanges,
284 it is subject to man-in-the-middle attacks. Implementations of this
285 algorithm SHOULD provide authentication by other means.
287 Note that there is no structural difference between ECDH and ECDSA
288 keys. A certificate issuer may use X509.v3 keyUsage and
289 extendedKeyUsage extensions to restrict the use of an ECC public key
290 to certain computations. This document refers to an ECC key as ECDH-
291 capable if its use in ECDH is permitted. ECDSA-capable is defined
298 ClientHello -------->
303 <-------- ServerHelloDone
312 Application Data <-------> Application Data
315 * message is not sent under some conditions
316 + message is not sent unless client authentication
319 Figure 1: Message flow in a full TLS handshake
322 Figure 1 shows all messages involved in the TLS key establishment
323 protocol (aka full handshake). The addition of ECC has direct impact
324 only on the ClientHello, the ServerHello, the server's Certificate
325 message, the ServerKeyExchange, the ClientKeyExchange, the
326 CertificateRequest, the client's Certificate message, and the
327 CertificateVerify. Next, we describe each ECC key exchange algorithm
328 in greater detail in terms of the content and processing of these
329 messages. For ease of exposition, we defer discussion of client
330 authentication and associated messages (identified with a + in
334 Gupta, et al. Expires October 9, 2005 [Page 6]
336 Internet-Draft ECC Cipher Suites for TLS April 2005
339 Figure 1) until Section 3 and of the optional ECC-specific extensions
340 (which impact the Hello messages) until Section 4.
344 In ECDH_ECDSA, the server's certificate MUST contain an ECDH-capable
345 public key and be signed with ECDSA.
347 A ServerKeyExchange MUST NOT be sent (the server's certificate
348 contains all the necessary keying information required by the client
349 to arrive at the premaster secret).
351 The client MUST generate an ECDH key pair on the same curve as the
352 server's long-term public key and send its public key in the
353 ClientKeyExchange message (except when using client authentication
354 algorithm ECDSA_fixed_ECDH or RSA_fixed_ECDH, in which case the
355 modifications from section Section 3.2 or Section 3.3 apply).
357 Both client and server MUST perform an ECDH operation and use the
358 resultant shared secret as the premaster secret. All ECDH
359 calculations are performed as specified in Section 5.10
363 In ECDHE_ECDSA, the server's certificate MUST contain an ECDSA-
364 capable public key and be signed with ECDSA.
366 The server MUST send its ephemeral ECDH public key and a
367 specification of the corresponding curve in the ServerKeyExchange
368 message. These parameters MUST be signed with ECDSA using the
369 private key corresponding to the public key in the server's
372 The client MUST generate an ECDH key pair on the same curve as the
373 server's ephemeral ECDH key and send its public key in the
374 ClientKeyExchange message.
376 Both client and server MUST perform an ECDH operation (Section 5.10)
377 and use the resultant shared secret as the premaster secret.
381 This key exchange algorithm is the same as ECDH_ECDSA except the
382 server's certificate MUST be signed with RSA rather than ECDSA.
386 This key exchange algorithm is the same as ECDHE_ECDSA except the
390 Gupta, et al. Expires October 9, 2005 [Page 7]
392 Internet-Draft ECC Cipher Suites for TLS April 2005
395 server's certificate MUST contain an RSA public key authorized for
396 signing and the signature in the ServerKeyExchange message MUST be
397 computed with the corresponding RSA private key. The server
398 certificate MUST be signed with RSA.
402 In ECDH_anon, the server's Certificate, the CertificateRequest, the
403 client's Certificate, and the CertificateVerify messages MUST NOT be
406 The server MUST send an ephemeral ECDH public key and a specification
407 of the corresponding curve in the ServerKeyExchange message. These
408 parameters MUST NOT be signed.
410 The client MUST generate an ECDH key pair on the same curve as the
411 server's ephemeral ECDH key and send its public key in the
412 ClientKeyExchange message.
414 Both client and server MUST perform an ECDH operation and use the
415 resultant shared secret as the premaster secret. All ECDH
416 calculations are performed as specified in Section 5.10
446 Gupta, et al. Expires October 9, 2005 [Page 8]
448 Internet-Draft ECC Cipher Suites for TLS April 2005
451 3. Client Authentication
453 This document defines three new client authentication mechanisms
454 named after the type of client certificate involved: ECDSA_sign,
455 ECDSA_fixed_ECDH and RSA_fixed_ECDH. The ECDSA_sign mechanism is
456 usable with any of the non-anonymous ECC key exchange algorithms
457 described in Section 2 as well as other non-anonymous (non-ECC) key
458 exchange algorithms defined in TLS [2]. The ECDSA_fixed_ECDH and
459 RSA_fixed_ECDH mechanisms are usable with ECDH_ECDSA and ECDH_RSA.
460 Their use with ECDHE_ECDSA and ECDHE_RSA is prohibited because the
461 use of a long-term ECDH client key would jeopardize the forward
462 secrecy property of these algorithms.
464 The server can request ECC-based client authentication by including
465 one or more of these certificate types in its CertificateRequest
466 message. The server MUST NOT include any certificate types that are
467 prohibited for the negotiated key exchange algorithm. The client
468 must check if it possesses a certificate appropriate for any of the
469 methods suggested by the server and is willing to use it for
472 If these conditions are not met, the client should send a client
473 Certificate message containing no certificates. In this case, the
474 ClientKeyExchange should be sent as described in Section 2 and the
475 CertificateVerify should not be sent. If the server requires client
476 authentication, it may respond with a fatal handshake failure alert.
478 If the client has an appropriate certificate and is willing to use it
479 for authentication, it MUST send that certificate in the client's
480 Certificate message (as per Section 5.6) and prove possession of the
481 private key corresponding to the certified key. The process of
482 determining an appropriate certificate and proving possession is
483 different for each authentication mechanism and described below.
485 NOTE: It is permissible for a server to request (and the client to
486 send) a client certificate of a different type than the server
491 To use this authentication mechanism, the client MUST possess a
492 certificate containing an ECDSA-capable public key and signed with
495 The client MUST prove possession of the private key corresponding to
496 the certified key by including a signature in the CertificateVerify
497 message as described in Section 5.8.
502 Gupta, et al. Expires October 9, 2005 [Page 9]
504 Internet-Draft ECC Cipher Suites for TLS April 2005
509 To use this authentication mechanism, the client MUST possess a
510 certificate containing an ECDH-capable public key and that
511 certificate MUST be signed with ECDSA. Furthermore, the client's
512 ECDH key MUST be on the same elliptic curve as the server's long-term
513 (certified) ECDH key. This might limit use of this mechanism to
514 closed environments. In situations where the client has an ECC key
515 on a different curve, it would have to authenticate either using
516 ECDSA_sign or a non-ECC mechanism (e.g. RSA). Using fixed ECDH for
517 both servers and clients is computationally more efficient than
518 mechanisms providing forward secrecy.
520 When using this authentication mechanism, the client MUST send an
521 empty ClientKeyExchange as described in Section 5.7 and MUST NOT send
522 the CertificateVerify message. The ClientKeyExchange is empty since
523 the client's ECDH public key required by the server to compute the
524 premaster secret is available inside the client's certificate. The
525 client's ability to arrive at the same premaster secret as the server
526 (demonstrated by a successful exchange of Finished messages) proves
527 possession of the private key corresponding to the certified public
528 key and the CertificateVerify message is unnecessary.
532 This authentication mechanism is identical to ECDSA_fixed_ECDH except
533 the client's certificate MUST be signed with RSA.
558 Gupta, et al. Expires October 9, 2005 [Page 10]
560 Internet-Draft ECC Cipher Suites for TLS April 2005
563 4. TLS Extensions for ECC
565 Two new TLS extensions are defined in this specification: (i) the
566 Supported Elliptic Curves Extension, and (ii) the Supported Point
567 Formats Extension. These allow negotiating the use of specific
568 curves and point formats (e.g. compressed vs. uncompressed),
569 respectively, during a handshake starting a new session. These
570 extensions are especially relevant for constrained clients that may
571 only support a limited number of curves or point formats. They
572 follow the general approach outlined in [3]; message details are
573 specified in Section 5. The client enumerates the curves it supports
574 and the point formats it can parse by including the appropriate
575 extensions in its ClientHello message. The server similarly
576 enumerates the point formats it can parse by including an extension
577 in its ServerHello message.
579 A TLS client that proposes ECC cipher suites in its ClientHello
580 message SHOULD include these extensions. Servers implementing ECC
581 cipher suites MUST support these extensions, and when a client uses
582 these extensions, servers MUST NOT negotiate the use of an ECC cipher
583 suite unless they can complete the handshake while respecting the
584 choice of curves and compression techniques specified by the client.
585 This eliminates the possibility that a negotiated ECC handshake will
586 be subsequently aborted due to a client's inability to deal with the
589 These extensions MUST NOT be included if the client does not propose
590 any ECC cipher suites. A client that proposes ECC cipher suites may
591 choose not to include these extension. In this case, the server is
592 free to choose any one of the elliptic curves or point formats listed
593 in Section 5. That section also describes the structure and
594 processing of these extensions in greater detail.
596 In the case of session resumption, the server simply ignores the
597 Supported Elliptic Curves Extension and the Supported Point Formats
598 Extension as appearing in the current ClientHello message. These
599 extensions only play a role during handshakes negotiating a new
614 Gupta, et al. Expires October 9, 2005 [Page 11]
616 Internet-Draft ECC Cipher Suites for TLS April 2005
619 5. Data Structures and Computations
621 This section specifies the data structures and computations used by
622 ECC-based key mechanisms specified in Section 2, Section 3 and
623 Section 4. The presentation language used here is the same as that
624 used in TLS [2]. Since this specification extends TLS, these
625 descriptions should be merged with those in the TLS specification and
626 any others that extend TLS. This means that enum types may not
627 specify all possible values and structures with multiple formats
628 chosen with a select() clause may not indicate all possible cases.
630 5.1 Client Hello Extensions
632 This section specifies two TLS extensions that can be included with
633 the ClientHello message as described in [3], the Supported Elliptic
634 Curves Extension and the Supported Point Formats Extension.
636 When these extensions are sent:
638 The extensions SHOULD be sent along with any ClientHello message that
639 proposes ECC cipher suites.
641 Meaning of these extensions:
643 These extensions allow a client to enumerate the elliptic curves it
644 supports and/or the point formats it can parse.
646 Structure of these extensions:
648 The general structure of TLS extensions is described in [3] and this
649 specification adds two new types to ExtensionType.
652 enum { elliptic_curves(??), ec_point_formats(??) } ExtensionType;
654 [[ EDITOR: The values used for elliptic_curves and ec_point_formats
655 have been left as ??. These values will be assigned when this draft
656 progresses to RFC. (The examples below will have to be changed
659 elliptic_curves (Supported Elliptic Curves Extension): Indicates the
660 set of elliptic curves supported by the client. For this
661 extension, the opaque extension_data field contains
670 Gupta, et al. Expires October 9, 2005 [Page 12]
672 Internet-Draft ECC Cipher Suites for TLS April 2005
675 ec_point_formats (Supported Point Formats Extension): Indicates the
676 set of point formats that the client can parse. For this
677 extension, the opaque extension_data field contains
682 sect163k1 (1), sect163r1 (2), sect163r2 (3),
683 sect193r1 (4), sect193r2 (5), sect233k1 (6),
684 sect233r1 (7), sect239k1 (8), sect283k1 (9),
685 sect283r1 (10), sect409k1 (11), sect409r1 (12),
686 sect571k1 (13), sect571r1 (14), secp160k1 (15),
687 secp160r1 (16), secp160r2 (17), secp192k1 (18),
688 secp192r1 (19), secp224k1 (20), secp224r1 (21),
689 secp256k1 (22), secp256r1 (23), secp384r1 (24),
690 secp521r1 (25), reserved (240..247),
691 arbitrary_explicit_prime_curves(253),
692 arbitrary_explicit_char2_curves(254),
696 sect163k1, etc: Indicates support of the corresponding named curve
697 specified in SEC 2 [10]. Note that many of these curves are also
698 recommended in ANSI X9.62 [6], and FIPS 186-2 [8]. Values 240
699 through 247 are reserved for private use. Values 253 and 254
700 indicate that the client supports arbitrary prime and
701 characteristic-2 curves, respectively (the curve parameters must
702 be encoded explicitly in ECParameters).
706 NamedCurve elliptic_curve_list<1..2^8-1>
710 Items in elliptic_curve_list are ordered according to the client's
711 preferences (favorite choice first).
713 As an example, a client that only supports secp192r1 (aka NIST P-192;
714 value 19 = 0x13) and secp224r1 (aka NIST P-224; value 21 = 0x15) and
715 prefers to use secp192r1 would include a TLS extension consisting of
716 the following octets:
720 A client that supports arbitrary explicit characteristic-2 curves
721 (value 254 = 0xFE) would include an extension consisting of the
726 Gupta, et al. Expires October 9, 2005 [Page 13]
728 Internet-Draft ECC Cipher Suites for TLS April 2005
734 enum { uncompressed (0), ansiX962_compressed (1),
735 ansiX962_hybrid (2), reserved (3 .. 255)
739 ECPointFormat ec_point_format_list<1..2^8-1>
742 Three point formats are included in the definition of ECPointFormat
743 above. The uncompressed point format is the default format in that
744 implementations of this document MUST support it. The
745 ansiX962_compressed format reduces bandwidth by including only the
746 x-coordinate and a single bit of the y-coordinate of the point. The
747 ansiX962_hybrid format includes both the full y-coordinate and the
748 compressed y-coordinate to allow flexibility and improve efficiency
749 in some cases. Implementations of this document MAY support the
750 ansiX962_compressed and ansiX962_hybrid point formats. (These three
751 formats are described in [6].) Values 248 through 255 are reserved
754 Items in ec_point_format_list are ordered according to the client's
755 preferences (favorite choice first).
757 A client that can parse only the uncompressed point format includes
758 an extension consisting of the following octets:
762 A client that prefers the use of the ansiX962_compressed format over
763 uncompressed may indicate that preference by including an extension
764 consisting of the following octets:
768 Actions of the sender:
770 A client that proposes ECC cipher suites in its ClientHello message
771 appends these extensions (along with any others), enumerating the
772 curves it supports and the point formats it can parse. Clients
773 SHOULD send both the Supported Elliptic Curves Extension and the
774 Supported Point Formats Extension. If the Supported Point Formats
775 Extension is indeed sent, it MUST contain the value 0 (uncompressed)
776 as one of the items in the list of point formats.
778 Actions of the receiver:
782 Gupta, et al. Expires October 9, 2005 [Page 14]
784 Internet-Draft ECC Cipher Suites for TLS April 2005
787 A server that receives a ClientHello containing one or both of these
788 extensions MUST use the client's enumerated capabilities to guide its
789 selection of an appropriate cipher suite. One of the proposed ECC
790 cipher suites must be negotiated only if the server can successfully
791 complete the handshake while using the curves and point formats
792 supported by the client (cf. Section 5.3 and Section 5.4).
794 NOTE: A server participating in an ECDHE-ECDSA key exchange may use
795 different curves for (i) the ECDSA key in its certificate, and (ii)
796 the ephemeral ECDH key in the ServerKeyExchange message. The server
797 must consider the "elliptic_curves" extension in selecting both of
800 If a server does not understand the "elliptic_curves" extension or is
801 unable to complete the ECC handshake while restricting itself to the
802 enumerated curves, it MUST NOT negotiate the use of an ECC cipher
803 suite. Depending on what other cipher suites are proposed by the
804 client and supported by the server, this may result in a fatal
805 handshake failure alert due to the lack of common cipher suites.
807 5.2 Server Hello Extension
809 This section specifies a TLS extension that can be included with the
810 ServerHello message as described in [3], the Supported Point Formats
813 When this extension is sent:
815 The Supported Point Formats Extension is included in a ServerHello
816 message in response to a ClientHello message containing the Supported
817 Point Formats Extension when negotiating an ECC cipher suite.
819 Meaning of this extensions:
821 This extension allows a server to enumerate the point formats it can
822 parse (for the curve that will appear in its ServerKeyExchange
823 message when using the ECDHE_ECDSA, ECDHE_RSA, or ECDH_anon key
824 exchange algorithm, or for the curve that is used in the server's
825 public key that will appear in its Certificate message when using the
826 ECDH_ECDSA or ECDH_RSA key exchange algorithm).
828 Structure of this extension:
830 The server's Supported Point Formats Extension has the same structure
831 as the client's Supported Point Formats Extension. Items in
832 elliptic_curve_list here are ordered according to the server's
833 preference (favorite choice first). Note that the server may include
834 items that were not found in the client's list (e.g., the server may
838 Gupta, et al. Expires October 9, 2005 [Page 15]
840 Internet-Draft ECC Cipher Suites for TLS April 2005
843 prefer to receive points in compressed format even when a client
844 cannot parse this format: the same client may nevertheless be capable
845 to output points in compressed format).
847 Actions of the sender:
849 A server that selects an ECC cipher suite in response to a
850 ClientHello message including a Supported Point Formats Extension
851 appends this extension (along with others) to its ServerHello
852 message, enumerating the point formats it can parse. The Supported
853 Point Formats Extension, when used, MUST contain the value 0
854 (uncompressed) as one of the items in the list of point formats.
856 Actions of the receiver:
858 A client that receives a ServerHello message containing a Supported
859 Point Formats Extension MUST respect the server's choice of point
860 formats during the handshake (cf. Section 5.6 and Section 5.7). If
861 no Supported Point Formats Extension is received with the
862 ServerHello, this is equivalent to an extension allowing only the
863 uncompressed point format.
865 5.3 Server Certificate
867 When this message is sent:
869 This message is sent in all non-anonymous ECC-based key exchange
872 Meaning of this message:
874 This message is used to authentically convey the server's static
875 public key to the client. The following table shows the server
876 certificate type appropriate for each key exchange algorithm. ECC
877 public keys must be encoded in certificates as described in
880 NOTE: The server's Certificate message is capable of carrying a chain
881 of certificates. The restrictions mentioned in Table 3 apply only to
882 the server's certificate (first in the chain).
894 Gupta, et al. Expires October 9, 2005 [Page 16]
896 Internet-Draft ECC Cipher Suites for TLS April 2005
899 Key Exchange Algorithm Server Certificate Type
900 ---------------------- -----------------------
902 ECDH_ECDSA Certificate must contain an
903 ECDH-capable public key. It
904 must be signed with ECDSA.
906 ECDHE_ECDSA Certificate must contain an
907 ECDSA-capable public key. It
908 must be signed with ECDSA.
910 ECDH_RSA Certificate must contain an
911 ECDH-capable public key. It
912 must be signed with RSA.
914 ECDHE_RSA Certificate must contain an
915 RSA public key authorized for
916 use in digital signatures. It
917 must be signed with RSA.
919 Table 3: Server certificate types
922 Structure of this message:
924 Identical to the TLS Certificate format.
926 Actions of the sender:
928 The server constructs an appropriate certificate chain and conveys it
929 to the client in the Certificate message. If the client has used a
930 Supported Elliptic Curves Extension, the public key in the server's
931 certificate MUST respect the client's choice of elliptic curves; in
932 particular, the public key MUST employ a named curve (not the same
933 curve as an explicit curve) unless the client has indicated support
934 for explicit curves of the appropriate type. If the client has used
935 a Supported Point Formats Extension, both the server's public key
936 point and (in the case of an explicit curve) the curve's base point
937 MUST respect the client's choice of point formats. (A server that
938 cannot satisfy these requirements must not choose an ECC cipher suite
939 in its ServerHello message.)
941 Actions of the receiver:
943 The client validates the certificate chain, extracts the server's
944 public key, and checks that the key type is appropriate for the
945 negotiated key exchange algorithm.
950 Gupta, et al. Expires October 9, 2005 [Page 17]
952 Internet-Draft ECC Cipher Suites for TLS April 2005
955 5.4 Server Key Exchange
957 When this message is sent:
959 This message is sent when using the ECDHE_ECDSA, ECDHE_RSA and
960 ECDH_anon key exchange algorithms.
962 Meaning of this message:
964 This message is used to convey the server's ephemeral ECDH public key
965 (and the corresponding elliptic curve domain parameters) to the
968 Structure of this message:
970 enum { explicit_prime (1), explicit_char2 (2),
971 named_curve (3), reserved(4 .. 255) } ECCurveType;
973 explicit_prime: Indicates the elliptic curve domain parameters are
974 conveyed verbosely, and the underlying finite field is a prime
977 explicit_char2: Indicates the elliptic curve domain parameters are
978 conveyed verbosely, and the underlying finite field is a
979 characteristic-2 field.
981 named_curve: Indicates that a named curve is used. This option
982 SHOULD be used when applicable.
984 Values 248 through 255 are reserved for private use.
991 a, b: These parameters specify the coefficients of the elliptic
992 curve. Each value contains the byte string representation of a
993 field element following the conversion routine in Section 4.3.3 of
998 opaque point <1..2^8-1>;
1006 Gupta, et al. Expires October 9, 2005 [Page 18]
1008 Internet-Draft ECC Cipher Suites for TLS April 2005
1011 point: This is the byte string representation of an elliptic curve
1012 point following the conversion routine in Section 4.3.6 of ANSI
1013 X9.62 [6]. This byte string may represent an elliptic curve point
1014 in uncompressed, hybrid, or compressed format; it MUST conform to
1015 what the client has requested through a Supported Point Formats
1016 Extension if this extension was used.
1019 enum { ec_basis_trinomial, ec_basis_pentanomial } ECBasisType;
1021 ec_basis_trinomial: Indicates representation of a characteristic-2
1022 field using a trinomial basis.
1024 ec_basis_pentanomial: Indicates representation of a characteristic-2
1025 field using a pentanomial basis.
1029 ECCurveType curve_type;
1030 select (curve_type) {
1031 case explicit_prime:
1032 opaque prime_p <1..2^8-1>;
1035 opaque order <1..2^8-1>;
1036 opaque cofactor <1..2^8-1>;
1037 case explicit_char2:
1042 opaque k <1..2^8-1>;
1043 case ec_pentanomial:
1044 opaque k1 <1..2^8-1>;
1045 opaque k2 <1..2^8-1>;
1046 opaque k3 <1..2^8-1>;
1050 opaque order <1..2^8-1>;
1051 opaque cofactor <1..2^8-1>;
1053 NamedCurve namedcurve;
1062 Gupta, et al. Expires October 9, 2005 [Page 19]
1064 Internet-Draft ECC Cipher Suites for TLS April 2005
1067 curve_type: This identifies the type of the elliptic curve domain
1070 prime_p: This is the odd prime defining the field Fp.
1072 curve: Specifies the coefficients a and b of the elliptic curve E.
1074 base: Specifies the base point G on the elliptic curve.
1076 order: Specifies the order n of the base point.
1078 cofactor: Specifies the cofactor h = #E(Fq)/n, where #E(Fq)
1079 represents the number of points on the elliptic curve E defined
1080 over the field Fq (either Fp or F2^m).
1082 m: This is the degree of the characteristic-2 field F2^m.
1084 k: The exponent k for the trinomial basis representation x^m + x^k
1087 k1, k2, k3: The exponents for the pentanomial representation x^m +
1088 x^k3 + x^k2 + x^k1 + 1 (such that k3 > k2 > k1).
1090 namedcurve: Specifies a recommended set of elliptic curve domain
1091 parameters. All enum values of NamedCurve are allowed except for
1092 arbitrary_explicit_prime_curves(253) and
1093 arbitrary_explicit_char2_curves(254). These two values are only
1094 allowed in the ClientHello extension.
1098 ECParameters curve_params;
1102 curve_params: Specifies the elliptic curve domain parameters
1103 associated with the ECDH public key.
1105 public: The ephemeral ECDH public key.
1107 The ServerKeyExchange message is extended as follows.
1109 enum { ec_diffie_hellman } KeyExchangeAlgorithm;
1118 Gupta, et al. Expires October 9, 2005 [Page 20]
1120 Internet-Draft ECC Cipher Suites for TLS April 2005
1123 ec_diffie_hellman: Indicates the ServerKeyExchange message contains
1127 select (KeyExchangeAlgorithm) {
1128 case ec_diffie_hellman:
1129 ServerECDHParams params;
1130 Signature signed_params;
1131 } ServerKeyExchange;
1133 params: Specifies the ECDH public key and associated domain
1136 signed_params: A hash of the params, with the signature appropriate
1137 to that hash applied. The private key corresponding to the
1138 certified public key in the server's Certificate message is used
1142 enum { ecdsa } SignatureAlgorithm;
1145 select (SignatureAlgorithm) {
1147 digitally-signed struct {
1148 opaque sha_hash[sha_size];
1152 NOTE: SignatureAlgorithm is "rsa" for the ECDHE_RSA key exchange
1153 algorithm and "anonymous" for ECDH_anon. These cases are defined in
1154 TLS [2]. SignatureAlgorithm is "ecdsa" for ECDHE_ECDSA. ECDSA
1155 signatures are generated and verified as described in Section 5.10.
1156 As per ANSI X9.62, an ECDSA signature consists of a pair of integers
1157 r and s. These integers are both converted into byte strings of the
1158 same length as the curve order n using the conversion routine
1159 specified in Section 4.3.1 of [6]. The two byte strings are
1160 concatenated, and the result is placed in the signature field.
1162 Actions of the sender:
1164 The server selects elliptic curve domain parameters and an ephemeral
1165 ECDH public key corresponding to these parameters according to the
1166 ECKAS-DH1 scheme from IEEE 1363 [5]. It conveys this information to
1167 the client in the ServerKeyExchange message using the format defined
1170 Actions of the recipient:
1174 Gupta, et al. Expires October 9, 2005 [Page 21]
1176 Internet-Draft ECC Cipher Suites for TLS April 2005
1179 The client verifies the signature (when present) and retrieves the
1180 server's elliptic curve domain parameters and ephemeral ECDH public
1181 key from the ServerKeyExchange message.
1183 5.5 Certificate Request
1185 When this message is sent:
1187 This message is sent when requesting client authentication.
1189 Meaning of this message:
1191 The server uses this message to suggest acceptable client
1192 authentication methods.
1194 Structure of this message:
1196 The TLS CertificateRequest message is extended as follows.
1199 ecdsa_sign(??), rsa_fixed_ecdh(??),
1200 ecdsa_fixed_ecdh(??), (255)
1201 } ClientCertificateType;
1203 ecdsa_sign, etc Indicates that the server would like to use the
1204 corresponding client authentication method specified in Section 3.
1206 [[ EDITOR: The values used for ecdsa_sign, rsa_fixed_ecdh, and
1207 ecdsa_fixed_ecdh have been left as ??. These values will be
1208 assigned when this draft progresses to RFC. Earlier versions of
1209 this draft used the values 5, 6, and 7 - however these values have
1210 been removed since they are used differently by SSL 3.0 [14] and
1211 their use by TLS is being deprecated. ]]
1213 Actions of the sender:
1215 The server decides which client authentication methods it would like
1216 to use, and conveys this information to the client using the format
1219 Actions of the receiver:
1221 The client determines whether it has a suitable certificate for use
1222 with any of the requested methods, and decides whether or not to
1223 proceed with client authentication.
1230 Gupta, et al. Expires October 9, 2005 [Page 22]
1232 Internet-Draft ECC Cipher Suites for TLS April 2005
1235 5.6 Client Certificate
1237 When this message is sent:
1239 This message is sent in response to a CertificateRequest when a
1240 client has a suitable certificate and has decided to proceed with
1241 client authentication. (Note that if the server has used a Supported
1242 Point Formats Extension, a certificate can only be considered
1243 suitable for use with the ECDSA_sign, RSA_fixed_ECDH, and
1244 ECDSA_fixed_ECDH authentication methods if the public key point
1245 specified in it respects the server's choice of point formats. If no
1246 Supported Point Formats Extension has been used, a certificate can
1247 only be considered suitable for use with these authentication methods
1248 if the point is represented in uncompressed point format.)
1250 Meaning of this message:
1252 This message is used to authentically convey the client's static
1253 public key to the server. The following table summarizes what client
1254 certificate types are appropriate for the ECC-based client
1255 authentication mechanisms described in Section 3. ECC public keys
1256 must be encoded in certificates as described in Section 5.9.
1258 NOTE: The client's Certificate message is capable of carrying a chain
1259 of certificates. The restrictions mentioned in Table 4 apply only to
1260 the client's certificate (first in the chain).
1264 Authentication Method Client Certificate Type
1265 --------------------- -----------------------
1267 ECDSA_sign Certificate must contain an
1268 ECDSA-capable public key and
1269 be signed with ECDSA.
1271 ECDSA_fixed_ECDH Certificate must contain an
1272 ECDH-capable public key on the
1273 same elliptic curve as the server's
1274 long-term ECDH key. This certificate
1275 must be signed with ECDSA.
1277 RSA_fixed_ECDH Certificate must contain an
1278 ECDH-capable public key on the
1279 same elliptic curve as the server's
1280 long-term ECDH key. This certificate
1281 must be signed with RSA.
1286 Gupta, et al. Expires October 9, 2005 [Page 23]
1288 Internet-Draft ECC Cipher Suites for TLS April 2005
1291 Table 4: Client certificate types
1294 Structure of this message:
1296 Identical to the TLS client Certificate format.
1298 Actions of the sender:
1300 The client constructs an appropriate certificate chain, and conveys
1301 it to the server in the Certificate message.
1303 Actions of the receiver:
1305 The TLS server validates the certificate chain, extracts the client's
1306 public key, and checks that the key type is appropriate for the
1307 client authentication method.
1309 5.7 Client Key Exchange
1311 When this message is sent:
1313 This message is sent in all key exchange algorithms. If client
1314 authentication with ECDSA_fixed_ECDH or RSA_fixed_ECDH is used, this
1315 message is empty. Otherwise, it contains the client's ephemeral ECDH
1318 Meaning of the message:
1320 This message is used to convey ephemeral data relating to the key
1321 exchange belonging to the client (such as its ephemeral ECDH public
1324 Structure of this message:
1326 The TLS ClientKeyExchange message is extended as follows.
1328 enum { implicit, explicit } PublicValueEncoding;
1330 implicit, explicit: For ECC cipher suites, this indicates whether
1331 the client's ECDH public key is in the client's certificate
1332 ("implicit") or is provided, as an ephemeral ECDH public key, in
1333 the ClientKeyExchange message ("explicit"). (This is "explicit"
1334 in ECC cipher suites except when the client uses the
1335 ECDSA_fixed_ECDH or RSA_fixed_ECDH client authentication
1342 Gupta, et al. Expires October 9, 2005 [Page 24]
1344 Internet-Draft ECC Cipher Suites for TLS April 2005
1348 select (PublicValueEncoding) {
1349 case implicit: struct { };
1350 case explicit: ECPoint ecdh_Yc;
1352 } ClientECDiffieHellmanPublic;
1354 ecdh_Yc: Contains the client's ephemeral ECDH public key as a byte
1355 string ECPoint.point, which may represent an elliptic curve point
1356 in uncompressed, hybrid, or compressed format. Here the format
1357 MUST conform to what the server has requested through a Supported
1358 Point Formats Extension if this extension was used, and MUST be
1359 uncompressed if this extension was not used.
1363 select (KeyExchangeAlgorithm) {
1364 case ec_diffie_hellman: ClientECDiffieHellmanPublic;
1366 } ClientKeyExchange;
1368 Actions of the sender:
1370 The client selects an ephemeral ECDH public key corresponding to the
1371 parameters it received from the server according to the ECKAS-DH1
1372 scheme from IEEE 1363 [5]. It conveys this information to the client
1373 in the ClientKeyExchange message using the format defined above.
1375 Actions of the recipient:
1377 The server retrieves the client's ephemeral ECDH public key from the
1378 ClientKeyExchange message and checks that it is on the same elliptic
1379 curve as the server's ECDH key.
1381 5.8 Certificate Verify
1383 When this message is sent:
1385 This message is sent when the client sends a client certificate
1386 containing a public key usable for digital signatures, e.g. when the
1387 client is authenticated using the ECDSA_sign mechanism.
1389 Meaning of the message:
1391 This message contains a signature that proves possession of the
1392 private key corresponding to the public key in the client's
1393 Certificate message.
1398 Gupta, et al. Expires October 9, 2005 [Page 25]
1400 Internet-Draft ECC Cipher Suites for TLS April 2005
1403 Structure of this message:
1405 The TLS CertificateVerify message is extended as follows.
1407 enum { ecdsa } SignatureAlgorithm;
1409 select (SignatureAlgorithm) {
1411 digitally-signed struct {
1412 opaque sha_hash[sha_size];
1416 For the ecdsa case, the signature field in the CertificateVerify
1417 message contains an ECDSA signature computed over handshake messages
1418 exchanged so far. ECDSA signatures are computed as described in
1419 Section 5.10. As per ANSI X9.62, an ECDSA signature consists of a
1420 pair of integers r and s. These integers are both converted into
1421 byte strings of the same length as the curve order n using the
1422 conversion routine specified in Section 4.3.1 of [6]. The two byte
1423 strings are concatenated, and the result is placed in the signature
1426 Actions of the sender:
1428 The client computes its signature over all handshake messages sent or
1429 received starting at client hello up to but not including this
1430 message. It uses the private key corresponding to its certified
1431 public key to compute the signature which is conveyed in the format
1434 Actions of the receiver:
1436 The server extracts the client's signature from the CertificateVerify
1437 message, and verifies the signature using the public key it received
1438 in the client's Certificate message.
1440 5.9 Elliptic Curve Certificates
1442 X509 certificates containing ECC public keys or signed using ECDSA
1443 MUST comply with [11] or another RFC that replaces or extends it.
1444 Clients SHOULD use the elliptic curve domain parameters recommended
1445 in ANSI X9.62 [6], FIPS 186-2 [8], and SEC 2 [10].
1447 5.10 ECDH, ECDSA and RSA Computations
1449 All ECDH calculations (including parameter and key generation as well
1450 as the shared secret calculation) MUST be performed according to [5]
1454 Gupta, et al. Expires October 9, 2005 [Page 26]
1456 Internet-Draft ECC Cipher Suites for TLS April 2005
1459 using the ECKAS-DH1 scheme with the identity map as key derivation
1460 function, so that the premaster secret is the x-coordinate of the
1461 ECDH shared secret elliptic curve point, i.e. the octet string Z in
1462 IEEE 1363 terminology.
1464 Note that a new extension may be introduced in the future to allow
1465 the use of a different KDF during computation of the premaster
1466 secret. In this event, the new KDF would be used in place of the
1467 process detailed above. This may be desirable, for example, to
1468 support compatibility with the planned NIST key agreement standard.
1470 All ECDSA computations MUST be performed according to ANSI X9.62 [6]
1471 or its successors. Data to be signed/verified is hashed and the
1472 result run directly through the ECDSA algorithm with no additional
1473 hashing. The default hash function is SHA-1 [7] and sha_size (see
1474 Section 5.4 and Section 5.8) is 20. However, an alternative hash
1475 function, such as one of the new SHA hash functions specified in FIPS
1476 180-2 [7], may be used instead if the certificate containing the EC
1477 public key explicitly requires use of another hash function. (The
1478 mechanism for specifying the required hash function has not been
1479 standardized but this provision anticipates such standardization and
1480 obviates the need to update this document in response. Future PKIX
1481 RFCs may choose, for example, to specify the hash function to be used
1482 with a public key in the parameters field of subjectPublicKeyInfo.)
1484 All RSA signatures must be generated and verified according to PKCS#1
1510 Gupta, et al. Expires October 9, 2005 [Page 27]
1512 Internet-Draft ECC Cipher Suites for TLS April 2005
1517 The table below defines new ECC cipher suites that use the key
1518 exchange algorithms specified in Section 2.
1520 CipherSuite TLS_ECDH_ECDSA_WITH_NULL_SHA = { 0x00, 0x?? }
1521 CipherSuite TLS_ECDH_ECDSA_WITH_RC4_128_SHA = { 0x00, 0x?? }
1522 CipherSuite TLS_ECDH_ECDSA_WITH_DES_CBC_SHA = { 0x00, 0x?? }
1523 CipherSuite TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1524 CipherSuite TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1525 CipherSuite TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1527 CipherSuite TLS_ECDHE_ECDSA_WITH_NULL_SHA = { 0x00, 0x?? }
1528 CipherSuite TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = { 0x00, 0x?? }
1529 CipherSuite TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1530 CipherSuite TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1531 CipherSuite TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1533 CipherSuite TLS_ECDH_RSA_WITH_NULL_SHA = { 0x00, 0x?? }
1534 CipherSuite TLS_ECDH_RSA_WITH_RC4_128_SHA = { 0x00, 0x?? }
1535 CipherSuite TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1536 CipherSuite TLS_ECDH_RSA_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1537 CipherSuite TLS_ECDH_RSA_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1539 CipherSuite TLS_ECDHE_RSA_WITH_NULL_SHA = { 0x00, 0x?? }
1540 CipherSuite TLS_ECDHE_RSA_WITH_RC4_128_SHA = { 0x00, 0x?? }
1541 CipherSuite TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1542 CipherSuite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1543 CipherSuite TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1545 CipherSuite TLS_ECDH_anon_NULL_WITH_SHA = { 0x00, 0x?? }
1546 CipherSuite TLS_ECDH_anon_WITH_RC4_128_SHA = { 0x00, 0x?? }
1547 CipherSuite TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1548 CipherSuite TLS_ECDH_anon_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1549 CipherSuite TLS_ECDH_anon_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1551 Table 5: TLS ECC cipher suites
1554 [[ EDITOR: The actual cipher suite numbers will be assigned when this
1555 draft progresses to RFC. ]]
1557 The key exchange method, cipher, and hash algorithm for each of these
1558 cipher suites are easily determined by examining the name. Ciphers
1559 other than AES ciphers, and hash algorithms are defined in [2]. AES
1560 ciphers are defined in [15].
1562 Server implementations SHOULD support all of the following cipher
1566 Gupta, et al. Expires October 9, 2005 [Page 28]
1568 Internet-Draft ECC Cipher Suites for TLS April 2005
1571 suites, and client implementations SHOULD support at least one of
1572 them: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
1573 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
1574 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, and
1575 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA.
1622 Gupta, et al. Expires October 9, 2005 [Page 29]
1624 Internet-Draft ECC Cipher Suites for TLS April 2005
1627 7. Security Considerations
1629 This document is based on [2], [5], [6] and [15]. The appropriate
1630 security considerations of those documents apply.
1632 One important issue that implementors and users must consider is
1633 elliptic curve selection. Guidance on selecting an appropriate
1634 elliptic curve size is given in Table 1.
1636 Beyond elliptic curve size, the main issue is elliptic curve
1637 structure. As a general principle, it is more conservative to use
1638 elliptic curves with as little algebraic structure as possible - thus
1639 random curves are more conservative than special curves such as
1640 Koblitz curves, and curves over F_p with p random are more
1641 conservative than curves over F_p with p of a special form (and
1642 curves over F_p with p random might be considered more conservative
1643 than curves over F_2^m as there is no choice between multiple fields
1644 of similar size for characteristic 2). Note, however, that algebraic
1645 structure can also lead to implementation efficiencies and
1646 implementors and users may, therefore, need to balance conservatism
1647 against a need for efficiency. Concrete attacks are known against
1648 only very few special classes of curves, such as supersingular
1649 curves, and these classes are excluded from the ECC standards that
1650 this document references [5], [6].
1652 Another issue is the potential for catastrophic failures when a
1653 single elliptic curve is widely used. In this case, an attack on the
1654 elliptic curve might result in the compromise of a large number of
1655 keys. Again, this concern may need to be balanced against efficiency
1656 and interoperability improvements associated with widely-used curves.
1657 Substantial additional information on elliptic curve choice can be
1658 found in [4], [5], [6], [8].
1660 Implementors and users must also consider whether they need forward
1661 secrecy. Forward secrecy refers to the property that session keys
1662 are not compromised if the static, certified keys belonging to the
1663 server and client are compromised. The ECDHE_ECDSA and ECDHE_RSA key
1664 exchange algorithms provide forward secrecy protection in the event
1665 of server key compromise, while ECDH_ECDSA and ECDH_RSA do not.
1666 Similarly if the client is providing a static, certified key,
1667 ECDSA_sign client authentication provides forward secrecy protection
1668 in the event of client key compromise, while ECDSA_fixed_ECDH and
1669 RSA_fixed_ECDH do not. Thus to obtain complete forward secrecy
1670 protection, ECDHE_ECDSA or ECDHE_RSA must be used for key exchange,
1671 with ECDSA_sign used for client authentication if necessary. Here
1672 again the security benefits of forward secrecy may need to be
1673 balanced against the improved efficiency offered by other options.
1678 Gupta, et al. Expires October 9, 2005 [Page 30]
1680 Internet-Draft ECC Cipher Suites for TLS April 2005
1685 The authors wish to thank Bill Anderson and Tim Dierks.
1734 Gupta, et al. Expires October 9, 2005 [Page 31]
1736 Internet-Draft ECC Cipher Suites for TLS April 2005
1741 9.1 Normative References
1743 [1] Bradner, S., "Key Words for Use in RFCs to Indicate Requirement
1744 Levels", RFC 2119, March 1997.
1746 [2] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
1747 RFC 2246, January 1999.
1749 [3] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., and
1750 T. Wright, "Transport Layer Security (TLS) Extensions",
1751 draft-ietf-tls-rfc3546bis-00.txt (work in progress), Nov. 2004.
1753 [4] SECG, "Elliptic Curve Cryptography", SEC 1, 2000,
1754 <http://www.secg.org/>.
1756 [5] IEEE, "Standard Specifications for Public Key Cryptography",
1759 [6] ANSI, "Public Key Cryptography For The Financial Services
1760 Industry: The Elliptic Curve Digital Signature Algorithm
1761 (ECDSA)", ANSI X9.62, 1998.
1763 [7] NIST, "Secure Hash Standard", FIPS 180-2, 2002.
1765 [8] NIST, "Digital Signature Standard", FIPS 186-2, 2000.
1767 [9] RSA Laboratories, "PKCS#1: RSA Encryption Standard version
1768 1.5", PKCS 1, November 1993.
1770 [10] SECG, "Recommended Elliptic Curve Domain Parameters", SEC 2,
1771 2000, <http://www.secg.org/>.
1773 [11] Polk, T., Housley, R., and L. Bassham, "Algorithms and
1774 Identifiers for the Internet X.509 Public Key Infrastructure
1775 Certificate and Certificate Revocation List (CRL) Profile",
1776 RFC 3279, April 2002.
1778 9.2 Informative References
1780 [12] Harper, G., Menezes, A., and S. Vanstone, "Public-Key
1781 Cryptosystems with Very Small Key Lengths", Advances in
1782 Cryptology -- EUROCRYPT '92, LNCS 658, 1993.
1784 [13] Lenstra, A. and E. Verheul, "Selecting Cryptographic Key
1785 Sizes", Journal of Cryptology 14 (2001) 255-293,
1786 <http://www.cryptosavvy.com/>.
1790 Gupta, et al. Expires October 9, 2005 [Page 32]
1792 Internet-Draft ECC Cipher Suites for TLS April 2005
1795 [14] Freier, A., Karlton, P., and P. Kocher, "The SSL Protocol
1796 Version 3.0", November 1996,
1797 <http://wp.netscape.com/eng/ssl3/draft302.txt>.
1799 [15] Chown, P., "Advanced Encryption Standard (AES) Ciphersuites for
1800 Transport Layer Security (TLS)", RFC 3268, June 2002.
1806 Sun Microsystems Laboratories
1809 Menlo Park, CA 94025
1812 Phone: +1 650 786 7551
1813 Email: vipul.gupta@sun.com
1817 Basic Commerce & Industries, Inc.
1823 Phone: +1 416 214 5961
1824 Email: sblakewilson@bcisse.com
1828 University of Calgary
1829 Dept of Math & Stats
1830 2500 University Dr NW
1834 Phone: +1 403 220 5735
1835 Email: bodo@openssl.org
1841 Email: chris@corriente.net
1846 Gupta, et al. Expires October 9, 2005 [Page 33]
1848 Internet-Draft ECC Cipher Suites for TLS April 2005
1853 Email: nelson@bolyard.com
1902 Gupta, et al. Expires October 9, 2005 [Page 34]
1904 Internet-Draft ECC Cipher Suites for TLS April 2005
1907 Intellectual Property Statement
1909 The IETF takes no position regarding the validity or scope of any
1910 Intellectual Property Rights or other rights that might be claimed to
1911 pertain to the implementation or use of the technology described in
1912 this document or the extent to which any license under such rights
1913 might or might not be available; nor does it represent that it has
1914 made any independent effort to identify any such rights. Information
1915 on the procedures with respect to rights in RFC documents can be
1916 found in BCP 78 and BCP 79.
1918 Copies of IPR disclosures made to the IETF Secretariat and any
1919 assurances of licenses to be made available, or the result of an
1920 attempt made to obtain a general license or permission for the use of
1921 such proprietary rights by implementers or users of this
1922 specification can be obtained from the IETF on-line IPR repository at
1923 http://www.ietf.org/ipr.
1925 The IETF invites any interested party to bring to its attention any
1926 copyrights, patents or patent applications, or other proprietary
1927 rights that may cover technology that may be required to implement
1928 this standard. Please address the information to the IETF at
1932 Disclaimer of Validity
1934 This document and the information contained herein are provided on an
1935 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1936 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1937 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1938 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1939 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1940 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1945 Copyright (C) The Internet Society (2005). This document is subject
1946 to the rights, licenses and restrictions contained in BCP 78, and
1947 except as set forth therein, the authors retain all their rights.
1952 Funding for the RFC Editor function is currently provided by the
1958 Gupta, et al. Expires October 9, 2005 [Page 35]