[dns-privacy] I-D Action: draft-ietf-dprive-dnsodtls-08.txt

Sara Dickinson <sara@sinodun.com> Wed, 03 August 2016 15:26 UTC

Return-Path: <sara@sinodun.com>
X-Original-To: dns-privacy@ietfa.amsl.com
Delivered-To: dns-privacy@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E96FF12DC8B for <dns-privacy@ietfa.amsl.com>; Wed, 3 Aug 2016 08:26:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.601
X-Spam-Level:
X-Spam-Status: No, score=-2.601 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Sp6WQ6Y6uuo1 for <dns-privacy@ietfa.amsl.com>; Wed, 3 Aug 2016 08:26:10 -0700 (PDT)
Received: from shcp01.hosting.zen.net.uk (shcp01.hosting.zen.net.uk [88.98.24.67]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 01DA412D537 for <dns-privacy@ietf.org>; Wed, 3 Aug 2016 08:24:02 -0700 (PDT)
Received: from [62.232.251.194] (port=27320 helo=virgo.sinodun.com) by shcp01.hosting.zen.net.uk with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.87) (envelope-from <sara@sinodun.com>) id 1bUy1L-0001Ga-Hx for dns-privacy@ietf.org; Wed, 03 Aug 2016 16:23:57 +0100
From: Sara Dickinson <sara@sinodun.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Message-Id: <0DAFF409-B7F9-43EB-ACED-555F2A87FB4F@sinodun.com>
Date: Wed, 03 Aug 2016 16:23:50 +0100
To: dns-privacy@ietf.org
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
X-Mailer: Apple Mail (2.3124)
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - shcp01.hosting.zen.net.uk
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - sinodun.com
X-Get-Message-Sender-Via: shcp01.hosting.zen.net.uk: authenticated_id: sara+sinodun.com/only user confirmed/virtual account not confirmed
X-Authenticated-Sender: shcp01.hosting.zen.net.uk: sara@sinodun.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/dns-privacy/QX7cBnRGNSLM6ssK6JuBpuFS0tc>
Subject: [dns-privacy] I-D Action: draft-ietf-dprive-dnsodtls-08.txt
X-BeenThere: dns-privacy@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: <dns-privacy.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dns-privacy>, <mailto:dns-privacy-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dns-privacy/>
List-Post: <mailto:dns-privacy@ietf.org>
List-Help: <mailto:dns-privacy-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dns-privacy>, <mailto:dns-privacy-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 03 Aug 2016 15:26:15 -0000

Hi All, 

I think the recent changes have moved this draft in the right direction, but I agree with other reviewers that it could still become more aligned with the other related drafts. So I’ve done quite a detailed review with 2 main goals in mind:

1) Increase consistency between this draft and RFC7858
2) Align it better with the most recent version of the draft-ietf-dprive-dtls-and-tls-profiles draft

My strong preference would be to see these changes made before the document progressed to WGLC, as I think they increase the overall readability. 

With regard to the separate https://tools.ietf.org/html/draft-wing-dprive-profile-and-msg-flows-01 I’ll re-iterate my question from the Yokohama WG: Is there anything DNS specific in the draft? I don’t recall anything particularly DNS specific. I definitely see value in a draft comparing message flows between TLS and DTLS in general, but my feeling is it might be better progressed though another working group with more (D)TLS experts - TLS or UTA?

On the topic of Experimental vs Standards I support the position that implementation work is necessary for this to be considered Standards Track. In particularI think there are 2 areas that need to be directly informed by implementation experience
1) DTLS Session management 
2) Reference implementation of message size calculation and fallback scenarios


Comments on this draft
---------------------------------

Title/Acronym: 

- My suggestion is to change the title to "Specification for DNS over Datagram Transport Layer Security (DTLS)” for consistency with RFC7858, which is called “Specification for DNS over Transport Layer Security (TLS)“ and then also drop the suggested acronym "(DNSoD, pronounced "dee-eon-sod”)”. In draft-ietf-dprive-dtls-and-tls-profiles we use DNS-over-(D)TLS throughout so calling this mechanism simply DNS-over-DTLS feels more consistent.


Abstract: 

- “AS DNS needs to remain fast” - suggest “As latency is critical for DNS” 


1. Introduction:

- Second bullet point, last paragraph: I think it is currently correct that TCP Fast open is not yet ubiquitous but given the recent significant deployment efforts I’m not sure that will remain true for long.  Also, TFO is now available on Windows, Linux, OS X and (server side) FreeBSD.


1.1 Relationship to TCP Queries and to DNSSEC

- s/DNS over TCP could be protected with TLS/DNS over TCP can be protected with TLS/

- I suggest adding an additional paragraph after the first one here with wording similar to that below. I think this is necessary to avoid the kind of confusion that plagued the requirement to implement DNS-over-TCP for many years, or an intermediate state where only partial privacy is available:
“DNS-over-DTLS alone cannot provide privacy for DNS messages in all circumstances, specifically when the DNS-over-DTLS response is larger than the path MTU. In such situations the DNS server will respond with a truncated response (see Section 4). Therefore DNS clients and servers that implement DNS-over-DTLS MUST also implement DNS-over-TLS in order to provide privacy for clients that desire Strict Privacy as described in [draft-ietf-dprive-dtls-and-tls-profiles].”


3.1 Session Initiation

- “DNSoD MUST run over standard UDP port 853 as defined in Section 7.”
—  Interesting. This is a substantially different statement to that made wrt DNS-over-TCP in Section 3.1 of RFC7858, which allows flexibility run over other ports (but not to use port 53). So this seems inconsistent and also more restrictive. It would be nice to have some justification for this if this is the requirement, otherwise this section could use very similar text to that used in RFC7858 here? 
-- I would like to see a statement that clients and servers MUST NOT use port 853 for clear text UDP messages.

- s/The host should determine if the DNS server/The DNS client should determine if the DNS server/

3.2 DTLS Handshake and Authentication

- s/in the event the DNS server upgrades to support DNSoD/to discover if DNS-over-DTLS service becomes available from the DNS server/

- I’d also like to see some statement about how many concurrent DTLS sessions a client should establish to a particular DNS Server (just one?). 

- Second paragraph: It seems the first 3 sentences here are repeating the motivation for authentication already provided in the Introduction. I suggest replacing them with the text “ The client will then authenticate the server, if required. “

3.3 Established Sessions

- Is there anything additional here that can be said about expected session lifetimes or idle timeouts? Is it expected that clients keep session open indefinitely until some sort of error is encountered or can some sort of reasonable idle timeout be suggested? Is there any expectation about whether the client or server typically terminates a session?

- There is a diagram here of a “Message Flow for Full Handshake Issuing New Session Ticket” but is doesn’t appear to be referenced from the text at all - is there a specific reason to include this flow here (I think it is a standard DTLS message flow)? I suggest either to give it some context or remove it.

4. Performance Considerations 

- The first and third paragraphs overlap with the recommendations already made in Section 11 of the draft-ietf-dprive-dtls-and-tls-profiles draft, so perhaps they can be removed or changed to make any DTLS specific points?

- “Since pipelined responses can arrive out of order” - I think the word ‘pipelined’ was accidentally picked up by re-using the text in RFC7858. For DTLS I think it is more correct to just say “Since responses within a DTLS session can arrive out of order “?

- Fourth Paragraph:
— I’m not sure that the discussion of truncated responses is purely a performance issue, I believe is is a protocol issue so would suggest moving this to a section of its own?

-- Question: What does a server do if the client doesn’t send an EDNS0 option? 

-- "The DNS server must ensure that the DNS response size does not exceed the Path MTU”    s/must/MUST?

-- “If the DNS server's response were to exceed that calculated value, the server sends a response...”  Is there a reason this isn't ‘the server MUST send a response”?

-- I do think there is a DTLS Usage Profile specific point to make related to this, which is that if a client gets a truncated answer over DTLS it could choose to fallback to UDP/TCP instead of TLS _if_ it were using an Opportunistic profile which would result in a kind of ‘hybrid’ security.  I don’t really see any advantage in that if TLS is available, but the last sentence is unclear on this possibility, suggesting only TLS can be used - which is correct for Strict Privacy but perhaps not (at least technically) for Opportunistic. This feel worthy of some discussion. 

6. Usage

The draft-ietf-dprive-dtls-and-tls-profiles draft now includes a fairly detailed comparison of Strict and Opportunistic privacy so I wonder if this section can be replaced with a reference to that document, unless there is anything DTLS specific that needs to be said here?

8. Security Considerations

- "The guidance given in [RFC7525] must be followed to avoid attacks on DTLS.”   s/must/MUST or SHOULD?

- “For servers with no connection history…” I think this sentence can also be removed since it is more fully covered in the draft-ietf-dprive-dtls-and-tls-profiles draft.

- “Once a DNSoD client has established
   a security association with a particular DNS server, and outstanding
   normal DNS queries with that server (if any) have been received, the
   DNSoD client MUST ignore any subsequent normal DNS responses from
   that server, as all subsequent responses should be encrypted.”
I think this text is a hangover from the earlier draft when port 53 was used. If clarification is added in section 3.1 then I think clear text and DTLS should only ever happen on separate ports when communicating with a given server?


Minor editorial nits:

- There are several places throughout the document where a space separates a reference from a following punctuation mark (e.g. end of the first and last sentences of the Introduction).
- Abstract: Second paragraph, first sentence:  This sentence starts and ends with very similar phrases which I’m not sure are both needed?
- Introduction: Missing ‘The’ at the start of last sentence of first paragraph?
- Section 3.2: First sentence:  s/with DTLS handshake/with the DTLS handshake/
- Section 3.3: s/When a user of DTLS wishes to send an DNS message, it delivers it to the DTLS implementation/When a user of DTLS wishes to send a DNS message, the data is delivered to the DTLS implementation/
- Sestion 3.4: s/DNSod client and server MUST/DNS-over-DTLS clients and servers MUST/
- Section 3.4: s/DTLS session is terminated/A DTLS session is terminated/
- Section 4:    s/To reduce number of/To reduce the number of/
- Section 4:    s/DNS client and server can use raw public keys [] or/DNS clients and servers can use raw public keys [] and/
- Section 4:    s/Path MTU MUST be greater than equal to/Path MTU MUST be greater than or equal to/
- Section 5:    s/DTLS client receives authenticated/DTLS client receives an authenticated/

Regards

Sara.