GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


rfc:rfc5480

Network Working Group S. Turner Request for Comments: 5480 IECA Updates: 3279 D. Brown Category: Standards Track Certicom

                                                                K. Yiu
                                                             Microsoft
                                                            R. Housley
                                                        Vigil Security
                                                               T. Polk
                                                                  NIST
                                                            March 2009
    Elliptic Curve Cryptography Subject Public Key Information

Status of This Memo

 This document specifies an Internet standards track protocol for the
 Internet community, and requests discussion and suggestions for
 improvements.  Please refer to the current edition of the "Internet
 Official Protocol Standards" (STD 1) for the standardization state
 and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

 Copyright (c) 2009 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 in effect on the date of
 publication of this document (http://trustee.ietf.org/license-info).
 Please review these documents carefully, as they describe your rights
 and restrictions with respect to this document.

Abstract

 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.

Turner, et al. Standards Track [Page 1] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

Table of Contents

 1. Introduction ....................................................2
    1.1. Terminology ................................................3
 2. Subject Public Key Information Fields ...........................3
    2.1. Elliptic Curve Cryptography Public Key Algorithm
         Identifiers ................................................3
    2.2. Subject Public Key .........................................7
 3. Key Usage Bits ..................................................7
 4. Security Considerations .........................................8
 5. ASN.1 Considerations ...........................................10
 6. IANA Considerations ............................................11
 7. Acknowledgments ................................................11
 8. References .....................................................11
    8.1. Normative References ......................................11
    8.2. Informative References ....................................12
 Appendix A. ASN.1 Module ..........................................13

1. Introduction

 This document specifies the format of the subjectPublicKeyInfo field
 in X.509 certificates [PKI] that use Elliptic Curve Cryptography
 (ECC).  It updates RFC 3279 [PKI-ALG].  This document specifies the
 encoding formats for public keys used with the following ECC
 algorithms:
    o Elliptic Curve Digital Signature Algorithm (ECDSA);
    o Elliptic Curve Diffie-Hellman (ECDH) family schemes; and
    o Elliptic Curve Menezes-Qu-Vanstone (ECMQV) family schemes.
 Two methods for specifying the algorithms that can be used with the
 subjectPublicKey are defined.  One method allows the key to be used
 with any ECC algorithm, while the other method restricts the usage of
 the key to specific algorithms.  To promote interoperability, this
 document indicates which is required to implement for Certification
 Authorities (CAs) that implement ECC algorithms and relying parties
 that claim to process ECC algorithms.
 The ASN.1 [X.680] module in this document includes ASN.1 for ECC
 algorithms.  It also includes ASN.1 for non-ECC algorithms defined in
 [PKI-ALG] and [PKI-ADALG], even though the associated text is
 unaffected.  By updating all of the ASN.1 from [PKI-ALG] in this
 document, implementers only need to use the module found in this
 document.

Turner, et al. Standards Track [Page 2] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

1.1. Terminology

 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 [MUSTSHOULD].

2. Subject Public Key Information Fields

 In the X.509 certificate, the subjectPublicKeyInfo field has the
 SubjectPublicKeyInfo type, which has the following ASN.1 syntax:
   SubjectPublicKeyInfo  ::=  SEQUENCE  {
     algorithm         AlgorithmIdentifier,
     subjectPublicKey  BIT STRING
   }
 The fields in SubjectPublicKeyInfo have the following meanings:
    o algorithm is the algorithm identifier and parameters for the ECC
      public key.
    o subjectPublicKey is the ECC public key.  See Section 2.2.
 The AlgorithmIdentifier type, which is included for convenience
 [PKI], is defined as follows:
    AlgorithmIdentifier  ::=  SEQUENCE  {
      algorithm   OBJECT IDENTIFIER,
      parameters  ANY DEFINED BY algorithm OPTIONAL
    }
 The fields in AlgorithmIdentifier have the following meanings:
    o algorithm identifies the cryptographic algorithm with an object
      identifier.  See Section 2.1.
    o parameters, which are optional, are the associated parameters
      for the algorithm identifier in the algorithm field.  See
      Section 2.1.1.

2.1. Elliptic Curve Cryptography Public Key Algorithm Identifiers

 The algorithm field in the SubjectPublicKeyInfo structure [PKI]
 indicates the algorithm and any associated parameters for the ECC
 public key (see Section 2.2).  Three algorithm identifiers are
 defined in this document:

Turner, et al. Standards Track [Page 3] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

    o id-ecPublicKey indicates that the algorithms that can be used
      with the subject public key are unrestricted.  The key is only
      restricted by the values indicated in the key usage certificate
      extension (see Section 3).  id-ecPublicKey MUST be supported.
      See Section 2.1.1.  This value is also included in certificates
      when a public key is used with ECDSA.
    o id-ecDH indicates that the algorithm that can be used with the
      subject public key is restricted to the Elliptic Curve Diffie-
      Hellman algorithm.  See Section 2.1.2.  id-ecDH MAY be
      supported.
    o id-ecMQV indicates that the algorithm that can be used with the
      subject public key is restricted to the Elliptic Curve Menezes-
      Qu-Vanstone key agreement algorithm.  See Section 2.1.2.
      id-ecMQV MAY be supported.

2.1.1. Unrestricted Algorithm Identifier and Parameters

 The "unrestricted" algorithm identifier is:
   id-ecPublicKey OBJECT IDENTIFIER ::= {
     iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }
 The public key (ECPoint) syntax is described in Section 2.2.
 The parameter for id-ecPublicKey is as follows and MUST always be
 present:
   ECParameters ::= CHOICE {
     namedCurve         OBJECT IDENTIFIER
     -- implicitCurve   NULL
     -- specifiedCurve  SpecifiedECDomain
   }
     -- implicitCurve and specifiedCurve MUST NOT be used in PKIX.
     -- Details for SpecifiedECDomain can be found in [X9.62].
     -- Any future additions to this CHOICE should be coordinated
     -- with ANSI X9.
 The fields in ECParameters have the following meanings:
    o namedCurve identifies all the required values for a particular
      set of elliptic curve domain parameters to be represented by an
      object identifier.  This choice MUST be supported.  See Section
      2.1.1.1.
    o implicitCurve allows the elliptic curve domain parameters to be
      inherited.  This choice MUST NOT be used.

Turner, et al. Standards Track [Page 4] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

    o specifiedCurve, which is of type SpecifiedECDomain type (defined
      in [X9.62]), allows all of the elliptic curve domain parameters
      to be explicitly specified.  This choice MUST NOT be used.  See
      Section 5, "ASN.1 Considerations".
 The addition of any new choices in ECParameters needs to be
 coordinated with ANSI X9.
 The AlgorithmIdentifier within SubjectPublicKeyInfo is the only place
 within a certificate where the elliptic curve domain parameters may
 be located.  If the elliptic curve domain parameters are not present,
 then clients MUST reject the certificate.

2.1.1.1. Named Curve

 The namedCurve field in ECParameters uses object identifiers to name
 well-known curves.  This document publishes curve identifiers for the
 fifteen NIST-recommended curves [FIPS186-3].  Other documents can
 publish other name curve identifiers.  The NIST-named curves are:
  1. - Note that in [X9.62] the curves are referred to as 'ansiX9' as
  2. - opposed to 'sec'. For example, secp192r1 is the same curve as
  3. - ansix9p192r1.
  1. - Note that in [PKI-ALG] the secp192r1 curve was referred to as
  2. - prime192v1 and the secp256r1 curve was referred to as
  3. - prime256v1.
  1. - Note that [FIPS186-3] refers to secp192r1 as P-192, secp224r1 as
  2. - P-224, secp256r1 as P-256, secp384r1 as P-384, and secp521r1 as
  3. - P-521.
   secp192r1 OBJECT IDENTIFIER ::= {
     iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
     prime(1) 1 }
   sect163k1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 1 }
   sect163r2 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 15 }
   secp224r1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 33 }
   sect233k1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 26 }

