Re: [dns-privacy] TLSA for secure resolver-auth transport (was: Possible use case: Opportunistic encryption for recursive to authoritative)

Paul Wouters <> Wed, 12 August 2020 19:50 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 05EEA3A0819 for <>; Wed, 12 Aug 2020 12:50:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id vo9ILbvO8EX3 for <>; Wed, 12 Aug 2020 12:50:38 -0700 (PDT)
Received: from ( [IPv6:2a03:6000:1004:1::68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 9620E3A0486 for <>; Wed, 12 Aug 2020 12:50:38 -0700 (PDT)
Received: from localhost (localhost [IPv6:::1]) by (Postfix) with ESMTP id 4BRgKm576mzFLL; Wed, 12 Aug 2020 21:50:36 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=default; t=1597261836; bh=a1Qa6+wr8K1tQOXgvnZeC2pIGLex3rdA3HZ3T6yScmo=; h=Date:From:To:cc:Subject:In-Reply-To:References; b=pnDt2J2n3O/dSxLepe38XliekwabYBl32ZHoCPtDEPXo8ZVuzazBgHWx2ExUz5bJG mMv1h1+OYRXIaG1m4P7qNvO8uWibAl3ukvhyoC82pRwKI9ufOsXAdN4CQskpmRoohx lfxlkic6a0aoSl0E4QgiBfJD8QHPQie/HmQtEHH4=
X-Virus-Scanned: amavisd-new at
Received: from ([IPv6:::1]) by localhost ( [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id nAlb5GVhp_Fq; Wed, 12 Aug 2020 21:50:35 +0200 (CEST)
Received: from ( []) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS; Wed, 12 Aug 2020 21:50:35 +0200 (CEST)
Received: by (Postfix, from userid 1000) id B9EF96029BA5; Wed, 12 Aug 2020 15:50:33 -0400 (EDT)
Received: from localhost (localhost []) by (Postfix) with ESMTP id B180266A7B; Wed, 12 Aug 2020 15:50:33 -0400 (EDT)
Date: Wed, 12 Aug 2020 15:50:33 -0400
From: Paul Wouters <>
To: Peter van Dijk <>
In-Reply-To: <>
Message-ID: <>
References: <> <> <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset="US-ASCII"; format="flowed"
Archived-At: <>
Subject: Re: [dns-privacy] TLSA for secure resolver-auth transport (was: Possible use case: Opportunistic encryption for recursive to authoritative)
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 12 Aug 2020 19:50:41 -0000

On Wed, 12 Aug 2020, Peter van Dijk wrote:

>> On Mon, 10 Aug 2020, Peter van Dijk wrote:
>>> On Thu, 2020-08-06 at 23:04 -0400, Paul Wouters wrote:
>>>> In the case of encrypted DNS to authoritative servers, those servers
>>>> obviously can have an cryptographic ID based on FQDN.
>>> This is not obvious. It would be great if it was; but it isn't.
>> Sorry, I did not realise it was not obvious to everyone, so let me
>> clarify:
>> IN TLSA <blob>
>> IN TLSA <blob>
> Yes, that part seems obvious (if we assume the records live with the
> child, which I guess is obvious from your 'national MITM' argument in
> other threads). Many other aspects are not obvious. Some examples
> follow.

It seems regardless of where in the DNS these cryptographic ID's are
placed, that we agree on using the DNS, and thus DNSSEC ?

The "obvious" part only referred to "use DNS records to authenticate
DNS authoritative servers".

The rest of this email is about one of the specific solution proposals.

> Delegation NS records are not signed, so do we stick -those- (or a hash
> of the NSset perhaps?) into DS?

I don't think so. The DS is signed, and following that path, it hardly
matters where the NS records point to. Do you fear that you will receive
bad NS records from the parent, who will than MITM you by relaying
DNSSEC payloads from the real authoritative server, and thus losing privacy
that way? While that is true, there is not much the child can do to
prevent this, other than 1) monitoring and 2) use CNS records so you can
verify the parental glue based on the DS published key. So that at least
ensures it again only comes down to DS record forging the parent would
have to do (see also delegation_only draft)

> Can we find those TLSA records without leaking the names of the name
> servers we are looking for, or do we decide that name server names are
> not a privacy leak?

Hiding nameserver names is pointless, as you will just open up an
encrypted TLS connection to those IP addresses anyway. Any attacker can
do a reverse lookup of that IP. There are commercial entities selling
current and historic NS/WHOIS information. So yes, I don't think you
can gain any privacy by protecting the nameserver names.

> Do we move delegation-revalidation from 'possibly later' to 'always do
> that first', so that we get signed NS records before we look for TLSA?

That could be a local policy? Just like the hardening options in unbound
are now a local policy.

> Do we expect resolvers to issue a couple of TLSA queries per NS before
> getting to the actual end user's question?

Yes. The price per nameserver is pretty small. Especially seeing some
nameservers already verify parental glue at the child zone with DNSSEC.
It could possibly even come in as Additional Data that way to save
an RTT.

> 'Put TLSA records in your zone' is not a protocol. I'm sure we can
> define a protocol that revolves around TLSA, but your description is
> not yet it. That is what I mean by 'this is not obvious'.

We were talking about different things then. Hopefully this email
cleared that up.

>> This uses the unique FQDN of each nameserver's name. You can have
>> multiple TLSA records if you use different keys on some of your
>> nameservers (eg some outsourced to an ANYcloud provider)
> Assuming you use vanity names in the outsourcing (i.e. is
> actually a CloudFlare name server). If you don't use vanity names, the
> scaling mentioned just below comes for free because the outsourced
> operator would own the TLSA records (i.e. IN NS

I don't understand the "vanity name" ? nameervers have unique names,
whether vanity or not, with the exception of any cast servers. We would
hope anycast servers would share the same or a small subset of keys that
can be handles with one or a few TLSA records at the same nameserver

>> Note that this scales with the nameserver. For example by publishing the
>> above, the domain would also have dot/doh published as it
>> is using the same nameservers.
> This, to me, is the main selling point of tying key publication to NS
> names instead of zone names.

Yes, and to circle back to Paul Hoffman's point. I think this is an
essential property. The nameserver operators own the key and they
should be able to change their keys without DS updates by another
party - especially when those nameservers are hosting thousands of

What is then left is the question "is there any information worth
putting into the DS record with respect to encrypted connections
to nameservers for the domain" ?  I think we could have a bit of
information that says "I expect my nameservers have DoT or DoH",
which would allow resolvers to skip attempting this if the bit is
not found. Although a recursive might still decide to try and lookup
TLSA records anyway to support registrars/registries that cannot or
will not allow these DS records.

So as for the solution space, I now think no bits are needed
within the DS record, but it could very well be that someone
still has a good use for it that we want to support.