Re: [Doh] Draft -09 and WGLC #2

Andrew Sullivan <> Mon, 28 May 2018 16:10 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7D23212DA6D for <>; Mon, 28 May 2018 09:10:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -0.002
X-Spam-Status: No, score=-0.002 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key) header.b=Y7yIqq9R; dkim=pass (1024-bit key) header.b=j3Qq3dQt
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id gFC6jEzfw9xn for <>; Mon, 28 May 2018 09:10:47 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 844AE12DA69 for <>; Mon, 28 May 2018 09:10:47 -0700 (PDT)
Received: from localhost (localhost []) by (Postfix) with ESMTP id BF964BDEF9 for <>; Mon, 28 May 2018 16:10:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=default; t=1527523846; bh=emgSOxBEkDgOeS8DbYPpQwNUXRuXvCDlaAcN4LHw2PI=; h=Date:From:To:Subject:References:In-Reply-To:From; b=Y7yIqq9Rr/d8/vKs/gQyz328rNxtk0h2szBHafFWUqA9WJ4lI94APSSrndYZSK+zD opD0G2y5lP7wprBGHOKG6ec3tzAGLfeaDYj+qcJC+lkcSSP3O2RYuN636+kUvmIQwW YnGgTFZLUufM5jIJ5pkWYZRwA5zI4OZv5jkpatb8=
X-Virus-Scanned: Debian amavisd-new at
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 20Jh_bRl_1Qs for <>; Mon, 28 May 2018 16:10:45 +0000 (UTC)
Date: Mon, 28 May 2018 12:10:43 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=default; t=1527523845; bh=emgSOxBEkDgOeS8DbYPpQwNUXRuXvCDlaAcN4LHw2PI=; h=Date:From:To:Subject:References:In-Reply-To:From; b=j3Qq3dQtboldsA+pGwkFbOxa7FjTdOwy7wcwXRNmi6SFlbnMV5HCmT7Z1jYweJ7Xi JqOxilTaJp12OEfyOG0GsrYX5mm6wL7zIFAahEVrXbeuhpTLStXsmEwIPeWpL/fvdi 30pcTtoC3UKn7zW0l22IF3cigLUNtm8oq5Qxleg4=
From: Andrew Sullivan <>
Message-ID: <>
References: <> <> <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
Archived-At: <>
Subject: Re: [Doh] Draft -09 and WGLC #2
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: Mon, 28 May 2018 16:10:50 -0000

On Thu, May 24, 2018 at 09:09:45PM +0000, Paul Hoffman wrote:
> Greetings. WGLC #2 generated some good discussion and overlapping pull requests. We have issued draft -09 to deal with the discussion and make clear the current wording. Please see the diffs and let the WG know if there are still any outstanding issues on which there might be general agreement.


I've been a little negligent in keeping up with this work lately, so I
thought I'd take this opportunity to do a complete review.  The
editors are free to take this input, ignore it, hold anything that
crops up for post-WG action, or whatever.

By and large, I find the document clear and easy to read, so
congratulations are due to the editors.

This bit in section 4 strikes me as strange:

    A client MUST NOT use a DNS API
   server simply because it was discovered, or because the client was
   told to use the DNS API server by an untrusted party. 

This feels like it's crying out for a definition of "trusted", and yet
that seems to me like a bad idea.  Today, when you use an open wifi,
you probably don't actually _trust_ the network operator, but you
accept the default DNS server you get from DHCP anyway (unless you're
the sort of nerd who thinks about this sort of thing).  I can't tell
from the text whether that kind of "trust" is supposed to be permitted
by this or not.  I recall some discussion about this in the past, but
if the WG thinks that was resolved the resolution is totally opaque to
an uninformed reader.

Section 5.1 might want to note that the very fact of dependence on
HTTPS means that the spoofing-resilience advantage of random DNS IDs
do not apply to this case, but that DNS API servers are expected to
deliver maximal spoofing resilence in performing any (normal) DNS
resolution they themselves must do.  Maybe this goes without saying,

This text in section 6.1

   The stale-while-revalidate and stale-if-error Cache-Control
   directives ([RFC5861]) could be well suited to a DOH implementation
   when allowed by server policy.  Those mechanisms allow a client, at
   the server's discretion, to reuse a cache entry that is no longer
   fresh.  In such a case, the client reuses all of a cached entry, or
   none of it.

ought to come with a note that this may be dangerous -- that is, if
DNS operators are expecting their TTLs to be respected, this is a
(new) way by which stale data might get re-used.  So, DNS API server
administrators ought to be careful with such a server policy.  Maybe
the warning ought to go in section 10, though it's hard to be sure:
it's partially a warning for everyone _else_ on the Internet,
including people who don't support DOH.

In the same section,

   DNS API clients MUST account for the Age response header's value
   ([RFC7234]) when calculating the DNS TTL of a response.  For example,
   if a RRset is received with a DNS TTL of 600, but the Age header
   indicates that the response has been cached for 250 seconds, the
   remaining lifetime of the RRset is 350 seconds.

makes something plain by implication that might not obviously be clear
otherwise.  In the DNS environment today, many "clients" are stubs,
and they're not very smart.  One thing they do not always do is much
cache control: they get the value from the full-service resolver and,
if there is any local caching at all, it's straight decrementing of
the TTL.  What this passage means is that the data that comes in to a
DNS API client _is not_ suitable to hand straight to the local stub
subsystem: instead, some additional processing MUST be performed in
order to ensure that TTLs are not accidentally extended by accident.
Given the quality of a lot of DNS code in the world, I think this
point should be made quite explicit somewhere in the document.  Again,
it might go in section 10, though it's not obvious to me that this is
an operational consideration.  It's more an architectural one.

Andrew Sullivan