| < draft-ietf-dnsop-delegation-trust-maintainance-04.txt | draft-ietf-dnsop-delegation-trust-maintainance-05.txt > | |||
|---|---|---|---|---|
| dnsop W. Kumari | dnsop W. Kumari | |||
| Internet-Draft Google | Internet-Draft Google | |||
| Intended status: Informational O. Gudmundsson | Intended status: Informational O. Gudmundsson | |||
| Expires: October 12, 2014 Shinkuro Inc. | Expires: October 13, 2014 Shinkuro Inc. | |||
| G. Barwood | G. Barwood | |||
| April 10, 2014 | April 11, 2014 | |||
| Automating DNSSEC delegation trust maintenance | Automating DNSSEC Delegation Trust Maintenance | |||
| draft-ietf-dnsop-delegation-trust-maintainance-04 | draft-ietf-dnsop-delegation-trust-maintainance-05 | |||
| 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 the DNS as communication | easily update DNSSEC Key Signing Keys using the 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 October 12, 2014. | This Internet-Draft will expire on October 13, 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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . 8 | 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 . . . . . . . . . . . . . 9 | 4.1. CDS / CDNSKEY Processing Rules . . . . . . . . . . . . . 9 | |||
| 5. Child's CDS / CDNSKEY Publication . . . . . . . . . . . . . . 9 | 5. CDS / CDNSKEY Publication . . . . . . . . . . . . . . . . . . 9 | |||
| 6. Parent side CDS / CDNSKEY Consumption . . . . . . . . . . . . 10 | 6. Parent Side CDS / CDNSKEY Consumption . . . . . . . . . . . . 9 | |||
| 6.1. Detecting a changed CDS / CDNSKEY . . . . . . . . . . . . 10 | 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 . . . . . . . . . . . . . . . . . . 11 | 6.1.2. Other Mechanisms . . . . . . . . . . . . . . . . . . 10 | |||
| 6.2. Using the new CDS / CDNSKEY records . . . . . . . . . . . 11 | 6.2. Using the New CDS / CDNSKEY Records . . . . . . . . . . . 11 | |||
| 6.2.1. Parent calculates DS . . . . . . . . . . . . . . . . 12 | 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 . . . . . . . . . . . . . . . . . . . . . . 14 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 15 | 11.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
| Appendix A. RRR background . . . . . . . . . . . . . . . . . . . 15 | Appendix A. RRR background . . . . . . . . . . . . . . . . . . . 15 | |||
| Appendix B. Changes / Author Notes. . . . . . . . . . . . . . . 16 | Appendix B. Changes / Author Notes. . . . . . . . . . . . . . . 16 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | 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 in the parent's zone. How this information is sent | |||
| the parent depends on the relationship the child has with the parent. | to the parent depends on the relationship the child has with the | |||
| parent. In many cases this is a manual process, and not an easy one. | ||||
| In many cases this is a manual process, and not an easy one. For | For each key roll, there may be up to two interactions with the | |||
| each key roll, there may be two interactions with the parent. Any | parent. Any manual process is susceptible to mistakes and/or errors. | |||
| manual process is susceptible to mistakes and/or errors. In | In addition, due to the annoyance factor of the process, operators | |||
| addition, due to the annoyance factor of the process, operators may | may avoid performing key rollovers or skip needed steps to publish | |||
| avoid performing key rollovers or skip needed steps to publish the | the new DS at the parent. | |||
| new DS at the parent. | ||||
| 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 [RFC5011] style rollovers, | ||||
| 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. | |||
| The solution described in this document only allows transferring | The solution described in this document only allows transferring | |||
| information about DNSSEC keys (DS and DNSKEY) from the child to the | information about DNSSEC keys (DS and DNSKEY) from the child to the | |||
| parental agent. It lists exactly what the parent should publish, and | parental agent. It lists exactly what the parent should publish, and | |||
| allows for publication of stand-by keys. A different protocol, | allows for publication of stand-by keys. A different protocol, | |||
| [I-D.csync], can be used to maintain other important delegation | [I-D.csync], can be used to maintain other important delegation | |||
| information, such as NS and glue. These two protocols have been kept | information, such as NS and glue. These two protocols have been kept | |||
| as separate solutions because the problems are fundamentally | as separate solutions because the problems are fundamentally | |||
| different, and a combined solution is 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. This proposal does not include all operations needed for | document. | |||
| the maintenance of DNSSEC key material, specifically the introduction | ||||
| or complete removal of all keys. Because of this, alternate | This proposal does not include all operations needed for the | |||
| communications mechanisms must always exist, potentially introducing | maintenance of DNSSEC key material, specifically the initial | |||
| more complexity. | introduction or complete removal of all keys. Because of this, | |||
| alternate communications mechanisms must always exist, potentially | ||||
| introducing more complexity. | ||||
| 1.1. Terminology | 1.1. Terminology | |||
| The 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 | |||
| skipping to change at page 4, line 35 ¶ | skipping to change at page 4, line 34 ¶ | |||
| 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 [RFC1035] RRset that lists a | for the name servers it publishes an NS [RFC1035] RRset that lists a | |||
| hint for name-servers that are authoritative for the child. The | hint for name servers that are authoritative for the child. The | |||
| child also publishes a NS RRset, and this set is the authoritative | child also publishes a NS RRset, and this set is the authoritative | |||
| list of name-servers to the child zone. | list of name servers to the child zone. | |||
| The second RRset the parent sometimes publishes is the DS [RFC4034] | The second RRset the parent sometimes publishes is the DS [RFC4034] | |||
| set. The DS RRset provides information about the DNSKEY(s) that the | set. The DS RRset provides information about the DNSKEY(s) that the | |||
| child has told the parent it will use to sign its DNSKEY RRset. In | child has told the parent it will use to sign its DNSKEY RRset. In | |||
| DNSSEC trust relationship between zones is provided by the following | DNSSEC trust relationship between zones is provided by the following | |||
| chain: | 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. There is also a | solved via technical means, the proposal died. There is also a | |||
| similar proposal in [I-D.parent-zones] | similar proposal in [I-D.parent-zones]. | |||
| As the DS record can only be present at the parent (RFC4034 | As the DS record can only be present at the parent (RFC4034 | |||
| [RFC4034]), some other record/method is needed to automate which | [RFC4034]), some other record/method is needed to automate which | |||
| DNSKEYs are picked to be represented in the parent zone's DS records. | DNSKEYs are picked to be represented in the parent zone's DS records. | |||
| One possibility is to use flags in the DNSKEY record. If the SEP bit | One possibility is to use flags in the DNSKEY record. If the SEP bit | |||
| is set, this indicates that the DNSKEY is intended for use as a | is set, this indicates that the DNSKEY is intended for use as a | |||
| secure entry point. This DNSKEY signs the DNSKEY RRset, and the | secure entry point. This DNSKEY signs the DNSKEY RRset, and the | |||
| Parental Agent can calculate DS records based on that. But this | Parental Agent can calculate DS records based on that. But this | |||
| fails to meet some operating needs, including the child having no | fails to meet some operating needs, including the child having no | |||
| influence what DS digest algorithms are used and DS records can only | influence what DS digest algorithms are used and DS records can only | |||
| be published for keys that are in the DNSKEY RRset. | be published for keys that are in the DNSKEY RRset, and thus this | |||
| technique would not be compatible with Double-DS key rollover. | ||||
| 2.2. Relationship between Parent and Child DNS operator | 2.2. Relationship Between Parent and Child DNS Operator | |||
| In practical application, there are many different relationships | In practical application, there are many different relationships | |||
| between the parent and child DNS operators. The type of relationship | between the parent and child DNS operators. The type of relationship | |||
| affects how the Child DNS Operator communicates with the parent. | affects how the Child DNS Operator communicates with the parent. | |||
| This section will highlight some of the different situations, but is | This section will highlight some of the different situations, but is | |||
| by no means a 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 | |||
| skipping to change at page 6, line 35 ¶ | skipping to change at page 6, line 35 ¶ | |||
| automated operation. The word enterprise above covers all | automated operation. The word enterprise above covers all | |||
| organizations in which 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 Operator 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; the | If the Parental Agent is the DNS operator, life is much easier; the | |||
| Parental Agent can inject any delegation changes directly into the | Parental Agent can inject any delegation changes directly into the | |||
| Parent's Provisioning system. The techniques described below are not | Parent's Provisioning system. The techniques described below are 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 DNS Operator access | relay changes in DNS delegation or give the Child DNS Operator access | |||
| skipping to change at page 7, line 28 ¶ | skipping to change at page 7, line 28 ¶ | |||
| At a later date, the Child DNS 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 is not performed at all. | -- or worse, the update action is not performed at all. | |||
| The Child DNS Operator may also introduce new keys, and can do so | 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 | when old keys exist and can be used. The Child may also remove old | |||
| keys, but we do not support removing all keys. This is to avoid | keys, but this document does not support removing all keys. This is | |||
| making signed zones unsigned. | 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 | ||||
| The Child may not introduce a new key when no old keys can be used, | can be used, because there is no way to validate the information. | |||
| and nor may it remove the last key from the RRSet of the zone apex. | ||||
| The Child may not enroll the initial key or introduce a new key when | ||||
| there are no old keys that can be used, because there is no way to | ||||
| validate the information. [TODO ADD TEXT RE REMOVAL) | ||||
| 3. CDS / CDNSKEY (Child DS/ Child DNSKEY) record definitions | 3. CDS / CDNSKEY (Child DS/ Child DNSKEY) Record Definitions | |||
| This document specifies two new resource records, CDS and CDNSKEY. | This document specifies two new resource records, CDS and CDNSKEY. | |||
| These records are used to convey, from one zone to it's parent, the | These records are used to convey, from one zone to it's parent, the | |||
| desired contents of the zone's DS resource record set residing in the | desired contents of the zone's DS resource record set residing in the | |||
| parent zone. | parent zone. | |||
| The CDS / CDNSKEY records are published in the child zone and gives | The CDS / CDNSKEY records are 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 | 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 | RRset to look like after the change; it is a "replace" operation, and | |||
| skipping to change at page 8, line 19 ¶ | skipping to change at page 8, line 14 ¶ | |||
| /tools.ietf.org/id/draft-kumari-ogud-dnsop-cds-04.txt) defined a new | /tools.ietf.org/id/draft-kumari-ogud-dnsop-cds-04.txt) defined a new | |||
| record (CTA) that could hold either a DS or a DNSKEY record (with a | record (CTA) that could hold either a DS or a DNSKEY record (with a | |||
| selector to differentiate between them). In a shocking development, | selector to differentiate between them). In a shocking development, | |||
| there was almost full consensus that this was horrid :-) ] | 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]. CDS uses the | for the CDS record via expert review [I-D.ds-publish]. CDS uses the | |||
| same registries as DS for its fields | same registries as DS for its fields. | |||
| 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. | |||
| 3.2. CDNSKEY Resource Record Format | 3.2. CDNSKEY Resource Record Format | |||
| The wire and presentation format of the CDNSKEY ("Child DNSKEY") | The wire and presentation format of the CDNSKEY ("Child DNSKEY") | |||
| record is identical to the DNSKEY record. CDNSKEY uses the same | record is identical to the DNSKEY record. CDNSKEY uses the same | |||
| registries as DNSKEY for its fields. | registries as DNSKEY for its fields. | |||
| 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 | revolvers, when serving or resolving. For all practical purposes | |||
| CDNSKEY is a regular RR type. | CDNSKEY is a regular RR type. | |||
| 4. Automating DS maintainance with CDS/CDNSKEY records | 4. Automating DS Maintainance With CDS/CDNSKEY records | |||
| CDS/CDNSKEY records are intended to be "consumed" by delegation trust | CDS/CDNSKEY records are intended to be "consumed" by delegation trust | |||
| maintainers. The use of CDS/CDNSKEY is optional. | maintainers. The use of CDS/CDNSKEY is optional. | |||
| Some parents prefer to accept DNSSEC key information in DS format, | Some parents prefer to accept DNSSEC key information in DS format, | |||
| some parents prefer to accept it in DNSKEY format, and calculate the | some parents prefer to accept it in DNSKEY format, and calculate the | |||
| DS record on the child's behalf. Each method has pros and cons, both | DS record on the child's behalf. Each method has pros and cons, both | |||
| technical and policy. This solution is DS vs DNSKEY agnostic, and | technical and policy. This solution is DS vs DNSKEY agnostic, and | |||
| allows operation with either. | allows operation with either. | |||
| If the child knows what the parent prefers, they can publish the | The child SHOULD publish both CDS and CDNSKEY records. If the child | |||
| parent's preferred record type. If the child does not know (or | knows which the parent consumes, it MAY choose to only publish that | |||
| simply chooses to), they can publish both CDS and CDNSKEY. If the | record type (for example, some children wish the parent to publish a | |||
| child publishes both, the two RRsets they MUST match in content. The | DS, but they wish to keep the DNSKEY "hidden" until needed). If the | |||
| parent should use whichever one they choose, but SHOULD NOT query for | child publishes both, the two RRsets MUST match in content. The | |||
| parent should use whichever one they choose, but MUST NOT query for | ||||
| both and perform consistency checks between the CDS and CDNSKEY | both and perform consistency checks between the CDS and CDNSKEY | |||
| records. | records. | |||
| [Editor note: It is not an error for a child to have published CDS | 4.1. CDS / CDNSKEY Processing Rules | |||
| records and not have CDNSKEYs that hash to those records, nor for | ||||
| there to be CDNSKEY records without matching DS records. This is | ||||
| because a child might have been publishing CDS records and then the | ||||
| parent's policy changes to require CDNSKEY records. The child might | ||||
| forget to remove the CDS, etc. This avoids all sorts of error | ||||
| conditions / complexity, etc.] | ||||
| 4.1. CDS / CDNSKEY processing rules | ||||
| If there are no CDS / CDNSKEY resource records in the child, this | If there are no CDS / CDNSKEY resource records in the child, this | |||
| signals that no change should be made to the current DS set. 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 | means that, once the child and parent are in sync, the child DNS | |||
| operator SHOULD remove all CDS records from the zone. | operator SHOULD remove all CDS records from the zone. | |||
| Following acceptance rules are placed on the CDS / CDNSKEY records as | Following acceptance rules are placed on the CDS / CDNSKEY records as | |||
| follows: | follows: | |||
| o Location: "the CDS / CDNSKEY record MUST be at the child zone | o Location: "the CDS / CDNSKEY record MUST be at the child zone | |||
| skipping to change at page 9, line 37 ¶ | skipping to change at page 9, line 27 ¶ | |||
| o Signer: "MUST be signed with a key that is represented in both the | o Signer: "MUST be signed with a key that is represented in both the | |||
| current DNSKEY and DS RRset's." | current DNSKEY and DS RRset's." | |||
| o Continuity: "MUST NOT break the current delegation if applied to | o Continuity: "MUST NOT break the current delegation if applied to | |||
| DS RRset" | DS RRset" | |||
| 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. 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. In order to be | wants to make a change to the DS RRset in the Parent. In order to be | |||
| valid, the CDS / CDNSKEY RRset MUST be compliant with the rules in | valid, the CDS / CDNSKEY RRset MUST be compliant with the rules in | |||
| Section 4.1. When the Parent DS is "in-sync" with the CDS / CDNSKEY, | Section 4.1. When the Parent DS is "in-sync" with the CDS / CDNSKEY, | |||
| the Child DNS Operator SHOULD delete the CDS / CDNSKEY RRset(s). | the Child DNS Operator SHOULD delete the CDS / CDNSKEY RRset(s). | |||
| Note that if the child has published a CDNSKEY RR, the Parent will | Note that if the child has published a CDNSKEY RR, the Parent will | |||
| have to calculate the DS (using the requested digest algorithm) to do | have to calculate the DS (using the requested digest algorithm) to do | |||
| the comparison. | the comparison. | |||
| A child MAY publish both CDS and CDNSKEY. If a child chooses to | 6. Parent Side CDS / CDNSKEY Consumption | |||
| publish both, it MUST attempt to maintain consistency (a matching CDS | ||||
| for each CDNSKEY). | ||||
| 6. Parent side CDS / CDNSKEY Consumption | ||||
| The CDS / CDNSKEY RRset SHOULD be used by the Parental Agent to | The CDS / CDNSKEY RRset SHOULD be used by the Parental Agent to | |||
| update the DS RRset in the parent zone. The Parental Agent for this | update the DS RRset in the parent zone. The Parental Agent for this | |||
| uses a tool that understands the CDS / CDNSKEY signing rules from | uses a tool that understands the CDS / CDNSKEY signing rules from | |||
| Section 4.1 so it may not be able to use a standard validator. | Section 4.1 so it may not be able to use a standard validator. | |||
| The parent MUST choose to accept either CDS or CDNSKEY records, and | The parent MUST choose to accept either CDS or CDNSKEY records (based | |||
| MUST NOT expect there to be both. A parent SHOULD NOT perform a | upon local policy), and MUST NOT expect there to be both. A parent | |||
| consistency check between CDS and CDNSKEY (other than for | MUST NOT perform a consistency check between CDS and CDNSKEY (other | |||
| informational / debugging use). | than for informational / debugging use). | |||
| 6.1. Detecting a changed CDS / CDNSKEY | 6.1. Detecting a Changed CDS / CDNSKEY | |||
| How the Parental Agent gets the CDS / CDNSKEY record may differ, | How the Parental Agent gets the CDS / CDNSKEY record may differ, | |||
| below are two examples as how this can take place. | below are two examples as how this can take place. | |||
| Polling The Parental Agent operates a tool that periodically checks | 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 | each of the children that has a DS record to see if there is a | |||
| CDS or CDNSKEY record. | CDS or CDNSKEY record. | |||
| Pushing The delegation user interface has a button {Fetch DS} when | Pushing The delegation user interface has a button {Fetch DS} when | |||
| pushed preforms the CDS / CDNSKEY processing. If the Parent | pushed preforms the CDS / CDNSKEY processing. If the Parent | |||
| zone does not contain DS for this delegation then the "push" | zone does not contain DS for this delegation then the "push" | |||
| MUST be ignored. | SHOULD be ignored. If the Parental Agent displays the contents | |||
| of the CDS / CDSNKEY to the user and gets confirmation that | ||||
| this represents their key, the Parental Agent MAY use this for | ||||
| initial enrolment (when the Parent zone does not contain the DS | ||||
| for this delgation). | ||||
| In either case the Parental Agent MAY apply additional rules that | In either case the Parental Agent MAY apply additional rules that | |||
| defer the acceptance of a CDS / CDNSKEY change, these rules may | defer the acceptance of a CDS / CDNSKEY change, these rules may | |||
| include a condition that the CDS / CDNSKEY remains in place and valid | 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 | 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 | the "Pushing" case to assume that the Child is ready and thus accept | |||
| changes without delay. | changes without delay. | |||
| 6.1.1. CDS / CDNSKEY Polling | 6.1.1. CDS / CDNSKEY Polling | |||
| skipping to change at page 11, line 9 ¶ | skipping to change at page 10, line 47 ¶ | |||
| 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 of 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 assumed that other mechanisms will be implemented to trigger | It is assumed that other mechanisms will be implemented to trigger | |||
| the parent to look for an updated CDS / CDNSKEY record. As the CDS / | the parent to look for an updated CDS / CDNSKEY record. As the CDS / | |||
| CDNSKEY records are validated with DNSSEC, these mechanisms can be | CDNSKEY records are validated with DNSSEC, these mechanisms can be | |||
| unauthenticated (for example, a child could telephone its parent and | unauthenticated (for example, a child could telephone its parent and | |||
| request that they process the new CDS or CDNSKEY record, an | 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. | |||
| good idea if the Parental Agent checked all NS RRs listed at the | ||||
| delegation. | ||||
| The Parental Agent MUST ensure that old versions of the CDS / CDNSKEY | The Parental Agent MUST ensure that old versions of the CDS / CDNSKEY | |||
| RRset do not overwrite newer versions. This MAY be accomplished by | RRset do not overwrite newer versions. This MAY be accomplished by | |||
| checking that the signature inception in the RRSIG for CDS / CDNSKEY | checking that the signature inception in the RRSIG for CDS / CDNSKEY | |||
| is newer and/or the serial number on the child's SOA is greater. | is newer and/or the serial number on the child's SOA is greater. | |||
| This may require the Parental Agent to maintain some state | This may require the Parental Agent to maintain some state | |||
| information. | information. | |||
| The Parental Agent MAY take extra security measures. For example, to | The Parental Agent MAY take extra security measures. For example, to | |||
| mitigate the possibility that a Child's key signing key has been | mitigate the possibility that a Child's key signing key has been | |||
| compromised, the Parental Agent may, for example, inform (by email or | compromised, the Parental Agent may, for example, inform (by email or | |||
| other methods ) the Child DNS Operator of the change. However the | other methods ) the Child DNS Operator of the change. However the | |||
| precise out-of-band measures that a parent zone SHOULD take are | precise out-of-band measures that a parent zone SHOULD take are | |||
| outside the scope of this document. | outside the scope of this document. | |||
| Once the Parental Agent has obtained a valid CDS / CDNSKEY it MUST | Once the Parental Agent has obtained a valid CDS / CDNSKEY it MUST | |||
| double check the publication rules from section 4.1. In particular | check the publication rules from section 4.1. In particular the | |||
| the Parental Agent MUST double check the Continuity rule and do its | Parental Agent MUST double check the Continuity rule and do its best | |||
| best not to invalidate the Child zone. Once checked and if the CDS / | not to invalidate the Child zone. Once checked and if the CDS / | |||
| CDNSKEY and DS "differ" it may apply the changes to the parent zone. | CDNSKEY and DS differ it may apply the changes to the parent zone. | |||
| If the parent consumes CDNSKEY, the parent should calculate the DS | If the parent consumes CDNSKEY, the parent should calculate the DS | |||
| before doing this comparison. | before doing this comparison. | |||
| 6.2.1. Parent calculates DS | 6.2.1. Parent Calculates DS | |||
| 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 | |||
| and the parent calculates the DS records on behalf of the children. | and the parent calculates the DS records on behalf of the children. | |||
| 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). | |||
| IIn the case the parent fetch the CDNSKEY and calculate the DS it MAY | In the case the parent fetch the CDNSKEY and calculate the DS it MAY | |||
| be the case that the DS published in the parent zone is not identical | be the case that the DS published in the parent zone is not identical | |||
| with the data in the CDS record made available by the child. | with the data in the CDS record made available by the child. | |||
| 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. | |||
| skipping to change at page 14, line 19 ¶ | skipping to change at page 14, line 9 ¶ | |||
| security. | security. | |||
| By automating the maintenance of the DNSSEC key information (and | By automating the maintenance of the DNSSEC key information (and | |||
| removing humans from the process) we expect to decrease the number of | removing humans from the process) we expect to decrease the number of | |||
| DNSSEC related outages, which should increase DNSSEC deployment. | DNSSEC related outages, which should increase DNSSEC deployment. | |||
| 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 Faltstrom, Jim Galvin, | Dickinson, Paul Ebersman, Tony Finch, Jim Galvin, Paul Hoffman, Samir | |||
| Paul Hoffman, Samir Hussain, Tatuya Jinmei, Olaf Kolkman, Cricket | Hussain, Tatuya Jinmei, Olaf Kolkman, Cricket Liu, Stephan Lagerholm, | |||
| Liu, Stephan Lagerholm, Matt Larson, Marco Sanz, Antoin Verschuren, | Matt Larson, Marco Sanz, Antoin Verschuren, Suzanne Woolf, Paul | |||
| Suzanne Woolf, Paul Wouters, Matthijs Meeking, John Dickinson, | Wouters, John Dickinson, Timothe Litt and Edward Lewis. | |||
| 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 and | creating the complementary (CSYNC) solution, and to Patrik Faltstrom, | |||
| Mukund Sivaraman for text and review. | Paul Hoffman, Matthijs Mekking and Mukund Sivaraman for text and in- | |||
| depth 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 | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
| specification", STD 13, RFC 1035, November 1987. | specification", STD 13, RFC 1035, November 1987. | |||
| skipping to change at page 16, line 29 ¶ | skipping to change at page 16, line 18 ¶ | |||
| 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-04 to WG-05 | ||||
| o More comments from Patrik, Paul and Ed. | ||||
| o Many nits and fixes from Matthijs Mekking. | ||||
| o Outstanding question: Should we remove the "Child SHOULD remove | ||||
| the CDS record" text? Mail sent to list. | ||||
| WG-03 to WG-04 | WG-03 to WG-04 | |||
| o Large number of comments and changes from Patrik. | o Large number of comments and changes from Patrik. | |||
| WG-02 to WG-03 | WG-02 to WG-03 | |||
| o Fixed some references to RFC 5011 - from Samir Hussain. | o Fixed some references to RFC 5011 - from Samir Hussain. | |||
| o Fixed some spelling / typos - from Samir Hussain. | o Fixed some spelling / typos - from Samir Hussain. | |||
| End of changes. 43 change blocks. | ||||
| 101 lines changed or deleted | 96 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/ | ||||