Turner, et al. Standards Track [Page 5] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

   sect233r1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 27 }
   secp256r1 OBJECT IDENTIFIER ::= {
     iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
     prime(1) 7 }
   sect283k1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 16 }
   sect283r1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 17 }
   secp384r1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 34 }
   sect409k1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 36 }
   sect409r1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 37 }
   secp521r1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 35 }
   sect571k1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 38 }
   sect571r1 OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) curve(0) 39 }

2.1.2. Restricted Algorithm Identifiers and Parameters

 Two "restricted" algorithms are defined for key agreement algorithms:
 the Elliptic Curve Diffie-Hellman (ECDH) key agreement family schemes
 and the Elliptic Curve Menezes-Qu-Vanstone (ECMQV) key agreement
 family schemes.  Both algorithms are identified by an object
 identifier and have parameters.  The object identifier varies based
 on the algorithm, but the parameters are always ECParameters and they
 MUST always be present (see Section 2.1.1).
 The ECDH algorithm uses the following object identifier:
   id-ecDH OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) schemes(1)
     ecdh(12) }

Turner, et al. Standards Track [Page 6] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

 The ECMQV algorithm uses the following object identifier:
   id-ecMQV OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) certicom(132) schemes(1)
     ecmqv(13) }

2.2. Subject Public Key

 The subjectPublicKey from SubjectPublicKeyInfo is the ECC public key.
 ECC public keys have the following syntax:
   ECPoint ::= OCTET STRING
 Implementations of Elliptic Curve Cryptography according to this
 document MUST support the uncompressed form and MAY support the
 compressed form of the ECC public key.  The hybrid form of the ECC
 public key from [X9.62] MUST NOT be used.  As specified in [SEC1]:
    o The elliptic curve public key (a value of type ECPoint that is
      an OCTET STRING) is mapped to a subjectPublicKey (a value of
      type BIT STRING) as follows: the most significant bit of the
      OCTET STRING value becomes the most significant bit of the BIT
      STRING value, and so on; the least significant bit of the OCTET
      STRING becomes the least significant bit of the BIT STRING.
      Conversion routines are found in Sections 2.3.1 and 2.3.2 of
      [SEC1].
    o The first octet of the OCTET STRING indicates whether the key is
      compressed or uncompressed.  The uncompressed form is indicated
      by 0x04 and the compressed form is indicated by either 0x02 or
      0x03 (see 2.3.3 in [SEC1]).  The public key MUST be rejected if
      any other value is included in the first octet.

