DNS ExtensionsNetwork Working Group R. Arends Internet-DraftNominumExpires:August 2, 2002April 29, 2003 M. Larson VeriSign D. Massey USC/ISI S. Rose NISTFebruaryOctober 29, 2002 Resource Records for the DNS Security Extensionsdraft-ietf-dnsext-dnssec-records-01draft-ietf-dnsext-dnssec-records-02 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 onAugust 2, 2002.April 29, 2003. Copyright Notice Copyright (C) The Internet Society (2002). All Rights Reserved. AbstractThe DNS Security Extensions (DNSSEC) introduce four resource records: the KEY, DS, SIG, and NXT resource records. This document defines the purpose and the RDATA format for each of these records.This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection ofnewresource 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 is descibed 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.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].Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 4 1.1DNSSEC Document FamilyBackground and Related Documents . . . . . . . . . . . . . 4 1.2 Reserved Words . . . . .4 2. The Key Resource Record. . . . . . . . . . . . . . . . .5 2.1 KEY RDATA Wire Format4 1.3 Editors Notes . . . . . . . . . . . . . . . . . .5 2.1.1 The Flags Field. . . . 4 1.3.1 Open Technical Issues . . . . . . . . . . . . . . . . .5 2.1.1.1 Explanation for Choice of Bit 7. 4 1.3.2 Technical Changes or Corrections . . . . . . . . . . . .6 2.1.2. 4 1.3.3 Typos and Minor Corrections . . . . . . . . . . . . . . . 5 2. TheProtocol Octet FieldKEY Resource Record . . . . . . . . . . . . . . . . . 62.1.2.1 Explanation for a Fixed Value Protocol Octet Field2.1 KEY RDATA Wire Format . . . . . . .6 2.1.3 The Algorithm and Public Key Fields. . . . . . . . . . . 62.22.1.1 TheKEY RR Presentation FormatFlags Field . . . . . . . . . . . . . . . . .7 2.3 KEY RR Examples. . . . 6 2.1.2 The Protocol Octet Field . . . . . . . . . . . . . . . . . 72.3.1 Example 12.1.3 The Algorithm and Public Key Fields . . . . . . . . . . . 7 2.1.4 Notes on KEY RDATA Design . . . . . . . . . . . . . . . . 72.3.2 Example 22.2 The KEY RR Presentation Format . . . . . . . . . . . . . . 7 2.3 KEY RR Example . . . . . . . . . .8. . . . . . . . . . . . 7 3. The SIG Resource Record . . . . . . . . . . . . . . . . . 9 3.1 The SIG RDATA . . . . . . . . . . . . . . . . . . . . . . 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 3.1.5 Signature Expiration and Inception Fields . . . . . . . .1011 3.1.6 The Key Tag Field . . . . . . . . . . . . . . . . . . . .1011 3.1.7 The Signer's Name Field . . . . . . . . . . . . . . . . . 11 3.1.8 The Signature Field . . . . . . . . . . . . . . . . . . . 11 3.2 Calculating A Signature . . . . . . . . . . . . . . . . . 12 3.2.1 Calculating An RRset Signature . . . . . . . . . . . . . . 12 3.2.2 Calculating An Transaction Signature . . . . . . . . . . . 12 3.3 TheNXTSIG RR Presentation Format(placeholder). . . . . . .11 3.3 Calculating the signature. . . . . . . 13 3.4 Example of a SIG RR . . . . . . . . .11. . . . . . . . . . 13 4. The NXT Resource Record . . . . . . . . . . . . . . . . .1315 4.1 NXT RDATA Wire Format . . . . . . . . . . . . . . . . . .1315 4.1.1 The Next Domain Name Field . . . . . . . . . . . . . . . .1315 4.1.2 The Type Bit Map Field . . . . . . . . . . . . . . . . . .1316 4.1.2.1 Alternate Formats for the Type Bit Map Field . . . . . . . 16 4.1.3 Inclusion of Wildcard Names in NXT RDATA . . . . . . . . . 16 4.2 The NXT RR Presentation Format . . . . . . . . . . . . . .1416 4.3 NXT RR Example . . . . . . . . . . . . . . . . . . . . . . 17 5. The DS Resource Record . . . . . . . . . . . . . . . . . .1518 5.1 DS RDATA Wire Format . . . . . . . . . . . . . . . . . . .1518 5.1.1 The Key Tag Field . . . . . . . . . . . . . . . . . . . .1518 5.1.2 The Algorithm Field . . . . . . . . . . . . . . . . . . .1519 5.1.3 The Digest Type Field . . . . . . . . . . . . . . . . . .1619 5.1.4 The Digest Field . . . . . . . . . . . . . . . . . . . . .1619 5.2 The DS RR Presentation Format . . . . . . . . . . . . . . 19 5.3 DS Record Example . . . . . . . . . . . . . . . . . . . .16 5.3 Resolver Example20 6. IANA Considerations . . . . . . . . . . . . . . . . . . . 21 7. Security Considerations . .16 6. DNSSEC message bits. . . . . . . . . . . . . . . 22 8. Acknowledgements . . . .18 6.1 The AD and CD Header Bits. . . . . . . . . . . . . . . .18 6.2 The DO Extended Flags Field Bit. 23 References . . . . . . . . . . . .18 7. IANA Considerations. . . . . . . . . . . . 24 Authors' Addresses . . . . . . . . .20 8. Security Considerations. . . . . . . . . . . 25 A. DNSSEC Algorithm and Digest Types . . . . . .21 9. Acknowledgements. . . . . . 26 A.1 DNSSEC Algorithm Types . . . . . . . . . . . . . . .22 References. . . 26 A.1.1 Indiret and Private Algorithm Types . . . . . . . . . . . 26 A.2 DNSSEC Digest Types . . . . . . . . . .23 Authors' Addresses. . . . . . . . . 27 B. Key Tag Calculation . . . . . . . . . . .24 A.. . . . . . . . 28 B.1 Key TagCalculationfor Algorithm 1 - RSA/MD5 . . . . . . . . . . . . 29 C. Canonical Form and Order of Resource Records . . . . . . 30 C.1 Canonical DNS Name Order .25. . . . . . . . . . . . . . . . 30 C.2 Canonical RR Form . . . . . . . . . . . . . . . . . . . . 30 C.3 Canonical RR Ordering Within An RRset . . . . . . . . . . 31 C.4 Canonical Ordering of RR Types . . . . . . . . . . . . . . 31 Full Copyright Statement . . . . . . . . . . . . . . . . .2632 1. Introduction Thereader to assumed to be familiar with common DNSSEC terminology as defined in [13] and familiar with the basic DNS concepts described in RFC1034 [1] and RFC1035 [2]. TheDNS Security Extensions (DNSSEC) introduce four resource records: the KEY,DS,SIG, NXT, andNXTDS resource records. This document defines the purpose of each resourcerecord,record (RR), the RR's RDATA format,the ASCII representation,andanits ASCII representation. An example of each RR type is also given.Sections 2- 5 describe the KEY, DS, SIG, and NXT records. Section 6 describe the DNSSEC header bits.1.1DNSSEC Document FamilyBackground and Related Documents 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(RFC TBA).[13]. A description of DNS protocol modifications can be found in(RFC TBA).[14]. 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]. 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 section may need to be updated, depending on the outcome of the opt-in discussion. 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 a seperate internet draft solely to move DSA from MANDATORY to OPTIONAL seemed excessive. This draft solicts 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 where there is no RFC that defines the correct behavior (or RFCs provide conflicting answers), 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 to quickly find the incorrect text. 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. TheKeyKEY Resource RecordPublic keys used by theDNSSEC uses public key cryptogrpahy to sign and authenticate DNSinfrastructureresource record sets (RRsets). The public keys are stored in KEY resourcerecords. A secure DNSrecords and are used in the DNSSEC authentication process described in [14]. In a typical example, a zonewill storesigns its authorititave RRsets using a private key and stores the corresponding public key in a KEYRR and this KEY RRRR. A resolver canbe usedthen use these signatures to authenticateother RR sets inRRsets from the zone. The KEY RRMAYis alsobeused to store public keys associated with othertypes ofDNSpublic keys,operations, such asthe keys used bySIG(0)[10] or[14] and TKEY [9].These public keys are used to authenticate DNS messages such as a request to dynamically update a DNS zone. The KEY RR MUST only be used for public keys used for DNS purposes,In allother uses are obsolete. Thecases, the KEY RR playsan essentiala special role inthesecureprocessing ofDNSmessagesresolution and DNS message processing. The KEY RR isincluded in various responses.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. The type number for the KEY RR 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 Flags Fields, a Protocol Octet, a one octet Algorithmnumber,Number, and thepublic key.Public Key. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |flagsFlags |protocolProtocol |algorithmAlgorithm | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | / /public keyPublic Key / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| 2.1.1 The Flags Field Bit 7 of the FlagsFieldfield is the"zone key flag". Bits 0-6 and 8-15 are reserved for future use. Bits 0-6 and 8-15 MUST be set to 0 and MUST be ignored during processing. The zone key flag (bit 7) determines whether the KEY holds a DNS zone key.Zone Key flag. If bit 7 is 1, then the KEY record holds a DNS zonekey.key and the KEY's owner name MUST be the name of a zone. If bit 7 is 0, then the KEY record holds some other type ofDNSSEC infrastructureDNS public key, such as a public key used by SIG(0) or TKEY.Resolvers MUST check the zone key flag in order to determine if the KEY record holds a DNS zone key. 2.1.1.1 ExplanationBits 0-6 and 8-15 are reserved forChoice of Bit 7 The choice of bit 7 as the zone key flag was made in order to provide backwards compatibility with an earlier version of the KEY record. This earlier version was defined in [6]future use and[15] eliminated all flags except the bit 7 zone key flag.MUST be zero. 2.1.2 The Protocol Octet Field The Protocol Octetvaluefield MUST be 3.2.1.2.1 Explanation for a Fixed Value Protocol Octet Field The Protocol Octet field is included for backwards compatibility with an earlier version of the KEY record. This earlier version of the KEY record was defined in [6] and [15] restricted the possible Protocol Octet values to 3.2.1.3 The Algorithm and Public Key Fields The AlgorithmFieldfield identifies the public key's cryptographic algorithm and determines the format of the Public KeyField. Algorithm values are defined in separate documents. The following table shows the currently defined Algorithm formats: VALUE Algorithm RFC STATUS 0 Reserved - - 1 RSA/MD5 RFC 2536 NOT RECOMMENDED 2 Diffie-Hellman RFC 2539 OPTIONAL 3 DSA RFC 2536 MANDATORY 4 elliptic curve Work in Progress 5 RSA/SHA1 RFC 3110 MANDATORY 6-251 available for assignment - 252 reserved - indirect keys 253 private - domain name 254 private - OID 255 reserved - - It is expected that a signed zone will contain at least one KEY record with one of the MANDATORY algorithms.field. ADNS security aware resolver MUST implement all MANDATORY and SHOULD implement all OPTIONAL algorithms. Currently RSA/MD5 is NOT RECOMMENDED for zone signing, but it maylist of DNSSEC algorithm types can be found inolder DNS implementations. Therefore, if may be useful for a security aware resolver to implement RSA/MD5 as well as RSA/SHA1. Algorithm number 252 is reserved for indirect key format where the actual key material is elsewhere (non-DNS). This format will be defined in a separate document. Algorithm numbers 253 and 254 are reserved for private use and will never be assigned a specific algorithm. For number 253, the public key area and the signature begin with a wire encoded domain name indicating the algorithmAppendix A.1 2.1.4 Notes on KEY RDATA Design Although thekey uses. Only local domain name compressionProtocol Octet field ispermitted. The remainder of the public key areaalways 3, it isprivately defined. For number 254, the public key arearetained forthe KEY RR and the signature beginbackwards compatibility with anunsigned length byte followed by a BER encoded Object Identifier (ISO OID)earlier version ofthat length. The OID indicatestheprivate algorithm inKEY record. The useand the remainderof bit 7 as thearea is whateverZone Key Flag isrequired by that algorithm. Entities should only use domain names and OIDs they controlalso due todesignate their private algorithms.backwards compatiblity issues. 2.2 The KEY RR Presentation Format A KEY RR may appear as a singleline.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 unsigned integer. The Protocol Octet field is represented as the unsigned integer 3. The AlgorithmFieldfield is represented as an unsigned integer or as an algorithm mnemonicspecified. The mnemonic is listedspecified inthe document defining the algorithm.Appendix A.1. The Public KeyFieldfield is a Base 64 encoding of the Public Key Field. 2.3 KEY RRExamples 2.3.1Example1The following KEY RR stores a DNS zone key for isi.edu. isi.edu. 86400 IN KEY 256 3 5 ( AQPT0sh3WjVeRY3WqpBjtf <snip of base64 encoded text> xxDw==) The first four fields specify the owner name, TTL, Class, and RR type (KEY). 256 indicates theflagsFlags field has the zone key bit is set. 3 is the fixed Protocol Octet value. 5 indicates the public key algorithm. Appendix A.1 identifies algorithmistype 5 as RSA/SHA1RFC 3110]. The remaining text is base 64 encoding of the public keyand indicates that the format of the RSA/SHA1 public key field is defined in [12].Resolvers might use this public key to authenticate signed RR sets such as the A RR set for www.isi.edu. The authentication process used by resolvers is described in [14]. 2.3.2 Example 2 The following KEY RR stores a public key used by SIG(0) ddnskey.isi.edu. 86400 IN KEY 0 3 3 ( AQPT0sh3WjVeRY3WqpBjtf <snip of base64 encoded text> xxDw==) 0 indicates the flags field does not have the zone key bit is not set. 3 is the fixed Protocol Octet value. 5 indicates the public key algorithm is DSA [7].The remaining text is a base 64 encoding of the publickey and the format of the public key is defined in [7]. Thiskey. 3. The SIG Resource Record DNSSEC uses public keycan be usedcryptogrpahy to signdynamicand authenticate DNSupdates for the isi.edu zone.resource record sets (RRsets). Theprocess is for signing the dynamic DNS updates is describedsignatures are stored in[11]. 3. TheSIGResource Record The SIG or "signature"resourcerecord (RR) is the fundamental way that data is authenticatedrecords and are used in thesecure Domain Name System (DNS). As such it isDNSSEC authentication process described in [14]. In a typical example, a zone signs its authorititave RRsets using a private key and stores theheart ofcorresponding signatures in SIG RRs. A resolver can then use these signatures to authenticate RRsets from thesecurity provided. Thezone. A SIGRR authenticatesrecord contains the signature for an RRset[5] ofwith a particulartype,name, class, andname and binds ittype. The SIG RR is said to "cover" this RRset. The SIG RR also specifies atimevalidity intervalandfor the signature and uses an algorithm signer'sname. The signer isname, and key tag to identify the public key(and associated KEY(KEY record)from which the RR originated. A SIG recordthat canalsobe usedforto verify the signature. The signature in SIG RR may also cover a transactionsecurity [transaction ref/section]. This type ofrather than an RRset [14]. In this case, the "Type Covered" field is set to 0 and the SIG RR isknownrefered to as SIG(0)and its RDATA is in the same format, with some values loosing their meaning and given default values. The variations are mentioned in [10].resource record. The type number for the SIG RR type is 24. The SIG RR is class independent, but MUST have the same class as the RRset it covers. TheTTL for theSIG RR TTL SHOULDbematch thesame asTTL of the RRset it covers. 3.1 The SIG RDATA The RDATA portion of a SIG RR isasshown 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | type covered | algorithm | labels | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | original TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | signature expiration | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | signature inception | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | key tag | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ signer's name + | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/ / / / signature / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 3.1.1 The Type Covered FieldFor RRset SIGs,The Type Covered field identifies the RRset type coveredMUST be the same asby thetype of data inSIG record. If Type Covered field is set to 0, theassociatedrecord is referred to as a SIG(0) RR and its signature covers a transaction rather than a specific RRset.For SIG(0), this field MUST be zero [10][14] descirbes how to sign transactions using SIG(0) resource records. 3.1.2 The Algorithm Number Field The Algorithm Number fieldinidenties theRDATA iscryptographic algorithm used to create thesame field assignature. A list of DNSSEC algorithm types can be found inthe algorithm field of the KEY record RDATA [section 2.2.3].Appendix A.1 3.1.3 The Labels Field The"labels" octet is an unsigned countLabels field specifies the number ofhow manylabelsthere arein the original SIG RR owner name.ThisIt is included to handle signatures associated with wildcard owner names. To validate the signature, a resolver 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 to the owner name sent in any response. However, a wildcard owner name will be expanded during the query/response process and [14] describes how the label count is used to reconstruct the original (unexpanded) owner name. The Labels field does not count null labels for root and does not count any initial "*"forin awildcard.wildcard name. Thelabels countLabels field MUST be less than or equal to the number of labels in the SIG owner name. For example, "www.example.com." has a label count of 3 and "*.example.com." has a label count of 2. 3.1.4 Original TTL Field The"original TTL"Original TTL fieldis included inspecifies theRDATA portion to avoid authentication problems caused byoriginal TTL of the covered RRset. To validate the signature, a resolver requires the original TTL used when the signature was created. However, caching serversdecrementingwill decrement therealTTLfield. The signatures covers this field (as part of the SIG RDATA) whileand [14] describes how the Original TTL field count isnot. In a SIG(0),used to reconstruct theOriginal TTLoriginal (undecremented) TTL. If the Type Covered field(andis non-zero, the Original TTLfield) MUST be zero. The "original TTL"value MUST be greater than or equal to the TTL 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 Signature Inception and Signature Expiration fields specify a validity period for the signature. The SIGis valid fromrecord MUST NOT be used for authentication prior to the"signature inception" time untilinception date and MUST NOT be used for authentication after the"signature expiration" time. Bothexpiratiation date. Inception and expiration dates are given as 32-bit unsigned numbers of seconds since the start of 1 January1970,1970 GMT, ignoring leap seconds. Ring arithmeticis used as for DNS SOA serial numbers [3], which means that[3] to handle 32-bit wrap around. As result, these times can never be more thanabout68 years in the past or thefuture. This means that thesefuture and the times are ambiguous modulo~136.09~136 years. A SIG RRmaycan have an expiration time numericallylesssmaller than the inception time if the expiration time is near the 32-bit wrap around pointand/orand/ or the signature is long lived. 3.1.6 The Key Tag Field The"Key Tag" is a two-octet quantity that is used to efficiently select between multiple keys that may be applicable. TheKey Tagvalue may differ depending onfield contains the keyalgorithm in use, as describedtag of the public key (KEY RR) used to authenticate this signature. The process of calculating a key tag is given in Appendix(A).B. 3.1.7 The Signer's Name Field Thesigner'sSigner's Name field identifies the name of the KEY RR used to authenticate this signature. If the Type Covered field is non-zero, the Signer's Name MUST contain the name of the zoneto whichcontaining thedatacovered RRset andsignature belong.the SIG. Thecombination ofsigner'sname, key tag, and algorithm MUST identify a zone key ifname MAY be compressed with standard DNS name compression when being transmitted over theSIGnetwork. If the Type Covered field isto be considered material. In0 (i.e. aSIG(0),SIG(0) RR), the signer's name MUST be theoriginating hostname of the host originating the DNS message as described in [10]. 3.1.8 The Signature Field TheactualSignature field contains the cryptographic signature. If the Type Covered field is non-zero, the signatureportion ofcovers the SIGRR binds the otherRDATAfields to(excluding the Signature field) and the RRsetofspecified by the"type covered" RRs with thatSIG ownernamename, SIG class, andclass.SIG Type Covered field. 3.2The NXT RR Presentation Format (placeholder) This section will be here in the next revision. 3.3Calculatingthe signature To generate theA Signature A signatureovercovers either anRRset,RRset or adata sequence is constructedtransaction. 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 asfollows (where "|"ANY or AXFR. 3.2.1 Calculating An RRset Signature A signature covers the SIG RDATA (excluding the Signature Field itself) and covers the RRset specified by the SIG owner name, SIG class, and SIG Type Covered field. The RRset isconcatenation):in cannonical form (see Appendix C) and the set RR(1),...RR(n) is signed as follows: signature =sign(RDATAsign(SIG_RDATA | RR(1) | RR(2)... )RR(N)where "|" denotes append SIG_RDATA is the wire format of the SIG RDATA fields with the Signer's Name field in cannonical form. the Signature field excluded. RR(i) =namefqdn | class | type |original TTL(storedTTL | RDATA length | RDATA fqdn is the Fully Qualified Domain Name in canonical form. All RR(i) MUST have the same fqdn as the SIGRDATA) |RR. All RR(i) MUST have the same class as the SIG RR. All RR(i) MUST have the RR type listed in SIG RR's Type Covered field. All RR(i) MUST have the TTL listed in the SIG Original TTL Field All names in the RDATATo generate a signature over a DNS message (SIG(0)),field are in canonical form The set of all RR(i) is sorted into cannonical order. 3.2.2 Calculating An Transaction Signature 3.3 The SIG RR Presentation Format A SIG RR may appear as adata sequencesingle logical line. The presentation format of the RDATA portion isconstructedas follows:If the DNS messageThe Type Covered field issent via UDP: signature = sign(RDATA | full query | full response - SIG(0)) Ifrepresented by either an unsigned integer or theDNS message is sent via TCP,mnemonic for thefirst packet's SIG(0)RR type. The Algorithm field iscalculatedrepresented asabove, with each additional packet (if any) calculatedan unsigned integer or asfollows: signature = sign(RDATA | DNS payload - SIG(0) | previous packet) where "previous packet"an algorithm mnemonic specified in Appendix A.1. The Labels field is represented as an unsigned integer. The Original TTL field is represented as an unsigned integer. It MAY be omitted if it is equal theprevious DNS packet with accompanying SIG(0), but without any other headers (i.e. TCP/IP, etc.). In allTTL of theexamples, RDATASIG RR. The Signature Inception Time and Expiration Time fields are represented in the form YYYYMMDDHHmmSS, where: YYYY is thewire formatyear MM is the month number (01-12) DD is the day ofalltheRDATA fieldsmonth (01-31) HH is the hour in 24 hours notation (00-23) mm is the minute (00-59) SS is the second (00-59) The Key Tag field is represented as an unsigned integer. The Signer's Name field is represented as a domain name. The Signature field is a Base 64 encoding of the signature. 3.4 Example of a SIG RRitself (includingThe following a SIG RR stores thecanonical form ofsignature for thesigner's name) before but not includingthesignature,A RRset of host.example.com: host.example.com. 30 IN SIG A 3 3 30 20011231120000 ( 20011108100000 65531 example.com CGr0uS55C4l/2RRc2NrMJbRt4oP+xVxwgMkC rJFXXDsybfEDdwoajAY= ) The first four fields specify the owner name, TTL, Class, andRR(num)RR type (SIG). The "A" represents the Type Covered field. is theRRset withalgorithm used to create this signature. The first 3 identifies thesameAlgorithm used to create the signature. The second 3 is the number of Labels in the original owner name andclass and type covered asthe 30 is the Original TTL for this SIG RRin canonical form. Name isand theFully Qualified Domain Name (FQDN) in canonical form.covered A RRset. Thecanonical form for a Resource Record (RR)two dates are the expiration and inception dates. 65531 is thewire format ofKey Tag and example.com. is theRR. Names MUST be expanded (no name compression allowed). Name characters MUST be set to lower case. Wildcards MUST be unexpanded.Signer's Name. TheRR MUST haveremaining text is a base 64 encoding of theoriginal TTL. Howsignature. Note that combination of SIG RR owner name, class, and and Type Covered indicate thisdata sequence is processed intoSIG covers the "host.example.com" A RRset. The Label value of 3 indicates no wildcard expansion was used. The Algorithm, Signer's Name, and Key Tag indicate this signatureis algorithm dependent. Thesecan be authenticated using an example.com zone KEY RR whose algorithmdependent formatsis 3 andprocedures are described in separate documents. SIGs SHOULD NOT be generated for any "meta-type" such as ANY, AXFR, etc.key tag is 65531. 4. The NXT Resource Record Thecollection ofNXTor "next"resourcerecords (RR) is used to indicate what names and RRsets [5] exist in a zone. The NXT RRrecord lists thenext canonical name in the zone and lists whatRR typesarepresentforat thecurrentNXT's owner nameofand lists theNXT RR.next canonical name in the zone. Thesetcollection of NXTRRsor "next" resource records indicate what RRsets exist in a zoneisand provide a chain of all authoritative owner names in that zone.GlueThis information can be used for authenticated denial of existence, as desribed in [14]. Note that although a zone may contain non-authoritiative glue address records, these non-authoritative glue records MUST NOT becovered by aused when contructing the NXTRR.resource record chain. The type number for the NXT RR is 30. The NXT RR is class independent. The NXT RR TTL SHOULD NOT exceed thezoneminimumTTL.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 name / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / type bit map / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4.1.1 The Next Domain Name Field The"next domain name"Next Domain Name field contains the next authoritive owner name in canonicalorder. Canonicalorder, where canonical ordermeans sorted by label, highest level label first. The "next domain name" field of the NXT RR atis defined in Appendix C.1. For the last owner name in thezonezone, the Next Domain Name field contains the zone apex name.GlueThe Next Domain Name field allows message compression. Note that non-authoritative glue address record names may exist in a zone, but these non-authoritative glue records MUST NOT becovered bylisted in the"next domain name" field. The "next domain name" field allows message compression.Next Domain Name. Any non-authoritative glue records are ignored (treated as though they were never present) when constructing an NXT. 4.1.2 The Type Bit Map Field The"type bit map"Type Bit Map fieldformat contains a single bit per RR type for RRsets withidentifies thesameRRset types that exist at the NXT's ownername asname. Each bit in theNXT RR. AType Bit Map field corresponds to an RR type. Bit one 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 typeexistexists for the NXT's owner name.A zeroIf a bit is set to zero, it indicates that no RRset of that typeexistexists for the NXT's owner name.The first bit represents RR type zero.Trailing zero octets MUST be omitted. Thus the length of the Type Bit Map field varies and is dependent on the largest RR typenumberpresent for the NXT's owner name. Trailing zeroisoctets notassigned and the corresponding bitspecified MUST bezero. If theinterpreted as zerobit is one, it indicates that an unspecified format is used. This format is notoctets. Non-authoritative glue address record types MUST NOT be used whenthere exist an RRconstructing the typenumber greater than 127.bit map field. The OPT RR [8] type (41) also MUST NOT becovered byused when constructing the type bit map field since it is not part of the zone data.The correspondingIn other words, the OPT RR type bit(40)(bit 41) MUST be zero.Trailing zero octets MUST be omitted. Trailing zero octets not specified MUST be interpreted as zero octets. Glue address record types4.1.2.1 Alternate Formats for the Type Bit Map Field The above Type Bit Map format MUST NOT becovered by theused when an RR type number greater than 127 is in use. Bit 0 in the Type Bit Map Field is used to indicate an alternate format for the Type Bit Map field. If bitmap0 is set to 1, it indicates some other format is being used for this field. No alternate formats are defined as of this writing. 4.1.3 Inclusion of Wildcard Names in NXT RDATA If a wildcard owner name appears in a zone, the wildcard is treated as a literal symbol and is treated the same as any other owner name. Wildcard owner names appear (unexpanded) in the Next Domain Name field without any wildcard expansion. [14] describes the impact of wildcards on authetnicated denial of existence. 4.2 The NXT RR Presentation Format A NXT RR may appear as a single line. The presentation format of the RDATA portion is as follows: The"next domain name"Next Domain Name field is represented as a domain name. The"type bit map"Type Bit Map field is represented as a sequence of RR type mnemonics or asana sequence of unsignedinteger.integers denoting the RR types. 4.3 NXT RR Example The following NXT RR identifies the RRsets associated with a.example.com and identifies the next authoritative name after a.example.com. a.example.com. 86400 IN NXT c.example.com. A MX NXT The first four fields specify the name, TTL, Class, and RR type (NXT). The entry c.example.com is the next authoritative name after a.example.com (in cannonical order). The A MX and NXT nnemonics indicate there are A, MX, and NXT RRsets associated with the name a.example.com. Note the NXT record can be used for authenticted denial of existence. If the example NXT record were authenticed, it could be used to prove that b.example.com does not exist or could be used to prove there is no AAAA record assoicated with a.example.com. Authenticated denial of existence is discussed in [14] 5. The DS Resource Record The DSrecordResource Record points to a KEY RR and is used in the DNS KEY authentication process. A DS RR points to amajor changeKEY RR by storing the key tag, algorithm number, and a digest of KEY RR. Note that while the digest should be sufficient toDNS: itidentify key, storing the key tag and key algorithm helps make the identification process more efficient and more secure. By authenticating the DS record, a resolver can authenticate the KEY RR pointed to by the DS record. The key authentication proces is described in [14]. The DS RR and its corresponding KEY RR both have the same owner name, but they are stored in different locations. The DS RR is the first resource record thatcan appearappears only on the upper side of a delegation.Other keys MAY signIn other words, thechild's apex KEY RRset.DSrecords MUST point to zoneRR for "example.com" is stored in "com" (the upper side of the delegation). The corresponding KEYrecordsRR is stored in the "example.com" zone (the lower side of the delegation). This simplifies DNS zone management and zone signing, but introduces special response processing requirements that areallowed to authenticate DNS data.described in [14]. 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 FormatThis record contains these fields: key tag, algorithm, digest type, and the digestThe RDATA for a DS RR consists of 2 octet Key Tag, apublic key KEY record that is allowed and/or used to sign the child's apex KEY RRset.one octet Algorithm Number, a one octet Digest Type, and a Digest. 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 tag | algorithm | Digest type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Digest| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | (20 bytes for SHA-1) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | |/ / / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 5.1.1 The Key Tag Field Thekey tag value isKey Tag field lists thesamekey tagvalue in the SIG RRs generated usingof the KEYrecord thisRR pointed to by the DSrecord points too. Havingrecord. The KEY RR MUST be a a zone key. In other words, the KEY RR Flags must have Flags bit 7 set to 1. The key tagin the RDATA provides additional reliability in matching than justused by theKEY digest alone. SeeDS RR is identical to the key tagfor details.used by the SIG RR and Appendix B describes how to compute a key tag. 5.1.2 The Algorithm Field Thealgorithm value hasAlgorithm field lists thesame defined values asalgorithm number of the KEYand SIG records.RR pointed to by the DS record. Thevalue MUST be analgorithm numberassigned inused by the DS RR is identical to the algorithm number used by therange 1..251SIG RR and KEY RR. Appendix A.1 lists the algorithmMUST be allowed to sign DNS data.number types. 5.1.3 The Digest Type Field The DS RR points to a KEY RR by including a digesttype is an identifier forof that KEY RR. The Digest Type field identifes thedigestalgorithmused. The following numbers have been assignedused to construct the digest and Appendix A.2 lists theassignment of future numbers requires IETF standards action. VALUE Algorithm STATUS 0 Reserved - 1 RSA/SHA-1 MANDATORY 2-255 Unassigned -possible digest algorithm types. 5.1.4 The Digest Field The DS record points to a KEY RR by including a digestis calculated over the canonical nameof that KEY RR. The Digest field hold thedelegated domain name followed bydigest. For a given KEY RR, thewhole RDATA ofdigest is calculated by appending the KEYrecord (all four fields). The size ofRR's cannonical fully qualified owner name with theDSKEY RDATAfor type 1 (SHA-1) is 24 bytes, regardless of key size. Other digest algorithms may have a differingand then applying the digestsize, to be described in other documents.algorithm. digest =hash(digest_algorithm( cannonical FQDNonof KEY RR | KEY_RR_rdata) "|" denotes append KEY_RR_rdata = Flags | Protocol | Algorithm | Public Key The size of the digest can vary depending on the digest algorithm and KEY RR size. However, the only currently defined digest algorithm is SHA-1 and it always produces a 24 byte digest regardless of KEY RR size. 5.2 The DSRecord ExampleRR Presentation Format A 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 theDS record consists of three numbers (key tag,RDATA portion is as follows: The Key Tag field is represented as an unsigned integer. The Algorithm field is represented as an unsigned integer or as an algorithmand digest type) followed by the digest itselfmnemonic specified in Appendix A.1. The Digest Type field is represented as an unsigned integer. The Digest is presented inhex: example.hexadecimal. 5.3 DS12345 3 1 123456789abcdef67890123456789abcdef67890 This is aRecord Example The following exampleofshows a KEYrecordRR and its corresponding DSrecord.RR. dskey.example. 86400 IN KEY 256 3 1 (encoded public key )AQPwHb4UL1U9RHaU8qP+Ts5bVOU 1s7fYbj2b3CCbzNdj4+/ECd18yKiy UQqKqQFWW5T3iVc8SJOKnueJHt/Jb /wt) ; keyidtag = 28668 dskey.example. 3600 IN DS 28668 1 1 49FD46E6C4B45C55D4AC69CBD3CD34AC1AFE51DE5.3 Resolver Example To create a chain of trust, a resolver goes from trusted KEY to DS to KEY. AssumeThe first four fields specify thekey for domain "example."name, TTL, Class, and RR type (DS). 28668 istrusted. Zone "example." contains at leastthefollowing records: example. SOA (soa stuff) example. NS ns.example. example. KEY (encoded public key) example. NXT NS SOA KEY SIG NXT example. SIG(SOA) example. SIG(NS) example. SIG(NXT) example. SIG(KEY) secure.example. NS ns1.secure.example. secure.example. DS tag=10243 alg=3 digest_type=1 secure.example. NXT NS SIG NXT DS unsecure.example. secure.example. SIG(NXT) secure.example. SIG(DS) unsecure.example NS ns1.unsecure.example. unsecure.example. NXT NS SIG NXT .example. unsecure.example. SIG(NXT) In zone "secure.example." following records exist: secure.example. SOA (soa stuff) secure.example. NS ns1.secure.example. secure.example. KEY (tag=12345 alg=3) secure.example. SIG(KEY) (key-tag=12345 alg=3) secure.example. SIG(SOA) (key-tag=12345 alg=3) secure.example. SIG(NS) (key-tag=12345 alg=5) In this example the privatekey tag for"example." signs the DS record for "secure.example.", making that a secure delegation. The DS record states which key is expected to sign the RRsets at "secure.example.". Here "secure.example." signs its KEY RRset with the KEY identified in the DS RRset, thusthe corresponding "dskey.example." KEYRRset is validatedRR andtrusted. This example has only one DS record for the child, but parents MUST allow multiple DS records to facilitate key rollover. It is strongly recommended that the DS RRset be kept small: two or three DS records should be sufficient in all cases. The resolver determines the security status of "unsecure.example."1 algorithm used byexamining the parent zone's NXT record forthisname. The absence of the DS bit indicates an unsecure delegation. 6. DNSSEC message bits There are 3 new bits allocated for use with DNSSEC."dskey.example." KEY RR. TheDO bitsecond 1 isused to indicate to a server thattheresolver is able to accept DNSSEC security RRs (KEY SIG NXT DS). The CD and AD bits arealgorithm used toindicate if non-authenticated data is accepted, and if data is authenticated. 6.1 The AD and CD Header Bits Two bits are allocated inconstruct theheader section. The CD (checking disabled) bit and the AD (authentic data) bit. The Header contains the following fields: 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ID | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | QDCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ANCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | NSCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ARCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ The usage of the CDdigest andAD bits are defined in [14] 6.2 The DO Extended Flags Field Bit The DO (DNSSEC OK) bit is allocated fromtheEDNS0 [8] extended flags field. In the context of the OPT RR, the DO bitfinal string is themost significant bit in the 3rd octet of the TTL field. The TTL field of the OPT RR is defined as follows: 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | EXTENDED-RCODE | VERSION | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |DO| Z | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ The usage of the DO bit is defineddigest in[14] 7.hex. 6. IANA Considerations This documentclarifies the use of existing types andintroduces no new IANA considerations.The definitions ofThis document only clarifies theflag bits inuse of existing DNS resource records. However for completeness, theKEY RRIANA considerations from these previous documents aresetsummarized below. No IANA changes are made byworking group consensus and there is nothis document. RFC 2535 updated the IANA registry fortheir definition. ChangesDNS Resource Record Types and assigned types 24,25, and 30 to themeaning of the bits in the flags section of the KEY RDATA must be done through working group consensus.SIG, KEY, and NXT (respectively). [DS RFC] assigned DNS Resource Record Type 43 to DS. RFC 2535 created an IANA registry for DNSSEC Resource Recordalgorithm Octet values.Algorithm Numbers. Values to1-5,1-4, and255252-255 were assignedand values 6-254 were made available for assignmentbyIANA. This document re-assigns DNS KEY Resource Record Protocol Octet values 1, 2, 4,RFC 2535. Value 5 was assigned by RFC 3110. [DS RFC] created an IANA registry for DNSSEC DS Digest Types and255assigned value 0 to``reserved''. DNS Key Resource Recordreserved and value 1 to RSA/SHA-1. RFC 2535 created an IANA Registry to KEY Protocol OctetValue 3 remains unchanged as ``DNSSEC''. New protocolValues, but [KeyRestrict RFC] set all assigned valuesare no longer available for assignment by IANAother than 3 to reserved and closed thisdocument closes theIANA registry. The registryfor DNSremains closed and all KEYResource Recordrecords are required to have Protocol OctetValues. Assignmentvalue ofany future3. The Flag bits in the KEYResource Record Protocol Octet values requires a standards action. New numbers for algorithm values will continue to beRR are not assigned byIANA.IANAneeds to open a newand there is no IANA registry for these flags. All changes to theDSmeaning of the KEY RRtype digest algorithms. Defined types are: 0 is Reserved, 1 is SHA-1. Adding new reservations requires IETFFlag bits require a standards action.8.7. Security Considerations This document describes the format of four DNS resource records used by the DNSsecurity.security extensions and presents an algorithm for calculating a key tag for a public key. Other than the items desribed below, the resource records themselves introduce no security considerations. Thethreats facing DNS are describeduse of these records is specified in aseparateseperate document and security considerations related to the use these resource records areuseddiscussed in that document. The DS record points tohelp counter those threats.a KEY RR using a cryptographic digest, the key algorithm type and a key tag. Therecords themselves introduce no new security considerations,DS record is intended to identify an existing KEY RR, but it is theoretically possibile for an attacker to generate a KEY that matches all theprotocol useDS fields. The probability ofthese recordsconstructing such a matching KEY depends on the type of digest algorithm in use and the only currently defined digest algorithm isdescribedSHA1. It is considered very difficult to constuct a public key that matches the algorithm, key tag, and SHA1 digest given in asecond document. 9.DS record. The key tag is used to help efficiently select KEY resource records, but it does not uniquely identify a KEY resource record. It is possible that two distinct KEY RRs could have the same owner name, same algorithm type and same key tag. An implementation that used only the key tag to select a KEY RR may select the wrong public key for a given scenario. Implementations MUST NOT assume the key tag is unique public key identifier and this is clearly stated in the text. 8. Acknowledgements 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 there-writingrevision of these security extension specifications. 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] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, August 1996. [4] 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] 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] Eastlake, D., "RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)", RFC 3110, May 2001. [13] Arends, R., Larson, M., Massey, D. and S. Rose, "DNSSEC Intro",FebruaryOctober 2002. [14] Arends, R., Larson, M., Massey, D. and S. Rose, "DNSSEC Protocol",FebruaryOctober 2002. [15] Massey, D. and S. Rose, "Limiting the Scope of the KEY Resource Record",draft-ietf-dnsext-restrict-key-for-dnssec-01draft-ietf-dnsext-restrict-key-for-dnssec-02 (work in progress),JanuaryMarch 2002. Authors' Addresses Roy ArendsNominum, Inc. 2385 Bay Street Redwood City, CA 94063 USABankastraat 41-E 1094 EB Amsterdam NL EMail:roy.arends@nominum.comroy@logmess.com 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, MD20899-346020899-8920 USA EMail: scott.rose@nist.gov Appendix A.Key Tag CalculationDNSSEC Algorithm and Digest Types Thekey tagDNS security exstentions 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 the crytographic 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 - 252 indirect see below OPTIONAL 253 private see below OPTIONAL 254 private see below OPTIONAL 255 reserved - - A.1.1 Indiret and Private Algorithm Types RFC 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 isjustpermitted. 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 ameansBER encoded Object Identifier (ISO OID) ofmorethat 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 - 1 RSA/SHA-1 MANDATORY 2-255 Unassigned - Appendix B. Key Tag Calculation The key tag field provides a mechanism for efficiently selecting a public key. In most cases, a combination of owner name, algorithm, and key tag can efficiently identify a KEY record. For example, both thecorrectSIG and DS resource records have corresponding KEYRRrecords. A Key Tag field in the SIG and DS records can be used tousehelp efficiently select the corresponding KEY RR when there is more than one candidate KEY RRcandidate available, for example, in verifyingavailable. However, it is essential to note that the key tag is not asignature.unique identifier. It is theoretically possible formore than one candidate keytwo distinct KEY RRs to have the sametag, in which case each must be tried until one works or all fail.owner name, same algorithm, and same key tag. The key tag is used to efficiently limit the possible candidate keys but it does not uniquely identify a KEY record. Implementations MUST NOT assume the key tag uniquely idenifies a KEY RR. The following ANSI C reference implementationof how to calculate the Key Tag,is provided for calculating a Key Tag. This reference implementation applies to allalgorithms other thanalgorithm types except algorithm 1(which is NOT RECOMMENDED), is in ANSI C.(see Appendix B.1). The input is the public key material in base64,not64, not the entire RDATA of the KEY record that contains the public key.ItThe code iscodedwritten for clarity, not efficiency. /* assumes int is at least 16 bits first byte of the key tag is the most significant byte of return value second byte of the key tag is the least significant byte of return value */ int keytag ( unsigned char key[], /* the RDATA part of the KEY RR */ unsigned int keysize, /* the RDLENGTH */ ) { long int ac; /* assumed to be 32 bits or larger */ for ( ac = 0, i = 0; i < keysize; ++i ) ac += (i&1) ? key[i] : key[i]<<8; ac += (ac>>16) & 0xFFFF; return ac & 0xFFFF; } B.1 Key Tag for Algorithm 1 - RSA/MD5 Algorithm 1 - RSA/MD5 key tag is the only algoritm that does not use the key tag defined above. For a KEY RR with algorithm 1, the key tag is the most signifigant 16 bits of the least signifigant 24 bits in the public key modulus. In others, the 4th to last and 3rd to last octets in the key modulus. 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). 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.