RFC 7344

Automating DNSSEC Delegation Trust Maintenance

๐Ÿ“… published September 2014, from ietf

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 (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. ๐Ÿšซ๐Ÿ”‘

  1. 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. ๐Ÿ’–

  1. 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. ๐Ÿšจ

  1. 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. โœ…

  1. 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