draft-ietf-smime-pss-00.txt   draft-ietf-smime-pss-01.txt 
S/MIME Working Group J Schaad S/MIME Working Group J Schaad
Internet Draft Soaring Hawk Consulting Internet Draft Soaring Hawk Consulting
Document: draft-ietf-smime-pss-00.txt February 2003 Document: draft-ietf-smime-pss-01.txt May 2003
Category: Standards Category: Standards
Use of the PSS Signature Algorithm in CMS Use of the PSS Signature Algorithm in CMS
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026 [1]. all provisions of Section 10 of RFC2026 [1].
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
skipping to change at line 51 skipping to change at line 51
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
this document are to be interpreted as described in RFC 2119 this document are to be interpreted as described in RFC 2119
[STDWORDS]. [STDWORDS].
1. Overview 1. Overview
This document specifies the conventions for using the RSASSA-PSS This document specifies the conventions for using the RSASSA-PSS
[P1v2.1] digital signature algorithm with the Cryptographic Message [P1v2.1] digital signature algorithm with the Cryptographic Message
Syntax [CMS] signed-data content type. Syntax [CMS] signed-data content type.
Schaad Standards - Exp: August 2003 1 Schaad Standards - Exp: November 2003 1
CMS and PSS Signature February 2003 CMS and PSS Signature May 2003
CMS values are generated using ASN.1 [X.208-88], using the Basic CMS values are generated using ASN.1 [X.208-88], using the Basic
Encoding Rules (BER) [X.209-88] and the Distinguished Encoding Rules Encoding Rules (BER) [X.209-88] and the Distinguished Encoding Rules
(DER) [X.509-88]. (DER) [X.509-88].
NOTE: AT PRESENT THERE ARE INCOMPATILITIES BETWEEN THIS DOCUMENT AND NOTE: AT PRESENT THERE ARE INCOMPATILITIES BETWEEN THIS DOCUMENT AND
RSASSA-PSS [P1v2.1] and RFC XXX [RSA-ALGS]. These will be resolved RSASSA-PSS [P1v2.1] and RFC XXX [RSA-ALGS]. These will be resolved
before final acceptance by the working group and reflect issues that before final acceptance by the working group and reflect issues that
I believe need to be addressed in those documents. I believe need to be addressed in those documents.
skipping to change at line 83 skipping to change at line 83
2.1 Certificate Identifiers 2.1 Certificate Identifiers
The RSASSA-PSS signature algorithm is defined in RFC 3447 [P1v2.1]. The RSASSA-PSS signature algorithm is defined in RFC 3447 [P1v2.1].
Conventions for encoding the public key are defined in RFC XXX [RSA- Conventions for encoding the public key are defined in RFC XXX [RSA-
ALGS]. ALGS].
Two algorithm identifiers for RSA subject public keys in Two algorithm identifiers for RSA subject public keys in
certificates are used. These are: certificates are used. These are:
rsaEncryption OBJECT IDENTIFIER ::= { iso(1) member-body(2) rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 }
us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 1 }
and and
id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 }
When the rsaEncryption algorithm identifier is used for a public When the rsaEncryption algorithm identifier is used for a public
key, the AlgorithmIdentifier parameters field MUST contain NULL. key, the AlgorithmIdentifier parameters field MUST contain NULL.
Complete details can be found in [RSA-ALGS]. Complete details can be found in [RSA-ALGS].
When the id-RSASSA-PSS algorithm identifier is used for a public When the id-RSASSA-PSS algorithm identifier is used for a public
key, the AlgorithmIdentifier parameters field MUST contain RSASSA- key, the AlgorithmIdentifier parameters field MUST either be absent
PSS-params. Again, complete details can be found in [PKALGS]. or 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 In both cases, the RSA public key, which is composed of a modulus
and a public exponent, MUST be encoded using the RSAPublicKey type. and a public exponent, MUST be encoded using the RSAPublicKey type.
The output of this encoding is carried in the certificate subject The output of this encoding is carried in the certificate subject
public key. public key.
RSAPublicKey ::= SEQUENCE { RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n modulus INTEGER, -- n
publicExponent INTEGER } -- e publicExponent INTEGER } -- e
Schaad Standards - Exp: August 2003 2 Schaad Standards - Exp: November 2003 2
CMS and PSS Signature February 2003 CMS and PSS Signature May 2003
2.2 Signature Identifiers 2.2 Signature Identifiers
The algorithm identifier for RSASAA-PSS signatures is: The algorithm identifier for RSASAA-PSS signatures is:
id-RSASSA-PSS-sig OBJECT IDENTIFER ::= {pkcs-1 XX } id-RSASSA-PSS OBJECT IDENTIFER ::= {pkcs-1 10 }
When the id-RSASSA-PSS algorithm identifier is used for a signature, When the id-RSASSA-PSS algorithm identifier is used for a signature,
the AlgorithmIdentifier parameters field MUST contain RSASSA-PSS- the AlgorithmIdentifier parameters field MUST contain RSASSA-PSS-
params. Information about RSASSA-PSS-params can be found in [RSA- params. Information about RSASSA-PSS-params can be found in [RSA-
ALGS]. ALGS].
When signing, the RSA algorithm generates a single value, and that When signing, the RSA algorithm generates a single value, and that
value is used directly as the signature value. value is used directly as the signature value.
3. Signed-data Conventions 3. Signed-data Conventions
skipping to change at line 137 skipping to change at line 137
compute the message digest on the eContent value. compute the message digest on the eContent value.
The same one-way hash function SHOULD be used for computing the The same one-way hash function SHOULD be used for computing the
message digest on both the eContent and the signedAttributes value message digest on both the eContent and the signedAttributes value
if signedAttributes exist. if signedAttributes exist.
The same one-way hash function SHOULD be used for computing the The same one-way hash function SHOULD be used for computing the
message digest on the signedAttributes and as the hashAlgorithm in message digest on the signedAttributes and as the hashAlgorithm in
the RSA-PSS-params structure. the RSA-PSS-params structure.
signatureAlgorithm MUST contain id-RSASSA-PSS-sig. The algorithm signatureAlgorithm MUST contain id-RSASSA-PSS. The algorithm
parameters field MUST contain RSASSA-PSS-params. parameters field MUST contain RSASSA-PSS-params.
signature contains the single value resulting from the signing signature contains the single value resulting from the signing
operation. operation.
When the subjectPublicKeyInfo algorithm identifier for the public If the subjectPublicKeyInfo algorithm identifier for the public key
key in the certificate contains id-RSASSA-PSS, the signature in the certificate is id-RSASSA-PSS and the parameters field is not
verification processing MUST compare the RSASSA-PSS-params field in absent, the following additional steps MUST be done as part of
the signed message and the certificate subjectPublicKeyInfo signature validation:
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 1. The hashAlgorithm field in the certificate
validated. It may change in [RSA-ALGS]. subjectPublicKey.algorithm parameters and the signatureAlgorithm
parameters MUST be the same.
2. The maskGenAlgorithm field in the certificate
subjectPublicKey.algorithm parameters and the signatureAlgorithm
parameters MUST be the same.
3. The saltLength in the signatureAlgorithm parameters MUST be
greater or equal to the saltLength in the certificate
subjectPublicKey.algorithm parameters.
4. The trailerField in the certificate subjectPublicKey.algorithm
parameters and signatureAlgorithm parameters MUST be the same.
In doing the above comparisons, default values are considered to be
the same as extant values. If any of the above four steps is not
true, the signature checking algorithm MUST fail validation.
Schaad Standards - Exp: November 2003 3
CMS and PSS Signature May 2003
4. Security Considerations 4. Security Considerations
Implementations must protect the RSA private key. Compromise of the Implementations must protect the RSA private key. Compromise of the
RSA private key may result in the ability to forge signatures. RSA private key may result in the ability to forge signatures.
The generation of RSA private key relies on random numbers. The use The generation of RSA private key relies on random numbers. The use
of inadequate pseudo-random number generators (PRNGs) to generate of inadequate pseudo-random number generators (PRNGs) to generate
these values can result in little or no security. An attacker may these values can result in little or no security. An attacker may
find it much easier to reproduce the PRNG environment that produced find it much easier to reproduce the PRNG environment that produced
the keys, searching the resulting small set of possibilities, rather 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 than brute force searching the whole key space. The generation of
quality random numbers is difficult. RFC 1750 [RANDOM] offers quality random numbers is difficult. RFC 1750 [RANDOM] offers
important guidance in this area. important guidance in this area.
5. Normative References 5. Normative References
CMS Housley, R, "Cryptographic Message Syntax", CMS Housley, R, "Cryptographic Message Syntax",
RFC 3369, August 2002. RFC 3369, August 2002.
P1v2.1 Jonsson, J., and B. Kaliski, "PKCS #1: RSA P1v2.1 Jonsson, J., and B. Kaliski, "PKCS #1: RSA
skipping to change at line 209 skipping to change at line 219
Indicate Requirement Levels", RFC 2119, March Indicate Requirement Levels", RFC 2119, March
1997. 1997.
X.208-88 CCITT Recommendation X.208: Specification of X.208-88 CCITT Recommendation X.208: Specification of
Abstract Syntax Notation One (ASN.1), 1998. Abstract Syntax Notation One (ASN.1), 1998.
X.209-88 CCITT Recommendation X.209: Specification of X.209-88 CCITT Recommendation X.209: Specification of
Basic Encoding Rules for Abstract Syntax Basic Encoding Rules for Abstract Syntax
Notation One (ASN.1), 1988. Notation One (ASN.1), 1988.
Schaad Standards - Exp: November 2003 4
CMS and PSS Signature May 2003
X.509-88 CCITT Recommendation X.509: The Directory X.509-88 CCITT Recommendation X.509: The Directory
Authentication Framework, 1988. Authentication Framework, 1988.
6. Informational References 6. Informational References
P1v1.5 Kaliski, B. and J. Staddon, "PKCS #1: RSA Encryption, P1v1.5 Kaliski, B. and J. Staddon, "PKCS #1: RSA Encryption,
Version 2.0, RFC 2437, October 1998. Version 2.0, RFC 2437, October 1998.
RANDOM Eastlake, D., S. Crocker and J. Schiller RANDOM Eastlake, D., S. Crocker and J. Schiller
"Randomness Recommendations for Security", "Randomness Recommendations for Security",
RFC 1750, December 1994. RFC 1750, December 1994.
Schaad Standards - Exp: August 2003 4
CMS and PSS Signature February 2003
7. Author's Address 7. Author's Address
Jim Schaad Jim Schaad
Soaring Hawk Consulting Soaring Hawk Consulting
PO Box 675 PO Box 675
Gold Bar, WA 98251 Gold Bar, WA 98251
Email: jimsch@exmsft.com Email: jimsch@exmsft.com
Full Copyright Statement Full Copyright Statement
skipping to change at line 254 skipping to change at line 264
the copyright notice or references to the Internet Society or other the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than followed, or as required to translate it into languages other than
English. English.
The limited permissions granted above are perpetual and will not be The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns. revoked by the Internet Society or its successors or assigns.
Schaad Standards - Exp: August 2003 5 Schaad Standards - Exp: November 2003 5
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/