Re: [TLS] Multi-CDN and ESNI

Patrick McManus <mcmanus@ducksong.com> Tue, 23 October 2018 21:28 UTC

Return-Path: <mcmanus@ducksong.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 E0B2A130DC7 for <tls@ietfa.amsl.com>; Tue, 23 Oct 2018 14:28:12 -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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=ducksong.com header.b=LRBAEhY1; dkim=pass (2048-bit key) header.d=outbound.mailhop.org header.b=bOCVcfJZ
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 e-B2UPiujtsX for <tls@ietfa.amsl.com>; Tue, 23 Oct 2018 14:28:09 -0700 (PDT)
Received: from outbound1.eu.mailhop.org (outbound1.eu.mailhop.org [52.28.251.132]) (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 789F5130D7A for <tls@ietf.org>; Tue, 23 Oct 2018 14:28:09 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1540330087; cv=none; d=outbound.mailhop.org; s=arc-outbound20181012; b=qQXAJs49JA4pXQ4vR59cm6ZQygnG1JAbXwCJmXMTgRDEIv4UrTVKKeOyz4kFQlRZBtl8uCpmJFU9S UAjTVl3xVtoY73BLOiXag9lEaiptEHWMPZZFp22H2+jDwrqpfZ7utPaQJ0HuS4mDoxG19/9mC0bZ12 PZEVCoXqk9H2lm0dF07SFInfoRIW7IOiao5jcIenNyeS6gZFJ104tcNd4gmPOpEf4qhC94TJA3xNQx 629LZMYB7DFjBhTqDgfTKSahU9k0TtK+kO+jOgz6GGYt/Y4dMO0/ZPyeEq67PRKtGUw7Ua9ipXSleX H/g7VPKNODMINC5gtJjgS10vHyfvezA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=outbound.mailhop.org; s=arc-outbound20181012; h=content-type:cc:to:subject:message-id:date:from:in-reply-to:references: mime-version:dkim-signature:dkim-signature:from; bh=uFv/2v2V+ZWUpCRa19wTVyT+aSnzQVfZbd66CD7NhzA=; b=Jqf32F3flC0hrctQmQF33z7AtU9G6rmiCPfRcPUEj6MHpvYEAXA1aVUKHUSAry6SqeGijJUgcwE7a TwYRdjhUxMkzq2Q6cmud4EJ209czT0ziAOsJteRncpuLHuiVJqQ5bLeyMM7dRWtnwO7nl+ZmRVtciR Mhd+D60NC785BQqdnKHHbxh+yU9KXVSb6qSXNm/awwyZ8fvDd6zHEEUGtVV2BPtbozqZRXJMrcW8UE FimlDIszH5QvElGVAx40f8nSAxr3+vklkaIor3r2JnZy31Ny5yqQUP25UFVXdkuXi8RXBwBCA9s50+ zR7UkTvdJcgiSmye5TGsuR7fCMwXkNA==
ARC-Authentication-Results: i=1; outbound1.eu.mailhop.org; spf=pass smtp.mailfrom=ducksong.com smtp.remote-ip=209.85.210.44; dmarc=none header.from=ducksong.com; arc=none header.oldest-pass=0;
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ducksong.com; s=duo-1537391512170-ea99bbb3; h=content-type:cc:to:subject:message-id:date:from:in-reply-to:references: mime-version:from; bh=uFv/2v2V+ZWUpCRa19wTVyT+aSnzQVfZbd66CD7NhzA=; b=LRBAEhY1X+fQ5qIEH1iwM3hyq0NpwJZaM7FrqU42h2i9Ik5lhx2TCmCMNy1npulrIW/iy3oYLJpsz cbL3UBdPm532MAEGslDjYSt/TAA9DD1i9XO4VE8LzidT24hx9o8g/REFRhkgk2nvatXxKHisWBjjBP qlDGCFc2nJ/ROiAw=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outbound.mailhop.org; s=dkim-high; h=content-type:cc:to:subject:message-id:date:from:in-reply-to:references: mime-version:from; bh=uFv/2v2V+ZWUpCRa19wTVyT+aSnzQVfZbd66CD7NhzA=; b=bOCVcfJZlMzZ9KNG4h/TAVpCDJfwW0eQDAWDvatVfZ+hS8gwdhl3vdY/iSKZb9G5m7IHny01evUZt U1tv+VUo4jPCvE1U6b/vNS3EMnTLPMfSh1fB7uYbqupyzXgSHkY77pkU+uaTu1Bf3gGJKjamRsSJX9 ILFDUnIA/mH/6FzTIcnbysqp6Wh3LNSCiTeL+hwj6/zy/1Fi89E+e31SDMWp7eaIdYwgfKahNAzfOj 2sTypk4QpjQ3o/tJNAEX22DnddaQwzb3DHje0sc1IIYXvBQVDpH+V/zF+uDcYa+uakt2GhWJExC5Cx mxSMUhzyHgetEtGhN1+DiSQCh3fgZiw==
X-MHO-RoutePath: bWNtYW51cw==
X-MHO-User: 853d2dab-d70a-11e8-9048-075f73944867
X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information
X-Originating-IP: 209.85.210.44
X-Mail-Handler: DuoCircle Outbound SMTP
Received: from mail-ot1-f44.google.com (unknown [209.85.210.44]) by outbound1.eu.mailhop.org (Halon) with ESMTPSA id 853d2dab-d70a-11e8-9048-075f73944867; Tue, 23 Oct 2018 21:28:04 +0000 (UTC)
Received: by mail-ot1-f44.google.com with SMTP id x4so2934428otg.3 for <tls@ietf.org>; Tue, 23 Oct 2018 14:28:03 -0700 (PDT)
X-Gm-Message-State: ABuFfoirTiI4mB90IfFiLflPWJYESPASBOsiCInRF5/L5MoCqVhtjCaV aqihIG4VSdBvEHFBrYJeTmlvz7PIjgiomDpQom0=
X-Google-Smtp-Source: ACcGV63pmgl2cmoh47dzgEcxAGaT5x6aVCpfBatiifeJ3/+p4Hpw/lRIsyjtuB95qNRvMktpOYz9Te5kk06FtN9CqZE=
X-Received: by 2002:a9d:7616:: with SMTP id k22mr19095675otl.295.1540330081706; Tue, 23 Oct 2018 14:28:01 -0700 (PDT)
MIME-Version: 1.0
References: <DDE6F8E9-6635-4D69-8028-83D49E9D7437@akamai.com>
In-Reply-To: <DDE6F8E9-6635-4D69-8028-83D49E9D7437@akamai.com>
From: Patrick McManus <mcmanus@ducksong.com>
Date: Tue, 23 Oct 2018 17:27:50 -0400
X-Gmail-Original-Message-ID: <CAOdDvNpmLdHQj2yE3tNNbjxCqOZMqTriODwG6setC9ajJmx2pQ@mail.gmail.com>
Message-ID: <CAOdDvNpmLdHQj2yE3tNNbjxCqOZMqTriODwG6setC9ajJmx2pQ@mail.gmail.com>
To: "Salz, Rich" <rsalz@akamai.com>
Cc: Mike Bishop <mbishop@evequefou.be>, "<tls@ietf.org>" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000005b6c810578ec0b19"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/olpWQD6Uhmg9r0yr9lGB3pNUx5U>
Subject: Re: [TLS] Multi-CDN and ESNI
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: Tue, 23 Oct 2018 21:28:13 -0000

Definitely agree this is something that needs to be addressed..

As Mike notes, the fundamental issue is that there are 2 pieces of
information that are statefully related (the key and address) but obtained
statelessly from each other and can therefore come from un-coordinated
sources. 2 CDNs are commonly un-coordinated sources.. but I've seen this
with other kinds of cloud providers too. All of which should be target
audiences of ESNI (because they terminate a variety of hostnames on a
smaller number of addresses).

fwiw there is a muddled github issue open on this in the old
individual-draft repo:
https://github.com/ekr/draft-rescorla-tls-esni/issues/35 .. which I'll
re-open when the tls-wg repo starts being used for this draft.

I see three solution spaces.

1] As Rich suggests, you can coordinate the uncoordinated sources to have
one keying record to rule them all. I suspect that's actually not good for
anonymity unless it somehow had a normalized global set .. and given the
one way nature of a CNAME pointer, I feel like this would be really fragile.

