| < draft-ietf-dnsop-delegation-trust-maintainance-01.txt | draft-ietf-dnsop-delegation-trust-maintainance-02.txt > | |||
|---|---|---|---|---|
| dnsop W. Kumari | dnsop W. Kumari | |||
| Internet-Draft Google | Internet-Draft Google | |||
| Intended status: Informational O. Gudmundsson | Intended status: Informational O. Gudmundsson | |||
| Expires: July 8, 2014 Shinkuro Inc. | Expires: August 9, 2014 Shinkuro Inc. | |||
| G. Barwood | G. Barwood | |||
| January 4, 2014 | February 5, 2014 | |||
| Automating DNSSEC delegation trust maintenance | Automating DNSSEC delegation trust maintenance | |||
| draft-ietf-dnsop-delegation-trust-maintainance-01 | draft-ietf-dnsop-delegation-trust-maintainance-02 | |||
| Abstract | Abstract | |||
| This document describes a method to allow DNS operators to more | This document describes a method to allow DNS operators to more | |||
| easily update DNSSEC Key Signing Keys using DNS as communication | easily update DNSSEC Key Signing Keys using DNS as communication | |||
| channel. This document does not address the initial configuration of | channel. This document does not address the initial configuration of | |||
| trust anchors for a domain. The technique described is aimed at | trust anchors for a domain. The technique described is aimed at | |||
| delegations in which it is currently hard to move information from | delegations in which it is currently hard to move information from | |||
| the child to parent. | the child to parent. | |||
| skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| 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 July 8, 2014. | This Internet-Draft will expire on August 9, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 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 | |||
| skipping to change at page 2, line 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.2. Requirements notation . . . . . . . . . . . . . . . . . . 4 | 1.2. Requirements notation . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. DNS delegations . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. DNS delegations . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Relationship between Parent and Child DNS operator . . . 5 | 2.2. Relationship between Parent and Child DNS operator . . . 5 | |||
| 2.2.1. Solution Space . . . . . . . . . . . . . . . . . . . 6 | 2.2.1. Solution Space . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.2.2. DNSSEC key change process . . . . . . . . . . . . . . 7 | 2.2.2. DNSSEC key change process . . . . . . . . . . . . . . 7 | |||
| 3. CDS / CDNSKEY (Child DS/ Child DNSKEY) record definitions . . 7 | 3. CDS / CDNSKEY (Child DS/ Child DNSKEY) record definitions . . 7 | |||
| 3.1. CDS Resource Record Format . . . . . . . . . . . . . . . 7 | 3.1. CDS Resource Record Format . . . . . . . . . . . . . . . 8 | |||
| 3.2. CDNSKEY Resource Record Format . . . . . . . . . . . . . 8 | 3.2. CDNSKEY Resource Record Format . . . . . . . . . . . . . 8 | |||
| 4. Automating DS maintainance with CDS/CDNSKEY records . . . . . 8 | 4. Automating DS maintainance with CDS/CDNSKEY records . . . . . 8 | |||
| 4.1. CDS / CDNSKEY processing rules . . . . . . . . . . . . . 8 | 4.1. CDS / CDNSKEY processing rules . . . . . . . . . . . . . 9 | |||
| 5. Child's CDS / CDNSKEY Publication . . . . . . . . . . . . . . 9 | 5. Child's CDS / CDNSKEY Publication . . . . . . . . . . . . . . 9 | |||
| 6. Parent side CDS / CDNSKEY Consumption . . . . . . . . . . . . 9 | 6. Parent side CDS / CDNSKEY Consumption . . . . . . . . . . . . 9 | |||
| 6.1. Detecting a changed CDS / CDNSKEY . . . . . . . . . . . . 9 | 6.1. Detecting a changed CDS / CDNSKEY . . . . . . . . . . . . 10 | |||
| 6.1.1. CDS / CDNSKEY Polling . . . . . . . . . . . . . . . . 10 | 6.1.1. CDS / CDNSKEY Polling . . . . . . . . . . . . . . . . 10 | |||
| 6.1.2. Other mechanisms . . . . . . . . . . . . . . . . . . 10 | 6.1.2. Other mechanisms . . . . . . . . . . . . . . . . . . 10 | |||
| 6.2. Using the new CDS / CDNSKEY records . . . . . . . . . . . 10 | 6.2. Using the new CDS / CDNSKEY records . . . . . . . . . . . 11 | |||
| 6.2.1. Parent calculates DS . . . . . . . . . . . . . . . . 11 | 6.2.1. Parent calculates DS . . . . . . . . . . . . . . . . 11 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 12 | 8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 14 | 11.2. Informative References . . . . . . . . . . . . . . . . . 14 | |||
| Appendix A. RRR background . . . . . . . . . . . . . . . . . . . 15 | Appendix A. RRR background . . . . . . . . . . . . . . . . . . . 15 | |||
| Appendix B. Changes / Author Notes. . . . . . . . . . . . . . . 15 | Appendix B. Changes / Author Notes. . . . . . . . . . . . . . . 16 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 1. Introduction | 1. Introduction | |||
| When a DNS operator first signs their zone, they need to communicate | When a DNS operator first signs their zone, they need to communicate | |||
| their DS record(s) (or DNSKEY(s)) to their parent through some out- | their DS record(s) (or DNSKEY(s)) to their parent through some out- | |||
| of-band method to complete the chain of trust. | of-band method to complete the chain of trust. | |||
| Each time the child changes/rolls the key that is represented in the | Each time the child changes/rolls the key that is represented in the | |||
| parent, the new and/or deleted key information has to be communicated | parent, the new and/or deleted key information has to be communicated | |||
| to the parent and published there. How this information is sent to | to the parent and published there. How this information is sent to | |||
| skipping to change at page 3, line 22 ¶ | skipping to change at page 3, line 22 ¶ | |||
| DNSSEC provides data integrity to information published in DNS; thus | DNSSEC provides data integrity to information published in DNS; thus | |||
| DNS publication can be used to automate maintenance of delegation | DNS publication can be used to automate maintenance of delegation | |||
| information. This document describes a method to automate | information. This document describes a method to automate | |||
| publication of subsequent DS records, after the initial one has been | publication of subsequent DS records, after the initial one has been | |||
| published. | published. | |||
| Readers are expected to be familiar with DNSSEC, including [RFC4033], | Readers are expected to be familiar with DNSSEC, including [RFC4033], | |||
| [RFC4034], [RFC4035], [RFC5011] and [RFC6781]. | [RFC4034], [RFC4035], [RFC5011] and [RFC6781]. | |||
| This document is a compilation of two earlier drafts: draft-barwood- | This document is a compilation of two earlier drafts: draft-barwood- | |||
| dnsop-ds-publish[I-D.ds-publish] and draft-wkumari-dnsop-ezkeyroll | dnsop-ds-publish[I-D.ds-publish] and draft-wkumari-dnsop-ezkeyroll. | |||
| This document outlines a technique in which the parent periodically | This document outlines a technique in which the parent periodically | |||
| (or upon request) polls its signed children and automatically publish | (or upon request) polls its signed children and automatically publish | |||
| new DS records. To a large extent, the procedures this document | new DS records. To a large extent, the procedures this document | |||
| follows are as described in [RFC6781] section 4.1.2 | follows are as described in [RFC6781] section 4.1.2. | |||
| This technique is in some ways similar to RFC 5011 style rollovers, | This technique is in some ways similar to RFC 5011 style rollovers, | |||
| but for sub-domains DS records, instead of trust anchors | but for sub-domains DS records, instead of trust anchors. | |||
| This technique is designed to be friendly both to fully automated | This technique is designed to be friendly both to fully automated | |||
| tools and humans. Fully automated tools can perform all the actions | tools and humans. Fully automated tools can perform all the actions | |||
| needed without human intervention, and thus can monitor when it is | needed without human intervention, and thus can monitor when it is | |||
| safe to move to the next step. | safe to move to the next step. | |||
| CDS only allows transferring information about DNSSEC keys (DS and | The solution described in this document only allows transferring | |||
| DNSKEY) from the child to the parental agent. It lists exactly what | information about DNSSEC keys (DS and DNSKEY) from the child to the | |||
| the parent should publish, and allows for publication of stand-by | parental agent. It lists exactly what the parent should publish, and | |||
| keys. A different protocol, [I-D.csync], can be used to maintain | allows for publication of stand-by keys. A different protocol, | |||
| other important delegation information, such as NS and glue. These | [I-D.csync], can be used to maintain other important delegation | |||
| two protocols have been kept as separate solutions because the | information, such as NS and glue. These two protocols have been kept | |||
| problems are fundamentally different, and a combined solution is | as separate solutions because the problems are fundamentally | |||
| overly complex. | different, and a combined solution is overly complex. | |||
| This document describes a method for automating maintanance of the | This document describes a method for automating maintanance of the | |||
| delegation trust information, and proposes a polled / periodic | delegation trust information, and proposes a polled / periodic | |||
| trigger for simplicity. Some users may prefer a different trigger, | trigger for simplicity. Some users may prefer a different trigger, | |||
| such as a button on a webpage, a REST interface, DNS NOTIFY, etc. | such as a button on a webpage, a REST interface, DNS NOTIFY, etc. | |||
| These alternate / additional triggers are not discussed in this | These alternate / additional triggers are not discussed in this | |||
| document. | document. | |||
| 1.1. Terminology | 1.1. Terminology | |||
| There terminology we use is defined in this section | The terminology we use is defined in this section | |||
| Highlighted roles | Highlighted roles | |||
| o Child: "The entity on record that has the delegation of the domain | o Child: "The entity on record that has the delegation of the domain | |||
| from the parent" | from the parent" | |||
| o Parent: "The domain in which the child is registered" | o Parent: "The domain in which the child is registered" | |||
| o Child DNS operator: "The entity that maintains and publishes the | o Child DNS operator: "The entity that maintains and publishes the | |||
| zone information for the child DNS" | zone information for the child DNS" | |||
| o Parent DNS operator: "The entity that maintains and publishes the | o Parent DNS operator: "The entity that maintains and publishes the | |||
| zone information for the parent DNS" | zone information for the parent DNS" | |||
| o Parental Agent: "The entity that the child has relationship with, | o Parental Agent: "The entity that the child has relationship with, | |||
| to change its delegation information." | to change its delegation information" | |||
| o Provisioning system: "A system that the operator of the master DNS | o Provisioning system: "A system that the operator of the master DNS | |||
| server operates to maintain the information published in the DNS. | server operates to maintain the information published in the DNS. | |||
| This includes the systems that sign the DNS data." | This includes the systems that sign the DNS data" | |||
| RRR is our shorthand for Registry/Registrar/Registrant model of | RRR is our shorthand for Registry/Registrar/Registrant model of | |||
| parent child relationship see Appendix A for more. | parent child relationship see Appendix A for more. | |||
| 1.2. Requirements notation | 1.2. Requirements notation | |||
| 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. Background | 2. Background | |||
| 2.1. DNS delegations | 2.1. DNS delegations | |||
| DNS operation consists of delegations of authority. For each | DNS operation consists of delegations of authority. For each | |||
| delegation there are (most of the time) two parties, the parent and | delegation there are (most of the time) two parties: the parent and | |||
| the child. | the child. | |||
| The parent publishes information about the delegations to the child; | The parent publishes information about the delegations to the child; | |||
| for the name-servers it publishes an NS RRset that lists a hint for | for the name-servers it publishes an NS [RFC1035] RRset that lists a | |||
| name-servers that are authoritative for the child. The child also | hint for name-servers that are authoritative for the child. The | |||
| publishes a NS RRset, and this set is the authoritative list of name- | child also publishes a NS RRset, and this set is the authoritative | |||
| servers to the child zone. | list of name-servers to the child zone. | |||
| The second RRset the parent sometimes publishes is the DS set. The | The second RRset the parent sometimes publishes is the DS [RFC4034] | |||
| DS RRset provides information about the key(s) that the child has | set. The DS RRset provides information about the DNSKEY(s) that the | |||
| told the parent it will use to sign its DNSKEY RRset. In DNSSEC | child has told the parent it will use to sign its DNSKEY RRset. In | |||
| trust relationship between zones is provided by the following chain: | DNSSEC trust relationship between zones is provided by the following | |||
| chain: | ||||
| parent DNSKEY --> DS --> child DNSKEY. | parent DNSKEY --> DS --> child DNSKEY. | |||
| A prior proposal [I-D.auto-cpsync] suggested that the child send an | A prior proposal [I-D.auto-cpsync] suggested that the child send an | |||
| "update" to the parent via a mechanism similar to Dynamic Update. | "update" to the parent via a mechanism similar to Dynamic Update. | |||
| The main issue became: How does the child find the actual parental | The main issue became: How does the child find the actual parental | |||
| agent/server to send the update to? While that could have been | agent/server to send the update to? While that could have been | |||
| solved via technical means, the proposal died. | solved via technical means, the proposal died. There is also a | |||
| similar proposal in [I-D.parent-zones] | ||||
| As the DS record can only be present at the parent RFC4034 [RFC4034], | As the DS record can only be present at the parent (RFC4034 | |||
| some other record/method is needed to automate the expression of what | [RFC4034]), some other record/method is needed to automate which | |||
| the parental zone DS records contents ought to be. One possibility | DNSKEYs are picked to be represented in the parent zone's DS records. | |||
| is to use flags in the DNSKEY record. If the SEP bit is set, this | One possibility is to use flags in the DNSKEY record. If the SEP bit | |||
| indicates that the DNSKEY is intended for use as a secure entry | is set, this indicates that the DNSKEY is intended for use as a | |||
| point. This DNSKEY signs the DNSKEY RRset, and the Parental Agent | secure entry point. This DNSKEY signs the DNSKEY RRset, and the | |||
| can calculate DS records based on that. But this fails to meet some | Parental Agent can calculate DS records based on that. But this | |||
| operating needs, including the child having no influence what DS | fails to meet some operating needs, including the child having no | |||
| digest algorithms are used and DS records can only be published for | influence what DS digest algorithms are used and DS records can only | |||
| keys that are in the DNSKEY RRset. | be published for keys that are in the DNSKEY RRset. | |||
| 2.2. Relationship between Parent and Child DNS operator | 2.2. Relationship between Parent and Child DNS operator | |||
| In the real world, there are many different relationships between the | In practical application, there are many different relationships | |||
| parent and child DNS operators. The type of relationship affects how | between the parent and child DNS operators. The type of relationship | |||
| the child operator communicates with the parent. This section will | affects how the Child DNS Operator communicates with the parent. | |||
| highlight some of the different situations, but is by no means a | This section will highlight some of the different situations, but is | |||
| complete list. | by no means a complete list. | |||
| Different communication paths: | Different communication paths: | |||
| o Direct/API: The child can change the delegation information via | o Direct/API: The child can change the delegation information via | |||
| automated/scripted means EPP[RFC5730] used by many TLDs is an | automated/scripted means EPP[RFC5730] used by many TLDs is an | |||
| example of this. Another example is the web service's | example of this. Another example is the web service's | |||
| programmatic interfaces that Registrars make available to their | programmatic interfaces that Registrars make available to their | |||
| Reseller's. | Resellers. | |||
| o User Interface: The Child uses a (web) site set up by the Parental | o User Interface: The Child uses a (web) site set up by the Parental | |||
| Agent for updating delegation information. | Agent for updating delegation information. | |||
| o Indirect: The communication has to be transmitted via out-of-band | o Indirect: The communication has to be transmitted via out-of-band | |||
| between two parties, such as email, telephone etc.. This is common | between two parties, such as email, telephone etc.. This is common | |||
| when the Child's DNS operator is neither the child itself nor the | when the Child's DNS operator is neither the child itself nor the | |||
| Registrar for the domain but a third party. | Registrar for the domain but a third party. | |||
| o Multi-step Combinations: The information flows through an | o Multi-step Combinations: The information flows through an | |||
| intermediary. It is possible, but unlikely, that all the steps | intermediary. It is possible, but unlikely, that all the steps | |||
| are automated via API's and there are no humans are involved. | are automated via API's and there are no humans are involved. | |||
| A domain name holder (Child) may operate its own DNS servers or | A domain name holder (Child) may operate its own DNS servers or | |||
| outsource the operation. While we use the word parent as a singular, | outsource the operation. While we use the word parent as a singular, | |||
| parent can consist of single entity or a composite of many discrete | parent can consist of single entity or a composite of many discrete | |||
| parts that have rules and roles. We refer to the entity that the | parts that have rules and roles. We refer to the entity that the | |||
| child corresponds with as the Parent. | child corresponds with as the Parent. | |||
| Another common case is the enterprise case in which an organization | In another common case an enterprise may delegate parts of its name- | |||
| may delegate parts of its name-space to be operated by a group that | space to be operated by a group that is not the same as that which | |||
| is not the same as that which operates the enterprise's DNS servers. | operates the enterprise's DNS servers. In this case the flow of | |||
| In this case the flow of information is frequently handled in either | information is frequently handled in either an ad hoc manner or via | |||
| an ad hoc manner or via some corporate mechanism; this can range from | some corporate mechanism; this can range from email to fully- | |||
| email to fully-automated operation. The word enterprise above covers | automated operation. The word enterprise above covers all | |||
| all organizations where the domains are not sold on the open market | organizations in which the domains are not sold on the open market | |||
| and there is some relationship between the entities. | and there is some relationship between the entities. | |||
| 2.2.1. Solution Space | 2.2.1. Solution Space | |||
| This document is aimed at the cases in which there is an | This document is aimed at the cases in which there is an | |||
| organizational separation of the child and parent. | organizational separation of the child and parent. | |||
| A further complication is when the Child DNS Operation is not the | A further complication is when the Child DNS operator is not the | |||
| Child. There are two common cases of this, | Child. There are two common cases of this, | |||
| a) The Parental Agent (e.g. registrar) handles the DNS operation | a) The Parental Agent (e.g. registrar) handles the DNS operation | |||
| b) A third party takes care of 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, as | If the Parental Agent is the DNS operator, life is much easier; the | |||
| the Parental Agent can inject any delegation changes directly into | Parental Agent can inject any delegation changes directly into the | |||
| the Parents Provisioning system. The techniques described below are | Parent's Provisioning system. The techniques described below are not | |||
| not needed in the case when Parental Agent is the DNS operator. | needed in the case when Parental Agent is the DNS operator. | |||
| In the case of a third party DNS operator, the Child either needs to | In the case of a third party DNS operator, the Child either needs to | |||
| relay changes in DNS delegation or give the Child Operator access to | relay changes in DNS delegation or give the Child DNS Operator access | |||
| its delegation/registration account. | to its delegation/registration account. | |||
| Some parents want the child to express the changes in trust anchors | Some parents want the child to express their DNSKEYS in the form of | |||
| via DS records, while others want to receive DNSKEY records and | DS records, while others want to receive the DNSKEY records and | |||
| calculate the DS records themselves. There is no consensus on which | calculate the DS records themselves. There is no consensus on which | |||
| method is better; both have good reasons to exist. The proposal | method is better; both have good reasons to exist. The proposal | |||
| below can operate with both models, but the child needs to be aware | below can operate with both models, but the child needs to be aware | |||
| of the parental policies. | of the parental policies. | |||
| 2.2.2. DNSSEC key change process | 2.2.2. DNSSEC key change process | |||
| After a Child DNS operator first signs the zone, there is a need to | After a Child DNS operator first signs the zone, there is a need to | |||
| interact with the Parent, for example via the delegation account | interact with the Parent, for example via the delegation account | |||
| interface, to "upload / paste-in the zone's DS information". The | interface, to "upload / paste-in the zone's DS information". The | |||
| action of logging in through the delegation account user interface | action of logging in through the delegation account user interface | |||
| authenticates that the user is authorized to change delegation | authenticates that the user is authorized to change delegation | |||
| information published in the parent zone. In the case where the | information for the child published in the parent zone. In the case | |||
| "Child DNS Operator" does not have access to the registration | where the "Child DNS Operator" does not have access to the | |||
| account, the Child needs to perform the action. | registration account, the Child needs to perform the action. | |||
| At a later date, the Child Operator may want to publish a new DS | At a later date, the Child DNS Operator may want to publish a new DS | |||
| record in the parent, either because they are rolling keys, or | record in the parent, either because they are rolling keys, or | |||
| because they want to publish a stand-by key. This involves | because they want to publish a stand-by key. This involves | |||
| performing the same process as before. Furthermore when this is a | performing the same process as before. Furthermore when this is a | |||
| manual process with cut and paste; operational mistakes will happen. | manual process with cut and paste, operational mistakes will happen | |||
| Or worse the update action in not performed at all. | -- or worse, the update action is not performed at all. | |||
| 3. CDS / CDNSKEY (Child DS/ Child DNSKEY) record definitions | 3. CDS / CDNSKEY (Child DS/ Child DNSKEY) record definitions | |||
| This document specifies two new DNS RRtypes (CDS and CDNSKEY) that | This document specifies two new DNS RRtypes (CDS and CDNSKEY) that | |||
| indicates what the Child wants to be in the parents DS RRset. It | indicates what the Child wants the parent's DS RRset to contain. It | |||
| allows the Child to present DS records and / or DNSKEY records (for | allows the Child to present DS records and / or DNSKEY records (for | |||
| those parents who would rather generate the DS records for their | those parents who would rather generate the DS records for their | |||
| children). | children). | |||
| The CDS / CDNSKEY record is published in the child zone and gives the | The CDS / CDNSKEY record is published in the child zone and gives the | |||
| child control of what is published for it in the parental zone. The | child control of what is published for it in the parental zone. The | |||
| CDS / CDNSKEY RRset expresses what the child would like the DS RRset | 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 | to look like after the change; it is a "replace" operation, and it is | |||
| up to the consumer of the records to translate that into the | up to the consumer of the records to translate that into the | |||
| appropriate add/delete operations in the registration systems (and in | appropriate add/delete operations in the registration systems (and in | |||
| the case of CDNSKEY, to generate the DS from the DNSKEY). | the case of CDNSKEY, to generate the DS from the DNSKEY). | |||
| [RFC Editor: Please remove this paragraph before publication] Version | [[RFC Editor: Please remove this paragraph before publication] | |||
| -04 of this document defined a new record (CTA) that could hold | Version -04 of the ID that became this document (http:// | |||
| either a DS or a DNSKEY record (with a selector to differentiate | tools.ietf.org/id/draft-kumari-ogud-dnsop-cds-04.txt) defined a new | |||
| between them). ] | record (CTA) that could hold either a DS or a DNSKEY record (with a | |||
| selector to differentiate between them). In a shocking development, | ||||
| there was almost full consensus that this was horrid :-) ] | ||||
| 3.1. CDS Resource Record Format | 3.1. CDS Resource Record Format | |||
| The wire and presentation format of the CDS ("Child DS") record is | The wire and presentation format of the CDS ("Child DS") record is | |||
| identical to the DS record [RFC4034]. IANA has allocated RR code 59 | identical to the DS record [RFC4034]. IANA has allocated RR code 59 | |||
| for the CDS record via expert review [I-D.ds-publish]. | for the CDS record via expert review [I-D.ds-publish]. | |||
| No special processing is performed by authoritative servers or by | No special processing is performed by authoritative servers or by | |||
| revolvers, when serving or resolving. For all practical purposes CDS | revolvers, when serving or resolving. For all practical purposes CDS | |||
| is a regular RR type. | is a regular RR type. | |||
| skipping to change at page 9, line 17 ¶ | skipping to change at page 9, line 29 ¶ | |||
| If any these conditions fail the CDS / CDNSKEY record MUST be | If any these conditions fail the CDS / CDNSKEY record MUST be | |||
| ignored. | ignored. | |||
| 5. Child's CDS / CDNSKEY Publication | 5. Child's CDS / CDNSKEY Publication | |||
| Child DNS Operator SHOULD only publish a CDS or CDNSKEY RRset when it | Child DNS Operator SHOULD only publish a CDS or CDNSKEY RRset when it | |||
| wants to make a change to the DS RRset in the Parent. The CDS / | wants to make a change to the DS RRset in the Parent. The CDS / | |||
| CDNSKEY RRset SHOULD be compliant with the rules in Section 4.1. | CDNSKEY RRset SHOULD be compliant with the rules in Section 4.1. | |||
| When the Parent DS is "in-sync" with the CDS, the Child DNS Operator | When the Parent DS is "in-sync" with the CDS, the Child DNS Operator | |||
| SHOULD/MUST delete the CDS RRset. Note that if the child has | MAY delete the CDS RRset. Note that if the child has published a | |||
| published a DNSKEY RR in the CDS, it will have to calculate the DS | DNSKEY RR in the CDS, it will have to calculate the DS (using the | |||
| (using the requested digest algorithm) to do the comparison. | requested digest algorithm) to do the comparison. | |||
| A child MAY publish both CDS and CDNSKEY. If a child chooses to | A child MAY publish both CDS and CDNSKEY. If a child chooses to | |||
| publish both, it SHOULD attempt to maintain consistency (a matching | publish both, it SHOULD attempt to maintain consistency (a matching | |||
| CDS for each CDNSKEY) | CDS for each CDNSKEY) | |||
| 6. Parent side CDS / CDNSKEY Consumption | 6. Parent side CDS / CDNSKEY Consumption | |||
| The CDS / CDNSKEY RRset MAY be used by the Parental Agent to update | The CDS / CDNSKEY RRset MAY be used by the Parental Agent to update | |||
| the DS RRset in the parent zone. The Parental Agent for this uses a | the DS RRset in the parent zone. The Parental Agent for this uses a | |||
| tool that understands the CDS / CDNSKEY signing rules from | tool that understands the CDS / CDNSKEY signing rules from | |||
| skipping to change at page 10, line 21 ¶ | skipping to change at page 10, line 35 ¶ | |||
| 6.1.1. CDS / CDNSKEY Polling | 6.1.1. CDS / CDNSKEY Polling | |||
| This is the only defined use of CDS / CDNSKEY in this document. | This is the only defined use of CDS / CDNSKEY in this document. | |||
| There are limits to the saleability of polling techniques, thus some | There are limits to the saleability of polling techniques, thus some | |||
| other mechanism is likely to be specified later that addresses CDS / | other mechanism is likely to be specified later that addresses CDS / | |||
| CDNSKEY usage in the situation where polling does not scale to. | CDNSKEY usage in the situation where polling does not scale to. | |||
| Having said that Polling will work in many important cases like | Having said that Polling will work in many important cases like | |||
| enterprises, universities, small TLDs etc. In many regulatory | enterprises, universities, small TLDs etc. In many regulatory | |||
| environments the registry is prohibited from talking to the | environments the registry is prohibited from talking to the | |||
| registrant. In most these cases the registrant has a business | registrant. In most of these cases the registrant has a business | |||
| relationship with the registrar, and so the registrar can offer this | relationship with the registrar, and so the registrar can offer this | |||
| as a service. | as a service. | |||
| If the CDS / CDNSKEY RRset does not exist, the Parental Agent MUST | If the CDS / CDNSKEY RRset does not exist, the Parental Agent MUST | |||
| take no action. Specifically it MUST NOT delete or alter the | take no action. Specifically it MUST NOT delete or alter the | |||
| existing DS RRset. | existing DS RRset. | |||
| 6.1.2. Other mechanisms | 6.1.2. Other mechanisms | |||
| It is assume that other mechanisms will be implemented to trigger the | It is assumed that other mechanisms will be implemented to trigger | |||
| parent to look for an updated CDS. As the CDS RR is validated with | the parent to look for an updated CDS / CDNSKEY record. As the CDS / | |||
| DNSSEC, these mechanisms can be unauthenticated (for example, a child | CDNSKEY records are validated with DNSSEC, these mechanisms can be | |||
| could call his parent and request the CDS action be performed, an | unauthenticated (for example, a child could telephone its parent and | |||
| request that they process the new CDS or CDNSKEY record, an | ||||
| unauthenticated POST could be made to a webserver (with rate- | unauthenticated POST could be made to a webserver (with rate- | |||
| limiting), etc.) | limiting), etc.) | |||
| Other documents can specify the trigger conditions. | Other documents can specify the trigger conditions. | |||
| 6.2. Using the new CDS / CDNSKEY records | 6.2. Using the new CDS / CDNSKEY records | |||
| Regardless of how the Parental Agent detected changes to a CDS / | Regardless of how the Parental Agent detected changes to a CDS / | |||
| CDNSKEY RR, the Parental Agent MUST use a DNSSEC validator to obtain | CDNSKEY RR, the Parental Agent MUST use a DNSSEC validator to obtain | |||
| a validated CDS / CDNSKEY RRset from the Child zone. It would be a | a validated CDS / CDNSKEY RRset from the Child zone. It would be a | |||
| good idea if the Parental Agent checked all NS RRs listed at the | good idea if the Parental Agent checked all NS RRs listed at the | |||
| delegation. However, due to the use of technologies such as load | delegation. However, due to the use of technologies such as load | |||
| balancing and anycast, this should not be taken as proof that the new | balancing and anycast, this should not be taken as proof that the new | |||
| skipping to change at page 11, line 35 ¶ | skipping to change at page 12, line 4 ¶ | |||
| There are cases where the Parent wants to calculate the DS record due | There are cases where the Parent wants to calculate the DS record due | |||
| to policy reasons. In this case, the Child publishes CDNSKEY records | to policy reasons. In this case, the Child publishes CDNSKEY records | |||
| containing DNSKEYs. | containing DNSKEYs. | |||
| The parent calculates the DS records on behalf of the children. The | The parent calculates the DS records on behalf of the children. The | |||
| DNS Parent needs to publish guidelines for the children as to what | DNS Parent needs to publish guidelines for the children as to what | |||
| digest algorithms are acceptable in the CDS record. | digest algorithms are acceptable in the CDS record. | |||
| When a Parent operates in "calculate DS" mode it can operate in one | When a Parent operates in "calculate DS" mode it can operate in one | |||
| of two sub-modes | of two sub-modes | |||
| full i.e. it only publishes DS records it calculates from DNSKEY | full i.e. it only publishes DS records it calculates from DNSKEY | |||
| records, | records, | |||
| augment i.e. it will make sure there are DS records for the digest | augment i.e. it will make sure there are DS records for the digest | |||
| algorithm(s) it requires(s). | algorithm(s) it requires(s). | |||
| Implications on Parental Agent are that the CDNSKEY and DS are not | Implications on Parental Agent are that the CDNSKEY and DS are not | |||
| exactly the same after update thus it needs to take that into | exactly the same after update thus it needs to take that into | |||
| consideration when checking CDNSKEY records. Same goes for the Child | consideration when checking CDNSKEY records. Same goes for the Child | |||
| Operator, it needs to be able to detect that the new DS RRset is | DNS Operator, it needs to be able to detect that the new DS RRset is | |||
| "equivalent" to the current CDNSKEY RRset, thus it can remove the | "equivalent" to the current CDNSKEY RRset, thus it can remove the | |||
| CDNSKEY RRset. | CDNSKEY RRset. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| IANA has assigned RR Type code 59 for CDS. This was done for an | IANA has assigned RR Type code 59 for CDS. This was done for an | |||
| earlier version of this document[I-D.ds-publish] This document is to | earlier version of this document[I-D.ds-publish] This document is to | |||
| become the reference for CDS RRtype. | become the reference for CDS RRtype. | |||
| IANA is requested to assign another RR Type for the CDNSKEY. | IANA is requested to assign another RR Type for the CDNSKEY. | |||
| 8. Privacy Considerations | 8. Privacy Considerations | |||
| All of the information handled / transmitted by this protocol is | All of the information handled / transmitted by this protocol is | |||
| public information published in the DNS. | public information published in the DNS. | |||
| 9. Security Considerations | 9. Security Considerations | |||
| This work is for the normal case, when things go wrong there is only | This work is for the normal case; when things go wrong there is only | |||
| so much that automation can fix. | so much that automation can fix. | |||
| If child breaks DNSSEC validation by removing all the DNSKEYs that | If child breaks DNSSEC validation by removing all the DNSKEYs that | |||
| are represented in the DS set its only repair actions are to contact | are represented in the DS set its only repair actions are to contact | |||
| the parent or restore the DNSKEYs in the DS set. | the parent or restore the DNSKEYs in the DS set. | |||
| In the event of a compromise of the server or system generating | In the event of a compromise of the server or system generating | |||
| signatures for a zone, an attacker might be able to generate and | signatures for a zone, an attacker might be able to generate and | |||
| publish new CDS records. The modified CDS records will be picked up | publish new CDS records. The modified CDS records will be picked up | |||
| by this technique and so may allow the attacker to extend the | by this technique and so may allow the attacker to extend the | |||
| effective time of his attack. If there a delay in accepting changes | effective time of his attack. If there a delay in accepting changes | |||
| to DS, as in RFC5011, then the attacker needs to hope his activity is | to DS, as in RFC5011, then the attacker needs to hope his activity is | |||
| not detected before the DS in parent is changed. If this type of | not detected before the DS in parent is changed. If this type of | |||
| change takes place, the child need to contact the parent (possibly | change takes place, the child needs to contact the parent (possibly | |||
| via a registrar web interface) and remove any compromised DS keys. | via a registrar web interface) and remove any compromised DS keys. | |||
| A compromise of the account with the parent (e.g. registrar) will not | A compromise of the account with the parent (e.g. registrar) will not | |||
| be mitigated by this technique, as the "new registrant" can delete/ | be mitigated by this technique, as the "new registrant" can delete/ | |||
| modify the DS records at will. | modify the DS records at will. | |||
| While it may be tempting, this SHOULD NOT be used for initial | While it may be tempting, this SHOULD NOT be used for initial | |||
| enrollment of keys since there is no way to ensure that the initial | enrollment of keys since there is no way to ensure that the initial | |||
| key is the correct one. If is used, strict rules for inclusion of | key is the correct one. If is used, strict rules for inclusion of | |||
| keys like hold down times, challenge data inclusion etc., ought to be | keys like hold down times, challenge data inclusion etc., ought to be | |||
| skipping to change at page 13, line 9 ¶ | skipping to change at page 13, line 20 ¶ | |||
| The CDS RR type should allow for enhanced security by simplifying | The CDS RR type should allow for enhanced security by simplifying | |||
| process. Since rollover is automated, updating a DS RRset by other | process. Since rollover is automated, updating a DS RRset by other | |||
| means may be regarded as unusual and subject to extra security | means may be regarded as unusual and subject to extra security | |||
| checks. | checks. | |||
| If there is a failure in applying changes in child zone to all DNS | If there is a failure in applying changes in child zone to all DNS | |||
| servers listed in either parent or child NS set it is possible that | servers listed in either parent or child NS set it is possible that | |||
| the Parental agent may get confused either not perform action because | the Parental agent may get confused either not perform action because | |||
| it gets different answers on different checks or CDS validation | it gets different answers on different checks or CDS validation | |||
| fails. In the worst case Parental Agent performs an action reversing | fails. In the worst case, Parental Agent performs an action | |||
| a prior action but after the child signing system decides to take the | reversing a prior action but after the child signing system decides | |||
| next step in rollover, resulting in a broken delegation. | to take the next step in rollover, resulting in a broken delegation. | |||
| DNS is a loosely coherent distributed database with local caching; | DNS is a loosely coherent distributed database with local caching; | |||
| therefore it is important to allow old information to expire from | therefore, it is important to allow old information to expire from | |||
| caches before deleting DS or DNSKEY records. Similarly, it is | caches before deleting DS or DNSKEY records. Similarly, it is | |||
| important to allow new records to propagate through the DNS before | important to allow new records to propagate through the DNS before | |||
| use, see [RFC6781] and [I-D.key-time] | use, see [RFC6781] and [I-D.key-time] | |||
| It is common practice for users to outsource their DNS hosting to a | It is common practice for users to outsource their DNS hosting to a | |||
| 3rd party DNS provider. In order for that provider to be able to | 3rd party DNS provider. In order for that provider to be able to | |||
| maintain the DNSSEC information some users give the provider their | maintain the DNSSEC information some users give the provider their | |||
| registrar login credentials (which obviously has negative security | registrar login credentials (which obviously has negative security | |||
| implications). Deploying the solution described in this document | implications). Deploying the solution described in this document | |||
| allows the 3rd party DNS provider to maintain the DNSSEC information | allows the 3rd party DNS provider to maintain the DNSSEC information | |||
| skipping to change at page 13, line 42 ¶ | skipping to change at page 14, line 6 ¶ | |||
| 10. Acknowledgements | 10. Acknowledgements | |||
| We would like to thank a large number of folk, including: Mark | We would like to thank a large number of folk, including: Mark | |||
| Andrews, Joe Abley, Jaap Akkerhuis, Roy Arends, Doug Barton, Brian | Andrews, Joe Abley, Jaap Akkerhuis, Roy Arends, Doug Barton, Brian | |||
| Dickinson, Paul Ebersman, Tony Finch, Patrik Faltsrom, Jim Galvin, | Dickinson, Paul Ebersman, Tony Finch, Patrik Faltsrom, Jim Galvin, | |||
| Paul Hoffman, Olaf Kolkman, Cricket Liu, Stephan Lagerholm, Matt | Paul Hoffman, Olaf Kolkman, Cricket Liu, Stephan Lagerholm, Matt | |||
| Larson, Marco Sanz, Antoin Verschuren, Suzanne Woolf, Paul Wouters, | Larson, Marco Sanz, Antoin Verschuren, Suzanne Woolf, Paul Wouters, | |||
| Matthijs Meeking, John Dickinson, Timothe Litt and Edward Lewis. | Matthijs Meeking, John Dickinson, Timothe Litt and Edward Lewis. | |||
| Special thanks to Wes Hardaker for contributing significant text and | Special thanks to Wes Hardaker for contributing significant text and | |||
| creating the complementary (CSYNC) solution, and to Paul Hoffman for | creating the complementary (CSYNC) solution, and to Paul Hoffman and | |||
| some text. | Mukund Sivaraman for text and review. | |||
| There were a number of other folk with whom we discussed this, | There were a number of other folk with whom we discussed this, | |||
| apologies for not remembering everyone. | apologies for not remembering everyone. | |||
| 11. References | 11. References | |||
| 11.1. Normative 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 | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "DNS Security Introduction and Requirements", RFC | Rose, "DNS Security Introduction and Requirements", RFC | |||
| 4033, March 2005. | 4033, March 2005. | |||
| [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [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, March 2005. | RFC 4034, March 2005. | |||
| skipping to change at page 14, line 49 ¶ | skipping to change at page 15, line 14 ¶ | |||
| [I-D.ds-publish] | [I-D.ds-publish] | |||
| Barwood, G., "DNS Transport", draft-barwood-dnsop-ds- | Barwood, G., "DNS Transport", draft-barwood-dnsop-ds- | |||
| publish-02 (work in progress), June 2011. | publish-02 (work in progress), June 2011. | |||
| [I-D.key-time] | [I-D.key-time] | |||
| Mekking, W., "DNSSEC Key Timing Considerations", draft- | Mekking, W., "DNSSEC Key Timing Considerations", draft- | |||
| ietf-dnsop-dnssec-key-timing-03 (work in progress), July | ietf-dnsop-dnssec-key-timing-03 (work in progress), July | |||
| 2012. | 2012. | |||
| [I-D.parent-zones] | ||||
| Andrews, M., "Updating Parent Zones", November 2013. | ||||
| [RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", | [RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", | |||
| STD 69, RFC 5730, August 2009. | STD 69, RFC 5730, August 2009. | |||
| [RFC5910] Gould, J. and S. Hollenbeck, "Domain Name System (DNS) | [RFC5910] Gould, J. and S. Hollenbeck, "Domain Name System (DNS) | |||
| Security Extensions Mapping for the Extensible | Security Extensions Mapping for the Extensible | |||
| Provisioning Protocol (EPP)", RFC 5910, May 2010. | Provisioning Protocol (EPP)", RFC 5910, May 2010. | |||
| Appendix A. RRR background | Appendix A. RRR background | |||
| In the RRR world, the different parties are frequently from different | In the RRR world, the different parties are frequently from different | |||
| skipping to change at page 15, line 40 ¶ | skipping to change at page 16, line 9 ¶ | |||
| In many RRR cases the Registrar and Registry communicate via | In many RRR cases the Registrar and Registry communicate via | |||
| EPP[RFC5730] and use the EPP DNSSEC extension [RFC5910]. In a number | EPP[RFC5730] and use the EPP DNSSEC extension [RFC5910]. In a number | |||
| of ccTLDs there are other mechanisms in use as well as EPP, but in | of ccTLDs there are other mechanisms in use as well as EPP, but in | |||
| general there seems to be a movement towards EPP usage when DNSSEC is | general there seems to be a movement towards EPP usage when DNSSEC is | |||
| enabled in the TLD. | enabled in the TLD. | |||
| Appendix B. Changes / Author Notes. | Appendix B. Changes / Author Notes. | |||
| [RFC Editor: Please remove this section before publication ] | [RFC Editor: Please remove this section before publication ] | |||
| WG-01 to WG-02 | ||||
| o Many nits and suggestions from Mukund. | ||||
| o Matthijs: " I still think that it is too strong that the Child DNS | ||||
| Operator SHOULD/MUST delete the CDS RRset when the Parent DS is | ||||
| "in-sync". This should be a MAY" | ||||
| WG-00 to WG-01 | WG-00 to WG-01 | |||
| o Addressed Vancouver: "Paul Hoffmann: NOT ready for WGLC. None of | o Addressed Vancouver: "Paul Hoffmann: NOT ready for WGLC. None of | |||
| the 2 documents explain why there is a split between the two | the 2 documents explain why there is a split between the two | |||
| strategies." Thanks to Paul for providing text. | strategies." Thanks to Paul for providing text. | |||
| From -05 to WG-00: | From -05 to WG-00: | |||
| o Nothing rchanged, resubmit under new name. | o Nothing rchanged, resubmit under new name. | |||
| End of changes. 49 change blocks. | ||||
| 97 lines changed or deleted | 115 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||