S/MIME Working Group J Schaad Internet Draft Soaring Hawk Consulting Document: draft-ietf-smime-pss-00.txt February 2003 Category: Standards Use of the PSS Signature Algorithm in CMS Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026 [1]. 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. Comments or suggestions for improvement may be made on the "ietf- smime" mailing list, or directly to the author. Abstract This document specifies the conventions for using the RSA Probabilistic Signature Scheme (RSASSA-PSS) digital signature algorithm [P1v2.1] with the Cryptographic Message Syntax (CMS) [CMS]. Conventions used in this document 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 [STDWORDS]. 1. Overview This document specifies the conventions for using the RSASSA-PSS [P1v2.1] digital signature algorithm with the Cryptographic Message Syntax [CMS] signed-data content type. Schaad Standards - Exp: August 2003 1 CMS and PSS Signature February 2003 CMS values are generated using ASN.1 [X.208-88], using the Basic Encoding Rules (BER) [X.209-88] and the Distinguished Encoding Rules (DER) [X.509-88]. NOTE: AT PRESENT THERE ARE INCOMPATILITIES BETWEEN THIS DOCUMENT AND RSASSA-PSS [P1v2.1] and RFC XXX [RSA-ALGS]. These will be resolved before final acceptance by the working group and reflect issues that I believe need to be addressed in those documents. 1.1 PSS Algorithm Although there are no known defects with the PKCS #1 v1.5 [P1v1.5] signature algorithm, RSASSA-PSS [P1v2.1] was developed in an effort to have more mathematically provable security. PKCS #1 v1.5 signatures were developed in an ad hoc manner, RSASSA-PSS was developed based on mathematical foundations. 2. Algorithm Identifiers and Parameters 2.1 Certificate Identifiers The RSASSA-PSS signature algorithm is defined in RFC 3447 [P1v2.1]. Conventions for encoding the public key are defined in RFC XXX [RSA- ALGS]. Two algorithm identifiers for RSA subject public keys in certificates are used. These are: rsaEncryption OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 1 } and id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } When the rsaEncryption algorithm identifier is used for a public key, the AlgorithmIdentifier parameters field MUST contain NULL. Complete details can be found in [RSA-ALGS]. When the id-RSASSA-PSS algorithm identifier is used for a public key, the AlgorithmIdentifier parameters field MUST contain RSASSA- PSS-params. Again, complete details can be found in [PKALGS]. In both cases, the RSA public key, which is composed of a modulus and a public exponent, MUST be encoded using the RSAPublicKey type. The output of this encoding is carried in the certificate subject public key. RSAPublicKey ::= SEQUENCE { modulus INTEGER, -- n publicExponent INTEGER } -- e Schaad Standards - Exp: August 2003 2 CMS and PSS Signature February 2003 2.2 Signature Identifiers The algorithm identifier for RSASAA-PSS signatures is: id-RSASSA-PSS-sig OBJECT IDENTIFER ::= {pkcs-1 XX } When the id-RSASSA-PSS algorithm identifier is used for a signature, the AlgorithmIdentifier parameters field MUST contain RSASSA-PSS- params. Information about RSASSA-PSS-params can be found in [RSA- ALGS]. When signing, the RSA algorithm generates a single value, and that value is used directly as the signature value. 3. Signed-data Conventions digestAlgorithms SHOULD contain the one-way hash function used to compute the message digest on the eContent value. The same one-way hash function SHOULD be used for computing the message digest on both the eContent and the signedAttributes value if signedAttributes exist. The same one-way hash function SHOULD be used for computing the message digest on the signedAttributes and as the hashAlgorithm in the RSA-PSS-params structure. signatureAlgorithm MUST contain id-RSASSA-PSS-sig. The algorithm parameters field MUST contain RSASSA-PSS-params. signature contains the single value resulting from the signing operation. When the subjectPublicKeyInfo algorithm identifier for the public key in the certificate contains id-RSASSA-PSS, the signature verification processing MUST compare the RSASSA-PSS-params field in the signed message and the certificate subjectPublicKeyInfo algorithm. If the hashAlgorithm and maskGenAlgorithm fields are not the same, then signature verification MUST fail. AUTHOR NOTE: Verify that these are the correct set of tests to be validated. It may change in [RSA-ALGS]. 4. Security Considerations Implementations must protect the RSA private key. Compromise of the RSA private key may result in the ability to forge signatures. The generation of RSA private key relies on random numbers. The use of inadequate pseudo-random number generators (PRNGs) to generate these values can result in little or no security. An attacker may find it much easier to reproduce the PRNG environment that produced the keys, searching the resulting small set of possibilities, rather Schaad Standards - Exp: August 2003 3 CMS and PSS Signature February 2003 than brute force searching the whole key space. The generation of quality random numbers is difficult. RFC 1750 [RANDOM] offers important guidance in this area. 5. Normative References CMS Housley, R, "Cryptographic Message Syntax", RFC 3369, August 2002. P1v2.1 Jonsson, J., and B. Kaliski, "PKCS #1: RSA Cryptography Specification Version 2.1", Internet-Draft, August 2002. RSA-ALGS Housley, R. and B. Kaliski, "Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", draft-ietf-pkix-rsa-pkalgs-00.txt, December 2002. PKALGS Polk, W, R Housley, L. Bassham, "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279, April 2002. SHA2 National Institute of Standards and Technology (NIST), FIPS 180-2: Secure Hash Standard, 1 August 2002. STDWORDS S. Bradner, "Key Words for Use in RFCs to Indicate Requirement Levels", RFC 2119, March 1997. X.208-88 CCITT Recommendation X.208: Specification of Abstract Syntax Notation One (ASN.1), 1998. X.209-88 CCITT Recommendation X.209: Specification of Basic Encoding Rules for Abstract Syntax Notation One (ASN.1), 1988. X.509-88 CCITT Recommendation X.509: The Directory Authentication Framework, 1988. 6. Informational References P1v1.5 Kaliski, B. and J. Staddon, "PKCS #1: RSA Encryption, Version 2.0, RFC 2437, October 1998. RANDOM Eastlake, D., S. Crocker and J. Schiller "Randomness Recommendations for Security", RFC 1750, December 1994. Schaad Standards - Exp: August 2003 4 CMS and PSS Signature February 2003 7. Author's Address Jim Schaad Soaring Hawk Consulting PO Box 675 Gold Bar, WA 98251 Email: jimsch@exmsft.com Full Copyright Statement "Copyright (C) The Internet Society (2003). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. Schaad Standards - Exp: August 2003 5