| < draft-ietf-dnsext-dnssec-records-04.txt | draft-ietf-dnsext-dnssec-records-05.txt > | |||
|---|---|---|---|---|
| DNS Extensions R. Arends | DNS Extensions R. Arends | |||
| Internet-Draft Telematica Instituut | Internet-Draft Telematica Instituut | |||
| Expires: March 16, 2004 R. Austein | Expires: April 26, 2004 R. Austein | |||
| ISC | ISC | |||
| M. Larson | M. Larson | |||
| VeriSign | VeriSign | |||
| D. Massey | D. Massey | |||
| USC/ISI | USC/ISI | |||
| S. Rose | S. Rose | |||
| NIST | NIST | |||
| September 16, 2003 | October 27, 2003 | |||
| Resource Records for the DNS Security Extensions | Resource Records for the DNS Security Extensions | |||
| draft-ietf-dnsext-dnssec-records-04 | draft-ietf-dnsext-dnssec-records-05 | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
| all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that other | |||
| groups may also distribute working documents as Internet-Drafts. | groups may also distribute working documents as Internet-Drafts. | |||
| skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| 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." | |||
| The list of current Internet-Drafts can be accessed at http:// | The list of current Internet-Drafts can be accessed at http:// | |||
| www.ietf.org/ietf/1id-abstracts.txt. | www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on March 16, 2004. | This Internet-Draft will expire on April 26, 2004. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2003). All Rights Reserved. | |||
| Abstract | Abstract | |||
| This document is part of a family of documents that describes the DNS | This document is part of a family of documents that describes the DNS | |||
| Security Extensions (DNSSEC). The DNS Security Extensions are a | Security Extensions (DNSSEC). The DNS Security Extensions are a | |||
| collection of resource records and protocol modifications that | collection of resource records and protocol modifications that | |||
| provide source authentication for the DNS. This document defines the | provide source authentication for the DNS. This document defines the | |||
| public key (DNSKEY), delegation signer (DS), resource record digital | public key (DNSKEY), delegation signer (DS), resource record digital | |||
| signature (RRSIG), and authenticated denial of existance (NSEC) | signature (RRSIG), and authenticated denial of existence (NSEC) | |||
| resource records. The purpose and format of each resource record is | resource records. The purpose and format of each resource record is | |||
| described in detail, and an example of each resource record is given. | described in detail, and an example of each resource record is given. | |||
| This document obsoletes RFC 2535 and incorporates changes from all | This document obsoletes RFC 2535 and incorporates changes from all | |||
| updates to RFC 2535. | updates to RFC 2535. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.1 Background and Related Documents . . . . . . . . . . . . . . 4 | 1.1 Background and Related Documents . . . . . . . . . . . . . . 4 | |||
| skipping to change at page 2, line 39 ¶ | skipping to change at page 2, line 39 ¶ | |||
| 3. The RRSIG Resource Record . . . . . . . . . . . . . . . . . 9 | 3. The RRSIG Resource Record . . . . . . . . . . . . . . . . . 9 | |||
| 3.1 RRSIG RDATA Wire Format . . . . . . . . . . . . . . . . . . 9 | 3.1 RRSIG RDATA Wire Format . . . . . . . . . . . . . . . . . . 9 | |||
| 3.1.1 The Type Covered Field . . . . . . . . . . . . . . . . . . . 10 | 3.1.1 The Type Covered Field . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.1.2 The Algorithm Number Field . . . . . . . . . . . . . . . . . 10 | 3.1.2 The Algorithm Number Field . . . . . . . . . . . . . . . . . 10 | |||
| 3.1.3 The Labels Field . . . . . . . . . . . . . . . . . . . . . . 10 | 3.1.3 The Labels Field . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.1.4 Original TTL Field . . . . . . . . . . . . . . . . . . . . . 11 | 3.1.4 Original TTL Field . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.1.5 Signature Expiration and Inception Fields . . . . . . . . . 11 | 3.1.5 Signature Expiration and Inception Fields . . . . . . . . . 11 | |||
| 3.1.6 The Key Tag Field . . . . . . . . . . . . . . . . . . . . . 11 | 3.1.6 The Key Tag Field . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.1.7 The Signer's Name Field . . . . . . . . . . . . . . . . . . 11 | 3.1.7 The Signer's Name Field . . . . . . . . . . . . . . . . . . 11 | |||
| 3.1.8 The Signature Field . . . . . . . . . . . . . . . . . . . . 12 | 3.1.8 The Signature Field . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.2 The RRSIG RR Presentation Format . . . . . . . . . . . . . . 13 | 3.2 The RRSIG RR Presentation Format . . . . . . . . . . . . . . 12 | |||
| 3.3 RRSIG RR Example . . . . . . . . . . . . . . . . . . . . . . 13 | 3.3 RRSIG RR Example . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4. The NSEC Resource Record . . . . . . . . . . . . . . . . . . 15 | 4. The NSEC Resource Record . . . . . . . . . . . . . . . . . . 15 | |||
| 4.1 NSEC RDATA Wire Format . . . . . . . . . . . . . . . . . . . 15 | 4.1 NSEC RDATA Wire Format . . . . . . . . . . . . . . . . . . . 15 | |||
| 4.1.1 The Next Domain Name Field . . . . . . . . . . . . . . . . . 15 | 4.1.1 The Next Domain Name Field . . . . . . . . . . . . . . . . . 15 | |||
| 4.1.2 The Type Bit Map Field . . . . . . . . . . . . . . . . . . . 16 | 4.1.2 The Type Bit Map Field . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.1.3 Inclusion of Wildcard Names in NSEC RDATA . . . . . . . . . 16 | 4.1.3 Inclusion of Wildcard Names in NSEC RDATA . . . . . . . . . 16 | |||
| 4.2 The NSEC RR Presentation Format . . . . . . . . . . . . . . 16 | 4.2 The NSEC RR Presentation Format . . . . . . . . . . . . . . 16 | |||
| 4.3 NSEC RR Example . . . . . . . . . . . . . . . . . . . . . . 17 | 4.3 NSEC RR Example . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 5. The DS Resource Record . . . . . . . . . . . . . . . . . . . 18 | 5. The DS Resource Record . . . . . . . . . . . . . . . . . . . 18 | |||
| 5.1 DS RDATA Wire Format . . . . . . . . . . . . . . . . . . . . 18 | 5.1 DS RDATA Wire Format . . . . . . . . . . . . . . . . . . . . 18 | |||
| skipping to change at page 4, line 15 ¶ | skipping to change at page 4, line 15 ¶ | |||
| 1. Introduction | 1. Introduction | |||
| The DNS Security Extensions (DNSSEC) introduce four new DNS resource | The DNS Security Extensions (DNSSEC) introduce four new DNS resource | |||
| record types: DNSKEY, RRSIG, NSEC, and DS. This document defines the | record types: DNSKEY, RRSIG, NSEC, and DS. This document defines the | |||
| purpose of each resource record (RR), the RR's RDATA format, and its | purpose of each resource record (RR), the RR's RDATA format, and its | |||
| ASCII representation. | ASCII representation. | |||
| 1.1 Background and Related Documents | 1.1 Background and Related Documents | |||
| The reader is assumed to be familiar with the basic DNS concepts | The reader is assumed to be familiar with the basic DNS concepts | |||
| described in RFC1034 [RFC1034], RFC1035 [RFC1035] and subsequent | described in RFC1034 [RFC1034], RFC1035 [RFC1035] and subsequent RFCs | |||
| RFC's that update them: RFC2136 [RFC2136], RFC2181 [RFC2181] and | that update them: RFC2136 [RFC2136], RFC2181 [RFC2181] and RFC2308 | |||
| RFC2308 [RFC2308]. | [RFC2308]. | |||
| This document is part of a family of documents that define the DNS | This document is part of a family of documents that define the DNS | |||
| security extensions. The DNS security extensions (DNSSEC) are a | security extensions. The DNS security extensions (DNSSEC) are a | |||
| collection of resource records and DNS protocol modifications that | collection of resource records and DNS protocol modifications that | |||
| add source authentication and data integrity the Domain Name System | add source authentication and data integrity to the Domain Name | |||
| (DNS). An introduction to DNSSEC and definition of common terms can | System (DNS). An introduction to DNSSEC and definition of common | |||
| be found in [I-D.ietf-dnsext-dnssec-intro]. A description of DNS | terms can be found in [I-D.ietf-dnsext-dnssec-intro]. A description | |||
| protocol modifications can be found in | of DNS protocol modifications can be found in | |||
| [I-D.ietf-dnsext-dnssec-protocol]. This document defines the DNSSEC | [I-D.ietf-dnsext-dnssec-protocol]. This document defines the DNSSEC | |||
| resource records. | resource records. | |||
| 1.2 Reserved Words | 1.2 Reserved Words | |||
| 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 RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| 1.3 Editors' Notes | 1.3 Editors' Notes | |||
| 1.3.1 Open Technical Issues | 1.3.1 Open Technical Issues | |||
| The cryptographic algorithm types (Appendix A) requires input from | The cryptographic algorithm types (Appendix A) requires input from | |||
| the working group. The DSA algorithm was moved to OPTIONAL. This | the working group. The DSA algorithm was moved to OPTIONAL. This | |||
| had strong consensus in workshops and various discussions and a | had strong consensus in workshops and various discussions and a | |||
| separate internet draft solely to move DSA from MANDATORY to OPTIONAL | separate Internet-Draft solely to move DSA from MANDATORY to OPTIONAL | |||
| seemed excessive. This draft solicits input on that proposed change. | seemed excessive. This draft solicits input on that proposed change. | |||
| 1.3.2 Technical Changes or Corrections | 1.3.2 Technical Changes or Corrections | |||
| Please report technical corrections to dnssec-editors@east.isi.edu. | Please report technical corrections to dnssec-editors@east.isi.edu. | |||
| To assist the editors, please indicate the text in error and point | To assist the editors, please indicate the text in error and point | |||
| out the RFC that defines the correct behavior. For a technical | out the RFC that defines the correct behavior. For a technical | |||
| change where no RFC that defines the correct behavior, or if there's | change where no RFC that defines the correct behavior, or if there's | |||
| more than one applicable RFC and the definitions conflict, please | more than one applicable RFC and the definitions conflict, please | |||
| post the issue to namedroppers. | post the issue to namedroppers. | |||
| skipping to change at page 6, line 15 ¶ | skipping to change at page 6, line 15 ¶ | |||
| 2. The DNSKEY Resource Record | 2. The DNSKEY Resource Record | |||
| DNSSEC uses public key cryptography to sign and authenticate DNS | DNSSEC uses public key cryptography to sign and authenticate DNS | |||
| resource record sets (RRsets). The public keys are stored in DNSKEY | resource record sets (RRsets). The public keys are stored in DNSKEY | |||
| resource records and are used in the DNSSEC authentication process | resource records and are used in the DNSSEC authentication process | |||
| described in [I-D.ietf-dnsext-dnssec-protocol]. For example, a zone | described in [I-D.ietf-dnsext-dnssec-protocol]. For example, a zone | |||
| signs its authoritative RRsets using a private key and stores the | signs its authoritative RRsets using a private key and stores the | |||
| corresponding public key in a DNSKEY RR. A resolver can then use | corresponding public key in a DNSKEY RR. A resolver can then use | |||
| these signatures to authenticate RRsets from the zone. | these signatures to authenticate RRsets from the zone. | |||
| The DNSKEY RR may also be used to store public keys associated with | The DNSKEY RR is not intended as a record for storing arbitrary | |||
| other DNS operations such as TKEY [RFC2930]. The DNSKEY RR is not, | public keys, and MUST NOT be used to store certificates or public | |||
| however, intended as a record for storing arbitrary public keys. The | keys that do not directly relate to the DNS infrastructure. | |||
| DNSKEY RR MUST NOT be used to store certificates or public keys that | ||||
| do not directly relate to the DNS infrastructure. | ||||
| The Type value for the DNSKEY RR type is 48. | The Type value for the DNSKEY RR type is 48. | |||
| The DNSKEY RR is class independent. | The DNSKEY RR is class independent. | |||
| The DNSKEY RR has no special TTL requirements. | The DNSKEY RR has no special TTL requirements. | |||
| 2.1 DNSKEY RDATA Wire Format | 2.1 DNSKEY RDATA Wire Format | |||
| The RDATA for a DNSKEY RR consists of a 2 octet Flags Field, a 1 | The RDATA for a DNSKEY RR consists of a 2 octet Flags Field, a 1 | |||
| octet Protocol Field, a 1 octet Algorithm Field , and the Public Key | octet Protocol Field, a 1 octet Algorithm Field, and the Public Key | |||
| Field. | Field. | |||
| 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Flags | Protocol | Algorithm | | | Flags | Protocol | Algorithm | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| / / | / / | |||
| / Public Key / | / Public Key / | |||
| / / | / / | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 2.1.1 The Flags Field | 2.1.1 The Flags Field | |||
| Bit 7 of the Flags field is the Zone Key flag. If bit 7 has value 1, | Bit 7 of the Flags field is the Zone Key flag. If bit 7 has value 1, | |||
| then the DNSKEY record holds a DNS zone key and the DNSKEY's owner | then the DNSKEY record holds a DNS zone key and the DNSKEY RR's owner | |||
| name MUST be the name of a zone. If bit 7 has value 0, then the | name MUST be the name of a zone. If bit 7 has value 0, then the | |||
| DNSKEY record holds some other type of DNS public key, such as a | DNSKEY record holds some other type of DNS public key, such as a | |||
| public key used by TKEY. | public key used by TKEY. | |||
| Bit 15 of the Flags field is the Secure Entry Point flag, described | Bit 15 of the Flags field is the Secure Entry Point flag, described | |||
| in [I-D.ietf-dnsext-keyrr-key-signing-flag]. If bit 15 has value 1, | in [I-D.ietf-dnsext-keyrr-key-signing-flag]. If bit 15 has value 1, | |||
| then the DNSKEY record holds a key intended for use as a secure entry | then the DNSKEY record holds a key intended for use as a secure entry | |||
| point. This flag is only intended to be to a hint to zone signing or | point. This flag is only intended to be to a hint to zone signing or | |||
| debugging software as to the intended use of this DNSKEY record; | debugging software as to the intended use of this DNSKEY record; | |||
| security-aware resolvers MUST NOT alter their behavior during the | security-aware resolvers MUST NOT alter their behavior during the | |||
| skipping to change at page 9, line 16 ¶ | skipping to change at page 9, line 16 ¶ | |||
| DNSSEC uses public key cryptography to sign and authenticate DNS | DNSSEC uses public key cryptography to sign and authenticate DNS | |||
| resource record sets (RRsets). Digital signatures are stored in | resource record sets (RRsets). Digital signatures are stored in | |||
| RRSIG resource records and are used in the DNSSEC authentication | RRSIG resource records and are used in the DNSSEC authentication | |||
| process described in [I-D.ietf-dnsext-dnssec-protocol]. A | process described in [I-D.ietf-dnsext-dnssec-protocol]. A | |||
| security-aware resolver can use these RRSIG RRs to authenticate | security-aware resolver can use these RRSIG RRs to authenticate | |||
| RRsets from the zone. The RRSIG RR MUST only be used to carry | RRsets from the zone. The RRSIG RR MUST only be used to carry | |||
| verification material (digital signatures) used to secure DNS | verification material (digital signatures) used to secure DNS | |||
| operations. | operations. | |||
| A RRSIG record contains the signature for an RRset with a particular | An RRSIG record contains the signature for an RRset with a particular | |||
| name, class, and type. The RRSIG RR specifies a validity interval | name, class, and type. The RRSIG RR specifies a validity interval | |||
| for the signature and uses the Algorithm, the Signer's Name, and the | for the signature and uses the Algorithm, the Signer's Name, and the | |||
| Key Tag to identify the DNSKEY RR containing the public key that a | Key Tag to identify the DNSKEY RR containing the public key that a | |||
| resolver can use to verify the signature. | resolver can use to verify the signature. | |||
| The Type value for the RRSIG RR type is 46. | The Type value for the RRSIG RR type is 46. | |||
| The RRSIG RR is class independent. | The RRSIG RR is class independent. | |||
| A RRSIG RR MUST have the same class as the RRset it covers. | An RRSIG RR MUST have the same class as the RRset it covers. | |||
| The TTL value of an RRSIG RR SHOULD match the TTL value of the RRset | The TTL value of an RRSIG RR SHOULD match the TTL value of the RRset | |||
| it covers. | it covers. | |||
| 3.1 RRSIG RDATA Wire Format | 3.1 RRSIG RDATA Wire Format | |||
| The RDATA for a RRSIG RR consists of a 2 octet Type Covered field, a | The RDATA for an RRSIG RR consists of a 2 octet Type Covered field, a | |||
| 1 octet Algorithm field, a 1 octet Labels field, a 4 octet Original | 1 octet Algorithm field, a 1 octet Labels field, a 4 octet Original | |||
| TTL field, a 4 octet Signature Expiration field, a 4 octet Signature | TTL field, a 4 octet Signature Expiration field, a 4 octet Signature | |||
| Inception field, a 2 octet Key tag, the Signer's Name field, and the | Inception field, a 2 octet Key tag, the Signer's Name field, and the | |||
| Signature field. | Signature field. | |||
| 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type Covered | Algorithm | Labels | | | Type Covered | Algorithm | Labels | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 11, line 16 ¶ | skipping to change at page 11, line 16 ¶ | |||
| The Original TTL field specifies the TTL of the covered RRset as it | The Original TTL field specifies the TTL of the covered RRset as it | |||
| appears in the authoritative zone. | appears in the authoritative zone. | |||
| The Original TTL field is necessary because a caching resolver | The Original TTL field is necessary because a caching resolver | |||
| decrements the TTL value of a cached RRset. In order to validate a | decrements the TTL value of a cached RRset. In order to validate a | |||
| signature, a resolver requires the original TTL. | signature, a resolver requires the original TTL. | |||
| [I-D.ietf-dnsext-dnssec-protocol] describes how to use the Original | [I-D.ietf-dnsext-dnssec-protocol] describes how to use the Original | |||
| TTL field value to reconstruct the original TTL. | TTL field value to reconstruct the original TTL. | |||
| The Original TTL value MUST be greater than or equal to the TTL value | ||||
| of the RRSIG record itself. | ||||
| 3.1.5 Signature Expiration and Inception Fields | 3.1.5 Signature Expiration and Inception Fields | |||
| The Signature Expiration and Inception fields specify a validity | The Signature Expiration and Inception fields specify a validity | |||
| period for the signature. The RRSIG record MUST NOT be used for | period for the signature. The RRSIG record MUST NOT be used for | |||
| authentication prior to the inception date and MUST NOT be used for | authentication prior to the inception date and MUST NOT be used for | |||
| authentication after the expiration date. | authentication after the expiration date. | |||
| Signature Expiration and Inception field values are in POSIX.1 time | Signature Expiration and Inception field values are in POSIX.1 time | |||
| format: a 32-bit unsigned number of seconds elapsed since 1 January | format: a 32-bit unsigned number of seconds elapsed since 1 January | |||
| 1970 00:00:00 UTC, ignoring leap seconds, in network byte order. The | 1970 00:00:00 UTC, ignoring leap seconds, in network byte order. The | |||
| longest interval which can be expressed by this format without | longest interval which can be expressed by this format without | |||
| wrapping is approximately 136 years. A RRSIG RR can have an | wrapping is approximately 136 years. An RRSIG RR can have an | |||
| Expiration field value which is numerically smaller than the | Expiration field value which is numerically smaller than the | |||
| Inception field value if the expiration field value is near the | Inception field value if the expiration field value is near the | |||
| 32-bit wrap-around point or if the signature is long lived. Because | 32-bit wrap-around point or if the signature is long lived. Because | |||
| of this, all comparisons involving these fields MUST use "Serial | of this, all comparisons involving these fields MUST use "Serial | |||
| number arithmetic" as defined in [RFC1982]. As a direct consequence, | number arithmetic" as defined in [RFC1982]. As a direct consequence, | |||
| the values contained in these fields cannot refer to dates more than | the values contained in these fields cannot refer to dates more than | |||
| 68 years in either the past or the future. | 68 years in either the past or the future. | |||
| 3.1.6 The Key Tag Field | 3.1.6 The Key Tag Field | |||
| skipping to change at page 11, line 52 ¶ | skipping to change at page 11, line 49 ¶ | |||
| validates this signature. Appendix B explains how to calculate Key | validates this signature. Appendix B explains how to calculate Key | |||
| Tag values. | Tag values. | |||
| 3.1.7 The Signer's Name Field | 3.1.7 The Signer's Name Field | |||
| The Signer's Name field value identifies the owner name of the DNSKEY | The Signer's Name field value identifies the owner name of the DNSKEY | |||
| RR which a security-aware resolver should use to validate this | RR which a security-aware resolver should use to validate this | |||
| signature. The Signer's Name field MUST contain the name of the zone | signature. The Signer's Name field MUST contain the name of the zone | |||
| of the covered RRset. A sender MUST NOT use DNS name compression on | of the covered RRset. A sender MUST NOT use DNS name compression on | |||
| the Signer's Name field when transmitting a RRSIG RR. A receiver | the Signer's Name field when transmitting a RRSIG RR. A receiver | |||
| which receives a RRSIG RR containing a compressed Signer's Name field | which receives an RRSIG RR containing a compressed Signer's Name | |||
| SHOULD decompress the field value. | field SHOULD decompress the field value. | |||
| 3.1.8 The Signature Field | 3.1.8 The Signature Field | |||
| The Signature field contains the cryptographic signature which covers | The Signature field contains the cryptographic signature which covers | |||
| the RRSIG RDATA (excluding the Signature field) and the RRset | the RRSIG RDATA (excluding the Signature field) and the RRset | |||
| specified by the RRSIG owner name, RRSIG class, and RRSIG Type | specified by the RRSIG owner name, RRSIG class, and RRSIG Type | |||
| Covered field. | Covered field. | |||
| 3.1.8.1 Signature Calculation | 3.1.8.1 Signature Calculation | |||
| skipping to change at page 13, line 47 ¶ | skipping to change at page 13, line 43 ¶ | |||
| The Key Tag field MUST be represented as an unsigned decimal integer. | The Key Tag field MUST be represented as an unsigned decimal integer. | |||
| The Signer's Name field value MUST be represented as a domain name. | The Signer's Name field value MUST be represented as a domain name. | |||
| The Signature field is represented as a Base64 encoding of the | The Signature field is represented as a Base64 encoding of the | |||
| signature. Whitespace is allowed within the Base64 text. For a | signature. Whitespace is allowed within the Base64 text. For a | |||
| definition of Base64 encoding see [RFC1521] Section 5.2. | definition of Base64 encoding see [RFC1521] Section 5.2. | |||
| 3.3 RRSIG RR Example | 3.3 RRSIG RR Example | |||
| The following a RRSIG RR stores the signature for the A RRset of | The following an RRSIG RR stores the signature for the A RRset of | |||
| host.example.com: | host.example.com: | |||
| host.example.com. 86400 IN RRSIG A 5 3 86400 20030322173103 ( | host.example.com. 86400 IN RRSIG A 5 3 86400 20030322173103 ( | |||
| 20030220173103 2642 example.com. | 20030220173103 2642 example.com. | |||
| oJB1W6WNGv+ldvQ3WDG0MQkg5IEhjRip8WTr | oJB1W6WNGv+ldvQ3WDG0MQkg5IEhjRip8WTr | |||
| PYGv07h108dUKGMeDPKijVCHX3DDKdfb+v6o | PYGv07h108dUKGMeDPKijVCHX3DDKdfb+v6o | |||
| B9wfuh3DTJXUAfI/M0zmO/zz8bW0Rznl8O3t | B9wfuh3DTJXUAfI/M0zmO/zz8bW0Rznl8O3t | |||
| GNazPwQKkRN20XPXV6nwwfoXmJQbsLNrLfkG | GNazPwQKkRN20XPXV6nwwfoXmJQbsLNrLfkG | |||
| J5D6fwFm8nN+6pBzeDQfsS3Ap3o= ) | J5D6fwFm8nN+6pBzeDQfsS3Ap3o= ) | |||
| skipping to change at page 15, line 40 ¶ | skipping to change at page 15, line 40 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| / Type Bit Map / | / Type Bit Map / | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 4.1.1 The Next Domain Name Field | 4.1.1 The Next Domain Name Field | |||
| The Next Domain Name field contains the owner name of the next | The Next Domain Name field contains the owner name of the next | |||
| authoritative RRset in the canonical ordering of the zone; see | authoritative RRset in the canonical ordering of the zone; see | |||
| Section 6.1 for an explanation of canonical ordering. The value of | Section 6.1 for an explanation of canonical ordering. The value of | |||
| the Next Domain Name field in the last NSEC record in the zone is the | the Next Domain Name field in the last NSEC record in the zone is the | |||
| name of the zone apex (the owner name name of the zone's SOA RR). | name of the zone apex (the owner name of the zone's SOA RR). | |||
| A sender MUST NOT use DNS name compression on the Next Domain Name | A sender MUST NOT use DNS name compression on the Next Domain Name | |||
| field when transmitting an NSEC RR. A receiver which receives an | field when transmitting an NSEC RR. A receiver which receives an | |||
| NSEC RR containing a compressed Next Domain Name field SHOULD | NSEC RR containing a compressed Next Domain Name field SHOULD | |||
| decompress the field value. | decompress the field value. | |||
| Owner names of RRsets not authoritative for the given zone (such as | Owner names of RRsets not authoritative for the given zone (such as | |||
| glue records) MUST NOT be listed in the Next Domain Name unless at | glue records) MUST NOT be listed in the Next Domain Name unless at | |||
| least one authoritative RRset exists at the same owner name. | least one authoritative RRset exists at the same owner name. | |||
| 4.1.2 The Type Bit Map Field | 4.1.2 The Type Bit Map Field | |||
| The Type Bit Map field identifies the RRset types which exist at the | The Type Bit Map field identifies the RRset types which exist at the | |||
| NSEC RR's owner name. | NSEC RR's owner name. | |||
| Each bit in the Type Bit Map field corresponds to an RR type. Bit 1 | Each bit in the Type Bit Map field corresponds to an RR type. Bit 1 | |||
| corresponds to RR type 1 (A), bit 2 corresponds to RR type 2 (NS), | corresponds to RR type 1 (A), bit 2 corresponds to RR type 2 (NS), | |||
| and so forth. If a bit is set to 1, it indicates that an RRset of | and so forth. If a bit is set to 1, it indicates that an RRset of | |||
| that type is present for the NSEC's owner name. If a bit is set to 0, | that type is present for the NSEC RR's owner name. If a bit is set to | |||
| it indicates that no RRset of that type present for the NSEC's owner | 0, it indicates that no RRset of that type present for the NSEC RR's | |||
| name. | owner name. | |||
| A zone MUST NOT generate an NSEC RR for any domain name that only | A zone MUST NOT generate an NSEC RR for any domain name that only | |||
| holds glue records. | holds glue records. | |||
| Bits representing pseudo-RR types MUST be set to 0, since they do not | Bits representing pseudo-RR types MUST be set to 0, since they do not | |||
| appear in zone data. If encountered, they must be ignored upon | appear in zone data. If encountered, they must be ignored upon | |||
| reading. | reading. | |||
| Trailing zero octets MUST be omitted. The length of the Type Bit Map | Trailing zero octets MUST be omitted. The length of the Type Bit Map | |||
| field varies, and is determined by the type code with the largest | field varies, and is determined by the type code with the largest | |||
| skipping to change at page 17, line 23 ¶ | skipping to change at page 17, line 23 ¶ | |||
| alfa.example.com. | alfa.example.com. | |||
| alfa.example.com. 86400 IN NSEC host.example.com. A MX RRSIG NSEC | alfa.example.com. 86400 IN NSEC host.example.com. A MX RRSIG NSEC | |||
| The first four text fields specify the name, TTL, Class, and RR type | The first four text fields specify the name, TTL, Class, and RR type | |||
| (NSEC). The entry host.example.com. is the next authoritative name | (NSEC). The entry host.example.com. is the next authoritative name | |||
| after alfa.example.com. in canonical order. The A, MX, RRSIG and NSEC | after alfa.example.com. in canonical order. The A, MX, RRSIG and NSEC | |||
| mnemonics indicate there are A, MX, RRSIG and NSEC RRsets associated | mnemonics indicate there are A, MX, RRSIG and NSEC RRsets associated | |||
| with the name alfa.example.com. | with the name alfa.example.com. | |||
| Note that the NSEC record can be used in authenticated denial of | Assuming that the resolver can authenticate this NSEC record, it | |||
| existence proofs. If the example NSEC record were authenticated, it | could be used to prove that beta.example.com does not exist, or could | |||
| could be used to prove that beta.example.com does not exist or could | ||||
| be used to prove there is no AAAA record associated with | be used to prove there is no AAAA record associated with | |||
| alfa.example.com. Authenticated denial of existence is discussed in | alfa.example.com. Authenticated denial of existence is discussed in | |||
| [I-D.ietf-dnsext-dnssec-protocol]. | [I-D.ietf-dnsext-dnssec-protocol]. | |||
| 5. The DS Resource Record | 5. The DS Resource Record | |||
| The DS Resource Record refers to a DNSKEY RR and is used in the DNS | The DS Resource Record refers to a DNSKEY RR and is used in the DNS | |||
| DNSKEY authentication process. A DS RR refers to a DNSKEY RR by | DNSKEY authentication process. A DS RR refers to a DNSKEY RR by | |||
| storing the key tag, algorithm number, and a digest of the DNSKEY RR. | storing the key tag, algorithm number, and a digest of the DNSKEY RR. | |||
| Note that while the digest should be sufficient to identify the key, | Note that while the digest should be sufficient to identify the key, | |||
| skipping to change at page 22, line 8 ¶ | skipping to change at page 22, line 8 ¶ | |||
| format of the RR where: | format of the RR where: | |||
| 1. Every domain name in the RR is fully expanded (no DNS name | 1. Every domain name in the RR is fully expanded (no DNS name | |||
| compression) and fully qualified; | compression) and fully qualified; | |||
| 2. All uppercase US-ASCII letters in the owner name of the RR are | 2. All uppercase US-ASCII letters in the owner name of the RR are | |||
| replaced by the corresponding lowercase US-ASCII letters; | replaced by the corresponding lowercase US-ASCII letters; | |||
| 3. If the type of the RR is NS, MD, MF, CNAME, SOA, MB, MG, MR, PTR, | 3. If the type of the RR is NS, MD, MF, CNAME, SOA, MB, MG, MR, PTR, | |||
| HINFO, MINFO, MX, HINFO, RP, AFSDB, RT, SIG, PX, NXT, NAPTR, KX, | HINFO, MINFO, MX, HINFO, RP, AFSDB, RT, SIG, PX, NXT, NAPTR, KX, | |||
| SRV, DNAME, or A6, all uppercase US-ASCII letters in the DNS | SRV, DNAME, A6, RRSIG or NSEC, all uppercase US-ASCII letters in | |||
| names contained within the RDATA are replaced by the | the DNS names contained within the RDATA are replaced by the | |||
| corresponding lowercase US-ASCII letters; | corresponding lowercase US-ASCII letters; | |||
| 4. If the owner name of the RR is a wildcard name, the owner name is | 4. If the owner name of the RR is a wildcard name, the owner name is | |||
| in its original unexpanded form, including the "*" label (no | in its original unexpanded form, including the "*" label (no | |||
| wildcard substitution); and | wildcard substitution); and | |||
| 5. The RR's TTL is set to its original value as it appears in the | 5. The RR's TTL is set to its original value as it appears in the | |||
| originating authoritative zone or the Original TTL field of the | originating authoritative zone or the Original TTL field of the | |||
| covering RRSIG RR. | covering RRSIG RR. | |||
| 6.3 Canonical RR Ordering Within An RRset | 6.3 Canonical RR Ordering Within An RRset | |||
| For purposes of DNS security, RRs with same owner name, same class, | For purposes of DNS security, RRs with the same owner name, class, | |||
| and same type are sorted by RDATA: first by RDATA length, shortest to | and type are sorted by RDATA: first by RDATA length, shortest to | |||
| longest, then by the canonical form of the RDATA itself in the case | longest, then by the canonical form of the RDATA itself in the case | |||
| of length equality, treating the RDATA portion of the canonical form | of length equality, treating the RDATA portion of the canonical form | |||
| of each RR as a left justified unsigned octet sequence. The absence | of each RR as a left justified unsigned octet sequence. The absence | |||
| of an octet sorts before a zero octet. | of an octet sorts before a zero octet. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This document introduces no new IANA considerations, because all of | This document introduces no new IANA considerations, because all of | |||
| the protocol parameters used in this document have already been | the protocol parameters used in this document have already been | |||
| assigned by previous specifications. However, since the evolution of | assigned by previous specifications. However, since the evolution of | |||
| skipping to change at page 26, line 9 ¶ | skipping to change at page 26, line 9 ¶ | |||
| efficiently, but it does not uniquely identify a single DNSKEY | efficiently, but it does not uniquely identify a single DNSKEY | |||
| resource record. It is possible for two distinct DNSKEY RRs to have | resource record. It is possible for two distinct DNSKEY RRs to have | |||
| the same owner name, the same algorithm type, and the same key tag. | the same owner name, the same algorithm type, and the same key tag. | |||
| An implementation which used only the key tag to select a DNSKEY RR | An implementation which used only the key tag to select a DNSKEY RR | |||
| might select the wrong public key in some circumstances. | might select the wrong public key in some circumstances. | |||
| 9. Acknowledgments | 9. Acknowledgments | |||
| This document was created from the input and ideas of several members | This document was created from the input and ideas of several members | |||
| of the DNS Extensions Working Group and working group mailing list. | of the DNS Extensions Working Group and working group mailing list. | |||
| The co-authors of this draft would like to express their thanks for | The editors would like to express their thanks for the comments and | |||
| the comments and suggestions received during the revision of these | suggestions received during the revision of these security extension | |||
| security extension specifications. | specifications. | |||
| Normative References | Normative References | |||
| [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
| STD 13, RFC 1034, November 1987. | STD 13, RFC 1034, November 1987. | |||
| [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. | |||
| [RFC1521] Borenstein, N. and N. Freed, "MIME (Multipurpose Internet | [RFC1521] Borenstein, N. and N. Freed, "MIME (Multipurpose Internet | |||
| skipping to change at page 28, line 8 ¶ | skipping to change at page 28, line 8 ¶ | |||
| (RR) Types", RFC 3597, September 2003. | (RR) Types", RFC 3597, September 2003. | |||
| [I-D.ietf-dnsext-delegation-signer] | [I-D.ietf-dnsext-delegation-signer] | |||
| Gudmundsson, O., "Delegation Signer Resource Record", | Gudmundsson, O., "Delegation Signer Resource Record", | |||
| draft-ietf-dnsext-delegation-signer-15 (work in progress), | draft-ietf-dnsext-delegation-signer-15 (work in progress), | |||
| June 2003. | June 2003. | |||
| [I-D.ietf-dnsext-dnssec-intro] | [I-D.ietf-dnsext-dnssec-intro] | |||
| Arends, R., Austein, R., Larson, M., Massey, D. and S. | Arends, R., Austein, R., Larson, M., Massey, D. and S. | |||
| Rose, "DNS Security Introduction and Requirements", | Rose, "DNS Security Introduction and Requirements", | |||
| draft-ietf-dnsext-dnssec-intro-06 (work in progress), | draft-ietf-dnsext-dnssec-intro-07 (work in progress), | |||
| September 2003. | October 2003. | |||
| [I-D.ietf-dnsext-dnssec-protocol] | [I-D.ietf-dnsext-dnssec-protocol] | |||
| Arends, R., Austein, R., Larson, M., Massey, D. and S. | Arends, R., Austein, R., Larson, M., Massey, D. and S. | |||
| Rose, "Protocol Modifications for the DNS Security | Rose, "Protocol Modifications for the DNS Security | |||
| Extensions", draft-ietf-dnsext-dnssec-protocol-02 (work in | Extensions", draft-ietf-dnsext-dnssec-protocol-03 (work in | |||
| progress), September 2003. | progress), October 2003. | |||
| [I-D.ietf-dnsext-keyrr-key-signing-flag] | [I-D.ietf-dnsext-keyrr-key-signing-flag] | |||
| Kolkman, O., Schlyter, J. and E. Lewis, "KEY RR Secure | Kolkman, O., Schlyter, J. and E. Lewis, "KEY RR Secure | |||
| Entry Point (SEP) Flag", | Entry Point Flag", | |||
| draft-ietf-dnsext-keyrr-key-signing-flag-08 (work in | draft-ietf-dnsext-keyrr-key-signing-flag-11 (work in | |||
| progress), July 2003. | progress), October 2003. | |||
| [I-D.ietf-dnsext-dnssec-2535typecode-change] | [I-D.ietf-dnsext-dnssec-2535typecode-change] | |||
| Weiler, S., "Legacy Resolver Compatibility for Delegation | Weiler, S., "Legacy Resolver Compatibility for Delegation | |||
| Signer", draft-ietf-dnsext-dnssec-2535typecode-change-04 | Signer", draft-ietf-dnsext-dnssec-2535typecode-change-05 | |||
| (work in progress), August 2003. | (work in progress), October 2003. | |||
| Informative References | Informative References | |||
| [RFC2535] Eastlake, D., "Domain Name System Security Extensions", | [RFC2535] Eastlake, D., "Domain Name System Security Extensions", | |||
| RFC 2535, March 1999. | RFC 2535, March 1999. | |||
| [RFC2930] Eastlake, D., "Secret Key Establishment for DNS (TKEY | [RFC2930] Eastlake, D., "Secret Key Establishment for DNS (TKEY | |||
| RR)", RFC 2930, September 2000. | RR)", RFC 2930, September 2000. | |||
| Authors' Addresses | Authors' Addresses | |||
| skipping to change at page 33, line 28 ¶ | skipping to change at page 33, line 28 ¶ | |||
| tag. The key tag is used to limit the possible candidate keys, but it | tag. The key tag is used to limit the possible candidate keys, but it | |||
| does not uniquely identify a DNSKEY record. Implementations MUST NOT | does not uniquely identify a DNSKEY record. Implementations MUST NOT | |||
| assume that the key tag uniquely identifies a DNSKEY RR. | assume that the key tag uniquely identifies a DNSKEY RR. | |||
| The key tag is the same for all DNSKEY algorithm types except | The key tag is the same for all DNSKEY algorithm types except | |||
| algorithm 1 (please see Appendix B.1 for the definition of the key | algorithm 1 (please see Appendix B.1 for the definition of the key | |||
| tag for algorithm 1). The key tag algorithm is the sum of the wire | tag for algorithm 1). The key tag algorithm is the sum of the wire | |||
| format of the DNSKEY RDATA broken into 2 octet groups. First the | format of the DNSKEY RDATA broken into 2 octet groups. First the | |||
| RDATA (in wire format) is treated as a series of 2 octet groups, | RDATA (in wire format) is treated as a series of 2 octet groups, | |||
| these groups are then added together ignoring any carry bits. A | these groups are then added together ignoring any carry bits. A | |||
| reference implementation of the key tag algorithm is as am ANSI C | reference implementation of the key tag algorithm is as an ANSI C | |||
| function is given below with the RDATA portion of the DNSKEY RR is | function is given below with the RDATA portion of the DNSKEY RR is | |||
| used as input. It is not necessary to use the following reference | used as input. It is not necessary to use the following reference | |||
| code verbatim, but the numerical value of the Key Tag MUST be | code verbatim, but the numerical value of the Key Tag MUST be | |||
| identical to what the reference implementation would generate for the | identical to what the reference implementation would generate for the | |||
| same input. | same input. | |||
| Please note that the algorithm for calculating the Key Tag is almost | Please note that the algorithm for calculating the Key Tag is almost | |||
| but not completely identical to the familiar ones complement checksum | but not completely identical to the familiar ones complement checksum | |||
| used in many other Internet protocols. Key Tags MUST be calculated | used in many other Internet protocols. Key Tags MUST be calculated | |||
| using the algorithm described here rather than the ones complement | using the algorithm described here rather than the ones complement | |||
| End of changes. 30 change blocks. | ||||
| 55 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/ | ||||