3. Key Usage Bits

 If the keyUsage extension is present in a Certification Authority
 (CA) certificate that indicates id-ecPublicKey in
 SubjectPublicKeyInfo, then any combination of the following values
 MAY be present:
   digitalSignature;
   nonRepudiation;
   keyAgreement;
   keyCertSign; and
   cRLSign.

Turner, et al. Standards Track [Page 7] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

 If the CA certificate keyUsage extension asserts keyAgreement, then
 it MAY assert either encipherOnly or decipherOnly.  However, this
 specification RECOMMENDS that if keyCertSign or cRLSign is present,
 then keyAgreement, encipherOnly, and decipherOnly SHOULD NOT be
 present.
 If the keyUsage extension is present in an End Entity (EE)
 certificate that indicates id-ecPublicKey in SubjectPublicKeyInfo,
 then any combination of the following values MAY be present:
   digitalSignature;
   nonRepudiation; and
   keyAgreement.
 If the EE certificate keyUsage extension asserts keyAgreement, then
 it MAY assert either encipherOnly or decipherOnly.
 If the keyUsage extension is present in a certificate that indicates
 id-ecDH or id-ecMQV in SubjectPublicKeyInfo, then the following MUST
 be present:
   keyAgreement;
 one of the following MAY be present:
   encipherOnly; or
   decipherOnly.
 If the keyUsage extension is present in a certificate that indicates
 id-ecDH or id-ecMQV in SubjectPublicKeyInfo, then the following
 values MUST NOT be present:
   digitalSignature;
   nonRepudiation;
   keyTransport;
   keyCertSign; and
   cRLSign.

4. Security Considerations

 The security considerations in [PKI-ALG] apply.
 When implementing ECC in X.509 Certificates and Certificate
 Revocation Lists (CRLs), there are three algorithm-related choices
 that need to be made for the signatureAlgorithm field in a
 Certificate or CertificateList:

Turner, et al. Standards Track [Page 8] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

 1) What is the public key size?
 2) What is the hash algorithm [FIPS180-3]?
 3) What is the curve?
 Consideration must be given by the CA to the strength of the security
 provided by each of these choices.  Security is measured in bits,
 where a strong symmetric cipher with a key of X bits is said to
 provide X bits of security.  It is recommended that the bits of
 security provided by each choice are roughly equivalent.  The
 following table provides comparable minimum bits of security
 [SP800-57] for the ECDSA key sizes and message digest algorithms.  It
 also lists curves (see Section 2.1.1.1) for the key sizes.
 Minimum  | ECDSA    | Message    | Curves
 Bits of  | Key Size | Digest     |
 Security |          | Algorithms |
 ---------+----------+------------+-----------
 80       | 160-223  | SHA-1      | sect163k1
          |          | SHA-224    | secp163r2
          |          | SHA-256    | secp192r1
          |          | SHA-384    |
          |          | SHA-512    |
 ---------+----------+------------+-----------
 112      | 224-255  | SHA-224    | secp224r1
          |          | SHA-256    | sect233k1
          |          | SHA-384    | sect233r1
          |          | SHA-512    |
 ---------+----------+------------+-----------
 128      | 256-383  | SHA-256    | secp256r1
          |          | SHA-384    | sect283k1
          |          | SHA-512    | sect283r1
 ---------+----------+------------+-----------
 192      | 384-511  | SHA-384    | secp384r1
          |          | SHA-512    | sect409k1
          |          |            | sect409r1
 ---------+----------+------------+-----------
 256      | 512+     | SHA-512    | secp521r1
          |          |            | sect571k1
          |          |            | sect571r1
 ---------+----------+------------+-----------

Turner, et al. Standards Track [Page 9] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

 To promote interoperability, the following choices are RECOMMENDED:
 Minimum  | ECDSA    | Message    | Curves
 Bits of  | Key Size | Digest     |
 Security |          | Algorithms |
 ---------+----------+------------+-----------
 80       | 192      | SHA-256    | secp192r1
 ---------+----------+------------+-----------
 112      | 224      | SHA-256    | secp224r1
 ---------+----------+------------+-----------
 128      | 256      | SHA-256    | secp256r1
 ---------+----------+------------+-----------
 192      | 384      | SHA-384    | secp384r1
 ---------+----------+------------+-----------
 256      | 512      | SHA-512    | secp521r1
 ---------+----------+------------+-----------
 Using a larger hash value and then truncating it consumes more
 processing power than is necessary.  This is more important on
 constrained devices.  Since the signer does not know the environment
 that the recipient will use to validate the signature, it is better
 to use a hash function that provides the desired hash value output
 size, and no more.
 There are security risks with using keys not associated with well-
 known and widely reviewed curves.  For example, the curve may not
 satisfy the Menezes-Okamoto-Vanstone (MOV) condition [X9.62] or the
 curve may be vulnerable to the Anomalous attack [X9.62].
 Additionally, either a) all of the arithmetic properties of a
 candidate ECC public key must be validated to ensure that it has the
 unique correct representation in the correct (additive) subgroup (and
 therefore is also in the correct EC group) specified by the
 associated ECC domain parameters, or b) some of the arithmetic
 properties of a candidate ECC public key must be validated to ensure
 that it is in the correct group (but not necessarily the correct
 subgroup) specified by the associated ECC domain parameters
 [SP800-56A].
 As noted in [PKI-ALG], the use of MD2 and MD5 for new applications is
 discouraged.  It is still reasonable to use MD2 and MD5 to verify
 existing signatures.

5. ASN.1 Considerations

 [X9.62] defines additional options for ECParameters and ECDSA-Sig-
 Value [PKI-ALG].  If an implementation needs to use these options,
 then use the [X9.62] ASN.1 module.  This RFC contains a conformant
 subset of the ASN.1 module defined in [X9.62].

Turner, et al. Standards Track [Page 10] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

 If an implementation generates a PER [X.691] encoding using the ASN.1
 module found in this specification, it might not achieve the same
 encoded output as one that uses the [X9.62] module.  PER is not
 required by either the PKIX or S/MIME environments.  If an
 implementation environment requires PER, then implementation concerns
 are less likely with the use of the [X9.62] module.

6. IANA Considerations

 This document makes extensive use of object identifiers to register
 public key types, elliptic curves, and algorithms.  Most are
 registered in the ANSI X9.62 arc, with the exception of the hash
 algorithms (which are in the NIST arc) and many of the curves (which
 are in the Certicom Inc. arc; these curves have been adopted by ANSI
 and NIST).  Additionally, an object identifier is used to identify
 the ASN.1 module found in Appendix A.  It is defined in an arc
 delegated by IANA to the PKIX Working Group.  No further action by
 IANA is necessary for this document or any anticipated updates.

