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

Benjamin Kaduk <kaduk@mit.edu> Fri, 31 August 2018 00:06 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 77484130F59; Thu, 30 Aug 2018 17:06:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, 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 aKf4XUDRaX3e; Thu, 30 Aug 2018 17:06:27 -0700 (PDT)
Received: from dmz-mailsec-scanner-5.mit.edu (dmz-mailsec-scanner-5.mit.edu [18.7.68.34]) (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 E8B58130DBE; Thu, 30 Aug 2018 17:06:26 -0700 (PDT)
X-AuditID: 12074422-917ff70000003b75-ef-5b888680fc66
Received: from mailhub-auth-3.mit.edu ( [18.9.21.43]) (using TLS with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by dmz-mailsec-scanner-5.mit.edu (Symantec Messaging Gateway) with SMTP id 66.C4.15221.086888B5; Thu, 30 Aug 2018 20:06:25 -0400 (EDT)
Received: from outgoing.mit.edu (OUTGOING-AUTH-1.MIT.EDU [18.9.28.11]) by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id w7V06MQc030146; Thu, 30 Aug 2018 20:06:22 -0400
Received: from kduck.kaduk.org (24-107-191-124.dhcp.stls.mo.charter.com [24.107.191.124]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.8/8.12.4) with ESMTP id w7V06I8F027795 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 30 Aug 2018 20:06:20 -0400
Date: Thu, 30 Aug 2018 19:06:18 -0500
From: Benjamin Kaduk <kaduk@mit.edu>
To: Richard Barnes <rlb@ipv.sx>
Cc: The IESG <iesg@ietf.org>, draft-ietf-acme-acme@ietf.org, Yoav Nir <ynir.ietf@gmail.com>, "<acme-chairs@ietf.org>" <acme-chairs@ietf.org>, IETF ACME <acme@ietf.org>
Message-ID: <20180831000615.GF15624@kduck.kaduk.org>
References: <153556883241.14872.599302420878484743.idtracker@ietfa.amsl.com> <CAL02cgQoC1YAA1wjftoFSMBfm7Vi4KUXUQW633GZ5tM9VMMrmg@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CAL02cgQoC1YAA1wjftoFSMBfm7Vi4KUXUQW633GZ5tM9VMMrmg@mail.gmail.com>
User-Agent: Mutt/1.9.1 (2017-09-22)
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupnleLIzCtJLcpLzFFi42IR4hTV1m1s64g2WP+G02L/61lMFqueB1os 3M5mMePPRGaLqX22FkuPfWByYPPYOesuu8eSJT+ZPCZvnMUSwBzFZZOSmpNZllqkb5fAlfFy 7WeWgvVWFctOXWBuYFyj18XIySEhYCKx6MI/9i5GLg4hgcVMEge/fGSFcDYySnxomMUE4Vxl krj28g4TSAuLgKrE2sNbWEFsNgEViYbuy8wgtoiAvMTp6w/AupkFDjFKXJg6F6xIWCBOYsLs WywgNi/Qvo4Vy6CmTmaUOHfzMDNEQlDi5MwnYEXMAloSN/69BCriALKlJZb/4wAJcwoESnRv bmYDsUUFlCX29h1in8AoMAtJ9ywk3bMQuhcwMq9ilE3JrdLNTczMKU5N1i1OTszLSy3SNdXL zSzRS00p3cQICmt2F6UdjBP/eR1iFOBgVOLhZXjfHi3EmlhWXJl7iFGSg0lJlPe1Q0e0EF9S fkplRmJxRnxRaU5qMdCzHMxKIrycGUA53pTEyqrUonyYlDQHi5I4r9O51mghgfTEktTs1NSC 1CKYrAwHh5IEr3ArUKNgUWp6akVaZk4JQpqJgxNkOA/Q8CSQGt7igsTc4sx0iPwpRl2OP++n TmIWYsnLz0uVEufVACkSACnKKM2DmwNKRxLZ+2teMYoDvSXM2wpSxQNMZXCTXgEtYQJa0nWv BWRJSSJCSqqBUWX6CoGTr/++viCu+/bMBI6Dxh0lDAzxV+7eW5W2pe4ud+uBy8ssW78vrS+f Hb0zWXBJSkTyyq1bk5/sV1CsTJ0qtslR4Z/DtiL/joLgyJs3bu9rF7zB36MhxmOxIzrUyTtD 2cG0N303127R8lTFZaminYv4pm9+I80TkMY3R7Zl7kpjzrZ7SizFGYmGWsxFxYkAEkkWqiID AAA=
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/6YgnT-Ax7MCiy61yx0hrmyvEg9c>
Subject: Re: [Acme] Benjamin Kaduk's Discuss on draft-ietf-acme-acme-14: (with DISCUSS and COMMENT)
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.27
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, 31 Aug 2018 00:06:29 -0000

On Wed, Aug 29, 2018 at 09:10:06PM -0400, Richard Barnes wrote:
> Hi Ben,
> 
> Thanks for the detailed review.  Responses to the DISCUSS comments inline.
> My co-author Daniel McCarney is working on the COMMENT comments.
> 
> --Richard
> 
> On Wed, Aug 29, 2018 at 2:53 PM Benjamin Kaduk <kaduk@mit.edu> wrote:
> 
> >
> > It looks like the server returns an unauthenticated "badSignatureAlgorithm"
> > error when the client sends a JWS using an unsupported signature algorithm
> > (Section 6.2).  What prevents an active attacker from performing a
> > downgrade attack on the signature algorithm used?
> >
> 
> HTTPS, and the minimum requirements established in this document.  We can
> add some comments to the Security Considerations if you want.

It's probably worth some security considerations text.
(BTW, I was more picky than usual for this doc, since apparently TLS MitM
capabilities are explicitly in the threat model via the
"CDN-in-front-of-ACME-server" case.  So in some sense that is implying that
the web PKI is not quite good enough for that channel.)

> 
> 
> > Similarly, since we include in the threat model a potentially hostile
> > CDN/MitM between the ACME client and ACME server, can that attacker strip a
> > success response and replace it with a badNonce error, causing the client
> > to retry (and thus duplicate the request processing on the server)?
> >
> 
> In the spectrum of DoS attacks the CDN could wage against the server, this
> seems pretty lame.  The CDN could also just stop forwarding requests.
> 
> In other words, I don't really think the

(incomplete sentence)
But yes, I was thinking about this some more after I balloted and it did
end up seeming likely innocuous by comparison.  It's still good to have
people more familiar with the document than me think about the
possibilities, though -- it seems like most things the client would be
trying to do are relatively idempotent (that is, new challenge tokens and
such could be generated, but that's easy to recover from unless the CDN is
blocking lots of stuff, in which case nothing works anyway), but maybe I
missed something.

> 
> > I am not an ART AD, but there is not yet an internationalization
> > directorate, and seeing statements like "inputs for digest computations
> > MUST be encoded using the UTF-8 character set" (Section 5) without
> > additional discussion of normalization and/or what the canonical form for
> > the digest input is makes me nervous.  Has sufficient internationalization
> > review been performed to ensure that there are no latent issues in this
> > space?
> >
> 
> Two of the three ART ADs have already signed off, so we have that going for
> us :)
> 
> The only place we have human-readable text is in the problem documents, so
> at that level, the i18n considerations are handled by that spec.  Other
> than that, everything is ASCII, so saying "UTF-8" is just a fancy way of
> saying, "don't send extra zero bytes".

[this thread forked]

> 
> 
> > Section 6.1 has text discussing TLS 1.3's 0-RTT mode.  If this text is
> > intended to be a profile that defines/allows the use of TLS 1.3 0-RTT data
> > for the ACME protocol, I think you need to be more specific and say
> > something like "MAY allow clients to send early data (0-RTT); there are no
> > ACME-specific restrictions on which types of requests are permitted in
> > 0-RTT", since the runtime configuration is just 0-RTT yes/no, and the
> > protocol spec is in charge of saying which PDUs are allowed or not.
> >
> 
> The risk for HTTPS with 0-RTT is replay of requests.  The text already
> notes that that is not an issue for ACME requests because they have their
> own anti-replay protection.  There are no restrictions on which PDUs are
> allowed.   What further specificity do you need?

I would like it to be explicitly stated that there are no restrictions on
which PDUs are allowed.

If it helps, I'm trying to make a distinction between "you can negotiate
0-RTT in the TLS handshake" and "this is what you can put in early data";
in my mind, an application profile should explicitly cover the latter.

> 
> 
> > Section 6.2 notes that servers MUST NOT respond to GET requests for
> > sensitvie resources.  Why are account resources the only sensitive ones?
> > Are authorizations not sensitive?  Or are those considered to fall under
> > the umbrella of "account resources" (Section 7.1 seems pretty clear that
> > they do not)?
> >
> 
> That sentence has an overly prescriptive tone.  Obviously it's up to the
> CA's policy what it considers sensitive.  (Some especially profligate CA
> that's not subject to GDPR might be OK publishing its account objects.)
> Happy to dial it back to something like "For example, most CAs will likely
> consider account resources to be sensitive."

I think this is basically going to be subsumed/rendered OBE by Adam's
DISCUSS; please let me know if you think there is more to talk about here.

> 
> 
> > Section 7.1.1 discusses how the server can include a caaIdentities element
> > in its directory metadata; does this (or anything else) need to be
> > integrity protected by anything stronger than the Web PKI cert
> > authenticating the HTTPS connection?  It seems that a bogus caaIdentities
> > value could lead to an unfortunate DoS in some cases.
> >
> 
> I don't know what you would consider stronger than a WebPKI cert.  You
> could use a secondary key that isn't provided to the CDN and do JWS in the
> server-to-client direction.  But that would require clients to configure a
> public key as well as a URL, and you would have to figure out whether you
> wanted caching or anti-replay and build the corresponding addenda to JWS.
> All in all, a lot of complexity for marginal benefit, especially this late
> in the game.

Yeah, it's clearly a lot of complexity for marginal benefit (since the DoS
would likely be easy to notice and recover from) and late in the game.
Though the CA does already have a key that the client trusts...
Do you want to mention that the caaIdentities element gives a leaf cert
some control over the trust anchors that are used, in the security
considerations?  (This is a serious question; I am leaning towards it being
worth doing, but it would not be very hard to convince me otherwise.)

> 
> 
> > I am also a bit uncertain if the document is internally consistent about
> > whether one challenge verification suffices or there can be cases when
> > multiple challenge verifications are required for a successful
> > authorization.  I attmpted to note relevant snippets of the text in my
> > comments on Section 7.1.4.
> >
> 
> The document is clear that (1) any one challenge is sufficient for a given
> authorization ("the server should consider any one of the challenges
> sufficient to make the authorization valid") and (2) the server may provide
> multiple authorizations in the order object if it requires multiple
> different validations.

I think I'm still confused.  How could we end up with a case where a single
authorization object in the "valid" state includes more than one challenge?
(Looking at my notes, maybe this is just an editorial matter where a stray
's' slipped into one instance of "challenges", so we want "challenge that
was used" vs. "challenges that were used"?)

Thanks for the discussion!

-Benjamin