Re: [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs. EncapsulatedContentInfo based on version
mrex@sap.com (Martin Rex) Fri, 03 November 2017 21:43 UTC
Return-Path: <mrex@sap.com>
X-Original-To: smime@ietfa.amsl.com
Delivered-To: smime@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9D37513FFE4 for <smime@ietfa.amsl.com>; Fri, 3 Nov 2017 14:43:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.92
X-Spam-Level:
X-Spam-Status: No, score=-6.92 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 85vD5yZHW50U for <smime@ietfa.amsl.com>; Fri, 3 Nov 2017 14:43:29 -0700 (PDT)
Received: from smtpde01.smtp.sap-ag.de (smtpde01.smtp.sap-ag.de [155.56.68.170]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5C5A213FFE2 for <smime@ietf.org>; Fri, 3 Nov 2017 14:43:29 -0700 (PDT)
Received: from mail07.wdf.sap.corp (mail04.sap.corp [194.39.131.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtpde01.smtp.sap-ag.de (Postfix) with ESMTPS id 3yTFnW3NM9z1JWM; Fri, 3 Nov 2017 22:43:27 +0100 (CET)
X-purgate-ID: 152705::1509745407-000040CA-1C2519EC/0/0
X-purgate-size: 3643
X-purgate: clean
X-purgate: This mail is considered clean (visit http://www.eleven.de for further information)
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate-type: clean
X-SAP-SPAM-Status: clean
Received: from ld9781.wdf.sap.corp (ld9781.wdf.sap.corp [10.21.82.193]) by mail07.wdf.sap.corp (Postfix) with ESMTP id 3yTFnW1f8lzGnyb; Fri, 3 Nov 2017 22:43:27 +0100 (CET)
Received: by ld9781.wdf.sap.corp (Postfix, from userid 10159) id 2D092404B; Fri, 3 Nov 2017 22:43:27 +0100 (CET)
In-Reply-To: <001101d354d1$1cfdced0$56f96c70$@augustcellars.com>
References: <20171103160451.AD0DB404B@ld9781.wdf.sap.corp> <001101d354d1$1cfdced0$56f96c70$@augustcellars.com>
To: Jim Schaad <ietf@augustcellars.com>
Date: Fri, 03 Nov 2017 22:43:27 +0100
CC: mrex@sap.com, smime@ietf.org
Reply-To: mrex@sap.com
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="US-ASCII"
Message-Id: <20171103214327.2D092404B@ld9781.wdf.sap.corp>
From: mrex@sap.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/smime/wNMWRpSrYlMZ3XWcukVlEzd_QZw>
Subject: Re: [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs. EncapsulatedContentInfo based on version
X-BeenThere: smime@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: SMIME Working Group <smime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/smime>, <mailto:smime-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/smime/>
List-Post: <mailto:smime@ietf.org>
List-Help: <mailto:smime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/smime>, <mailto:smime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 03 Nov 2017 21:43:32 -0000
Hi Jim, Thanks for the reply, but this leaves me even more confused now. Admittedly my personal implementors experience is tiny. I once patched support for processing rfc3161 TimeStamps into an existing PKCS#7 v1.5 implementation, and I needed a few tweaks for the ASN.1 encoder & decoder -- but rfc3161 uses id-ct-TSTInfo content type and version 3 rather than id-data and version 1, so I needed tweaks for processing of EncapsulatedContentInfo. Jim Schaad <ietf@augustcellars.com> wrote: > > To begin with, this is only a problem if you are looking at wrapping > contents other than id-data, for id-data there is no difference. In both > cases there is an OCTET wrapper. This statement looks like a self-contradiction. Either there is _no_ difference between PKCS#7 v1.5 SignedData for id-data, then there is no wrapper. Or there is a difference, and EncapsulatedContentInfo is used. > > For things which are not id-data, there is going to be a difference between > the two encodings in that for one an octet wrapper is there and for the > other case it is not. I would say that you need to look at the content type > and the type of the field and then make a decision about what you are doing. Do you mean that while the PDU encoding for SignedData with id-data ContentInfo is the same for PKCS#7 v1.5 and CMS, the actual signature (or more precisely the hash over that id-data) is computed _differently_ for PKCS#7 v1.5 and CMS (covering the 0x04 plus ASN.1 length field for CMS, and omitting this for PKCS#7 v1.5) ? I wouldn't like a heuristic on decoding because it results in needlessly complex code and seems to have an ambituity for certain id-data that conicidentally matches the beginning of an ASN.1 DER OctetString. But requiring a heuristic on SignedData would be magnitudes worse, because of significantly higher CPU cycles impact for computing and verifying two different hashes. > I will note that there is a security problem with the PKCS#7 encoding where > the content and length bytes are not correctly protected. This is one of > the reasons that CMS added the OCTET wrapper in all cases rather than just > in the case of id-data. But "in all cases rather than just in the case of id-data" is a contradiction to the above (with respect to the encoding). Or is this comment _not_ about the encoding, but rather about the data which gets signed (hashed) ? > > There was never any intent that a version number of one would indicate that > this was PKCS#7 rather than CMS. That sounds wrong to me. At least my copy of PKCS#7 v1.5 (rfc2315) is _explicit_ that this version indicates PDU/protocol, and version==1 therefore implies PKCS#7 (rfc2315) syntax/encoding **AND** processing rules (semantics). https://tools.ietf.org/html/rfc2315#section-9.1 The fields of type SignedData have the following meanings: o version is the syntax version number. It shall be 1 for this version of the document. The PKCS#7 v1.5 PDU was *ALWAYS* supposed to be self-describing, and later revisions of it to identify different syntax as well as different processing rules by using a different version in the PDU. For the particular (governmentally mandated) data exchange scenario in Germany, they're currently using PKCS#7 v1.5 with RSA PKCS#1 v1.5, and they want to transition to using RSA-PSS (signatures on certs and PKCS#7/CMS SignedData) and RSA-OAEP (EvelopedData), with EndEntity certs that carry rsaEncryption keys (so that the keys can be used for both, signature and encryption). -Martin
- [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs. Enc… Martin Rex
- Re: [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs.… Russ Housley
- Re: [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs.… Martin Rex
- Re: [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs.… Jim Schaad
- Re: [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs.… Russ Housley
- Re: [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs.… Martin Rex
- Re: [smime] PKCS#7 v1.5 vs. CMS / ContentInfo vs.… Jim Schaad