Re: [Acme] acme subdomains open items

Ryan Sleevi <ryan-ietf@sleevi.com> Mon, 07 December 2020 04:22 UTC

Return-Path: <ryan.sleevi@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 CF1963A0F3A for <acme@ietfa.amsl.com>; Sun, 6 Dec 2020 20:22:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.159
X-Spam-Level:
X-Spam-Status: No, score=-1.159 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, HTML_OBFUSCATE_05_10=0.26, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no 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 GgNEjixtzWZg for <acme@ietfa.amsl.com>; Sun, 6 Dec 2020 20:22:01 -0800 (PST)
Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) (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 D2DD53A0F39 for <acme@ietf.org>; Sun, 6 Dec 2020 20:22:01 -0800 (PST)
Received: by mail-pj1-f47.google.com with SMTP id m5so6700230pjv.5 for <acme@ietf.org>; Sun, 06 Dec 2020 20:22:01 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=EJNN2gEldS9uCeBQINKPj2EDoGKpXjoW3QyjIhPGcNk=; b=Bdh4WnILrXVf+wpzqVRSAYfLd6/nUxHEqhlYe+SBOcKuNHOd4f0JQS6YZdf7B30GYo Ie8SfffYb8ZrqrX6WeDPJtCGNAUZyh0v3Srv6RvzQP8H+Tk7S6PVmnQRR6n3BVhMiIaw Yp0nDhM1krROoqIQEa/LGxV18VlU2Sr4hNA4g7D7/ttdCMbduZla2ISPjSG6E/ogLj+X Mo5eLqTSZ9Y8bc+26DFz4V7Fn0dy+Q5Csbk6PV84qWQuhdUYIHAHdUoRtpcnhF4IaSUR oM/vYF5MaVE1GdTyPStgTV3tZiqcxMoo8/dlt4iZXwJmbcRw38gq2W44ALwN/lwwMYWb UFeg==
X-Gm-Message-State: AOAM532J0msrvrwmll7nITvpCUtKuUF0yj4GZEWVyOzWLldvmioyeBMy hmSxrvzUvl8t/EjBSkv8vIFhzQX/yf8=
X-Google-Smtp-Source: ABdhPJyKmtPFgna97X9Fjni2b9ZEIlGyL+u5AQGlUdocikWcRyyG9aG8kXefd1iLvS5wS2KdbRcLnw==
X-Received: by 2002:a17:90a:fa81:: with SMTP id cu1mr14864068pjb.39.1607314920757; Sun, 06 Dec 2020 20:22:00 -0800 (PST)
Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com. [209.85.216.46]) by smtp.gmail.com with ESMTPSA id 9sm9324699pju.20.2020.12.06.20.22.00 for <acme@ietf.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 06 Dec 2020 20:22:00 -0800 (PST)
Received: by mail-pj1-f46.google.com with SMTP id hk16so6697528pjb.4 for <acme@ietf.org>; Sun, 06 Dec 2020 20:22:00 -0800 (PST)
X-Received: by 2002:a17:90b:1b52:: with SMTP id nv18mr14855266pjb.172.1607314919888; Sun, 06 Dec 2020 20:21:59 -0800 (PST)
MIME-Version: 1.0
References: <CY4PR11MB168504F6D4CF495E8AE8F729DBF10@CY4PR11MB1685.namprd11.prod.outlook.com> <CA7603D9-DFDA-4FA6-A76C-D4E0E638A956@felipegasper.com> <CY4PR11MB16851AD65ACF736CE6FD55A8DBF10@CY4PR11MB1685.namprd11.prod.outlook.com> <CAErg=HEON6756+_3Lfbe=r=3rxV9gAundvG5mBEEOzsKqL8x3w@mail.gmail.com> <CY4PR11MB168593FCC8F11DF836FD12EADBCE0@CY4PR11MB1685.namprd11.prod.outlook.com>
In-Reply-To: <CY4PR11MB168593FCC8F11DF836FD12EADBCE0@CY4PR11MB1685.namprd11.prod.outlook.com>
From: Ryan Sleevi <ryan-ietf@sleevi.com>
Date: Sun, 06 Dec 2020 23:21:49 -0500
X-Gmail-Original-Message-ID: <CAErg=HHxbhbZQAdf2SRjFVUezmkGcg+OdeZL_ey0AwubxkSVSA@mail.gmail.com>
Message-ID: <CAErg=HHxbhbZQAdf2SRjFVUezmkGcg+OdeZL_ey0AwubxkSVSA@mail.gmail.com>
To: "Owen Friel (ofriel)" <ofriel@cisco.com>
Cc: Felipe Gasper <felipe@felipegasper.com>, Ryan Sleevi <ryan-ietf@sleevi.com>, "acme@ietf.org" <acme@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000d7a28205b5d82a34"
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/GJK1YFEzBAoCmmUtcMIxHwkSVUA>
Subject: Re: [Acme] acme subdomains open items
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: Mon, 07 Dec 2020 04:22:04 -0000

