Re: [Acme] AD Review: draft-ietf-acme-star-delegation-04

Yaron Sheffer <yaronf.ietf@gmail.com> Fri, 05 February 2021 22:44 UTC

Return-Path: <yaronf.ietf@gmail.com>
X-Original-To: acme@ietfa.amsl.com
Delivered-To: acme@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 466383A0CE9 for <acme@ietfa.amsl.com>; Fri, 5 Feb 2021 14:44:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.506
X-Spam-Level:
X-Spam-Status: No, score=-0.506 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, MALFORMED_FREEMAIL=1.591, MIME_QP_LONG_LINE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 8ufoln1qyiJv for <acme@ietfa.amsl.com>; Fri, 5 Feb 2021 14:44:57 -0800 (PST)
Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D058A3A0CE7 for <acme@ietf.org>; Fri, 5 Feb 2021 14:44:56 -0800 (PST)
Received: by mail-wr1-x430.google.com with SMTP id p15so9398714wrq.8 for <acme@ietf.org>; Fri, 05 Feb 2021 14:44:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=user-agent:date:subject:from:to:message-id:thread-topic:references :in-reply-to:mime-version:content-transfer-encoding; bh=0iBND7NUDaQ9KeUqwzmxcNcBJP0uCeSFS3ba2nqutqY=; b=LyDdmbZmUP++eOS6bssS5yT0i/121O7rh6sZpryn++TBssktJVZfcJAkO5jD1RTa4x FiEhTc1WMyMnGctvII1W6/UZdHLJOAW84IKP5h0TwcI07Ye1DTzcLAtrZ3OnTGjp89GT Vt/4PIMsK+iCHy+71d8t25H0LyfSmufOOyka7kL6YUjQK3x9XXXkshfQv8LBK6yahyVi YLheL9xT6BwrCSc2xeusHy9XTdbUEDPOPbYNN/DjNwVmuVut4qpovXfwP9HN3OMBir9N rxwMmmQi7ab8PHZQn2lORV+D/2V27eQz3FSnWdEFbrFc8pEbCrR+r7JcjPkr5JA3JoQf HiGw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:user-agent:date:subject:from:to:message-id :thread-topic:references:in-reply-to:mime-version :content-transfer-encoding; bh=0iBND7NUDaQ9KeUqwzmxcNcBJP0uCeSFS3ba2nqutqY=; b=rxqcz75miHqOIgZPt83OiaDs5XgBZ2Sou/HzGzP1thFwOjFMSfADI/KhNUVzyg+eED nsOunae/XTQYDES1Rh7pPcUMwp7oorPGU0HALKKxPLrMeZ8p003CRjrj+WQQ9FEnspq1 5k3YQal1iPmCcoOSAwa3XaFUY87Zgj24QDz+OYYlvhxgj596U6vad7Iu0ZER+oka7v+l YpKBdZz3dg/Z6EvibKig9BptVsuN2wgFUH2BfU+Rr8ptYFdA6X3CgoYPJwhNrzEMwAr1 ynVAWawPLutLnTwkU5C4ehn/gWPgU8v9GDaBCcm4NM7l+uA2IcBQTnp3R7HdaqvH7bc5 Fn0g==
X-Gm-Message-State: AOAM531n2q7BmfCGY52migWxxm1yIPneiw9RRLthyy8qWjSb5Lkphz/F L8/4lFon3r7LxS1aFLOp5wk=
X-Google-Smtp-Source: ABdhPJxvcrNovN2wnm1TcPGz/Wb9o//2bKla4gQ6djNkzIkcctHKswkD/viUEyzes2Hclj/+QwBh6w==
X-Received: by 2002:adf:e610:: with SMTP id p16mr7222776wrm.169.1612565094795; Fri, 05 Feb 2021 14:44:54 -0800 (PST)
Received: from [172.26.49.35] (pub-corp-42-8.intuit.com. [91.102.42.8]) by smtp.gmail.com with ESMTPSA id l1sm4972164wmi.48.2021.02.05.14.44.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Feb 2021 14:44:54 -0800 (PST)
User-Agent: Microsoft-MacOutlook/16.45.21011103
Date: Sat, 06 Feb 2021 00:44:52 +0200
From: Yaron Sheffer <yaronf.ietf@gmail.com>
To: Roman Danyliw <rdd@cert.org>, IETF ACME <acme@ietf.org>
Message-ID: <B85D7793-E228-4B95-B8DF-FD46F71F4F1C@intuit.com>
Thread-Topic: [Acme] AD Review: draft-ietf-acme-star-delegation-04
References: <5b94cd8f4c4944838936589cea70bd62@cert.org>
In-Reply-To: <5b94cd8f4c4944838936589cea70bd62@cert.org>
Mime-version: 1.0
Content-type: text/plain; charset="UTF-8"
Content-transfer-encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/yWJ8SBIz-oLKXUwmtfqHYlL24zs>
Subject: Re: [Acme] AD Review: draft-ietf-acme-star-delegation-04
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Automated Certificate Management Environment <acme.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/acme>, <mailto:acme-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/acme/>
List-Post: <mailto:acme@ietf.org>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/acme>, <mailto:acme-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 05 Feb 2021 22:44:59 -0000

