draft-ietf-dprive-dnsodtls-10.txt   draft-ietf-dprive-dnsodtls-11.txt 
DPRIVE T. Reddy DPRIVE T. Reddy
Internet-Draft D. Wing Internet-Draft D. Wing
Intended status: Experimental P. Patil Intended status: Experimental P. Patil
Expires: February 17, 2017 Cisco Expires: March 5, 2017 Cisco
August 16, 2016 September 1, 2016
Specification for DNS over Datagram Transport Layer Security (DTLS) Specification for DNS over Datagram Transport Layer Security (DTLS)
draft-ietf-dprive-dnsodtls-10 draft-ietf-dprive-dnsodtls-11
Abstract Abstract
DNS queries and responses are visible to network elements on the path DNS queries and responses are visible to network elements on the path
between the DNS client and its server. These queries and responses between the DNS client and its server. These queries and responses
can contain privacy-sensitive information which is valuable to can contain privacy-sensitive information which is valuable to
protect. An active attacker can send bogus responses causing protect.
misdirection of the subsequent connection.
This document proposes the use of Datagram Transport Layer Security This document proposes the use of Datagram Transport Layer Security
(DTLS) for DNS, to protect against passive listeners and certain (DTLS) for DNS, to protect against passive listeners and certain
active attacks. As latency is critical for DNS, this proposal also active attacks. As latency is critical for DNS, this proposal also
discusses mechanisms to reduce DTLS round trips and reduce DTLS discusses mechanisms to reduce DTLS round trips and reduce DTLS
handshake size. The proposed mechanism runs over port 853. handshake size. The proposed mechanism runs over port 853.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 41 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on February 17, 2017. This Internet-Draft will expire on March 5, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 22 skipping to change at page 2, line 21
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Relationship to TCP Queries and to DNSSEC . . . . . . . . 3 1.1. Relationship to TCP Queries and to DNSSEC . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Establishing and Managing DNS-over-DTLS Sessions . . . . . . 4 3. Establishing and Managing DNS-over-DTLS Sessions . . . . . . 4
3.1. Session Initiation . . . . . . . . . . . . . . . . . . . 4 3.1. Session Initiation . . . . . . . . . . . . . . . . . . . 4
3.2. DTLS Handshake and Authentication . . . . . . . . . . . . 4 3.2. DTLS Handshake and Authentication . . . . . . . . . . . . 4
3.3. Established Sessions . . . . . . . . . . . . . . . . . . 5 3.3. Established Sessions . . . . . . . . . . . . . . . . . . 5
4. Performance Considerations . . . . . . . . . . . . . . . . . 7 4. Performance Considerations . . . . . . . . . . . . . . . . . 7
5. PMTU issues . . . . . . . . . . . . . . . . . . . . . . . . . 8 5. PMTU issues . . . . . . . . . . . . . . . . . . . . . . . . . 7
6. Anycast . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 6. Anycast . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7. Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 7. Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
9. Security Considerations . . . . . . . . . . . . . . . . . . . 9 9. Security Considerations . . . . . . . . . . . . . . . . . . . 9
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
11.1. Normative References . . . . . . . . . . . . . . . . . . 10 11.1. Normative References . . . . . . . . . . . . . . . . . . 10
11.2. Informative References . . . . . . . . . . . . . . . . . 11 11.2. Informative References . . . . . . . . . . . . . . . . . 11
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12
1. Introduction 1. Introduction
The Domain Name System is specified in [RFC1034] and [RFC1035]. DNS The Domain Name System is specified in [RFC1034] and [RFC1035]. DNS
queries and responses are normally exchanged unencrypted and are thus queries and responses are normally exchanged unencrypted and are thus
vulnerable to eavesdropping. Such eavesdropping can result in an vulnerable to eavesdropping. Such eavesdropping can result in an
undesired entity learning domains that a host wishes to access, thus undesired entity learning domains that a host wishes to access, thus
resulting in privacy leakage. The DNS privacy problem is further resulting in privacy leakage. The DNS privacy problem is further
discussed in [RFC7626]. discussed in [RFC7626].
Active attackers have long been successful at injecting bogus
responses, causing cache poisoning and causing misdirection of the
subsequent connection (if attacking A or AAAA records). A popular
mitigation against that attack is to use ephemeral and random source
ports for DNS queries [RFC5452].
This document defines DNS over DTLS (DNS-over-DTLS) which provides This document defines DNS over DTLS (DNS-over-DTLS) which provides
confidential DNS communication between stub resolvers and recursive confidential DNS communication between stub resolvers and recursive
resolvers, stub resolvers and forwarders, forwarders and recursive resolvers, stub resolvers and forwarders, forwarders and recursive
resolvers. DNS-over-DTLS puts an additional computational load on resolvers. DNS-over-DTLS puts an additional computational load on
servers. The largest gain for privacy is to protect the servers. The largest gain for privacy is to protect the
communication between the DNS client (the end user's machine) and its communication between the DNS client (the end user's machine) and its
caching resolver. DNS-over-DTLS might work equally between recursive caching resolver. DNS-over-DTLS might work equally between recursive
clients and authoritative servers, but this application of the clients and authoritative servers, but this application of the
protocol is out of scope for the DNS PRIVate Exchange (DPRIVE) protocol is out of scope for the DNS PRIVate Exchange (DPRIVE)
Working Group per its current charter. This document does not change Working Group per its current charter. This document does not change
skipping to change at page 3, line 22 skipping to change at page 3, line 15
The motivations for proposing DNS-over-DTLS are that The motivations for proposing DNS-over-DTLS are that
o TCP suffers from network head-of-line blocking, where the loss of o TCP suffers from network head-of-line blocking, where the loss of
a packet causes all other TCP segments to not be delivered to the a packet causes all other TCP segments to not be delivered to the
application until the lost packet is re-transmitted. DNS-over- application until the lost packet is re-transmitted. DNS-over-
DTLS, because it uses UDP, does not suffer from network head-of- DTLS, because it uses UDP, does not suffer from network head-of-
line blocking. line blocking.
o DTLS session resumption consumes 1 round trip whereas TLS session o DTLS session resumption consumes 1 round trip whereas TLS session
resumption can start only after TCP handshake is complete. resumption can start only after TCP handshake is complete.
However TCP Fast Open [RFC7413] can eliminate 1-RTT in the latter However, with TCP Fast Open [RFC7413], the implementation can
case. achieve the same RTT efficiency as DTLS.
Note: DNS-over-DTLS is an experimental update to DNS, and the
experiment will be concluded when the specification is evaluated
through implementations and interoperability testing.
1.1. Relationship to TCP Queries and to DNSSEC 1.1. Relationship to TCP Queries and to DNSSEC
DNS queries can be sent over UDP or TCP. The scope of this document, DNS queries can be sent over UDP or TCP. The scope of this document,
however, is only UDP. DNS over TCP can be protected with TLS, as however, is only UDP. DNS over TCP can be protected with TLS, as
described in [RFC7858]. DNS-over-DTLS alone cannot provide privacy described in [RFC7858]. DNS-over-DTLS alone cannot provide privacy
for DNS messages in all circumstances, specifically when the DTLS for DNS messages in all circumstances, specifically when the DTLS
record size is larger than the path MTU. In such situations the DNS record size is larger than the path MTU. In such situations the DNS
server will respond with a truncated response (see Section 5). server will respond with a truncated response (see Section 5).
Therefore DNS clients and servers that implement DNS-over-DTLS MUST Therefore DNS clients and servers that implement DNS-over-DTLS MUST
skipping to change at page 4, line 41 skipping to change at page 4, line 41
the DNS server, but such probing SHOULD NOT be done more frequently the DNS server, but such probing SHOULD NOT be done more frequently
than every 24 hours and MUST NOT be done more frequently than every than every 24 hours and MUST NOT be done more frequently than every
15 minutes. This mechanism requires no additional signaling between 15 minutes. This mechanism requires no additional signaling between
the client and server. the client and server.
DNS clients and servers MUST NOT use port 853 to transport cleartext DNS clients and servers MUST NOT use port 853 to transport cleartext
DNS messages. DNS clients MUST NOT send and DNS servers MUST NOT DNS messages. DNS clients MUST NOT send and DNS servers MUST NOT
respond to cleartext DNS messages on any port used for DNS-over-DTLS respond to cleartext DNS messages on any port used for DNS-over-DTLS
(including, for example, after a failed DTLS handshake). There are (including, for example, after a failed DTLS handshake). There are
significant security issues in mixing protected and unprotected data, significant security issues in mixing protected and unprotected data,
UDP connections on a port designated by a given server for DNS-over- therefore UDP connections on a port designated by a given server for
DTLS are reserved purely for encrypted communications. DNS-over-DTLS are reserved purely for encrypted communications.
3.2. DTLS Handshake and Authentication 3.2. DTLS Handshake and Authentication
Once the DNS client succeeds in receiving HelloVerifyRequest from the DNS client initiates DTLS handshake as described in [RFC6347],
server via UDP on the well-known port for DNS-over-DTLS, it proceeds following the best practices specified in [RFC7525]. After DTLS
with the DTLS handshake as described in [RFC6347], following the best negotiation completes, if the DTLS handshake succeeds according to
practices specified in [RFC7525]. [RFC6347] the connection will be encrypted and is now protected from
eavesdropping.
DNS privacy requires encrypting the query (and response) from passive DNS privacy requires encrypting the query (and response) from passive
attacks. Such encryption typically provides integrity protection as attacks. Such encryption typically provides integrity protection as
a side-effect, which means on-path attackers cannot simply inject a side-effect, which means on-path attackers cannot simply inject
bogus DNS responses. However, to provide stronger protection from bogus DNS responses. However, to provide stronger protection from
active attackers pretending to be the server, the server itself needs active attackers pretending to be the server, the server itself needs
to be authenticated. To authenticate the server providing DNS to be authenticated. To authenticate the server providing DNS
privacy, DNS client MUST use the authenication mechanisms discussed privacy, DNS client MUST use the authenication mechanisms discussed
in [I-D.ietf-dprive-dtls-and-tls-profiles]. This document does not in [I-D.ietf-dprive-dtls-and-tls-profiles]. This document does not
propose new ideas for authentication. propose new ideas for authentication.
After DTLS negotiation completes, the connection will be encrypted
and is now protected from eavesdropping.
3.3. Established Sessions 3.3. Established Sessions
In DTLS, all data is protected using the same record encoding and In DTLS, all data is protected using the same record encoding and
mechanisms. When the mechanism described in this document is in mechanisms. When the mechanism described in this document is in
effect, DNS messages are encrypted using the standard DTLS record effect, DNS messages are encrypted using the standard DTLS record
encoding. When a user of DTLS wishes to send a DNS message, the data encoding. When a user of DTLS wishes to send a DNS message, the data
is delivered to the DTLS implementation as an ordinary application is delivered to the DTLS implementation as an ordinary application
data write (e.g., SSL_write()). A single DTLS session can be used to data write (e.g., SSL_write()). A single DTLS session can be used to
send multiple DNS requests and receive multiple DNS responses. send multiple DNS requests and receive multiple DNS responses.
skipping to change at page 5, line 38 skipping to change at page 5, line 38
any given client/server interaction there SHOULD be no more than one any given client/server interaction there SHOULD be no more than one
DTLS session. Similarly, servers MAY impose limits on the number of DTLS session. Similarly, servers MAY impose limits on the number of
concurrent DTLS sessions being handled for any particular client IP concurrent DTLS sessions being handled for any particular client IP
address or subnet. These limits SHOULD be much looser than the address or subnet. These limits SHOULD be much looser than the
client guidelines above, because the server does not know, for client guidelines above, because the server does not know, for
example, if a client IP address belongs to a single client, is example, if a client IP address belongs to a single client, is
multiple resolvers on a single machine, or is multiple clients behind multiple resolvers on a single machine, or is multiple clients behind
a device performing Network Address Translation (NAT). a device performing Network Address Translation (NAT).
In between normal DNS traffic while the communication to the DNS In between normal DNS traffic while the communication to the DNS
server is quiescent, the DNS client may want to probe the server server is quiescent, the DNS client MAY want to probe the server
using DTLS heartbeat [RFC6520] to ensure it has maintained using DTLS heartbeat [RFC6520] to ensure it has maintained
cryptographic state. Such probes can also keep alive firewall or NAT cryptographic state. Such probes can also keep alive firewall or NAT
bindings. This probing reduces the frequency of needing a new bindings. This probing reduces the frequency of needing a new
handshake when a DNS query needs to be resolved, improving the user handshake when a DNS query needs to be resolved, improving the user
experience at the cost of bandwidth and processing time. experience at the cost of bandwidth and processing time.
A DTLS session is terminated by the receipt of an authenticated A DTLS session is terminated by the receipt of an authenticated
message that closes the connection (e.g., a DTLS fatal alert). If message that closes the connection (e.g., a DTLS fatal alert). If
the server has lost state, a DTLS handshake needs to be initiated the server has lost state, a DTLS handshake needs to be initiated
with the server. For the client, state should be destroyed when with the server. For the client, state should be destroyed when
skipping to change at page 7, line 48 skipping to change at page 7, line 15
4. Performance Considerations 4. Performance Considerations
DTLS protocol profile for DNS-over-DTLS is discussed in Section 11 of DTLS protocol profile for DNS-over-DTLS is discussed in Section 11 of
[I-D.ietf-dprive-dtls-and-tls-profiles]. To reduce the number of [I-D.ietf-dprive-dtls-and-tls-profiles]. To reduce the number of
octets of the DTLS handshake, especially the size of the certificate octets of the DTLS handshake, especially the size of the certificate
in the ServerHello (which can be several kilobytes), DNS clients and in the ServerHello (which can be several kilobytes), DNS clients and
servers can use raw public keys [RFC7250] or Cached Information servers can use raw public keys [RFC7250] or Cached Information
Extension [I-D.ietf-tls-cached-info]. Cached Information Extension Extension [I-D.ietf-tls-cached-info]. Cached Information Extension
avoids transmitting the server's certificate and certificate chain if avoids transmitting the server's certificate and certificate chain if
the client has cached that information from a previous TLS handshake. the client has cached that information from a previous TLS handshake.
TLS False Start [I-D.ietf-tls-falsestart] which reduces round-trips TLS False Start [I-D.ietf-tls-falsestart] can reduce round-trips by
by allowing the TLS second flight of messages (ChangeCipherSpec) to allowing the TLS second flight of messages (ChangeCipherSpec) to also
also contain the (encrypted) DNS query. contain the (encrypted) DNS query.
It is highly advantageous to avoid server-side DTLS state and reduce It is highly advantageous to avoid server-side DTLS state and reduce
the number of new DTLS sessions on the server which can be done with the number of new DTLS sessions on the server which can be done with
TLS Session Resumption without server state [RFC5077]. This also TLS Session Resumption without server state [RFC5077]. This also
eliminates a round-trip for subsequent DNS-over-DTLS queries, because eliminates a round-trip for subsequent DNS-over-DTLS queries, because
with [RFC5077] the DTLS session does not need to be re-established. with [RFC5077] the DTLS session does not need to be re-established.
Since responses within a DTLS session can arrive out of order, Since responses within a DTLS session can arrive out of order,
clients MUST match responses to outstanding queries on the same DTLS clients MUST match responses to outstanding queries on the same DTLS
connection using the DNS Message ID. If the response contains a connection using the DNS Message ID. If the response contains a
skipping to change at page 9, line 14 skipping to change at page 8, line 27
6. Anycast 6. Anycast
DNS servers are often configured with anycast addresses. While the DNS servers are often configured with anycast addresses. While the
network is stable, packets transmitted from a particular source to an network is stable, packets transmitted from a particular source to an
anycast address will reach the same server that has the cryptographic anycast address will reach the same server that has the cryptographic
context from the DNS-over-DTLS handshake. But when the network context from the DNS-over-DTLS handshake. But when the network
configuration changes, a DNS-over-DTLS packet can be received by a configuration changes, a DNS-over-DTLS packet can be received by a
server that does not have the necessary cryptographic context. To server that does not have the necessary cryptographic context. To
encourage the client to initiate a new DTLS handshake, DNS servers encourage the client to initiate a new DTLS handshake, DNS servers
SHOULD generate a DTLS Alert message in response to receiving a DTLS SHOULD generate a DTLS fatal alert message in response to receiving a
packet for which the server does not have any cryptographic context. DTLS packet for which the server does not have any cryptographic
Upon receipt of an un-authenicated DTLS alert, the DTLS client context. Upon receipt of an un-authenicated DTLS fatal alert, the
validates the Alert is within the replay window (Section 4.1.2.6 of DTLS client validates the fatal alert is within the replay window
[RFC6347]). It is difficult for the DTLS client to validate that the (Section 4.1.2.6 of [RFC6347]). It is difficult for the DTLS client
DTLS alert was generated by the DTLS server in response to a request to validate that the DTLS fatal alert was generated by the DTLS
or was generated by an on- or off-path attacker. Thus, upon receipt server in response to a request or was generated by an on- or off-
of an in-window DTLS Alert, the client SHOULD continue re- path attacker. Thus, upon receipt of an in-window DTLS fatal alert,
transmitting the DTLS packet (in the event the Alert was spoofed), the client SHOULD continue re-transmitting the DTLS packet (in the
and at the same time it SHOULD initiate DTLS session resumption. event the fatal alert was spoofed), and at the same time it SHOULD
When the DTLS client receives an authenticated DNS response from one initiate DTLS session resumption. When the DTLS client receives an
of those DTLS sessions, the other DTLS session should be terminated. authenticated DNS response from one of those DTLS sessions, the other
DTLS session should be terminated.
7. Usage 7. Usage
Two Usage Profiles, Strict and Opportunistic are explained in Two Usage Profiles, Strict and Opportunistic are explained in
[I-D.ietf-dprive-dtls-and-tls-profiles]. Using encrypted DNS [I-D.ietf-dprive-dtls-and-tls-profiles]. Using encrypted DNS
messages with an authenticated server is most preferred, encrypted messages with an authenticated server is most preferred, encrypted
DNS messages with an unauthenticated server is next preferred, and DNS messages with an unauthenticated server is next preferred, and
plain text DNS messages is least preferred. plain text DNS messages is least preferred.
8. IANA Considerations 8. IANA Considerations
skipping to change at page 10, line 24 skipping to change at page 9, line 43
handshakes from a certain subnet or more advanced DoS/DDoS techniques handshakes from a certain subnet or more advanced DoS/DDoS techniques
beyond the scope of this paper. beyond the scope of this paper.
10. Acknowledgements 10. Acknowledgements
Thanks to Phil Hedrick for his review comments on TCP and to Josh Thanks to Phil Hedrick for his review comments on TCP and to Josh
Littlefield for pointing out DNS-over-DTLS load on busy servers (most Littlefield for pointing out DNS-over-DTLS load on busy servers (most
notably root servers). The authors would like to thank Simon notably root servers). The authors would like to thank Simon
Josefsson, Daniel Kahn Gillmor, Bob Harold, Ilari Liusvaara, Sara Josefsson, Daniel Kahn Gillmor, Bob Harold, Ilari Liusvaara, Sara
Dickinson, Christian Huitema, Stephane Bortzmeyer, Alexander Dickinson, Christian Huitema, Stephane Bortzmeyer, Alexander
Mayrhofer and Geoff Huston for discussions and comments on the design Mayrhofer, Allison Mankin and Geoff Huston for discussions and
of DNS-over-DTLS. The authors would like to give special thanks to comments on the design of DNS-over-DTLS. The authors would like to
Sara Dickinson for her help. give special thanks to Sara Dickinson for her help.
11. References 11. References
11.1. Normative References 11.1. Normative References
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", [RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
<http://www.rfc-editor.org/info/rfc1034>. <http://www.rfc-editor.org/info/rfc1034>.
[RFC1035] Mockapetris, P., "Domain names - implementation and [RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987, <http://www.rfc-editor.org/info/rfc1035>. November 1987, <http://www.rfc-editor.org/info/rfc1035>.
 End of changes. 16 change blocks. 
48 lines changed or deleted 43 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/