rfc-5480

Elliptic Curve Cryptography Subject Public Key Information

S. Turner, D. Brown, K. Yiu, R. Housley, T. Polk
date2009-03 streamIETF areasec wgpkix statusPROPOSED STANDARD pages20 canonicalhttps://www.rfc-editor.org/rfc/rfc5480 doi10.17487/RFC5480 errataview
This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography. This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279. [STANDARDS-TRACK]

updated by

updates

Extracted elements (24)

design-rationale §1

The ASN.1 module in this document consolidates all algorithm ASN.1 from RFC 3279, including non-ECC algorithms, so implementers need only use the single updated module rather than combining multiple sources.

pkix, crypto

design-rationale §2.1.1

The specifiedCurve (SpecifiedECDomain) choice is prohibited in PKIX because allowing arbitrary curve specifications would be a security risk and harm interoperability; only well-known namedCurve OIDs are permitted. Implementers needing specifiedCurve should use the X9.62 ASN.1 module directly.

pkix, crypto

design-rationale §1

Two methods for specifying permitted algorithms are defined: id-ecPublicKey allows the key to be used with any ECC algorithm (restricted only by keyUsage), while id-ecDH and id-ecMQV restrict the key to a specific algorithm. This design balances flexibility with explicit algorithm binding to promote interoperability.

pkix, crypto

interoperability-note §2.1.1.1

Curve naming is inconsistent across standards: secp192r1 equals ansix9p192r1 in X9.62, was called prime192v1 in RFC 3279, and is referred to as P-192 in FIPS 186-3. Similarly secp256r1 was prime256v1. Implementers must account for these aliases.

pkix, crypto

interoperability-note §5

This document contains a conformant subset of the X9.62 ASN.1 module. A PER-encoded implementation using this module may not produce the same encoding as one using the full X9.62 module; environments requiring PER should use the X9.62 module instead.

pkix, crypto

normative-requirement §3 SHOULD NOT

For CA certificates using id-ecPublicKey, if keyCertSign or cRLSign is asserted, then keyAgreement, encipherOnly, and decipherOnly SHOULD NOT be present.

pkix, crypto

normative-requirement §2.1 MUST

id-ecPublicKey MUST be supported by CAs and relying parties that implement ECC algorithms.

pkix, crypto

normative-requirement §2.1.1 MUST

If elliptic curve domain parameters are not present in the AlgorithmIdentifier, clients MUST reject the certificate.

pkix, crypto

normative-requirement §3 MUST

If the keyUsage extension is present in a certificate indicating id-ecDH or id-ecMQV, the keyAgreement bit MUST be present, and digitalSignature, nonRepudiation, keyTransport, keyCertSign, and cRLSign MUST NOT be present.

pkix, crypto

normative-requirement §2.2 MUST

Implementations MUST support the uncompressed form of the ECC public key and MAY support the compressed form. The hybrid form from X9.62 MUST NOT be used.

pkix, crypto

normative-requirement §2.1.1 MUST

The ECParameters parameter for id-ecPublicKey MUST always be present. The AlgorithmIdentifier within SubjectPublicKeyInfo is the only permitted location for elliptic curve domain parameters in a certificate.

pkix, crypto

normative-requirement §2.1.2 MUST

The ECParameters parameter for restricted algorithm identifiers (id-ecDH, id-ecMQV) MUST always be present.

pkix, crypto

normative-requirement §2.1.1 MUST

The namedCurve choice in ECParameters MUST be supported. The implicitCurve and specifiedCurve choices MUST NOT be used in PKIX.

pkix, crypto

normative-requirement §2.2 MUST

The public key MUST be rejected if the first octet of the ECPoint OCTET STRING contains any value other than 0x04 (uncompressed), 0x02, or 0x03 (compressed forms).

pkix, crypto, security

protocol-element §2.1.1

ECParameters is a CHOICE with three options: namedCurve (OBJECT IDENTIFIER naming a well-known curve), implicitCurve (NULL, inherited), and specifiedCurve (SpecifiedECDomain). Only namedCurve is permitted in PKIX; implicitCurve and specifiedCurve MUST NOT be used.

pkix, crypto

protocol-element §A

The ASN.1 module PKIX1Algorithms2008 (OID arc pkix/id-mod/45) is defined in Appendix A, providing a complete, self-contained module for all algorithm identifiers including RSA, DSA, DH, KEA, ECC signature and key agreement algorithms, named curves, and associated signature value types.

pkix, crypto

protocol-element §2.1.1.1

The document publishes OIDs for fifteen NIST-recommended curves: secp192r1, sect163k1, sect163r2, secp224r1, sect233k1, sect233r1, secp256r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, and sect571r1.

pkix, crypto, registry

protocol-element §2

The SubjectPublicKeyInfo type in X.509 certificates is a SEQUENCE containing an AlgorithmIdentifier (algorithm OID plus optional parameters) and a subjectPublicKey BIT STRING carrying the ECC public key.

pkix, crypto

protocol-element §2.1

Three ECC algorithm identifiers are defined: id-ecPublicKey (unrestricted use, also used for ECDSA), id-ecDH (restricted to ECDH key agreement), and id-ecMQV (restricted to ECMQV key agreement).

pkix, crypto

security-consideration §4

For interoperability, specific combinations are RECOMMENDED: 192-bit key with SHA-256/secp192r1 (80-bit security), 224-bit/SHA-256/secp224r1 (112-bit), 256-bit/SHA-256/secp256r1 (128-bit), 384-bit/SHA-384/secp384r1 (192-bit), and 521-bit/SHA-512/secp521r1 (256-bit).

pkix, crypto, security

security-consideration §4

The bits of security provided by ECC key size, hash algorithm, and named curve should be roughly equivalent. A table maps ECDSA key sizes (160–512+ bits) to appropriate hash algorithms and recommended NIST curves at security levels of 80, 112, 128, 192, and 256 bits.

pkix, crypto, security

security-consideration §4

There are security risks with keys not associated with well-known, widely-reviewed curves: the curve may not satisfy the MOV condition or may be vulnerable to the Anomalous attack. ECC public key validation must verify arithmetic properties to confirm the key is in the correct (sub)group per the associated domain parameters.

pkix, crypto, security

security-consideration §4

Using a larger hash than necessary and truncating it wastes processing power, which is especially important on constrained devices. Signers should use a hash function that provides exactly the desired output size.

pkix, crypto, security

wire-format §2.2

ECPoint is encoded as an OCTET STRING. The first octet is a compression indicator: 0x04 for uncompressed, 0x02 or 0x03 for compressed. The OCTET STRING is then mapped bit-for-bit into the BIT STRING subjectPublicKey field.

pkix, crypto