| < draft-eastlake-dnsext-cookies-03.txt | draft-eastlake-dnsext-cookies-04.txt > | |||
|---|---|---|---|---|
| INTERNET-DRAFT Donald E. Eastlake 3rd | INTERNET-DRAFT Donald Eastlake | |||
| Intended Status: Proposed Standard Motorola Laboratories | Intended Status: Proposed Standard Huawei | |||
| Expires: August 2008 February 25, 2008 | Expires: July 21, 2014 January 22, 2014 | |||
| Domain Name System (DNS) Cookies | Domain Name System (DNS) Cookies | |||
| <draft-eastlake-dnsext-cookies-04.txt> | ||||
| <draft-eastlake-dnsext-cookies-03.txt> | Abstract | |||
| DNS cookies are a lightweight DNS transaction security mechanism | ||||
| designed for incremental deployment. They provide limited protection | ||||
| to DNS servers and resolvers against a variety of increasingly common | ||||
| denial-of-service and amplification/forgery or cache poisoning | ||||
| attacks by off-path attackers. DNS Cookies are tolerant of NAT, NAT- | ||||
| PT, and anycast. | ||||
| Status of This Document | Status of This Document | |||
| By submitting this Internet-Draft, each author represents that any | This Internet-Draft is submitted to IETF in full conformance with the | |||
| applicable patent or other IPR claims of which he or she is aware | provisions of BCP 78 and BCP 79. | |||
| have been or will be disclosed, and any of which he or she becomes | ||||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | ||||
| This draft is intended to be become a Proposed Standard RFC. | ||||
| Distribution of this document is unlimited. Comments should be sent | Distribution of this document is unlimited. Comments should be sent | |||
| to the author or the DNSEXT working group mailing list | to the author or the DNSEXT mailing list <dnsext@ietf.org>. | |||
| <namedroppers@ops.ietf.org>. | ||||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
| Drafts. | Drafts. | |||
| 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." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/1id-abstracts.html | http://www.ietf.org/1id-abstracts.html. The list of Internet-Draft | |||
| Shadow Directories can be accessed at | ||||
| The list of Internet-Draft Shadow Directories can be accessed at | http://www.ietf.org/shadow.html. | |||
| http://www.ietf.org/shadow.html | ||||
| Abstract | ||||
| DNS cookies are a light-weight DNS transaction security mechanism | ||||
| designed for incremental deployment. They provide limited protection | ||||
| to DNS servers and resolvers against a variety of increasingly common | ||||
| denial-of-service and cache poisoning or forgery attacks by off-path | ||||
| attackers. DNS Cookies are tolerant of NAT, NAT-PT, and Anycast. | ||||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| Table of Contents | Table of Contents | |||
| Status of This Document....................................1 | ||||
| Abstract...................................................1 | ||||
| Table of Contents..........................................2 | ||||
| 1. Introduction............................................3 | 1. Introduction............................................3 | |||
| 1.1 Contents of This Document..............................3 | 1.1 Contents of This Document..............................3 | |||
| 1.2 Definitions............................................4 | 1.2 Definitions............................................4 | |||
| 2. Threats Considered......................................5 | 2. Threats Considered......................................5 | |||
| 2.1 Denial-of-Service Attacks..............................5 | 2.1 Denial-of-Service Attacks..............................5 | |||
| 2.1.1 DNS Server Denial-of-Service.........................5 | 2.1.1 DNS Amplification Attacks............................5 | |||
| 2.1.2 Selected Host Denial-of-Service......................5 | 2.1.2 DNS Server Denial-of-Service.........................5 | |||
| 2.2 Cache Poisoning and Answer Forgery Attacks.............6 | 2.2 Cache Poisoning and Answer Forgery Attacks.............6 | |||
| 3. Comments on Existing DNS Security.......................6 | ||||
| 3.1 Existing DNS Data Security.............................6 | 3. Comments on Existing DNS Security.......................7 | |||
| 3.2 DNS Message or Transaction Security....................7 | 3.1 Existing DNS Data Security.............................7 | |||
| 3.2 DNS Message/Transaction Security.......................7 | ||||
| 3.3 Conclusions on Existing DNS Security...................7 | 3.3 Conclusions on Existing DNS Security...................7 | |||
| 4. The COOKIE OPT option...................................8 | 4. The COOKIE OPT Option...................................8 | |||
| 4.1 Resolver Cookies.......................................8 | 4.1 Resolver Cookie........................................8 | |||
| 4.2 Server Cookies.........................................9 | 4.2 Server Cookie..........................................9 | |||
| 5. DNS Cookie Policies and Implementation Requirements.....9 | 4.3 Error Code.............................................9 | |||
| 5.1 Resolver Policies and Implementation..................10 | ||||
| 5.2 Server Policies and Implementation....................11 | ||||
| 5.3 Implementation Requirements...........................11 | ||||
| 6. NAT Considerations and AnyCast Server Considerations...12 | ||||
| 7. Incremental Deployment.................................14 | 5. DNS Cookies Protocol Description.......................11 | |||
| 5.1 Originating Requests..................................11 | ||||
| 5.2 Responding to Requests................................11 | ||||
| 5.3 Processing Responses..................................11 | ||||
| 8. IANA Considerations....................................15 | 6. DNS Cookie Policies and Implementation.................13 | |||
| 9. Security Considerations................................15 | 6.1 Resolver Policies and Implementation..................13 | |||
| 10. Normative References..................................16 | 6.2 Server Policies and Implementation....................14 | |||
| 11. Informative References................................16 | 6.3 Resolver and Server Secret Rollover...................15 | |||
| 6.4 Implementation Requirement............................15 | ||||
| Author's Address..........................................18 | 7. NAT Considerations and AnyCast Server Considerations...17 | |||
| Copyright and Disclaimer..................................18 | 8. Deployment.............................................19 | |||
| Additional IPR Provisions.................................18 | 9. IANA Considerations....................................20 | |||
| Expiration and File Name..................................19 | ||||
| 10. Security Considerations...............................21 | ||||
| 10.1 Cookie Algorithm Considerations......................21 | ||||
| Acknowledgements..........................................22 | ||||
| Normative References......................................23 | ||||
| Informative References....................................23 | ||||
| Author's Address..........................................25 | ||||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| 1. Introduction | 1. Introduction | |||
| As with many core Internet protocols, the Domain Name System (DNS) | As with many core Internet protocols, the Domain Name System (DNS) | |||
| was designed at a time when the Internet had only a small pool of | was originally designed at a time when the Internet had only a small | |||
| trusted users. As the Internet has exploded to a global information | pool of trusted users. As the Internet has grown exponentially to a | |||
| utility, the DNS has increasingly been subject to abuse and been used | global information utility, the DNS has increasingly been subject to | |||
| as a vector for abuse. | abuse. | |||
| This document describes DNS cookies, a light-weight DNS transaction | This document describes DNS cookies, a lightweight DNS transaction | |||
| security mechanism specified as an OPT [RFC2671] option. This | security mechanism specified as an OPT [RFC6891] option. This | |||
| mechanism provides limited protection to DNS servers and resolvers | mechanism provides limited protection to DNS servers and resolvers | |||
| against a variety of increasingly common denial-of-service and cache | against a variety of increasingly common abuses by off-path | |||
| poisoning forgery attacks by off-path attackers. | attackers. | |||
| The DNS cookies mechanism is designed with a default mode which | The DNS cookies mechanism has a default mode that supports | |||
| supports incremental deployment. If only one party to a DNS | incremental deployment. If only one party to a DNS transaction | |||
| transaction supports the mechanism, it does not interfere or provide | supports the mechanism, it does not provide a benefit or | |||
| a benefit, but, if both support it, the additional security provided | significantly interfere, but, if both support it, the additional | |||
| is automatically available for that and subsequent transactions. | security provided is automatically available. | |||
| The DNS cookies mechanism is compatible with and can be used in | The DNS cookies mechanism is compatible with and can be used in | |||
| conjunction with other DNS transaction forgery resistance measures | conjunction with other DNS transaction forgery resistance measures | |||
| such as those in [forgery]. | such as those in [RFC5452]. | |||
| The DNS cookies mechanism is designed to work in the presence of NAT | The DNS cookies mechanism is designed to work in the presence of NAT | |||
| and NAT-PT boxes and guidance is provided herein on supporting the | and NAT-PT boxes and guidance is provided herein on supporting the | |||
| DNS cookies mechanism in anycast servers. | DNS cookies mechanism in anycast servers. | |||
| 1.1 Contents of This Document | 1.1 Contents of This Document | |||
| In Section 2, we discuss the threats against which the DNS cookie | In Section 2, we discuss the threats against which the DNS cookie | |||
| mechanism provides some protection. | mechanism provides some protection. | |||
| Section 3 describes existing DNS security mechanisms and why they are | Section 3 describes existing DNS security mechanisms and why they are | |||
| not adequate substitutes for DNS cookies. | not adequate substitutes for DNS cookies. | |||
| Section 4 describes the COOKIE OPT option including recommendations | Section 4 describes the COOKIE OPT option and Section 5 provides a | |||
| for calculating Resolver and Server Cookies. | protocol description including suggestions for calculating Resolver | |||
| and Server Cookies. | ||||
| Section 5 describes the processing of COOKIE OPT options by resolvers | Section 6 gives further details on the processing of COOKIE OPT | |||
| and server and policies for such processing. | options by resolvers and server and policies for such processing. | |||
| Section 6 discusses some NAT and anycast related DNS Cookies design | Section 7 discusses some NAT and anycast related DNS Cookies design | |||
| considerations. | considerations. | |||
| Section 7 discusses incremental deployment considerations. | Section 8 discusses incremental deployment considerations. | |||
| Sections 8 and 9 describe IANA and Security Considerations. | ||||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| Sections 9 and 10 describe IANA and Security Considerations. | ||||
| 1.2 Definitions | 1.2 Definitions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| An "off-path attacker", for a particular DNS resolver and server, is | An "off-path attacker", for a particular DNS resolver and server, is | |||
| defined as an attacker which cannot observe the legitimate plain text | defined as an attacker who cannot observe the plain text of DNS | |||
| DNS requests and responses between that resolver and server. | requests and responses between that resolver and server. | |||
| "Soft state" indicates information learned or derived by a host which | "Soft state" indicates information learned or derived by a host which | |||
| may be discarded when indicated by the policies of that host but can | may be discarded when indicated by the policies of that host but can | |||
| be later re-instantiated if needed. For example, it could be | be later re-instantiated if needed. For example, it could be | |||
| discarded after a period of time or when storage for caching such | discarded after a period of time or when storage for caching such | |||
| data becomes full. If operations requiring that soft state continue | data becomes full. If operations requiring that soft state continue | |||
| after it has been discarded, it will be automatically re-generated, | after it has been discarded, it will be automatically re-generated, | |||
| albeit at some cost. | albeit at some cost. | |||
| "Silently discarded" indicates that there are no DNS protocol message | "Silently discarded" indicates that there are no DNS protocol message | |||
| consequences; however, it is RECOMMENDED that appropriate debugging | consequences; however, it is RECOMMENDED that appropriate network | |||
| network management facilities be included in implementations, such as | management facilities be included in implementations, such as a | |||
| a counter of the occurrences of each type of such events. | counter of the occurrences of each type of such events. | |||
| The term "IP address" is used herein in a length independent manner | The term "IP address" is used herein in a length independent manner | |||
| and refers to address formats including IPv4 and IPv6. | and refers to both IPv4 and IPv6. | |||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| 2. Threats Considered | 2. Threats Considered | |||
| DNS cookies are intended to provide significant but limited | DNS cookies are intended to provide significant but limited | |||
| protection against certain denial-of-service and cache poisoning or | protection against certain attacks by off-path attackers as described | |||
| answer forgery attacks by off-path attackers described below. | below. These attacks include denial-of-service, cache poisoning and | |||
| answer forgery. | ||||
| 2.1 Denial-of-Service Attacks | 2.1 Denial-of-Service Attacks | |||
| The canonical form of the denial-of-service attacks considered herein | The typical form of the denial-of-service attacks considered herein | |||
| is to send DNS requests with forged source IP addresses to a server. | is to send DNS requests with forged source IP addresses to a server. | |||
| The intent can be to attack that server or a selected host as | The intent can be to attack that server or some other selected host | |||
| described below. | as described below. | |||
| 2.1.1 DNS Server Denial-of-Service | ||||
| DNS requests that are accepted cause work on the part of DNS servers. | ||||
| This is particularly true for recursive servers which may issue one | ||||
| or more requests and process the responses thereto in order to | ||||
| determine their response to the initial query. And the situation is | ||||
| even worse for recursive servers implementing DNSSEC [RFC4033], | ||||
| [RFC4034], [RFC4035] because they may be induced to perform | ||||
| burdensome public key cryptographic computations in attempts to | ||||
| verify the authenticity of data they retrieve while trying to answer | ||||
| the request. | ||||
| The computational or communications burden caused by such requests | ||||
| may not dependent on a forged IP source address, but the use of such | ||||
| addresses makes | ||||
| + the source of the requests causing the denial-of-service attack to | ||||
| be harder to find and | ||||
| + administrative restriction of the IP addresses from which such | ||||
| requests should be honored harder or impossible to specify. | ||||
| Use of DNS cookies almost always enables a server to reject forged | ||||
| queries from an off path attacker with relative ease, certainly | ||||
| before any recursive queries or public key cryptographic operations | ||||
| are performed. | ||||
| 2.1.2 Selected Host Denial-of-Service | 2.1.1 DNS Amplification Attacks | |||
| A request with a forged IP address generally causes a response to be | A request with a forged IP address generally causes a response to be | |||
| sent to that forged IP address. Thus the forging of many such | sent to that forged IP address. Thus the forging of many such | |||
| requests with a particular source IP address can result in enough | requests with a particular source IP address can result in enough | |||
| traffic being sent to the forged IP address to interfere with service | traffic being sent to the forged IP address to interfere with service | |||
| to the host at the IP address. Furthermore, it is generally easy in | ||||
| the DNS to create short requests that produce much longer responses, | ||||
| thus amplifying the attack. | ||||
| The DNS Cookies mechanism can severely limit the traffic | ||||
| amplification obtained by attackers off path for the server and the | ||||
| attacked host. Enforced DNS cookies would make it hard for an off | ||||
| path attacker to cause any more than rate-limited short error | ||||
| responses to be sent to a forged IP address so the attack would be | ||||
| reduced rather than amplified. DNS cookies make it more effective to | ||||
| implement a rate limiting scheme for bad DNS cookie error responses | ||||
| from the server. Such a scheme would further restrict selected host | ||||
| denial-of-service traffic from that server. | ||||
| 2.1.2 DNS Server Denial-of-Service | ||||
| DNS requests that are accepted cause work on the part of DNS servers. | ||||
| This is particularly true for recursive servers that may issue one or | ||||
| more requests and process the responses thereto, in order to | ||||
| determine their response to the initial request. And the situation | ||||
| can be even worse for recursive servers implementing DNSSEC | ||||
| ([RFC4033] [RFC4034] [RFC4035]) because they may be induced to | ||||
| perform burdensome public key cryptographic computations in attempts | ||||
| to verify the authenticity of data they retrieve in trying to answer | ||||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| to the host at the IP address. Furthermore, it is generally easy in | the request. | |||
| the DNS to create short requests that produce much longer responses. | ||||
| Thus a DNS server can be used as not only a way to obscure the true | ||||
| source of an attack but as a traffic amplifier to make the attack | ||||
| more effective. | ||||
| Use of the DNS Cookies mechanism severely limits the traffic | The computational or communications burden caused by such requests | |||
| amplification that can be obtained by attackers off path for the | may not dependent on a forged IP source address, but the use of such | |||
| server and the attacked host. Enforced DNS cookies would make it hard | addresses makes | |||
| for an off path attacker to cause any more than a brief error | + the source of the requests causing the denial-of-service attack | |||
| response to be sent to a forged IP address. Furthermore, DNS cookies | harder to find and | |||
| make it more effective to implement a rate limiting scheme for bad | + restriction of the IP addresses from which such requests should | |||
| DNS cookie error responses from the server. Such a scheme would | be honored hard or impossible to specify or verify. | |||
| further restrict selected host denial-of-service traffic from that | ||||
| server. | Use of DNS cookies should enables a server to reject forged queries | |||
| from an off path attacker with relative ease and before any recursive | ||||
| queries or public key cryptographic operations are performed. | ||||
| 2.2 Cache Poisoning and Answer Forgery Attacks | 2.2 Cache Poisoning and Answer Forgery Attacks | |||
| The form of the cache poisoning attacks considered is to send forged | The form of the cache poisoning attacks considered is to send forged | |||
| replies to a resolver. Modern network speeds for well connected hosts | replies to a resolver. Modern network speeds for well-connected hosts | |||
| are such that, by forging replies from the IP addresses of heavily | are such that, by forging replies from the IP addresses of heavily | |||
| used DNS servers for popular names to a heavily used resolver, there | used DNS servers for popular names to a heavily used resolver, there | |||
| can be an unacceptably high probability of randomly coming up with a | can be an unacceptably high probability of randomly coming up with a | |||
| reply that will be accepted and cause false DNS information to be | reply that will be accepted and cause false DNS information to be | |||
| cached by that resolver. This can be used to facilitate phishing | cached by that resolver (the Dan Kaminsky attack). This can be used | |||
| attacks and other diversion of legitimate traffic to a compromised or | to facilitate phishing attacks and other diversion of legitimate | |||
| malicious host such as a web server. | traffic to a compromised or malicious host such as a web server. | |||
| With the use of DNS cookies, a resolver can generally reject such | ||||
| forged replies. | ||||
| INTERNET-DRAFT DNS Cookies | ||||
| 3. Comments on Existing DNS Security | 3. Comments on Existing DNS Security | |||
| Two forms of security have been added to DNS, data security and | Two forms of security have been added to DNS, data security and | |||
| message or transaction security. | message/transaction security. | |||
| 3.1 Existing DNS Data Security | 3.1 Existing DNS Data Security | |||
| DNS data security is one part of DNSSEC and is described in | DNS data security is one part of DNSSEC and is described in | |||
| [RFC4033], [RFC4034], and [RFC4035]. It provides data origin | [RFC4033], [RFC4034], and [RFC4035] and updates thereto. It provides | |||
| authentication and authenticated denial of existence. It is being | data origin authentication and authenticated denial of existence. | |||
| deployed slowly and, in any case, can make some denial-of-service | DNSSEC is being deployed and can provide strong protection against | |||
| attacks worse because of the high cryptographic computational load it | forged data; however, it has the unintended effect of making some | |||
| can require and the increased size in DNS packets that it tends to | denial-of-service attacks worse because of the cryptographic | |||
| produce. | computational load it can require and the increased size in DNS | |||
| packets that it tends to produce. | ||||
| INTERNET-DRAFT DNS Cookies | ||||
| 3.2 DNS Message or Transaction Security | 3.2 DNS Message/Transaction Security | |||
| The second form of security which has been added to DNS provides | The second form of security that has been added to DNS provides | |||
| "transaction" security through TSIG [RFC2845] or SIG(0) [RFC2931]. | "transaction" security through TSIG [RFC2845] or SIG(0) [RFC2931]. | |||
| TSIG could provide near perfect protection against the attacks for | TSIG could provide strong protection against the attacks for which | |||
| which the DNS Cookies mechanism provide weak and incomplete | the DNS Cookies mechanism provide weak protection; however, TSIG is | |||
| protection; however, TSIG is hard to deploy in the general Internet | non-trivial to deploy in the general Internet because of the burden | |||
| because of the burden it imposes of pre-agreement and key | it imposes of pre-agreement and key distribution between resolver- | |||
| distribution between pairs of resolvers and servers and because it | server pairs, the burden of server side key state, and because it | |||
| requires time synchronization between resolver and server. | requires time synchronization between resolver and server. | |||
| TKEY [RFC2930] can solve the problem of key distribution for TSIG but | TKEY [RFC2930] can solve the problem of key distribution for TSIG but | |||
| some modes of TKEY impose a substantial cryptographic computation | some modes of TKEY impose a substantial cryptographic computation | |||
| loads and can be dependent on the deployment of DNSSEC. | loads and can be dependent on the deployment of DNS data security | |||
| (see Section 3.1). | ||||
| SIG(0) provides less denial of service protection than TSIG or, in | SIG(0) [RFC2931] provides less denial of service protection than TSIG | |||
| one way, even DNS cookies, because it does not authenticate requests, | or, in one way, even DNS cookies, because it does not authenticate | |||
| only complete transactions. In any case, it also depends on the | requests, only complete transactions. In any case, it also depends | |||
| deployment of DNSSEC and requires computationally burdensome public | on the deployment of DNS data security and requires computationally | |||
| key cryptographic operations. | burdensome public key cryptographic operations. | |||
| 3.3 Conclusions on Existing DNS Security | 3.3 Conclusions on Existing DNS Security | |||
| Thus, none of the previous forms of DNS security are a suitable | The existing DNS security mechanisms do not provide the services | |||
| substitute for the DNS Cookies mechanism, which provide light weight | provided by the DNS Cookies mechanism: lightweight message | |||
| message authentication of DNS requests and responses with no | authentication of DNS requests and responses with no requirement for | |||
| requirement for pre-configuration. | pre-configuration or server side state. | |||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| 4. The COOKIE OPT option | 4. The COOKIE OPT Option | |||
| COOKIE is an OPT RR [RFC2671] option that can be included no more | COOKIE is an OPT RR [RFC6891] option that can be included no more | |||
| than once in the RDATA portion of an OPT RR in DNS requests and | than once in the RDATA portion of an OPT RR in DNS requests and | |||
| responses. | responses. | |||
| The option is encoded into 22 bytes as shown below. | The option is encoded into 22 bytes as shown below. | |||
| 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION-CODE = {TBD} | OPTION-LENGTH = 18 | | | OPTION-CODE = {TBD} | OPTION-LENGTH = 18 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| +- Resolver Cookie -+ | +- Resolver Cookie -+ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| +-- Server Cookie -+ | +- Server Cookie -+ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Error Code | | | Error Code | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| The 64-bit Resolver and Server Cookies are stored in network byte | The 64-bit Resolver and Server Cookies are stored in little endian | |||
| order and are determined as described below. | order and are determined as described below. | |||
| The Error Code field MUST be zero in requests and in responses unless | 4.1 Resolver Cookie | |||
| the response is communicating a DNS cookie error. Three values are | ||||
| specified in this document for Error Code: NOCOOKIE and BADCOOKIE | ||||
| which occur with a Refused RCODE in the DNS response header, and | ||||
| MANYCOOKIE which occurs with a FormErr RCODE in the DNS header. More | ||||
| information on the generation of error responses appears in Section 5 | ||||
| below. | ||||
| 4.1 Resolver Cookies | ||||
| The Resolver Cookie, when it occurs in an OPT in a DNS response, is | ||||
| intended to weakly assure the resolver that the response came from a | ||||
| server at the indicated source IP address. | ||||
| Servers remember the Resolver Cookie that appears in a query long | ||||
| enough to use it in the construction of the COOKIE OPT option in the | ||||
| corresponding response if such a COOKIE OPT option is included in | ||||
| that response. | ||||
| The Resolver Cookie SHOULD be a pseudo-random function of the server | The Resolver Cookie SHOULD be a pseudo-random function of the server | |||
| IP address and a secret quantity known only to the resolver. This | IP address and a secret quantity known only to the resolver. This | |||
| resolver secret SHOULD have at least 64 bits of entropy [RFC4086bis] | ||||
| and be changed periodically (see Section 6.3). The selection of the | ||||
| pseudo-random function is a private matter to the resolver as only | ||||
| the resolver needs to recognize its own DNS cookies. An example | ||||
| method is the FNV-64 [FNV] of the server IP address and the resolver | ||||
| secret. That is | ||||
| INTERNET-DRAFT DNS Cookies | Resolver Cookie = FNV-64 ( Resolver Secret | Server IP Address ) | |||
| resolver secret SHOULD have 64 bits of entropy [RFC4086] and MAY be | ||||
| changed periodically. The RECOMMENDED method is the HMAC-SHA1-64 | ||||
| [RFC1321] [RFC2104] of the server IP address and the resolver secret. | ||||
| That is | ||||
| Resolver Cookie = Truncate-64 | ||||
| ( HMAC-SHA1 ( Server IP Address, Resolver Secret ) ) | ||||
| where Truncate-64 takes the first 64 bits. A resolver MUST NOT use | where "|" indicates concatenation. | |||
| the same Resolver Cookie value for queries to all servers. | ||||
| 4.2 Server Cookies | A resolver MUST NOT use the same Resolver Cookie value for queries to | |||
| all servers. | ||||
| The Server Cookie, when it occurs in a COOKIE OPT option in a query, | INTERNET-DRAFT DNS Cookies | |||
| is intended to weakly assure the server that the query legitimately | ||||
| came from a resolver at the indicated source IP address that is using | ||||
| that Resolver Cookie. | ||||
| Resolvers learn Server Cookies and retain them as soft state | 4.2 Server Cookie | |||
| associated with the server IP address. They learn them from the | ||||
| Server Cookie that appears in the COOKIE OPT option of a reply if | ||||
| that reply has the correct Resolver Cookie, even if that reply is an | ||||
| error message. | ||||
| The Server Cookie SHOULD be a pseudo-random function of the request | The Server Cookie SHOULD be a pseudo-random function of the request | |||
| source IP address, the request Resolver Cookie, and a secret quantity | source IP address, the request Resolver Cookie, and a secret quantity | |||
| known only to the server. This server secret SHOULD have 64 bits of | known only to the server. (See Section 7 for a discussion of why the | |||
| entropy [RFC4086] and SHOULD be changed periodically such as daily. | Resolver Cookie is used as input to the Server Cookie but the Server | |||
| The RECOMMENDED method is the HMAC-SHA1-64 [RFC1321], [RFC2104] of | Cookie is not used as an input to the Resolver Cookie.) This server | |||
| the request IP address, the Resolver Cookie, and the server secret. | secret SHOULD have 64 bits of entropy [RFC4086bis] and be changed | |||
| That is | periodically (see Section 6.3). The selection of the pseudo-random | |||
| function is a private matter to the server as only the server needs | ||||
| to recognize its own DNS cookies. An example method is the FNV-64 | ||||
| [FNV] of the request IP address, the Resolver Cookie, and the server | ||||
| secret. That is | ||||
| Server Cookie = Truncate-64 ( HMAC-SHA1 ( | Server Cookie = | |||
| (Request IP Address | Resolver Cookie), Server Secret ) ) | FNV-64 ( Server Secret | Request IP Address | Resolver Cookie ) | |||
| where Truncate-64 takes the first 64 bits and "|" represents | where "|" represents concatenation. | |||
| concatenation. | ||||
| A server MUST NOT use the same Server Cookie value for responses to | A server MUST NOT use the same Server Cookie value for responses to | |||
| all resolvers. | all resolvers. | |||
| 5. DNS Cookie Policies and Implementation Requirements | 4.3 Error Code | |||
| DNS resolvers and servers will adopt one of various policies | The Error Code field MUST have one of the values listed below. | |||
| regarding cookies. These policies SHOULD be logically settable on a | ||||
| per server IP address basis for resolvers and a per resolver ( IP | Requests have a COOKIE OPT Error Code equal to one of the following | |||
| two values: | ||||
| Zero, if the resolver believes the Server Cookie field is | ||||
| correct, or | ||||
| CKPING (Cookie PING), if the resolver does not know the correct | ||||
| value for the Server Cookie field. | ||||
| (In all cases, the RCODE in a DNS request header is zero.) | ||||
| Replies have a COOKIE OPT with an Error Code equal to one of the | ||||
| following five values: | ||||
| Zero, if the request they respond to had one COOKIE OPT with a | ||||
| correct Server Cookie. | ||||
| NOCOOKIE, in which case the DNS reply header RCODE field is | ||||
| Refused. | ||||
| BADCOOKIE, in which case the DNS reply header RCODE field is | ||||
| Refused. | ||||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| address, Resolver Cookie ) pair for servers. Thus a resolver can | MANYCOOKIE, in which case the DNS reply header RCODE field is | |||
| have different policies for different servers, based on the server IP | FormErr. | |||
| address. And a server can have different policies for different | ||||
| resolvers, based on the resolver IP address and Resolver Cookie. Of | ||||
| course, the actual implementation of setting these policies may be | ||||
| for blocks or classes of values or use sparse array techniques or the | ||||
| like. | ||||
| The policy for each value is either "Disabled", "Enabled", or | CKPINGR (Cookie PING Response), which case the DNS reply RCODE | |||
| field might be any value (see Section 5.2). | ||||
| For more information on errors in replies see Section 6. | ||||
| For further discussion of the Resolver Cookie field, see Section 5.1. | ||||
| For further discussion of the Server Cookie field see Section 5.2. | ||||
| INTERNET-DRAFT DNS Cookies | ||||
| 5. DNS Cookies Protocol Description | ||||
| The sections provide a general discussion of using DNS Cookies in the | ||||
| DNS Protocol. More details are provided in Section 6. | ||||
| 5.1 Originating Requests | ||||
| A DNS resolver that implements DNS cookies includes a DNS Cookie | ||||
| option in every DNS request it sends unless DNS cookies are disabled | ||||
| in that resolver. The DNS Cookie in a request includes a Resolver | ||||
| Cookie as discussed in Section 4.1, a Server Cookie cached as soft | ||||
| state associated with that server IP address from a previous DNS | ||||
| response, and a zero Error Code field. | ||||
| If the resolver has no cached Server Cookie for the server, then it | ||||
| sets the Server Cookie field to any value and sets the Error Code | ||||
| field to CKPING (Cookie Ping); this is the only case in which the | ||||
| Error Code field in a COOKIE OPT in a request is non-zero. | ||||
| 5.2 Responding to Requests | ||||
| The Server Cookie, when it occurs in a COOKIE OPT option in a | ||||
| request, is intended to weakly assure the server that the request | ||||
| came from a resolver at the source IP address used because the Server | ||||
| Cookie value is the value that server would send to that resolver in | ||||
| a response. | ||||
| A DNS server that implements DNS cookies and for which DNS cookies | ||||
| are not disabled always includes a DNS cookie in the response to a | ||||
| DNS request that includes such a cookie. If the request did not | ||||
| include a DNS cookie, inclusion of a DNS cookies in the response | ||||
| depends on the server mode for that resolved (see Section 6.2). In | ||||
| the DNS Cookie that the server includes, the Resolver Cookie field is | ||||
| copied from that field in the request. If there was no cookie in the | ||||
| request, it may be set to any value. The Server Cookie field is set | ||||
| as discussed in Section 4.2 and the Error Code field is set as | ||||
| specified in Section 6. | ||||
| 5.3 Processing Responses | ||||
| The Resolver Cookie, when it occurs in a COOKIE OPT option in a DNS | ||||
| reply, is intended to weakly assure the resolver that the reply came | ||||
| from a server at the source IP address use in the response packet | ||||
| because the Resolver Cookie value is the value that resolver would | ||||
| INTERNET-DRAFT DNS Cookies | ||||
| send to that server in a request. | ||||
| A DNS resolver that implements DNS cookies and for which DNS cookies | ||||
| are not disabled examines response for DNS cookies and will discard | ||||
| the response if it contains an incorrect Resolver Cookie or has | ||||
| multiple cookies. If the COOKIE OPT option Resolver Cookie is correct | ||||
| and the Error Code field is not NOCOOKIE, MANYCOOKIES, it caches the | ||||
| Server Cookie provided even if the response is an error response. The | ||||
| rest of the response is then processed normally. | ||||
| INTERNET-DRAFT DNS Cookies | ||||
| 6. DNS Cookie Policies and Implementation | ||||
| Obviously, DNS resolvers that do not implement DNS cookies do not | ||||
| include them in requests and ignore them in replies and DNS servers | ||||
| that do not implement DNS cookies ignore them in requests and do not | ||||
| include the in replies. | ||||
| DNS resolvers and servers that implement DNS cookies will adopt one | ||||
| of various policies regarding cookies. These policies SHOULD be | ||||
| logically settable on a per server IP address basis in resolvers and | ||||
| on a per resolver ( IP address, Resolver Cookie ) pair in servers. | ||||
| Thus a resolver can have different policies for different servers, | ||||
| based on the server IP address. And a server can have different | ||||
| policies for different resolvers, based on the resolver IP address | ||||
| and Resolver Cookie. Of course, the actual implementation of the | ||||
| configuration of these policies may be for blocks or classes of | ||||
| values or use sparse array techniques or the like. | ||||
| The policy in each case is either "Disabled", "Enabled", or | ||||
| "Enforced" as described below. | "Enforced" as described below. | |||
| 5.1 Resolver Policies and Implementation | 6.1 Resolver Policies and Implementation | |||
| A resolver will logically have one of the following three modes of | A resolver will logically have one of the following three modes of | |||
| operation or "policies" for each DNS server as distinguished by | operation or "policies" for each DNS server as distinguished by | |||
| server IP Address. | server IP Address. | |||
| Disabled: | Disabled: | |||
| Never include a COOKIE OPT option in requests. | Never include a COOKIE OPT option in requests. | |||
| Ignore COOKIE OPT options in responses. | Ignore COOKIE OPT options in replies. | |||
| Enabled: | Enabled: | |||
| Always include a COOKIE OPT option in requests. If a cached Server | Always include a COOKIE OPT option in requests. If a cached Server | |||
| Cookie for the server is not available, the Server Cookie field | Cookie for the server is not available, the Server Cookie field | |||
| can be set to any value. | can be set to any value and the COOKIE OPT Error Code field is | |||
| Normally process responses without a COOKIE OPT option. | set to CKPING (Cookie Ping); otherwise, the Error Code field is | |||
| Silently ignore responses with more than one COOKIE OPT option. | set to zero. | |||
| Silently ignore responses with one COOKIE OPT option if it has an | Normally process replies without a COOKIE OPT option. | |||
| Silently ignore replies with more than one COOKIE OPT option. | ||||
| Silently ignore replies with one COOKIE OPT option if it has an | ||||
| incorrect Resolver Cookie value. | incorrect Resolver Cookie value. | |||
| On receipt of a response with one COOKIE OPT option carrying the | On receipt of a reply with one COOKIE OPT option carrying the | |||
| correct Resolver Cookie value (even if it is a BADCOOKIE error | correct Resolver Cookie value (even if it is a DNS error | |||
| response), the DNS client performs normal response processing, | response), the DNS client performs normal response processing, | |||
| including caching the received Server Cookie, and it MUST | including caching the received Server Cookie as soft state, and | |||
| change to the Enforced policy for DNS requests to that DNS | it MUST change to the Enforced policy for DNS requests to that | |||
| server IP address. This policy change SHOULD be treated as soft | DNS server IP address. This policy change to Enforced is | |||
| state with the same timeout strategy as the Server Cookie value | treated as soft state with the same retention strategy as the | |||
| for that server. On timeout of that state information, the | ||||
| policy for that DNS server reverts to Enabled. | INTERNET-DRAFT DNS Cookies | |||
| Server Cookie value for that server. On discard of that state | ||||
| information, the policy for that DNS server IP address reverts | ||||
| to Enabled. | ||||
| Enforced: | Enforced: | |||
| Always include a COOKIE OPT option in requests. | Always include a COOKIE OPT option in requests. | |||
| Silently ignore all responses that do not include exactly one | Silently ignore all replies that do not include exactly one COOKIE | |||
| COOKIE OPT option having the correct Resolver Cookie value. | OPT option having the correct Resolver Cookie value. | |||
| On receipt of a reply with one COOKIE OPT option carrying the | ||||
| INTERNET-DRAFT DNS Cookies | correct Resolver Cookie value (even if it is a DNS error | |||
| response), the DNS client performs normal response processing, | ||||
| including caching the received Server Cookie. If a copy of the | ||||
| same Server Cookie value is already cached for that server, | ||||
| then its retention probability should be increased. For | ||||
| example, if a time out is being used for the discard to cached | ||||
| Server Cookies, that time out should be extended. | ||||
| 5.2 Server Policies and Implementation | 6.2 Server Policies and Implementation | |||
| A server will logically have one of the following three modes of | A server will logically have one of the following three modes of | |||
| operation or "policies" for each DNS resolver as distinguished by | operation or "policies" for each DNS resolver as discussed below. | |||
| resolver IP Address and Resolver Cookie. | ||||
| Disabled: | Disabled: | |||
| Ignore COOKIE OPT options in requests. | Ignore COOKIE OPT options in requests. | |||
| Never include a COOKIE OPT option in responses. | Never include a COOKIE OPT option in replies. | |||
| Enabled: | Enabled: | |||
| Always include a COOKIE OPT option in responses. | Include a COOKIE OPT option in replies to requests that include a | |||
| Normally process requests without a COOKIE OPT option. | COOKIE OPT. | |||
| Ignore, other than sending a MANYCOOKIE error response, any | Normally process requests without a COOKIE OPT option except that | |||
| request with more than one COOKIE OPT option. | it is RECOMMENDED that the processing of burdensome requests | |||
| Ignore, other than sending a BADCOOKIE error response, any query | and requests producing replies substantially longer than the | |||
| with one COOKIE OPT option if it has an incorrect Server | request be significantly rate limited. | |||
| Cookie. | Ignore, other than sending a FormErr/MANYCOOKIE error reply, any | |||
| On receipt of a request with a COOKIE OPT option carrying the | request with more than one COOKIE OPT option. Such replies MAY | |||
| correct Server Cookie value, the DNS server performs normal | be rate limited and SHOULD be as short as practical. | |||
| request processing and it SHOULD switch to the Enforced policy | Ignore, other than sending a BADCOOKIE error reply, any request | |||
| for DNS requests from that resolver IP address with that | with one COOKIE OPT option if it has an incorrect Server Cookie | |||
| Resolver Cookie in the request. This policy change for that | unless the request COOKIE has an Error Code of CKPING (Cookie | |||
| resolver SHOULD be treated as soft state. On timing out that | Ping) in which case the response has an Error Code of CKPINGR | |||
| (Cookie Ping Response). Such replies MAY be rate limited and | ||||
| SHOULD be as short as practical. | ||||
| On receipt of a request with one COOKIE OPT option carrying the | ||||
| correct Server Cookie value and an Error Code of zero, the DNS | ||||
| server performs normal request processing and it SHOULD switch | ||||
| to the Enforced policy for DNS requests from that resolver IP | ||||
| address with that Resolver Cookie in the request. This policy | ||||
| change to Enforced is treated as soft state. On discard of that | ||||
| INTERNET-DRAFT DNS Cookies | ||||
| state information, the policy for that resolver IP and Resolver | state information, the policy for that resolver IP and Resolver | |||
| Cookie pair reverts to Enabled. | Cookie pair reverts to Enabled. | |||
| Enforced: | Enforced: | |||
| Always include a COOKIE OPT option in responses. | Always include a COOKIE OPT option in replies. | |||
| Ignore requests without a COOKIE OPT option or with more than one | Ignore requests without a COOKIE OPT option or with more than one | |||
| COOKIE OPT option, other than returning a NOCOOKIE or | COOKIE OPT option, other than returning a NOCOOKIE or | |||
| MANYCOOKIE error respectively. | MANYCOOKIE DNS error respectively. Such replies MAY be rate | |||
| limited to any particular IP address and SHOULD be as short as | ||||
| practical. | ||||
| Ignore requests with one COOKIE OPT option if they have an | Ignore requests with one COOKIE OPT option if they have an | |||
| incorrect Server Cookie, other than returning a BADCOOKIE error | incorrect Server Cookie, other than returning a BADCOOKIE error | |||
| message. | message, unless the request has an Error Code of CKPING in | |||
| which case the response has an Error Code of CKPINGR. Such | ||||
| replies MAY be rate limited and SHOULD be as short as | ||||
| practical. | ||||
| If a request has one COOKIE OPT option with a correct Server | If a request has one COOKIE OPT option with a correct Server | |||
| Cookie, perform normal processing of the request. | Cookie and an Error Code of zero, perform normal processing of | |||
| the request. | ||||
| 5.3 Implementation Requirements | 6.3 Resolver and Server Secret Rollover | |||
| Resolvers and servers MUST NOT continue to use the same secret in new | ||||
| queries and responses, respectively, for more than 14 days and SHOULD | ||||
| NOT continue to do so for more than 1 day. It is RECOMMENDED that a | ||||
| resolver keep the Resolver Cookie it is expecting in a reply | ||||
| associated with the outstanding query to avoid rejection of replies | ||||
| due to a bad Resolver Cookie right after a change in the Resolver | ||||
| Secret. It is RECOMMENDED that a server retain its previous secret | ||||
| for a period of time not less than 1 second or more than 3 minutes, | ||||
| after a change in its secret, and consider queries with Server | ||||
| Cookies based on its previous secret to have a correct Server Cookie | ||||
| during that time. | ||||
| Receiving a suddenly increased level of requests with bad Server | ||||
| Cookies or replies with bad Resolver Cookies would be a good reason | ||||
| to believe a server or resolver likely to be under attack and should | ||||
| consider more frequent rollover of its secret. | ||||
| 6.4 Implementation Requirement | ||||
| DNS resolvers and servers SHOULD implement DNS cookies. | DNS resolvers and servers SHOULD implement DNS cookies. | |||
| DNS resolvers SHOULD operate in and be shipped so as to default to | DNS resolvers SHOULD operate in and be shipped so as to default to | |||
| the Enabled or Enforced mode for all servers. | the Enabled or Enforced mode for all servers. | |||
| INTERNET-DRAFT DNS Cookies | ||||
| DNS servers SHOULD operate in and be shipped so as to default to the | DNS servers SHOULD operate in and be shipped so as to default to the | |||
| Enabled or Enforced mode for all resolvers they are willing to | Enabled or Enforced mode for all resolvers they are willing to | |||
| service. | service. | |||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| 6. NAT Considerations and AnyCast Server Considerations | 7. NAT Considerations and AnyCast Server Considerations | |||
| In the Classic Internet, DNS Cookies could simply be a pseudo-random | In the Classic Internet, DNS Cookies could simply be a pseudo-random | |||
| function of the resolver IP address and a sever secret or the server | function of the resolver IP address and a sever secret or the server | |||
| IP address and a resolver secret. You would want to compute the | IP address and a resolver secret. You would want to compute the | |||
| Server Cookie that way, so a resolver could cache its Server Cookie | Server Cookie that way, so a resolver could cache its Server Cookie | |||
| for a particular server for an indefinitely amount of time and the | for a particular server for an indefinitely amount of time and the | |||
| server could easily regenerate and check it. You could consider the | server could easily regenerate and check it. You could consider the | |||
| Resolver Cookie to be a resolver signature over the server IP address | Resolver Cookie to be a weak resolver signature over the server IP | |||
| which the resolver checks in responses and you could extend this | address that the resolver checks in replies and you could extend this | |||
| signature to cover the request ID, for example. | weak signature to cover the request ID, for example, or any other | |||
| information that is returned unchanged in the reply. | ||||
| But we have this reality called NAT [RFC3022], Network Address | But we have this reality called NAT [RFC3022], Network Address | |||
| Translation (including, for the purposes of this document, NAT-PT | Translation (including, for the purposes of this document, NAT-PT, | |||
| [RFC2766], Network Address and Protocol Translation, which has been | Network Address and Protocol Translation, which has been declared | |||
| declared Historic [RFC4966]). There is no problem with DNS | Historic [RFC4966]). There is no problem with DNS transactions | |||
| transactions between resolvers and servers behind a NAT box using | between resolvers and servers behind a NAT box using local IP | |||
| local IP addresses. Nor is there a problem with NAT translation of | addresses. Nor is there a problem with NAT translation of internal | |||
| internal addresses to external addresses or translations between IPv4 | addresses to external addresses or translations between IPv4 and IPv6 | |||
| and IPv6 addresses, as long as the address mapping is relatively | addresses, as long as the address mapping is relatively stable. | |||
| stable. Should an internal resolver being mapped to a particular | Should the external IP address an internal resolver being mapped to | |||
| external IP address change occasionally, the disruption is no more | change occasionally, the disruption is little more than when a | |||
| than when a resolver rolls-over its DNS COOKIE secret. And normally | resolver rolls-over its DNS COOKIE secret. And normally external | |||
| external access to a DNS server behind a NAT box is handled by a | access to a DNS server behind a NAT box is handled by a fixed mapping | |||
| fixed mapping which forwards externally received DNS requests to a | which forwards externally received DNS requests to a specific host. | |||
| specific host. | ||||
| However, NAT devices sometimes also map ports. This can cause | However, NAT devices sometimes also map ports. This can cause | |||
| multiple DNS requests and responses from multiple internal hosts to | multiple DNS requests and responses from multiple internal hosts to | |||
| be simultaneously mapped to a smaller number of external IP | be mapped to a smaller number of external IP addresses, such as one | |||
| addresses, frequently one. There could be many resolvers behind a | address. Thus there could be many resolvers behind a NAT box that | |||
| NAT box that appear to come from the same source IP address to a | appear to come from the same source IP address to a server outside | |||
| server outside that NAT box. If one of these were an attacker (think | that NAT box. If one of these were an attacker (think Zombie or | |||
| Zombie or Botnet), that behind-NAT attacker could get the Server | Botnet), that behind-NAT attacker could get the Server Cookie for | |||
| Cookie for some server for the outgoing IP address by just making | some server for the outgoing IP address by just making some random | |||
| some random request to that server. It could then include that Server | request to that server. It could then include that Server Cookie in | |||
| Cookie in the COOKIE RR of requests to the server with the forged | the COOKIE OPT of requests to the server with the forged local IP | |||
| local IP address of some other host and/or resolver behind the NAT | address of some other host and/or resolver behind the NAT box. | |||
| box. (Attacker possession of this Server Cookie will not help in | (Attacker possession of this Server Cookie will not help in forging | |||
| forging responses to cause cache poisoning as such responses are | responses to cause cache poisoning as such responses are protected by | |||
| protected by the required Resolver Cookie.) | the required Resolver Cookie.) | |||
| To fix this potential defect, it is necessary to distinguish | To fix this potential defect, it is necessary to distinguish | |||
| different resolvers behind a NAT box from the point of view of the | different resolvers behind a NAT box from the point of view of the | |||
| server. It is for this reason that the Server Cookie is specified as | server. It is for this reason that the Server Cookie is specified as | |||
| a pseudo-random function of both the request source IP address and | a pseudo-random function of both the request source IP address and | |||
| the Resolver Cookie. From this inclusion of the Resolver Cookie in | the Resolver Cookie. From this inclusion of the Resolver Cookie in | |||
| the calculation of the Server Cookie, it follows that a stable | the calculation of the Server Cookie, it follows that a stable | |||
| Resolver Cookie, for any particular server, is needed. If, for | Resolver Cookie, for any particular server, is needed. If, for | |||
| example, the request ID was included in the calculation of the | example, the request ID was included in the calculation of the | |||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| Resolver Cookie, it would normally change with each query to a | Resolver Cookie, it would normally change with each request to a | |||
| particular server. This would mean that each query would have to be | particular server. This would mean that each request would have to | |||
| sent twice: first to learn the new Server Cookie based on this new | be sent twice: first to learn the new Server Cookie based on this new | |||
| Resolver Cookie based on the new ID and then again using this new | Resolver Cookie based on the new ID and then again using this new | |||
| Resolver Cookie to actually get an answer. Thus the input to the | Resolver Cookie to actually get an answer. Thus the input to the | |||
| Resolver Cookie computation must be limited to the server IP address | Resolver Cookie computation must be limited to the server IP address | |||
| and one or more things that change slowly such as the resolver | and one or more things that change slowly such as the resolver | |||
| secret. | secret. | |||
| In principle, there could be a similar problem for servers, not | In principle, there could be a similar problem for servers, not due | |||
| particularly due to NAT but due to mechanisms like anycast which may | to NAT but due to mechanisms like anycast which may cause queries to | |||
| cause queries to a DNS server at an IP address to be delivered to any | a DNS server at an IP address to be delivered to any one of several | |||
| one of several machines. (External queries to a DNS server behind a | machines. (External queries to a DNS server behind a NAT box usually | |||
| NAT box usually occur via port forwarding such that all such queries | occur via port forwarding such that all such queries go to one host.) | |||
| go to one host.) However, it is impossible to solve this the way the | However, it is impossible to solve this the way the similar problem | |||
| similar problem was solved for NATed resolvers; if the Server Cookie | was solved for NATed resolvers; if the Server Cookie was included in | |||
| was included in the calculation of the Resolver Cookie the same way | the calculation of the Resolver Cookie the same way the Resolver | |||
| the Resolver Cookie is included in the Server Cookie, you would just | Cookie is included in the Server Cookie, you would just get an almost | |||
| get an almost infinite series of BADCOOKIE errors as a query was | infinite series of errors as a request was repeatedly retried. | |||
| repeatedly retried. | ||||
| For servers accessed via anycast to successfully support DNS COOKIES, | For servers accessed via anycast to successfully support DNS COOKIES, | |||
| the server clones must either all use the same server secret or the | the server clones must either all use the same server secret or the | |||
| mechanism that distributes queries to them must cause the queries | mechanism that distributes queries to them must cause the queries | |||
| from a particular resolver to go to a particular server for a | from a particular resolver to go to a particular server for a | |||
| sufficiently long period of time that extra queries due to changes in | sufficiently long period of time that extra queries due to changes in | |||
| Server Cookie resulting from accessing different server machines are | Server Cookie resulting from accessing different server machines are | |||
| not unduly burdensome. When such anycast accessed servers act as | not unduly burdensome. (When such anycast accessed servers act as | |||
| recursive servers or otherwise act as resolvers they normally use a | recursive servers or otherwise act as resolvers they normally use a | |||
| different unique address to source their queries and avoid confusion | different unique address to source their queries to avoid confusion | |||
| in the delivery of responses. | in the delivery of responses.) | |||
| For simplicity, it is RECOMMENDED that the same server secret be used | For simplicity, it is RECOMMENDED that the same server secret be used | |||
| by each DNS server in a set of anycast servers. | by each DNS server in a set of anycast servers. If there is limited | |||
| time skew in updating this secret in different anycast servers, this | ||||
| can be handled by a server accepting requests containing a Server | ||||
| Cookie based on either its old or new secret for the maximum likely | ||||
| time period of such time skew (see also Section 6.3). | ||||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| 7. Incremental Deployment | 8. Deployment | |||
| The DNS cookies mechanism is designed for incremental deployment and | The DNS cookies mechanism is designed for incremental deployment and | |||
| to complement the orthogonal techniques in [forgery]. Either or both | to complement the orthogonal techniques in [RFC5452]. Either or both | |||
| techniques can be deployed independently at each DNS server and | techniques can be deployed independently at each DNS server and | |||
| resolver. | resolver. | |||
| In particular, a DNS server or resolver that implements the DNS | In particular, a DNS server or resolver that implements the DNS | |||
| cookies mechanism and is in the Enabled mode will interoperate | COOKIE mechanism and is in the Enabled mode will interoperate | |||
| successfully with a DNS resolver or server that does not implement | successfully with a DNS resolver or server that does not implement | |||
| this mechanism although, of course, in this case it will not get the | this mechanism although, of course, in this case it will not get the | |||
| benefit of the mechanism. When such a server or resolver | benefit of the mechanism. When such a server or resolver | |||
| interoperates with a resolver or server which also implements the DNS | interoperates with a resolver or server which also implements the DNS | |||
| cookies mechanism, this is recognized and, for that transaction | cookies mechanism and is in Enabled or Enforced mode, this is | |||
| partner, it enters the Enforced mode and gets the full benefit of the | recognized and, for that transaction partner, it latches up into the | |||
| DNS cookies mechanism until this soft state times out and it reverts | Enforced mode and gets the full benefit of the DNS cookies mechanism | |||
| to Enabled. | until this soft state lapses and it reverts to Enabled mode. | |||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| 8. IANA Considerations | 9. IANA Considerations | |||
| IANA will allocate the following code points: | IANA will assign the following code points: | |||
| The OPT option value for COOKIE is <TBD>. | The OPT option value for COOKIE is <TBD>. | |||
| Three new RCODES are assigned values as listed below: | Three new DNS error codes are assigned values in the range above | |||
| NOCOOKIE is assigned the value ({TBD}, 23 suggested). | 15 and below 3841 as listed below: | |||
| BADCOOKIE is assigned the value ({TBD}, 24 suggested). | ||||
| MANYCOOKIE is assigned the value ({TBD}, 25 suggested). | ||||
| 9. Security Considerations | NOCOOKIE is assigned the value TBD (23 suggested). | |||
| BADCOOKIE is assigned the value TBD (24 suggested). | ||||
| MANYCOOKIE is assigned the value TBD (25 suggested). | ||||
| Two new DNS error codes are assigned in the range above 4095 and | ||||
| below 65535: | ||||
| CKPING (Cookie PING) is assigned the value TBD (4096 | ||||
| suggested). | ||||
| CKPINGR (Cookie PING Response) is assigned the value RBD (4097 | ||||
| suggested). | ||||
| INTERNET-DRAFT DNS Cookies | ||||
| 10. Security Considerations | ||||
| DNS Cookies provide a weak form of authentication of DNS requests and | DNS Cookies provide a weak form of authentication of DNS requests and | |||
| responses. In particular, they provide no protection at all against | responses. In particular, they provide no protection at all against | |||
| "on-path" adversaries; that is, they provide no protection against | "on-path" adversaries; that is, they provide no protection against | |||
| any adversary which can observe the plain text DNS traffic, such as | any adversary that can observe the plain text DNS traffic, such as an | |||
| an on-path router, bridge, or any device on an on-path shared link | on-path router, bridge, or any device on an on-path shared link | |||
| (unless the DNS traffic in question on that path is appropriately | (unless the DNS traffic in question on that path is encrypted). | |||
| encrypted). | ||||
| For example, if a host is connected via an unsecured IEEE 802.11 link | For example, if a host is connected via an unsecured IEEE 802.11 link | |||
| (Wi-Fi), any device in the vicinity that could receive and decode the | (Wi-Fi), any device in the vicinity that could receive and decode the | |||
| 802.11 transmissions must be considered "on-path". On the other hand, | 802.11 transmissions must be considered "on-path". On the other hand, | |||
| in a similar situation but one where 802.11 Robust Security (WPAv2) | in a similar situation but one where 802.11 Robust Security (WPAv2) | |||
| is appropriately deployed on the Wi-Fi network nodes, only the Access | is appropriately deployed on the Wi-Fi network nodes, only the Access | |||
| Point via which the host is connecting is "on-path". | Point via which the host is connecting is "on-path". | |||
| Despite these limitations, use of DNS Cookies on the global Internet | Despite these limitations, use of DNS Cookies on the global Internet | |||
| is expected to provide a reduction in the available launch points for | is expected to provide a substantial reduction in the available | |||
| the traffic amplification and denial of service forgery attacks | launch points for the traffic amplification and denial of service | |||
| described in Section 2 above. | forgery attacks described in Section 2 above. | |||
| The recommended cryptographic algorithms for use in DNS Cookies is | Should stronger message/transaction security be desired, it is | |||
| HMAC-SHA1-64, that is, the HMAC scheme [RFC2104] using the SHA1 hash | suggested that TSIG or SIG(0) security be used (see Section 3.2); | |||
| function [RFC3174] [RFC4634] with the HMAC output truncated to | however, it may be useful to use DNS Cookies in conjunction with | |||
| 64-bits. MD5 is now considered to be susceptible to collisions | these features. In particular, DNS Cookies could screen out many DNS | |||
| attacks. Although this does not effect the security of HMAC-MD5, | messages before the cryptographic computations of TSIG or SIG(0) are | |||
| HMAC-SHA1 is believed to be stronger. | required and, if SIG(0) is in use, DNS Cookies could usefully screen | |||
| out many requests given that SIG(0) does not screen requests but only | ||||
| authenticates the response of complete transactions. | ||||
| In light of the weak plain-text token security provided by DNS | 10.1 Cookie Algorithm Considerations | |||
| Cookies, stronger cryptography is probably not warranted and in many | ||||
| cases it would be acceptable to use the weaker MD5 hash function | The cookie computation algorithm for use in DNS Cookies SHOULD be | |||
| [RFC1321]. However, there is nothing wrong with using something | FNV-64 [FNV] or some stronger algorithm because an excessively weak | |||
| stronger, for example, HMAC-SHA256-64 [RFC4634], assuming a DNS | or trivial algorithm could enable adversaries to guess cookies. | |||
| However, in light of the weak plain-text token security provided by | ||||
| DNS Cookies, a strong cryptography hash algorithm is probably not | ||||
| warranted in many cases, and would cause an increased computational | ||||
| burden. Nevertheless there is nothing wrong with using something | ||||
| stronger, for example, HMAC-SHA256-64 [RFC6234], assuming a DNS | ||||
| processor has adequate computational resources available. DNS | processor has adequate computational resources available. DNS | |||
| processors that feel the need for somewhat stronger security without | processors that feel the need for somewhat stronger security without | |||
| a significant increase in computational load should consider more | a significant increase in computational load should consider more | |||
| frequent changes in their resolver and/or server secret; however, | ||||
| this does require more frequent generation of a cryptographically | ||||
| strong random number [RFC4086bis]. | ||||
| INTERNET-DRAFT DNS Cookies | INTERNET-DRAFT DNS Cookies | |||
| frequent changes in their resolver and/or server secret; however, | Acknowledgements | |||
| this does require more frequent generation of a cryptographically | ||||
| strong random number [RFC4086] and a change in a server secret will | ||||
| result in a number of initial BADCOOKIE rejected requests from | ||||
| resolvers caching their old Server Cookie. | ||||
| 10. Normative References | The contributions of the following are gratefully acknowledged: | |||
| [RFC1321] - Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | Tim Wicinski | |||
| April 1992. | ||||
| [RFC2104] - Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | INTERNET-DRAFT DNS Cookies | |||
| Hashing for Message Authentication", RFC 2104, February 1997. | ||||
| [RFC2119] - Bradner, S., "Key words for use in RFCs to Indicate | Normative References | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | ||||
| [RFC2671] - Vixie, P., "Extension Mechanisms for DNS (EDNS0)", August | [FNV] - G. Fowler, L. C. Noll, K.-P. Vo, D. Eastlake, "The FNV Non- | |||
| 1999. | Cryptographic Hash Algorithm", draft-eastlake-fnv, work in | |||
| progress. | ||||
| [RFC4086] - Eastlake, D., 3rd, Schiller, J., and S. Crocker, | [RFC2119] - Bradner, S., "Key words for use in RFCs to Indicate | |||
| "Randomness Requirements for Security", BCP 106, RFC 4086, June 2005. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| 11. Informative References | [RFC6891] - Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms | |||
| for DNS (EDNS(0))", STD 75, RFC 6891, April 2013. | ||||
| [forgery] - "Measures for making DNS more resilient against forged | [RFC4086bis] - Eastlake, D., 3rd, Schiller, J., and S. Crocker, | |||
| answers", Hubert, A. , R. van Mook, draft-ietf-dnsext-forgery- | "Randomness Requirements for Security", draft-eastlake- | |||
| resilience-01.txt, work in progress, July 2007. | randomness3, work in progress. | |||
| [RFC2766] - Tsirtsis, G., P. Srisuresh, "Network Address Translation | Informative References | |||
| - Protocol Translation (NAT-PT)", February 2000. | ||||
| [RFC2845] - Vixie, P., Gudmundsson, O., Eastlake 3rd, D., and B. | [RFC2845] - Vixie, P., Gudmundsson, O., Eastlake 3rd, D., and B. | |||
| Wellington, "Secret Key Transaction Authentication for DNS (TSIG)", | Wellington, "Secret Key Transaction Authentication for DNS | |||
| RFC 2845, May 2000. | (TSIG)", RFC 2845, May 2000. | |||
| [RFC2930] - Eastlake 3rd, D., "Secret Key Establishment for DNS (TKEY | [RFC2930] - Eastlake 3rd, D., "Secret Key Establishment for DNS (TKEY | |||
| RR)", RFC 2930, September 2000. | RR)", RFC 2930, September 2000. | |||
| [RFC2931] - Eastlake 3rd, D., "DNS Request and Transaction Signatures | [RFC2931] - Eastlake 3rd, D., "DNS Request and Transaction Signatures | |||
| ( SIG(0)s )", RFC 2931, September 2000. | ( SIG(0)s )", RFC 2931, September 2000. | |||
| [RFC3022] - Srisuresh, P. and K. Egevang, "Traditional IP Network | [RFC3022] - Srisuresh, P. and K. Egevang, "Traditional IP Network | |||
| Address Translator (Traditional NAT)", RFC 3022, January 2001. | Address Translator (Traditional NAT)", RFC 3022, January 2001. | |||
| [RFC3174] - Eastlake 3rd, D. and P. Jones, "US Secure Hash Algorithm | ||||
| INTERNET-DRAFT DNS Cookies | ||||
| 1 (SHA1)", RFC 3174, September 2001. | ||||
| [RFC4033] - Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4033] - Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "DNS Security Introduction and Requirements", RFC 4033, March | Rose, "DNS Security Introduction and Requirements", RFC 4033, | |||
| 2005. | March 2005. | |||
| [RFC4034] - Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4034] - Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "Resource Records for the DNS Security Extensions", RFC 4034, | Rose, "Resource Records for the DNS Security Extensions", RFC | |||
| March 2005. | 4034, March 2005. | |||
| [RFC4035] - Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4035] - Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "Protocol Modifications for the DNS Security Extensions", RFC | Rose, "Protocol Modifications for the DNS Security Extensions", | |||
| 4035, March 2005. | RFC 4035, March 2005. | |||
| [RFC4634] - Eastlake, D. and T. Hansen, "US Secure Hash Algorithms | ||||
| (SHA)", RFC 4634, July 2006. | ||||
| [RFC4966] - Aoun, C. and E. Davies, "Reasons to Move the Network | [RFC4966] - Aoun, C. and E. Davies, "Reasons to Move the Network | |||
| Address Translator - Protocol Translator (NAT-PT) to Historic | Address Translator - Protocol Translator (NAT-PT) to Historic | |||
| Status", RFC 4966, July 2007. | Status", RFC 4966, July 2007. | |||
| INTERNET-DRAFT DNS Cookies | ||||
| Author's Address | ||||
| Donald E. Eastlake 3rd | ||||
| Motorola Laboratories | ||||
| 111 Locke Drive | ||||
| Marlborough, MA 01752 USA | ||||
| Telephone: +1-508-786-7554 (w) | ||||
| EMail: Donald.Eastlake@motorola.com | ||||
| Copyright and Disclaimer | ||||
| Copyright (C) The IETF Trust (2008). | [RFC5452] - Hubert, A. and R. van Mook, "Measures for Making DNS More | |||
| This document is subject to the rights, licenses and restrictions | INTERNET-DRAFT DNS Cookies | |||
| contained in BCP 78, and except as set forth therein, the authors | ||||
| retain all their rights. | ||||
| This document and the information contained herein are provided on an | Resilient against Forged Answers", RFC 5452, January 2009. | |||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | ||||
| THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | ||||
| OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | ||||
| THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
| Additional IPR Provisions | [RFC6234] - Eastlake 3rd, D. and T. Hansen, "US Secure Hash | |||
| Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, May | ||||
| 2011. | ||||
| The IETF takes no position regarding the validity or scope of any | INTERNET-DRAFT DNS Cookies | |||
| Intellectual Property Rights or other rights that might be claimed to | ||||
| pertain to the implementation or use of the technology described in | ||||
| this document or the extent to which any license under such rights | ||||
| might or might not be available; nor does it represent that it has | ||||
| made any independent effort to identify any such rights. Information | ||||
| on the procedures with respect to rights in RFC documents can be | ||||
| found in BCP 78 and BCP 79. | ||||
| Copies of IPR disclosures made to the IETF Secretariat and any | Author's Address | |||
| assurances of licenses to be made available, or the result of an | ||||
| attempt made to obtain a general license or permission for the use of | ||||
| such proprietary rights by implementers or users of this | ||||
| specification can be obtained from the IETF on-line IPR repository at | ||||
| http://www.ietf.org/ipr. | ||||
| INTERNET-DRAFT DNS Cookies | Donald E. Eastlake 3rd | |||
| Huawei Technologies | ||||
| 155 Beaver Street | ||||
| Milford, MA 01757 USA | ||||
| The IETF invites any interested party to bring to its attention any | Telephone: +1-508-333-2270 | |||
| copyrights, patents or patent applications, or other proprietary | EMail: d3e3e3@gmail.com | |||
| rights that may cover technology that may be required to implement | ||||
| this standard. Please address the information to the IETF at ietf- | ||||
| ipr@ietf.org. | ||||
| Expiration and File Name | Copyright, Disclaimer, and Additional IPR Provisions | |||
| This draft expires in August 2008. | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | ||||
| Its file name is draft-eastlake-dnsext-cookies-03.txt | 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. | ||||
| End of changes. 131 change blocks. | ||||
| 430 lines changed or deleted | 540 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||