Update to the Cryptographic Message Syntax (CMS) for Algorithm Identifier Protection
RFC 8933

Document Type RFC - Proposed Standard (October 2020; No errata)
Updates RFC 5652
Author Russ Housley 
Last updated 2020-10-09
Replaces draft-housley-lamps-cms-update-alg-id-protect
Stream IETF
Formats plain text html xml pdf htmlized bibtex
Stream WG state Submitted to IESG for Publication
Document shepherd Tim Hollebeek
Shepherd write-up Show (last changed 2020-06-30)
IESG IESG state RFC 8933 (Proposed Standard)
Action Holders
Consensus Boilerplate Yes
Telechat date
Responsible AD Roman Danyliw
Send notices to Tim Hollebeek <tim.hollebeek@digicert.com>
IANA IANA review state IANA OK - No Actions Needed
IANA action state No IANA Actions

Internet Engineering Task Force (IETF)                        R. Housley
Request for Comments: 8933                                Vigil Security
Updates: 5652                                               October 2020
Category: Standards Track                                               
ISSN: 2070-1721

     Update to the Cryptographic Message Syntax (CMS) for Algorithm
                         Identifier Protection


   This document updates the Cryptographic Message Syntax (CMS)
   specified in RFC 5652 to ensure that algorithm identifiers in signed-
   data and authenticated-data content types are adequately protected.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at

Copyright Notice

   Copyright (c) 2020 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction
   2.  Terminology
   3.  Required Use of the Same Hash Algorithm
     3.1.  RFC 5652, Section 5.3
     3.2.  RFC 5652, Section 5.4
     3.3.  RFC 5652, Section 5.6
     3.4.  Backward Compatibility Considerations
     3.5.  Timestamp Compatibility Considerations
   4.  Recommended Inclusion of the CMSAlgorithmProtection Attribute
     4.1.  RFC 5652, Section 14
   5.  IANA Considerations
   6.  Security Considerations
   7.  References
     7.1.  Normative References
     7.2.  Informative References
   Author's Address

1.  Introduction

   This document updates the Cryptographic Message Syntax (CMS)
   [RFC5652] to ensure that algorithm identifiers in signed-data and
   authenticated-data content types are adequately protected.

   The CMS signed-data content type [RFC5652], unlike X.509 certificates
   [RFC5280], can be vulnerable to algorithm substitution attacks.  In
   an algorithm substitution attack, the attacker changes either the
   algorithm identifier or the parameters associated with the algorithm
   identifier to change the verification process used by the recipient.
   The X.509 certificate structure protects the algorithm identifier and
   the associated parameters by signing them.

   In an algorithm substitution attack, the attacker looks for a
   different algorithm that produces the same result as the algorithm
   used by the originator.  As an example, if the signer of a message
   used SHA-256 [SHS] as the digest algorithm to hash the message
   content, then the attacker looks for a weaker hash algorithm that
   produces a result that is of the same length.  The attacker's goal is
   to find a different message that results in the same hash value,
   which is called a cross-algorithm collision.  Today, there are many
   hash functions that produce 256-bit results.  One of them may be
   found to be weak in the future.

   Further, when a digest algorithm produces a larger result than is
   needed by a digital signature algorithm, the digest value is reduced
   to the size needed by the signature algorithm.  This can be done both
   by truncation and modulo operations, with the simplest being
   straightforward truncation.  In this situation, the attacker needs to
   find a collision with the reduced digest value.  As an example, if
   the message signer uses SHA-512 [SHS] as the digest algorithm and the
   Elliptic Curve Digital Signature Algorithm (ECDSA) with the P-256
   curve [DSS] as the signature algorithm, then the attacker needs to
   find a collision with the first half of the digest.

   Similar attacks can be mounted against parameterized algorithm
   identifiers.  When randomized hash functions are employed, such as
   the example in [RFC6210], the algorithm identifier parameter includes
   a random value that can be manipulated by an attacker looking for
   collisions.  Some other algorithm identifiers include complex
   parameter structures, and each value provides another opportunity for
   manipulation by an attacker.
Show full document text