On Sun, Dec 6, 2020 at 9:32 PM Owen Friel (ofriel) <ofriel@cisco.com> wrote:

> [ofriel] Are there any benefits or security advantages in #1 (client
> giving server options) vs. #2 (server giving client options)? With #2, the
> client does not have to explicitly divulge any information about its level
> of domain control. The server gives the client a set of options, and the
> client decides what to do. Obviously, if it fulfils the challenge against a
> parent Authorized Domain Name, then it has implicitly indicated control
> over that domain.
>
🤷‍♂️

If there is a limit to the number of challenges, it seems it benefits from
the client choosing/advertising. Until the challenge is complete, the
server has to maintain state for (effectively) an unauthorized user, while
in the client-advertise scenario, there’s no server state other than what
the server chooses to use.

Further, if we assume that say there are ten domain labels, but the server
is only willing to maintain state for five (as a window), then it’s not
clear how the client can request the server sends the first five rather
than the last five. Having the client advertise its capabilities let’s the
client choose the window, and if the server rejects all of them, the client
at least can try again with a different window (e.g. the last five labels).

I don’t know how compelling this is, but my assumption here is that because
we’re discussing effectively DNS-01 challenges, the client is limited in
its abilities, and so the client should indicate it’s capabilities, and
minimize server state.

Equally in this scenario, I think you're asking whether or not the client
> should be able to indicate its capabilities to the ACME server, for
> selecting appropriate challenges. If a client is using dns-01 and can only
> modify subdomain.example.com, it doesn't benefit the client at all if the
> server chooses to also allow example.com. The question is whether there's
> a security risk in doing so; that is, should the client be able to
> affirmatively restrict the server or does it not matter.
>
>
>
> [ofriel] Yes, that is exactly what I am getting at. Perhaps the question
> #1 should be phrased more accurately something like: Does the client need a
> mechanism to indicate to the server that it is capable of and authorized to
> fulfil challenges against the requested subdomain FQDN, as well as some or
> all of the parent Authorized Domain Names (potentially up to and including
> the Base Domain Name).
>
>
>
> TBH I have no thought about the security risk of a client indicating to
> the server that it has control over parent domains, potentially including
> the Base Domain Name. What does the CA/B currently think about this?
>
I mean, right now there’s no rules on which party selects the Authorization
Domain Name, when an ADN is allowed. The CA still has to validate the ADN
against the rules.

Having the client indicate minimizes CA processing before validation; each
of the advertised ADNs can really be treated as independent FQDNs (that is,
largely opaquely), and only after validation of the challenge does the CA
do any processing on the domain label, to ensure it’s an ADN for the
(originally requested) FQDN.

That’s why my slight preference was to have the client advertise.
Processing after validation seemed preferable to processing prior to
validation, and it also seemed useful to let the client advertise
capabilities directly to let the server reduce any stored state. However, I
can equally imagine an asinine implementation of client-advertise that
requests a cert for “www.example.com” but let’s the client set the ADN as “
example.net” and, post-validation of example.net, fails to check that “
example.net” matches “example.com”. Or does something equally silly like
allowing “prefix.example” to authorize “not-actually-a-prefix.example”.