Re: [pkix] [Technical Errata Reported] RFC5280 (6414)

Benjamin Kaduk <kaduk@mit.edu> Thu, 28 January 2021 16:13 UTC

Return-Path: <kaduk@mit.edu>
X-Original-To: pkix@ietfa.amsl.com
Delivered-To: pkix@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E655F3A15FC for <pkix@ietfa.amsl.com>; Thu, 28 Jan 2021 08:13:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.919
X-Spam-Level:
X-Spam-Status: No, score=-1.919 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, 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 g2yc2ZuSpKnN for <pkix@ietfa.amsl.com>; Thu, 28 Jan 2021 08:13:31 -0800 (PST)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0F0B13A15FA for <pkix@ietf.org>; Thu, 28 Jan 2021 08:13:30 -0800 (PST)
Received: from kduck.mit.edu ([24.16.140.251]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id 10SGDJIW021018 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 Jan 2021 11:13:23 -0500
Date: Thu, 28 Jan 2021 08:13:18 -0800
From: Benjamin Kaduk <kaduk@mit.edu>
To: RFC Errata System <rfc-editor@rfc-editor.org>
Cc: david.cooper@nist.gov, sharon.boeyen@entrust.com, rdd@cert.org, pkix@ietf.org
Message-ID: <20210128161318.GV21@kduck.mit.edu>
References: <20210128154420.4B40EF40715@rfc-editor.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20210128154420.4B40EF40715@rfc-editor.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/pkix/6xCF6X38Hn3Kp363UHSf8VRVKFE>
Subject: Re: [pkix] [Technical Errata Reported] RFC5280 (6414)
X-BeenThere: pkix@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: PKIX Working Group <pkix.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/pkix>, <mailto:pkix-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/pkix/>
List-Post: <mailto:pkix@ietf.org>
List-Help: <mailto:pkix-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/pkix>, <mailto:pkix-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 28 Jan 2021 16:13:33 -0000

On Thu, Jan 28, 2021 at 07:44:20AM -0800, RFC Errata System wrote:
> The following errata report has been submitted for RFC5280,
> "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile".
> 
> --------------------------------------
> You may review the report below and at:
> https://www.rfc-editor.org/errata/eid6414
> 
> --------------------------------------
> Type: Technical
> Reported by: Rob Stradling <rob@sectigo.com>
> 
> Section: 4.2.1.12
> 
> Original Text
> -------------
>    id-kp-serverAuth             OBJECT IDENTIFIER ::= { id-kp 1 }
>    -- TLS WWW server authentication
>    -- Key usage bits that may be consistent: digitalSignature,
>    -- keyEncipherment or keyAgreement
> 
> Corrected Text
> --------------
>    id-kp-serverAuth             OBJECT IDENTIFIER ::= { id-kp 1 }
>    -- TLS WWW server authentication
>    -- Key usage bits that may be consistent: digitalSignature
>    -- and/or (keyEncipherment or keyAgreement)
> 
> Notes
> -----
> In https://github.com/zmap/zlint/issues/553 there's been some disagreement and confusion about how to correctly interpret the "or" in the Original Text.  "You can only set one of these three bits" is one interpretation, and it's hard to argue that this interpretation is inconsistent with the Original Text.
> 
> However, digitalSignature+keyEncipherment makes sense for an RSA leaf certificate, and digitalSignature+keyAgreement makes sense for an ECC leaf certificate.  Both are widely used, to enable ephemeral and non-ephemeral TLS ciphersuites in conjunction with a single server certificate.
> 
> Given that RFC5480 section 3 explicitly permits digitalSignature+keyAgreement in an ECC leaf certificate, I think it's likely that my proposed Corrected Text conveys the RFC5280 authors' intended meaning.

I would be inclined to mark this as "editorial" and "hold for document
update".  Given that across the list of EKU values both "or" and "and/or"
are used, it seems like there was probably some intent to distinguish
between them, but I don't see that we will get clear agreement on what wa
intended at the time of publication.

That said, having looked at the referenced github issue, I'm pretty
surprised that there has been so much discussion.  My understanding is that
keyUsage and extendedKeyUsage both can act to restrict the usability of the
certificate, but they do so independently, and either can be absent (in
which case the absent extension does not restrict anything).  So, if you
have an EKU with id-kp-serverAuth and you have a keyUsage with none of the
listed three bits set, you're not supposed to actually be able to use that
cert for TLS WWW server authentication, since you'd need to use the key for
at least one of digital signature, key encipherment, or key agreement, but
the particular keyUsage forbids all of those.  AFAICT that's the core point
that this section is making, in terms of "consistency" between the
otherwise independent extensions -- if you want to be able to use the given
EKU at all, you either need to not have keyUsage or you're going to need
*something* from the given list.  But how you pick that "something" and
what it is just operates on the normal rules for keyUsage, and there are
very few rules that restrict which collections of keyUsage bits can be set
at the same time.  So I'm not sure how one would argue that there is a lot
of exclusive-or going on amongst the listed bits just based on the spec
requirements.  (The realities of what a given key type can do with a given
crypto algorithm is another matter, but I'm not convinced it's terribly
relevant for the purposes of interpreting this text.)

-Ben