2] you could scope the keys to only be valid for certain addresses by
putting the valid addresses in the key record. This wouldn't help you do
ESNI when they didn't match, but at least you could avoid hard failure. (or
you could ignore the addressing record but that might be a bridge too far?)

3] My preferred approach, you could scope the keys to the same intermediate
name. So if www.example.com -> cname www.cdn-a.com -> ESNI record
www.cdn-a.com we could make a rule that the ESNI record would only apply to
address records with a final intermediate of www.cdn-a.com. (I'm presuming
we'll shift from TXT to ESNI RRTYPE without a prefix, but I don't think it
matters for this..).. when there is a mismatch you could use the addressing
intermediate as a place to try a new ESNI query from.. That's a perf
penalty, but its only paid in the hopefully rare case where these things
are unsyncd.

#3 is admittedly a bit non traditional, but I spent a bit of time looking
at the features of DNS APIs that already have the necessary surface to make
a query for a new RRTYPE... and the cname intermediates are indeed
generally available.. its true of getdns, res_query, the IOS and MacOS
interfaces, DnsQuery* on windows, and of course the custom dns stacks in
cronet/android and firefox/doh could do it.

I hope to work this into a PR.. my first attempt wasn't very readable, but
I'll try again tomorrow.

-P






On Tue, Oct 23, 2018 at 1:59 PM Salz, Rich <rsalz@akamai.com> wrote:

> I think perhaps we need to take a step back and explain something that
> might not be well-known outside the community of CDN’s and their
> customers.  It is not uncommon for (admittedly larger) origins to use
> multiple CDN’s, and to switch among them. This can be done on a per-request
> basis, because of things like contractual arrangements that make one
> preferable, or it can be done globally but switched in a matter of seconds
> because of a short TTL on the www.example.com entry.
>
>
>
> The issues that Mike discusses impact on this, somewhat negatively.
>
>
>
> A quick hack thought is to allow multiple entries in the TXT record,
> forcing a wee bit more work on the CDN.
>
>
> _______________________________________________
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>