4 TLS Working Group V. Gupta
5 Internet-Draft Sun Labs
6 Expires: March 20, 2006 S. Blake-Wilson
16 ECC Cipher Suites for TLS
17 <draft-ietf-tls-ecc-11.txt>
21 By submitting this Internet-Draft, each author represents that any
22 applicable patent or other IPR claims of which he or she is aware
23 have been or will be disclosed, and any of which he or she becomes
24 aware will be disclosed, in accordance with Section 6 of BCP 79.
26 Internet-Drafts are working documents of the Internet Engineering
27 Task Force (IETF), its areas, and its working groups. Note that
28 other groups may also distribute working documents as Internet-
31 Internet-Drafts are draft documents valid for a maximum of six months
32 and may be updated, replaced, or obsoleted by other documents at any
33 time. It is inappropriate to use Internet-Drafts as reference
34 material or to cite them other than as "work in progress."
36 The list of current Internet-Drafts can be accessed at
37 http://www.ietf.org/ietf/1id-abstracts.txt.
39 The list of Internet-Draft Shadow Directories can be accessed at
40 http://www.ietf.org/shadow.html.
42 This Internet-Draft will expire on March 20, 2006.
46 Copyright (C) The Internet Society (2005).
50 This document describes new key exchange algorithms based on Elliptic
51 Curve Cryptography (ECC) for the TLS (Transport Layer Security)
55 Gupta, et al. Expires March 20, 2006 [Page 1]
57 Internet-Draft ECC Cipher Suites for TLS September 2005
60 protocol. In particular, it specifies the use of Elliptic Curve
61 Diffie-Hellman (ECDH) key agreement in a TLS handshake and the use of
62 Elliptic Curve Digital Signature Algorithm (ECDSA) as a new
63 authentication mechanism.
65 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
66 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
67 document are to be interpreted as described in RFC 2119 [1].
69 Please send comments on this document to the TLS mailing list.
73 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
74 2. Key Exchange Algorithms . . . . . . . . . . . . . . . . . . 5
75 2.1 ECDH_ECDSA . . . . . . . . . . . . . . . . . . . . . . . . 7
76 2.2 ECDHE_ECDSA . . . . . . . . . . . . . . . . . . . . . . . 7
77 2.3 ECDH_RSA . . . . . . . . . . . . . . . . . . . . . . . . . 7
78 2.4 ECDHE_RSA . . . . . . . . . . . . . . . . . . . . . . . . 7
79 2.5 ECDH_anon . . . . . . . . . . . . . . . . . . . . . . . . 8
80 3. Client Authentication . . . . . . . . . . . . . . . . . . . 9
81 3.1 ECDSA_sign . . . . . . . . . . . . . . . . . . . . . . . . 9
82 3.2 ECDSA_fixed_ECDH . . . . . . . . . . . . . . . . . . . . . 10
83 3.3 RSA_fixed_ECDH . . . . . . . . . . . . . . . . . . . . . . 10
84 4. TLS Extensions for ECC . . . . . . . . . . . . . . . . . . . 11
85 5. Data Structures and Computations . . . . . . . . . . . . . . 12
86 5.1 Client Hello Extensions . . . . . . . . . . . . . . . . . 12
87 5.2 Server Hello Extension . . . . . . . . . . . . . . . . . . 15
88 5.3 Server Certificate . . . . . . . . . . . . . . . . . . . . 16
89 5.4 Server Key Exchange . . . . . . . . . . . . . . . . . . . 18
90 5.5 Certificate Request . . . . . . . . . . . . . . . . . . . 22
91 5.6 Client Certificate . . . . . . . . . . . . . . . . . . . . 23
92 5.7 Client Key Exchange . . . . . . . . . . . . . . . . . . . 24
93 5.8 Certificate Verify . . . . . . . . . . . . . . . . . . . . 25
94 5.9 Elliptic Curve Certificates . . . . . . . . . . . . . . . 26
95 5.10 ECDH, ECDSA and RSA Computations . . . . . . . . . . . . 26
96 6. Cipher Suites . . . . . . . . . . . . . . . . . . . . . . . 28
97 7. Security Considerations . . . . . . . . . . . . . . . . . . 30
98 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . 31
99 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 32
100 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 33
101 10.1 Normative References . . . . . . . . . . . . . . . . . . 33
102 10.2 Informative References . . . . . . . . . . . . . . . . . 33
103 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 34
104 Intellectual Property and Copyright Statements . . . . . . . 36
111 Gupta, et al. Expires March 20, 2006 [Page 2]
113 Internet-Draft ECC Cipher Suites for TLS September 2005
118 Elliptic Curve Cryptography (ECC) is emerging as an attractive
119 public-key cryptosystem for mobile/wireless environments. Compared
120 to currently prevalent cryptosystems such as RSA, ECC offers
121 equivalent security with smaller key sizes. This is illustrated in
122 the following table, based on [14], which gives approximate
123 comparable key sizes for symmetric- and asymmetric-key cryptosystems
124 based on the best-known algorithms for attacking them.
126 Symmetric | ECC | DH/DSA/RSA
127 -------------+---------+------------
134 Table 1: Comparable key sizes (in bits)
137 Smaller key sizes result in power, bandwidth and computational
138 savings that make ECC especially attractive for constrained
141 This document describes additions to TLS to support ECC. In
142 particular, it defines
144 o the use of the Elliptic Curve Diffie-Hellman (ECDH) key agreement
145 scheme with long-term or ephemeral keys to establish the TLS
146 premaster secret, and
148 o the use of fixed-ECDH certificates and ECDSA for authentication of
151 The remainder of this document is organized as follows. Section 2
152 provides an overview of ECC-based key exchange algorithms for TLS.
153 Section 3 describes the use of ECC certificates for client
154 authentication. TLS extensions that allow a client to negotiate the
155 use of specific curves and point formats are presented in Section 4.
156 Section 5 specifies various data structures needed for an ECC-based
157 handshake, their encoding in TLS messages and the processing of those
158 messages. Section 6 defines new ECC-based cipher suites and
159 identifies a small subset of these as recommended for all
160 implementations of this specification. Section 7 discusses security
161 considerations. Section 8 describes IANA considerations for the name
162 spaces created by this document. Section 9 gives acknowledgments.
163 This is followed by the lists of normative and informative references
167 Gupta, et al. Expires March 20, 2006 [Page 3]
169 Internet-Draft ECC Cipher Suites for TLS September 2005
172 cited in this document, the authors' contact information, and
173 statements on intellectual property rights and copyrights.
175 Implementation of this specification requires familiarity with TLS
176 [2], TLS extensions [3] and ECC [4][5][6][8].
223 Gupta, et al. Expires March 20, 2006 [Page 4]
225 Internet-Draft ECC Cipher Suites for TLS September 2005
228 2. Key Exchange Algorithms
230 This document introduces five new ECC-based key exchange algorithms
231 for TLS. All of them use ECDH to compute the TLS premaster secret
232 and differ only in the lifetime of ECDH keys (long-term or ephemeral)
233 and the mechanism (if any) used to authenticate them. The derivation
234 of the TLS master secret from the premaster secret and the subsequent
235 generation of bulk encryption/MAC keys and initialization vectors is
236 independent of the key exchange algorithm and not impacted by the
239 The table below summarizes the new key exchange algorithms which
240 mimic DH_DSS, DHE_DSS, DH_RSA, DHE_RSA, and DH_anon (see [2]),
245 Algorithm Description
246 --------- -----------
248 ECDH_ECDSA Fixed ECDH with ECDSA-signed certificates.
250 ECDHE_ECDSA Ephemeral ECDH with ECDSA signatures.
252 ECDH_RSA Fixed ECDH with RSA-signed certificates.
254 ECDHE_RSA Ephemeral ECDH with RSA signatures.
256 ECDH_anon Anonymous ECDH, no signatures.
258 Table 2: ECC key exchange algorithms
261 The ECDHE_ECDSA and ECDHE_RSA key exchange mechanisms provide forward
262 secrecy. With ECDHE_RSA, a server can reuse its existing RSA
263 certificate and easily comply with a constrained client's elliptic
264 curve preferences (see Section 4). However, the computational cost
265 incurred by a server is higher for ECDHE_RSA than for the traditional
266 RSA key exchange which does not provide forward secrecy.
268 The ECDH_RSA mechanism requires a server to acquire an ECC
269 certificate but the certificate issuer can still use an existing RSA
270 key for signing. This eliminates the need to update the trusted key
271 store in TLS clients. The ECDH_ECDSA mechanism requires ECC keys for
272 the server as well as the certification authority and is best suited
273 for constrained devices unable to support RSA.
275 The anonymous key exchange algorithm does not provide authentication
279 Gupta, et al. Expires March 20, 2006 [Page 5]
281 Internet-Draft ECC Cipher Suites for TLS September 2005
284 of the server or the client. Like other anonymous TLS key exchanges,
285 it is subject to man-in-the-middle attacks. Implementations of this
286 algorithm SHOULD provide authentication by other means.
288 Note that there is no structural difference between ECDH and ECDSA
289 keys. A certificate issuer may use X509.v3 keyUsage and
290 extendedKeyUsage extensions to restrict the use of an ECC public key
291 to certain computations. This document refers to an ECC key as ECDH-
292 capable if its use in ECDH is permitted. ECDSA-capable is defined
299 ClientHello -------->
304 <-------- ServerHelloDone
313 Application Data <-------> Application Data
316 * message is not sent under some conditions
317 + message is not sent unless client authentication
320 Figure 1: Message flow in a full TLS handshake
323 Figure 1 shows all messages involved in the TLS key establishment
324 protocol (aka full handshake). The addition of ECC has direct impact
325 only on the ClientHello, the ServerHello, the server's Certificate
326 message, the ServerKeyExchange, the ClientKeyExchange, the
327 CertificateRequest, the client's Certificate message, and the
328 CertificateVerify. Next, we describe each ECC key exchange algorithm
329 in greater detail in terms of the content and processing of these
330 messages. For ease of exposition, we defer discussion of client
331 authentication and associated messages (identified with a + in
335 Gupta, et al. Expires March 20, 2006 [Page 6]
337 Internet-Draft ECC Cipher Suites for TLS September 2005
340 Figure 1) until Section 3 and of the optional ECC-specific extensions
341 (which impact the Hello messages) until Section 4.
345 In ECDH_ECDSA, the server's certificate MUST contain an ECDH-capable
346 public key and be signed with ECDSA.
348 A ServerKeyExchange MUST NOT be sent (the server's certificate
349 contains all the necessary keying information required by the client
350 to arrive at the premaster secret).
352 The client generates an ECDH key pair on the same curve as the
353 server's long-term public key and send its public key in the
354 ClientKeyExchange message (except when using client authentication
355 algorithm ECDSA_fixed_ECDH or RSA_fixed_ECDH, in which case the
356 modifications from Section 3.2 or Section 3.3 apply).
358 Both client and server perform an ECDH operation and use the
359 resultant shared secret as the premaster secret. All ECDH
360 calculations are performed as specified in Section 5.10
364 In ECDHE_ECDSA, the server's certificate MUST contain an ECDSA-
365 capable public key and be signed with ECDSA.
367 The server sends its ephemeral ECDH public key and a specification of
368 the corresponding curve in the ServerKeyExchange message. These
369 parameters MUST be signed with ECDSA using the private key
370 corresponding to the public key in the server's Certificate.
372 The client generates 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 perform an ECDH operation (Section 5.10) and
377 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
387 server's certificate MUST contain an RSA public key authorized for
391 Gupta, et al. Expires March 20, 2006 [Page 7]
393 Internet-Draft ECC Cipher Suites for TLS September 2005
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 generates 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 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.
418 Note that while the ECDH_ECDSA, ECDHE_ECDSA, ECDH_RSA, and ECDHE_RSA
419 key exchange algorithms require the server's certificate to be signed
420 with a particular signature scheme, this specification (following the
421 similar cases DH_DSS, DHE_DSS, DH_RSA, and DHE_RSA in [2]) does not
422 impose restrictions on signature schemes used elsewhere in the
423 certificate chain. (Often such restrictions will be useful, and it
424 is expected that this will be taken into account in certification
425 authorities' signing practices. However, such restrictions are not
426 strictly required in general: Even if it is beyond the capabilities
427 of a client to completely validate a given chain, the client may be
428 able to validate the server's certificate by relying on a trust
429 anchor that appears as one of the intermediate certificates in the
447 Gupta, et al. Expires March 20, 2006 [Page 8]
449 Internet-Draft ECC Cipher Suites for TLS September 2005
452 3. Client Authentication
454 This document defines three new client authentication mechanisms
455 named after the type of client certificate involved: ECDSA_sign,
456 ECDSA_fixed_ECDH and RSA_fixed_ECDH. The ECDSA_sign mechanism is
457 usable with any of the non-anonymous ECC key exchange algorithms
458 described in Section 2 as well as other non-anonymous (non-ECC) key
459 exchange algorithms defined in TLS [2]. The ECDSA_fixed_ECDH and
460 RSA_fixed_ECDH mechanisms are usable with ECDH_ECDSA and ECDH_RSA.
461 Their use with ECDHE_ECDSA and ECDHE_RSA is prohibited because the
462 use of a long-term ECDH client key would jeopardize the forward
463 secrecy property of these algorithms.
465 The server can request ECC-based client authentication by including
466 one or more of these certificate types in its CertificateRequest
467 message. The server must not include any certificate types that are
468 prohibited for the negotiated key exchange algorithm. The client
469 must check if it possesses a certificate appropriate for any of the
470 methods suggested by the server and is willing to use it for
473 If these conditions are not met, the client should send a client
474 Certificate message containing no certificates. In this case, the
475 ClientKeyExchange should be sent as described in Section 2 and the
476 CertificateVerify should not be sent. If the server requires client
477 authentication, it may respond with a fatal handshake failure alert.
479 If the client has an appropriate certificate and is willing to use it
480 for authentication, it must send that certificate in the client's
481 Certificate message (as per Section 5.6) and prove possession of the
482 private key corresponding to the certified key. The process of
483 determining an appropriate certificate and proving possession is
484 different for each authentication mechanism and described below.
486 NOTE: It is permissible for a server to request (and the client to
487 send) a client certificate of a different type than the server
492 To use this authentication mechanism, the client MUST possess a
493 certificate containing an ECDSA-capable public key and signed with
496 The client proves possession of the private key corresponding to the
497 certified key by including a signature in the CertificateVerify
498 message as described in Section 5.8.
503 Gupta, et al. Expires March 20, 2006 [Page 9]
505 Internet-Draft ECC Cipher Suites for TLS September 2005
510 To use this authentication mechanism, the client MUST possess a
511 certificate containing an ECDH-capable public key and that
512 certificate MUST be signed with ECDSA. Furthermore, the client's
513 ECDH key MUST be on the same elliptic curve as the server's long-term
514 (certified) ECDH key. This might limit use of this mechanism to
515 closed environments. In situations where the client has an ECC key
516 on a different curve, it would have to authenticate either using
517 ECDSA_sign or a non-ECC mechanism (e.g. RSA). Using fixed ECDH for
518 both servers and clients is computationally more efficient than
519 mechanisms providing forward secrecy.
521 When using this authentication mechanism, the client MUST send an
522 empty ClientKeyExchange as described in Section 5.7 and MUST NOT send
523 the CertificateVerify message. The ClientKeyExchange is empty since
524 the client's ECDH public key required by the server to compute the
525 premaster secret is available inside the client's certificate. The
526 client's ability to arrive at the same premaster secret as the server
527 (demonstrated by a successful exchange of Finished messages) proves
528 possession of the private key corresponding to the certified public
529 key and the CertificateVerify message is unnecessary.
533 This authentication mechanism is identical to ECDSA_fixed_ECDH except
534 the client's certificate MUST be signed with RSA.
536 Note that while the ECDSA_sign, ECDSA_fixed_ECDH, and RSA_fixed_ECDH
537 client authentication mechanisms require the clients's certificate to
538 be signed with a particular signature scheme, this specification does
539 not impose restrictions on signature schemes used elsewhere in the
540 certificate chain. (Often such restrictions will be useful, and it
541 is expected that this will be taken into account in certification
542 authorities' signing practices. However, such restrictions are not
543 strictly required in general: Even if it is beyond the capabilities
544 of a server to completely validate a given chain, the server may be
545 able to validate the clients certificate by relying on a trust anchor
546 that appears as one of the intermediate certificates in the chain.)
559 Gupta, et al. Expires March 20, 2006 [Page 10]
561 Internet-Draft ECC Cipher Suites for TLS September 2005
564 4. TLS Extensions for ECC
566 Two new TLS extensions are defined in this specification: (i) the
567 Supported Elliptic Curves Extension, and (ii) the Supported Point
568 Formats Extension. These allow negotiating the use of specific
569 curves and point formats (e.g. compressed vs. uncompressed),
570 respectively, during a handshake starting a new session. These
571 extensions are especially relevant for constrained clients that may
572 only support a limited number of curves or point formats. They
573 follow the general approach outlined in [3]; message details are
574 specified in Section 5. The client enumerates the curves it supports
575 and the point formats it can parse by including the appropriate
576 extensions in its ClientHello message. The server similarly
577 enumerates the point formats it can parse by including an extension
578 in its ServerHello message.
580 A TLS client that proposes ECC cipher suites in its ClientHello
581 message SHOULD include these extensions. Servers implementing ECC
582 cipher suites MUST support these extensions, and when a client uses
583 these extensions, servers MUST NOT negotiate the use of an ECC cipher
584 suite unless they can complete the handshake while respecting the
585 choice of curves and compression techniques specified by the client.
586 This eliminates the possibility that a negotiated ECC handshake will
587 be subsequently aborted due to a client's inability to deal with the
590 These extensions MUST NOT be included if the client does not propose
591 any ECC cipher suites. A client that proposes ECC cipher suites may
592 choose not to include these extension. In this case, the server is
593 free to choose any one of the elliptic curves or point formats listed
594 in Section 5. That section also describes the structure and
595 processing of these extensions in greater detail.
597 In the case of session resumption, the server simply ignores the
598 Supported Elliptic Curves Extension and the Supported Point Formats
599 Extension as appearing in the current ClientHello message. These
600 extensions only play a role during handshakes negotiating a new
615 Gupta, et al. Expires March 20, 2006 [Page 11]
617 Internet-Draft ECC Cipher Suites for TLS September 2005
620 5. Data Structures and Computations
622 This section specifies the data structures and computations used by
623 ECC-based key mechanisms specified in Section 2, Section 3 and
624 Section 4. The presentation language used here is the same as that
625 used in TLS [2]. Since this specification extends TLS, these
626 descriptions should be merged with those in the TLS specification and
627 any others that extend TLS. This means that enum types may not
628 specify all possible values and structures with multiple formats
629 chosen with a select() clause may not indicate all possible cases.
631 5.1 Client Hello Extensions
633 This section specifies two TLS extensions that can be included with
634 the ClientHello message as described in [3], the Supported Elliptic
635 Curves Extension and the Supported Point Formats Extension.
637 When these extensions are sent:
639 The extensions SHOULD be sent along with any ClientHello message that
640 proposes ECC cipher suites.
642 Meaning of these extensions:
644 These extensions allow a client to enumerate the elliptic curves it
645 supports and/or the point formats it can parse.
647 Structure of these extensions:
649 The general structure of TLS extensions is described in [3] and this
650 specification adds two new types to ExtensionType.
653 enum { elliptic_curves(??), ec_point_formats(??) } ExtensionType;
655 [[ EDITOR: The values used for elliptic_curves and ec_point_formats
656 have been left as ??. These values will be assigned when this draft
657 progresses to RFC. (The examples below will have to be changed
660 elliptic_curves (Supported Elliptic Curves Extension): Indicates the
661 set of elliptic curves supported by the client. For this
662 extension, the opaque extension_data field contains
671 Gupta, et al. Expires March 20, 2006 [Page 12]
673 Internet-Draft ECC Cipher Suites for TLS September 2005
676 ec_point_formats (Supported Point Formats Extension): Indicates the
677 set of point formats that the client can parse. For this
678 extension, the opaque extension_data field contains
683 sect163k1 (1), sect163r1 (2), sect163r2 (3),
684 sect193r1 (4), sect193r2 (5), sect233k1 (6),
685 sect233r1 (7), sect239k1 (8), sect283k1 (9),
686 sect283r1 (10), sect409k1 (11), sect409r1 (12),
687 sect571k1 (13), sect571r1 (14), secp160k1 (15),
688 secp160r1 (16), secp160r2 (17), secp192k1 (18),
689 secp192r1 (19), secp224k1 (20), secp224r1 (21),
690 secp256k1 (22), secp256r1 (23), secp384r1 (24),
692 reserved (0xFE00..0xFEFF),
693 arbitrary_explicit_prime_curves(0xFF01),
694 arbitrary_explicit_char2_curves(0xFF02),
698 sect163k1, etc: Indicates support of the corresponding named curve
699 or class of explicitly defined curves. The named curves defined
700 here are those specified in SEC 2 [10]. Note that many of these
701 curves are also recommended in ANSI X9.62 [6] and FIPS 186-2 [8].
702 Values 0xFE00 through 0xFEFF are reserved for private use. Values
703 0xFF01 and 0xFF02 indicate that the client supports arbitrary
704 prime and characteristic-2 curves, respectively (the curve
705 parameters must be encoded explicitly in ECParameters).
707 The NamedCurve name space is maintained by IANA. See Section 8 for
708 information on how new value assignments are added.
712 NamedCurve elliptic_curve_list<1..2^8-1>
716 Items in elliptic_curve_list are ordered according to the client's
717 preferences (favorite choice first).
719 As an example, a client that only supports secp192r1 (aka NIST P-192;
720 value 19 = 0x0013) and secp224r1 (aka NIST P-224; value 21 = 0x0015)
721 and prefers to use secp192r1 would include a TLS extension consisting
722 of the following octets:
727 Gupta, et al. Expires March 20, 2006 [Page 13]
729 Internet-Draft ECC Cipher Suites for TLS September 2005
732 00 ?? 00 06 00 04 00 13 00 15
734 A client that supports arbitrary explicit characteristic-2 curves
735 (value 0xFF02) would include an extension consisting of the following
738 00 ?? 00 04 00 02 FF 02
741 enum { uncompressed (0), ansiX962_compressed_prime (1),
742 ansiX962_compressed_char2 (2), reserved (248..255)
746 ECPointFormat ec_point_format_list<1..2^8-1>
749 Three point formats are included in the definition of ECPointFormat
750 above. The uncompressed point format is the default format in that
751 implementations of this document MUST support it for all of their
752 supported curves. Compressed point formats reduce bandwidth by
753 including only the x-coordinate and a single bit of the y-coordinate
754 of the point. Implementations of this document MAY support the
755 ansiX962_compressed_prime and ansiX962_compressed_char2 formats,
756 where the former applies only to prime curves and the latter applies
757 only to characteristic-2 curves. (These formats are specified in
758 [6].) Values 248 through 255 are reserved for private use.
760 The ECPointFormat name space is maintained by IANA. See Section 8
761 for information on how new value assignments are added.
763 Items in ec_point_format_list are ordered according to the client's
764 preferences (favorite choice first).
766 A client that can parse only the uncompressed point format (value 0)
767 includes an extension consisting of the following octets:
771 A client that in the case of prime fields prefers the compressed
772 format (ansiX962_compressed_prime, value 1) over the uncompressed
773 format (value 0), but in the case of characteristic-2 fields prefers
774 the uncompressed format (value 0) over the compressed format
775 (ansiX962_compressed_char2, value 2), may indicate these preferences
776 by including an extension consisting of the following octets:
778 00 ?? 00 04 03 01 00 02
783 Gupta, et al. Expires March 20, 2006 [Page 14]
785 Internet-Draft ECC Cipher Suites for TLS September 2005
788 Actions of the sender:
790 A client that proposes ECC cipher suites in its ClientHello message
791 appends these extensions (along with any others), enumerating the
792 curves it supports and the point formats it can parse. Clients
793 SHOULD send both the Supported Elliptic Curves Extension and the
794 Supported Point Formats Extension. If the Supported Point Formats
795 Extension is indeed sent, it MUST contain the value 0 (uncompressed)
796 as one of the items in the list of point formats.
798 Actions of the receiver:
800 A server that receives a ClientHello containing one or both of these
801 extensions MUST use the client's enumerated capabilities to guide its
802 selection of an appropriate cipher suite. One of the proposed ECC
803 cipher suites must be negotiated only if the server can successfully
804 complete the handshake while using the curves and point formats
805 supported by the client (cf. Section 5.3 and Section 5.4).
807 NOTE: A server participating in an ECDHE-ECDSA key exchange may use
808 different curves for (i) the ECDSA key in its certificate, and (ii)
809 the ephemeral ECDH key in the ServerKeyExchange message. The server
810 must consider the "elliptic_curves" extension in selecting both of
813 If a server does not understand the "elliptic_curves" extension or is
814 unable to complete the ECC handshake while restricting itself to the
815 enumerated curves, it MUST NOT negotiate the use of an ECC cipher
816 suite. Depending on what other cipher suites are proposed by the
817 client and supported by the server, this may result in a fatal
818 handshake failure alert due to the lack of common cipher suites.
820 5.2 Server Hello Extension
822 This section specifies a TLS extension that can be included with the
823 ServerHello message as described in [3], the Supported Point Formats
826 When this extension is sent:
828 The Supported Point Formats Extension is included in a ServerHello
829 message in response to a ClientHello message containing the Supported
830 Point Formats Extension when negotiating an ECC cipher suite.
832 Meaning of this extensions:
834 This extension allows a server to enumerate the point formats it can
835 parse (for the curve that will appear in its ServerKeyExchange
839 Gupta, et al. Expires March 20, 2006 [Page 15]
841 Internet-Draft ECC Cipher Suites for TLS September 2005
844 message when using the ECDHE_ECDSA, ECDHE_RSA, or ECDH_anon key
845 exchange algorithm, or for the curve that is used in the server's
846 public key that will appear in its Certificate message when using the
847 ECDH_ECDSA or ECDH_RSA key exchange algorithm).
849 Structure of this extension:
851 The server's Supported Point Formats Extension has the same structure
852 as the client's Supported Point Formats Extension. Items in
853 elliptic_curve_list here are ordered according to the server's
854 preference (favorite choice first). Note that the server may include
855 items that were not found in the client's list (e.g., the server may
856 prefer to receive points in compressed format even when a client
857 cannot parse this format: the same client may nevertheless be capable
858 to output points in compressed format).
860 Actions of the sender:
862 A server that selects an ECC cipher suite in response to a
863 ClientHello message including a Supported Point Formats Extension
864 appends this extension (along with others) to its ServerHello
865 message, enumerating the point formats it can parse. The Supported
866 Point Formats Extension, when used, MUST contain the value 0
867 (uncompressed) as one of the items in the list of point formats.
869 Actions of the receiver:
871 A client that receives a ServerHello message containing a Supported
872 Point Formats Extension MUST respect the server's choice of point
873 formats during the handshake (cf. Section 5.6 and Section 5.7). If
874 no Supported Point Formats Extension is received with the
875 ServerHello, this is equivalent to an extension allowing only the
876 uncompressed point format.
878 5.3 Server Certificate
880 When this message is sent:
882 This message is sent in all non-anonymous ECC-based key exchange
885 Meaning of this message:
887 This message is used to authentically convey the server's static
888 public key to the client. The following table shows the server
889 certificate type appropriate for each key exchange algorithm. ECC
890 public keys must be encoded in certificates as described in
895 Gupta, et al. Expires March 20, 2006 [Page 16]
897 Internet-Draft ECC Cipher Suites for TLS September 2005
900 NOTE: The server's Certificate message is capable of carrying a chain
901 of certificates. The restrictions mentioned in Table 3 apply only to
902 the server's certificate (first in the chain).
905 Key Exchange Algorithm Server Certificate Type
906 ---------------------- -----------------------
908 ECDH_ECDSA Certificate must contain an
909 ECDH-capable public key. It
910 must be signed with ECDSA.
912 ECDHE_ECDSA Certificate must contain an
913 ECDSA-capable public key. It
914 must be signed with ECDSA.
916 ECDH_RSA Certificate must contain an
917 ECDH-capable public key. It
918 must be signed with RSA.
920 ECDHE_RSA Certificate must contain an
921 RSA public key authorized for
922 use in digital signatures. It
923 must be signed with RSA.
925 Table 3: Server certificate types
928 Structure of this message:
930 Identical to the TLS Certificate format.
932 Actions of the sender:
934 The server constructs an appropriate certificate chain and conveys it
935 to the client in the Certificate message. If the client has used a
936 Supported Elliptic Curves Extension, the public key in the server's
937 certificate MUST respect the client's choice of elliptic curves; in
938 particular, the public key MUST employ a named curve (not the same
939 curve as an explicit curve) unless the client has indicated support
940 for explicit curves of the appropriate type. If the client has used
941 a Supported Point Formats Extension, both the server's public key
942 point and (in the case of an explicit curve) the curve's base point
943 MUST respect the client's choice of point formats. (A server that
944 cannot satisfy these requirements must not choose an ECC cipher suite
945 in its ServerHello message.)
947 Actions of the receiver:
951 Gupta, et al. Expires March 20, 2006 [Page 17]
953 Internet-Draft ECC Cipher Suites for TLS September 2005
956 The client validates the certificate chain, extracts the server's
957 public key, and checks that the key type is appropriate for the
958 negotiated key exchange algorithm.
960 5.4 Server Key Exchange
962 When this message is sent:
964 This message is sent when using the ECDHE_ECDSA, ECDHE_RSA and
965 ECDH_anon key exchange algorithms.
967 Meaning of this message:
969 This message is used to convey the server's ephemeral ECDH public key
970 (and the corresponding elliptic curve domain parameters) to the
973 Structure of this message:
975 enum { explicit_prime (1), explicit_char2 (2),
976 named_curve (3), reserved(248..255) } ECCurveType;
978 explicit_prime: Indicates the elliptic curve domain parameters are
979 conveyed verbosely, and the underlying finite field is a prime
982 explicit_char2: Indicates the elliptic curve domain parameters are
983 conveyed verbosely, and the underlying finite field is a
984 characteristic-2 field.
986 named_curve: Indicates that a named curve is used. This option
987 SHOULD be used when applicable.
989 Values 248 through 255 are reserved for private use.
991 The ECCurveType name space is maintained by IANA. See Section 8 for
992 information on how new value assignments are added.
999 a, b: These parameters specify the coefficients of the elliptic
1000 curve. Each value contains the byte string representation of a
1001 field element following the conversion routine in Section 4.3.3 of
1007 Gupta, et al. Expires March 20, 2006 [Page 18]
1009 Internet-Draft ECC Cipher Suites for TLS September 2005
1013 opaque point <1..2^8-1>;
1016 point: This is the byte string representation of an elliptic curve
1017 point following the conversion routine in Section 4.3.6 of ANSI
1018 X9.62 [6]. This byte string may represent an elliptic curve point
1019 in uncompressed, or compressed format; it MUST conform to what the
1020 client has requested through a Supported Point Formats Extension
1021 if this extension was used.
1024 enum { ec_basis_trinomial, ec_basis_pentanomial } ECBasisType;
1026 ec_basis_trinomial: Indicates representation of a characteristic-2
1027 field using a trinomial basis.
1029 ec_basis_pentanomial: Indicates representation of a characteristic-2
1030 field using a pentanomial basis.
1034 ECCurveType curve_type;
1035 select (curve_type) {
1036 case explicit_prime:
1037 opaque prime_p <1..2^8-1>;
1040 opaque order <1..2^8-1>;
1041 opaque cofactor <1..2^8-1>;
1042 case explicit_char2:
1047 opaque k <1..2^8-1>;
1048 case ec_pentanomial:
1049 opaque k1 <1..2^8-1>;
1050 opaque k2 <1..2^8-1>;
1051 opaque k3 <1..2^8-1>;
1055 opaque order <1..2^8-1>;
1056 opaque cofactor <1..2^8-1>;
1058 NamedCurve namedcurve;
1063 Gupta, et al. Expires March 20, 2006 [Page 19]
1065 Internet-Draft ECC Cipher Suites for TLS September 2005
1070 curve_type: This identifies the type of the elliptic curve domain
1073 prime_p: This is the odd prime defining the field Fp.
1075 curve: Specifies the coefficients a and b of the elliptic curve E.
1077 base: Specifies the base point G on the elliptic curve.
1079 order: Specifies the order n of the base point.
1081 cofactor: Specifies the cofactor h = #E(Fq)/n, where #E(Fq)
1082 represents the number of points on the elliptic curve E defined
1083 over the field Fq (either Fp or F2^m).
1085 m: This is the degree of the characteristic-2 field F2^m.
1087 k: The exponent k for the trinomial basis representation x^m + x^k
1090 k1, k2, k3: The exponents for the pentanomial representation x^m +
1091 x^k3 + x^k2 + x^k1 + 1 (such that k3 > k2 > k1).
1093 namedcurve: Specifies a recommended set of elliptic curve domain
1094 parameters. All those values of NamedCurve are allowed that refer
1095 to a specific curve. Values of NamedCurve that indicate support
1096 for a class of explicitly defined curves are not allowed here
1097 (they are only permissible in the ClientHello extension); this
1098 applies to arbitrary_explicit_prime_curves(0xFF01) and
1099 arbitrary_explicit_char2_curves(0xFF02).
1103 ECParameters curve_params;
1107 curve_params: Specifies the elliptic curve domain parameters
1108 associated with the ECDH public key.
1110 public: The ephemeral ECDH public key.
1112 The ServerKeyExchange message is extended as follows.
1114 enum { ec_diffie_hellman } KeyExchangeAlgorithm;
1119 Gupta, et al. Expires March 20, 2006 [Page 20]
1121 Internet-Draft ECC Cipher Suites for TLS September 2005
1124 ec_diffie_hellman: Indicates the ServerKeyExchange message contains
1128 select (KeyExchangeAlgorithm) {
1129 case ec_diffie_hellman:
1130 ServerECDHParams params;
1131 Signature signed_params;
1132 } ServerKeyExchange;
1134 params: Specifies the ECDH public key and associated domain
1137 signed_params: A hash of the params, with the signature appropriate
1138 to that hash applied. The private key corresponding to the
1139 certified public key in the server's Certificate message is used
1143 enum { ecdsa } SignatureAlgorithm;
1146 select (SignatureAlgorithm) {
1148 digitally-signed struct {
1149 opaque sha_hash[sha_size];
1153 NOTE: SignatureAlgorithm is "rsa" for the ECDHE_RSA key exchange
1154 algorithm and "anonymous" for ECDH_anon. These cases are defined in
1155 TLS [2]. SignatureAlgorithm is "ecdsa" for ECDHE_ECDSA. ECDSA
1156 signatures are generated and verified as described in Section 5.10.
1157 As per ANSI X9.62, an ECDSA signature consists of a pair of integers
1158 r and s. These integers are both converted into byte strings of the
1159 same length as the curve order n using the conversion routine
1160 specified in Section 4.3.1 of [6]. The two byte strings are
1161 concatenated, and the result is placed in the signature field.
1163 Actions of the sender:
1165 The server selects elliptic curve domain parameters and an ephemeral
1166 ECDH public key corresponding to these parameters according to the
1167 ECKAS-DH1 scheme from IEEE 1363 [5]. It conveys this information to
1168 the client in the ServerKeyExchange message using the format defined
1171 Actions of the recipient:
1175 Gupta, et al. Expires March 20, 2006 [Page 21]
1177 Internet-Draft ECC Cipher Suites for TLS September 2005
1180 The client verifies the signature (when present) and retrieves the
1181 server's elliptic curve domain parameters and ephemeral ECDH public
1182 key from the ServerKeyExchange message.
1184 5.5 Certificate Request
1186 When this message is sent:
1188 This message is sent when requesting client authentication.
1190 Meaning of this message:
1192 The server uses this message to suggest acceptable client
1193 authentication methods.
1195 Structure of this message:
1197 The TLS CertificateRequest message is extended as follows.
1200 ecdsa_sign(??), rsa_fixed_ecdh(??),
1201 ecdsa_fixed_ecdh(??), (255)
1202 } ClientCertificateType;
1204 ecdsa_sign, etc Indicates that the server would like to use the
1205 corresponding client authentication method specified in Section 3.
1207 [[ EDITOR: The values used for ecdsa_sign, rsa_fixed_ecdh, and
1208 ecdsa_fixed_ecdh have been left as ??. These values will be
1209 assigned when this draft progresses to RFC. Earlier versions of
1210 this draft used the values 5, 6, and 7 - however these values have
1211 been removed since they are used differently by SSL 3.0 [15] and
1212 their use by TLS is being deprecated. ]]
1214 Actions of the sender:
1216 The server decides which client authentication methods it would like
1217 to use, and conveys this information to the client using the format
1220 Actions of the receiver:
1222 The client determines whether it has a suitable certificate for use
1223 with any of the requested methods, and decides whether or not to
1224 proceed with client authentication.
1231 Gupta, et al. Expires March 20, 2006 [Page 22]
1233 Internet-Draft ECC Cipher Suites for TLS September 2005
1236 5.6 Client Certificate
1238 When this message is sent:
1240 This message is sent in response to a CertificateRequest when a
1241 client has a suitable certificate and has decided to proceed with
1242 client authentication. (Note that if the server has used a Supported
1243 Point Formats Extension, a certificate can only be considered
1244 suitable for use with the ECDSA_sign, RSA_fixed_ECDH, and
1245 ECDSA_fixed_ECDH authentication methods if the public key point
1246 specified in it respects the server's choice of point formats. If no
1247 Supported Point Formats Extension has been used, a certificate can
1248 only be considered suitable for use with these authentication methods
1249 if the point is represented in uncompressed point format.)
1251 Meaning of this message:
1253 This message is used to authentically convey the client's static
1254 public key to the server. The following table summarizes what client
1255 certificate types are appropriate for the ECC-based client
1256 authentication mechanisms described in Section 3. ECC public keys
1257 must be encoded in certificates as described in Section 5.9.
1259 NOTE: The client's Certificate message is capable of carrying a chain
1260 of certificates. The restrictions mentioned in Table 4 apply only to
1261 the client's certificate (first in the chain).
1265 Authentication Method Client Certificate Type
1266 --------------------- -----------------------
1268 ECDSA_sign Certificate MUST contain an
1269 ECDSA-capable public key and
1270 be signed with ECDSA.
1272 ECDSA_fixed_ECDH Certificate MUST contain an
1273 ECDH-capable public key on the
1274 same elliptic curve as the server's
1275 long-term ECDH key. This certificate
1276 MUST be signed with ECDSA.
1278 RSA_fixed_ECDH Certificate MUST contain an
1279 ECDH-capable public key on the
1280 same elliptic curve as the server's
1281 long-term ECDH key. This certificate
1282 MUST be signed with RSA.
1287 Gupta, et al. Expires March 20, 2006 [Page 23]
1289 Internet-Draft ECC Cipher Suites for TLS September 2005
1292 Table 4: Client certificate types
1295 Structure of this message:
1297 Identical to the TLS client Certificate format.
1299 Actions of the sender:
1301 The client constructs an appropriate certificate chain, and conveys
1302 it to the server in the Certificate message.
1304 Actions of the receiver:
1306 The TLS server validates the certificate chain, extracts the client's
1307 public key, and checks that the key type is appropriate for the
1308 client authentication method.
1310 5.7 Client Key Exchange
1312 When this message is sent:
1314 This message is sent in all key exchange algorithms. If client
1315 authentication with ECDSA_fixed_ECDH or RSA_fixed_ECDH is used, this
1316 message is empty. Otherwise, it contains the client's ephemeral ECDH
1319 Meaning of the message:
1321 This message is used to convey ephemeral data relating to the key
1322 exchange belonging to the client (such as its ephemeral ECDH public
1325 Structure of this message:
1327 The TLS ClientKeyExchange message is extended as follows.
1329 enum { implicit, explicit } PublicValueEncoding;
1331 implicit, explicit: For ECC cipher suites, this indicates whether
1332 the client's ECDH public key is in the client's certificate
1333 ("implicit") or is provided, as an ephemeral ECDH public key, in
1334 the ClientKeyExchange message ("explicit"). (This is "explicit"
1335 in ECC cipher suites except when the client uses the
1336 ECDSA_fixed_ECDH or RSA_fixed_ECDH client authentication
1343 Gupta, et al. Expires March 20, 2006 [Page 24]
1345 Internet-Draft ECC Cipher Suites for TLS September 2005
1349 select (PublicValueEncoding) {
1350 case implicit: struct { };
1351 case explicit: ECPoint ecdh_Yc;
1353 } ClientECDiffieHellmanPublic;
1355 ecdh_Yc: Contains the client's ephemeral ECDH public key as a byte
1356 string ECPoint.point, which may represent an elliptic curve point
1357 in uncompressed or compressed format. Here the format MUST
1358 conform to what the server has requested through a Supported Point
1359 Formats Extension if this extension was used, and MUST be
1360 uncompressed if this extension was not used.
1364 select (KeyExchangeAlgorithm) {
1365 case ec_diffie_hellman: ClientECDiffieHellmanPublic;
1367 } ClientKeyExchange;
1369 Actions of the sender:
1371 The client selects an ephemeral ECDH public key corresponding to the
1372 parameters it received from the server according to the ECKAS-DH1
1373 scheme from IEEE 1363 [5]. It conveys this information to the client
1374 in the ClientKeyExchange message using the format defined above.
1376 Actions of the recipient:
1378 The server retrieves the client's ephemeral ECDH public key from the
1379 ClientKeyExchange message and checks that it is on the same elliptic
1380 curve as the server's ECDH key.
1382 5.8 Certificate Verify
1384 When this message is sent:
1386 This message is sent when the client sends a client certificate
1387 containing a public key usable for digital signatures, e.g. when the
1388 client is authenticated using the ECDSA_sign mechanism.
1390 Meaning of the message:
1392 This message contains a signature that proves possession of the
1393 private key corresponding to the public key in the client's
1394 Certificate message.
1399 Gupta, et al. Expires March 20, 2006 [Page 25]
1401 Internet-Draft ECC Cipher Suites for TLS September 2005
1404 Structure of this message:
1406 The TLS CertificateVerify message is extended as follows.
1408 enum { ecdsa } SignatureAlgorithm;
1410 select (SignatureAlgorithm) {
1412 digitally-signed struct {
1413 opaque sha_hash[sha_size];
1417 For the ecdsa case, the signature field in the CertificateVerify
1418 message contains an ECDSA signature computed over handshake messages
1419 exchanged so far. ECDSA signatures are computed as described in
1420 Section 5.10. As per ANSI X9.62, an ECDSA signature consists of a
1421 pair of integers r and s. These integers are both converted into
1422 byte strings of the same length as the curve order n using the
1423 conversion routine specified in Section 4.3.1 of [6]. The two byte
1424 strings are concatenated, and the result is placed in the signature
1427 Actions of the sender:
1429 The client computes its signature over all handshake messages sent or
1430 received starting at client hello up to but not including this
1431 message. It uses the private key corresponding to its certified
1432 public key to compute the signature which is conveyed in the format
1435 Actions of the receiver:
1437 The server extracts the client's signature from the CertificateVerify
1438 message, and verifies the signature using the public key it received
1439 in the client's Certificate message.
1441 5.9 Elliptic Curve Certificates
1443 X509 certificates containing ECC public keys or signed using ECDSA
1444 MUST comply with [11] or another RFC that replaces or extends it.
1445 Clients SHOULD use the elliptic curve domain parameters recommended
1446 in ANSI X9.62 [6], FIPS 186-2 [8], and SEC 2 [10].
1448 5.10 ECDH, ECDSA and RSA Computations
1450 All ECDH calculations (including parameter and key generation as well
1451 as the shared secret calculation) are performed according to [5]
1455 Gupta, et al. Expires March 20, 2006 [Page 26]
1457 Internet-Draft ECC Cipher Suites for TLS September 2005
1460 using the ECKAS-DH1 scheme with the identity map as key derivation
1461 function, so that the premaster secret is the x-coordinate of the
1462 ECDH shared secret elliptic curve point represented as an octet
1463 string. Note that this octet string (Z in IEEE 1363 terminology) as
1464 output by FE2OSP, the Field Element to Octet String Conversion
1465 Primitive, has constant length for any given field; leading zeros
1466 found in this octet string MUST NOT be truncated.
1468 Note that a new extension may be introduced in the future to allow
1469 the use of a different KDF during computation of the premaster
1470 secret. In this event, the new KDF would be used in place of the
1471 process detailed above. This may be desirable, for example, to
1472 support compatibility with the planned NIST key agreement standard.
1474 All ECDSA computations MUST be performed according to ANSI X9.62 [6]
1475 or its successors. Data to be signed/verified is hashed and the
1476 result run directly through the ECDSA algorithm with no additional
1477 hashing. The default hash function is SHA-1 [7] and sha_size (see
1478 Section 5.4 and Section 5.8) is 20. However, an alternative hash
1479 function, such as one of the new SHA hash functions specified in FIPS
1480 180-2 [7], may be used instead if the certificate containing the EC
1481 public key explicitly requires use of another hash function. (The
1482 mechanism for specifying the required hash function has not been
1483 standardized but this provision anticipates such standardization and
1484 obviates the need to update this document in response. Future PKIX
1485 RFCs may choose, for example, to specify the hash function to be used
1486 with a public key in the parameters field of subjectPublicKeyInfo.)
1488 All RSA signatures must be generated and verified according to PKCS#1
1511 Gupta, et al. Expires March 20, 2006 [Page 27]
1513 Internet-Draft ECC Cipher Suites for TLS September 2005
1518 The table below defines new ECC cipher suites that use the key
1519 exchange algorithms specified in Section 2.
1521 CipherSuite TLS_ECDH_ECDSA_WITH_NULL_SHA = { 0x00, 0x?? }
1522 CipherSuite TLS_ECDH_ECDSA_WITH_RC4_128_SHA = { 0x00, 0x?? }
1523 CipherSuite TLS_ECDH_ECDSA_WITH_DES_CBC_SHA = { 0x00, 0x?? }
1524 CipherSuite TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1525 CipherSuite TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1526 CipherSuite TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1528 CipherSuite TLS_ECDHE_ECDSA_WITH_NULL_SHA = { 0x00, 0x?? }
1529 CipherSuite TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = { 0x00, 0x?? }
1530 CipherSuite TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1531 CipherSuite TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1532 CipherSuite TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1534 CipherSuite TLS_ECDH_RSA_WITH_NULL_SHA = { 0x00, 0x?? }
1535 CipherSuite TLS_ECDH_RSA_WITH_RC4_128_SHA = { 0x00, 0x?? }
1536 CipherSuite TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1537 CipherSuite TLS_ECDH_RSA_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1538 CipherSuite TLS_ECDH_RSA_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1540 CipherSuite TLS_ECDHE_RSA_WITH_NULL_SHA = { 0x00, 0x?? }
1541 CipherSuite TLS_ECDHE_RSA_WITH_RC4_128_SHA = { 0x00, 0x?? }
1542 CipherSuite TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1543 CipherSuite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1544 CipherSuite TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1546 CipherSuite TLS_ECDH_anon_NULL_WITH_SHA = { 0x00, 0x?? }
1547 CipherSuite TLS_ECDH_anon_WITH_RC4_128_SHA = { 0x00, 0x?? }
1548 CipherSuite TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x?? }
1549 CipherSuite TLS_ECDH_anon_WITH_AES_128_CBC_SHA = { 0x00, 0x?? }
1550 CipherSuite TLS_ECDH_anon_WITH_AES_256_CBC_SHA = { 0x00, 0x?? }
1552 Table 5: TLS ECC cipher suites
1555 [[ EDITOR: The actual cipher suite numbers will be assigned when this
1556 draft progresses to RFC. ]]
1558 The key exchange method, cipher, and hash algorithm for each of these
1559 cipher suites are easily determined by examining the name. Ciphers
1560 other than AES ciphers, and hash algorithms are defined in [2]. AES
1561 ciphers are defined in [16].
1563 Server implementations SHOULD support all of the following cipher
1567 Gupta, et al. Expires March 20, 2006 [Page 28]
1569 Internet-Draft ECC Cipher Suites for TLS September 2005
1572 suites, and client implementations SHOULD support at least one of
1573 them: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
1574 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
1575 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, and
1576 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA.
1623 Gupta, et al. Expires March 20, 2006 [Page 29]
1625 Internet-Draft ECC Cipher Suites for TLS September 2005
1628 7. Security Considerations
1630 This document is based on [2], [5], [6] and [16]. The appropriate
1631 security considerations of those documents apply.
1633 One important issue that implementors and users must consider is
1634 elliptic curve selection. Guidance on selecting an appropriate
1635 elliptic curve size is given in Table 1.
1637 Beyond elliptic curve size, the main issue is elliptic curve
1638 structure. As a general principle, it is more conservative to use
1639 elliptic curves with as little algebraic structure as possible - thus
1640 random curves are more conservative than special curves such as
1641 Koblitz curves, and curves over F_p with p random are more
1642 conservative than curves over F_p with p of a special form (and
1643 curves over F_p with p random might be considered more conservative
1644 than curves over F_2^m as there is no choice between multiple fields
1645 of similar size for characteristic 2). Note, however, that algebraic
1646 structure can also lead to implementation efficiencies and
1647 implementors and users may, therefore, need to balance conservatism
1648 against a need for efficiency. Concrete attacks are known against
1649 only very few special classes of curves, such as supersingular
1650 curves, and these classes are excluded from the ECC standards that
1651 this document references [5], [6].
1653 Another issue is the potential for catastrophic failures when a
1654 single elliptic curve is widely used. In this case, an attack on the
1655 elliptic curve might result in the compromise of a large number of
1656 keys. Again, this concern may need to be balanced against efficiency
1657 and interoperability improvements associated with widely-used curves.
1658 Substantial additional information on elliptic curve choice can be
1659 found in [4], [5], [6], [8].
1661 Implementors and users must also consider whether they need forward
1662 secrecy. Forward secrecy refers to the property that session keys
1663 are not compromised if the static, certified keys belonging to the
1664 server and client are compromised. The ECDHE_ECDSA and ECDHE_RSA key
1665 exchange algorithms provide forward secrecy protection in the event
1666 of server key compromise, while ECDH_ECDSA and ECDH_RSA do not.
1667 Similarly if the client is providing a static, certified key,
1668 ECDSA_sign client authentication provides forward secrecy protection
1669 in the event of client key compromise, while ECDSA_fixed_ECDH and
1670 RSA_fixed_ECDH do not. Thus to obtain complete forward secrecy
1671 protection, ECDHE_ECDSA or ECDHE_RSA must be used for key exchange,
1672 with ECDSA_sign used for client authentication if necessary. Here
1673 again the security benefits of forward secrecy may need to be
1674 balanced against the improved efficiency offered by other options.
1679 Gupta, et al. Expires March 20, 2006 [Page 30]
1681 Internet-Draft ECC Cipher Suites for TLS September 2005
1684 8. IANA Considerations
1686 This document describes three new name spaces for use with the TLS
1689 o NamedCurve (Section 5.1)
1691 o ECPointFormat (Section 5.1)
1693 o ECCurveType (Section 5.4)
1695 For each name space, this document defines the initial value
1696 assignments and defines a range of 256 values (NamedCurve) or eight
1697 values (ECPointFormat and ECCurveType) reserved for Private Use. Any
1698 additional assignments require IETF Consensus action [12].
1735 Gupta, et al. Expires March 20, 2006 [Page 31]
1737 Internet-Draft ECC Cipher Suites for TLS September 2005
1742 The authors wish to thank Bill Anderson and Tim Dierks.
1791 Gupta, et al. Expires March 20, 2006 [Page 32]
1793 Internet-Draft ECC Cipher Suites for TLS September 2005
1798 10.1 Normative References
1800 [1] Bradner, S., "Key Words for Use in RFCs to Indicate Requirement
1801 Levels", RFC 2119, March 1997.
1803 [2] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
1804 RFC 2246, January 1999.
1806 [3] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., and
1807 T. Wright, "Transport Layer Security (TLS) Extensions",
1808 draft-ietf-tls-rfc3546bis-01.txt (work in progress), May 2005.
1810 [4] SECG, "Elliptic Curve Cryptography", SEC 1, 2000,
1811 <http://www.secg.org/>.
1813 [5] IEEE, "Standard Specifications for Public Key Cryptography",
1816 [6] ANSI, "Public Key Cryptography For The Financial Services
1817 Industry: The Elliptic Curve Digital Signature Algorithm
1818 (ECDSA)", ANSI X9.62, 1998.
1820 [7] NIST, "Secure Hash Standard", FIPS 180-2, 2002.
1822 [8] NIST, "Digital Signature Standard", FIPS 186-2, 2000.
1824 [9] RSA Laboratories, "PKCS#1: RSA Encryption Standard version
1825 1.5", PKCS 1, November 1993.
1827 [10] SECG, "Recommended Elliptic Curve Domain Parameters", SEC 2,
1828 2000, <http://www.secg.org/>.
1830 [11] Polk, T., Housley, R., and L. Bassham, "Algorithms and
1831 Identifiers for the Internet X.509 Public Key Infrastructure
1832 Certificate and Certificate Revocation List (CRL) Profile",
1833 RFC 3279, April 2002.
1835 [12] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA
1836 Considerations Section in RFCs", RFC 2434, October 1998.
1838 10.2 Informative References
1840 [13] Harper, G., Menezes, A., and S. Vanstone, "Public-Key
1841 Cryptosystems with Very Small Key Lengths", Advances in
1842 Cryptology -- EUROCRYPT '92, LNCS 658, 1993.
1847 Gupta, et al. Expires March 20, 2006 [Page 33]
1849 Internet-Draft ECC Cipher Suites for TLS September 2005
1852 [14] Lenstra, A. and E. Verheul, "Selecting Cryptographic Key
1853 Sizes", Journal of Cryptology 14 (2001) 255-293,
1854 <http://www.cryptosavvy.com/>.
1856 [15] Freier, A., Karlton, P., and P. Kocher, "The SSL Protocol
1857 Version 3.0", November 1996,
1858 <http://wp.netscape.com/eng/ssl3/draft302.txt>.
1860 [16] Chown, P., "Advanced Encryption Standard (AES) Ciphersuites for
1861 Transport Layer Security (TLS)", RFC 3268, June 2002.
1867 Sun Microsystems Laboratories
1870 Menlo Park, CA 94025
1873 Phone: +1 650 786 7551
1874 Email: vipul.gupta@sun.com
1878 Basic Commerce & Industries, Inc.
1884 Phone: +1 416 214 5961
1885 Email: sblakewilson@bcisse.com
1889 University of Calgary
1890 Dept of Math & Stats
1891 2500 University Dr NW
1895 Phone: +1 403 220 5735
1896 Email: bodo@openssl.org
1903 Gupta, et al. Expires March 20, 2006 [Page 34]
1905 Internet-Draft ECC Cipher Suites for TLS September 2005
1911 Email: chris@corriente.net
1916 Email: nelson@bolyard.com
1959 Gupta, et al. Expires March 20, 2006 [Page 35]
1961 Internet-Draft ECC Cipher Suites for TLS September 2005
1964 Intellectual Property Statement
1966 The IETF takes no position regarding the validity or scope of any
1967 Intellectual Property Rights or other rights that might be claimed to
1968 pertain to the implementation or use of the technology described in
1969 this document or the extent to which any license under such rights
1970 might or might not be available; nor does it represent that it has
1971 made any independent effort to identify any such rights. Information
1972 on the procedures with respect to rights in RFC documents can be
1973 found in BCP 78 and BCP 79.
1975 Copies of IPR disclosures made to the IETF Secretariat and any
1976 assurances of licenses to be made available, or the result of an
1977 attempt made to obtain a general license or permission for the use of
1978 such proprietary rights by implementers or users of this
1979 specification can be obtained from the IETF on-line IPR repository at
1980 http://www.ietf.org/ipr.
1982 The IETF invites any interested party to bring to its attention any
1983 copyrights, patents or patent applications, or other proprietary
1984 rights that may cover technology that may be required to implement
1985 this standard. Please address the information to the IETF at
1989 Disclaimer of Validity
1991 This document and the information contained herein are provided on an
1992 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1993 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1994 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1995 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1996 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1997 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
2002 Copyright (C) The Internet Society (2005). This document is subject
2003 to the rights, licenses and restrictions contained in BCP 78, and
2004 except as set forth therein, the authors retain all their rights.
2009 Funding for the RFC Editor function is currently provided by the
2015 Gupta, et al. Expires March 20, 2006 [Page 36]