Re: [COSE] Proposal for multiple keys / signatures in CBOR Certificates

Russ Housley <housley@vigilsec.com> Mon, 26 September 2022 16:34 UTC

Return-Path: <housley@vigilsec.com>
X-Original-To: cose@ietfa.amsl.com
Delivered-To: cose@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 646B2C14F73B for <cose@ietfa.amsl.com>; Mon, 26 Sep 2022 09:34:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.907
X-Spam-Level:
X-Spam-Status: No, score=-6.907 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id F3jTPq0vBo9X for <cose@ietfa.amsl.com>; Mon, 26 Sep 2022 09:34:55 -0700 (PDT)
Received: from mail3.g24.pair.com (mail3.g24.pair.com [66.39.134.11]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 50E79C14F732 for <cose@ietf.org>; Mon, 26 Sep 2022 09:34:55 -0700 (PDT)
Received: from mail3.g24.pair.com (localhost [127.0.0.1]) by mail3.g24.pair.com (Postfix) with ESMTP id EE67A148F76; Mon, 26 Sep 2022 12:34:53 -0400 (EDT)
Received: from a860b60074bd.fios-router.home (unknown [96.241.2.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail3.g24.pair.com (Postfix) with ESMTPSA id E101A14912D; Mon, 26 Sep 2022 12:34:53 -0400 (EDT)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.21\))
From: Russ Housley <housley@vigilsec.com>
X-Priority: 3 (Normal)
In-Reply-To: <cd7203f430896369ac39a6d435604447.squirrel@mail2.ihtfp.org>
Date: Mon, 26 Sep 2022 12:34:53 -0400
Cc: cose@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <1B05EE1E-398B-4D88-ADA4-89884813D784@vigilsec.com>
References: <cd7203f430896369ac39a6d435604447.squirrel@mail2.ihtfp.org>
To: Derek Atkins <derek@ihtfp.com>
X-Mailer: Apple Mail (2.3445.104.21)
X-Scanned-By: mailmunge 3.09 on 66.39.134.11
Archived-At: <https://mailarchive.ietf.org/arch/msg/cose/ckQx7V6nOAzB6CVTaW9hC4iS1QM>
Subject: Re: [COSE] Proposal for multiple keys / signatures in CBOR Certificates
X-BeenThere: cose@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: CBOR Object Signing and Encryption <cose.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cose>, <mailto:cose-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cose/>
List-Post: <mailto:cose@ietf.org>
List-Help: <mailto:cose-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cose>, <mailto:cose-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 26 Sep 2022 16:34:59 -0000

This topic is being discussed on the LAMPS mail list.  The C509 certificate has a one-to-one alignment with the X.509 certificate (see RFC 5280 for the syntax).  The answer here needs to keep that alignment, so I hope we can have the discussion on one mail list.

Russ


> On Sep 26, 2022, at 10:19 AM, Derek Atkins <derek@ihtfp.com> wrote:
> 
> Hi all,
> 
> We are happily using the (currently draft) CBOR Certificates object in our
> code, but we're getting closer to having a requirement where a device
> needs to support multiple PK Methods (think PQC).  To that end, we are
> looking at a way to extend CBOR Certificates to allow for multiple
> subjectPublicKey and multiple signature entries.
> 
> As a reminder, the current C509 structure is:
> 
>    C509Certificate = [
>       TBSCertificate,
>       issuerSignatureValue : any,
>    ]
> 
>    TBSCertificate = (
>       c509CertificateType: int,
>       certificateSerialNumber: CertificateSerialNumber,
>       issuer: Name,
>       validityNotBefore: Time,
>       validityNotAfter: Time,
>       subject: Name,
>       subjectPublicKeyAlgorithm: AlgorithmIdentifier,
>       subjectPublicKey: any,
>       extensions: Extensions,
>       issuerSignatureAlgorithm: AlgorithmIdentifier,
>    )
> 
> My straightforward proposal, which keeps some amount of backwards
> compatibility (in the sense that the TBSCertificate still has the same
> number of top-level entries), would be to modify this to allow either a
> singleton or an array for subjectPublicKeyAlgorithm, subjectPublicKey,
> issuerSignatureAlgorithm, and issuerSignatureValue.   At a higher level,
> the restriction that both subjectPublicKeyAlgoritihm and subjectPublicKey
> must contain the same number of items and in the same order, and both
> issuerSignatureAlgorithm and issuerSignatureValue must contain the same
> number of items and in the same order.
> 
> In CDDL this would boil down to:
> 
>    C509Certificate = [
>       TBSCertificate,
>       issuerSignatureValue : any / [ any, +any ],
>    ]
> 
>    TBSCertificate = (
>       c509CertificateType: int,
>       certificateSerialNumber: CertificateSerialNumber,
>       issuer: Name,
>       validityNotBefore: Time,
>       validityNotAfter: Time,
>       subject: Name,
>       subjectPublicKeyAlgorithm: AlgorithmIdentifier / [
> AlgorithmIdentier, +AlgorithmIdentifier ],
>       subjectPublicKey: any / [ any, +any ],
>       extensions: Extensions,
>       issuerSignatureAlgorithm: AlgorithmIdentifier / [
> AlgorithmIdentier, +AlgorithmIdentifier ],
>    )
> 
> I'm not a CDDL expert, so I do acknowledge that this specification does
> not restrict the validation requirements of equivalent array lengths.  But
> I'm not sure how one would actually encode that into CDDL.
> 
> The benefit of this approach is that all signatures cover all keys and all
> SignatureAlgorithm identifiers, so you cannot go back and add a new
> signature method (downgrade attack).
> 
> Another benefit of this approach is that it requires only minimal updates
> to existing parsers.  While it is true that a parser that expects a single
> entry would fail with the array with multiple Ids/Keys/Signatures, I don't
> see this as a bad thing because, most likely, the recipient would want to
> be able to validate both signatures.
> 
> The only alternate approach would be an extension, but I'm not sure how
> you could have multiple signatures using that approach.
> 
> Any comments/suggestions?
> 
> Oh... Having thrown this out there, I am offering to write it up if there
> is interest, either as a modification to the existing CBOR-Certs draft, or
> a companion draft.
> 
> Thanks,
> 
> -derek
> 
> -- 
>       Derek Atkins                 617-623-3745
>       derek@ihtfp.com             www.ihtfp.com
>       Computer and Internet Security Consultant
> 
> _______________________________________________
> COSE mailing list
> COSE@ietf.org
> https://www.ietf.org/mailman/listinfo/cose