RFC 7344
Automating DNSSEC Delegation Trust Maintenance
RFC 7344: Automating DNSSEC Delegation Trust Maintenance ๐
okay bestie, first the ID card of the doc ๐ชช this is the bit that tells you who wrote it and what kind of thing it is.
Number: RFC 7344 ๐ Title: Automating DNSSEC Delegation Trust Maintenance โจ Authors: W. Kumari (Google), O. Gudmundsson (OGUD Consulting), and G. Barwood (no organisation listed) ๐ซถ Category: Informational ๐ (published for information, not as a Standards Track spec) ISSN: 2070-1721 Date: September 2014 ๐๏ธ Obsoletes / Updates: the header doesn't list anything this one obsoletes or updates ๐
Abstract โจ
okay so this doc is about helping DNS Operators update DNSSEC Key Signing Keys more easily, and it uses the DNS itself as the communication channel ๐ก it's aimed at delegations where moving info from the Child to the Parent is currently really hard ๐ญ
Status of This Memo ๐
this one is not an Internet Standards Track specification, it's published just for informational purposes ๐
this is a product of the Internet Engineering Task Force (IETF) ๐ธ it represents the consensus of the IETF community and got public review, then the Internet Engineering Steering Group (IESG) approved it for publication ๐ not every IESG-approved doc is a candidate for any level of Internet Standard, so see Section 2 of RFC 5741 for that bit ๐ค
info about the current status, any errata, and how to give feedback is at http://www.rfc-editor.org/info/rfc7344 ๐
Copyright Notice ๐
Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved. ๐
this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as in effect on the date of publication. please actually read those, because they explain your rights and restrictions with respect to this document ๐ and code components pulled out of this doc must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License ๐ง
Table of Contents ๐
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Requirements Notation . . . . . . . . . . . . . . . . . . 4
2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1. DNS Delegations . . . . . . . . . . . . . . . . . . . . . 5
2.2. Relationship between Parent and Child DNS Operators . . . 5
2.2.1. Solution Space . . . . . . . . . . . . . . . . . . . 6
2.2.2. DNSSEC Key Change Process . . . . . . . . . . . . . . 7
3. CDS (Child DS) and CDNSKEY (Child DNSKEY) Record Definitions 7
3.1. CDS Resource Record Format . . . . . . . . . . . . . . . 8
3.2. CDNSKEY Resource Record Format . . . . . . . . . . . . . 8
4. Automating DS Maintenance with CDS/CDNSKEY Records . . . . . 8
4.1. CDS and CDNSKEY Processing Rules . . . . . . . . . . . . 9
5. CDS/CDNSKEY Publication . . . . . . . . . . . . . . . . . . . 9
6. Parent-Side CDS/CDNSKEY Consumption . . . . . . . . . . . . . 9
6.1. Detecting a Changed CDS/CDNSKEY . . . . . . . . . . . . . 10
6.1.1. CDS/CDNSKEY Polling . . . . . . . . . . . . . . . . . 10
6.1.2. Polling Triggers . . . . . . . . . . . . . . . . . . 11
6.2. Using the New CDS/CDNSKEY Records . . . . . . . . . . . . 11
6.2.1. Parent Calculates DS . . . . . . . . . . . . . . . . 12
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 12
9. Security Considerations . . . . . . . . . . . . . . . . . . . 13
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.1. Normative References . . . . . . . . . . . . . . . . . . 15
11.2. Informative References . . . . . . . . . . . . . . . . . 15
Appendix A. RRR Background . . . . . . . . . . . . . . . . . . . 17
Appendix B. CDS Key Rollover Example . . . . . . . . . . . . . . 17
1. Introduction ๐ฆ
the first time a DNS Operator signs a zone, they have to get their keying material over to their Parent through some out-of-band method so the chain of trust is complete ๐ depending on what the Parent wants, the Child might send their DNSKEY record, a DS record, or both ๐
every time the Child changes the key that's represented in the Parent, the updated and/or deleted key info has to be communicated to the Parent and published in the Parent's zone ๐ฉ how that info gets sent depends on the relationship the Child has with the Parent ๐ in lots of cases it's a manual process, and not an easy one ๐ญ for each key change there may be up to two interactions with the Parent ๐ any manual process is susceptible to mistakes and/or errors ๐ and because the process is so annoying, Operators may avoid changing keys or skip needed steps to publish the new DS at the Parent ๐ค
the vibe check: DNSSEC gives data integrity to info published in the DNS, so the DNS itself can be used to automate maintenance of delegation information โจ this doc describes a method to automate publication of subsequent DS records after the initial one has been published ๐
readers are expected to be familiar with DNSSEC, including [RFC4033], [RFC4034], [RFC4035], [RFC5011], and [RFC6781] ๐
this doc outlines a technique where the Parent periodically (or upon request) polls its signed Children and automatically publishes new DS records ๐ to a large extent, the procedures here follow what's described in [RFC6781], Section 4.1.2 ๐
this technique is designed to be friendly to both fully automated tools and humans ๐ง fully automated tools can do all the actions needed without human intervention, so they can monitor when it's safe to move to the next step ๐ค
the solution in this doc only allows transferring info about DNSSEC keys (DS and DNSKEY) from the Child to the Parental Agent ๐ฏ it lists exactly what the Parent should publish and allows for publication of standby keys ๐ธ a different protocol, [CPSYNC-DNS], can maintain other important delegation info, like NS and glue records ๐ซถ these two protocols are kept as separate solutions because the problems are fundamentally different and a combined solution would be overly complex ๐
this doc describes a method for automating maintenance of the delegation trust info and proposes a polled/periodic trigger for simplicity โญ some users may prefer a different trigger, for example a button on a web page, a REST interface, or a DNS NOTIFY ๐ those alternate additional triggers are not discussed in this document ๐คทโโ๏ธ
this proposal does not include all operations needed to maintain DNSSEC key material, specifically the initial introduction or complete removal of all keys ๐ฌ because of that, alternate communications mechanisms must always exist, which can introduce more complexity ๐
1.1. Terminology ๐
the terminology is defined in this section ๐ the highlighted roles are as follows:
- Child: The entity on record that has the delegation of the domain from the Parent. ๐ถ
- Parent: The domain in which the Child is registered. ๐
- Child DNS Operator: The entity that maintains and publishes the zone information for the Child DNS. ๐ ๏ธ
- Parental Agent: The entity that the Child has a relationship with to change its delegation information. ๐ค
- Provisioning System: A system that the Operator of the master DNS server operates to maintain the information published in the DNS. This includes the systems that sign the DNS data. ๐
- CDS/CDNSKEY: This notation refers to CDS and/or CDNSKEY, i.e., one or both. ๐
1.2. Requirements Notation ๐
the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] ๐ง
2. Background ๐ธ
2.1. DNS Delegations ๐ก
DNS operation is made of delegations of authority ๐๏ธ for each delegation there are (most of the time) two parties: the Parent and the Child ๐ฏ
the Parent publishes info about the delegations to the Child ๐ฃ for the name servers, it publishes an NS [RFC1035] Resource Record Set (RRset) that lists a hint for the name servers that are authoritative for the Child ๐งญ the Child also publishes an NS RRset, and that set is the authoritative list of name servers for the Child zone ๐
the second RRset the Parent sometimes publishes is the DS [RFC4034] set ๐ the DS RRset provides info about the DNSKEY(s) that the Child has told the Parent it will use to sign its DNSKEY RRset ๐ in DNSSEC, a trust relationship between zones is provided by this chain:
Parent DNSKEY --> DS --> Child DNSKEY.
a prior proposal, [AUTO-CPSYNC], suggested that the Child send an "update" to the Parent through a mechanism similar to DNS UPDATE ๐จ the main issue became: how does the Child find the actual Parental Agent/ server to send the update to? ๐ค that could have been solved with technical means, but it failed to reach consensus ๐ there's also a similar proposal in [PARENT-ZONES] ๐ซฃ
as the DS record can only be present at the Parent [RFC4034], some other method is needed to automate which DNSKEYs get picked to be represented in the Parent zone's DS records ๐ฏ one possibility is to use flags in the DNSKEY record โจ if the Secure Entry Point (SEP) bit is set, that indicates the DNSKEY is intended for use as a secure entry point ๐ช this DNSKEY signs the DNSKEY RRset, and the Parental Agent can calculate DS records based on that ๐งฎ but this fails to meet some operating needs, including the Child having no influence on what DS digest algorithms are used, and DS records that can only be published for keys that are in the DNSKEY RRset ๐ so this technique would not be compatible with Double-DS rollover [RFC6781] ๐ โโ๏ธ
2.2. Relationship between Parent and Child DNS Operators โจ
okay so, in real life there are LOTS of different relationships between the Parent and Child DNS Operators ๐ and the kind of relationship totally changes how the Child DNS Operator talks to the Parent ๐ฆ this section is just a taste of the situations, not a full list, bestie ๐ซถ
Different communication paths:
- Direct/API: The Child can change the delegation information via automated/scripted means. The Extensible Provisioning Protocol (EPP) [RFC5730], used by many Top-Level Domains (TLDs), is an example of this. Other examples are web-based programmatic interfaces that Registrars make available to their Resellers. ๐คโจ
- User Interface: The Child uses a web site set up by the Parental Agent for updating delegation information. ๐ฑ๏ธ๐ธ
- Indirect: The communication has to be transmitted via an out-of-band mechanism between two parties, such as by email or telephone. This is common when the Child DNS Operator is neither the Child itself nor the Registrar for the domain, but a third party. ๐ง๐
- Multi-step Combinations: The information flows through an intermediary. It is possible, but unlikely, that all the steps are automated via APIs and there are no humans involved. ๐ง
A domain name holder (Child) may operate its own DNS servers or outsource the operation. While we use the word "Parent" as singular, a Parent can consist of a single entity or a composite of many discrete parts that have rules and roles. We refer to the entity that the Child corresponds with as the Parent. ๐
An organization (such as an enterprise) may delegate parts of its name-space to be operated by a group that is not the same as that which operates the organization's DNS servers. In some of these cases, the flow of information is handled either in an ad hoc manner or via some corporate mechanism; this can range from email to a fully automated operation. ๐
2.2.1. Solution Space ๐
This document is aimed at the cases in which there is a separation between the Child and Parent. ๐
A further complication is when the Child DNS Operator is not the Child. There are two common cases of this:
a) The Parental Agent (e.g., Registrar) handles the DNS operation.
b) A third party takes care of the DNS operation.
If the Parental Agent is the DNS Operator, life is much easier ๐; the Parental Agent can inject any delegation changes directly into the Parent's provisioning system. The techniques described below are not needed in the case when the Parental Agent is the DNS Operator.
In the case of a third-party DNS Operator, the Child either needs to relay changes in DNS delegation or give the Child DNS Operator access to its delegation/registration account. ๐
Some Parents want the Child to express their DNSKEYs in the form of DS records, while others want to receive the DNSKEY records and calculate the DS records themselves. There is no consensus on which method is better; both have good reasons to exist. This solution is DS vs. DNSKEY agnostic and allows operation with either. โ๏ธโจ
2.2.2. DNSSEC Key Change Process ๐
After a Child DNS Operator first signs the zone, there is a need to interact with the Parent, for example, via a delegation account interface to upload or paste in the zone's DS information. This action of logging in through the delegation account user interface authenticates that the user is authorized to change delegation information for the Child published in the Parent zone. In the case where the Child DNS Operator does not have access to the registration account, the Child needs to perform the action. ๐โโ๏ธ
At a later date, the Child DNS Operator may want to publish a new DS record in the Parent, either because they are changing keys or because they want to publish a standby key. This involves performing the same process as before. Furthermore, when this is a manual process with cut and paste, operational mistakes will happen -- or worse, the update action will not be performed at all. ๐ญ
The Child DNS Operator may also introduce new keys and can do so when old keys exist and can be used. The Child may also remove old keys, but this document does not support removing all keys. This is to avoid making signed zones unsigned. The Child may not enroll the initial key or introduce a new key when there are no old keys that can be used (without some additional out-of-band validation of the keys) because there is no way to validate the information. ๐ซ๐
- CDS (Child DS) and CDNSKEY (Child DNSKEY) Record Definitions ๐
This document specifies two new DNS resource records, CDS and CDNSKEY. These records are used to convey, from one zone to its Parent, the desired contents of the zone's DS resource record set residing in the Parent zone. ๐ง
The CDS and CDNSKEY resource records are published in the Child zone and give the Child control of what is published for it in the parental zone. The Child can publish these manually, or they can be automatically maintained by DNS provisioning tools. The CDS/CDNSKEY RRset expresses what the Child would like the DS RRset to look like after the change; it is a "replace" operation, and it is up to the software that consumes the records to translate that into the appropriate add/delete operations in the provisioning systems (and in the case of CDNSKEY, to generate the DS from the DNSKEY). If neither CDS nor CDNSKEY RRset is present in the Child, this means that no change is needed. ๐
3.1. CDS Resource Record Format ๐ฆ
The wire and presentation format of the Child DS (CDS) resource record is identical to the DS record [RFC4034]. IANA has allocated RR code 59 for the CDS resource record via Expert Review [DNS-TRANSPORT]. The CDS RR uses the same registries as DS for its fields.
No special processing is performed by authoritative servers or by resolvers, when serving or resolving. For all practical purposes, CDS is a regular RR type. ๐
3.2. CDNSKEY Resource Record Format ๐ธ
The wire and presentation format of the CDNSKEY ("Child DNSKEY") resource record is identical to the DNSKEY record. IANA has allocated RR code 60 for the CDNSKEY resource record via Expert Review. The CDNSKEY RR uses the same registries as DNSKEY for its fields.
No special processing is performed by authoritative servers or by resolvers, when serving or resolving. For all practical purposes, CDNSKEY is a regular RR type. ๐
- Automating DS Maintenance with CDS/CDNSKEY Records ๐ค
CDS/CDNSKEY resource records are intended to be "consumed" by delegation trust maintainers. The use of CDS/CDNSKEY is OPTIONAL.
If the Child publishes either the CDS or the CDNSKEY resource record, it SHOULD publish both. If the Child knows which the Parent consumes, it MAY choose to only publish that record type (for example, some Children wish the Parent to publish a DS, but they wish to keep the DNSKEY "hidden" until needed). If the Child publishes both, the two RRsets MUST match in content. ๐ซถ
4.1. CDS and CDNSKEY Processing Rules ๐ง
If there is neither CDS nor CDNSKEY RRset in the Child, this signals that no change should be made to the current DS set. This means that, once the Child and Parent are in sync, the Child DNS Operator MAY remove all CDS and CDNSKEY resource records from the zone. The Child DNS Operator may choose to do this to decrease the size of the zone or to decrease the workload for the Parent (if the Parent receives no CDS/CDNSKEY records, it can go back to sleep ๐ด). If it does receive a CDS or CDNSKEY RRset, it needs to check them against what is currently published (see Section 5).
The following acceptance rules are placed on the CDS and CDNSKEY resource records as follows:
- Location: MUST be at the Child zone apex.
- Signer: MUST be signed with a key that is represented in both the current DNSKEY and DS RRsets, unless the Parent uses the CDS or CDNSKEY RRset for initial enrollment; in that case, the Parent validates the CDS/CDNSKEY through some other means (see Section 6.1 and the Security Considerations). ๐ก๏ธ
- Continuity: MUST NOT break the current delegation if applied to DS RRset. ๐ง
If any these conditions fail, the CDS or CDNSKEY resource record MUST be ignored, and this error SHOULD be logged. ๐จ
- CDS/CDNSKEY Publication ๐ฃ
The Child DNS Operator publishes CDS/CDNSKEY RRset(s). In order to be valid, the CDS/CDNSKEY RRset(s) MUST be compliant with the rules in Section 4.1. When the Parent DS is in sync with the CDS/CDNSKEY RRset(s), the Child DNS Operator MAY delete the CDS/CDNSKEY RRset(s); the Child can determine if this is the case by querying for DS records in the Parent. โ
- Parent-Side CDS/CDNSKEY Consumption ๐
The CDS/CDNSKEY RRset(s) SHOULD be used by the Parental Agent to update the DS RRset in the Parent zone. The Parental Agent for this uses a tool that understands the CDS/CDNSKEY signing rules in Section 4.1, so it might not be able to use a standard validator. ๐ ๏ธ
The Parent MUST choose to use either CDNSKEY or CDS resource records as its default updating mechanism. The Parent MAY only accept either CDNSKEY or CDS, but it MAY also accept both so it can use the other in the absence of the default updating mechanism; it MUST NOT expect there to be both. ๐ญ
6.1. Detecting a Changed CDS/CDNSKEY ๐
How the Parental Agent gets the CDS/CDNSKEY RRset may differ. Below are two examples of how this can take place. ๐งฉ
Polling: The Parental Agent operates a tool that periodically checks each of the Children that has a DS record to see if there is a CDS or CDNSKEY RRset. ๐
Pushing: The delegation user interface has a button {Fetch DS} that, when pushed, performs the CDS/CDNSKEY processing. If the Parent zone does not contain DS for this delegation, then the "push" SHOULD be ignored. If the Parental Agent displays the contents of the CDS/CDNSKEY to the user and gets confirmation that this represents their key, the Parental Agent MAY use this for initial enrollment (when the Parent zone does not contain the DS for this delegation). ๐
In either case, the Parental Agent MAY apply additional rules that defer the acceptance of a CDS/CDNSKEY change. These rules may include a condition that the CDS/CDNSKEY remains in place and valid for some time period before it is accepted. It may be appropriate in the "Pushing" case to assume that the Child is ready and thus accept changes without delay. โณ
6.1.1. CDS/CDNSKEY Polling ๐
This is the only defined use of CDS/CDNSKEY resource records in this document. There are limits to the scalability of polling techniques; thus, some other mechanism is likely to be specified later that addresses CDS/CDNSKEY resource record usage in the situation where polling runs into scaling issues. Having said that, polling will work in many important cases such as enterprises, universities, and smaller TLDs. In many regulatory environments, the Registry is prohibited from talking to the Registrant. In most of these cases, the Registrant has a business relationship with the Registrar, so the Registrar can offer this as a service. ๐
If the CDS/CDNSKEY RRset(s) do not exist, the Parental Agent MUST take no action. Specifically, it MUST NOT delete or alter the existing DS RRset. ๐ โโ๏ธ
6.1.2. Polling Triggers ๐ฆ
okay so the spec just assumes other mechanisms will exist to tell the Parent "hey, go check for a new CDS/CDNSKEY RRset" ๐ฃ and it's giving trust-but-verify, because the CDS/CDNSKEY records get validated with DNSSEC anyway, so the trigger itself can be unauthenticated ๐ example time: a Child could literally call its Parent and ask them to process the new CDS or CDNSKEY records ๐, or an unauthenticated POST could hit a web server (with rate-limiting, obviously, bestie ๐).
other documents can define what the trigger conditions look like ๐โจ
6.2. Using the New CDS/CDNSKEY Records ๐
no matter how the Parental Agent noticed the CDS/CDNSKEY RRset changed ๐, it SHOULD use a DNSSEC validator to get a validated CDS/CDNSKEY RRset from the Child zone ๐. the one NOT RECOMMENDED exception is when the Parent does some extra validation to confirm the key is the "correct" one ๐ค
the Parental Agent MUST make sure older versions of the CDS/CDNSKEY RRset can't overwrite newer ones ๐ซโช. it MAY do this by checking that the signature inception in the Resource Record Signature (RRSIG) for the CDS/CDNSKEY RRset is later, and/or that the serial number on the Child's Start of Authority (SOA) is greater ๐ข. this might mean the Parental Agent has to keep some state information around ๐๏ธ
the Parental Agent MAY also take extra security measures ๐ก๏ธ for example, if you're worried the Child's Key Signing Key (KSK) got compromised, the Parental Agent may email (or use some other method) to tell the Child DNS Operator about the change ๐ง. the exact out-of-band measures a Parent zone takes are out of scope for this doc, so that's on them ๐ซถ
once the Parental Agent has a valid CDS/CDNSKEY RRset, it MUST check the publication rules from Section 4.1 ๐ง. especially, it MUST check the Continuity rule and do its very best not to invalidate the Child zone ๐ฅบ๐. after that checks out, if the info in the CDS/CDNSKEY and the DS differ, it may apply the changes to the Parent zone โจ. and if the Parent consumes CDNSKEY, it should calculate the DS before doing that comparison ๐งฎ
6.2.1. Parent Calculates DS ๐ง
sometimes the Parent wants to calculate the DS record itself because of policy reasons ๐. in that case the Child publishes CDNSKEY records, and the Parent calculates the DS records on behalf of the Children ๐
when a Parent is in "calculate DS" mode, it can run in one of two sub-modes ๐ช:
- full: the Parent only publishes DS records it calculates from DNSKEY records ๐
- augment: the Parent will make sure there are DS records for the digest algorithm(s) it requires(s) ๐
if the Parent fetches the CDNSKEY RRset and calculates the DS, the result can be different from the CDS the Child published ๐. the differences are only expected to come from the different set of digest algorithms being used ๐ง โจ
7. IANA Considerations ๐ธ
IANA has assigned RR Type code 59 for the CDS resource record ๐. this was done for a draft version, whose content was later folded into this document [DNS-TRANSPORT] ๐. this document is the reference for the CDS RRtype, so it's the official source now ๐
IANA has also assigned an RR Type for the CDNSKEY, and here's the deets ๐
Type: CDNSKEY
Value: 60
Meaning: DNSKEY(s) the Child wants reflected in DS
Reference: This document
8. Privacy Considerations ๐
everything this protocol handles or sends is public info that's already published in the DNS ๐ so there's not really any secret stuff to protect here ๐ซง
9. Security Considerations ๐ฅ
okay bestie, this part is serious ๐ญ. this work is for the normal case, and when things go wrong there's only so much automation can fix ๐ ๏ธ
if the Child breaks DNSSEC validation by removing all the DNSKEYs that are represented in the DS set, its only repair options are to contact the Parent or restore the DNSKEYs in the DS set ๐
if the server or system generating signatures for a zone gets compromised, an attacker might be able to generate and publish new CDS/CDNSKEY resource records ๐. the modified CDS/CDNSKEY records will get picked up by this technique, and that could let the attacker stretch out how long their attack lasts ๐ค. if there's a delay before DS changes get accepted, like in [RFC5011], then the attacker has to hope their activity doesn't get noticed before the DS in the Parent gets changed ๐ต๏ธ. if this kind of change happens, the Child needs to contact the Parent (maybe through a Registrar web interface) and remove any compromised DS keys ๐งน
โ ๏ธ a compromise of the account with the Parent (for example, the Registrar) is NOT something this technique can fix, because the "new Registrant" can delete or modify the DS records whenever they want ๐จ
tempting as it may be, the techniques in this document SHOULD NOT be used for initial enrollment of keys ๐ โโ๏ธ, since there's no way to make sure the initial key is the correct one. if you use it anyway, you MUST use strict rules for including keys, such as hold-down times, challenge data inclusion, or something similar, along with some kind of challenge mechanism ๐. and a Child can't use this mechanism to go from signed to unsigned, because publishing an empty CDS/CDNSKEY RRset means no change should be made in the Parent ๐
the CDS RR type should allow for enhanced security by simplifying the process โจ. since key change is automated, updating a DS RRset by other means may be seen as unusual and subject to extra security checks ๐
since this adds a new way to update info in the Parent, it MUST be clear who is fetching the records and creating the right records in the Parent zone ๐ฃ. some operations might use mechanisms other than the one described here ๐งฉ. for example, a Registrar may assume it's maintaining the DNSSEC key info in the Registry and may have that cached ๐๏ธ. if the Registry is the one fetching the CDS/CDNSKEY RRset, then the Registry and Registrar might have different views of the DNSSEC key material, and the result of that situation is unclear ๐ต. so this mechanism SHOULD NOT be used to bypass intermediaries that might cache info and, because of that, end up with the wrong state ๐ โโ๏ธ
if applying changes in the Child zone fails on some of the DNS servers listed in either the Parent or Child NS set, the Parental Agent might get confused ๐. that's because it could get different answers on different checks, or the CDS RR validation could fail. in the worst case, the Parental Agent reverses a prior action after the Child signing system has already decided to take the next step in the key change process, and that leaves a broken delegation ๐
DNS is a loosely coherent distributed database with local caching ๐ง , so it's important to let old info expire from caches before deleting DS or DNSKEY records โณ. similarly, it's important to let new records propagate through the DNS before using them (see [RFC6781]) ๐
it's super common for users to outsource their DNS hosting to a third-party DNS provider ๐ข. for that provider to maintain the DNSSEC info, some users hand over their Registrar login credentials, which obviously has negative security implications ๐ฌ. using the solution in this document lets third-party DNS providers maintain the DNSSEC info without Registrants giving up their Registrar credentials, which improves security ๐โจ
by automating the maintenance of DNSSEC key info (and taking humans out of the process), we expect fewer DNSSEC-related outages, which should help DNSSEC get deployed more ๐๐
10. Acknowledgements ๐
we would like to thank a huge group of folks, including Mark Andrews, Joe Abley, Jaap Akkerhuis, Roy Arends, Doug Barton, Brian Dickson, Paul Ebersman, Tony Finch, Jim Galvin, Paul Hoffman, Samir Hussain, Tatuya Jinmei, Olaf Kolkman, Stephan Lagerholm, Cricket Liu, Matt Larson, Marco Sanz, Antoin Verschuren, Suzanne Woolf, Paul Wouters, John Dickinson, Timothe Litt, and Edward Lewis ๐ซถ
special thanks to Wes Hardaker for contributing significant text and creating the complementary (CSYNC) solution ๐, and to Patrik Faltstrom, Paul Hoffman, Matthijs Mekking, Mukund Sivaraman, and Jeremy C. Reed for text and in-depth review ๐. Brian Carpenter provided a good Gen-ART review ๐
there were a bunch of other folks we talked to about this document, and apologies for not remembering everyone ๐ฅน๐
11. References ๐
11.1. Normative References
[RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, November 1987.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "DNS Security Introduction and Requirements", RFC
4033, March 2005.
[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.
[RFC5011] StJohns, M., "Automated Updates of DNS Security (DNSSEC)
Trust Anchors", STD 74, RFC 5011, September 2007.
[RFC6781] Kolkman, O., Mekking, W., and R. Gieben, "DNSSEC
Operational Practices, Version 2", RFC 6781, December
2012.
11.2. Informative References
[AUTO-CPSYNC]
Mekking, W., "Automated (DNSSEC) Child Parent
Synchronization using DNS UPDATE", Work in Progress,
December 2010.
[CPSYNC-DNS]
Hardaker, W., "Child To Parent Synchronization in DNS",
Work in Progress, July 2014.
[DNS-TRANSPORT]
Barwood, G., "DNS Transport", Work in Progress, June 2011.
[PARENT-ZONES]
Andrews, M., "Updating Parent Zones", Work in Progress,
November 2013.
[RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)",
STD 69, RFC 5730, August 2009.
[RFC5910] Gould, J. and S. Hollenbeck, "Domain Name System (DNS)
Security Extensions Mapping for the Extensible
Provisioning Protocol (EPP)", RFC 5910, May 2010.
Appendix A. RRR Background โจ
okay so RRR is our shorthand for the Registry/Registrar/Registrant model of Parent-Child relationships ๐
in the RRR world, the different parties are often from different organizations ๐ข even in a single enterprise there can be organizational, geographical, and cultural gaps that change how info gets from a Child to the Parent ๐
because the roles are so complicated and tangled together, automating delegation info hasn't happened yet ๐ญ people have proposed ways to automate it so the DNS is more reliable, but none of those proposals got enough traction to become standards ๐
for example, lots of TLDs use the RRR model ๐ the Registry runs DNS for the TLD, and the Registrars accept registrations and put the info into the Registry's database. the Registrant only talks to the Registrar, and the Registry often isn't allowed to talk to the Registrant directly. so from the Registrant's point of view, the Registrar is the Parent ๐
in lots of RRR setups, the Registrar and Registry talk over EPP [RFC5730] and use the EPP DNSSEC extension [RFC5910] ๐ฅ a bunch of Country Code TLDs (ccTLDs) use other mechanisms too, but overall there's a clear trend toward EPP whenever DNSSEC is turned on in the TLD ๐ฆ
Appendix B. CDS Key Rollover Example ๐ธ
this section walks through how CDS gets used during a KSK rollover ๐ง the example shows the Double-DS rollover method from Section 4.1.2 of [RFC6781] โจ other rollovers using CDNSKEY and a double KSK are left as an exercise for the reader ๐
the table doesn't show the Zone Signing Keys (ZSKs), since they don't matter during KSK rollovers ๐ the Wait steps show which RRset has to expire from caches before you move on to the next step โณ
+------+---------------+---------+---------+--------------+---------+
| Step | State | Parent | Child | DNSKEY and | Child |
| | | DS | KSK | CDS signer | CDS |
+------+---------------+---------+---------+--------------+---------+
| | Beginning | A | A | A | |
| 1 | Add CDS | A | A | A | AB |
| Wait | for DS change | A | A | A | AB |
| 2 | Updated DS | AB | A | A | AB |
| Wait | > DS TTL | AB | A | A | AB |
| 3 | Actual | AB | B | B | AB |
| | Rollover | | | | |
| Wait | > DNSKEY TTL | AB | B | B | AB |
| 4 | Child Cleanup | AB | B | B | B |
| 5 | Parent cleans | B | B | B | B |
| 6 | Optional CDS | B | B | B | |
| | delete | | | | |
+------+---------------+---------+---------+--------------+---------+
Table 1: States ๐
Authors' Addresses ๐
Warren Kumari
Google
1600 Amphitheatre Parkway
Mountain View, CA 94043
US
EMail: warren@kumari.net
Olafur Gudmundsson
OGUD Consulting
3821 Village Park Dr.
Chevy Chase, MD 20815
US
EMail: ogud@ogud.com
George Barwood
33 Sandpiper Close
Gloucester GL2 4LZ
United Kingdom
EMail: george.barwood@blueyonder.co.uk
๐ฆ where this page comes from
- ietf: rfc7344 2014-09
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms