Internet-Draft | ECC NUMS Curves and Curve Generation | August 2014 |
Black, et al. | Expires 4 March 2015 | [Page] |
This memo describes a family of deterministically generated Nothing Up My Sleeve (NUMS) elliptic curves over prime fields offering high practical security in cryptographic applications, including Transport Layer Security (TLS) and X.509 certificates. The domain parameters are defined for both classical Weierstrass curves, for compatibility with existing applications, and modern twisted Edwards curves, allowing further efficiency improvements for a given security level.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 2 February 2015.¶
Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.¶
Since the initial standardization of elliptic curve cryptography (ECC) in [SEC1] there has been significant progress related to both efficiency and security of curves and implementations. Notable examples are algorithms protected against certain side-channel attacks, different 'special' prime shapes which allow faster modular arithmetic, and a larger set of curve models from which to choose. There is also concern in the community regarding the generation and potential weaknesses of the curves defined in [NIST].¶
This memo describes a set of elliptic curves for cryptography, defined in [MSR] which have been specifically chosen to support constant-time, exception-free scalar multiplications that are resistant to a wide range of side-channel attacks including timing and cache attacks, thereby offering high practical security in cryptographic applications. These curves are deterministically generated based on algorithms defined in this document and without any hidden parameters or reliance on randomness, hence they are called Nothing Up My Sleeve (NUMS) curves. The domain parameters are defined for both classical Weierstrass curves, for compatibility with existing applications while delivering better performance and stronger security, and modern twisted Edwards curves, allowing even further efficiency improvements for a given security level.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].¶
This RFC specifies elliptic curve domain parameters over prime fields GF(p) with p having a length of 256, 384, and 512 bits, in both Weierstrass and twisted Edwards form. These parameters were generated in a transparent and deterministic way and have been shown to resist current cryptanalytic approaches. Furthermore, this document identifies the security and implementation requirements for the parameters, and describes the methods used for the deterministic generation of the parameters.¶
This document also describes use of the specified parameters in X.509 certificates, in accordance with [RFC3279] and [RFC5480]. It does not address the cryptographic algorithms to be used with the specified parameters nor their application in other standards. However, it is consistent with the following RFCs that specify the usage of ECC in protocols and applications:¶
For each curve type (twisted Edwards or Weierstrass) at a specific specific security level:¶
Throughout this document, the following notation is used:¶
s: Denotes the bit length, here s in {256,384,512}. p: Denotes the prime number defining the base field. c: A positive integer used in the representation of the prime p = 2^s - c. GF(p): The finite field with p elements. b: An element in the finite field GF(p), different from -2,2. Eb: The elliptic curve Eb/GF(p): y^2 = x^3 - 3x + b in short Weierstrass form, defined over GF(p) by the parameter b. rb: The order rb = #Eb(GF(p)) of the group of GF(p)-rational points on Eb. tb: The trace of Frobenius tb = p + 1 - rb of Eb. rb': The order rb' = #E'b(GF(p)) = p + 1 + tb of the group of GF(p)-rational points on the quadratic twist Eb': y^2 = x^3 - 3x - b. d: An element in the finite field GF(p), different from -1,0. Ed: The elliptic curve Ed/GF(p): -x^2 + y^2 = 1 + dx^2y^2 in twisted Edwards form, defined over GF(p) by the parameter d. rd: The subgroup order such that 4 * rd = #Ed(GF(p)) is the order of the group of GF(p)-rational points on Ed. td: The trace of Frobenius td = p + 1 - 4 * rd of Ed. rd': The subgroup order such that 4 * rd' = #Ed'(GF(p)) = p + 1 + tb is the order of the group of GF(p)-rational points on the quadratic twist Ed': -x^2 = y^2 = 1 + (1 / d) * x^2 * y^2. P: A generator point defined over GF(p) either of prime order rb in the Weierstrass curve Eb, or of prime order rd on the twisted Edwards curve Ed. X(P): The x-coordinate of the elliptic curve point P. Y(P): The y-coordinate of the elliptic curve point P.¶
The root of the tree for the object identifiers defined in this specification is given by:¶
[TBDOID]¶
The following object identifiers represent the domain parameters for the curves defined in this draft:¶
numsp256d1 OBJECT IDENTIFIER ::= {versionOne 1} numsp256t1 OBJECT IDENTIFIER ::= {versionOne 2} numsp384d1 OBJECT IDENTIFIER ::= {versionOne 3} numsp384t1 OBJECT IDENTIFIER ::= {versionOne 4} numsp512d1 OBJECT IDENTIFIER ::= {versionOne 5} numsp512t1 OBJECT IDENTIFIER ::= {versionOne 6}¶
The domain parameters for the curves specified in this RFC SHALL be used with X.509 certificates according to [RFC5480]. Specifically, the algorithm field of subjectPublicKeyInfo MUST be one of:¶
The field algorithm.parameter of subjectPublicKeyInfo MUST be of type namedCurve. No other values for this field are acceptable.¶
The authors would like to thank Brian Lamacchia and Tolga Acar for their help in the development of this draft.¶
In addition to the discussion in the requirements, [MSR], [SC], and the other reference documents on EC security, users SHOULD match curves with cryptographic functions of similar strength. Specific recommendations for algorithms, per [RFC5480] are as follows:¶
Minimum Bits of Security | EC Key Size | Message Digest Algorithm | Curves |
---|---|---|---|
128 | 256 | SHA-256 | numsp256d1/t1 |
192 | 384 | SHA-384 | numsp384d1/t1 |
256 | 512 | SHA-512 | numsp512d1/t1 |
The authors have no knowledge about any intellectual property rights that cover the usage of the domain parameters defined herein. However, readers should be aware that implementations based on these domain parameters may require use of inventions covered by patent rights.¶
IANA is requested to allocate an object identifier for elliptic curves under the PKIX root declared in [RFC5480]:¶
PKIX1Algorithms2008 { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) 45 }¶
IANA is further requested to allocate object identifiers under this new elliptic curve root for the named curves in Section 6.1.¶
This section describes the generation of the curve parameters, namely the base field prime p, the curve parameters b and d for the Weierstrass and twisted Edwards curves, respectively, and a generator point P of the prime order subgroup of the elliptic curve.¶
For a given bitlength s in {256, 384, 512}, a prime p is selected as a pseudo-Mersenne prime of the form p = 2^s - c for a positive integer c. Each prime is determined by the smallest positive integer c such that p = 2^s - c is prime and p = 3 mod 4.¶
For a given bitlength s in {256, 384, 512} and a corresponding prime p = 2^s - c selected according to Section A.1, the elliptic curve Eb in short Weierstrass form is determined by the element b from GF(p), different from -2,2 with smallest absolute value (when represented as an integer in the interval [-(p - 1) / 2, (p - 1) / 2]) such that both group orders rb and rb' are prime, and the group order rb < p, i.e. tb > 1. In addition, care must be taken to ensure the MOV degree and CM discriminant requirements from Section 3.2 are met.¶
For a given bitlength s in {256, 384, 512} and a corresponding prime p = 2^s - c selected according to Section A.1, the elliptic curve Ed in twisted Edwards form is determined by the element d from GF(p), different from -1,0 with smallest value (when represented as a positive integer) such that both subgroup orders rd and rd' are prime, and the group order 4 * rd < p, i.e. td > 1. In addition, care must be taken to ensure the MOV degree and CM discriminant requirements from Section 3.2 are met.¶
The generator points on all six curves are selected as the points of order rb and rd, respectively, with the smallest value for x(P) when represented as a positive integer.¶