Hi Roman,

Thank you for the detailed review. We will go through your comments and will rev the document accordingly, but in the meantime, let me respond specifically to the issue of the CSR template syntax.

The CSR template is potentially a long/complicated JSON document (example: [1]), and we felt that rather than including an informal definition which is easy to get wrong or a long sequence of examples, our audience would be better served by a formal definition.

To the best of my knowledge, by far the most common way to specify a JSON document format is with JSON Schema documents. Granted this spec is still a moving target, but it's already widely implemented. Also, there are discussions between the leaders of the JSON Schema effort and people on the HTTP-API working group, with the goal of standardizing it there.

JSON Schema draft-7 is defined by draft-handrews-json-schema-validation-01 (and a few companion document), and not (as we incorrectly noted) by the latest version of that draft. Clearly it's not ideal to refer to a specific, expired version of an I-D. The situation is mitigated to a certain degree by the schema document [2] mentioning explicitly the supported version: 

  "$schema": "http://json-schema.org/draft-07/schema#"

I hope this clarifies things. Regarding your two related comments:

- Yes, we should have specified the mapping of fields into X.509, and will do that when we address your comments.
- The notion of "snippet" is actually well defined when we say, "a JSON Schema snippet that defines a type". Formally this is a valid JSON object with a "type" attribute, per draft-handrews-json-schema-validation-01 Sec. 6.1.1.

Thanks,
	Yaron


[1] https://raw.githubusercontent.com/yaronf/I-D/master/STAR-Delegation/CSR-template/example-template.json
[2] https://raw.githubusercontent.com/yaronf/I-D/master/STAR-Delegation/CSR-template/template-schema.json


