PKIX Working Group Q. Dang (NIST) Internet Draft S. Santesson (Microsoft) Intended Category: Standards Track K. Moriarty (RSA) D. Brown (Certicom Corp.) Expires: April 30, 2009 T. Polk (NIST) October 30, 2008 Internet X.509 Public Key Infrastructure: Additional Algorithms and Identifiers for DSA and ECDSA Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. 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." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Copyright Notice Copyright (C) The IETF Trust (2008). Dang, et al. Expires April 30, 2009 [Page 1] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 Abstract This document supplements RFC 3279. It specifies algorithm identifiers and ASN.1 encoding rules for the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures when using SHA-224, SHA-256, SHA-384 or SHA-512 as hashing algorithm. This specification applies to the Internet X.509 Public Key Infrastructure (PKI) when digital signatures are used to sign certificates and certificate revocation lists (CRLs). 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]. Table of Contents 1. Introduction...................................................2 2. One-way Hash Functions.........................................3 3. Signature Algorithms...........................................4 3.1 DSA Signature Algorithm..................................4 3.2 ECDSA Signature Algorithm................................6 4. ASN.1 Module...................................................7 5. Security Considerations........................................8 6. References....................................................10 6.1 Normative references:...................................10 6.2 Informative references..................................11 7. Authors' Addresses............................................11 8. IANA Considerations...........................................12 9. Intellectual Property.........................................12 10.Copyright Statement...........................................13 1. Introduction This specification supplements [RFC 3279], "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile" and extends the list of algorithms defined for use in the Internet PKI. This document specifies algorithm identifiers and ASN.1 [X.660] encoding rules for DSA and ECDSA Dang, et al. Expires April 30, 2009 [Page 2] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 digital signatures in certificates and CRLs when using one of the SHA-2 hash algorithms (SHA-224, SHA-256, SHA-384, and SHA-512) as the hash algorithm. This specification defines the contents of the signatureAlgorithm, signatureValue and signature fields within Internet X.509 certificates and CRLs when these objects are signed using DSA or ECDSA with a SHA-2 hash algorithm. These fields are more fully described in [RFC 5280]. This document profiles material presented in the ''Secure Hash Standard '' [FIPS 180-3], "Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Standard (ECDSA)" [X9.62], and the ''Digital Signature Standard'' [FIPS 186-3]. Algorithm identifiers and encoding rules for RSA, DSA and ECDSA when used with SHA-1 are specified in [RFC 3279]. Algorithm identifiers and encoding rules for RSA when used with SHA-2 are specified in [RFC 4055]. 2. One-way Hash Functions This section identifies four additional hash algorithms for use with DSA and ECDSA in the Internet X.509 certificate and CRL profile [RFC 5280]. SHA-224, SHA-256, SHA-384, and SHA-512 produce a 224-bit, 256-bit, 384- bit and 512-bit "hash" of the input respectively and are fully described in the Federal Information Processing Standard 180-3 [FIPS 180-3]. The listed one-way hash functions are identified by the following object identifiers (OIDs): id-sha224 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 4 } id-sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1 } id-sha384 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2 } id-sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3 } Dang, et al. Expires April 30, 2009 [Page 3] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 When one of these OIDs appears in an AlgorithmIdentifier, all implementations MUST accept both NULL and absent parameters as legal and equivalent encodings. 3. Signature Algorithms Certificates and CRLs conforming to [RFC 5280] may be signed with any public key signature algorithm. The certificate or CRL indicates the algorithm through an identifier, which appears in the signatureAlgorithm field within the Certificate or CertificateList. This algorithm identifier is an OID and has optionally associated parameters. This section denotes algorithm identifiers and parameters that MUST be used in the signatureAlgorithm field in a Certificate or CertificateList. Signature algorithms are always used in conjunction with a one-way hash function. This section identifies OIDs for DSA and ECDSA with SHA-224, SHA-256, SHA-384, and SHA-512. The contents of the parameters component for each signature algorithm vary; details are provided for each algorithm. The data to be signed (e.g., the one-way hash function output value) is formatted for the signature algorithm to be used. Then, a private key operation (e.g., DSA encryption) is performed to generate the signature value. This signature value is then ASN.1 encoded as a BIT STRING and included in the Certificate or CertificateList in the signature field. More detail on how digital signatures are generated can be found in [FIPS 186-3]. Entities that validate DSA signatures MUST support SHA-224 and SHA-256. Entities that validate ECDSA signatures MUST support SHA-224 and SHA-256 and should support SHA-384 and SHA-512. 3.1 DSA Signature Algorithm The DSA is defined in the Digital Signature Standard (DSS) [FIPS 186-3]. DSA was developed by the U.S. Government, and can be used in conjunction with a SHA2 one-way hash function such as SHA-224 or SHA-256. DSA is fully described in [FIPS 186-3]. [FIPS 186-3] specifies four size-choices for a DSA key pair of the form (public key size, private key size) in bits. The four choices are (1024, 160), (2048, 224), (2048, 256), and (3072, 256). More information can be found in [FIPS 186-3]. For the remainder of this specification, each and every key pair of the DSA key pairs is referred to by the size of its public key. Dang, et al. Expires April 30, 2009 [Page 4] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 DSA key pairs of 1024 and 2048 bits may be used with SHA-224. DSA key pairs of any of the four sizes may use SHA-256. The following are the OIDs of the DSA digital signature algorithm when used with SHA-224 or SHA-256. When SHA-224 is used, the OID is: 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 } When SHA-256 is used, the OID is: 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 } The(3072, 256) DSA key pair provides 128 bits of security and provides the most security among all the four sizes of DSA key pairs. More information on security strength assessments of DSA and other cryptographic algorithms can be found in [SP 800-57]. A digital signature algorithm has the same security strength as its asymmetric key algorithm like DSA or ECDSA only if its hashing algorithm has at least the same security strength as the asymmetric key algorithm. Therefore, a 128-bit security strength hashing algorithm which is SHA-256 will be sufficient to build a 128-bit security strength DSA digital signature algorithm when a DSA key pair of the size (3072, 256) is used. Therefore, it is only needed to specify DSA with SHA-224 and SHA-256 because SHA-256 provides sufficient security for using with any DSA key pair of any of the four size choices. More information on security strengths of the hash functions SHAs specified in [FIPS 180-3] and the digital signature algorithms specified in [FIPS 186-3] can be found in [SP 800-107] and [SP 800-57]. When the id-dsa-with-sha224 or id-dsa-with-sha256 algorithm identifier appears in the algorithm field as an AlgorithmIdentifier, the encoding SHALL omit the parameters field. That is, the AlgorithmIdentifier SHALL be a SEQUENCE of one component, the OID id-dsa-with-sha224 or id-dsa- with-sha256. Encoding rules for DSA signature values are specified in [RFC 3279]. For completeness, this information is repeated below: When signing, the DSA algorithm generates two values commonly referred to as r and s. To easily transfer these two values as one signature, they SHALL be ASN.1 encoded using the following ASN.1 structure: Dang, et al. Expires April 30, 2009 [Page 5] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } The DSA parameters in the subjectPublicKeyInfo field of the certificate of the issuer SHALL apply to the verification of the signature. 3.2 ECDSA Signature Algorithm The Elliptic Curve Digital Signature Algorithm (ECDSA) is defined in, "Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Standard (ECDSA)" [X9.62]. The ASN.1 OIDs used to specify that an ECDSA signature was generated using SHA224, SHA256, SHA384 or SHA 512 are respectively: ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } When the ecdsa-with-SHA224, ecdsa-with-SHA256, ecdsa-with-SHA384 or ecdsa-with-SHA512 algorithm identifier appears in the algorithm field as an AlgorithmIdentifier, the encoding MUST omit the parameters field. That is, the AlgorithmIdentifier SHALL be a SEQUENCE of one component, the OID ecdsa-with-SHA224, ecdsa-with-SHA256, ecdsa-with-SHA384 or ecdsa-with-SHA512. Conforming CA implementations MUST specify the hash algorithm explicitly, using the OIDs specified above, when encoding ECDSA/SHA-2 signatures in certificates and CRLs. Conforming client implementations that process ECDSA signatures with any of the SHA-2 hash algorithms when processing certificates and CRLs MUST recognize the corresponding OIDs specified above. [X9.62] has defined additional OIDs for the ECDSA signature algorithm. Encoding rules for ECDSA signature values are specified in [RFC 3279]. For completeness, this information is repeated below: Dang, et al. Expires April 30, 2009 [Page 6] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 When signing, the ECDSA algorithm generates two values commonly referred to as r and s. To easily transfer these two values as one signature, they MUST be ASN.1 encoded using the following ASN.1 structure: Ecdsa-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } The elliptic curve parameters in the subjectPublicKeyInfo field of the certificate of the issuer MUST be applied to the verification of the signature. The subjectPublicKeyInfo field must be compliant with requirements for Subject Public Key Information field in [Elliptic Curve]. 4. ASN.1 Module DEFINITIONS EXPLICIT TAGS ::= BEGIN -- EXPORTS ALL -- -- All types and values defined in this module are -- exported for use in other ASN.1 modules. IMPORTS NONE id-sha224 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 4 } id-sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1 } id-sha384 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2 } id-sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3 } Dang, et al. Expires April 30, 2009 [Page 7] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 -- -- DSA with SHA-224 and SHA-256 signature algorithms -- 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 } 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 } -- -- ECDSA Signatures with SHA-2 Hashes, from X9.62 -- ecdsa-with-SHA224 ::= { iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } ecdsa-with-SHA256 ::= { iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } ecdsa-with-SHA384 ::= { iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } ecdsa-with-SHA512 ::= { iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } END -- Definitions 5. Security Considerations This specification supplements [RFC 3279]. This document covers the DSA and ECDSA algorithms with SHA2 hash functions and the associated considerations. The appropriate use of the hash functions in terms of the algorithm strengths and expected time frames for secure use as defined by NIST can be found in Special Publications (SPs) 800-78-1 [SP 800-78-1], 800-57 [SP 800-57] and 800-107 [SP 800-107]. FIPS 186-3 fully specifies the DSA digital signature algorithm and defines security requirements for the DSA and ECDSA digital signature algorithms; details can be found in [FIPS 186-3]. ECDSA is fully specified in [X9.62].[FIPS 186-3] also specifies three types of elliptic Dang, et al. Expires April 30, 2009 [Page 8] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 curves for use in conjunction with one of the described hash functions: curves over prime fields, curves over binary fields, and Koblitz curves (anomalous binary curves). FIPS 186-3 provides a table listing the uses and time periods for each algorithm and key size combinations for various applications. The DSA and ECDSA private keys must be generated from pseudorandom functions whose security strengths meet or exceed the desired security strengths for the digital signature algorithms. Guidelines on building these NIST-approved pseudorandom functions can be found in SP 800-90 [SP 800-90]. The hash functions must meet or exceed the desired security strengths of the digital signature algorithms. More guidelines can be found in SP 800-57 [SP 800-57] and SP 800-107 [SP 800- 107]. The one-way hash algorithms discussed in this document, SHA-224, SHA- 256, SHA-384, and SHA-512 each have a recommended lifetime when used in combination with a digital signature algorithm. NIST provides information on the appropriate time periods for which each combination should be used based upon the security needs of the service and information being protected in NIST Special Publication 800-57. A table outlines the year in which NIST deems it is no longer safe to use specific combinations of key lengths and algorithms of various strengths for RSA, DSA, and ECDSA. NIST also provides Recommendation for using NIST-approved hash algorithms in the digital signature applications in [SP 800-107]. The Special Publication 800-57 also provides guidelines for key management to be used by both developers and system administrators. The document covers the aspects of key management from algorithm selection and key sizes with associated key usage period to key usage (preventing key overlap), the compromise of keys and keying material, and key destruction. Specific guidelines are offered for key usage periods such as the lifetime of a private signature key may be shorter than the lifetime of the public verification key for practical applications. The specification also provides recommendations on the number of years various key types should be used such as public and private signature keys, public and private authentication keys, etc. NIST Special Publication 800-78-1 also lists time frames for the use of combined hash algorithms and digital signature algorithms for specific key types, but differentiates some security requirements between digital signature and authentication keys. The recommendation for the size of digital signature keys and key management keys is more restrictive than that of authentication keys, because they are used to protect data for longer periods of time. Dang, et al. Expires April 30, 2009 [Page 9] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 Therefore, the transition dates to larger key sizes are earlier in general. Guidelines for the protection of domain parameters, initialization vectors (IVs), and per message secret numbers for use with digital signature algorithms, DSA and ECSDA are provided in [FIPS 186-3]. An assurance of integrity should be obtained prior to using all keying material for the generation of digital signatures using DSA and ECDSA. Recommendation for Obtaining Assurances for Digital Signature Applications can be found in [SP 800-89]. The purpose of this is to ensure the keying material is in the proper format, the domain parameters are valid, the possession of the private key, the validity of the public key, and that the request is coming from an authorized source. Certificate Authorities (CAs) that issue certificates using the DSA and ECDSA algorithms for key generation SHOULD adhere to the recommended security guidelines for key management in the NIST Special Publication 800-57. When signing a digital signature certificate, a CA should use the same or greater size hash function than the hash function in the digital signature algorithm in the certificate. 6. References 6.1 Normative references: [RFC 2119] Bradner, S., "Key Words for Use in RFCs to Indicate Requirement Levels", RFC 2119, March 1997. [RFC 3279] 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. [RFC 5280] 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. [X9.62] X9.62-2005, "Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Standard (ECDSA)", November, 2005. [Elliptic Curve]Turner S., Brown D., Yiu K., Housley R., and Polk W., "Elliptic Curve Cryptography Subject Public Key Dang, et al. Expires April 30, 2009 [Page 10] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 Information" draft-ietf-pkix-ecc-subpubkeyinfo-08.txt (work in progress), September 2008. [FIPS 180-3] Federal Information Processing Standards Publication (FIPS PUB) 180-3, Secure Hash Standard (SHS), October 2008. [FIPS 186-3] Federal Information Processing Standards Publication (FIPS PUB) 186-3, Digital Signature Standard (DSS), (draft) 13 March 2006. 6.2 Informative references [SP 800-107] Q. Dang, NIST, "Recommendation for Applications Using Approved Hash Algorithms", (draft) July 2008. [SP 800-78-1] W. Timothy Polk, Donna, F. Dodson, William E. Burr, NIST, "Cryptographic Standards and Key Sizes for Personal Identity Verification", August 2007. [SP 800-57] Elaine Barker, William Barker, William E. Burr, NIST, "Recommendation for Key Management", August 2005. [SP 800-89] Elaine Barker, NIST, "Recommendation for Obtaining Assurances for Digital Signature Applications", November 2006. [SP 800-90] Elaine Barker, John Kelsey, NIST, ''Recommendation for Random Number Generation Using Deterministic Random Bit Generators'', March 2007. [RFC 4055] Schaad, J., Kaliski, B., and Housley, R., "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. 7. Authors' Addresses Quynh Dang NIST 100 Bureau Drive, Stop 8930 Gaithersburg, MD 20899-8930 USA Email: quynh.dang@nist.gov Dang, et al. Expires April 30, 2009 [Page 11] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 Stefan Santesson Microsoft Tuborg Boulevard 12 2900 Hellerup Denmark EMail: stefans@microsoft.com Kathleen M. Moriarty RSA, The Security Division of EMC 174 Middlesex Turnpike Bedford, MA 01730 Email: kathleen.moriarty@rsa.com Daniel R. L. Brown Certicom Corp. 5520 Explorer Drive Mississaug, ON L4W 5L1 Email: dbrown@certicom.com Tim Polk NIST 100 Bureau Drive, Stop 8930 Gaithersburg, MD 20899-8930 USA Email: tim.polk@nist.gov 8. IANA Considerations This document has no actions for IANA. 9. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the Dang, et al. Expires April 30, 2009 [Page 12] Internet-Draft DSA/ECDSA Algorithm Identifiers October 2008 procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf- ipr@ietf.org. 10.Copyright Statement Copyright (C) The IETF Trust (2008). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Dang, et al. Expires April 30, 2009 [Page 13]