| < draft-ietf-dnsop-delegation-trust-maintainance-06.txt | draft-ietf-dnsop-delegation-trust-maintainance-07.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 16, 2014 Shinkuro Inc. | Expires: October 16, 2014 Shinkuro Inc. | |||
| G. Barwood | G. Barwood | |||
| April 14, 2014 | April 14, 2014 | |||
| Automating DNSSEC Delegation Trust Maintenance | Automating DNSSEC Delegation Trust Maintenance | |||
| draft-ietf-dnsop-delegation-trust-maintainance-06 | draft-ietf-dnsop-delegation-trust-maintainance-07 | |||
| 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 5, line 19 ¶ | skipping to change at page 5, line 19 ¶ | |||
| 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, it failed to each consensus. There is | |||
| similar proposal in [I-D.parent-zones]. | also a 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]), some | |||
| [RFC4034]), some other record/method is needed to automate which | other method is needed to automate which DNSKEYs are picked to be | |||
| DNSKEYs are picked to be represented in the parent zone's DS records. | represented in the parent zone's DS records. One possibility is to | |||
| One possibility is to use flags in the DNSKEY record. If the SEP bit | use flags in the DNSKEY record. If the SEP bit is set, this | |||
| is set, this indicates that the DNSKEY is intended for use as a | indicates that the DNSKEY is intended for use as a secure entry | |||
| secure entry point. This DNSKEY signs the DNSKEY RRset, and the | point. This DNSKEY signs the DNSKEY RRset, and the Parental Agent | |||
| Parental Agent can calculate DS records based on that. But this | can calculate DS records based on that. But this fails to meet some | |||
| fails to meet some operating needs, including the child having no | operating needs, including the child having no influence what DS | |||
| influence what DS digest algorithms are used and DS records can only | digest algorithms are used and DS records can only be published for | |||
| be published for keys that are in the DNSKEY RRset, and thus this | keys that are in the DNSKEY RRset, and thus this technique would not | |||
| technique would not be compatible with Double-DS key rollover. | 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 | |||
| 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 | |||
| Resellers. | 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 | |||
| skipping to change at page 6, line 20 ¶ | skipping to change at page 6, line 20 ¶ | |||
| 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. | |||
| In another common case an enterprise may delegate parts of its name- | IIn another common case an organization may delegate parts of its | |||
| space to be operated by a group that is not the same as that which | name-space to be operated by a group that is not the same as that | |||
| operates the enterprise's DNS servers. In this case the flow of | which operates the organization's DNS servers. In this case the flow | |||
| information is frequently handled in either an ad hoc manner or via | of information is frequently handled in either an ad hoc manner or | |||
| some corporate mechanism; this can range from email to fully- | via some corporate mechanism; this can range from email to fully- | |||
| automated operation. The word enterprise above covers all | automated operation. | |||
| organizations in which the domains are not sold on the open market | ||||
| 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 a separation | |||
| organizational separation of the child and parent. | between 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 | |||
| skipping to change at page 7, line 10 ¶ | skipping to change at page 7, line 8 ¶ | |||
| Some parents want the child to express their DNSKEYS in the form of | Some parents want the child to express their DNSKEYS in the form of | |||
| DS records, while others want to receive the 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. This solution is | method is better; both have good reasons to exist. This solution is | |||
| DS vs DNSKEY agnostic, and allows operation with either. | DS vs DNSKEY agnostic, and allows operation with either. | |||
| 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 a delegation account | |||
| interface, to "upload / paste-in the zone's DS information". The | interface, to "upload / paste-in the zone's DS information". This | |||
| 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 for the child published in the parent zone. In the case | information for the child published in the parent zone. In the case | |||
| where the "Child DNS Operator" does not have access to the | where the "Child DNS Operator" does not have access to the | |||
| registration account, the Child needs to perform the action. | registration account, the Child needs to perform the action. | |||
| 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 | |||
| skipping to change at page 7, line 35 ¶ | skipping to change at page 7, line 33 ¶ | |||
| 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 this document does not support removing all keys. This is | keys, but this document does not support removing all keys. This is | |||
| to avoid making signed zones unsigned. The Child may not enroll the | 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 | initial key or introduce a new key when there are no old keys that | |||
| can be used (without some additional, out of band, validation of the | can be used (without some additional, out of band, validation of the | |||
| keys), because there is no way to validate the information. | keys), because there is no way to validate the information. | |||
| 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 DNS resource records, CDS and | |||
| These records are used to convey, from one zone to its parent, the | CDNSKEY. These records are used to convey, from one zone to its | |||
| desired contents of the zone's DS resource record set residing in the | parent, the desired contents of the zone's DS resource record set | |||
| parent zone. | residing in the parent zone. | |||
| The CDS / CDNSKEY records are published in the child zone and gives | The CDS / CDNSKEY resource records are published in the child zone | |||
| the child control of what is published for it in the parental zone. | and gives the child control of what is published for it in the | |||
| The CDS / CDNSKEY RRset expresses what the child would like the DS | parental zone. The CDS / CDNSKEY RRset expresses what the child | |||
| RRset to look like after the change; it is a "replace" operation, and | would like the DS RRset to look like after the change; it is a | |||
| it is up to the consumer of the records to translate that into the | "replace" operation, and it is up to the consumer of the records to | |||
| appropriate add/delete operations in the registration systems (and in | translate that into the appropriate add/delete operations in the | |||
| the case of CDNSKEY, to generate the DS from the DNSKEY). If no CDS | registration systems (and in the case of CDNSKEY, to generate the DS | |||
| / CDNSKEY RRset is present in child, this means that no change is | from the DNSKEY). If no CDS / CDNSKEY RRset is present in child, | |||
| needed. | this means that no change is needed. | |||
| [[RFC Editor: Please remove this paragraph before publication] | [[RFC Editor: Please remove this paragraph before publication] | |||
| Version -04 of the ID that became this working group document (http:/ | Version -04 of the ID that became this working group document (http:/ | |||
| /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") resource | |||
| identical to the DS record [RFC4034]. IANA has allocated RR code 59 | record is identical to the DS record [RFC4034]. IANA has allocated | |||
| for the CDS record via expert review [I-D.ds-publish]. CDS uses the | RR code 59 for the CDS resource record via expert review | |||
| same registries as DS for its fields. | [I-D.ds-publish]. The CDS RR uses the 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. IANA has allocated RR code | resource record is identical to the DNSKEY record. IANA has | |||
| TBA1 for the CDS record via expert review. CDNSKEY uses the same | allocated RR code TBA1 for the CDNSKEY resource record via expert | |||
| registries as DNSKEY for its fields. | review. The CDNSKEY RR uses the same 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 resource records are intended to be "consumed" by | |||
| maintainers. The use of CDS/CDNSKEY is optional. | delegation trust maintainers. The use of CDS/CDNSKEY is optional. | |||
| The child SHOULD publish both CDS and CDNSKEY records. If the child | The child SHOULD publish both CDS and CDNSKEY resource records. If | |||
| knows which the parent consumes, it MAY choose to only publish that | the child knows which the parent consumes, it MAY choose to only | |||
| record type (for example, some children wish the parent to publish a | publish that record type (for example, some children wish the parent | |||
| DS, but they wish to keep the DNSKEY "hidden" until needed). If the | to publish a DS, but they wish to keep the DNSKEY "hidden" until | |||
| child publishes both, the two RRsets MUST match in content. The | needed). If the child publishes both, the two RRsets MUST match in | |||
| parent should use whichever one they choose, but MUST NOT query for | content. The parent should use whichever one they choose, but MUST | |||
| both and perform consistency checks between the CDS and CDNSKEY | NOT query for both and perform consistency checks between the CDS and | |||
| records. | CDNSKEY resource records. | |||
| 4.1. CDS / CDNSKEY Processing Rules | 4.1. CDS / CDNSKEY Processing Rules | |||
| If there are no CDS / CDNSKEY resource records in the child, this | If there are no CDS / CDNSKEY RRset in the child, this signals that | |||
| signals that no change should be made to the current DS set. This | no change should be made to the current DS set. This means that, | |||
| means that, once the child and parent are in sync, the child DNS | once the child and parent are in sync, the child DNS operator MAY | |||
| operator MAY remove all CDS records from the zone. | remove all CDS and CDNSKEY resource records from the zone. | |||
| Following acceptance rules are placed on the CDS / CDNSKEY records as | Following acceptance rules are placed on the CDS / CDNSKEY resource | |||
| follows: | records as follows: | |||
| o Location: "the CDS / CDNSKEY record MUST be at the child zone | o Location: "the CDS / CDNSKEY resource records MUST be at the child | |||
| apex". | zone apex". | |||
| 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 resource record MUST | |||
| ignored. | be ignored. | |||
| 5. CDS / CDNSKEY Publication | 5. CDS / CDNSKEY Publication | |||
| Child DNS Operator publishes a CDS and / or CDNSKEY RRset. In order | Child DNS Operator publishes a CDS and / or CDNSKEY resource records. | |||
| to be valid, the CDS / CDNSKEY RRset MUST be compliant with the rules | In order to be valid, the CDS / CDNSKEY RRset MUST be compliant with | |||
| in Section 4.1. When the Parent DS is "in-sync" with the CDS / | the rules in Section 4.1. When the Parent DS is "in-sync" with the | |||
| CDNSKEY, the Child DNS Operator MAY delete the CDS / CDNSKEY | CDS / CDNSKEY resource records, the Child DNS Operator MAY delete the | |||
| RRset(s); the child can determine if this is the case by quering for | CDS / CDNSKEY record(s); the child can determine if this is the case | |||
| DS records in the parent. Note that if the child has published a | by quering for DS records in the parent. Note that if the child has | |||
| CDNSKEY RR, the Parent will have to calculate the DS (using the | published a CDNSKEY RR, the Parent will have to calculate the DS | |||
| requested digest algorithm) to do the comparison. | (using the requested digest algorithm) to do the comparison. | |||
| 6. Parent Side CDS / CDNSKEY Consumption | 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 (based | The parent MUST choose to accept either CDS or CDNSKEY resource | |||
| upon local policy), and MUST NOT expect there to be both. A parent | records (based upon local policy), and MUST NOT expect there to be | |||
| MUST NOT perform a consistency check between CDS and CDNSKEY (other | both. A parent MUST NOT perform a consistency check between CDS and | |||
| than for informational / debugging use). | CDNSKEY (other than for informational / debugging use) resource | |||
| records. | ||||
| 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 RRset may differ, below | |||
| below are two examples as how this can take place. | 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 RRset. | |||
| 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" | |||
| SHOULD be ignored. If the Parental Agent displays the contents | SHOULD be ignored. If the Parental Agent displays the contents | |||
| of the CDS / CDSNKEY to the user and gets confirmation that | of the CDS / CDSNKEY to the user and gets confirmation that | |||
| this represents their key, the Parental Agent MAY use this for | this represents their key, the Parental Agent MAY use this for | |||
| initial enrolment (when the Parent zone does not contain the DS | initial enrolment (when the Parent zone does not contain the DS | |||
| for this delgation). | 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 | |||
| This is the only defined use of CDS / CDNSKEY in this document. | This is the only defined use of CDS / CDNSKEY resource records in | |||
| There are limits to the scaleability of polling techniques, thus some | this document. There are limits to the scaleability of polling | |||
| other mechanism is likely to be specified later that addresses CDS / | techniques, thus some other mechanism is likely to be specified later | |||
| CDNSKEY usage in the situation where polling does not scale to. | that addresses CDS / CDNSKEY resource recod usage in the situation | |||
| Having said that Polling will work in many important cases like | where polling does not scale to. Having said that Polling will work | |||
| enterprises, universities, small TLDs etc. In many regulatory | in many important cases like enterprises, universities, small TLDs | |||
| environments the registry is prohibited from talking to the | etc. In many regulatory environments the registry is prohibited from | |||
| registrant. In most of these cases the registrant has a business | talking to the registrant. In most of these cases the registrant has | |||
| relationship with the registrar, and so the registrar can offer this | a business relationship with the registrar, and so the registrar can | |||
| as a service. | offer this 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 RRsets. As the CDS / | |||
| CDNSKEY records are validated with DNSSEC, these mechanisms can be | CDNSKEY resource records are validated with DNSSEC, these mechanisms | |||
| unauthenticated (for example, a child could telephone its parent and | can be unauthenticated (for example, a child could telephone its | |||
| request that they process the new CDS or CDNSKEY record, an | parent and request that they process the new CDS or CDNSKEY resource | |||
| unauthenticated POST could be made to a webserver (with rate- | records, an unauthenticated POST could be made to a webserver (with | |||
| limiting), etc.) | rate-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 SHOULD use a DNSSEC validator to | CDNSKEY RRset, the Parental Agent SHOULD use a DNSSEC validator to | |||
| obtain a validated CDS / CDNSKEY RRset from the Child zone. The only | obtain a validated CDS / CDNSKEY RRset from the Child zone. The only | |||
| exception to this is if the parent perfoms some additional validation | exception to this is if the parent perfoms some additional validation | |||
| on the data to confirm that it is the "correct" ket. This behavior | on the data to confirm that it is the "correct" key. This behavior | |||
| is NOT RECOMMENDED. | is NOT RECOMMENDED. | |||
| 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. | RRset is newer and/or the serial number on the child's SOA is | |||
| This may require the Parental Agent to maintain some state | greater. 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 RRset it | |||
| check the publication rules from section 4.1. In particular the | MUST check the publication rules from section 4.1. In particular the | |||
| Parental Agent MUST double check the Continuity rule and do its best | Parental Agent MUST double check the Continuity rule and do its best | |||
| not to invalidate the Child zone. Once checked and if the CDS / | not to invalidate the Child zone. Once checked and if the | |||
| CDNSKEY and DS differ it may apply the changes to the parent zone. | information in the CDS / CDNSKEY and DS differ it may apply the | |||
| If the parent consumes CDNSKEY, the parent should calculate the DS | changes to the parent zone. If the parent consumes CDNSKEY, the | |||
| before doing this comparison. | parent should calculate the DS 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 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 it will make sure there are DS records for the digest | |||
| algorithm(s) it requires(s). | algorithm(s) it requires(s). | |||
| In the case the parent fetch the CDNSKEY and calculate the DS it MAY | In the case where the parent fetches the CDNSKEY RRset and calculate | |||
| be the case that the DS published in the parent zone is not identical | the DS it MAY be the case that the DS published in the parent zone is | |||
| with the data in the CDS record made available by the child. | not identical with the data in the CDS resource 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 the CDS resource record. This | |||
| earlier version of this document[I-D.ds-publish] This document is to | was done for an earlier version of this document[I-D.ds-publish] This | |||
| become the reference for CDS RRtype. | document is to become the reference for CDS RRtype. | |||
| IANA is requested to assign another RR Type for the CDNSKEY, and to | IANA is requested to assign another RR Type for the CDNSKEY, and to | |||
| replace TBA1 with this value (currntly 60 is still free, it would be | replace TBA1 with this value (currntly 60 is still free, it would be | |||
| nice if that were assigned...) | nice if that were assigned...) | |||
| 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. | |||
| skipping to change at page 12, line 35 ¶ | skipping to change at page 12, line 33 ¶ | |||
| 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 resource records. The modified CDS recourse records | |||
| by this technique and so may allow the attacker to extend the | will be picked up by this technique and so may allow the attacker to | |||
| effective time of his attack. If there a delay in accepting changes | extend the effective time of his attack. If there a delay in | |||
| to DS, as in [RFC5011], then the attacker needs to hope his activity | accepting changes to DS, as in [RFC5011], then the attacker needs to | |||
| is not detected before the DS in parent is changed. If this type of | hope his activity is not detected before the DS in parent is changed. | |||
| change takes place, the child needs to contact the parent (possibly | If this type of change takes place, the child needs to contact the | |||
| via a registrar web interface) and remove any compromised DS keys. | parent (possibly 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 | |||
| used, along with some kind of challenge mechanism. A child cannot | used, along with some kind of challenge mechanism. A child cannot | |||
| skipping to change at page 13, line 18 ¶ | skipping to change at page 13, line 18 ¶ | |||
| 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. | |||
| As this introduces a new mechanism to update information in the | As this introduces a new mechanism to update information in the | |||
| parent it MUST be clear who is fetching the records and creating the | parent it MUST be clear who is fetching the records and creating the | |||
| appropriate records in the parent zone. Specifically some operations | appropriate records in the parent zone. Specifically some operations | |||
| may use other mechanisms than what is described here. For example, a | may use other mechanisms than what is described here. For example, a | |||
| registrar may assume that it is maintaining the DNSSEC key | registrar may assume that it is maintaining the DNSSEC key | |||
| information in the registry, and may have this cached. If the | information in the registry, and may have this cached. If the | |||
| registry is fetching the CDS / CDNSKEY then the registry and | registry is fetching the CDS / CDNSKEY RRset then the registry and | |||
| registrar may have different views of the DNSSEC key material and the | registrar may have different views of the DNSSEC key material and the | |||
| result of such a situation is unclear. Because of this, this | result of such a situation is unclear. Therefore, this mechanism | |||
| mechanism SHOULD NOT be use to bypass intermediaries that might cache | SHOULD NOT be use to bypass intermediaries that might cache | |||
| information and because of that get the wrong state. | information and because of that get the wrong state. | |||
| 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 because it gets different | the Parental agent may get confused, either because it gets different | |||
| answers on different checks or CDS validation fails. In the worst | answers on different checks or CDS RR validation fails. In the worst | |||
| case, the Parental Agent performs an action reversing a prior action | case, the Parental Agent performs an action reversing a prior action | |||
| but after the child signing system decides to take the next step in | but after the child signing system decides to take the next step in | |||
| rollover, resulting in a broken delegation. | 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 | |||
| without giving them the registrar credentials, thereby improving | without giving them the registrar credentials, thereby improving | |||
| 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 | |||
| DNSSEC related outages, which should increase DNSSEC deployment. | of 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, Jim Galvin, Paul Hoffman, Samir | Dickinson, Paul Ebersman, Tony Finch, Jim Galvin, Paul Hoffman, Samir | |||
| Hussain, Tatuya Jinmei, Olaf Kolkman, Cricket Liu, Stephan Lagerholm, | Hussain, Tatuya Jinmei, Olaf Kolkman, Cricket Liu, Stephan Lagerholm, | |||
| Matt Larson, Marco Sanz, Antoin Verschuren, Suzanne Woolf, Paul | Matt Larson, Marco Sanz, Antoin Verschuren, Suzanne Woolf, Paul | |||
| Wouters, John Dickinson, Timothe Litt and Edward Lewis. | Wouters, John Dickinson, Timothe Litt and Edward Lewis. | |||
| skipping to change at page 15, line 27 ¶ | skipping to change at page 15, line 27 ¶ | |||
| [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] | [I-D.parent-zones] | |||
| Andrews, M., "Updating Parent Zones", November 2013. | Andrews, M., "Updating Parent Zones", draft-andrews-dnsop- | |||
| update-parent-zones-04 (work in progress), 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 | |||
| organizations. In the single enterprise world there are also | organizations. In the single enterprise world there are also | |||
| organizational/geographical/cultural separations that affect how | organizational/geographical/cultural separations that affect how | |||
| information flows from a Child to the parent. | information flows from a Child to the parent. | |||
| Due to the complexity of the different roles and interconnections, | Due to the complexity of the different roles and interconnections, | |||
| automation of delegation information has been punted in the past. | automation of delegation information has not yet occured. There have | |||
| There have been some proposals to automate this, in order to improve | been proposals to automate this, in order to improve the reliability | |||
| the reliability of the DNS. These proposals have not gained enough | of the DNS. These proposals have not gained enough traction to | |||
| traction to become standards. | become standards. | |||
| For example in many of the TLD cases there is the RRR model | For example in many of the TLD cases there is the RRR model | |||
| (Registry, Registrar and Registrant). The Registry operates DNS for | (Registry, Registrar and Registrant). The Registry operates DNS for | |||
| the TLD, the Registrars accept registrations and place information | the TLD, the Registrars accept registrations and place information | |||
| into the Registries database. The Registrant only communicates with | into the Registries database. The Registrant only communicates with | |||
| the Registrar; frequently the Registry is not allowed to communicate | the Registrar; frequently the Registry is not allowed to communicate | |||
| with the Registrant. In that case as far as the registrant is | with the Registrant. In that case as far as the registrant is | |||
| concerned the Registrar == Parent. | concerned the Registrar == Parent. | |||
| 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-06 to WG-07 | ||||
| o Incorporated nits / editorial comments from Tim Wicinski. | ||||
| o | ||||
| * Reference for Mark's draft was incorrect, Wes Hardaker doesn't | ||||
| work for ISC :-P | ||||
| * Normalized CDS record / CDS resource record / records / etc. | ||||
| * Language cleanup / nits / poor grammar. | ||||
| * removed "punted" colloquialism. | ||||
| WG-05 to WG-06 | WG-05 to WG-06 | |||
| o Consensus (according to me!) was that mail thread said "Child MAY | o Consensus (according to me!) was that mail thread said "Child MAY | |||
| remove the CDS record". Changed to accomodate. | remove the CDS record". Changed to accomodate. | |||
| o "The proposal below can operate with both models, but the child | o "The proposal below can operate with both models, but the child | |||
| needs to be aware of the parental policies." - removed "but the | needs to be aware of the parental policies." - removed "but the | |||
| child needs to be aware of the parental policies.". This is no | child needs to be aware of the parental policies.". This is no | |||
| longer true, as we suggest publishing both CDS and CDSNKEY. | longer true, as we suggest publishing both CDS and CDSNKEY. | |||
| End of changes. 40 change blocks. | ||||
| 135 lines changed or deleted | 153 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/ | ||||