Re: [TLS] Eric Rescorla's Discuss on draft-ietf-tls-dnssec-chain-extension-06: (with DISCUSS and COMMENT)

Paul Wouters <> Mon, 26 February 2018 14:27 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 3B37112D7F0; Mon, 26 Feb 2018 06:27:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.01
X-Spam-Status: No, score=-2.01 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, T_RP_MATCHES_RCVD=-0.01] 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 ukI9f729S0ND; Mon, 26 Feb 2018 06:27:13 -0800 (PST)
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 7BAA31242F5; Mon, 26 Feb 2018 06:27:13 -0800 (PST)
Received: from localhost (localhost [IPv6:::1]) by (Postfix) with ESMTP id 3zqkg11hPqz3Jb; Mon, 26 Feb 2018 15:27:09 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=default; t=1519655229; bh=KKstflm6oIOxOyw5bfdIw0D5tJg/LXv4x4qVfjCTb3c=; h=Date:From:To:cc:Subject:In-Reply-To:References; b=jJ6jRsmvniv6NnHCsq7/znfbvNC/yvFfCpRb6krfCOEaeV2iTKGqjZGJ5C5KFERYh Lw0lKsW4xR97pmY0fdi7Ee4hBa3ck3pik+yzM1JjtZ5UIh7wJR6+2Fu8KvIOEL1cda v9ZGu7kz35N+IX7nzVODbNE1h+4/lg9XlMGKAzkE=
X-Virus-Scanned: amavisd-new at
Received: from ([IPv6:::1]) by localhost ( [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id PwOE2YSbr7ti; Mon, 26 Feb 2018 15:27:01 +0100 (CET)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS; Mon, 26 Feb 2018 15:27:00 +0100 (CET)
Received: by (Postfix, from userid 1000) id ECCC92BA295; Mon, 26 Feb 2018 09:26:59 -0500 (EST)
DKIM-Filter: OpenDKIM Filter v2.11.0 ECCC92BA295
Received: from localhost (localhost []) by (Postfix) with ESMTP id DF79E40D7001; Mon, 26 Feb 2018 09:26:59 -0500 (EST)
Date: Mon, 26 Feb 2018 09:26:59 -0500
From: Paul Wouters <>
To: Shumon Huque <>
cc: Eric Rescorla <>, TLS WG <>,, The IESG <>, tls-chairs <>
In-Reply-To: <>
Message-ID: <>
References: <> <> <> <> <> <>
User-Agent: Alpine 2.21 (LRH 202 2017-01-01)
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <>
Subject: Re: [TLS] Eric Rescorla's Discuss on draft-ietf-tls-dnssec-chain-extension-06: (with DISCUSS and COMMENT)
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 26 Feb 2018 14:27:17 -0000

On Thu, 22 Feb 2018, Shumon Huque wrote:

> On Wed, Feb 21, 2018 at 2:48 PM, Paul Wouters <> wrote:
>       On Wed, 21 Feb 2018, Shumon Huque wrote:
>             Okay, got it. For people that have already implemented this, I think
>             there has been an implicit understanding that the format of the chain
>             data is a sequence of concatenated wire format RRs exactly as they appear
>             in a DNS message section
>       Note, I would not call it "sequence of concatenated wire format RRs", as
>       it is simply the wireformat of a DNS message.
>       The fact that some parts
>       are concatenated RR's is just part of the wireformat of the DNS reply
>       message. That is, this isn't introducing some new form of concatenated
>       content - it is _just_ a regular DNS wire format message, and the
>       document should not go deeper into its explanation.
> It would _not_ be correct to say that this is a "DNS wire format message" - that 
> would mean there is a DNS header section with flags and response codes, 
> and other sections. The chain data structure as currently specified really is 
> concatenated wire-format RRs (as they appear _within_ a DNS message 
> _section_). Let me know if that is unclear in the draft (or my proposed edits).

So it was decided to not use a full DNS packet format? And then since you
miss the structure of the Answer Section and Additional/Authority
Section, you require the "answer RR's" come first where you basically
emulate an Answer Section?

Isn't that an indication that we should really use the wireformat of an
entire DNS message here? Maybe some DNS library/tools people can chime
in here to tell us if this matters much to them (assuming they are
adding support for creating/consuming these chains of RRsets in wire

I am personally a little sad we cannot have a dig +chainquery command
where we write out the entire answer packet format to a blob, to be loaded by
the TLS server. And where a TLS client cannot just hand over the blob
"as if it came in as a reply from a DNS server" to its DNS/cache
receiving code path.

> I recall at one point way back there was a discussion about whether the chain
> data should just be a fully formed DNS message, but I don't believe that idea
> had much support in the working group (personally I would have been fine with 
> that choice too, if it did have support).

Do you remember why not? I'll see about checking the archives, but to me
the hint that you are losing information and require some kind of
ordering seems to suggest there is a need for using the full DNS message
reply format.

> There is some residual wording in the draft about ordering of CNAMEs etc in
> the answer records part. Assuming the WG agrees, I am fine with relaxing
> that requirement - that ended up in there because although there is no defined
> ordering of RRs within a DNS message section, as a practical matter CNAMEs
> are almost always ordered since there are some DNS queriers that get confused 
> otherwise. This is a new protocol though, so we can be more faithful to the DNS 
> spec.

I would prefer the residual wording to go away. Any hints at order being
important should be squashed.

>       I don't think getting unrelated DNSSEC records would be an issue. TLS
>       has its maximum sizes for the handshake. In fact, it could allow the
>       extension to have some useful data in the case of MX or SRV.  (and could
>       be a feature to build a nice resolver over TLS using 1 tor circuit).
> The draft currently doesn't address the MX or SRV use case. I suggest
> that we tackle that in a future version.

Jus make sure the document doesn't forbid any such data, and allow the
client to ignore these or put them in the cache as it sees fit.

>       I'm also not sure about the talking of unsigned CNAME records from
>       DNAME. The above pseudo code (extended with special cases) should be
>       in some DNS library, and that library will know what records to expect
>       unsigned which are proven by the DNAME (or wildcard) synthesis and knows
>       when/if to add it to the validated cache. I don't think that should be
>       explained in this RFC at all. The DNS implementation does not need
>       to be specified in this document and it should just focus on saying
>       that "the DNS message response is validated and upon validation the
>       content can be considered DANE validated".
> Where we ended up, is that WG participants asked for some level of DNSSEC
> detail to be included in this doc.

Again, that will only lead to bad implementations. There should be no
need to update this document once something like ANAME, ALIAS or ZNAME
is introduced to the DNS. So you should not talk about these things at
all. TLS client should use a dns library that knows these things, or if
they want to write one from scratch, these implementors should look at
the DNS RFCs and not this RFC for guidance on how the DNS protocol