7. Acknowledgments

 The authors wish to thank Stephen Farrell, Alfred Hoenes, Johannes
 Merkle, Jim Schaad, and Carl Wallace for their valued input.

8. References

8.1. Normative References

 [FIPS180-3]  National Institute of Standards and Technology (NIST),
              FIPS Publication 180-3: Secure Hash Standard, October
              2008.
 [FIPS186-3]  National Institute of Standards and Technology (NIST),
              FIPS Publication 186-3: Digital Signature Standard,
              (draft) November 2008.
 [MUSTSHOULD] Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.
 [PKI]        Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
              Housley, R., and W. Polk, "Internet X.509 Public Key
              Infrastructure Certificate and Certificate Revocation
              List (CRL) Profile", RFC 5280, May 2008.
 [PKI-ALG]    Bassham, L., Polk, W., and R. Housley, "Algorithms and
              Identifiers for the Internet X.509 Public Key
              Infrastructure Certificate and Certificate Revocation
              List (CRL) Profile", RFC 3279, April 2002.

Turner, et al. Standards Track [Page 11] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

 [RSAOAEP]    Schaad, J., Kaliski, B., and R. Housley, "Additional
              Algorithms and Identifiers for RSA Cryptography for use
              in the Internet X.509 Public Key Infrastructure
              Certificate and Certificate Revocation List (CRL)
              Profile", RFC 4055, June 2005.
 [SEC1]       Standards for Efficient Cryptography Group (SECG), "SEC
              1: Elliptic Curve Cryptography", Version 1.0, September
              2000.
 [X9.62]      American National Standards Institute (ANSI), ANS
              X9.62-2005: The Elliptic Curve Digital Signature
              Algorithm (ECDSA), 2005.
 [X.680]      ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-1:2002.
              Information Technology - Abstract Syntax Notation One.

8.2. Informative References

 [PKI-ADALG]  Dang, Q., Santesson, S., Moriarty, K., Brown, D., and T.
              Polk, "Internet X.509 Public Key Infrastructure:
              Additional Algorithms and Identifiers for DSA and
              ECDSA", Work in Progress, October 2008.
 [SP800-56A]  National Institute of Standards and Technology (NIST),
              Special Publication 800-56A: Recommendation for Pair-
              Wise Key Establishment Schemes Using Discrete Logarithm
              Cryptography (Revised), March 2007.
 [SP800-57]   National Institute of Standards and Technology (NIST),
              Special Publication 800-57: Recommendation for Key
              Management - Part 1 (Revised), March 2007.
 [X.691]      ITU-T Recommendation X.691 (2002) | ISO/IEC 8825-2:2002.
              Information Technology - ASN.1 Encoding Rules:
              Specification of Packed Encoding Rules.

Turner, et al. Standards Track [Page 12] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

Appendix A. ASN.1 Module

 PKIX1Algorithms2008 { iso(1) identified-organization(3) dod(6)
   internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) 45 }
 DEFINITIONS EXPLICIT TAGS ::=
 BEGIN
  1. - EXPORTS ALL;
 IMPORTS
  1. - From RFC 4055 [RSAOAEP]
 id-sha224, id-sha256, id-sha384, id-sha512
   FROM PKIX1-PSS-OAEP-Algorithms
     { iso(1) identified-organization(3) dod(6) internet(1)
       security(5) mechanisms(5) pkix(7) id-mod(0)
       id-mod-pkix1-rsa-pkalgs(33) }
 ;
  1. -
  2. - Message Digest Algorithms
  3. -
  1. - MD-2
  2. - Parameters are NULL
 id-md2  OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 }
  1. - MD-5
  2. - Parameters are NULL
 id-md5  OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) rsadsi(113549)digestAlgorithm(2) 5 }
  1. - SHA-1
  2. - Parameters are preferred absent
 id-sha1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) oiw(14) secsig(3)
   algorithm(2) 26 }
  1. - SHA-224
  2. - Parameters are preferred absent

