Re: [Acme] Benjamin Kaduk's Discuss on draft-ietf-acme-star-09: (with DISCUSS and COMMENT)

Benjamin Kaduk <kaduk@mit.edu> Sat, 05 October 2019 00:07 UTC

Return-Path: <kaduk@mit.edu>
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 1870612006B; Fri, 4 Oct 2019 17:07:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-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 7aUIHzVMOsAk; Fri, 4 Oct 2019 17:07:29 -0700 (PDT)
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 78F81120052; Fri, 4 Oct 2019 17:07:29 -0700 (PDT)
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 x9507IUi001734 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 4 Oct 2019 20:07:20 -0400
Date: Fri, 04 Oct 2019 17:07:17 -0700
From: Benjamin Kaduk <kaduk@mit.edu>
To: Thomas Fossati <Thomas.Fossati@arm.com>
Cc: The IESG <iesg@ietf.org>, "draft-ietf-acme-star@ietf.org" <draft-ietf-acme-star@ietf.org>, Rich Salz <rsalz@akamai.com>, "acme-chairs@ietf.org" <acme-chairs@ietf.org>, "acme@ietf.org" <acme@ietf.org>
Message-ID: <20191005000717.GR6722@kduck.mit.edu>
References: <157003958107.8961.10411719007130526381.idtracker@ietfa.amsl.com> <AB791FFF-011A-4A6E-B136-23C6204288B6@arm.com> <20191003141911.GS6424@kduck.mit.edu> <C117C671-827A-44CC-B438-9624E61A768C@arm.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <C117C671-827A-44CC-B438-9624E61A768C@arm.com>
User-Agent: Mutt/1.12.1 (2019-06-15)
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/eGupH6hZRaKnHJSgbJMX1WbEszo>
Subject: Re: [Acme] Benjamin Kaduk's Discuss on draft-ietf-acme-star-09: (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: Sat, 05 Oct 2019 00:07:32 -0000

On Thu, Oct 03, 2019 at 05:33:49PM +0000, Thomas Fossati wrote:
> Hi Ben,
> 
> Upon further review, I agree with your assessment on the first part of
> your DISCUSS, which is a relief.
> 
> I'm addressing your COMMENTs [1] and the second part of your DISCUSS
> [2] that are for the most part straightforward.  I have a few things
> I'd like to discuss further though.  See below.
> 
> > There's a scope-mismatch between the "allow-certificate-get" at the
> > top-level of the directory metadata and "allows GET requests *to
> > star-certificate URLs*".  If it only applies to star-certificate URLs,
> > than anything else in the future that wants to use GET for
> > certificates will need to also define directory metadata, but you're
> > squatting on the good name for the STAR-specific bits.
> 
> We don't want to design a generic feature here, it makes sense to scope
> narrowly.  If "allow GET" proves to be important to other use cases in
> the future we'll have left a clean namespace.

I'm trying to think about the risk that a future use case for
"allow-certificate-get" might want slightly different semantics for when
it's used, or need the certificate to be at a different URL, or similar.
Right now the GET option only applies to the star-certificate resource and
trying to retroactively expand its scope could be messy.

> > These formulas seem to require the server to respect a client's
> > lifetime-adjust (provided it is between 0.5*T and T), even when the
> > server's preference would be to use a smaller value (though still at
> > least 0.5*T).  That's unusual, in that we usually give the server leeway
> > to apply policy and reject or modify requests from the client before
> > fulfilling them.  Is that exception intended here?
> 
> Yes, there's a balance.  The intention is to allow clients that know
> their clock-skewed population some control.

Okay.

> > I'm not entirely sure I see the connection between dependability and
> > caching at the HTTP layer -- in the simple model where there's a single
> > endpoint that needs to fetch the certificate, the certificate is only
> > served once and caching does not help.  Is the idea that the cache will
> > proactively populate itself, or that there will be many endpoints
> > fetching the same certificate (as in a CDN)?
> 
> Yes, one of the motivating use cases of this work was support of
> delegation from content providers (name owners) to CDNs, where multiple
> edge caches might need to fetch the same STAR cert.

It might be worth mentioning that in the treatment of caching.

> >    When using unauthenticated GET to fetch the STAR certificate, the
> >    server SHALL use the appropriate cache directives to set the
> >    freshness lifetime of the response (Section 5.2 of [RFC7234]) such
> >    that on-path caches will consider it stale before or at the time its
> >    effective lifetime is due to expire.
> >
> > Is it better to have the HTTP cache expire when the certificate does, or
> > when we expect the next certificate to be available?
> 
> This is entirely a server choice.  The MUST here is really a baseline
> which captures the only fundamental requirement that a stale cert stored
> in an on-path cache does not prevent fetching a fresh one.  The server
> will most likely work out its own, more refined, caching strategies.

Sounds good; thanks for the extra explanation.

> > I think we should have some discussion of the (cryptographic) role
> > played by the CSR in a traditional certificate issuance process (e.g.,
> > proving possession of the private key corresponding to the certified
> > public key) and the value of periodically running that process, and how
> > that relates to the STAR workflow.  Specifically, that the validity
> > period of the STAR order (i.e., difference between end-date and
> > start-date) should roughly align with the lifetime of a
> > traditional-model certificate issuance, in order to retain similar
> > properties.
> 
> Not sure I follow the line of reasoning.  CSRs are one-off
> proofs-of-possession and certificates are issued from CSRs with varying
> validities.  I think what you are saying instead is that (end-date -
> start-date) of STAR certificates should be comparable to (notAfter -
> notBefore) of "traditional" certs?

That's what I was trying to say, yes.

> >    adversary who has control of the private key.  With STAR
> >    certificates, expiration replaces revocation so there is a timeliness
> >    issue.  To that end, see also the discussion on clock skew in
> >    Section 4.1.
> >
> > I don't think I understand the intent of saying there is "a timeliness
> > issue" (but maybe it's just me).
> 
> "timeliness issue" in the sense that with STAR you need to sit and wait
> the cert to expire.  I'm not sure it's the right English word...

"potential for lack of timeliness in the revocation taking effect" is
perhaps a way to word it (I did not wordsmith very much).

> >    auto-renewal "lifetime".  Alternatively, the CA can set an internal
> >    certificate generation processes rate limit.
> >
> > Wouldn't this run the risk of failing to meet the CA's guarantees on
> > producing renewed certificates?
> 
> Not if it refuses to accept new requests at the ACME interface.

I'd consider noting that this limit has to take account of
already-scheduled renewal issuances as well as new incoming requests.
Maybe it's sufficiently obvious that it goes without saying, though; I
don't think I have the same context that most readers will have.

-Ben

> Cheers, thanks.
> 
> [1] https://github.com/yaronf/I-D/commit/839eaefb6bce7e192985ddc31412a95c163ef332
> [2] https://github.com/yaronf/I-D/commit/e7f1caa016d71bd9bf758f532e7015f45f316f52
> 
> 
> IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.