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.  
            <draft-jonsson-pkcs1-v2dot1-00.txt> 
    
   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