| < draft-ietf-dnsop-dns-zone-digest-07.txt | draft-ietf-dnsop-dns-zone-digest-08.txt > | |||
|---|---|---|---|---|
| Internet Engineering Task Force D. Wessels | Internet Engineering Task Force D. Wessels | |||
| Internet-Draft P. Barber | Internet-Draft P. Barber | |||
| Intended status: Standards Track M. Weinberg | Intended status: Standards Track Verisign | |||
| Expires: October 30, 2020 Verisign | Expires: December 14, 2020 M. Weinberg | |||
| Amazon | ||||
| W. Kumari | W. Kumari | |||
| W. Hardaker | W. Hardaker | |||
| USC/ISI | USC/ISI | |||
| April 28, 2020 | June 12, 2020 | |||
| Message Digest for DNS Zones | Message Digest for DNS Zones | |||
| draft-ietf-dnsop-dns-zone-digest-07 | draft-ietf-dnsop-dns-zone-digest-08 | |||
| Abstract | Abstract | |||
| This document describes a protocol and new DNS Resource Record that | This document describes a protocol and new DNS Resource Record that | |||
| can be used to provide a cryptographic message digest over DNS zone | can be used to provide a cryptographic message digest over DNS zone | |||
| data. The ZONEMD Resource Record conveys the digest data in the zone | data. The ZONEMD Resource Record conveys the digest data in the zone | |||
| itself. When a zone publisher includes an ZONEMD record, recipients | itself. When a zone publisher includes an ZONEMD record, recipients | |||
| can verify the zone contents for accuracy and completeness. This | can verify the zone contents for accuracy and completeness. This | |||
| provides assurance that received zone data matches published data, | provides assurance that received zone data matches published data, | |||
| regardless of how the zone data has been transmitted and received. | regardless of how the zone data has been transmitted and received. | |||
| skipping to change at page 2, line 7 ¶ | skipping to change at page 2, line 7 ¶ | |||
| 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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 30, 2020. | This Internet-Draft will expire on December 14, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 48 ¶ | skipping to change at page 2, line 48 ¶ | |||
| 2.2. ZONEMD RDATA Wire Format . . . . . . . . . . . . . . . . 8 | 2.2. ZONEMD RDATA Wire Format . . . . . . . . . . . . . . . . 8 | |||
| 2.2.1. The Serial Field . . . . . . . . . . . . . . . . . . 8 | 2.2.1. The Serial Field . . . . . . . . . . . . . . . . . . 8 | |||
| 2.2.2. The Scheme Field . . . . . . . . . . . . . . . . . . 9 | 2.2.2. The Scheme Field . . . . . . . . . . . . . . . . . . 9 | |||
| 2.2.3. The Hash Algorithm Field . . . . . . . . . . . . . . 9 | 2.2.3. The Hash Algorithm Field . . . . . . . . . . . . . . 9 | |||
| 2.2.4. The Digest Field . . . . . . . . . . . . . . . . . . 9 | 2.2.4. The Digest Field . . . . . . . . . . . . . . . . . . 9 | |||
| 2.3. ZONEMD Presentation Format . . . . . . . . . . . . . . . 9 | 2.3. ZONEMD Presentation Format . . . . . . . . . . . . . . . 9 | |||
| 2.4. ZONEMD Example . . . . . . . . . . . . . . . . . . . . . 10 | 2.4. ZONEMD Example . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3. Calculating the Digest . . . . . . . . . . . . . . . . . . . 10 | 3. Calculating the Digest . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.1. Add ZONEMD Placeholder . . . . . . . . . . . . . . . . . 10 | 3.1. Add ZONEMD Placeholder . . . . . . . . . . . . . . . . . 10 | |||
| 3.2. Optionally Sign the Zone . . . . . . . . . . . . . . . . 10 | 3.2. Optionally Sign the Zone . . . . . . . . . . . . . . . . 10 | |||
| 3.3. Canonical Format and Ordering . . . . . . . . . . . . . . 10 | 3.3. Canonical Format and Ordering . . . . . . . . . . . . . . 11 | |||
| 3.3.1. Order of RRSets Having the Same Owner Name . . . . . 11 | ||||
| 3.4. Inclusion/Exclusion Rules . . . . . . . . . . . . . . . . 11 | 3.4. Inclusion/Exclusion Rules . . . . . . . . . . . . . . . . 11 | |||
| 3.5. Scheme-Specific Processing . . . . . . . . . . . . . . . 11 | 3.5. Scheme-Specific Processing . . . . . . . . . . . . . . . 12 | |||
| 3.5.1. The SIMPLE Scheme . . . . . . . . . . . . . . . . . . 12 | 3.5.1. The SIMPLE Scheme . . . . . . . . . . . . . . . . . . 12 | |||
| 3.6. Update ZONEMD RR . . . . . . . . . . . . . . . . . . . . 12 | 3.6. Update ZONEMD RR . . . . . . . . . . . . . . . . . . . . 12 | |||
| 4. Verifying Zone Digest . . . . . . . . . . . . . . . . . . . . 12 | 4. Verifying Zone Digest . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.1. ZONEMD RRtype . . . . . . . . . . . . . . . . . . . . . . 14 | 5.1. ZONEMD RRtype . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.2. ZONEMD Scheme . . . . . . . . . . . . . . . . . . . . . . 14 | 5.2. ZONEMD Scheme . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.3. ZONEMD Hash Algorithm . . . . . . . . . . . . . . . . . . 14 | 5.3. ZONEMD Hash Algorithm . . . . . . . . . . . . . . . . . . 14 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
| 6.1. Attacks Against the Zone Digest . . . . . . . . . . . . . 15 | 6.1. Attacks Against the Zone Digest . . . . . . . . . . . . . 15 | |||
| 6.2. Attacks Utilizing ZONEMD Queries . . . . . . . . . . . . 15 | 6.2. Attacks Utilizing ZONEMD Queries . . . . . . . . . . . . 15 | |||
| 6.3. Resilience and Fragility . . . . . . . . . . . . . . . . 15 | 6.3. Resilience and Fragility . . . . . . . . . . . . . . . . 16 | |||
| 7. Performance Considerations . . . . . . . . . . . . . . . . . 16 | 7. Performance Considerations . . . . . . . . . . . . . . . . . 16 | |||
| 7.1. SIMPLE SHA384 . . . . . . . . . . . . . . . . . . . . . . 16 | 7.1. SIMPLE SHA384 . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 17 | 8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 10. Implementation Status . . . . . . . . . . . . . . . . . . . . 17 | 10. Implementation Status . . . . . . . . . . . . . . . . . . . . 17 | |||
| 10.1. Authors' Implementation . . . . . . . . . . . . . . . . 17 | 10.1. Authors' Implementation . . . . . . . . . . . . . . . . 17 | |||
| 10.2. Shane Kerr's Implementation . . . . . . . . . . . . . . 18 | 10.2. Shane Kerr's Implementation . . . . . . . . . . . . . . 18 | |||
| 10.3. NIC Chile Labs Implementation . . . . . . . . . . . . . 18 | 10.3. NIC Chile Labs Implementation . . . . . . . . . . . . . 18 | |||
| 11. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 11. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 23 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 24 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 24 | 12.2. Informative References . . . . . . . . . . . . . . . . . 24 | |||
| Appendix A. Example Zones With Digests . . . . . . . . . . . . . 26 | Appendix A. Example Zones With Digests . . . . . . . . . . . . . 26 | |||
| A.1. Simple EXAMPLE Zone . . . . . . . . . . . . . . . . . . . 26 | A.1. Simple EXAMPLE Zone . . . . . . . . . . . . . . . . . . . 27 | |||
| A.2. Complex EXAMPLE Zone . . . . . . . . . . . . . . . . . . 26 | A.2. Complex EXAMPLE Zone . . . . . . . . . . . . . . . . . . 27 | |||
| A.3. EXAMPLE Zone with multiple digests . . . . . . . . . . . 27 | A.3. EXAMPLE Zone with multiple digests . . . . . . . . . . . 28 | |||
| A.4. The URI.ARPA Zone . . . . . . . . . . . . . . . . . . . . 28 | A.4. The URI.ARPA Zone . . . . . . . . . . . . . . . . . . . . 29 | |||
| A.5. The ROOT-SERVERS.NET Zone . . . . . . . . . . . . . . . . 31 | A.5. The ROOT-SERVERS.NET Zone . . . . . . . . . . . . . . . . 32 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 1. Introduction | 1. Introduction | |||
| In the DNS, a zone is the collection of authoritative resource | In the DNS, a zone is the collection of authoritative resource | |||
| records (RRs) sharing a common origin ([RFC8499]). Zones are often | records (RRs) sharing a common origin ([RFC8499]). Zones are often | |||
| stored as files on disk in the so-called master file format | stored as files on disk in the so-called master file format | |||
| [RFC1034]. Zones are generally distributed among name servers using | [RFC1034]. Zones are generally distributed among name servers using | |||
| the AXFR [RFC5936], and IXFR [RFC1995] protocols. Zone files can | the AXFR [RFC5936], and IXFR [RFC1995] protocols. Zone files can | |||
| also be distributed outside of the DNS, with such protocols as FTP, | also be distributed outside of the DNS, with such protocols as FTP, | |||
| HTTP, rsync, and even via email. Currently there is no standard way | HTTP, rsync, and even via email. Currently there is no standard way | |||
| skipping to change at page 10, line 22 ¶ | skipping to change at page 10, line 22 ¶ | |||
| 3. Calculating the Digest | 3. Calculating the Digest | |||
| 3.1. Add ZONEMD Placeholder | 3.1. Add ZONEMD Placeholder | |||
| In preparation for calculating the zone digest, any existing ZONEMD | In preparation for calculating the zone digest, any existing ZONEMD | |||
| records (and covering RRSIGs) at the zone apex are first deleted. | records (and covering RRSIGs) at the zone apex are first deleted. | |||
| Prior to calculation of the digest, and prior to signing with DNSSEC, | Prior to calculation of the digest, and prior to signing with DNSSEC, | |||
| one or more placeholder ZONEMD records are added to the zone apex. | one or more placeholder ZONEMD records are added to the zone apex. | |||
| This ensures that appropriate denial-of-existence (NSEC, NSEC3) | This ensures that denial-of-existence (NSEC, NSEC3) records are | |||
| records are created if the zone is signed with DNSSEC. When multiple | created correctly if the zone is signed with DNSSEC. If placeholders | |||
| ZONEMD RRs are published in the zone, e.g., during an algorithm | are not added prior to signing, the later addition of ZONEMD records | |||
| rollover, each must specify a unique Scheme and Hash Algorithm tuple. | would also require updating the Type Bit Maps field of any apex NSEC/ | |||
| NSEC3 RRs, which then invalidates the calculated digest value. | ||||
| When multiple ZONEMD RRs are published in the zone, e.g., during an | ||||
| algorithm rollover, each must specify a unique Scheme and Hash | ||||
| Algorithm tuple. | ||||
| It is recommended that the TTL of the ZONEMD record match the TTL of | It is recommended that the TTL of the ZONEMD record match the TTL of | |||
| the SOA. | the SOA. | |||
| In the placeholder record, the Serial field is set to the current SOA | In the placeholder record, the Serial field is set to the current SOA | |||
| Serial. The Scheme field is set to the value for the chosen | Serial. The Scheme field is set to the value for the chosen | |||
| collation scheme. The Hash Algorithm field is set to the value for | collation scheme. The Hash Algorithm field is set to the value for | |||
| the chosen hash algorithm. Since ZONEMD records are excluded from | the chosen hash algorithm. Since ZONEMD records are excluded from | |||
| digest calculation, the value of the Digest field does not matter at | digest calculation, the value of the Digest field does not matter at | |||
| this point in the process. Implementations MAY want to set the | this point in the process. Implementations MAY want to set the | |||
| skipping to change at page 11, line 8 ¶ | skipping to change at page 11, line 15 ¶ | |||
| 3.3. Canonical Format and Ordering | 3.3. Canonical Format and Ordering | |||
| Calculation of a zone digest REQUIRES RRs to be processed in a | Calculation of a zone digest REQUIRES RRs to be processed in a | |||
| consistent format and ordering. Correct ordering depends on (1) | consistent format and ordering. Correct ordering depends on (1) | |||
| ordering of owner names, (2) ordering of RRSets with the same owner | ordering of owner names, (2) ordering of RRSets with the same owner | |||
| name, and (3) ordering of RRs within an RRSet. | name, and (3) ordering of RRs within an RRSet. | |||
| This specification adopts DNSSEC's canonical ordering for names | This specification adopts DNSSEC's canonical ordering for names | |||
| (Section 6.1 of [RFC4034]), and canonical ordering for RRs within an | (Section 6.1 of [RFC4034]), and canonical ordering for RRs within an | |||
| RRSet (Section 6.3 of [RFC4034]). It also adopts DNSSEC's canonical | RRSet (Section 6.3 of [RFC4034]). It also adopts DNSSEC's canonical | |||
| RR form (Section 6.2 of [RFC4034]). However, since DNSSEC does not | RR form (Section 6.2 of [RFC4034]). | |||
| define a canonical ordering for RRSets having the same owner name, | ||||
| that ordering is defined here. | However, since DNSSEC does not define a canonical ordering for RRSets | |||
| having the same owner name, that ordering is defined here. For the | ||||
| purposes of calculating the zone digest, RRSets having the same owner | ||||
| name MUST be numerically ordered, in ascending order, by their | ||||
| numeric RR TYPE. | ||||
| This specification adopts DNSSEC's canonical on-the-wire RR format | This specification adopts DNSSEC's canonical on-the-wire RR format | |||
| (without name compression) as specified in [RFC4034]: | (without name compression) as specified in [RFC4034]: | |||
| RR(i) = owner | type | class | TTL | RDATA length | RDATA | RR(i) = owner | type | class | TTL | RDATA length | RDATA | |||
| where "|" denotes concatenation. | where "|" denotes concatenation. | |||
| 3.3.1. Order of RRSets Having the Same Owner Name | ||||
| For the purposes of calculating the zone digest, RRSets having the | ||||
| same owner name MUST be numerically ordered, in ascending order, by | ||||
| their numeric RR TYPE. | ||||
| 3.4. Inclusion/Exclusion Rules | 3.4. Inclusion/Exclusion Rules | |||
| When iterating over records in the zone, the following inclusion/ | When iterating over records in the zone, the following inclusion/ | |||
| exclusion rules apply: | exclusion rules apply: | |||
| o All records in the zone, including glue records, MUST be included. | o All records in the zone, including glue records, MUST be included. | |||
| o Occluded data ([RFC5936] Section 3.5) MUST be included. | o Occluded data ([RFC5936] Section 3.5) MUST be included. | |||
| o Only one instance of duplicate RRs with equal owner, class, type | o Only one instance of duplicate RRs with equal owner, class, type | |||
| skipping to change at page 23, line 25 ¶ | skipping to change at page 23, line 42 ¶ | |||
| o Updated examples in the appendix. | o Updated examples in the appendix. | |||
| o Clarified verification procedure by describing a loop over all | o Clarified verification procedure by describing a loop over all | |||
| ZONEMD RRs. | ZONEMD RRs. | |||
| From -06 to -07: | From -06 to -07: | |||
| o Added NIC Chile Labs implementation. | o Added NIC Chile Labs implementation. | |||
| From -07 to -08: | ||||
| o Update an author's affiliation. | ||||
| o Clarified why placeholder RRs are still important (for NSEC/ | ||||
| NSEC3). | ||||
| o Moved subsection ("Order of RRSets Having the Same Owner Name") | ||||
| with single sentence paragraph up into parent section. | ||||
| 12. References | 12. References | |||
| 12.1. Normative References | 12.1. Normative References | |||
| [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
| STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | |||
| <https://www.rfc-editor.org/info/rfc1034>. | <https://www.rfc-editor.org/info/rfc1034>. | |||
| [RFC1035] Mockapetris, P., "Domain names - implementation and | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
| specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | |||
| skipping to change at page 33, line 26 ¶ | skipping to change at page 34, line 26 ¶ | |||
| Piet Barber | Piet Barber | |||
| Verisign | Verisign | |||
| 12061 Bluemont Way | 12061 Bluemont Way | |||
| Reston, VA 20190 | Reston, VA 20190 | |||
| Phone: +1 703 948-3200 | Phone: +1 703 948-3200 | |||
| Email: pbarber@verisign.com | Email: pbarber@verisign.com | |||
| URI: http://verisign.com | URI: http://verisign.com | |||
| Matt Weinberg | Matt Weinberg | |||
| Verisign | Amazon | |||
| 12061 Bluemont Way | ||||
| Reston, VA 20190 | ||||
| Phone: +1 703 948-3200 | Email: matweinb@amazon.com | |||
| Email: mweinberg@verisign.com | URI: http://amazon.com | |||
| URI: http://verisign.com | ||||
| Warren Kumari | Warren Kumari | |||
| 1600 Amphitheatre Parkway | 1600 Amphitheatre Parkway | |||
| Mountain View, CA 94043 | Mountain View, CA 94043 | |||
| Email: warren@kumari.net | Email: warren@kumari.net | |||
| Wes Hardaker | Wes Hardaker | |||
| USC/ISI | USC/ISI | |||
| End of changes. 17 change blocks. | ||||
| 38 lines changed or deleted | 49 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/ | ||||