Use of the RSASSA-PSS Signature Algorithm in Cryptographic Message Syntax (CMS)
RFC 4056

 
Document Type RFC - Proposed Standard (June 2005; No errata)
Last updated 2013-03-02
Stream IETF
Formats plain text pdf html
Stream WG state WG Document
Consensus Unknown
Document shepherd No shepherd assigned
IESG IESG state RFC 4056 (Proposed Standard)
Telechat date
Responsible AD Russ Housley
Send notices to (None)
Network Working Group                                          J. Schaad
Request for Comments: 4056                       Soaring Hawk Consulting
Category: Standards Track                                      June 2005

               Use of the RSASSA-PSS Signature Algorithm
                 in Cryptographic Message Syntax (CMS)

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) The Internet Society (2005).

Abstract

   This document specifies the conventions for using the RSASSA-PSS (RSA
   Probabilistic Signature Scheme) digital signature algorithm with the
   Cryptographic Message Syntax (CMS).

1.  Overview

   This document specifies the conventions for using the RSA
   Probabilistic Signature Scheme (RSASSA-PSS) [P1v2.1] digital
   signature algorithm with the Cryptographic Message Syntax [CMS]
   signed-data content type.

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

   This document is written to be used in conjunction with RFC 4055
   [RSA-ALGS].  All of the ASN.1 structures referenced in this document
   are defined in RFC 4055.

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

Schaad                      Standards Track                     [Page 1]
RFC 4056                 CMS and PSS Signature                 June 2005

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 4055
   [RSA-ALGS].

   Two algorithm identifiers for RSA subject public keys in certificates
   are used.  These are:

      rsaEncryption OBJECT IDENTIFIER ::= { pkcs-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 either be absent or
   contain RSASSA-PSS-params. Again, complete details can be found in
   [RSA-ALGS].

   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 Track                     [Page 2]
RFC 4056                 CMS and PSS Signature                 June 2005

2.2.  Signature Identifiers

   The algorithm identifier for RSASAA-PSS signatures is:

      id-RSASSA-PSS OBJECT IDENTIFIER ::= {pkcs-1 10 }

   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 MUST be used for computing the message
   digest on the signedAttributes and as the hashAlgorithm in the RSA-
   PSS-params structure.
Show full document text