draft-ietf-dnsop-maintain-ds-03.txt | draft-ietf-dnsop-maintain-ds-04.txt | |||
---|---|---|---|---|
dnsop O. Gudmundsson | dnsop O. Gudmundsson | |||
Internet-Draft CloudFlare | Internet-Draft CloudFlare | |||
Intended status: Standards Track P. Wouters | Intended status: Standards Track P. Wouters | |||
Expires: December 12, 2016 Red Hat | Expires: May 4, 2017 Red Hat | |||
June 10, 2016 | October 31, 2016 | |||
Managing DS records from parent via CDS/CDNSKEY | Managing DS records from parent via CDS/CDNSKEY | |||
draft-ietf-dnsop-maintain-ds-03 | draft-ietf-dnsop-maintain-ds-04 | |||
Abstract | Abstract | |||
RFC7344 specifies how DNS trust can be partially maintained in-band | RFC7344 specifies how DNS trust can be maintained across key | |||
between parent and child. There are two features missing in that | rollovers in-band between parent and child. This document elevates | |||
specification: initial trust setup and removal of trust anchor. This | RFC7344 from informational to standards track and adds a standard | |||
document addresses both these omissions. | track method for initial trust setup and removal of secure entry | |||
point. | ||||
Changing a domain's DNSSEC status can be a complicated matter | Changing a domain's DNSSEC status can be a complicated matter | |||
involving multiple unrelated parties. Some of these parties, such as | involving multiple unrelated parties. Some of these parties, such as | |||
the DNS operator, might not even be known by all the organizations | the DNS operator, might not even be known by all the organizations | |||
involved. The inability to disable DNSSEC via in-band signalling is | involved. The inability to disable DNSSEC via in-band signaling is | |||
seen as a problem or liability that prevents some DNSSEC adoption at | seen as a problem or liability that prevents some DNSSEC adoption at | |||
large scale. This document adds a method for in-band signalling of | large scale. This document adds a method for in-band signaling of | |||
these DNSSEC status changes. | these DNSSEC status changes. | |||
Initial trust is considered in general to be a hard technical | This document describes reasonable policies to ease deployment of the | |||
problem, this document sets forth reasonable policies that clarify | initial acceptance of new secure entry points (DS records) | |||
and simplify the initial acceptance policy. | ||||
It is preferable that operators collaborate on the transfer or move | ||||
of a domain. The best method is to perform a Key Signing Key ("KSK") | ||||
plus Zone Signing Key ("ZSK") rollover. If that is not possible, the | ||||
method using an unsigned intermediate state described in this | ||||
document can be used to move the domain between two parties. This | ||||
leaves the domain temporarily unsigned and vulnerable to DNS | ||||
spoofing, but that is preferred over the alternative of validation | ||||
failures due to a mismatched DS and DNSKEY record. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 December 12, 2016. | This Internet-Draft will expire on May 4, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Introducing a DS record . . . . . . . . . . . . . . . . . 3 | 1.1. Introducing a DS record . . . . . . . . . . . . . . . . . 3 | |||
1.2. Removing a DS Record . . . . . . . . . . . . . . . . . . 3 | 1.2. Removing a DS Record . . . . . . . . . . . . . . . . . . 3 | |||
1.3. Notation . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.3. Notation . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. The Three Uses of CDS . . . . . . . . . . . . . . . . . . . . 4 | 2. The Three Uses of CDS . . . . . . . . . . . . . . . . . . . . 4 | |||
2.1. The meaning of the CDS RRset . . . . . . . . . . . . . . 5 | 2.1. The meaning of the CDS RRset . . . . . . . . . . . . . . 5 | |||
3. Enabling DNSSEC via CDS/CDNSKEY . . . . . . . . . . . . . . . 5 | 3. Enabling DNSSEC via CDS/CDNSKEY . . . . . . . . . . . . . . . 5 | |||
3.1. Accept policy via authenticated channel . . . . . . . . . 5 | 3.1. Accept policy via authenticated channel . . . . . . . . . 6 | |||
3.2. Accept with extra checks . . . . . . . . . . . . . . . . 5 | 3.2. Accept with extra checks . . . . . . . . . . . . . . . . 6 | |||
3.3. Accept after delay . . . . . . . . . . . . . . . . . . . 6 | 3.3. Accept after delay . . . . . . . . . . . . . . . . . . . 6 | |||
3.4. Accept with challenge . . . . . . . . . . . . . . . . . . 6 | 3.4. Accept with challenge . . . . . . . . . . . . . . . . . . 6 | |||
4. DNSSEC Delete Algorithm . . . . . . . . . . . . . . . . . . . 6 | 3.5. Accept from inception . . . . . . . . . . . . . . . . . . 7 | |||
5. Security considerations . . . . . . . . . . . . . . . . . . . 7 | 4. DNSSEC Delete Algorithm . . . . . . . . . . . . . . . . . . . 7 | |||
6. IANA considerations . . . . . . . . . . . . . . . . . . . . . 7 | 5. Security considerations . . . . . . . . . . . . . . . . . . . 8 | |||
6.1. Promoting RFC7344 to standards track . . . . . . . . . . 8 | 6. IANA considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6.1. Promoting RFC7344 to standards track . . . . . . . . . . 9 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 8 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 8 | 7.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 9 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | ||||
1. Introduction | 1. Introduction | |||
CDS/CDNSKEY [RFC7344] records are used to signal changes in trust | CDS/CDNSKEY [RFC7344] records are used to signal changes in secure | |||
anchors. This is one method to maintain delegations that can be used | entry points. This is one method to maintain delegations that can be | |||
when the DNS operator has no other way to inform the parent that | used when the DNS operator has no other way to inform the parent that | |||
changes are needed. | changes are needed. This document elevates [RFC7344] from | |||
informational to standards track RFC. | ||||
[RFC7344] is lacking two different options for full automated | In addition, [RFC7344] is lacking two different options for full | |||
operation to be possible. Firstly it did not define a method for the | automated operation to be possible. It did not define a method for | |||
Initial Trust establishment and left it to each parent to come up | the Initial Trust establishment, leaving it open to each parent to | |||
with an acceptance policy. Secondly it did not provide a "delete" | come up with an acceptance policy. Additionally, [RFC7344] did not | |||
signal for the child to tell the parent that it wants to remove the | provide a "delete" signal for the child to inform the parent that the | |||
DNSSEC security for its domain. | DNSSEC security for its domain must be removed. | |||
1.1. Introducing a DS record | 1.1. Introducing a DS record | |||
The big issue is how a child domain instructs the parent that it | Automated insertion of DS records has been limited for many zones by | |||
wants to have a DS record added. This problem can be solved using a | the requirement that all changes pass through a "registry" of the | |||
few simplifying assumptions. This document makes the assumption that | child zone's parent. This has significantly hindered deployment of | |||
there are reasonable policies that can be applied and will allow | DNSSEC at large scale for DNS hosters, as the child zone owner is | |||
automation of trust introduction. | often not aware or able to update DNS records such as the DS record. | |||
Not being able to enable trust via an easily automated mechanism is | This document describes a few possible methods for the parent to | |||
hindering DNSSEC at scale for DNS hosters that do not have automated | accept a request by the child to add a DS record to its zone. These | |||
access to the "registry" of the child zone's parent. | methods have different security properties that addresses different | |||
deployment scenarios, all resulting in an automated method of trust | ||||
introduction. | ||||
1.2. Removing a DS Record | 1.2. Removing a DS Record | |||
This document introduces the delete option for both CDS and CDNSKEY, | This document introduces the delete option for both CDS and CDNSKEY, | |||
allowing a child to signal to the parent to turn off DNSSEC. When a | allowing a child to signal to the parent to turn off DNSSEC. When a | |||
domain is moved from one DNS operator to another one, sometimes it is | domain is moved from one DNS operator to another, sometimes it is | |||
necessary to turn off DNSSEC to facilitate the change of DNS | necessary to turn off DNSSEC to facilitate the change of DNS | |||
operator. Common scenarios include: | operator. Common scenarios include: | |||
1 alternative to doing a proper DNSSEC algorithm rollover due to | 1 Alternative to doing a proper DNSSEC algorithm rollover due to | |||
operational limitations such as software limitations. | operational limitations such as software limitations. | |||
2 moving from a DNSSEC operator to a non-DNSSEC capable operator. | 2 Moving from a DNSSEC operator to a non-DNSSEC capable operator. | |||
3 moving to an operator that cannot/does-not-want to do a proper | 3 Moving to an operator that cannot/does-not-want to do a proper | |||
DNSSEC rollover. | DNSSEC rollover. | |||
4 when moving between two DNS operators that use disjoint sets of | 4 When moving between two DNS operators that use disjoint sets of | |||
algorithms to sign the zone, thus an algorithm rollover can not be | algorithms to sign the zone, thus an algorithm rollover can not be | |||
performed. | performed. | |||
5 the domain holder no longer wants DNSSEC enabled. | 5 The domain holder no longer wants DNSSEC enabled. | |||
The lack of a "remove my DNSSEC" option is cited as a reason why some | The lack of a "remove my DNSSEC" option is cited as a reason why some | |||
operators cannot deploy DNSSEC, as this is seen as an operational | operators cannot deploy DNSSEC, as this is seen as an operational | |||
risk. | risk. | |||
Turning off DNSSEC reduces the security of the domain and thus should | Turning off DNSSEC reduces the security of the domain and thus should | |||
only be done carefully, and that decision SHOULD be fully under the | only be done carefully, and that decision should be fully under the | |||
child domain's control. | child domain's control. | |||
1.3. Notation | 1.3. Notation | |||
When this document uses the word CDS it implies that the same applies | Signaling can happen via CDS or CDNSKEY records. The only | |||
to CDNSKEY and vice verse. The only differences between the two | differences between the two records is how information is | |||
records is how information is represented, and who calculates the DS | represented, and who calculates the DS digest. For clarity, this | |||
digiest. | document uses the term "CDS" throughout the document to mean "either | |||
CDS or CDNSKEY". | ||||
We use RRR to mean Registry Registrar Registrant in the context of | ||||
DNS domain markets. | ||||
When the document uses the word "parent" it implies an entity that is | When the document uses the word "parent" it implies an entity that is | |||
authorized to insert DS records into the parent zone on behalf of the | authorized to insert DS records into the parent zone on behalf of the | |||
child domain. Which entity this exactly is does not matter. It | child domain. Which entity this exactly is does not matter. It | |||
could be the Registrar or Reseller that the child domain was | could be the Registrar or Reseller that the child domain was | |||
purchased from. It could be the Registry that the domain is | purchased from. It could be the Registry that the domain is | |||
registered in when allowed. It could be some other entity when the | registered in when allowed. Or it could be some other entity. | |||
RRR framework is not used. | ||||
1.4. Terminology | 1.4. Terminology | |||
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]. | |||
2. The Three Uses of CDS | 2. The Three Uses of CDS | |||
In general there are three operations that a domain wants to | In general there are three operations that a domain wants to instruct | |||
influence on its parent: | their parent to perform: | |||
1 Enable DNSSEC validation, i.e. place an initial DS RRset in the | 1 Enable DNSSEC validation, i.e. place an initial DS RRset in the | |||
parent. | parent. | |||
2 Roll over KSK, this means updating the DS records in the parent to | 2 Roll over the Key Signing Key ("KSK"), this means updating the DS | |||
reflect the new set of KSK's at the child. This could be an ADD | records in the parent to reflect the new set of KSK's at the | |||
operation, a DELETE operation on one or more records while keeping | child. This could be an ADD operation, a DELETE operation on one | |||
at least one DS RR, or a full REPLACE operation. | or more records while keeping at least one DS RR, or a full | |||
REPLACE operation. | ||||
3 Turn off DNSSEC validation, i.e. delete all the DS records. | 3 Turn off DNSSEC validation, i.e. delete all the DS records. | |||
Operation 2 is covered in [RFC7344], operations 1 and 3 are defined | Rolling the KSK is covered in [RFC7344]. It is considered the safest | |||
in this document. In many people's minds, those two operations carry | use case of a CDS/CDNSKEY record as it makes no change to the trust | |||
more risk than the first one. This document argues that 3 is | relationship between parent and child. Introduction and removal of | |||
identical to 2 and the first one is different (but not that | DS records are defined in this document. As these CDS/CDNSKEY use | |||
different). | cases create or end the trust relationship between the parent and | |||
child, these use cases should be carefully implemented and monitored. | ||||
2.1. The meaning of the CDS RRset | 2.1. The meaning of the CDS RRset | |||
The semantic meaning of publishing a CDS RRset is interpreted to | The semantic meaning of publishing a CDS RRset is interpreted to | |||
mean: | mean: | |||
"Publishing a CDS or CDNSKEY record signals to the parent that the | "Publishing a CDS or CDNSKEY record signals to the parent that the | |||
child desires that the corresponding DS records be synchronized. | child desires that the corresponding DS records be synchronized. | |||
Every parent or parental agent should have an acceptance policy of | Every parent or parental agent should have an acceptance policy of | |||
these records for the three different use cases involved: Initial DS | these records for the three different use cases involved: Initial DS | |||
publication, Key rollover, and Returning to Insecure." | publication, Key rollover, and Returning to Insecure." | |||
In short, the CDS RRset is an instruction to the parent to modify the | In short, the CDS RRset is an instruction to the parent to modify the | |||
DS RRset if the CDS and DS Reset's differ. The acceptance policy for | DS RRset if the CDS and DS Reset's differ. | |||
CDS in the rollover case is "seeing" according to [RFC7344]. The | ||||
acceptance policy in the Delete case is seeing a (validly signed) CDS | The acceptance policy for CDS in the rollover case is "seeing" | |||
RRset with the delete operation specified in this document. | according to [RFC7344]. The acceptance policy in the Delete case is | |||
seeing a (validly signed) CDS RRset with the delete operation | ||||
specified in this document. | ||||
3. Enabling DNSSEC via CDS/CDNSKEY | 3. Enabling DNSSEC via CDS/CDNSKEY | |||
There are number of different models for managing initial trust, but | There are number of different models for managing initial trust, but | |||
in the general case, the child wants to enable global validation for | in the general case, the child wants to enable global validation. As | |||
the future. Thus during the period from the time the child publishes | long as the child is insecure, DNS answers can be forged. The goal | |||
the CDS until the corresponding DS is published at the parent is the | is to promote the child from insecure to secure as soon as reasonably | |||
period that DNS answers for the child could be forged. The goal is | possible by the parent. This means that the period from the child's | |||
to keep this period as short as possible. | publication of CDS/CDNSKEY RRset to the parent publishing the | |||
synchronized DS RRset should be as short as possible. | ||||
One important case is how a third party DNS operator can upload its | One important use case is how a third party DNS operator can upload | |||
DNSSEC information to the parent, so the parent can publish a DS | its DNSSEC information to the parent, so the parent can publish a DS | |||
record for the child. In this case there is a possibility of setting | record for the child. In this case there is a possibility of setting | |||
up some kind of authentication mechanism and submission mechanism | up some kind of authentication mechanism and submission mechanism | |||
that is outside the scope of this document. | that is outside the scope of this document. | |||
Below are some policies that parents can use. These policies assume | Below are some policies that parents can use. These policies assume | |||
that the notifications can be verified or authenticated. | that the notifications can be verified or authenticated. | |||
3.1. Accept policy via authenticated channel | 3.1. Accept policy via authenticated channel | |||
In this case the parent is notified via authenticated channel UI/API | In this case the parent is notified via authenticated channel UI/API | |||
that a CDS/CDNSKEY RRset exists. In the case of a CDS RRset the | that a CDS/CDNSKEY RRset exists. In the case of a CDS RRset the | |||
parent retrieves the CDS and inserts the corresponding DS RRset as | parent retrieves the CDS RRset and inserts the corresponding DS RRset | |||
requested. In the case of CDNSKEY the parent retrieves the CDNSKEY | as requested. In the case of CDNSKEY the parent retrieves the | |||
RRset and calculates the DS record(s). | CDNSKEY RRset and calculates the DS record(s). Parents may limit the | |||
DS record type based on local policy. Parents SHOULD NOT refuse CDS/ | ||||
CDNSKEY updates that do not (yet) have a matching DNSKEY in the child | ||||
zone. This will allow the child to prepublish a spare (and | ||||
potentially offline) DNSKEY. | ||||
3.2. Accept with extra checks | 3.2. Accept with extra checks | |||
In this case the parent checks that the source of the notification is | In this case the parent checks that the source of the notification is | |||
allowed to request the DS insertion. The checks could include | allowed to request the DS insertion. The checks could include | |||
whether this is a trusted entity, whether the nameservers correspond | whether this is a trusted entity, whether the nameservers correspond | |||
to the requester, whether there have been any changes in registration | to the requester, whether there have been any changes in registration | |||
in the last few days, etc. The parent can also send a notification | in the last few days, etc. The parent can also send a notification | |||
requesting a confirmation, for example by sending email to the | requesting a confirmation, for example by sending email to the | |||
registrant requesting a confirmation. The end result is that the CDS | registrant requesting a confirmation. The end result is that the CDS | |||
RRset is accepted at the end of the checks or when the out-of-band | RRset is accepted at the end of the checks or when the out-of-band | |||
confirmation is received. | confirmation is received. Any extra checks should have proper rate | |||
limiting in place to prevent abuse. | ||||
3.3. Accept after delay | 3.3. Accept after delay | |||
In this case, if the parent deems the request valid, it starts | In this case, if the parent deems the request valid, it starts | |||
monitoring the CDS RRset at the child nameservers over period of time | monitoring the CDS RRset at the child nameservers over period of time | |||
to make sure nothing changes. After some time or after a number of | to make sure nothing changes. After some time or after a number of | |||
checks, preferably from different vantage points in the network, the | checks, preferably from different vantage points in the network, the | |||
parent accepts the CDS RRset as a valid signal to update its DS RRset | parent accepts the CDS RRset as a valid signal to update its DS RRset | |||
for this child. | for this child. | |||
3.4. Accept with challenge | 3.4. Accept with challenge | |||
In this case the parent instructs the requester to insert some record | In this case the parent instructs the requester to insert some record | |||
into the child domain to prove it has the ability to do so (i.e., it | into the child domain to prove it has the ability to do so (i.e., it | |||
is the operator of the zone). | is the operator of the zone). This method imposes a new task on the | |||
parent to monitor the child zone to see if the challenge has been | ||||
added to the zone. The parent should verify the challenge is | ||||
published by all the child's nameservers and should test for this | ||||
challenge from various diverse network locations to increase the | ||||
security of this method as much as possible. | ||||
3.5. Accept from inception | ||||
If a parent is adding a new child domain that is not currently | ||||
delegated at all, it could use the child CDS/CDNSKEY RRset to | ||||
immediately publish a DS RRset along with the new NS RRset. This | ||||
would ensure that the new child domain is never active in an insecure | ||||
state. | ||||
4. DNSSEC Delete Algorithm | 4. DNSSEC Delete Algorithm | |||
The DNSKEY algorithm registry contains two reserved values: 0 and | This document defines the previously reserved DNS Security Algorithm | |||
255[RFC4034]. The CERT record [RFC4398] defines the value 0 to mean | Number of value 0 in the context of CDS and CDNSKEY records to mean | |||
the algorithm in the CERT record is not defined in DNSSEC. | that the entire DS RRset at the parent must be removed. The value 0 | |||
remains reserved for the DS and DNSKEY records. | ||||
For this reason, using the value 0 in CDS/CDNSKEY delete operations | No DNSSEC validator can treat algorithm 0 as a valid signature | |||
is potentially problematic, but we propose it here anyway as the risk | algorithm. If a validator sees a DNSKEY or DS record with this | |||
is minimal. The alternative is to reserve a DNSSEC algorithm number | algorithm value, it must treat it as unknown. Accordingly, the zone | |||
for this purpose. | is treated as unsigned unless there are other algorithms present. In | |||
general the value 0 should never be used in the context of DNSKEY and | ||||
DS records. | ||||
Right now, no DNSSEC validator understands algorithm 0 as a valid | The CERT record [RFC4398] defines the value 0 similarly to mean the | |||
signature algorithm. If a validator sees a DNSKEY or DS record with | algorithm in the CERT record is not defined in DNSSEC. | |||
this algorithm value, it MUST treat it as unknown. Accordingly, the | ||||
zone is treated as unsigned unless there are other algorithms | ||||
present. In general the value 0 should never be used in the context | ||||
of DNSKEY and DS records. | ||||
In the context of CDS and CDNSKEY records, DNSSEC algorithm 0 is | The contents of the CDS or CDNSKEY RRset MUST contain one RR and only | |||
defined to mean that the entire DS RRset MUST be removed. The | ||||
contents of the CDS or CDNSKEY RRset MUST contain one RR and only | ||||
contain the exactly the fields as shown below. | contain the exactly the fields as shown below. | |||
1 CDS 0 0 0 | 1 CDS 0 0 0 | |||
2 CDNSKEY 0 3 0 | 2 CDNSKEY 0 3 0 | |||
The keying material payload is represented by a single 0. This | The keying material payload is represented by a single 0. This | |||
record is signed in the same way as regular CDS/CDNSKEY RRset's are | record is signed in the same way as regular CDS/CDNSKEY RRsets are | |||
signed. This is a change in format from strict interpretation of | signed. This is a change in format from strict interpretation of | |||
[RFC7344] and may cause problems with some deployed software. | [RFC7344] and may cause problems with some deployed software. | |||
Strictly speaking the CDS record could be "CDS X 0 X" as only the | Strictly speaking the CDS record could be "CDS X 0 X" as only the | |||
DNSKEY algorithm is what signals the DELETE operation, but for | DNSKEY algorithm is what signals the DELETE operation, but for | |||
clarity the "0 0 0" notation is mandated - this is not a definition | clarity the "0 0 0" notation is mandated - this is not a definition | |||
of DS Digest algorithm 0. The same argument applies to "CDNSKEY 0 3 | of DS Digest algorithm 0. The same argument applies to "CDNSKEY 0 3 | |||
0", the value 3 in second field is mandated by RFC4034 section 2.1.2. | 0", the value 3 in second field is mandated by [RFC4034] section | |||
2.1.2. | ||||
Once the parent has verified the CDS/CDNSKEY RRset and it has passed | Once the parent has verified the CDS/CDNSKEY RRset and it has passed | |||
other acceptance tests, the parent MUST remove the DS RRset. After | other acceptance tests, the parent MUST remove the DS RRset. After | |||
waiting a sufficient amount of time - depending on the parental TTL's | waiting a sufficient amount of time - depending on the parental TTL's | |||
- the child can start the process of turning off DNSSEC. | - the child can start the process of turning off DNSSEC. | |||
5. Security considerations | 5. Security considerations | |||
This document's main goal is to avoid validation failures when a | Turning off DNSSEC reduces the security of the domain and thus should | |||
domain moves from one DNS operator to another. Turning off DNSSEC | only be done as a last resort in preventing DNSSEC validation errors | |||
reduces the security of the domain and thus should only be done as a | due to mismatched DS and DNSKEY records. | |||
last resort. | ||||
In most cases it is preferable that operators collaborate on the | ||||
rollover by doing a KSK+ZSK rollover as part of the hand-off, but | ||||
that is not always possible. This document addresses the case where | ||||
unsigned state is needed to complete a rollover. | ||||
Users SHOULD keep in mind that re-establishing trust in delegation | Users should keep in mind that re-establishing trust in delegation | |||
can be hard and takes a long time. Before deciding to complete the | can be hard and takes time. Before deciding to complete the rollover | |||
rollover via an unsigned state, all options SHOULD be considered. | via an unsigned state, all other options should be considered first. | |||
A parent SHOULD ensure that when it is allowing a child to become | A parent SHOULD ensure that when it is allowing a child to become | |||
securely delegated, that it has a reasonable assurance that the CDS/ | securely delegated, that it has a reasonable assurance that the CDS/ | |||
CDNSKEY RRset that is used to bootstrap the security is visible from | CDNSKEY RRset that is used to bootstrap the security is visible from | |||
a geographically and topologically diverse view. It SHOULD also | a geographically and topologically diverse view. It SHOULD also | |||
ensure that the zone validates correctly if the parent publishes the | ensure that the zone validates correctly if the parent publishes the | |||
DS record. A parent zone might also consider sending an email to its | DS record. A parent zone might also consider sending an email to its | |||
contact addresses to give the child zone a warning that security will | contact addresses to give the child zone a warning that security will | |||
be enabled after a certain amount of wait time - thus allowing a | be enabled after a certain amount of wait time - thus allowing a | |||
child administrator to cancel the request. | child administrator to cancel the request. | |||
This document describes a few possible acceptance criteria for the | ||||
Initial Trust establishment. Due to a large variety of legal | ||||
frameworks surrounding parent domains (TLDs in particular) this | ||||
document cannot give a definitive list of valid acceptance criteria. | ||||
Parental zones should look at the listed methods and pick the most | ||||
secure method possible within their legal and technical scenario, | ||||
possibly further securing the acceptance criteria, as long as the | ||||
deployed method still enables a fully automated method for non-direct | ||||
parties such as third party DNS hosters. | ||||
6. IANA considerations | 6. IANA considerations | |||
This document updates the following IANA registries: "DNS Security | This document updates entry number 0 of the "DNS Security Algorithm | |||
Algorithm Numbers" | Numbers" IANA Registry as follows: | |||
Algorithm 0 adds a reference to this document. | +------+---------+-------+-------+-------+--------------------------+ | |||
| Numb | Descrip | Mnemo | Zone | Trans | Reference | | ||||
| er | tion | nic | Signi | . | | | ||||
| | | | ng | Sec. | | | ||||
+------+---------+-------+-------+-------+--------------------------+ | ||||
| 0 | Delete | DELET | N | N | [RFC4034][RFC4398]RFC- | | ||||
| | DS | E | | | THIS-DOCUMENT] | | ||||
+------+---------+-------+-------+-------+--------------------------+ | ||||
6.1. Promoting RFC7344 to standards track | 6.1. Promoting RFC7344 to standards track | |||
Experience has shown that CDS/CDNSKEY are useful in the deployment of | Experience has shown that CDS/CDNSKEY are useful in the deployment of | |||
DNSSEC. [RFC7344] was published as Informational, this document | DNSSEC. [RFC7344] was published as Informational, this document | |||
elevates RFC7344 to standards track. | elevates RFC7344 to standards track. | |||
7. References | 7. References | |||
7.1. Normative References | 7.1. Normative References | |||
[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", | Rose, "Resource Records for the DNS Security Extensions", | |||
RFC 4034, DOI 10.17487/RFC4034, March 2005, | RFC 4034, DOI 10.17487/RFC4034, March 2005, | |||
<http://www.rfc-editor.org/info/rfc4034>. | <http://www.rfc-editor.org/info/rfc4034>. | |||
[RFC7344] Kumari, W., Gudmundsson, O., and G. Barwood, "Automating | [RFC7344] Kumari, W., Gudmundsson, O., and G. Barwood, "Automating | |||
DNSSEC Delegation Trust Maintenance", RFC 7344, DOI | DNSSEC Delegation Trust Maintenance", RFC 7344, | |||
10.17487/RFC7344, September 2014, | DOI 10.17487/RFC7344, September 2014, | |||
<http://www.rfc-editor.org/info/rfc7344>. | <http://www.rfc-editor.org/info/rfc7344>. | |||
7.2. Informative References | 7.2. Informative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, | |||
RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
[RFC4398] Josefsson, S., "Storing Certificates in the Domain Name | [RFC4398] Josefsson, S., "Storing Certificates in the Domain Name | |||
System (DNS)", RFC 4398, DOI 10.17487/RFC4398, March 2006, | System (DNS)", RFC 4398, DOI 10.17487/RFC4398, March 2006, | |||
<http://www.rfc-editor.org/info/rfc4398>. | <http://www.rfc-editor.org/info/rfc4398>. | |||
Appendix A. Acknowledgements | Appendix A. Acknowledgments | |||
This document is generated using the mmark tool that Miek Gieben has | This document is generated using the mmark tool that Miek Gieben has | |||
developed. We thank number of people that have provided feedback and | developed. We thank number of people that have provided feedback and | |||
useful comments including Bob Harold, John Levine, Matthijs Mekking, | useful comments including Bob Harold, John Levine, Matthijs Mekking, | |||
Dan York, Shane Kerr, Jacques Latour. | Dan York, Shane Kerr, Jacques Latour. | |||
Authors' Addresses | Authors' Addresses | |||
Olafur Gudmundsson | Olafur Gudmundsson | |||
CloudFlare | CloudFlare | |||
End of changes. 47 change blocks. | ||||
124 lines changed or deleted | 167 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |