Re: [TLS] Two Multi-CDN proposals

Eric Rescorla <ekr@rtfm.com> Sat, 02 March 2019 20:57 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BACD7130EB0 for <tls@ietfa.amsl.com>; Sat, 2 Mar 2019 12:57:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.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 zkqRoJNEH4Xn for <tls@ietfa.amsl.com>; Sat, 2 Mar 2019 12:57:16 -0800 (PST)
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) (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 1065E130EA9 for <tls@ietf.org>; Sat, 2 Mar 2019 12:57:16 -0800 (PST)
Received: by mail-lj1-x236.google.com with SMTP id w6so1061228ljd.7 for <tls@ietf.org>; Sat, 02 Mar 2019 12:57:15 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=q+HsaMvWIImpII37jjKUBzs/aGF6q0BV1ifmpn8qkc8=; b=RrcoawOtGYmM1gxLi3Y3RIuKbreJD/p9hWjeUKUdy6IcVt+BPGrnPl0Bz0b3IINt4G GfEWVXHaQCxg6NvFqBMn/jsejwN4n4VzQree97kJYSM/uLOIRrEV+D6rDgtVVwhXYFsl oOmIVlU9AjVkUv4e8ZA8AIQbzHLV9HvbdcAVdPkxmlkZoIvFX9qPT0GU1g+j81vwFlxZ JpEURs7FN+kG9eK2s6JHUSRBVOR4YTQ8O8NAZ8kHIufWXQ6uX7nqfCi6TIOEOruKRWt0 v51LrN9i5B+lm1jyjt6B5CKHjI3xilBE6d14o/B9I1+GMAXNxnKxen4Q3xGmQuIapWUO DKDA==
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=q+HsaMvWIImpII37jjKUBzs/aGF6q0BV1ifmpn8qkc8=; b=XDTiqpZUTQrM6j+2ZE6PVKxTebEaxqXvS+7ejt6YkgEAED6jVrdaYOfKVJhb2x1AWg v73k48GHZpTpwCtNnH2LUwLzoV1SccAuGGrj7qilB7rx8dxtq4ebQ/CqaHQRAJ5FLIAJ 52WfcCGlXkX6jOUGwhsVCy6DbfCBzihHVhqz7ilnSaDQVa3QJzqy/TcekH4NNXp7n0m2 8NgBWI9qwf1PP7b6zjISKDhwtctx8RyA9CRN+x1Ie/IXPo5sQPsF8Z2GwBtQrHTmQiLM rrN0RS9JZ2IvP+eQyLd6K0cfWjyLqD+UI08ck+hESY7pGvIMz8ExKontoefR9mZvhc1Y FjYQ==
X-Gm-Message-State: APjAAAVznE9R5L/njIbn3v7A8fZUQKhRJY2S+dfuwkS73Z3EyAdXIwoH UtuDZZARHM8+7eM3APepQY30RRNESRXxQMfW0l6+3Q==
X-Google-Smtp-Source: APXvYqxtG+GY7H9lemdhq2JL99yMRp0n8wpRdr3t7lV/mNWjLCWVqkHEYiJxuEX0H7GwE14soLVQNBA8HgFIm/ApFmo=
X-Received: by 2002:a2e:a28f:: with SMTP id k15mr6479650lja.160.1551560233804; Sat, 02 Mar 2019 12:57:13 -0800 (PST)
MIME-Version: 1.0
References: <CAO8oSX=sPoLo78oX4qEEyeuck7CxM_uAqYPHEsY7BuYqBUaorg@mail.gmail.com> <0b19d021-8101-23ee-2899-450d103a8906@cs.tcd.ie> <CABcZeBN0mf7VFCKKdg9gH0=tCS7eLZz6M5_WJdaNG7XrJeyESw@mail.gmail.com> <0b854704-8f93-f9ad-c067-67f7f73cbbbf@cs.tcd.ie> <CABcZeBM61u=DtjQh+NkQF47MLyZS4EyuGBjDnsfjxz-z5kfjoQ@mail.gmail.com> <1eaaebf3-6e8a-ae84-0ab3-f977295c0721@cs.tcd.ie> <CY4PR22MB09831CBC251393EE334905D4DA760@CY4PR22MB0983.namprd22.prod.outlook.com> <CAO8oSX=2N=_wvf3L=o6ou=zJaSHE4zpgQDK38QO99+ausYmEpQ@mail.gmail.com> <CAFDDyk_57De_xkXQmhfL_GdojMG0j-=RBhoTFReiCHyArobYWQ@mail.gmail.com> <CABcZeBPgcTyfA3GHkzcrXPO=dnj1Ea+U4fwcg=4mw6BbO-WkSA@mail.gmail.com> <CY4PR22MB0983DDBEC2B214D7EB1A261EDA770@CY4PR22MB0983.namprd22.prod.outlook.com>
In-Reply-To: <CY4PR22MB0983DDBEC2B214D7EB1A261EDA770@CY4PR22MB0983.namprd22.prod.outlook.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Sat, 02 Mar 2019 12:56:37 -0800
Message-ID: <CABcZeBMZWi5D0pxPZa3_CBZbWP19dPy0Cy9-h0HzuUJgtm_SsQ@mail.gmail.com>
To: Mike Bishop <mbishop@evequefou.be>
Cc: Nick Sullivan <nick=40cloudflare.com@dmarc.ietf.org>, "<tls@ietf.org>" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000957c89058322c478"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/tKiu_NXdg-igBw3yShbcG6yvxMY>
Subject: Re: [TLS] Two Multi-CDN proposals
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 02 Mar 2019 20:57:21 -0000

On Fri, Mar 1, 2019 at 11:03 PM Mike Bishop <mbishop@evequefou.be> wrote:

> Totally agree that we want to avoid the extra DNS round-trip as often as
> possible.  However, I see the options in the opposite light – if all you
> need is #136, then you can put exact addresses into #137 and get the same
> behavior.
>

Sure, but if the error rate is too high, then people will just not do ESNI
with the non-exact address version, so you've absorbed complexity for
nothing.

i'd also like to hear from CDNs about whether their address ranges are
really small enough to not make the list of ranges prohobitive.


The question is whether the additional capabilities of #137 are safe and
> needed.  Depending how much later #137 is added, we may wind up needing to
> support both, which would be… suboptimal.
>

I actually don't think that's so bad. The complexity of the union of 136
and 137 isn't actually much  more than the complexity of 137, especially if
the client just omits step 1 of the 137 algorithm (for exact addresses).

I think what will swing the needle on safety – how often there’s divergence
> – lies in how the record is positioned.  Two problems with the current
> approach that I see:
>
>    - Correct me if I’m wrong, but I don’t believe the alias is allowed to
>    have subdomains.  If www.example.com is a CNAME, then _
>    esni.www.example.com cannot exist, can it?
>    - Even presuming that it did, or that it weren’t a subdomain, it would
>    follow its own CNAME chain which might not lead to the correct provider.
>
>
My understanding is that there was consensus to remove _esni, just that we
didn't get around to it because of this issue.


>
> If, however, the ESNIKeys RRType is resolved by following the CNAME from
> the host, it depends on how often two queries for two different RRTypes on
> the same hostname follow different CNAME chains.  We have a ready-made way
> to test that – A and AAAA.  I have an idea where we can get some data on
> that.
>

Great. I would be interested in seeing that.

-Ekr


>
> *From:* TLS <tls-bounces@ietf.org> *On Behalf Of * Eric Rescorla
> *Sent:* Friday, March 1, 2019 7:19 PM
> *To:* Nick Sullivan <nick=40cloudflare.com@dmarc.ietf.org>
> *Cc:* <tls@ietf.org> <tls@ietf.org>
> *Subject:* Re: [TLS] Two Multi-CDN proposals
>
>
>
>
>
> On Fri, Mar 1, 2019 at 6:39 PM Nick Sullivan <nick=
> 40cloudflare.com@dmarc.ietf.org> wrote:
>
>
>
>
>
> On Fri, Mar 1, 2019 at 6:27 PM Christopher Wood <
> christopherwood07@gmail.com> wrote:
>
> On Fri, Mar 1, 2019 at 3:19 PM Mike Bishop <mbishop@evequefou.be> wrote:
> >
> > Stephen, there are a couple complicating factors here where I think we
> all have varying knowledge gaps.
> >
> > There are two major ways of pointing to a CDN:  Direct A/AAAA records
> and CNAMEs.  The easiest way to handle key update complexities on the part
> of the CDN(s) is simply to CNAME the ESNI query for your domain to their
> ESNI record, but you can certainly directly host your CDN’s keys in your
> domain if you prefer.  Nothing should preclude that.
> > The issue we’re trying to address is when the ESNI record and the A/AAAA
> record follow different CNAME chains and you get the records from different
> hosts.  Of course, if we move to an ESNI RRType with the same hostname (see
> #105), there’s hopefully a single CNAME chain that gets cached at the
> resolver and used when looking up both queries.  If they remain separate
> hostnames, it seems like it gets much easier for them to diverge.
> > It’s my understanding that DNSsec doesn’t play well with returning a
> subset of all extant RRs for a given name+type.  However, some CDNs return
> DNS results tailored to the user’s location; the load-balancing servers
> will (in some cases) return CNAMEs to different targets based on the
> desired traffic share.  That’s not a behavior that maps well to DNSsec as I
> understand it.  You mention DNSsec signing your domain as part of why you
> have issues with the proposal, but I think this is an open issue beyond
> ESNI or these PRs.
> >
> > Maybe someone better-steeped in DNS/DNSsec can help us figure out how
> all that should work, and I agree with you that there are definitely bumps
> here we need to iron out – maybe those are just questions to answer, or
> maybe changes to the structure of the record are warranted.
> >
> > However, these PRs are primarily about what information should be in
> these records and how clients make use of it.  I disagree with you that we
> have to resolve both questions at the same time.  Let’s agree on content
> first, and spent some time separately with DNS folks to see whether the
> content can be more pleasantly arranged.
>
> Thanks all for the discussion so far! Focusing strictly on the content
> of the records and not the formatting, as Mike suggests, we
> essentially have the following:
>
> - #137 gives clients a way to detect A/AAAA+ESNI mismatch and recover,
> at the cost of another sequential DNS query for ESNI. In this change,
> A/AAAA records still control where traffic goes.
> - #136 never requires clients to send a second DNS query for ESNI
> since clients ignore the A/AAAA results. In this change, ESNI records
> dictate routing.
>
> With #137, clients willing to send a second DNS query will get ESNI
> for all supporting providers. Clients unwilling to send a second DNS
> query will only get ESNI for those providers which ensure that their
> A/AAAA and ESNI records very rarely mismatch. With #136, clients only
> get ESNI for those providers capable of building ESNI records with
> correct addresses. In theory, these providers should be the same ones
> that could ensure A/AAAA and ESNI record matching.
>
> Given this, the discussion seems to hinge on the following question:
> Are operators comfortable with the risks of letting ESNI records
> control routing. If so, #136 is probably a better design for said
> operators. If not, then #137 is probably required.
>
>
>
> Thanks for the summary, Chris.
>
> Speaking for Cloudflare, we prefer the method described in #136 and would
> be willing to implement ESNI records this way.
>
>
>
> I have sympathy for organizations with a preference for #137 for
> debuggability reasons, but I would rather avoid situations in which the
> client needs to do an additional DNS query if avoidable.
>
>
>
> I would support the option to include either extension based on operator
> preference.
>
>
>
> This more or less aligns with my views.
>
>
>
> From my perspective, we know that #136 is safe, although it may be
> inconvenient for some operators, and it's not clear to me that #137 can be
> made to work without frequently incurring another serialized DNS query. If
> we had some evidence to the contrary, I would be somewhat more favorable to
> #137, though I would probably still prefer #136 for reasons of simplicity,
> especially as we can always add #137 later if it proves viable..
>
>
>
> -Ekr
>
>
>
>
>
>
> Note that this does not mean we must choose between #136 and #137
> right now. We can do both (after possibly simplifying #137!), use
> them, and see what works best in practice.
>
> Anyway, I hope this summary accurately captures the differences and
> possible tradeoffs.
>
> Best,
> Chris
>
> _______________________________________________
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>
> _______________________________________________
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>
>