Turner, et al. Standards Track [Page 13] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

  1. - id-sha224 OBJECT IDENTIFIER ::= {
  2. - joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
  3. - csor(3) nistalgorithm(4) hashalgs(2) 4 }
  4. - SHA-256
  5. - Parameters are preferred absent
  1. - id-sha256 OBJECT IDENTIFIER ::= {
  2. - joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
  3. - csor(3) nistalgorithm(4) hashalgs(2) 1 }
  1. - SHA-384
  2. - Parameters are preferred absent
  1. - id-sha384 OBJECT IDENTIFIER ::= {
  2. - joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
  3. - csor(3) nistalgorithm(4) hashalgs(2) 2 }
  1. - SHA-512
  2. - Parameters are preferred absent
  1. - id-sha512 OBJECT IDENTIFIER ::= {
  2. - joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
  3. - csor(3) nistalgorithm(4) hashalgs(2) 3 }
  1. -
  2. - Public Key (PK) Algorithms
  3. -
  1. - RSA PK Algorithm and Key
 rsaEncryption OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 1 }
 RSAPublicKey ::= SEQUENCE {
   modulus         INTEGER, -- n
   publicExponent  INTEGER  -- e
 }
  1. - DSA PK Algorithm, Key, and Parameters
 id-dsa OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 }
 DSAPublicKey ::= INTEGER --  public key, y

Turner, et al. Standards Track [Page 14] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

 DSS-Parms ::= SEQUENCE {
   p  INTEGER,
   q  INTEGER,
   g  INTEGER
 }
  1. - Diffie-Hellman PK Algorithm, Key, and Parameters
 dhpublicnumber OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 }
 DHPublicKey ::= INTEGER  -- public key, y = g^x mod p
 DomainParameters ::= SEQUENCE {
   p                INTEGER,           -- odd prime, p=jq +1
   g                INTEGER,           -- generator, g
   q                INTEGER,           -- factor of p-1
   j                INTEGER OPTIONAL,  -- subgroup factor, j>= 2
   validationParms  ValidationParms OPTIONAL
 }
 ValidationParms ::= SEQUENCE {
   seed         BIT STRING,
   pgenCounter  INTEGER
 }
  1. - KEA PK Algorithm and Parameters
 id-keyExchangeAlgorithm OBJECT IDENTIFIER ::= {
   joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)
   dod(2) infosec(1) algorithms(1) 22 }
 KEA-Parms-Id ::= OCTET STRING
  1. - Sec 2.1.1 Unrestricted Algorithm ID, Key, and Parameters
  2. - (ECDSA keys use id-ecPublicKey)
 id-ecPublicKey OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }
 ECPoint ::= OCTET STRING
  1. - Parameters for both Restricted and Unrestricted
 ECParameters ::= CHOICE {
   namedCurve         OBJECT IDENTIFIER
   -- implicitCurve   NULL

Turner, et al. Standards Track [Page 15] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

  1. - specifiedCurve SpecifiedECDomain

}

  1. - implicitCurve and specifiedCurve MUST NOT be used in PKIX.
  2. - Details for SpecifiedECDomain can be found in [X9.62].
  3. - Any future additions to this CHOICE should be coordinated
  4. - with ANSI X9.
  1. - Sec 2.1.2 Restricted Algorithm IDs, Key, and Parameters: ECDH
 id-ecDH OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) schemes(1)
   ecdh(12) }
  1. - ECPoint ::= OCTET STRING
  1. - Parameters are ECParameters.
  1. - Sec 2.1.2 Restricted Algorithm IDs, Key, and Parameters: ECMQV
 id-ecMQV OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) schemes(1)
   ecmqv(13) }
  1. - ECPoint ::= OCTET STRING
  1. - Parameters are ECParameters.
  1. -
  2. - Signature Algorithms
  3. -
  1. - RSA with MD-2
  2. - Parameters are NULL
 md2WithRSAEncryption OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 2 }
  1. - RSA with MD-5
  2. - Parameters are NULL
 md5WithRSAEncryption OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 4 }
  1. - RSA with SHA-1
  2. - Parameters are NULL
 sha1WithRSAEncryption OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 5 }

Turner, et al. Standards Track [Page 16] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

  1. - DSA with SHA-1
  2. - Parameters are ABSENT
 id-dsa-with-sha1 OBJECT IDENTIFIER ::=  {
   iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 3 }
  1. - DSA with SHA-224
  2. - Parameters are ABSENT
 id-dsa-with-sha224 OBJECT IDENTIFIER  ::=  {
   joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101)
   csor(3) algorithms(4) id-dsa-with-sha2(3) 1 }
  1. - DSA with SHA-256
  2. - Parameters are ABSENT
 id-dsa-with-sha256 OBJECT IDENTIFIER  ::=  {
   joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101)
   csor(3) algorithms(4) id-dsa-with-sha2(3) 2 }
  1. - ECDSA with SHA-1
  2. - Parameters are ABSENT
 ecdsa-with-SHA1 OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) 1 }
  1. - ECDSA with SHA-224
  2. - Parameters are ABSENT
 ecdsa-with-SHA224 OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
   ecdsa-with-SHA2(3) 1 }
  1. - ECDSA with SHA-256
  2. - Parameters are ABSENT
 ecdsa-with-SHA256 OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
   ecdsa-with-SHA2(3) 2 }
  1. - ECDSA with SHA-384
  2. - Parameters are ABSENT
 ecdsa-with-SHA384 OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
   ecdsa-with-SHA2(3) 3 }

Turner, et al. Standards Track [Page 17] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

  1. - ECDSA with SHA-512
  2. - Parameters are ABSENT
 ecdsa-with-SHA512 OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4)
   ecdsa-with-SHA2(3) 4 }
  1. -
  2. - Signature Values
  3. -
  1. - DSA
 DSA-Sig-Value ::= SEQUENCE {
   r  INTEGER,
   s  INTEGER
 }
  1. - ECDSA
 ECDSA-Sig-Value ::= SEQUENCE {
   r  INTEGER,
   s  INTEGER
 }
  1. -
  2. - Named Elliptic Curves
  3. -
  1. - Note that in [X9.62] the curves are referred to as 'ansiX9' as
  2. - opposed to 'sec'. For example secp192r1 is the same curve as
  3. - ansix9p192r1.
  1. - Note that in [PKI-ALG] the secp192r1 curve was referred to as
  2. - prime192v1 and the secp256r1 curve was referred to as prime256v1.
  1. - Note that [FIPS186-3] refers to secp192r1 as P-192, secp224r1 as
  2. - P-224, secp256r1 as P-256, secp384r1 as P-384, and secp521r1 as
  3. - P-521.
 secp192r1 OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
   prime(1) 1 }
 sect163k1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 1 }

Turner, et al. Standards Track [Page 18] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

 sect163r2 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 15 }
 secp224r1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 33 }
 sect233k1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 26 }
 sect233r1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 27 }
 secp256r1 OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
   prime(1) 7 }
 sect283k1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 16 }
 sect283r1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 17 }
 secp384r1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 34 }
 sect409k1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 36 }
 sect409r1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 37 }
 secp521r1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 35 }
 sect571k1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 38 }
 sect571r1 OBJECT IDENTIFIER ::= {
   iso(1) identified-organization(3) certicom(132) curve(0) 39 }
 END

Turner, et al. Standards Track [Page 19] RFC 5480 ECC SubjectPublicKeyInfo Format March 2009

Authors' Addresses

 Sean Turner
 IECA, Inc.
 3057 Nutley Street, Suite 106
 Fairfax, VA 22031
 USA
 EMail: turners@ieca.com
 Kelvin Yiu
 Microsoft
 One Microsoft Way
 Redmond, WA 98052-6399
 USA
 EMail: kelviny@microsoft.com
 Daniel R. L. Brown
 Certicom Corp
 5520 Explorer Drive #400
 Mississauga, ON L4W 5L1
 CANADA
 EMail: dbrown@certicom.com
 Russ Housley
 Vigil Security, LLC
 918 Spring Knoll Drive
 Herndon, VA 20170
 USA
 EMail: housley@vigilsec.com
 Tim Polk
 NIST
 Building 820, Room 426
 Gaithersburg, MD 20899
 EMail: wpolk@nist.gov

Turner, et al. Standards Track [Page 20]

/data/webs/external/dokuwiki/data/pages/rfc/rfc5480.txt · Last modified: 2009/03/09 21:59 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki