| < draft-ietf-dnsop-negative-trust-anchors-02.txt | draft-ietf-dnsop-negative-trust-anchors-03.txt > | |||
|---|---|---|---|---|
| Domain Name System Operations P. Ebersman | Domain Name System Operations P. Ebersman | |||
| Internet-Draft Comcast | Internet-Draft Comcast | |||
| Intended status: Informational C. Griffiths | Intended status: Informational C. Griffiths | |||
| Expires: September 5, 2015 Dyn | Expires: October 24, 2015 Dyn | |||
| W. Kumari | W. Kumari | |||
| J. Livingood | J. Livingood | |||
| Comcast | Comcast | |||
| R. Weber | R. Weber | |||
| Nominum | Nominum | |||
| March 04, 2015 | April 22, 2015 | |||
| Definition and Use of DNSSEC Negative Trust Anchors | Definition and Use of DNSSEC Negative Trust Anchors | |||
| draft-ietf-dnsop-negative-trust-anchors-02 | draft-ietf-dnsop-negative-trust-anchors-03 | |||
| Abstract | Abstract | |||
| DNS Security Extensions (DNSSEC) is now entering widespread | DNS Security Extensions (DNSSEC) is now entering widespread | |||
| deployment. However, domain signing tools and processes are not yet | deployment. However, domain signing tools and processes are not yet | |||
| as mature and reliable as those for non-DNSSEC-related domain | as mature and reliable as those for non-DNSSEC-related domain | |||
| administration tools and processes. Negative Trust Anchors | administration tools and processes. Negative Trust Anchors | |||
| (described in this document) can be used to mitigate DNSSEC | (described in this document) can be used to mitigate DNSSEC | |||
| validation failures. | validation failures. | |||
| skipping to change at page 1, line 48 ¶ | skipping to change at page 1, line 48 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on September 5, 2015. | This Internet-Draft will expire on October 24, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction and motivation . . . . . . . . . . . . . . . . . 2 | |||
| 2. Definition of a Negative Trust Anchor . . . . . . . . . . . . 4 | 1.1. Definition of a Negative Trust Anchor . . . . . . . . . . 3 | |||
| 3. Domain Validation Failures . . . . . . . . . . . . . . . . . 4 | 1.2. Domain Validation Failures . . . . . . . . . . . . . . . 4 | |||
| 4. End User Reaction . . . . . . . . . . . . . . . . . . . . . . 4 | 1.3. End User Reaction . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5. Switching to a Non-Validating Resolver is Not Recommended . . 5 | 1.4. Switching to a Non-Validating Resolver is Not Recommended 5 | |||
| 6. Responsibility for Failures . . . . . . . . . . . . . . . . . 5 | 2. Use of a Negative Trust Anchor . . . . . . . . . . . . . . . 5 | |||
| 7. Use of a Negative Trust Anchor . . . . . . . . . . . . . . . 6 | 3. Managing Negative Trust Anchors . . . . . . . . . . . . . . . 6 | |||
| 8. Managing Negative Trust Anchors . . . . . . . . . . . . . . . 7 | 4. Removal of a Negative Trust Anchor . . . . . . . . . . . . . 7 | |||
| 9. Removal of a Negative Trust Anchor . . . . . . . . . . . . . 8 | 5. Comparison to Other DNS Misconfigurations . . . . . . . . . . 7 | |||
| 10. Comparison to Other DNS Misconfigurations . . . . . . . . . . 8 | 6. Intentionally Broken Domains . . . . . . . . . . . . . . . . 8 | |||
| 11. Intentionally Broken Domains . . . . . . . . . . . . . . . . 9 | 7. Other Considerations . . . . . . . . . . . . . . . . . . . . 8 | |||
| 12. Other Considerations . . . . . . . . . . . . . . . . . . . . 9 | 7.1. Security Considerations . . . . . . . . . . . . . . . . . 8 | |||
| 12.1. Security Considerations . . . . . . . . . . . . . . . . 9 | 7.2. Privacy Considerations . . . . . . . . . . . . . . . . . 9 | |||
| 12.2. Privacy Considerations . . . . . . . . . . . . . . . . . 10 | 7.3. IANA Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
| 12.3. IANA Considerations . . . . . . . . . . . . . . . . . . 10 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 9.2. Informative References . . . . . . . . . . . . . . . . . 10 | |||
| 14.2. Informative References . . . . . . . . . . . . . . . . . 12 | Appendix A. Configuration Examples . . . . . . . . . . . . . . . 11 | |||
| Appendix A. Configuration Examples . . . . . . . . . . . . . . . 12 | A.1. NLNet Labs Unbound . . . . . . . . . . . . . . . . . . . 11 | |||
| A.1. NLNet Labs Unbound . . . . . . . . . . . . . . . . . . . 13 | A.2. ISC BIND . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| A.2. ISC BIND . . . . . . . . . . . . . . . . . . . . . . . . 13 | A.3. Nominum Vantio . . . . . . . . . . . . . . . . . . . . . 12 | |||
| A.3. Nominum Vantio . . . . . . . . . . . . . . . . . . . . . 13 | Appendix B. Discovering broken domains . . . . . . . . . . . . . 12 | |||
| Appendix B. Document Change Log . . . . . . . . . . . . . . . . 14 | Appendix C. Document Change Log . . . . . . . . . . . . . . . . 14 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 1. Introduction | ||||
| The Domain Name System (DNS), DNS Security Extensions (DNSSEC), and | ||||
| related operational practices are defined extensively [RFC1034] | ||||
| [RFC1035] [RFC4033] [RFC4034] [RFC4035] [RFC4398] [RFC4509] [RFC6781] | 1. Introduction and motivation | |||
| [RFC5155]. | ||||
| This document defines a Negative Trust Anchor, which can be used | This document defines a Negative Trust Anchor, which can be used | |||
| during the transition to ubiquitous DNSSEC deployment. Negative | during the transition to ubiquitous DNSSEC deployment. Negative | |||
| Trust Anchors (NTAs) are configured locally on a validating DNS | Trust Anchors (NTAs) are configured locally on a validating DNS | |||
| recursive resolver to shield end users from DNSSEC-related | recursive resolver to shield end users from DNSSEC-related | |||
| authoritative name server operational errors. Negative Trust Anchors | authoritative name server operational errors. Negative Trust Anchors | |||
| are intended to be temporary, and should not be distributed by IANA | are intended to be temporary, and should not be distributed by IANA | |||
| or any other organization outside of the administrative boundary of | or any other organization outside of the administrative boundary of | |||
| the organization locally implementing a Negative Trust Anchor. | the organization locally implementing a Negative Trust Anchor. | |||
| Finally, Negative Trust Anchors pertain only to DNSSEC and not to | Finally, Negative Trust Anchors pertain only to DNSSEC and not to | |||
| skipping to change at page 3, line 44 ¶ | skipping to change at page 3, line 37 ¶ | |||
| end users. This allows the domain's administrators to fix their | end users. This allows the domain's administrators to fix their | |||
| misconfiguration, while also allowing the organization using the | misconfiguration, while also allowing the organization using the | |||
| Negative Trust Anchor to keep DNSSEC validation enabled and still | Negative Trust Anchor to keep DNSSEC validation enabled and still | |||
| reach the misconfigured domain. | reach the misconfigured domain. | |||
| It is worth noting the following text from RFC4033 [RFC4033] - "In | It is worth noting the following text from RFC4033 [RFC4033] - "In | |||
| the final analysis, however, authenticating both DNS keys and data is | the final analysis, however, authenticating both DNS keys and data is | |||
| a matter of local policy, which may extend or even override the | a matter of local policy, which may extend or even override the | |||
| protocol extensions defined in this document set." A responsibility | protocol extensions defined in this document set." A responsibility | |||
| (one of many) of a caching server operator is to "protect the | (one of many) of a caching server operator is to "protect the | |||
| integrity of the cache." DNSSEC is just a tool to help accomplish | integrity of the cache." | |||
| that. It carries ancillary data that a local cache administrator may | ||||
| use to filter out undesired responses. DNSSEC is not an enforcement | ||||
| mechanism, it's a resource. When I see folks voice opinions that | ||||
| DNSSEC's recommended operation has to strictly followed, my gut | ||||
| reaction is that these folks have forgotten the purpose of all of our | ||||
| efforts. We don't secure protocols to make things work better. We | ||||
| don't operate the DNS because we like to run a well run machine. We | ||||
| don't run the Internet for the fun of it. (Some might enjoy running | ||||
| it, that's job satisfaction to some extent.) At the end of the day | ||||
| all that matters is that what is being done benefits society. We run | ||||
| the Internet to enrich society. We prefer a well run DNS because it | ||||
| saps less resources than a poorly run DNS. We prefer secure | ||||
| protocols so that people don't become victims (in some sense of the | ||||
| word). Make it work. Do what it takes to make it work. "Local | ||||
| policy" rules. | ||||
| 2. Definition of a Negative Trust Anchor | 1.1. Definition of a Negative Trust Anchor | |||
| Trust Anchors are defined in [RFC5914]. A trust anchor should be | Trust Anchors are defined in [RFC5914]. A trust anchor should be | |||
| used by a validating caching resolver as a starting point for | used by a validating caching resolver as a starting point for | |||
| building the authentication chain for a signed DNS response. The | building the authentication chain for a signed DNS response. By way | |||
| inverse of this is a Negative Trust Anchor, which creates a stopping | of analogy, negative trust anchors stop validation of the | |||
| point for a caching resolver to end validation of the authentication | authentication chain. Instead, the resolver sends the response as if | |||
| chain. Instead, the resolver sends the response as if the zone is | the zone is unsigned and does not set the AD bit. Note that this is | |||
| unsigned and does not set the AD bit. Note that this is a behavior, | a behavior, and not a separate resource record. This Negative Trust | |||
| and not a separate resource record. This Negative Trust Anchor can | Anchor can potentially be implemented at any level within the chain | |||
| potentially be implemented at any level within the chain of trust and | of trust and would stop validation from that point in the chain down. | |||
| would stop validation from that point in the chain down. | ||||
| 3. Domain Validation Failures | 1.2. Domain Validation Failures | |||
| A domain name can fail validation for two general reasons: a | A domain name can fail validation for two general reasons: a | |||
| legitimate security failure such as due to an attack or compromise of | legitimate security failure such as due to an attack or compromise of | |||
| some sort, or as a result of misconfiguration on the part of an | some sort, or as a result of misconfiguration on the part of an | |||
| domain administrator. As domains transition to DNSSEC, the most | domain administrator. As domains transition to DNSSEC, the most | |||
| likely reason for a validation failure will be misconfiguration. | likely reason for a validation failure will be misconfiguration. | |||
| Thus, domain administrators should be sure to read [RFC6781] in full. | Thus, domain administrators should be sure to read [RFC6781] in full. | |||
| They should also pay special attention to Section 4.2, pertaining to | They should also pay special attention to Section 4.2, pertaining to | |||
| key rollovers, which appear to be the cause of many recent validation | key rollovers, which appear to be the cause of many recent validation | |||
| failures. | failures. | |||
| It is also possible that some DNSSEC validation failures could arise | It is also possible that some DNSSEC validation failures could arise | |||
| due to differences in how different software developers interpret | due to differences in how different software developers interpret | |||
| DNSSEC standards and/or how those developers choose to implement | DNSSEC standards and/or how those developers choose to implement | |||
| support for DNSSEC. For example, it is conceivable that a domain may | support for DNSSEC. For example, it is conceivable that a domain may | |||
| be DNSSEC signed properly, and one vendor's DNS recursive resolvers | be DNSSEC signed properly, and one vendor's DNS recursive resolvers | |||
| will validate the domain but other vendors' software may fail to | will validate the domain but other vendors' software may fail to | |||
| validate the domain. | validate the domain. | |||
| 4. End User Reaction | 1.3. End User Reaction | |||
| End users generally do not know what DNSSEC is, nor should they be | End users generally do not know of, understand, or care about the | |||
| expected to at the current time (especially absent widespread | resolution process that causes connections to happen. This is by | |||
| integration of DNSSEC indicators in end user software such as web | design: the point of the DNS is to insulate users from having to | |||
| browsers). As a result, end users may misinterpret the failure to | remember IP addresses through a friendlier way of naming systems. It | |||
| reach a domain due to DNSSEC-related misconfiguration . They may | follows from this that end users do not, and should not, be expected | |||
| (incorrectly) assume that their ISP is purposely blocking access to | to know about DNSSEC, validation, or anything of the sort. As a | |||
| the domain or that it is a performance failure on the part of their | result, end users may misinterpret the failure to reach a domain due | |||
| ISP (especially of the ISP's DNS servers). They may contact their | to DNSSEC-related misconfiguration . They may (incorrectly) assume | |||
| ISP to complain, which will incur cost for their ISP. In addition, | that their ISP is purposely blocking access to the domain or that it | |||
| they may use online tools and sites to complain of this problem, such | is a performance failure on the part of their ISP (especially of the | |||
| as via a blog, web forum, or social media site, which may lead to | ISP's DNS servers). They may contact their ISP to complain, which | |||
| dissatisfaction on the part of other end users or general criticism | will incur cost for their ISP. In addition, they may use online | |||
| of an ISP or operator of a DNS recursive resolver. | tools and sites to complain of this problem, such as via a blog, web | |||
| forum, or social media site, which may lead to dissatisfaction on the | ||||
| part of other end users or general criticism of an ISP or operator of | ||||
| a DNS recursive resolver. | ||||
| As end users publicize these failures, others may recommend they | As end users publicize these failures, others may recommend they | |||
| switch from security-aware DNS resolvers to resolvers not performing | switch from security-aware DNS resolvers to resolvers not performing | |||
| DNSSEC validation. This is a shame since the ISP or other DNS | DNSSEC validation. This is a shame since the ISP or other DNS | |||
| recursive resolver operator is actually doing exactly what they are | recursive resolver operator is actually doing exactly what they are | |||
| supposed to do in failing to resolve a domain name, as this is the | supposed to do in failing to resolve a domain name, as this is the | |||
| expected result when a domain can no longer be validated, protecting | expected result when a domain can no longer be validated, protecting | |||
| end users from a potential security threat. Use of a Negative Trust | end users from a potential security threat. Use of a Negative Trust | |||
| Anchor would allow the ISP to specifically remedy the failure to | Anchor would allow the ISP to specifically remedy the failure to | |||
| reach that domain, without compromising security for other sites. | reach that domain, without compromising security for other sites. | |||
| skipping to change at page 5, line 22 ¶ | skipping to change at page 5, line 4 ¶ | |||
| As end users publicize these failures, others may recommend they | As end users publicize these failures, others may recommend they | |||
| switch from security-aware DNS resolvers to resolvers not performing | switch from security-aware DNS resolvers to resolvers not performing | |||
| DNSSEC validation. This is a shame since the ISP or other DNS | DNSSEC validation. This is a shame since the ISP or other DNS | |||
| recursive resolver operator is actually doing exactly what they are | recursive resolver operator is actually doing exactly what they are | |||
| supposed to do in failing to resolve a domain name, as this is the | supposed to do in failing to resolve a domain name, as this is the | |||
| expected result when a domain can no longer be validated, protecting | expected result when a domain can no longer be validated, protecting | |||
| end users from a potential security threat. Use of a Negative Trust | end users from a potential security threat. Use of a Negative Trust | |||
| Anchor would allow the ISP to specifically remedy the failure to | Anchor would allow the ISP to specifically remedy the failure to | |||
| reach that domain, without compromising security for other sites. | reach that domain, without compromising security for other sites. | |||
| This would result in a satisfied end user, with minimal impact to the | This would result in a satisfied end user, with minimal impact to the | |||
| ISP, while maintaining the security of DNSSEC for correctly | ISP, while maintaining the security of DNSSEC for correctly | |||
| maintained domains. | maintained domains. | |||
| 5. Switching to a Non-Validating Resolver is Not Recommended | 1.4. Switching to a Non-Validating Resolver is Not Recommended | |||
| As noted in Section 4, some people may consider switching to an | As noted in Section 1.3, some people may consider switching to an | |||
| alternative, non-validating resolver themselves, or may recommend | alternative, non-validating resolver themselves, or may recommend | |||
| that others do so. But if a domain fails DNSSEC validation and is | that others do so. But if a domain fails DNSSEC validation and is | |||
| inaccessible, this could very well be due to a security-related | inaccessible, this could very well be due to a security-related | |||
| issue. In order to be as safe and secure as possible, end users | issue. In order to be as safe and secure as possible, end users | |||
| should not change to DNS servers that do not perform DNSSEC | should not change to DNS servers that do not perform DNSSEC | |||
| validation as a workaround, and people should not recommend that | validation as a workaround, and people should not recommend that | |||
| others do so either. Domains that fail DNSSEC for legitimate reasons | others do so either. Domains that fail DNSSEC for legitimate reasons | |||
| (versus misconfiguration) may be in control of hackers or there could | (versus misconfiguration) may be in control of hackers or there could | |||
| be other significant security issues with the domain. | be other significant security issues with the domain. | |||
| Thus, switching to a non-validating resolver to restore access to a | Thus, switching to a non-validating resolver to restore access to a | |||
| domain that fails DNSSEC validation is not a recommended practice, is | domain that fails DNSSEC validation is not a recommended practice, is | |||
| bad advice to others, is potentially harmful to end user security, | bad advice to others, is potentially harmful to end user security. | |||
| and is potentially harmful to DNSSEC adoption. | ||||
| 6. Responsibility for Failures | ||||
| A domain administrator is solely and completely responsible for | ||||
| managing their domain name(s) and DNS resource records. This | ||||
| includes complete responsibility for the correctness of those | ||||
| resource records, the proper functioning of their DNS authoritative | ||||
| servers, and the correctness of DNS records linking their domain to a | ||||
| top-level domain (TLD) or other higher level domain. Even in cases | ||||
| where some error may be introduced by a third party, whether that is | ||||
| due to an authoritative server software vendor, software tools | ||||
| vendor, domain name registrar, or other organization, these are all | ||||
| parties that the domain administrator has selected or approved, and | ||||
| therefore is responsible for managing successfully. | ||||
| There are some cases in which the domain administrator is not the | ||||
| same as the domain owner. In those cases, a domain owner has | ||||
| delegated operational responsibility to the domain administrator. So | ||||
| no matter whether a domain owner is also the domain administrator or | ||||
| not, the domain administrator is operationally responsible for the | ||||
| proper configuration operation of the domain. | ||||
| So in the case of a domain name failing to successfully validate, | ||||
| when this is due to a misconfiguration of the domain, that is the | ||||
| sole responsibility of the domain administrator. | ||||
| Any assistance or mitigation responses undertaken by other parties to | ||||
| mitigate the misconfiguration of a domain name by a domain | ||||
| administrator, especially operators of DNS recursive resolvers, are | ||||
| optional and at the pleasure of those parties. | ||||
| 7. Use of a Negative Trust Anchor | 2. Use of a Negative Trust Anchor | |||
| Technical personnel trained in the operation of DNS servers MUST | Technical personnel trained in the operation of DNS servers MUST | |||
| confirm that a failure is due to misconfiguration, as a similar | confirm that a failure is due to misconfiguration, as a similar | |||
| breakage could have occurred if an attacker gained access to a | breakage could have occurred if an attacker gained access to a | |||
| domain's authoritative servers and modified those records or had the | domain's authoritative servers and modified those records or had the | |||
| domain pointed to their own rogue authoritative servers. They should | domain pointed to their own rogue authoritative servers. They should | |||
| also confirm that the domain is not intentionally broken, such as for | also confirm that the domain is not intentionally broken, such as for | |||
| testing purposes as noted in Section 11. Finally, they should make a | testing purposes as noted in Section 6. Finally, they should make a | |||
| reasonable attempt to contact the domain owner of the misconfigured | reasonable attempt to contact the domain owner of the misconfigured | |||
| zone, preferably prior to implementing the Negative Trust Anchor. | zone, preferably prior to implementing the Negative Trust Anchor. | |||
| In the case of a validation failure due to misconfiguration of a TLD | In the case of a validation failure due to misconfiguration of a TLD | |||
| or popular domain name (such as a top 100 website), this could make | or popular domain name (such as a top 100 website), this could make | |||
| content or services in the affected TLD or domain inaccessible for a | content or services in the affected TLD or domain inaccessible for a | |||
| large number of users. In such cases, it may be appropriate to use a | large number of users. In such cases, it may be appropriate to use a | |||
| Negative Trust Anchor as soon as the misconfiguration is confirmed. | Negative Trust Anchor as soon as the misconfiguration is confirmed. | |||
| Once a domain has been confirmed to fail DNSSEC validation due to a | Once a domain has been confirmed to fail DNSSEC validation due to a | |||
| skipping to change at page 7, line 4 ¶ | skipping to change at page 5, line 51 ¶ | |||
| large number of users. In such cases, it may be appropriate to use a | large number of users. In such cases, it may be appropriate to use a | |||
| Negative Trust Anchor as soon as the misconfiguration is confirmed. | Negative Trust Anchor as soon as the misconfiguration is confirmed. | |||
| Once a domain has been confirmed to fail DNSSEC validation due to a | Once a domain has been confirmed to fail DNSSEC validation due to a | |||
| DNSSEC-related misconfiguration, an ISP or other DNS recursive | DNSSEC-related misconfiguration, an ISP or other DNS recursive | |||
| resolver operator may elect to use a Negative Trust Anchor for that | resolver operator may elect to use a Negative Trust Anchor for that | |||
| domain or sub-domain. This instructs their DNS recursive resolver to | domain or sub-domain. This instructs their DNS recursive resolver to | |||
| temporarily NOT perform DNSSEC validation at or in the misconfigured | temporarily NOT perform DNSSEC validation at or in the misconfigured | |||
| domain. This immediately restores access to the domain for end users | domain. This immediately restores access to the domain for end users | |||
| while the domain's administrator corrects the misconfiguration(s). | while the domain's administrator corrects the misconfiguration(s). | |||
| It does not and should not involve turning off validation more | It does not and should not involve turning off validation more | |||
| broadly. | broadly. | |||
| A Negative Trust Anchor MUST only be used for a limited duration. | A Negative Trust Anchor MUST only be used for a limited duration. | |||
| Implementors SHOULD allow the operator using the Negative Trust | Implementors SHOULD allow the operator using the Negative Trust | |||
| Anchor to set an end time and date associated with any Negative Trust | Anchor to set an end time and date associated with any Negative Trust | |||
| Anchor. Optimally this time and date is set in a DNS recursive | Anchor. Optimally this time and date is set in a DNS recursive | |||
| resolver's configuration, though in the short-term this may also be | resolver's configuration, though in the short-term this may also be | |||
| achieved via other systems or supporting processes. Use of a | achieved via other systems or supporting processes. Use of a | |||
| Negative Trust Anchor MUST NOT be automatic. | Negative Trust Anchor MUST NOT be automatic. | |||
| Finally, a Negative Trust Anchor SHOULD be used only in a specific | Finally, a Negative Trust Anchor SHOULD be used only in a specific | |||
| domain or sub-domain and MUST NOT affect validation of other names up | domain or sub-domain and MUST NOT affect validation of other names up | |||
| the authentication chain. For example, a Negative Trust Anchor for | the authentication chain. For example, a Negative Trust Anchor for | |||
| zone1.example.com would affect only names at or below | zone1.example.com would affect only names at or below | |||
| zone1.example.com, and validation would still be performed on | zone1.example.com, and validation would still be performed on | |||
| example.com, .com, and the root ("."). In another example, a | example.com, .com, and the root ("."). This Negative Trust Anchor | |||
| Negative Trust Anchor for example.com would affect only names within | also SHOULD NOT affect names in another branch of the tree (such as | |||
| example.com, and validation would still be performed on .com, and the | example.net). In another example, a Negative Trust Anchor for | |||
| root (".") | example.com would affect only names within example.com, and | |||
| validation would still be performed on .com, and the root ("."). | ||||
| Root (.) <====== | Root (.) <====== | |||
| | || | | || | |||
| | ||<======>+----+----+ DNSSEC | | ||<======>+----+----+ DNSSEC | |||
| | || |Recursive| Validation | | || |Recursive| Validation | |||
| TLD (com) <=====|| |Resolver |<============> | TLD (com) <=====|| |Resolver |<============> | |||
| | +<------>+---------+ | | +<------>+---------+ | |||
| | | DNS NTA | | | DNS NTA | |||
| | | (example.com) | | | (example.com) | |||
| SUB TLD (example.com) <------| <--------------> | SUB TLD (example.com) <------| <--------------> | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| (zone1.example.com <-----| | (zone1.example.com <-----| | |||
| Figure 1: Negative Trust Anchor Diagram | Figure 1: Negative Trust Anchor Diagram | |||
| 8. Managing Negative Trust Anchors | 3. Managing Negative Trust Anchors | |||
| While Negative Trust Anchors have proven useful during the early | While Negative Trust Anchors have proven useful during the early | |||
| stages of DNSSEC adoption, domain owners are ultimately responsible | stages of DNSSEC adoption, domain owners are ultimately responsible | |||
| for managing and ensuring their DNS records are configured correctly | for managing and ensuring their DNS records are configured correctly. | |||
| Section 6. | ||||
| Most current implementations of DNS validating resolvers currently | Most current implementations of DNS validating resolvers currently | |||
| follow [RFC4033] on defining the implementation of Trust Anchor as | follow [RFC4033] on defining the implementation of Trust Anchor as | |||
| either using Delegation Signer (DS), Key Signing Key (KSK), or Zone | either using Delegation Signer (DS), Key Signing Key (KSK), or Zone | |||
| Signing Key (ZSK). A Negative Trust Anchor should use domain name | Signing Key (ZSK). A Negative Trust Anchor should use domain name | |||
| formatting that signifies where in a delegation a validation process | formatting that signifies where in a delegation a validation process | |||
| should be stopped. | should be stopped. | |||
| Different DNS recursive resolvers may have different configuration | Different DNS recursive resolvers may have different configuration | |||
| names for a Negative Trust Anchor. For example, Unbound calls their | names for a Negative Trust Anchor. For example, Unbound calls their | |||
| configuration "domain-insecure." | configuration "domain-insecure." | |||
| [Unbound-Configuration] | [Unbound-Configuration] | |||
| 9. Removal of a Negative Trust Anchor | 4. Removal of a Negative Trust Anchor | |||
| As explored in Section 12.1, using an NTA once the zone correctly | As explored in Section 7.1, using an NTA once the zone correctly | |||
| validates can have security considerations. It is therefore | validates can have security considerations. It is therefore | |||
| recommended that NTA implementors should periodically attempt to | recommended that NTA implementors should periodically attempt to | |||
| validate the domain in question, for the period of time that the | validate the domain in question, for the period of time that the | |||
| Negative Trust Anchor is in place, until such validation is again | Negative Trust Anchor is in place, until such validation is again | |||
| successful. NTAs MUST expire automatically when their configured | successful. NTAs MUST expire automatically when their configured | |||
| lifetime ends. The lifetime MUST NOT exceed a week. Before removing | lifetime ends. The lifetime MUST NOT exceed a week. Before removing | |||
| the Negative Trust Anchor, all authoritative resolvers listed in the | the Negative Trust Anchor, all authoritative resolvers listed in the | |||
| zone should be checked (due to anycast and load balancers it may not | zone should be checked (due to anycast and load balancers it may not | |||
| be possible to check all instances). | be possible to check all instances). | |||
| skipping to change at page 8, line 42 ¶ | skipping to change at page 7, line 40 ¶ | |||
| presumed no longer to be necessary and is removed. Implementations | presumed no longer to be necessary and is removed. Implementations | |||
| SHOULD, by default, perform this operation. Note that under some | SHOULD, by default, perform this operation. Note that under some | |||
| circumstances this is undesirable behavior (for example, if | circumstances this is undesirable behavior (for example, if | |||
| www.example.com has a bad signature, but example.com/SOA is fine) and | www.example.com has a bad signature, but example.com/SOA is fine) and | |||
| so implementations may wish to allow the operator to override this | so implementations may wish to allow the operator to override this | |||
| spot-check / behavior. | spot-check / behavior. | |||
| When removing the NTA, the implementation should remove all cached | When removing the NTA, the implementation should remove all cached | |||
| entries below the NTA node. | entries below the NTA node. | |||
| 10. Comparison to Other DNS Misconfigurations | 5. Comparison to Other DNS Misconfigurations | |||
| As noted in Section 6, domain administrators are ultimately | Domain administrators are ultimately responsible for managing and | |||
| responsible for managing and ensuring their DNS records are | ensuring their DNS records are configured correctly. ISPs or other | |||
| configured correctly. ISPs or other DNS recursive resolver operators | DNS recursive resolver operators cannot and should not correct | |||
| cannot and should not correct misconfigured A, CNAME, MX, or other | misconfigured A, CNAME, MX, or other resource records of domains for | |||
| resource records of domains for which they are not authoritative. | which they are not authoritative. Expecting non-authoritative | |||
| Expecting non-authoritative entities to protect domain administrators | entities to protect domain administrators from any misconfiguration | |||
| from any misconfiguration of resource records is therefore | of resource records is therefore unrealistic and unreasonable, and in | |||
| unrealistic and unreasonable, and in the long-term is harmful to the | the long-term is harmful to the delegated design of the DNS and could | |||
| delegated design of the DNS and could lead to extensive operational | lead to extensive operational instability and/or variation. | |||
| instability and/or variation. | ||||
| 11. Intentionally Broken Domains | 6. Intentionally Broken Domains | |||
| Some domains, such as dnssec-failed.org, have been intentionally | Some domains, such as dnssec-failed.org, have been intentionally | |||
| broken for testing purposes | broken for testing purposes | |||
| [Measuring-DNSSEC-Validation-of-Website-Visitors] [Netalyzr]. For | [Measuring-DNSSEC-Validation-of-Website-Visitors] [Netalyzr]. For | |||
| example, dnssec-failed.org is a DNSSEC-signed domain that is broken. | example, dnssec-failed.org is a DNSSEC-signed domain that is broken. | |||
| If an end user is querying a validating DNS recursive resolver, then | If an end user is querying a validating DNS recursive resolver, then | |||
| this or other similarly intentionally broken domains should fail to | this or other similarly intentionally broken domains should fail to | |||
| resolve and should result in a SERVFAIL error. If such a domain | resolve and should result in a SERVFAIL error. If such a domain | |||
| resolved successfully, then it is a sign that the DNS recursive | resolved successfully, then it is a sign that the DNS recursive | |||
| resolver is not fully validating. | resolver is not fully validating. | |||
| Organizations that utilize Negative Trust Anchors should not add a | Organizations that utilize Negative Trust Anchors should not add a | |||
| Negative Trust Anchor for any intentionally broken domain. | Negative Trust Anchor for any intentionally broken domain. | |||
| Organizations operating an intentionally broken domain may wish to | Organizations operating an intentionally broken domain may wish to | |||
| consider adding a TXT record for the domain to the effect of "This | consider adding a TXT record for the domain to the effect of "This | |||
| domain is purposely DNSSEC broken for testing purposes". | domain is purposely DNSSEC broken for testing purposes". | |||
| 12. Other Considerations | 7. Other Considerations | |||
| 12.1. Security Considerations | 7.1. Security Considerations | |||
| End to end DNSSEC validation will be disabled during the time that a | End to end DNSSEC validation will be disabled during the time that a | |||
| Negative Trust Anchor is used. In addition, the Negative Trust | Negative Trust Anchor is used. In addition, the Negative Trust | |||
| Anchor may be in place after the point in time when the DNS | Anchor may be in place after the point in time when the DNS | |||
| misconfiguration that caused validation to break has been fixed. | misconfiguration that caused validation to break has been fixed. | |||
| Thus, there may be a gap between when a domain has have been re- | Thus, there may be a gap between when a domain has have been re- | |||
| secured and when a Negative Trust Anchor is removed. In addition, a | secured and when a Negative Trust Anchor is removed. In addition, a | |||
| Negative Trust Anchor may be put in place by DNS recursive resolver | Negative Trust Anchor may be put in place by DNS recursive resolver | |||
| operators without the knowledge of the authoritative domain | operators without the knowledge of the authoritative domain | |||
| administrator for a given domain name. However, attempts SHOULD be | administrator for a given domain name. However, attempts SHOULD be | |||
| skipping to change at page 10, line 5 ¶ | skipping to change at page 9, line 5 ¶ | |||
| a domain that fails DNSSEC validation resolves with a supposedly | a domain that fails DNSSEC validation resolves with a supposedly | |||
| validating resolver. As a result, implementors should consider | validating resolver. As a result, implementors should consider | |||
| transparently disclosing those Negative Trust Anchors which are | transparently disclosing those Negative Trust Anchors which are | |||
| currently in place or were in place in the past, such as on a website | currently in place or were in place in the past, such as on a website | |||
| [Disclosure-Example]. This is particularly important since there is | [Disclosure-Example]. This is particularly important since there is | |||
| currently no special DNS query response code that could indicate to | currently no special DNS query response code that could indicate to | |||
| end users or applications that a Negative Trust Anchor is in place. | end users or applications that a Negative Trust Anchor is in place. | |||
| Such disclosures should optimally include both the data and time that | Such disclosures should optimally include both the data and time that | |||
| the Negative Trust Anchor was put in place and when it was removed. | the Negative Trust Anchor was put in place and when it was removed. | |||
| 12.2. Privacy Considerations | 7.2. Privacy Considerations | |||
| There are no privacy considerations in this document. | There are no privacy considerations in this document. | |||
| 12.3. IANA Considerations | 7.3. IANA Considerations | |||
| There are no IANA considerations in this document. | There are no IANA considerations in this document. | |||
| 13. Acknowledgements | 8. Acknowledgements | |||
| Several people made contributions of text to this document and/or | Several people made contributions of text to this document and/or | |||
| played an important role in the development and evolution of this | played an important role in the development and evolution of this | |||
| document. This in some cases included performing a detailed review | document. This in some cases included performing a detailed review | |||
| of this document and then providing feedback and constructive | of this document and then providing feedback and constructive | |||
| criticism for future revisions, or engaging in a healthy debate over | criticism for future revisions, or engaging in a healthy debate over | |||
| the subject of the document. All of this was helpful and therefore | the subject of the document. All of this was helpful and therefore | |||
| the following individuals merit acknowledgement: | the following individuals merit acknowledgement: | |||
| - Joe Abley | - Joe Abley | |||
| skipping to change at page 11, line 22 ¶ | skipping to change at page 10, line 22 ¶ | |||
| - Antoin Verschuren | - Antoin Verschuren | |||
| - Paul Vixie | - Paul Vixie | |||
| - Patrik Wallstrom | - Patrik Wallstrom | |||
| - Nick Weaver | - Nick Weaver | |||
| - Ralf Weber | - Ralf Weber | |||
| Edward Lewis and Evan Hunt provided especially large amounts of text. | Edward Lewis, Evan Hunt and Andew Sullivan provided especially large | |||
| amounts of text and / or detailed review. | ||||
| 14. References | ||||
| 14.1. Normative References | ||||
| [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | 9. References | |||
| STD 13, RFC 1034, November 1987. | ||||
| [RFC1035] Mockapetris, P., "Domain names - implementation and | 9.1. Normative References | |||
| specification", STD 13, RFC 1035, November 1987. | ||||
| [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 | Rose, "DNS Security Introduction and Requirements", RFC | |||
| 4033, March 2005. | 4033, March 2005. | |||
| [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. | ||||
| Rose, "Resource Records for the DNS Security Extensions", | ||||
| RFC 4034, March 2005. | ||||
| [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. | ||||
| Rose, "Protocol Modifications for the DNS Security | ||||
| Extensions", RFC 4035, March 2005. | ||||
| [RFC4398] Josefsson, S., "Storing Certificates in the Domain Name | ||||
| System (DNS)", RFC 4398, March 2006. | ||||
| [RFC4509] Hardaker, W., "Use of SHA-256 in DNSSEC Delegation Signer | ||||
| (DS) Resource Records (RRs)", RFC 4509, May 2006. | ||||
| [RFC5155] Laurie, B., Sisson, G., Arends, R., and D. Blacka, "DNS | ||||
| Security (DNSSEC) Hashed Authenticated Denial of | ||||
| Existence", RFC 5155, March 2008. | ||||
| [RFC5914] Housley, R., Ashmore, S., and C. Wallace, "Trust Anchor | [RFC5914] Housley, R., Ashmore, S., and C. Wallace, "Trust Anchor | |||
| Format", RFC 5914, June 2010. | Format", RFC 5914, June 2010. | |||
| [RFC6781] Kolkman, O., Mekking, W., and R. Gieben, "DNSSEC | [RFC6781] Kolkman, O., Mekking, W., and R. Gieben, "DNSSEC | |||
| Operational Practices, Version 2", RFC 6781, December | Operational Practices, Version 2", RFC 6781, December | |||
| 2012. | 2012. | |||
| 14.2. Informative References | 9.2. Informative References | |||
| [DNSSEC-Validation-Failure-Analysis] | ||||
| Barnitz, J., Creighton, T., Ganster, C., Griffiths, C., | ||||
| and J. Livingood, "Analysis of DNSSEC Validation Failure - | ||||
| NASA.GOV", Comcast , January 2012, | ||||
| <http://www.dnssec.comcast.net/ | ||||
| DNSSEC_Validation_Failure_NASAGOV_20120118_FINAL.pdf>. | ||||
| [Disclosure-Example] | [Disclosure-Example] | |||
| Comcast, "faa.gov Failing DNSSEC Validation (Fixed)", | Comcast, "faa.gov Failing DNSSEC Validation (Fixed)", | |||
| Comcast , February 2013, <http://dns.comcast.net/index | Comcast , February 2013, <http://dns.comcast.net/index | |||
| .php/entry/faa-gov-failing-dnssec-validation-fixed>. | .php/entry/faa-gov-failing-dnssec-validation-fixed>. | |||
| [Measuring-DNSSEC-Validation-of-Website-Visitors] | [Measuring-DNSSEC-Validation-of-Website-Visitors] | |||
| Mens, J., "Is my Web site being used via a DNSSEC- | Mens, J., "Is my Web site being used via a DNSSEC- | |||
| validator?", July 2012, <http://jpmens.net/2012/07/30/ | validator?", July 2012, <http://jpmens.net/2012/07/30/ | |||
| is-my-web-site-being-used-via-dnssec-validator/>. | is-my-web-site-being-used-via-dnssec-validator/>. | |||
| skipping to change at page 14, line 5 ¶ | skipping to change at page 12, line 22 ¶ | |||
| _Command Channel_: view.update name=world negative-trust- | _Command Channel_: view.update name=world negative-trust- | |||
| anchors=(foo.example.com) | anchors=(foo.example.com) | |||
| _Command Channel_: resolver.update name=res1 negative-trust- | _Command Channel_: resolver.update name=res1 negative-trust- | |||
| anchors=(foo.example.com) | anchors=(foo.example.com) | |||
| *Description*: Disables DNSSEC validation for a domain, even if the | *Description*: Disables DNSSEC validation for a domain, even if the | |||
| domain is under an existing security root. | domain is under an existing security root. | |||
| Appendix B. Document Change Log | Appendix B. Discovering broken domains | |||
| Discovering that a domain is DNSSEC broken as result of an operator | ||||
| error instead of an attack is not trivial and the examples here | ||||
| should be vetted by an experienced professional before taking the | ||||
| decision on implementing an negative trust anchor. | ||||
| One of the key thing to look for when looking at a DNSSEC broken | ||||
| domain is consistency and history. It therefore is good if you have | ||||
| the ability to look at the servers DNS traffic over a long period of | ||||
| time or have a database that stores DNS names associated answers | ||||
| (this is often referred to as a "passive DNS database"). Another | ||||
| invaluable tool is dnsviz (http://www.dnsivz.net) which also stores | ||||
| DNSSEC related data historically. The drawback here is that you need | ||||
| to have it test the domain before the incident occurs which might not | ||||
| always be the case. | ||||
| The first and easiest thing to check is if the failure of the domain | ||||
| is consistent across different software implementations. If not you | ||||
| want to inform the vendor where it fails to look deeper in the issue. | ||||
| The next thing is to figure out what the actual failure mode is. | ||||
| There are several tools do this, an incomplete list includes: | ||||
| o DNSViz (http://dnsviz.net) | ||||
| o Verisign DNSSEC debugger (http://dnssec-debugger.verisignlabs.com) | ||||
| o iis.se DNS check (http://dnscheck.iis.se) | ||||
| most of these tools are open source so you can them install locally | ||||
| if you want. | ||||
| Using the tools over the Internet has the advantage though that as | ||||
| these are not located in the same part of the network you already | ||||
| will have more than local view by using different tools. | ||||
| Once you figure out what the error is you need to check if it shows | ||||
| consistently around the world and from all authoritative server.s Use | ||||
| DNS Tools (dig) or DNS looking glasses to verify this. An error that | ||||
| is consistently the same is more likely to be operator caused than an | ||||
| attack, although that is not an guarantee. Also if the output from | ||||
| the authoritative server is consistently different from the resolvers | ||||
| output this hints to an attack rather then an error, unless there is | ||||
| EDNS0 client subnet (draft-vandergaast-edns-client-subnet) applied to | ||||
| the domain. | ||||
| A last check is to look at the actual DNS data. Is the result of the | ||||
| query still the same or has it changed? While a lot of DNSSEC errors | ||||
| occur on events that changes DNSSEC data the actual record someone | ||||
| wants to go often stays the same. Again if the data is the same this | ||||
| is an indication that the error is operator caused not an guarantee. | ||||
| Keep in mind that with DNS being used to globally balance traffic the | ||||
| data associated to a name might be different in different parts of | ||||
| the Internet. | ||||
| Here are some examples of common DNSSEC failures that have been seen | ||||
| as operator signing errors on the Internet: | ||||
| o RRSIG timing issue. Each signature has an inception and expiry | ||||
| time in which between it is valid. Letting this time expire | ||||
| without creating a new signature is one of the most common DNSSEC | ||||
| errors. To a lesser extent it also happened that signatures where | ||||
| made active before the inception time. For all of these errors | ||||
| your primary check is to check on the data. Signature expiration | ||||
| is also about the only error we see on actual data (like | ||||
| www.example.com). All other errors are more or less related to | ||||
| dealing with the chain of trust established by DS records in the | ||||
| parent zone and DNSKEYs in the child zones. These mostly occur | ||||
| during key rollovers, but are not limited to that. | ||||
| o DNSKEYs in child zone don't match parents zone DS record. There | ||||
| is a big variation of this that can happen at any point in the key | ||||
| lifecycle. DNSViz is the best tools to show problems in the | ||||
| chain. If you debug yourself use dig +multiline so that you can | ||||
| see the key id of a DNSKEY. Common Variations of this can be: | ||||
| o DS pointing to a non existent key in the child zone. Questions | ||||
| for considerations here are: Has the existed before and was used? | ||||
| Was there a change in the DNSKEY RRSet recently (indicating a key | ||||
| rollover) and of course has the actual data in the zone changes. | ||||
| Is the zone DNSSEC signed at all and has it been in the past? | ||||
| o DS pointing to an existent key, but no signatures are made with | ||||
| the key. Again the checks above should be done with addition of | ||||
| checking if another key in the DNSKEY RRSet is now used to sign | ||||
| the records. | ||||
| o Data in DS or DNSKEY doesn't match the other. This is more common | ||||
| in initial setup when there was a copy and paste error. Again | ||||
| checking history on data is the best you can do there. It's not | ||||
| possible to give a checklist just to run through to decide if a | ||||
| domain is broken because of an attack or an operator error. | ||||
| All of the above is just a starting point for consideration when | ||||
| having to decide to deploy or not deploy a trust anchor. | ||||
| Appendix C. Document Change Log | ||||
| [RFC Editor: This section is to be removed before publication] | [RFC Editor: This section is to be removed before publication] | |||
| Ind-07 - WG-00: | -02 to -03: | |||
| o Simply updated name to reflect WG doc. | o Included text from Ralph into Appendix B | |||
| WG-00 to WG-01: | o A bunch of comments from Andrew Sullivan ('[DNSOP] negative-trust- | |||
| anchors-02" - Mar 18th) | ||||
| o Updated keywords | ||||
| -01 to -02: | ||||
| o Gah! I forgot to run spell check. And I type like a chimpanzee | ||||
| with bad hand-eye coordination... | ||||
| -00 to -01: | ||||
| o Stole chunks of text from Ed Lewis' mailing list "tirade" :-) | o Stole chunks of text from Ed Lewis' mailing list "tirade" :-) | |||
| o New rndc usage text from Evan. | o New rndc usage text from Evan. | |||
| o Deleted the (already resolved) open issues from Appendix C, moved | o Deleted the (already resolved) open issues from Appendix C, moved | |||
| the unresolved issues into github, resolved them! | the unresolved issues into github, resolved them! | |||
| o Clarification that automated removal is best removal method, and | o Clarification that automated removal is best removal method, and | |||
| how to implement (Evan Hunt) | how to implement (Evan Hunt) | |||
| o Clarify that an NTA is not a RR (Rick Lamb) | o Clarify that an NTA is not a RR (Rick Lamb) | |||
| o Grammar fixes. | o Grammar fixes. | |||
| -01 to -02 | Ind-07 - WG-00: | |||
| o Gah! I forgot to run spell check. And I type like a chimpanzee | o Simply updated name to reflect WG doc. | |||
| with bad hand-eye coordination... | ||||
| Individual-00: First version published as an individual draft. | Individual-00: First version published as an individual draft. | |||
| Individual-01: Fixed minor typos and grammatical nits. Closed all | Individual-01: Fixed minor typos and grammatical nits. Closed all | |||
| open editorial items. | open editorial items. | |||
| Individual-02: Simple date change to keep doc from expiring. | Individual-02: Simple date change to keep doc from expiring. | |||
| Substantive updates planned. | Substantive updates planned. | |||
| Individual-03: Changes to address feedback from Paul Vixie, by adding | Individual-03: Changes to address feedback from Paul Vixie, by adding | |||
| End of changes. 43 change blocks. | ||||
| 181 lines changed or deleted | 205 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/ | ||||