Network Working GroupDNS Extensions R. Arends Internet-Draft Telematica Instituut Expires:April 29,August 26, 2003 R. Austein ISC M. Larson VeriSign D. Massey USC/ISI S. Rose NISTOctober 29, 2002February 25, 2003 Resource Records for the DNS Security Extensionsdraft-ietf-dnsext-dnssec-records-02draft-ietf-dnsext-dnssec-records-03 Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http:// www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire onApril 29,August 26, 2003. Copyright Notice Copyright (C) The Internet Society(2002).(2003). All Rights Reserved. Abstract This document is part of a family of documents thatdescribedescribes the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection of resource records and protocol modifications that provide source authentication for the DNS. This document defines the KEY, DS, SIG, and NXT resource records. The purpose and format of each resource record isdescibeddescribed in detail and an example of each resource record is given.This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535.Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1 Background and Related Documents . . . . . . . . . . . . . . 4 1.2 Reserved Words . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Editors Notes . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 Open Technical Issues . . . . . . . . . . . . . . . . . . . 4 1.3.2 Technical Changes or Corrections . . . . . . . . . . . . . . 4 1.3.3 Typos and Minor Corrections . . . . . . . . . . . . . . . . 5 2. The KEY Resource Record . . . . . . . . . . . . . . . . . . 6 2.1 KEY RDATA Wire Format . . . . . . . . . . . . . . . . . . . 6 2.1.1 The Flags Field . . . . . . . . . . . . . . . . . . . . . . 6 2.1.2 The ProtocolOctetField . . . . . . . . . . . . . . . . . . . . . 7 2.1.3 The AlgorithmandField . . . . . . . . . . . . . . . . . . . . 7 2.1.4 The Public KeyFieldsField . . . . . . . . . . . . . . . . . . . . 72.1.42.1.5 Notes on KEY RDATA Design . . . . . . . . . . . . . . . . . 7 2.2 The KEY RR Presentation Format . . . . . . . . . . . . . . . 7 2.3 KEY RR Example . . . . . . . . . . . . . . . . . . . . . . . 7 3. The SIG Resource Record . . . . . . . . . . . . . . . . . . 9 3.1TheSIG RDATA. . .Wire Format . . . . . . . . . . . . . . . . . . . 9 3.1.1 The Type Covered Field . . . . . . . . . . . . . . . . . . . 10 3.1.2 The Algorithm Number Field . . . . . . . . . . . . . . . . . 10 3.1.3 The Labels Field . . . . . . . . . . . . . . . . . . . . . . 10 3.1.4 Original TTL Field . . . . . . . . . . . . . . . . . . . .10. 11 3.1.5 Signature Expiration and Inception Fields . . . . . . . . . 11 3.1.6 The Key Tag Field . . . . . . . . . . . . . . . . . . . . . 11 3.1.7 The Signer's Name Field . . . . . . . . . . . . . . . . . . 11 3.1.8 The Signature Field . . . . . . . . . . . . . . . . . . .11 3.2 Calculating A Signature . . . . . . . . . . . . . . . .. 123.2.1 Calculating An RRset Signature . . . . . . . . . .3.2 The SIG RR Presentation Format . . . .12 3.2.2 Calculating An Transaction Signature. . . . . . . . . . . 12 3.3TheSIG RRPresentation Format . . . . . . . . . .Example . . . .13 3.4 Example of a SIG RR. . . . . . . . . . . . . . . . . . . 13 4. The NXT Resource Record . . . . . . . . . . . . . . . . . . 15 4.1 NXT RDATA Wire Format . . . . . . . . . . . . . . . . . . . 15 4.1.1 The Next Domain Name Field . . . . . . . . . . . . . . . . . 15 4.1.2 The Type Bit Map Field . . . . . . . . . . . . . . . . . .16 4.1.2.1 Alternate Formats for the Type Bit Map Field . . . . . ..1615 4.1.3 Inclusion of Wildcard Names in NXT RDATA . . . . . . . . . . 16 4.2 The NXT RR Presentation Format . . . . . . . . . . . . . . . 16 4.3 NXT RR Example . . . . . . . . . . . . . . . . . . . . . .17. 16 5. The DS Resource Record . . . . . . . . . . . . . . . . . . . 18 5.1 DS RDATA Wire Format . . . . . . . . . . . . . . . . . . . . 18 5.1.1 The Key Tag Field . . . . . . . . . . . . . . . . . . . . . 18 5.1.2 The Algorithm Field . . . . . . . . . . . . . . . . . . . . 19 5.1.3 The Digest Type Field . . . . . . . . . . . . . . . . . . . 19 5.1.4 The Digest Field . . . . . . . . . . . . . . . . . . . . . . 19 5.2 The DS RR Presentation Format . . . . . . . . . . . . . . . 19 5.3 DSRecordRR Example . . . . . . . . . . . . . . . . . . . . . . . 20 6.IANA ConsiderationsCanonical Form and Order of Resource Records . . . . . . . . 21 6.1 Canonical DNS Name Order . . . . . . . . . . . . . . . . . . 217. Security Considerations6.2 Canonical RR Form . . . . . . . . . . . . . . . . .22 8. Acknowledgements. . . . 21 6.3 Canonical RR Ordering Within An RRset . . . . . . . . . . . 22 7. IANA Considerations . . . . . . . . . .23 References. . . . . . . . . . 23 8. Security Considerations . . . . . . . . . . . . . . . . . . 24Authors' Addresses9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 25A. DNSSEC Algorithm and Digest TypesNormative References . . . . . . . . . . . .26 A.1 DNSSEC Algorithm Types. . . . . . . . 26 Informative References . . . . . . . . . .26 A.1.1 Indiret and Private Algorithm Types. . . . . . . . . 27 Authors' Addresses . .26 A.2 DNSSEC Digest Types. . . . . . . . . . . . . . . . . . . 27B. Key Tag CalculationA. DNSSEC Algorithm and Digest Types . . . . . . . . . . . . . 29 A.1 DNSSEC Algorithm Types . . . . . . .28 B.1 Key Tag for Algorithm 1 - RSA/MD5. . . . . . . . . . . . 29C. Canonical Form and Order of Resource RecordsA.1.1 Private Algorithm Types . . . . . .30 C.1 Canonical DNS Name Order. . . . . . . . . . . . 29 A.2 DNSSEC Digest Types . . . . .30 C.2 Canonical RR Form. . . . . . . . . . . . . . . 30 B. Key Tag Calculation . . . . . . .30 C.3 Canonical RR Ordering Within An RRset. . . . . . . . . .31 C.4 Canonical Ordering of RR Types. . . 31 B.1 Key Tag for Algorithm 1 (RSA/MD5) . . . . . . . . . . . . .3132 Full Copyright Statement . . . . . . . . . . . . . . . . .32. 33 1. Introduction The DNS Security Extensions (DNSSEC) introduce four new DNS resourcerecords: therecord types: KEY, SIG, NXT, andDS resource records.DS. This document defines the purpose of each resource record (RR), the RR's RDATA format, and its ASCII representation.An example of each RR type is also given.1.1 Background and Related Documents The reader is assumed to be familiar with the basic DNS concepts described in RFC1034 [1] and RFC1035 [2]. This document is part of a family of documents that define the DNS security extensions. The DNS security extensions (DNSSEC) are a collection of resource records and DNS protocol modifications that add source authentication the Domain Name System (DNS). An introduction to DNSSEC and definition of common terms can be found in[13].[10]. A description of DNS protocol modifications can be found in[14].[11]. This document defines the DNSSEC resource records.The reader to assumed to be familiar with the basic DNS concepts described in RFC1034 [1] and RFC1035 [2] and should also be familiar with common DNSSEC terminology as defined in [13].1.2 Reserved Words The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119[4].[5]. 1.3 Editors Notes 1.3.1 Open Technical Issues The NXT section (Section 4)requires input from the working group. Since the opt-in issue is not resolved, this text describes the NXT record as it was defined in RFC 2535. This sectionmayneed tobeupdated, depending onupdated in theoutcomenext version if DNSSEC-Opt-In [13] becomes part ofthe opt-in discussion.DNSSEC. The cryptographic algorithm types (Appendix A) requires input from the working group. The DSA algorithm was moved to OPTIONAL. This had strong consensus in workshops and various discussions and aseperateseparate internet draft solely to move DSA from MANDATORY to OPTIONAL seemed excessive. This draftsolictssolicits input on that proposed change.The indirect and private algorithms types (Appendix A) are also worth noting. See the text in that section.1.3.2 Technical Changes or Corrections Please report technical corrections to dnssec-editors@east.isi.edu. To assist the editors, please indicate the text in error and point out the RFC that defines the correct behavior. For a technical change wherethere isno RFC that defines the correctbehavior (or RFCs provide conflicting answers),behavior, or if there's more than one applicable RFC and the definitions conflict, please post the issue to namedroppers. An example correction to dnssec-editors might be: Page X says "DNSSEC RRs SHOULD be automatically returned in responses." This was true in RFC 2535, but RFC 3225 (Section 3, 3rd paragraph) says the DNSSEC RR types MUST NOT be included in responses unless the resolver indicated support for DNSSEC. 1.3.3 Typos and Minor Corrections Please report any typos corrections to dnssec-editors@east.isi.edu. To assist the editors, please provide enough context for us toquicklyfind the incorrecttext.text quickly. An example message to dnssec-editors might be: page X says "the DNSSEC standard has been in development for over 1 years". It should read "over 10 years". 2. The KEY Resource Record DNSSEC uses public keycryptogrpahycryptography to sign and authenticate DNS resource record sets (RRsets). The public keys are stored in KEY resource records and are used in the DNSSEC authentication process described in[14].[11]. In a typical example, a zone signs itsauthorititaveauthoritative RRsets using a private key and stores the corresponding public key in a KEY RR. A resolver can then use these signatures to authenticate RRsets from the zone. The KEY RRismay also be used to store public keys associated with other DNSoperations,operations such asSIG(0) [14] andTKEY[9].[15]. In all cases, the KEY RR plays a special role in secure DNS resolution and DNS message processing. The KEY RR is not intended as a record for storing arbitrary public keys. The KEY RR MUST NOT be used to store certificates or public keys that do not directly relate to the DNS infrastructure. Examples of certificates and public keys that MUST NOT be stored in the KEY RR include X.509 certificates, IPSEC public keys, and SSH public keys. Thetype numberType value for the KEY RR type is 25. The KEY RR is class independent. There are no special TTL requirements on the KEY record.DNSSEC best practices documents are encouraged to provide TTL recommendations.2.1 KEY RDATA Wire Format The RDATA for a KEY RR consists of a 2 octet FlagsFields,Field, a 1 octet ProtocolOctet,Field, aone1 octet AlgorithmNumber,Field , and the PublicKey.Key Field. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Protocol | Algorithm | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|/ / / Public Key / / /+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2.1.1 The Flags Field Bit 7 of the Flags field is the Zone Key flag. If bit 7ishas value 1, then the KEY record holds a DNS zone key and the KEY's owner name MUST be the name of a zone. If bit 7ishas value 0, then the KEY record holds some other type of DNS public key, such as a public key used bySIG(0) orTKEY. Bits 0-6 and 8-15 are reservedfor future useand MUST have value 0 upon creation of the KEY RR, and MUST bezero.ignored upon reception. Editors' Note: draft-ietf-dnsext-keyrr-key-signing-flag changes this by allocating bit 15 as the KSK bit. 2.1.2 The ProtocolOctetField The ProtocolOctet fieldField MUSTbehave value 3. 2.1.3 The Algorithmand Public Key FieldsField The Algorithm field identifies the public key's cryptographic algorithm and determines the format of the Public Key field. A list of DNSSEC algorithm types can be found in Appendix A.1 2.1.4 The Public Key Field The Public Key Field holds the public key material. 2.1.5 Notes on KEY RDATA Design Although the ProtocolOctet field isField always has value 3, it is retained forbackwardsbackward compatibility with an earlier version of the KEY record.The use of bit 7 as the Zone Key Flag is also due to backwards compatiblity issues.2.2 The KEY RR Presentation FormatA KEY RR may appear as a single line or multiple lines separated with newline characters if those lines are contained with parantheses.The presentation format of the RDATA portion is as follows: The Flag field is represented as an unsignedinteger.decimal integer with a value of either 0 or 256. The ProtocolOctet fieldField is represented asthean unsigned decimal integer with a value of 3. The Algorithm field is represented either as an unsigned decimal integer or as an algorithm mnemonic as specified in Appendix A.1. The Public Key field is represented as aBase 64Base64 encoding of the PublicKey Field.Key. Whitespace is allowed within the Base64 text. For a definition of Base64 encoding, see [3] Section 5.2. 2.3 KEY RR Example The following KEY RR stores a DNS zone key forisi.edu. isi.edu.example.com. example.com. 86400 IN KEY 256 3 5 (AQPT0sh3WjVeRY3WqpBjtf <snip of base64 encoded text> xxDw==)AQPSKmynfzW4kyBv015MUG2DeIQ3Cbl +BBZH4b/0PY1kxkmvHjcZc8nokfzj31 GajIQKY+5CptLr3buXA10hWqTkF7H6R foRqXQeogmMHfpftf6zMv1LyBUgia7z a6ZEzOJBOztyvhjL742iU/TpPSEDhm2 SNKLijfUppn1UaNvv4w== ) The first four text fields specify the owner name, TTL, Class, and RR type (KEY). Value 256 indicates that the Zone Key bit (bit 7) in the Flags field hasthe zone key bit is set.value 1. Value 3 is the fixed ProtocolOctetvalue. Value 5 indicates the public key algorithm. Appendix A.1 identifies algorithm type 5 as RSA/SHA1 and indicates that the format of the RSA/SHA1 public key field is defined in[12].[8]. The remaining text is a base 64 encoding of the public key. 3. The SIG Resource Record DNSSEC uses public keycryptogrpahycryptography to sign and authenticate DNS resource record sets (RRsets).The signaturesSignatures are stored in SIG resource records and are used in the DNSSEC authentication process described in[14].[11]. In a typical example, a zone signs itsauthorititaveauthoritative RRsets using a private key and stores the corresponding signatures in SIG RRs. A resolver can then use thesesignaturesSIG RRs to authenticate RRsets from the zone. A SIG record contains the signature for an RRset with a particular name, class, and type. The SIG RRis said to "cover" this RRset. The SIG RR alsospecifies a validity interval for the signature and usesan algorithm signer's name,the Algorithm, the Signer's Name, andkey tagthe Key Tag to identify the public key (KEYrecord)RR) that can be used to verify the signature. Thesignature inSIG RR mayalsocover a transactionrather thaninstead of anRRset [14].RRset. In this case, the "Type Covered" field value isset to 0 and0, the SIG RRis refered to as SIG(0) resource record.MUST NOT appear in any zone, and its use and processing are outside the scope of this document. Please see [7] for further details. Thetype numberType value for the SIG RR type is 24. The SIG RRis class independent, butMUST have the same class as the RRset it covers. The SIG RR TTL value SHOULD match the TTL value of the RRset it covers. 3.1TheSIG RDATA Wire Format The RDATAportion offor a SIG RRis shown below:consists of a 2 octet Type Covered field, a 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 Inception field, a 2 octet Key tag, the Signer's Name field, and the Signature field. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |type coveredType Covered |algorithmAlgorithm |labelsLabels | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |originalOriginal TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |signature expirationSignature Expiration | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |signature inceptionSignature Inception | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |key tag |Key Tag | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+signer's name + |Signer's Name /+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-// / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ /signature/ / Signature / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3.1.1 The Type Covered Field The Type Covered field identifies theRRsettype of the RRset which is covered bythethis SIG record. If Type Covered fieldis set tohas a value of 0, the record is referred to as aSIG(0) RR and its signature covers atransactionrather than a specific RRset. [14] descirbes how to sign transactions using SIG(0) resource records.signature; please see [7] for further details. 3.1.2 The Algorithm Number Field The Algorithm Number fieldidentiesidentifies the cryptographic algorithm used to create the signature. A list of DNSSEC algorithm types can be found in Appendix A.1 3.1.3 The Labels Field The Labels field specifies the number of labels in the original SIG RR owner name. It is included to handle signatures associated with wildcard owner names. To validatethe signature,aresolversignature, the validator requires the original owner name that was used when the signature was created.In most cases, the owner name used when the signature was created is identical toIf the original owner namesent in any response. However,contains a wildcard label ("*"), the owner namewill bemay have been expanded by the server during thequery/response process and [14]response process, in which case the validator will need to reconstruct the original owner name in order to validate the signature. [11] describes how to use thelabel count is usedLabels field to reconstruct the original(unexpanded)owner name. TheLabelsvalue of the Label fielddoes notMUST NOT count either the nulllabels for root and does not count any initial "*" in a(root) label that terminates the owner name or the wildcardname.label (if present). TheLabelsvalue of the Label field MUST be less than or equal to the number of labels in the SIG owner name. For example, "www.example.com." has alabel countLabel field value of33, and "*.example.com." has a Label field value of 2. Root (".") has a Label field value of 0. Note that, although the wildcard label is not included in the count stored in the Label field of2.the SIG RR, the wildcard label is part of the RRset's owner name when generating or verifying the signature. 3.1.4 Original TTL Field The Original TTL field specifies theoriginalTTL of the covered RRset as it appears in the authoritative zone. The Original TTL field is necessary because a caching resolver decrements the TTL value of a cached RRset.ToIn order to validatethea signature, a resolver requires the originalTTL used when the signature was created. However, caching servers will decrement the TTL and [14]TTL. [11] describes how to use the Original TTL fieldcount is usedvalue to reconstruct the original(undecremented)TTL.If the Type Covered field is non-zero, theThe Original TTL value MUST be greater than or equal to the TTL value of the SIG record itself.If the Type Covered field is 0 (i.e. a SIG(0) RR), the Original TTL field SHOULD be zero.3.1.5 Signature Expiration and Inception Fields The SignatureInception and SignatureExpiration and Inception fields specify a validity period for the signature. The SIG record MUST NOT be used for authentication prior to the inception date and MUST NOT be used for authentication after theexpiratiationexpiration date.InceptionSignature Expiration andexpiration datesInception field values aregiven asin POSIX.1 time format, a 32-bit unsignednumbersnumber of seconds elapsed sincethe start of1 January 1970GMT,00:00:00 UTC, ignoring leapseconds. Ring arithmetic [3] to handle 32-bit wrap around. As result, these timesseconds, in network byte order. The longest interval which canneverbemore than 68 years in the past or the future and the times are ambiguous modulo ~136expressed by this format without wrapping is approximately 136 years. A SIG RR can have anexpiration timeExpiration field value which is numerically smaller than theinception timeInception field value if the expirationtimefield value is near the 32-bitwrap aroundwrap-around pointand/or if the signature is long lived. Because of this, all comparisons involving these fields MUST use "Serial number arithmetic" as defined in [4]. As a direct consequence, the values contained in these fields cannot refer to dates more than 68 years in either the past or the future. 3.1.6 The Key Tag Field The Key Tag field contains the key tag value of thepublic key (KEY RR) used to authenticateKEY RR that validates this signature. The process of calculatinga key tagthe Key Tag value is given in Appendix B. 3.1.7 The Signer's Name Field The Signer's Name field value identifies the owner name of the KEY RR used to authenticate this signature.If the Type Covered field is non-zero, theThe Signer's Name field MUST contain the name of the zonecontainingof the coveredRRset and the SIG. The signer's name MAY be compressed with standard DNS name compression when being transmitted over the network. IfRRset, unless the Type Covered field value is0 (i.e. a SIG(0) RR), the signer's name0. A sender MUSTbe theNOT use DNS nameofcompression on thehost originatingSigner's Name field when transmitting a SIG RR. A receiver which receives a SIG RR containing a compressed Signer's Name field SHOULD decompress theDNS message as described in [10].field value. 3.1.8 The Signature Field The Signature field contains the cryptographicsignature. If the Type Covered field is non-zero, thesignature which covers the SIG RDATA (excluding the Signature field) and the RRset specified by the SIG owner name, SIG class, and SIG Type Covered field.3.2 Calculating A Signature A signature covers either an RRset or a transaction. RRset signatures and transaction signatures are distinguished by the Type Covered field. RRset signatures have a non-zero Type Covered field. SIG RRs SHOULD NOT be generated for any "meta-type" such as ANY or AXFR. 3.2.1 Calculating An RRset3.1.8.1 Signature Calculation A signature covers the SIG RDATA (excluding the SignatureField itself)Field) and covers the RRset specified by the SIG owner name, SIG class, and SIG Type Covered field. The RRset is incannonicalcanonical form (seeAppendix C)Section 6) and the set RR(1),...RR(n) is signed as follows: signature = sign(SIG_RDATA | RR(1) | RR(2)... ) where "|" denotesappendconcatenation; SIG_RDATA is the wire format of the SIG RDATA fields with the Signer's Name field incannonical form.canonical form and the Signature fieldexcluded.excluded; RR(i) =fqdnowner | class | type | TTL | RDATA length |RDATA fqdnRDATA; "owner" is theFully Qualified Domain Namefully qualified owner name of the RRset in canonicalform. All RR(i)form (for RRs with wildcard owner names, the wildcard label is included in the owner name); Each RR MUST have the samefqdnowner name as the SIGRR. All RR(i)RR; Each RR MUST have the same class as the SIGRR. All RR(i)RR; Each RR in the RRset MUST have the RR type listed in the SIG RR's Type Coveredfield. All RR(i)field; Each RR in the RRset MUST have the TTL listed in the SIG Original TTLField AllField; Any DNS names in the RDATA fieldareof each RR MUST be in canonicalformform; and Theset of all RR(i) isRRset MUST be sortedinto cannonicalin canonical order.3.2.2 Calculating An Transaction Signature 3.33.2 The SIG RR Presentation FormatA SIG RR may appear as a single logical line.The presentation format of the RDATA portion is as follows: The Type Covered field value is representedbyeither as an unsigned decimal integer or as the mnemonic for the covered RR type. The Algorithm field value is represented either as an unsigned decimal integer or as an algorithm mnemonic as specified in Appendix A.1. The Labels field value is represented as an unsigned decimal integer. The Original TTL field value is represented as an unsigned decimal integer.It MAY be omitted if it is equal the TTL of the SIG RR.The Signature Inception Time and Expiration Timefieldsfield values are represented in the formYYYYMMDDHHmmSS,YYYYMMDDHHmmSS in UTC, where: YYYY is the year (0000-9999, but see Section 3.1.5); MM is the month number(01-12)(01-12); DD is the day of the month(01-31)(01-31); HH is the hour in 24 hours notation(00-23)(00-23); mm is the minute(00-59)(00-59); SS is the second(00-59)(00-59). The Key Tag field is represented as an unsigned decimal integer. The Signer's Name field value is represented as a fully qualified domain name. The Signature field is represented as aBase 64Base64 encoding of the signature.3.4 Example ofWhitespace is allowed within the Base64 text. For a definition of Base64 encoding see [3] Section 5.2. 3.3 SIG RR Example The following a SIG RR stores the signature for thetheA RRset of host.example.com: host.example.com.3086400 IN SIG A 5 33 30 2001123112000086400 20030322173103 (20011108100000 65531 example.com CGr0uS55C4l/2RRc2NrMJbRt4oP+xVxwgMkC rJFXXDsybfEDdwoajAY=20030220173103 2642 example.com. oJB1W6WNGv+ldvQ3WDG0MQkg5IEhjRip8WTr PYGv07h108dUKGMeDPKijVCHX3DDKdfb+v6o B9wfuh3DTJXUAfI/M0zmO/zz8bW0Rznl8O3t GNazPwQKkRN20XPXV6nwwfoXmJQbsLNrLfkG J5D6fwFm8nN+6pBzeDQfsS3Ap3o= ) The first four fields specify the owner name, TTL, Class, and RR type (SIG). The "A" represents the Type Covered field.is the algorithm used to create this signature.Thefirst 3value 5 identifies the Algorithm used (RSA-SHA1) to create the signature. Thesecondvalue 3 is the number of Labels in the original ownername andname. The value 86400 in the30SIG RDATA is the Original TTL forthis SIG RR andthe covered A RRset.The two dates20030322173103 and 20030220173103 are the expiration and inceptiondates. 65531dates, respectively. 2642 is the KeyTagTag, and example.com. is the Signer's Name. The remaining text is abase 64Base64 encoding of the signature. Note that combination of SIG RR owner name, class, andandType Covered indicate that this SIG covers the "host.example.com" A RRset. The Label value of 3 indicates that no wildcard expansion was used. The Algorithm, Signer's Name, and Key Tag indicate this signature can be authenticated using an example.com zone KEY RR whose algorithm is35 and key tag is65531.2642. 4. The NXT Resource Record The NXT resource record lists two separate things: theRR types present at the NXT'sowner nameand listsof the nextcanonical nameauthoritative RRset in thezone.canonical ordering of the zone, and the set of RR types present at the NXT RR's owner name. Thecollectioncomplete set of NXTor "next" resource recordsRRs in a zone both indicatewhatwhich authoritative RRsets exist in a zone andprovidealso form a chain ofallauthoritative owner names inthatthe zone. This informationcan beis usedforto provide authenticated denial ofexistence,existence for DNS data, asdesribeddescribed in[14]. Note that although a zone may contain non-authoritiative glue address records, these non-authoritative glue records MUST NOT be used when contructing the NXT resource record chain.[11]. The typenumbervalue for the NXT RR is 30. The NXT RR is class independent.The NXT RR TTL SHOULD NOT exceed the minimum TTL in the zone's SOA RR.4.1 NXT RDATA Wire Format The RDATA of the NXT RR is as shown below: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ /next domain nameNext Domain Name / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ /type bit mapType Bit Map / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4.1.1 The Next Domain Name Field The Next Domain Name field contains thenext authoritiveowner name of the next authoritative RRset in the canonicalorder, whereordering of the zone; see Section 6.1 for an explanation of canonicalorder is definedordering. The value of the Next Domain Name field inAppendix C.1. Forthe last NXT record in the zone is the name of the zone apex (the owner nameinname of thezone,zone's SOA RR). A sender MUST NOT use DNS name compression on the Next Domain Name fieldcontains the zone apex name. Thewhen transmitting an NXT RR. A receiver which receives an NXT RR containing a compressed Next Domain Name fieldallows message compression. Note that non-authoritative glue address recordSHOULD decompress the field value. Owner namesmay exist in a zone, but theseof non-authoritative RRsets (such as gluerecordsrecords) MUST NOT be listed in the Next DomainName. Any non-authoritative glue records are ignored (treated as though they were never present) when constructing an NXT.Name unless at least one authoritative RRset exists at the same owner name. 4.1.2 The Type Bit Map Field The Type Bit Map field identifies the RRset typesthatwhich exist at theNXT'sNXT RR's owner name. Each bit in the Type Bit Map field corresponds to an RR type. Bitone1 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 that typeexistsis present for the NXT's owner name. If a bit is set tozero,0, it indicates that no RRset of that typeexistspresent for the NXT's owner name. Bit 1 MUST NOT indicate glue address records. Bit 41 MUST have the value of 0, since the OPT pseudo-RR [6] can never appear in zone data. Trailing zero octets MUST be omitted.Thus theThe length of the Type Bit Map fieldvariesvaries, and isdependent ondetermined by the type code with the largest numerical value among the set of RRtypetypes presentforat theNXT'sNXT RR's owner name. Trailing zero octets not specified MUST be interpreted as zero octets.Non-authoritative glue address record types MUST NOT be used when constructing the type bit map field. The OPT RR [8] type (41) also MUST NOT be used when constructing the type bit map field since it is not part of the zone data. In other words, the OPT RR type bit (bit 41) MUST be zero. 4.1.2.1 Alternate Formats for the Type Bit Map FieldThe above Type Bit Map format MUST NOT be used when an RR typenumbercode with numerical value greater than 127 isin use.present. Bit 0 in the Type Bit MapField is used to indicate an alternate format forfield indicates the Type Bit Mapfield. Ifformat. A value of 0 in bit 0is set to 1, it indicates some otherdenotes the formatis being used for this field. No alternate formats are defined asdescribed above, therefore bit 0 MUST have a value ofthis writing.0. The format and meaning of a Type Bit Map with a value of 1 in bit 0 is undefined. 4.1.3 Inclusion of Wildcard Names in NXT RDATA If a wildcard owner name appears in a zone, the wildcard label ("*") is treated as a literal symbol and is treated the same as any other ownername.name for purposes of generating NXT RRs. Wildcard owner names appear(unexpanded)in the Next Domain Name field without any wildcard expansion.[14][11] describes the impact of wildcards onauthetnicatedauthenticated denial of existence. 4.2 The NXT RR Presentation FormatA NXT RR may appear as a single line.The presentation format of the RDATA portion is as follows: The Next Domain Name field is represented as a domain name. The Type Bit Map field is represented either as a sequence of RR type mnemonics or as a sequence of unsigned decimal integers denoting the RRtypes.type codes. 4.3 NXT RR Example The following NXT RR identifies the RRsets associated witha.example.comalfa.example.com. and identifies the next authoritative name aftera.example.com. a.example.com.alfa.example.com. alfa.example.com. 86400 IN NXTc.example.com.host.example.com. A MX SIG NXT The first four text fields specify the name, TTL, Class, and RR type (NXT). The entryc.example.comhost.example.com. is the next authoritative name aftera.example.comalfa.example.com. (incannonicalcanonical order). TheA MXA, MX, SIG and NXTnnemonicsmnemonics indicate there are A, MX, SIG and NXT RRsets associated with the namea.example.com.alfa.example.com. Note the NXT record can be used forauthentictedauthenticated denial of existence. If the example NXT record wereauthenticed,authenticated, it could be used to prove thatb.example.combeta.example.com. does notexistexist, or could be used to prove there is no AAAA recordassoicatedassociated witha.example.com.alfa.example.com. Authenticated denial of existence is discussed in[14][11] 5. The DS Resource Record The DS Resource Recordpointsrefers to a KEY RR and is used in the DNS KEY authentication process. A DS RRpointsrefers to a KEY RR by storing the key tag, algorithm number, and a digest of KEY RR. Note that while the digest should be sufficient to identify the key, storing the key tag and key algorithm helps make the identification process moreefficient and more secure.efficient. By authenticating the DS record, a resolver can authenticate the KEY RRpointedtobywhich the DSrecord.record points. The key authenticationprocesprocess is described in[14].[11]. The DS RR and its corresponding KEY RRbothhave the same owner name, but they are stored in different locations. The DS RRis the first resource record thatappears only on the upper (parental) side of adelegation. In other words,delegation, and is authoritative data in the parent zone. For example, the DS RR for "example.com" is stored in the "com" zone (theupper side ofparent zone) rather than in thedelegation)."example.com" zone (the child zone). The corresponding KEY RR is stored in the "example.com" zone (thelower side of the delegation).child zone). This simplifies DNS zone management and zone signing, but introduces special response processing requirementsthatfor the DS RR; these are described in[14].[11]. The type number for the DS record is 43. The DS resource record is class independent. There are no special TTL requirements on the DS resource record.DNSSEC best practices documents are encouraged to provide TTL recommendations.5.1 DS RDATA Wire Format The RDATA for a DS RR consists of 2 octet KeyTag,Tag field, a one octet AlgorithmNumber,field, a one octet DigestType,Type field, and aDigest.Digest field. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |key tagKey Tag |algorithmAlgorithm | DigesttypeType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Digest/ / / Digest / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5.1.1 The Key Tag Field The Key Tag field lists the key tag of the KEY RRpointedreferred to by the DS record. The KEY RR MUST be aazone key.In other words, theThe KEY RR FlagsmustMUST have Flags bit 7 set to value 1. Thekey tagKey Tag used by the DS RR is identical to thekey tagKey Tag used by the SIG RR and Appendix B describes how to compute akey tag.Key Tag. 5.1.2 The Algorithm Field The Algorithm field lists the algorithm number of the KEY RRpointedreferred to by the DS record. The algorithm number used by the DS RR is identical to the algorithm number used by the SIG RR and KEY RR. Appendix A.1 lists the algorithm number types. 5.1.3 The Digest Type Field The DS RRpointsrefers to a KEY RR by including a digest of that KEY RR. The Digest Type fieldidentifesidentifies the algorithm used to construct the digest and Appendix A.2 lists the possible digest algorithm types. 5.1.4 The Digest Field The DS recordpointsrefers to a KEY RR by including a digest of that KEY RR. The Digest fieldholdholds the digest.For a given KEY RR, theThe digest is calculated byappendingconcatenating the canonical form of theKEY RR's cannonicalfully qualified owner name of the KEY RR (abbreviated below as "key RR name") with the KEYRDATARDATA, and then applying the digest algorithm. digest = digest_algorithm(cannonical FQDN ofKEY RR name |KEY_RR_rdata)KEY RDATA); "|" denotesappendconcatenation KEY_RR_rdata = Flags | Protocol | Algorithm | PublicKeyKey. The size of the digestcanmay vary depending on the digest algorithm and KEY RR size.However,Currently, theonly currentlydefined digest algorithm isSHA-1 and it alwaysSHA-1, which produces a24 byte digest regardless of KEY RR size.20 octet digest. 5.2 The DS RR Presentation FormatA DS RR may appear as a single line or multiple lines separated with newline characters if those lines are contained within parantheses.The presentation format of the RDATA portion is as follows: The Key Tag field is represented as an unsigned decimal integer. The Algorithm field is represented either as an unsigned decimal integer or as an algorithm mnemonic specified in Appendix A.1. The Digest Type field is represented as an unsigned decimal integer. The Digest ispresented in hexadecimal.represented as a sequence of case-insensitive hexadecimal digits. Whitespace is allowed within the hexadecimal text. 5.3 DSRecordRR Example The following example shows a KEY RR and its corresponding DS RR.dskey.example.dskey.example.com. 86400 IN KEY 256 315 (AQPwHb4UL1U9RHaU8qP+Ts5bVOU 1s7fYbj2b3CCbzNdj4+/ECd18yKiy UQqKqQFWW5T3iVc8SJOKnueJHt/Jb /wt)AQOeiiR0GOMYkDshWoSKz9Xz fwJr1AYtsmx3TGkJaNXVbfi/ 2pHm822aJ5iI9BMzNXxeYCmZ DRD99WYwYqUSdjMmmAphXdvx egXd/M5+X7OrzKBaMbCVdFLU Uh6DhweJBjEVv5f2wwjM9Xzc nOf+EPbtG9DMBmADjFDc2w/r ljwvFw== ) ; keytagid =28668 dskey.example. 360060485 dskey.example.com. 86400 IN DS28668 160485 5 149FD46E6C4B45C55D4AC69CBD3CD34AC1AFE51DE( 2BB183AF5F22588179A53B0A 98631FAD1A292118 ) The first four text fields specify the name, TTL, Class, and RR type (DS).28668Value 60485 is the key tag for the corresponding"dskey.example.""dskey.example.com." KEYRRRR, and1value 5 denotes the algorithm used by this"dskey.example.""dskey.example.com." KEY RR. Thesecondvalue 1 is the algorithm used to construct thedigestdigest, and thefinal stringrest of the RDATA text is the digest inhex.hexadecimal. 6. Canonical Form and Order of Resource Records This section defines a canonical form for resource records, a canonical ordering of DNS names, and a canonical ordering of resource records within an RRset. A canonical name order is required to construct the NXT name chain. A canonical RR form and ordering within an RRset are required to construct and verify SIG RRs. 6.1 Canonical DNS Name Order For purposes of DNS security, owner names are ordered by treating individual labels as unsigned left-justified octet strings. The absence of a octet sorts before a zero value octet, and upper case US-ASCII letters are treated as if they were lower case US-ASCII letters. To compute the canonical ordering of a set of DNS names, start by sorting the names according to their most significant (rightmost) labels. For names in which the most significant label is identical, continue sorting according to their next most significant label, and so forth. For example, the following names are sorted in canonical DNS name order. The most significant label is "example". At this level, "example" sorts first, followed by names ending in "a.example", then names ending "z.example". The names within each level are sorted in the same way. example a.example yljkjljk.a.example Z.a.example zABC.a.EXAMPLE z.example \001.z.example *.z.example \200.z.example 6.2 Canonical RR Form For purposes of DNS security, the canonical form of an RR is the wire format of the RR where: 1. Every domain name in the RR is fully expanded (no DNS name compression) and fully qualified; 2. All uppercase US-ASCII letters in the owner name of the RR are 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, HINFO, MINFO, MX, HINFO, RP, AFSDB, RT, SIG, PX, NXT, NAPTR, KX, SRV, DNAME, or A6, all uppercase US-ASCII letters in the DNS names within the RDATA of the RR are replaced by the corresponding lowercase US-ASCII letters; 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 wildcard substitution); and 5. The RR's TTL is set to its original value as it appears in the authoritative zone containing the RR or the Original TTL field of the covering SIG RR. Editors' Note: the above definition sacrifices readability for an attempt at precision. Please send better text! 6.3 Canonical RR Ordering Within An RRset For purposes of DNS security, RRs with same owner name, same class, and same type are sorted by sorting the canonical forms of the RRs while treating the RDATA portion of the canonical form of each RR as a left justified unsigned octet sequence. The absence of an octet sorts before the zero octet. 7. IANA Considerations This document introducesnoone new IANAconsiderations.consideration. RFC 2535 [14] created an IANA registry for DNS Security Algorithm Numbers. This document re-assigns DNS Security Algorithm Number 252 to be "reserved". This value is no longer available for assignment by IANA. This documentonlyclarifies the use of existing DNS resource records.However forFor completeness, the IANA considerations fromthesethe previous documents which defined these resource records are summarized below. No IANA changes are made by thisdocument. RFC 2535document other than the one change described in the first paragraph of this section. [14] updated the IANA registry for DNS Resource RecordTypesTypes, and assigned types 24,25, and 30 to the SIG, KEY, and NXT(respectively). [DS RFC]RRs, respectively. [9] assigned DNS Resource Record Type 43 to DS.RFC 2535[14] created an IANA registry for DNSSEC Resource Record Algorithm Numbers. Values to 1-4, and 252-255 were assigned byRFC 2535.[14]. Value 5 was assigned byRFC 3110. [DS RFC][8]. Value 252 is re-assigned by this document, as noted above. [9] created an IANA registry for DNSSEC DS DigestTypesTypes, and assigned value 0 to reserved and value 1 toRSA/SHA-1. RFC 2535SHA-1. [14] created an IANA Registrytofor KEY ProtocolOctetValues, but[KeyRestrict RFC] set[16] re- assigned all assigned values other than 3 to reserved and closed this IANA registry. The registry remainsclosedclosed, and all KEY records are required to have Protocol Octet value of 3. The Flag bits in the KEY RR are not assigned byIANAIANA, and there is no IANA registry for these flags. All changes to the meaning of the KEY RR Flag bits require a standards action.7.The meaning of a value of 1 in bit zero of the Type Bit Map of an NXT RR can only be assigned by a standards action. 8. Security Considerations This document describes the format of four DNS resource records used by the DNS securityextensionsextensions, and presents an algorithm for calculating a key tag for a public key. Other than the itemsdesribeddescribed below, the resource records themselves introduce no security considerations. The use of these records is specified in aseperate documentseparate document, and security considerations related to the use these resource records are discussed in that document. The DS record points to a KEY RR using a cryptographic digest, the key algorithm type and a key tag. The DS record is intended to identify an existing KEY RR, but it is theoreticallypossibilepossible for an attacker to generate a KEY that matches all the DS fields. The probability of constructing such a matching KEY depends on the type of digest algorithm inuse and theuse. The only currently defined digest algorithm isSHA1. It is considered very difficult to constuctSHA-1, and the working group believes that constructing a public keythat matcheswhich would match the algorithm, key tag, andSHA1SHA-1 digest given in a DSrecord.record would be a sufficiently difficult problem that such an attack is not a serious threat at this time. The key tag is used to helpefficientlyselect KEY resourcerecords,records efficiently, but it does not uniquely identify a single KEY resource record. It is possiblethatfor two distinct KEY RRscouldto have the same owner name, the same algorithmtypetype, and the same key tag. An implementationthatwhich used only the key tag to select a KEY RRmaymight select the wrong public keyfor a given scenario.in some circumstances. Implementations MUST NOT assume the key tag is unique public keyidentifier andidentifier; this is clearly stated inthe text. 8. AcknowledgementsAppendix B. 9. Acknowledgments This document was created from the input and ideas of several members 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 comments and suggestions received during the revision of these security extension specifications. Normative References [1] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, November 1987. [2] Mockapetris, P., "Domain names - implementation and specification", STD 13, RFC 1035, November 1987. [3] Borenstein, N. and N. Freed, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies", RFC 1521, September 1993. [4] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, August 1996.[4][5] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.[5] Elz, R. and R. Bush, "Clarifications to the DNS Specification", RFC 2181, July 1997.[6]Eastlake, D., "Domain Name System Security Extensions", RFC 2535, March 1999. [7] Eastlake, D., "DSA KEYs and SIGs in the Domain Name System (DNS)", RFC 2536, March 1999. [8]Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC 2671, August 1999.[9] Eastlake, D., "Secret Key Establishment for DNS (TKEY RR)", RFC 2930, September 2000. [10][7] Eastlake, D., "DNS Request and Transaction Signatures ( SIG(0)s)", RFC 2931, September 2000.[11] Wellington, B., "Secure Domain Name System (DNS) Dynamic Update", RFC 3007, November 2000. [12][8] Eastlake, D., "RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)", RFC 3110, May 2001.[13][9] Gudmundsson, O., "Delegation Signer Resource Record", draft- ietf-dnsext-delegation-signer-12 (work in progress), December 2002. [10] Arends, R., Austein, R., Larson, M., Massey, D. and S. Rose,"DNSSEC Intro", October 2002. [14]"DNS Security Introduction and Requirements", draft-ietf- dnsext-dnssec-intro-05 (work in progress), February 2003. [11] Arends, R., Austein, R., Larson, M., Massey, D. and S. Rose,"DNSSEC Protocol", October"Protocol Modifications for the DNS Security Extensions", draft-ietf-dnsext-dnssec-protocol-00 (work in progress), Februari 2003. [12] Gustafsson, A., "Handling of Unknown DNS RR Types", draft-ietf- dnsext-unknown-rrs-04 (work in progress), September 2002. [13] Kosters, M., Blacka, D. and R. Arends, "DNSSEC Opt-in", draft- ietf-dnsext-dnssec-opt-in-04 (work in progress), February 2003. Informative References [14] Eastlake, D., "Domain Name System Security Extensions", RFC 2535, March 1999. [15] Eastlake, D., "Secret Key Establishment for DNS (TKEY RR)", RFC 2930, September 2000. [16] Massey, D. and S. Rose, "Limiting the Scope of the KEY ResourceRecord", draft-ietf-dnsext-restrict-key-for-dnssec-02 (work in progress), MarchRecord (RR)", RFC 3445, December 2002. Authors' Addresses Roy ArendsBankastraat 41-E 1094 EB AmsterdamTelematica Instituut Drienerlolaan 5 7522 NB Enschede NL EMail:roy@logmess.comroy.arends@telin.nl Rob Austein Internet Software Consortium 40 Gavin Circle Reading, MA 01867 USA EMail: sra@isc.org Matt Larson VeriSign, Inc. 21345 Ridgetop Circle Dulles, VA 20166-6503 USA EMail: mlarson@verisign.com Dan Massey USC Information Sciences Institute 3811 N. Fairfax Drive Arlington, VA 22203 USA EMail: masseyd@isi.edu Scott Rose National Institute for Standards and Technology 100 Bureau Drive Gaithersburg, MD 20899-8920 USA EMail: scott.rose@nist.gov Appendix A. DNSSEC Algorithm and Digest Types The DNS securityexstentionsextensions are designed to be independent of the underlying cryptographic algorithms. The KEY, SIG, and DS resource records all use a DNSSEC Algorithm Number to identify thecrytographiccryptographic algorithm in use by the resource record. The DS resource record also specifies a Digest Algorithm Number to identify the digest algorithm used to construct the DS record. The currently defined Algorithm and Digest Types are listed below. Additional Algorithm or Digest Types could be added as advances in cryptography warrant. A DNSSEC aware resolver or name server MUST implement all MANDATORY algorithms. A.1 DNSSEC Algorithm Types An "Algorithm Number" field in the KEY, SIG, and DS resource record types identifies the cryptographic algorithm used by the resource record. Algorithm specific formats are described in separate documents. The following table lists the currently defined algorithm types and provides references to their supporting documents: VALUE Algorithm RFC STATUS 0 Reserved - - 1 RSA/MD5 RFC 2537 NOT RECOMMENDED 2 Diffie-Hellman RFC 2539 OPTIONAL 3 DSA RFC 2536 OPTIONAL 4 elliptic curve TBA OPTIONAL 5 RSA/SHA1 RFC 3110 MANDATORY 6-251 available for assignment - 252indirect see below OPTIONALreserved - 253 private see below OPTIONAL 254 private see below OPTIONAL 255 reserved - - A.1.1Indiret andPrivate Algorithm TypesRFC 2535 describes Algorithm number 252 as an indirect key format where the actual key material is elsewhere. This format was to be defined in a separate document. In the years between RFC 2535 and this document, no indirect key document has been prodcued.Algorithm number 253 is reserved for private use and will never be assigned to a specific algorithm. The public key area in the KEY RR and the signature area in the SIG RR begin with a wire encoded domain name. Only local domain name compression is permitted. The domain name indicates the private algorithm to use and the remainder of the public key area is determined by that algorithm. Entities should only use domain names they control to designate their private algorithms. Algorithm number 254 is reserved for private use and will never be assigned to a specific algorithm. The public key area in the KEY RR and the signature area in the SIG RR begin with an unsigned length byte followed by a BER encoded Object Identifier (ISO OID) of that length. The OID indicates the private algorithm in use and the remainder of the area is whatever is required by that algorithm. Entities should only use OIDs they control to designate their private algorithms.Editors Note: There is currently no use of or operational experience with these algorithms. The editors (at least Dan!) recommend that these algorithm types be eliminated. We don't need this in the base spec and every other algorithm type requires a seperate document to describe it in detail. Note eliminating these from the base spec would not elminate any future functionality since there are 200+ available algorithm numbers. Anyone who feels they need this type of algorithm (or a similar algorithm) can write the document clearly describing it.A.2 DNSSEC Digest Types A "Digest Type" field in the DS resource record types identifies the cryptographic digest algorithm used by the resource record. The following table lists the currently defined digest algorithm types. VALUE Algorithm STATUS 0 Reserved - 1RSA/SHA-1SHA-1 MANDATORY 2-255 Unassigned - Appendix B. Key Tag Calculation Thekey tagKey Tag field in the SIG and DS resource record types provides a mechanism forefficientlyselecting a publickey.key efficiently. In most cases, a combination of owner name, algorithm, and key tag can efficiently identify a KEY record.For example, bothBoth the SIG and DS resource records have corresponding KEY records.AThe Key Tag field in the SIG and DS records can be used to helpefficientlyselect the corresponding KEY RR efficiently whenthere ismore than one candidate KEY RR is available. However, it is essential to note that the key tag is not a unique identifier. It is theoretically possible for two distinct KEY RRs to have the same owner name, the same algorithm, and the same key tag. The key tag is used toefficientlylimit the possible candidatekeyskeys, but it does not uniquely identify a KEY record. Implementations MUST NOT assume that the key tag uniquelyidenifiesidentifies a KEY RR. Thefollowingkey tag is the same for all KEY algorithm types except algorithm 1 (please see Appendix B.1 for the definition of the key tag for algorithm 1). For all algorithms other than algorithm 1, the key tag is defined to be the output which would be generated by running the ANSI C function shown below with the RDATA portion of the KEY RR as input. It is not necessary to use the following reference code verbatim, but the numerical value of the Key Tag MUST be identical to what the reference implementationis providedwould generate for the same input. Please note that the algorithm for calculating the Key Tag is almost but not completely identical to the familiar ones complement checksum used in many other Internet protocols. Key Tags MUST be calculated using the algorithm described below rather than the ones complement checksum. The following ANSI C reference implementation calculates the value of a Key Tag. This reference implementation applies to all algorithm types except algorithm 1 (see Appendix B.1). The input is thepublic key material in base 64, notwire format of theentireRDATA portion of the KEYrecord that contains the public key.RR. The code is written for clarity, not efficiency. /*assumes* Assumes that int is at least 16bits first bytebits. * First octet of the key tag is the most significantbyte8 bits of the * returnvalue second bytevalue; * Second octet of the key tag is the least significantbyte8 bits of the * returnvaluevalue. */ unsigned int keytag ( unsigned char key[], /* the RDATA part of the KEY RR */ unsigned intkeysize,keysize /* the RDLENGTH */ ) { unsigned longintac; /* assumed to be 32 bits or larger */ int i; /* loop index */ for ( ac = 0, i = 0; i<< keysize; ++i ) ac +=(i&1)(i & 1) ? key[i] :key[i]<<8;key[i] << 8; ac +=(ac>>16) &(ac >> 16) & 0xFFFF; return ac&& 0xFFFF; } B.1 Key Tag for Algorithm 1- RSA/MD5 Algorithm 1 - RSA/MD5(RSA/MD5) The key tag for algorithm 1 (RSA/MD5) isthe only algoritm that does not usedefined differently than the key tagdefined above.for all other algorithms, for historical reasons. For a KEY RR with algorithm 1, the key tag is defined to be the mostsignifigantsignificant 16 bits of the leastsignifigantsignificant 24 bits in the public keymodulus. In others,modulus (in other words, the 4th to last and 3rd to last octetsinof the public keymodulus. Notemodulus). Please note that Algorithm 1 is NOT RECOMMENDED.Appendix C. Canonical Form and Order of Resource Records This section defines a canonical form for resource records (RRs) and defines a name order and overall order. A canonical name order is required to construct the NXT name chain. A canonical RR form and ordering within an RRset is required to construct and verify SIG RRs. C.1 Canonical DNS Name Order For purposes of DNS security, owner names are sorted by treating individual labels as unsigned left justified octet strings. The absence of a octet sorts before a zero value octet and upper case letters are treated as lower case letters. To sort names in a zone, first sort all names based on only the highest level label. Next if multiple names appear within a level, sort based on the next highest level label. Repeat until all names have been sorted down to leaf node labels. For example, the following names are sorted in canonical DNS name order. The highest label is label level is foo.example. At this level, foo.example sorts first, followed by all names ending in a.foo.example and then all names ending z.foo.example. The names withing the a.foo.example level and z.foo.example level are sorted. foo.example a.foo.example yljkjljk.a.foo.example Z.a.foo.example zABC.a.FOO.EXAMPLE z.foo.example *.z.foo.example \200.z.foo.example C.2 Canonical RR Form For purposes of DNS security, the canonical form for an RR is the wire format of the RR with (1) all domain names fully expanded (no name compression via pointers) (2) all domain name letters set to lower case (3) any owner name wild cards in master file form (no substitution made for *) (4) the original TTL substituted for the current TTL. C.3 Canonical RR Ordering Within An RRset For purposes of DNS security, RRs with same owner name and same type are sorted by treating the RDATA as a left justified unsigned octet sequence. The absence of an octet sorts before the zero octet. C.4 Canonical Ordering of RR Types RRs with the same owner name but different types are sorted based on the RR type number. The exception to this rule are SIG RRs, which are placed immediately after the type they cover. For example, an A record would be put before an MX record because type 1 (A) and is lower than type 15 (MX). If the A and MX records were both signed, the order would be A < SIG(A) < MX < SIG(MX).Full Copyright Statement Copyright (C) The Internet Society(2002).(2003). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society.