Skip to main content

DNS over DTLS (DNSoD)
draft-wing-dnsop-dnsodtls-00

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Replaced".
Authors Tirumaleswar Reddy.K , Dan Wing , Prashanth Patil
Last updated 2014-04-22
Replaced by draft-wing-dprive-dnsodtls
RFC stream (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-wing-dnsop-dnsodtls-00
DNSOP Working Group                                             T. Reddy
Internet-Draft                                                   D. Wing
Intended status: Standards Track                                P. Patil
Expires: October 24, 2014                                          Cisco
                                                          April 22, 2014

                         DNS over DTLS (DNSoD)
                      draft-wing-dnsop-dnsodtls-00

Abstract

   DNS queries and responses are visible to network elements on the path
   between the DNS client and its server.  These queries and responses
   can contain privacy-sensitive information which is valuable to
   protect.  An active attacker can send bogus responses causing
   misdirection of the subsequent connection.

   To counter passive listening and active attacks, this document
   proposes the use of Datagram Transport Layer Security (DTLS) for DNS,
   to protect against passive listeners and certain active attacks.  As
   DNS needs to remain fast, this proposal also discusses mechanisms to
   reduce DTLS round trips and reduce DTLS handshake size.  The proposed
   mechanism runs over the default DNS port and can also run over an
   alternate port.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on October 24, 2014.

Reddy, et al.           Expires October 24, 2014                [Page 1]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Relationship to TCP Queries and to DNSSEC . . . . . . . . . .   3
   3.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.  Incremental Deployment  . . . . . . . . . . . . . . . . . . .   3
   5.  Demultiplexing, Polling, Port Usage, and Discovery  . . . . .   3
   6.  Performance Considerations  . . . . . . . . . . . . . . . . .   4
   7.  In-Band Signaling . . . . . . . . . . . . . . . . . . . . . .   6
   8.  Authenticating a DNS Server . . . . . . . . . . . . . . . . .   6
   9.  Established sessions  . . . . . . . . . . . . . . . . . . . .   7
   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
   11. Security Considerations . . . . . . . . . . . . . . . . . . .   8
   12. Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   9
   13. References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
     13.1.  Normative References . . . . . . . . . . . . . . . . . .   9
     13.2.  Informative References . . . . . . . . . . . . . . . . .  10
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  10

1.  Introduction

   The Domain Name System is specified in [RFC1034] and [RFC1035].  DNS
   queries and responses are normally exchanged unencrypted and are thus
   vulnerable to eavesdropping.  Such eavesdropping can result in an
   undesired entity learning domains that a host wishes to access, thus
   resulting in privacy leakage.  DNS privacy problem is further
   discussed in [I-D.bortzmeyer-dnsop-dns-privacy].

   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.

Reddy, et al.           Expires October 24, 2014                [Page 2]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

   This document defines DNS over DTLS (DNSoD, pronounced "dee-enn-sod")
   which provides confidential DNS communication for stub resolvers,
   recursive resolvers, iterative resolvers and authoritative servers.

2.  Relationship to TCP Queries and to DNSSEC

   DNS queries can be sent over UDP or TCP.  This document scope is only
   UDP.  DNS over TCP could be protected with TLS, such as described by
   [I-D.hzhwm-start-tls-for-dns].  Alternatively, a shim protocol could
   be defined between DTLS and DNS, allowing large responses to be sent
   over DTLS itself, see Section 6.

   DNS Security Extensions (DNSSEC [RFC4033]) provides object integrity
   of DNS resource records, allowing end-users (or their resolver) to
   verify legitimacy of responses.  However, DNSSEC does not protect
   privacy of DNS requests or responses.  DNSoD works in conjunction
   with DNSSEC, but DNSoD does not replace the need or value of DNSSEC.

3.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   [RFC2119].

4.  Incremental Deployment

   DNSoD can be deployed incrementally by the Internet Service Provider
   or as an Internet service.

   If the ISP's DNS resolver supports DNSoD, then DNS queries are
   protected from passive listening and from many active attacks along
   that path.

   DNSoD can be offered as an Internet service, and a stub resolver or
   DNS resolver can be configured to point to that DNSoD server (rather
   than to the ISP-provided DNS server).

5.  Demultiplexing, Polling, Port Usage, and Discovery

   [Note - This section requires further discussion]

   Many modern operating systems already detect if a web proxy is
   interfering with Internet communications, using proprietary
   mechanisms that are out of scope of this document.  After that
   mechanism has run (and detected Internet connectivity is working),
   the DNSoD procedure described in this document should commence.  This
   timing avoids delays in joining the network (and displaying an icon

Reddy, et al.           Expires October 24, 2014                [Page 3]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

   indicating successful Internet connection), at the risk that those
   initial DNS queries will be sent without protection afforded by
   DNSoD.

   DNSoD can run over standard UDP port 53 as defined in [RFC1035].  A
   DNS client or server that does not implement this specification will
   not respond to the incoming DTLS packets because they don't parse as
   DNS packets (the DNS Opcode would be 15, which is undefined).  A DNS
   client or server that does implement this specification can
   demultiplex DNS and DTLS packets by examining the third octet.  For
   TLS 1.2, which is what is defined by this specification, a DTLS
   packet will contain 253 in the third octet, whereas a DNS packet will
   never contain 253 in the third octet.

   There has been some concern with sending DNSoD traffic over the same
   port as normal, un-encrypted DNS traffic.  The intent of this section
   is to show that DNSoD could successfully be sent over port 53.
   Further analysis and testing on the Internet may be valuable to
   determine if multiplexing on port 53, using a separate port, or some
   fallback between a separate port and port 53 brings the most success.

   After performing the above steps, the host should determine if the
   DNS server supports DNSoD by sending a DTLS ClientHello message.  A
   DNS server that does not support DNSoD will not respond to
   ClientHello messages sent by the client, because they are not valid
   DNS requests (specifically, the DNS Opcode is invalid).  The client
   MUST use timer values defined in Section 4.2.4.1 of [RFC6347] for
   retransmission of ClientHello message and if no response is received
   from the DNS server.  After 15 seconds, it MUST cease attempts to re-
   transmit its ClientHello.  Thereafter, the client MAY repeat that
   procedure in the event the DNS server has been upgraded to support
   DNSoD, but such probing SHOULD NOT be done more frequently than every
   24 hours and MUST NOT be done more frequently than every 15 minutes.
   This mechanism requires no additional signaling between the client
   and server.

6.  Performance Considerations

   To reduce number of octets of the DTLS handshake, especially the size
   of the certificate in the ServerHello (which can be several
   kilobytes), we should consider using plain public keys
   [I-D.ietf-tls-oob-pubkey].  Considering that to authorize a certain
   DNS server the client already needs explicit configuration of the DNS
   servers it trusts, maybe the public key configuration problem is
   really no worse than the configuration problem of those whitelisted
   certificates?

Reddy, et al.           Expires October 24, 2014                [Page 4]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

   Multiple DNS queries can be sent over a single DNSoD security
   association.  The existing QueryID allows multiple requests and
   responses to be interleaved in whatever order they can be fulfilled
   by the DNS server.  This means DNSoD reduces the consumption of UDP
   port numbers, and because DTLS protects the communication between the
   DNS client and its server, the resolver SHOULD NOT use random
   ephemeral source ports (Section 9.2 of [RFC5452]) because such source
   port use would incur additional, unnecessary DTLS load on the DNSoD
   server.

   It is highly advantageous to avoid server-side DTLS state and reduce
   the number of new DTLS security associations on the server which can
   be done with [RFC5077].  This also eliminates a round-trip for
   subsequent DNSoD queries, because with [RFC5077] the DTLS security
   association does not need to be re-established.  Note: with the shim
   (described below) perhaps we could send the query and the restore
   server-side state in the ClientHello packet.

   Compared to normal DNS, DTLS adds at least 13 octets of header, plus
   cipher and authentication overhead to every query and every response.
   This reduces the size of the DNS payload that can be carried.
   Certain DNS responses are large (e.g., many AAAA records, TXT, SRV)
   and don't fit into a single UDP packet, causing a partial response
   with the truncation (TC) bit set.  The client is then expected to
   repeat the query over TCP, which causes additional name resolution
   delay.  We have considered two ideas, one that reduces the need to
   switch to TCP and another that eliminates the need to switch to TCP:

   o  Path MTU can be determined using Packetization Layer Path MTU
      Discovery [RFC4821] using DTLS heartbeat.  [RFC4821] does not rely
      on ICMP or ICMPv6, and would not affect DNS state or
      responsiveness on the client or server.  However, it would be
      additional chattiness.

   o  To avoid IP fragmentation, DTLS handshake messages incorporate
      their own fragment offset and fragment length.  We might utilize a
      similar mechanism in a shim layer between DTLS and DNS, so that
      large DNS messages could be carried without causing IP
      fragmentation.

   DNSoD puts an additional computational load on servers.  The largest
   gain for privacy is to protect the communication between the DNS
   client (the end user's machine) and its caching resolver.  Because of
   the load imposed, and because of the infrequency of queries to root
   servers means the DTLS overhead is unlikely to be amoritized over the
   DNS queries sent over that DTLS connection, implementing DNSoD on
   root servers is NOT RECOMMENDED.

Reddy, et al.           Expires October 24, 2014                [Page 5]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

7.  In-Band Signaling

   Probing with DTLS ClientHello packets to determine if a DNS server
   supports DNSoD is somewhat inefficient, as it requires multiple probe
   packets to each DNS server.  It may well be preferable to have a
   method of determining, within the DNS protocol itself, if a certain
   DNS server supports DNSoD.  Two approaches are discussed below, one
   using DNS SRV query or Name Server Instance [RFC4892] query, and
   another extending the EDNS0 OPT meta-RR [I-D.hzhwm-start-tls-for-dns]
   to describe DNSoD support.

   To use Name Server Instance [RFC4892] query, we would define a new
   CHAOS class resource record.  The name is not significant, so let's
   pretend it would be called "DNSoD".  Note: we might to indicate an
   alternate port, querying a CHAOS SRV resource record is probably most
   ideal.

   To extend the EDNS0 OPT meta-RR defined in
   [I-D.hzhwm-start-tls-for-dns], we can add another bit indicating
   support for DNSoD, denoted as "SO".  Clients and servers indicate
   their support for, and desire to use, DNSoD by setting a bit in the
   Flags field of the EDNS0 [RFC6891] OPT meta-RR.  The "DTLS OK" (SO)
   bit is defined as the third bit of the third and fourth bytes of the
   "extended RCODE and flags" portion of the EDNS0 OPT meta-RR,
   immediately adjacent to the "TLS OK" (TO) bit defined in
   [I-D.hzhwm-start-tls-for-dns], as shown below:

                      +0 (MSB)                +1 (LSB)
              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
           0: |   EXTENDED-RCODE      |       VERSION         |
              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
           2: |DO|TO|SO|            Must be zero              |
              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

8.  Authenticating a DNS Server

   As DTLS provides integrity protection, some protection from on-path
   attackers sending bogus responses is provided by simply using DTLS.
   That is, a device on the path between a DNS client and its DNS server
   cannot simply inject a bogus DNS response, as could be done with
   normal DNS.  However, that protection is not terribly strong, because
   that attacker could intercept the DTLS handshake itself and pretend
   to be the actual DNS server.  To prevent that, we need to resolve two
   problems: identifying the trusted servers and determining an
   appropriate action when no trusted servers are available.

Reddy, et al.           Expires October 24, 2014                [Page 6]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

   The first problem, of identifying the legitimate server, requires
   extending the host configuration.  This is because DNS clients have
   their DNS servers configured by IP address (from DHCP or from a local
   configuration file such as /etc/resolv.conf), but certificates have a
   DNS name in the SubjectAltName field.  We can't change how
   certificates are issued, but we already have to modify the DNS client
   to support DNSoD.  With that in mind, the DNS client would have a
   list of SubjectAltNames it trusts, configured by the user.  That
   could be configured in the resolv.conf file itself, as shown below,
   or could be maintained in a separate file.

                  nameserver 192.0.2.1    dns.example.net
                  nameserver 198.51.100.1 dns.example.com

   The second problem is determining an appropriate action when no
   trusted servers are available.  Although the DNS client could still
   use DNSoD with an un-trusted server which still provides protection
   from on-path passive listeners and from on- and off-path active
   attackers, this use does not protect from a malicious server
   returning bogus responses.  While DNSSEC can protect against bogus
   responses (lies), DNSSEC cannot protect against a server that simply
   does not return certain answers.

      [[Editor's Note: Is there more we could do?  Trust certain
      responses (like for my enterprise VPN or other sites where I will
      be doing a TLS handshake)?  Keep in mind that with web portals at
      hotels/airports, we won't have access to a trusted DNS server on
      initial connect at all.]]

9.  Established sessions

   In DTLS, all data is protected using the same record encoding and
   mechanisms.  When the mechanism described in this document is in
   effect, DNS messages are encrypted using the standard DTLS record
   encoding.  When a user of DTLS wishes to send an DNS message, it
   delivers it to the DTLS implementation as an ordinary application
   data write (e.g., SSL_write()).  A single DTLS session can be used to
   receive multiple DNS requests and generate DNS multiple responses.

      Client                                          Server
      ------                                          ------

      ClientHello             -------->

                              <-------    HelloVerifyRequest
                                            (contains cookie)

Reddy, et al.           Expires October 24, 2014                [Page 7]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

      ClientHello             -------->
      (contains cookie)
      (empty SessionTicket extension)
                                                 ServerHello
                                     (empty SessionTicket extension)
                                                Certificate*
                                          ServerKeyExchange*
                                         CertificateRequest*
                              <--------      ServerHelloDone

      Certificate*
      ClientKeyExchange
      CertificateVerify*
      [ChangeCipherSpec]
      Finished                -------->
                                            NewSessionTicket
                                          [ChangeCipherSpec]
                              <--------             Finished

      DNS Request             --------->

                              <---------  DNS Response

        Message Flow for Full Handshake Issuing New Session Ticket

10.  IANA Considerations

   This document defines a new bit ("SO") in the Flags field of the
   EDNS0 OPT meta-RR.  At the time of approval of this draft in the
   standards track, as per the IANA Considerations of [RFC6891], IANA is
   requested to reserve the third leftmost bit of the flags as the SO
   bit, immediately adjacent to the DNSSEC SO bit, as shown in
   Section 7.

   If demultiplexing DTLS and DNS (using the third octet, Section 5) is
   useful, we should reserve DNS Opcode 15 to ensure DNS always has a 0
   bit where DTLS always has a 1 bit.

11.  Security Considerations

Reddy, et al.           Expires October 24, 2014                [Page 8]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

   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 inside DNSoD.  This behavior mitigates all (?)
   attacks described in Measures for Making DNS More Resilient against
   Forged Answers [RFC5452].

   Security considerations discussed in DTLS [RFC6347] also apply to
   this document.

12.  Acknowledgements

   The EDNS0 OPT meta-RR described in Section 7 are an extension of the
   technique described in Starting TLS over DNS
   [I-D.hzhwm-start-tls-for-dns].

   Thanks to Phil Hedrick for his review comments on TCP and to Josh
   Littlefield for pointing out DNSoD load on busy servers (most notably
   root servers).

13.  References

13.1.  Normative References

   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
              STD 13, RFC 1034, November 1987.

   [RFC1035]  Mockapetris, P., "Domain names - implementation and
              specification", STD 13, RFC 1035, November 1987.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC4033]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "DNS Security Introduction and Requirements", RFC
              4033, March 2005.

   [RFC5077]  Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig,
              "Transport Layer Security (TLS) Session Resumption without
              Server-Side State", RFC 5077, January 2008.

   [RFC5452]  Hubert, A. and R. van Mook, "Measures for Making DNS More
              Resilient against Forged Answers", RFC 5452, January 2009.

   [RFC6347]  Rescorla, E. and N. Modadugu, "Datagram Transport Layer
              Security Version 1.2", RFC 6347, January 2012.

Reddy, et al.           Expires October 24, 2014                [Page 9]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

   [RFC6891]  Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms
              for DNS (EDNS(0))", STD 75, RFC 6891, April 2013.

13.2.  Informative References

   [I-D.bortzmeyer-dnsop-dns-privacy]
              Bortzmeyer, S., "DNS privacy problem statement", draft-
              bortzmeyer-dnsop-dns-privacy-01 (work in progress),
              December 2013.

   [I-D.hzhwm-start-tls-for-dns]
              Zi, Z., Zhu, L., Heidemann, J., Mankin, A., and D.
              Wessels, "Starting TLS over DNS", draft-hzhwm-start-tls-
              for-dns-00 (work in progress), February 2014.

   [I-D.ietf-tls-oob-pubkey]
              Wouters, P., Tschofenig, H., Gilmore, J., Weiler, S., and
              T. Kivinen, "Using Raw Public Keys in Transport Layer
              Security (TLS) and Datagram Transport Layer Security
              (DTLS)", draft-ietf-tls-oob-pubkey-11 (work in progress),
              January 2014.

   [RFC4821]  Mathis, M. and J. Heffner, "Packetization Layer Path MTU
              Discovery", RFC 4821, March 2007.

   [RFC4892]  Woolf, S. and D. Conrad, "Requirements for a Mechanism
              Identifying a Name Server Instance", RFC 4892, June 2007.

Authors' Addresses

   Tirumaleswar Reddy
   Cisco Systems, Inc.
   Cessna Business Park, Varthur Hobli
   Sarjapur Marathalli Outer Ring Road
   Bangalore, Karnataka  560103
   India

   Email: tireddy@cisco.com

   Dan Wing
   Cisco Systems, Inc.
   170 West Tasman Drive
   San Jose, California  95134
   USA

   Email: dwing@cisco.com

Reddy, et al.           Expires October 24, 2014               [Page 10]
Internet-Draft            DNS over DTLS (DNSoD)               April 2014

   Prashanth Patil
   Cisco Systems, Inc.
   Bangalore
   India

   Email: praspati@cisco.com

Reddy, et al.           Expires October 24, 2014               [Page 11]