On 2/5/21, 00:50, "Roman Danyliw" <rdd@cert.org> wrote:

    Hi!

    I did an AD review of draft-ietf-acme-star-delegation-04.  Thanks for this work to apply the STAR profile (rfc8739).  Below are my comments.  There are a number of editorial clarifications proposed below.  The item that likely needs some discussion is the syntax of the CSR template.

    ** Idnit:
      ** Obsolete normative reference: RFC 6844 (Obsoleted by RFC 8659)

      == Outdated reference: A later version (-04) exists of
         draft-ietf-cdni-interfaces-https-delegation-03

      -- Unexpected draft version: The latest known version of 
         draft-ietf-stir-cert-delegation is -02, but you're referring to -03.

    ** Section 1.  Editorial.  Missing preposition.
    OLD
       This document describes a profile of the ACME protocol [RFC8555] that
       allows the NDC to request the IdO, acting as a profiled ACME server,
       a certificate for a delegated identity
    NEW
       This document describes a profile of the ACME protocol [RFC8555] that
       allows the NDC to request from the IdO, acting as a profiled ACME server,
       a certificate for a delegated identity

    ** Section 2.2.  Editorial.  Recommend symmetry in naming of the orders and being explicit on the order in question.
    -- second from last bullet.  s/reflected in the NDC order/reflected in Order 1 (i.e., the NDC Order)/
    -- last bullet.  s/moves its state to "valid"/moves the Order 1 state to "valid"/

    ** Section 2.2. Should the buffering requirement for the CSR be normative - s/The IdO must buffer/The IdO MUST buffer/

    ** Section 2.2.  Per "[No identify validation]", what is meant by that?

    ** Section 2.3.1.  Editorial.  s/The IdO can delegate multiple names through each NDC/The IdO can delegate multiple names to a NDC/

    ** Section 2.3.1.  Are there any constraints to what the delegation URLs could point to?

    ** Section 2.3.1.  Per "The value of this attribute is the URL pointing to the delegation configuration    object that is to be used for this certificate request", what is the error handling if the delegation attribute doesn't point to a URL found in the delegations URL list?  

    ** Section 2.3.2.  It might be worth pointing out the obvious when clarifying the properties of the Order objects such as:
    -- That the value field will be the delegated name

    -- The expected symmetry in field values between NDC-generated order object and the one made by the IdO

    ** Section 2.3.2.  Per "When the validation of the identifiers has been successfully completed ...", it would be useful to clarify who is doing the validation and when.  Figure 1 suggests that there is only a validation process between IdO client and CA server.  However, wouldn't the IdO server be checking the identifiers submitted by the NDC client too (prior to passing them to the CA server too?

    ** Section 2.3.2 and 2.3.3.  I didn't  understand the titles used to organize of content -- "Order Object on the NDC-IdO side" vs. "IdO-CA side".  They didn't follow the clear convention introduced by Figure 1 of NDC client, IdO client, IdO server and CA server.  Additionally, Section 2.3.2 discusses behavior which seems to be IdO client-to-CA Server (which doesn't seem like "NDC IdO side").  Additionally, Section 2.3.3. seems to be describing the requirements that correspond to construction of the order sent to the CA which is also covered at the end of Section 2.3.2.

    ** Section 2.4.  Per "The authors believe that this is a very minor security risk", it would be worth explicitly explaining that position (and not framed as the belief of the authors)

    ** Section 2.5.  This section introduces a new architectural element, ACME Delegation server, but doesn't define it.  Simply referencing the use cases in Section 4.1.2 isn't enough as this section doesn't even use those words ("Delegation server").

    ** Section 2.5.  Per "The "Location" header must be rewritten", it would be useful to describe the new target.

    ** Section 3.1.  There are some challenges with the template syntax.
    -- Where is the normative format for the syntax?  Section 3.1 points to Appendix B which lists JSON schema whose format is specified "draft 7 of JSON Schema, which may not be the latest version of the corresponding Internet Draft [I-D.handrews-json-schema] at the time of publication".  As far as I can tell "draft 7 of JSON Schema" seems to resolve to https://json-schema.org/specification-links.html which points back to draft-handrews-json-schema.  This draft appears to be an expired, individual draft codifying.  This ambiguity and lack of stable reference is problematic.

    -- Accepting the Json schema as is, there is no annotation on the fields.  The field names very much look like X.509 fields but the text provides no guidance on how they should be interpreted to create a CSR beyond explaining "**", "*" and what is mandatory.  I would have expected a field mapping but the text explicitly says "The mapping between X.509 CSR fields and the template will be defined in a future revision of this document.".  

    ** Section 3.1.
    The NDC MUST NOT include in the CSR any fields that are not specified
       in the template, and in particular MUST NOT add any extensions unless
       those were previously negotiated out of band with the IdO.

    These two normative clauses seem to conflict.  The first clause says that the CSR can only have fields listed in the template (and nothing else).  How would one include extensions not in the template based on out of band negotiation?  It seems like it is either in the template or not.

    ** Section 4.  Is this entire section normative protocol guidance? Or just informatively describing use cases?  If it is informative, please say so.  

    ** Section 4.1.* Please expand UA = User Agent and CP = Content Provider prior to their introduction in the figures

    ** Section 4.1.2.1.  Please expand SAN.

    ** Section 4.1.2.1.  There is a TBD text here, "TBD bootstrap, see https://github.com/yaronf/I-D/issues/47"

    ** Section 4.1.2.1  Step 2 of Figure 6.  Editorial.  Don't use colloquial language "CDNI things" - s/CDNI things/CDNU meta-data/

    ** Section 5.*.  Add "registry" to the name of the registry in question.  For example, in Section 5.1.: s/ACME Directory Metadata Fields/ACME Directory Metadata Registry/

    ** Section 5.4.  If there isn't a registry, why are they in the IANA section?  Should we create a registry?

    ** Section 5.5. Editorial.  To make the bulleted list explaining the fields symmetric with the registry columns:
    NEW:
    An extension name

    An extension type (the syntax, as a JSON Schema snippet)

    The mapping to an X.509 certificate extension.

    ** Section 5.5.  Per the definition of the "type" column:

    -- Formally, what is a JSON Schema snippet?  In particular, the three pre-loaded values reference seem to reference "Appendix B" which doesn't seem like a "snippet" (it containing a fully valid and well-formed XML file).

    -- The registration policy is "expert review" so in theory a document is not needed.  Is the thinking that the registry row could contain a bare JSON snippet?

    ** Section 5.5.  What does "(only for the supported name formats)" mean in the "Mapping to X.509" of subjectAltName

    ** Section 6.2. Editorial. s/cert/certificate/

    ** Section 6.2.  Per the enumeration of the "two separate parts" of the delegation process, isn't there also:
    -- serving the certificate back to the NDC 
    -- a process for handling revocation of the delegation and the certificate itself

    Both of these seem to be discussed in Section 6.3 in some form.

    ** Figure 1 and 8.  In the spirit of consistency, consider if the CA should be named the "CA Server" (per figure 1) or "ACME server" (per figure 8).

    ** Section 6.4.  s/Following is the proposed solution where/The following is a possible mitigation when/

    Regards,
    Roman