Re: [Acme] Barry Leiba's Discuss on draft-ietf-acme-caa-07: (with DISCUSS and COMMENT)

Hugo Landau <hlandau@devever.net> Thu, 30 May 2019 17:42 UTC

Return-Path: <hlandau@devever.net>
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 F4062120162; Thu, 30 May 2019 10:42:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, TVD_PH_BODY_ACCOUNTS_PRE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=devever.net
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 n1ntOImqU2NA; Thu, 30 May 2019 10:42:47 -0700 (PDT)
Received: from umbriel.devever.net (umbriel.devever.net [149.202.51.241]) (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 DB0D912018E; Thu, 30 May 2019 10:42:34 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by umbriel.devever.net (Postfix) with ESMTP id 4D48F1C055; Thu, 30 May 2019 19:42:31 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=devever.net; h= user-agent:in-reply-to:content-transfer-encoding :content-disposition:content-type:content-type:mime-version :references:message-id:subject:subject:from:from:date:date :received:received; s=mimas; t=1559238151; x=1577427512; bh=e0cw l7uhYxNG2gfmXV/SVvCSdufsIElIIP2O6V/eJzs=; b=hnqSKW+Px+iyqOLr374b RgfxecMyNo1xXMMa4FwJOgzTkJtnU/ALoso/JaJ8689KYbGUfhDWgSwRJcJJg3sh vJIjpGYeyF4btlqnBuGip3BfjYfrqOBMEGrsPVHWDSCJ9XJwdlYcfTRPXGBwcNll fYMC/TmsTIRE/thYU4Fjm0rdwmoojBYMJCsWiK5JwFRUisAhODR3JzBTvbrIuiMZ 84S5oVxCUuB0i0LqloCQtKIP9tnM7ZAK2zs4Z7+EfaQvwwViQ5E4IfTy5XIEC3hg io0+nyH/YhovPWJEGj3X4It8PHvR/VXzg9OLQyFqkZpKYWxdeyQR0ab6d8fSgPZx mw==
Received: from umbriel.devever.net ([127.0.0.1]) by localhost (umbriel.devever.net [127.0.0.1]) (amavisd-new, port 10026) with LMTP id BdS3N0zRMpPe; Thu, 30 May 2019 19:42:31 +0200 (CEST)
Received: from axminster (localhost [127.0.0.1]) by umbriel.devever.net (Postfix) with ESMTP id E56251C04E; Thu, 30 May 2019 19:42:30 +0200 (CEST)
Date: Thu, 30 May 2019 18:42:30 +0100
From: Hugo Landau <hlandau@devever.net>
To: Barry Leiba <barryleiba@computer.org>
Cc: The IESG <iesg@ietf.org>, draft-ietf-acme-caa@ietf.org, Daniel McCarney <cpu@letsencrypt.org>, acme-chairs@ietf.org, acme@ietf.org
Message-ID: <20190530174230.GA12694@axminster>
References: <155888292737.18381.13153334659362661935.idtracker@ietfa.amsl.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <155888292737.18381.13153334659362661935.idtracker@ietfa.amsl.com>
User-Agent: Mutt/1.11.3 (2019-02-01)
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/Y_-Xw5HiZmBx7N3IWDdH2NBwMHk>
Subject: Re: [Acme] Barry Leiba's Discuss on draft-ietf-acme-caa-07: (with DISCUSS and COMMENT)
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: Thu, 30 May 2019 17:42:51 -0000

> ----------------------------------------------------------------------
> DISCUSS:
> ----------------------------------------------------------------------
> 
> — Section 4 —
> 
>    If appropriate non-ACME identifiers are not present in the
>    ACME Validation Methods IANA registry, the CA MUST use identifiers
>    beginning with the string "ca-", which are defined to have CA-
>    specific meaning.
> 
> Was the working group aware of BCP 178 (RFC 6648), and did they consider the
> “ca-“ prefix in that context?  If so, how does the working group propose to
> avoid the problems outlined by BCP 178?
Yes.

All of these identifiers are already scoped to a specific CA via a
domain name, due to the nature of the CAA specification. The CAA
specification also provides that parameters in general are a CA-specific
namespace.

The core complaint of RFC 6648 is that nonstandard values tend to
graduate to being standard values, and at that point need to be renamed.

Because "ca-" methods are CA-specific and unrelated to ACME, it is
essentially necessary that they be configured in relation to, and in
knowledge of, a specific CA and its issuance and validation practices.
In this regard it is not the same concept as an X- prefix, which defines
nonstandard parameters in the vague hope that such parameters will be
adopted by numerous implementations and entities across the net. This is
a permanent reservation for CA-specific meaning and there is no
expectation that one CA's "ca-foo" method is the same as another CA's
"ca-foo" method.

This reservation is necessary because a CA may engage in both ACME and
non-ACME issuance, so there is an unavoidable need to be able to
communicate about both. However, there are likely to be as many non-ACME
validation methods as there are CAs (more, actually), and seeking to
register all of these in the ACME Validation Methods registry would be
both impractical and out of scope for the ACME WG.

> 
> — Section 5.4 —
> 
>    CAs MUST satisfy this requirement by using URIs which include an
>    authority:
>    "https://a.example.com/account/1234"
> 
> First (this is not the DISCUSS part), readers who are not extremely familiar
> with how URIs are constructed — and given that “authority” is a normal English
> word with a meaning outside the URI world — might not really understand what
> you mean here.  A reference will help, and I suggest it” “…include an authority
> (see Section 3.2 of [RFC3986])”.
Done.

> 
> Second (this is the DISCUSS part), does this mean that all CAs MUST use URIs
> that include an authority?  Or does it only apply to those with the sort of
> situation you describe in this section?  If the latter, it seems odd that
> you’re prescribing, at MUST level, a particular solution, where there are
> certainly others (such as ensuring that the account numbers are unique in the
> first place).

  Thus, CAs MUST ensure that the URIs they recognise as pertaining to a specific
  account of that CA are unique within the scope of all domain names which they
  recognise as identifying that CA for the purpose of CAA record validation.

  CAs MUST satisfy this requirement by using URIs which include an authority (see
  Section 3.2 of {{RFC3986}}):

I agree that the second MUST should be changed to SHOULD here.

> 
> — Section 6 —
> I have no idea what you’re trying to say here.  This is a Proposed Standard,
> right?  It defines two new parameters.  Are you now trying to say that we have
> not really defined anything?  I don’t understand.
The CAA specification allows parameters to be attached to CAA
properties, but this is a CA-specific namespace. Per CAA, there is no
IANA registry for CAA parameters, and a CA is not required to give the
meaning given in this I-D to "accounturi" or "validationmethods"
parameters, unless it chooses to implement this RFC. See "Restrictions
Ineffective without CA Recognition".

> 
> 
> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
> 
> (General: I hope the RFC Editor will be changing most “which” in this document
> to “that”, according to the Chicago Manual of Style, but I’ll let the RFC
> Editor address those.)
> 
> (Also general: For a very short document, this was quite a difficult read. 
> There are quite a few very long, heavy, hard-to-parse sentences, with lots of
> things run together.  While the sentences are grammatically correct, they’re
> harder on the reader than they ought to be.  Picking one of many as an example:
> 
>    Because CAA records are located during validation by walking up the
>    DNS hierarchy until one or more records are found, the use of the
>    "accounturi" and "validationmethods" parameters, or any CAA policy,
>    is not an effective way to restrict or control issuance for
>    subdomains of a domain, where control over those subdomains is
>    delegated to another party (such as via DNS delegation or by
>    providing limited access to manage subdomain DNS records).
> 
> That’s one sentence.  The document in general would benefit from breaking up
> those sorts of sentences to make it easier to get the sense of what it’s trying
> to say.  For example, the above might go something like this:
> 
>    CAA records are located during validation by walking up the
>    DNS hierarchy until one or more records are found. Sometimes,
>    control over subdomains of a domain is delegated to another
>    party — via DNS delegation, or by providing limited access to
>    manage subdomain DNS records.  In those cases CAA policy,
>    including the use of the "accounturi" and "validationmethods"
>    parameters, is not an effective way to restrict or control
>    issuance for subdomains.
> )

Changed to

  CAA records are located during validation by walking up the DNS
  hierarchy until one or more records are found. CAA records are
  therefore not an effective way of restricting or controlling issuance
  for subdomains of a domain, where control over those subdomains is
  delegated to another party (such as via DNS delegation or by providing
  limited access to manage subdomain DNS records).


> — Section 3 —
> 
>    "CA account" means an object maintained by a specific CA representing
>    a specific entity, or group of related entities, which may request
>    the issuance of certificates.
> 
> I’m not clear on what the “which” clause goes with:
> 
> 1. Do you mean that the “specific CA” may request the issuance?
> 2. Do you mean that the entity or group of entities may request it?
> 3. Do you mean that the object may be used to request the issuance?
> 
> Some of this confusion might come from the that/which issue, but I think it’s
> really the structure of the sentence.  I suggest that you re-word the sentence
> to make it clearer.  Maybe (assuming (2) above is correct):
> 
> NEW
>    A “CA account” is an object maintained by a specific CA, representing
>    a specific entity or group of entities.  Those entities may request the
>    issuance of certificates from that CA.
> END
The third meaning was intended. Changed to:

  "CA account" means an object, maintained by a specific CA and which may request
  the issuance of certificates, which represents a specific entity or group of
  related entities.

> 
>    A property with multiple "accounturi" parameters is
>    unsatisfiable.
> 
> OK, but why not say, then, that there MUST NOT be multiple “accounturi”
> parameters in a given property?
This specifies how properties are to be processed, not generated. Even
if a normative prohibition were to be added here, this sentence would
remain necessary.

> 
> — Section 3.2 —
> 
>    The use of specific kinds of URI may be specified in future RFCs, and
>    CAs not implementing ACME MAY assign and recognise their own URIs
>    arbitrarily.
> 
> Isn’t this true of CAs that do implement ACME also?  The “MAY” in Section 3.1
> implies that, surely.
The MAY in section 3.1 confers an option for identifying an ACME account
object.

The MAY in section 3.2 confers an option for identifying entities which
may or may not be ACME account objects.

> -- Section 5.3 —
> 
>    A CA which is unable to ensure consistent processing of the
>    "accounturi" or "validationmethods" parameters for a given CA domain
>    name as specifiable in CAA "issue" or "issuewild" properties MUST NOT
>    implement support for these parameters.  Failure to do so will result
>    in an implementation of these parameters which does not provide
>    effective security.
> 
> “Failure to do so” seems odd after “MUST NOT”.  It also makes it sound as
> though failure to comply with a MUST NOT is an option.  I suggest, “Otherwise,
> the CA would have an implementation…”
s/will/would/

> — Section 5.8 —
> 
>    Because they express a restrictive security policy, misconfiguration
>    of the "accounturi" or "validationmethods" parameters may result in
>    legitimate issuance requests being refused.
> 
> As written, “they” goes with “misconfiguration”, which is clearly not what you
> meant (I think you mean it to refer to “the … parameters”).
> 
> NEW
>    Because the "accounturi" or "validationmethods" parameters express
>    a restrictive security policy, misconfiguration of them may result
>    in legitimate issuance requests being refused.
> END

Changed to:
  Because the "accounturi" and "validationmethods" parameters express restrictive
  security policies, misconfiguration of said parameters may result in legitimate
  issuance requests being refused.