Re: [Doh] WG Review: DNS Over HTTPS (doh)

Ted Hardie <> Fri, 15 September 2017 20:54 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 225DD134213; Fri, 15 Sep 2017 13:54:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, 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: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id wA-Hfx93VsyA; Fri, 15 Sep 2017 13:54:13 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:400d:c0d::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 1292B126E64; Fri, 15 Sep 2017 13:54:13 -0700 (PDT)
Received: by with SMTP id m35so3292791qte.1; Fri, 15 Sep 2017 13:54:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=AK6M4Wzz8yK0kBWMkSQ2uN4LIrNgN7pIPlFxywceCw0=; b=FSNHdXLDFzABfS2mKZESN0hC2lhxRGR8vW11HjvnN7mp4JldMqUdWV2AhjrvMfBlID layIsZWiqFyOxznJlYazrc6MaxpDXJEidi/4hjaJXD8vPaqVosURY8x7PNCmP3zqI+Ws Ejy9hmzuZmbXFyptCo+tzKmWheOQoOTr7kVP/uSeVW4DmhpEHAwPUNbeD/xAaA6FaoYA gRbXLR6VpxQZ9+nsiQRIQJprECdpJoVK2s31Npphl+ltNAtzh6wGbi/6X89L9l4BIL+b 2IE+R17zuhJkRI5wKXNlOdNfTu77SBi5cNXYOJg5SwEt7GdH8NL+1Nn7hmRMIj66maQ1 SlpQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=AK6M4Wzz8yK0kBWMkSQ2uN4LIrNgN7pIPlFxywceCw0=; b=SFGqMrXRuaf5Gshgm3ZrcuXyHrWM1vBL8wUTrMvFn6EFit1fVGIGr1337wFoBanlLU E0kP7tb35/rSuc6aSnNEwh/qgj3QSkms1rSrFSB8MDN1XCwstIRVLmImwL1oasH8dchm j/F5jyorzidknSKOiH+8RJl40swMXpOsGJqw9zl0vdXXnjI95AcfQturzJvr8k4eRQx0 6cqOHJTAQ1scM0tTjRDHm2pOhrH4pqp6KJBfCzf6Rz4OqJVJmEc5svCVC81iLqcoOiJ7 1hQA6ZMn09xmHlin2p1JBqbshVyzUE2HNCGzZ4ej4G76Z1igohV68HJRUhL1xexdcp/w vY6A==
X-Gm-Message-State: AHPjjUg1yTYkgXIiJvAVkuGPk5lrHoyO4g85g+LHWOAY7PViMd98OL3a pxcsslUw28plSC2PZsI/R6UoyAGh0RoWh7BCTig=
X-Google-Smtp-Source: AOwi7QCwu+HLTOJRCyjWnkl2RVDm8NFGT2d0UAEne/n7GMGEJNARdT+G0gCvnfrFvJW0OhoXody2Stby2DPaREFzf14=
X-Received: by with SMTP id y36mr39042634qtc.199.1505508850844; Fri, 15 Sep 2017 13:54:10 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Fri, 15 Sep 2017 13:53:40 -0700 (PDT)
In-Reply-To: <>
References: <> <> <> <> <> <>
From: Ted Hardie <>
Date: Fri, 15 Sep 2017 13:53:40 -0700
Message-ID: <>
To: Adam Roach <>
Cc: Paul Hoffman <>,, IETF <>
Content-Type: multipart/alternative; boundary="001a114029b642cc37055940981c"
Archived-At: <>
Subject: Re: [Doh] WG Review: DNS Over HTTPS (doh)
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: DNS Over HTTPS <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 15 Sep 2017 20:54:16 -0000


On Fri, Sep 15, 2017 at 1:19 PM, Adam Roach <> wrote:

> On 9/15/17 14:25, Ted Hardie wrote:
> On Fri, Sep 15, 2017 at 12:00 PM, Adam Roach <> wrote:
>> On 9/15/17 1:24 PM, Paul Hoffman wrote:
>>> Yes, please. The charter should say "HTTP/2 over TLS". There is no
>>> reason for current browsers adding this feature to add it using an obsolete
>>> protocol.
>> I think you're assuming a tighter coupling between layers than actually
>> exists.
>> In particular -- since you're talking about browsers -- it would easy to
>> implement the current draft entirely in content JavaScript. In doing so, it
>> would be impossible for the implementation to prevent its use over HTTP/1.1
>> (or QUIC): aside from some proprietary browser-specific APIs,
> So, "the implementation" in your statement above--is that the JavaScript
> or the browser?
> In the scenario I'm describing, it's the JavaScript.
>> there's no way for such an implementation to even tell what version of
>> HTTP is in use, much less prevent certain queries from going out over
>> unwanted ones.
> So, I think you have a usage in mind that is not the usage model that the
> draft talks about and is not really clear in the charter--the use of this
> within a JavaScript application to collect DNS responses without going
> through the browser/OS cache and DNS method.  If that is a proposed use
> case, then I think there is a serious question of how the same origin
> policy applies here.
> Given that (in this scenario), the browser wouldn't know this query from
> any _other_ HTTPS request, it applies the same way as it does to all other
> HTTPS requests.
You're making an assumption that I don't think is established, that the
requests using HTTPS for DNS are not distinguishable from other resources.
If they were keyed by something like dnsh://authority/query-target?RR (to
pick on poor old RFC 4501 again), they would be in JavaScript *even if they
were not on the wire*.

> Assume for a second that the resource in question mimics the current DNS
> URI structure (RFC 4501), but substitutes HTTPS as a scheme.   If Facebook
> JavaScript has a call for,
> will that be within same origin policy or not?
> You didn't say what the origin of the calling page was.

Sorry, when I said "Facebook JavaScript" I meant to imply that facebook was
the origin and that would same origin.

> If it's the same origin, then it's the same origin (modulo CORS behavior).
I'm frankly a bit worried that the GET version of Paul's draft would not
trigger the CORS pre-flight checks.  If it is consumed by JavaScript and
never otherwise cached, that's not so big a deal, but if it is populating a
browser or system cache, it's a problem.

> If it is within same origin, where does the resulting data go?  Just to
> the JavaScript or into browser or system caches?
> The scenario I'm posting above assumes no special browser behavior.
I'm not sure "no special browser behavior" answers my question.  Is the
default the browser behavior when it gets a DNS response or the browser
behavior for content JavaScript requests in-line?

> In addition to same origin questions, there are some privacy issues around
> this being used to signal external parties.  Imagine a query like this:
> I don't know of any cross-site cookie watcher that would catch that, but
> it might be needed.

> This is a fine point. I do wonder how the resolvers at and
> handle it. I suppose the API deployed at
> speed/public-dns/docs/dns-over-https is probably closer to the use case
> we're contemplating, though.
(I wasn't involved developing that, so the view from the outside); that
looks very much like it would take the JSON records returned and populate
the standard cache(s) with them.

To be clear, I'm not saying that these situations you describe aren't
> _bad_; I'm pointing out that they already exist with or without the
> mechanism under discussion. I would think the standard here is "don't make
> it worse," rather than "first, drain the swamp."
> I'll also point out that this use case (the JavaScript-based one) is nice
> in that it allows applications to communicate with a known trusted site
> (e.g., their own origin) to prevent this kind of unintentional exfiltration
> of information. Of course, this is already possible today using proprietary
> mechanisms, but it would be nice if such apps could use standard libraries.
The trust relationship you mention is important (the JavaScript trusting
its source), but we also have to consider the user's trust in the
JavaScript.  A malicious piece of JavaScript is not so hard to introduce
into the world, and if it can influence the DNS mapping, it may be well
worth the time of phishers and others to do so.

I agree that the working group has to tackle it if it is in scope.  The
> question we're discussing now is whether that use case is in scope.  If any
> potential solution must deal with that eventuality because they all *could*
> be done in Javascript, like it or not, then the question is moot, but
> that's not personally clear to me yet.
> I chose that example because it's easy to reason about without knowing the
> internal implementation architecture of browsers. If we instead turn to the
> *other* use case that you describe in which the browser (absent any special
> JavaScript handling) chooses to use DNS-over-HTTPS, then a congruent
> problem arises. While it's not an area I've worked in closely, what I've
> seen of Firefox's network layer implementation leads me to believe that
> precluding a mechanism like this from working across all supported
> variations of HTTP would require additional code; and that the role of that
> code, in its entirety, would be to prevent from working that which
> otherwise would. Unless there are, say, security implications to doing so,
> I'd think we need better rationale for preventing it than "we don't want to
> think about it."

I assume that you have code that would let you say "not unless protected by
TLS", though, so that portion of the charter presumption matches reality?

Thanks for your insight into this,


> /a