Re: [dns-privacy] Fwd: New Version Notification for draft-schwartz-dprive-name-signal-00.txt

Peter van Dijk <> Thu, 10 June 2021 07:12 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id EAEDC3A37E3 for <>; Thu, 10 Jun 2021 00:12:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.5
X-Spam-Status: No, score=-1.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, KHOP_HELO_FCRDNS=0.398, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=no autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id vjOHPPacs_v4 for <>; Thu, 10 Jun 2021 00:12:30 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 0DC493A37E2 for <>; Thu, 10 Jun 2021 00:12:29 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by (Postfix) with ESMTPSA id 21D866A0C7; Thu, 10 Jun 2021 09:12:27 +0200 (CEST)
Received: from plato ([]) by with ESMTPSA id ZL5bB1u7wWDWUwAA3c6Kzw (envelope-from <>); Thu, 10 Jun 2021 09:12:27 +0200
Message-ID: <>
From: Peter van Dijk <>
To: DNS Privacy Working Group <>
Date: Thu, 10 Jun 2021 09:12:26 +0200
In-Reply-To: <>
References: <> <>
Organization: PowerDNS.COM B.V.
Content-Type: text/plain; charset="UTF-8"
User-Agent: Evolution 3.30.5-1.1
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Archived-At: <>
Subject: Re: [dns-privacy] Fwd: New Version Notification for draft-schwartz-dprive-name-signal-00.txt
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 10 Jun 2021 07:12:32 -0000

Hello Ben (and Warren),

On Tue, 2021-06-08 at 11:09 -0400, Ben Schwartz wrote:
> A few years ago(!), Warren Kumari proposed a hacky way to signal ADoT support by choosing a special nameserver name [1].  Since then, folks have proposed a ton of different ways to indicate ADoT support, making use of the nameserver name, DS record fields, or new RR types.
> Warren and I recently revisited that old idea, and felt that it might fill a gap in some of the active proposals, so we reworked it into a new proposal (intended status: experimental) that better matches the WG's adopted drafts.

a lot of ideas have been thrown around over the years, and most of
those were not discussed well because they were not written down in
drafts; a lot of goalposts were moved without having clear pictures of
the full scope of several ideas.

So, thank you for typing this one in so we can discuss it! I also much
appreciate Appendix A which summarises several other proposals very
succinctly and explains which bits this draft does better compared to

Obviously, and the draft mentions this, this is a terrible terrible
hack. But that's no reason to hate it. It matches some of the use cases
better than "cleaner" solutions.

The encoding with the single letters is neat. Tying it to SVCB, at
least to have familiar well defined terms to explain what the letters
do, makes sense to me. I note that there are no further words on actual
SVCB records. I can imagine combining your draft (a quick, immediate
signal that causes encryption without waiting for an SVCB lookup, be it
synchronously or asynchronously) with actual `_dns` SVCB records as
described in other recent drafts (the adox draft, and my and Paul's
-common draft). Further down this email the reasons for that should
become clearer.

Paul disagrees with me on tying your explanation to SVCB, and says: "a
resolver operator does not need to implement this as part of SVCB.
Also, it isn't really SVCB because it is default-port only, and it
doesn't handle any other SVCB extensions. It should be called "aext--"
instead, and scrub any SVCB parsing ideas." He also brings up the
chance that the signals in this label might disagree with the signals
in the SVCB record, so untying it from there will cause less
consternation and still have the same semantics.

Going through the draft bit by bit, here are my thoughts (based on
discussion with several other people):

Abstract: definitely agree that parent side SVCB is unlikely to make
sense, ever.

Background: 'synchronous binding check' - Paul and I of course proposed
an asynchronous one, which avoids the latency hit, but it means less
communication will be encrypted.

We don't feel that this is an "interim" solution because we don't think
parent-side SVCB is likely to ever come, or be very useful if it both
unsigned and rarely available. We propose that this be the actual,
long-term solution.

Flag form: proposal: drop this, and allow resolvers to query for SVCB
always. That way, outdated parent side information only 'hurts' for a
short while. It also makes clear that resolvers who really want to know
about the signals can maybe get a signed SVCB back from the child.

Menu form: 'first label' - we not see why this would be a requirement.
As an example, TSIGs requirement to be the last record in a DNS packet
made writing the XPF draft harder than should be necessary. Demanding
to be leftmost hinders future expansion. As we discovered with xn--, it
is essentially easy to look for specially-tagged labels anywhere in a

QUESTION: do we need more than 36 codepoints? Answer: we don't think
so. (If we do, we can create another foo-- label form.)

QUESTION: should we be able to encode svcparams? Answer: the current
candidates for that are, I think, 'port' and 'dohpath'. We don't think
we need them, particularly if there are SVCB records in the child.

Implementation requirements: says 'MUST also support adox', and that
makes sense if the WG treats this as an interim solution; but we are
not not optimistic. In DNS protocol terms, we don't think parent side
SVCB has any significant benefits over this proposal anyway.

Security Considerations: authenticated NS names etc. etc. - yes, this
proposal will not deliver authenticated encryption (but neither will
parent side SVCB). The text above the question is clear on the

Operational considerations: no comment on the existing text, but there
is another concern that was also brought up around DOTPIN. As A.4
mentions 'creates challenges during TLS key rotation', there is a very
similar challenge, and that is 'the auth operator wants to get rid of
DoT' (or DoQ or whatever) - and its smaller sibling, 'the auth operator
really wants to move from DoT to DoQ because it is so much lighter on
resources' or whatever. Because delegation NSsets are a zone property,
an auth operator does not have full control over what is signalled for
their servers. It can, of course, remove
from the zone, but then anything delegated to that name
just breaks. Proposal: allow resolvers to downgrade (in contradiction
with the current second half of section 5). Then say: if svcb--t was
ever signalled, the auth operator promises to at least send TCP RST for
any connection attempt to port 853. Similar for DoH (443) and DoQ (the
QUIC protocol has a CONNECTION REFUSED error code). This way, the
downgrade in a resolver can be swift, instead of having to wait for

- Peter van Dijk & Paul Hoffman