7 Network Working Group S. Weiler
8 Request for Comments: 3755 SPARTA, Inc.
9 Updates: 3658, 2535 May 2004
10 Category: Standards Track
13 Legacy Resolver Compatibility for Delegation Signer (DS)
17 This document specifies an Internet standards track protocol for the
18 Internet community, and requests discussion and suggestions for
19 improvements. Please refer to the current edition of the "Internet
20 Official Protocol Standards" (STD 1) for the standardization state
21 and status of this protocol. Distribution of this memo is unlimited.
25 Copyright (C) The Internet Society (2004). All Rights Reserved.
29 As the DNS Security (DNSSEC) specifications have evolved, the syntax
30 and semantics of the DNSSEC resource records (RRs) have changed.
31 Many deployed nameservers understand variants of these semantics.
32 Dangerous interactions can occur when a resolver that understands an
33 earlier version of these semantics queries an authoritative server
34 that understands the new delegation signer semantics, including at
35 least one failure scenario that will cause an unsecured zone to be
36 unresolvable. This document changes the type codes and mnemonics of
37 the DNSSEC RRs (SIG, KEY, and NXT) to avoid those interactions.
41 The DNSSEC protocol has been through many iterations whose syntax and
42 semantics are not completely compatible. This has occurred as part
43 of the ordinary process of proposing a protocol, implementing it,
44 testing it in the increasingly complex and diverse environment of the
45 Internet, and refining the definitions of the initial Proposed
46 Standard. In the case of DNSSEC, the process has been complicated by
47 DNS's criticality and wide deployment and the need to add security
48 while minimizing daily operational complexity.
50 A weak area for previous DNS specifications has been lack of detail
51 in specifying resolver behavior, leaving implementors largely on
52 their own to determine many details of resolver function. This,
53 combined with the number of iterations the DNSSEC specifications have
54 been through, has resulted in fielded code with a wide variety of
58 Weiler Standards Track [Page 1]
60 RFC 3755 Legacy Resolver Compatibility for DS May 2004
63 behaviors. This variety makes it difficult to predict how a protocol
64 change will be handled by all deployed resolvers. The risk that a
65 change will cause unacceptable or even catastrophic failures makes it
66 difficult to design and deploy a protocol change. One strategy for
67 managing that risk is to structure protocol changes so that existing
68 resolvers can completely ignore input that might confuse them or
69 trigger undesirable failure modes.
71 This document addresses a specific problem caused by Delegation
72 Signer's (DS) [RFC3658] introduction of new semantics for the NXT RR
73 that are incompatible with the semantics in [RFC2535]. Answers
74 provided by DS-aware servers can trigger an unacceptable failure mode
75 in some resolvers that implement RFC 2535, which provides a great
76 disincentive to sign zones with DS. The changes defined in this
77 document allow for the incremental deployment of DS.
81 In this document, the term "unsecure delegation" means any delegation
82 for which no DS record appears at the parent. An "unsecure referral"
83 is an answer from the parent containing an NS RRset and a proof that
84 no DS record exists for that name.
86 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
87 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
88 document are to be interpreted as described in [RFC2119].
92 Delegation Signer (DS) introduces new semantics for the NXT RR that
93 are incompatible with the semantics in RFC 2535. In RFC 2535, NXT
94 records were only required to be returned as part of a non-existence
95 proof. With DS, an unsecure referral returns, in addition to the NS,
96 a proof of non-existence of a DS RR in the form of an NXT and
97 SIG(NXT). RFC 2535 didn't specify how a resolver was to interpret a
98 response with RCODE=0, AA=0, and both an NS and an NXT in the
99 authority section. Some widely deployed 2535-aware resolvers
100 interpret any answer with an NXT as a proof of non-existence of the
101 requested record. This results in unsecure delegations being
102 invisible to 2535-aware resolvers and violates the basic
103 architectural principle that DNSSEC must do no harm -- the signing of
104 zones must not prevent the resolution of unsecured delegations.
106 2. Possible Solutions
108 This section presents several solutions that were considered.
109 Section 3 describes the one selected.
114 Weiler Standards Track [Page 2]
116 RFC 3755 Legacy Resolver Compatibility for DS May 2004
119 2.1. Change SIG, KEY, and NXT type codes
121 To avoid the problem described above, legacy (RFC2535-aware)
122 resolvers need to be kept from seeing unsecure referrals that include
123 NXT records in the authority section. The simplest way to do that is
124 to change the type codes for SIG, KEY, and NXT.
126 The obvious drawback to this is that new resolvers will not be able
127 to validate zones signed with the old RRs. This problem already
128 exists, however, because of the changes made by DS, and resolvers
129 that understand the old RRs (and have compatibility issues with DS)
130 are far more prevalent than 2535-signed zones.
132 2.2. Change a subset of type codes
134 The observed problem with unsecure referrals could be addressed by
135 changing only the NXT type code or another subset of the type codes
136 that includes NXT. This has the virtue of apparent simplicity, but
137 it risks introducing new problems or not going far enough. It's
138 quite possible that more incompatibilities exist between DS and
139 earlier semantics. Legacy resolvers may also be confused by seeing
140 records they recognize (SIG and KEY) while being unable to find NXTs.
141 Although it may seem unnecessary to fix that which is not obviously
142 broken, it's far cleaner to change all of the type codes at once.
143 This will leave legacy resolvers and tools completely blinded to
144 DNSSEC -- they will see only unknown RRs.
146 2.3. Replace the DO bit
148 Another way to keep legacy resolvers from ever seeing DNSSEC records
149 with DS semantics is to have authoritative servers only send that
150 data to DS-aware resolvers. It's been proposed that assigning a new
151 EDNS0 flag bit to signal DS-awareness (tentatively called "DA"), and
152 having authoritative servers send DNSSEC data only in response to
153 queries with the DA bit set, would accomplish this. This bit would
154 presumably supplant the DO bit described in [RFC3225].
156 This solution is sufficient only if all 2535-aware resolvers zero out
157 EDNS0 flags that they don't understand. If one passed through the DA
158 bit unchanged, it would still see the new semantics, and it would
159 probably fail to see unsecure delegations. Since it's impractical to
160 know how every DNS implementation handles unknown EDNS0 flags, this
161 is not a universal solution. It could, though, be considered in
162 addition to changing the RR type codes.
170 Weiler Standards Track [Page 3]
172 RFC 3755 Legacy Resolver Compatibility for DS May 2004
175 2.4. Increment the EDNS version
177 Another possible solution is to increment the EDNS version number as
178 defined in [RFC2671], on the assumption that all existing
179 implementations will reject higher versions than they support, and
180 retain the DO bit as the signal for DNSSEC awareness. This approach
185 There is a large deployed base of DNS resolvers that understand
186 DNSSEC as defined by the standards track RFC 2535 and [RFC2065] and,
187 due to under specification in those documents, interpret any answer
188 with an NXT as a non-existence proof. So long as that is the case,
189 zone owners will have a strong incentive to not sign any zones that
190 contain unsecure delegations, lest those delegations be invisible to
191 such a large installed base. This will dramatically slow DNSSEC
194 Unfortunately, without signed zones there's no clear incentive for
195 operators of resolvers to upgrade their software to support the new
196 version of DNSSEC, as defined in RFC 3658. Historical data suggests
197 that resolvers are rarely upgraded, and that old nameserver code
200 Rather than wait years for resolvers to be upgraded through natural
201 processes before signing zones with unsecure delegations, addressing
202 this problem with a protocol change will immediately remove the
203 disincentive for signing zones and allow widespread deployment of
208 This document changes the type codes of SIG, KEY, and NXT. This
209 approach is the cleanest and safest of those discussed above, largely
210 because the behavior of resolvers that receive unknown type codes is
211 well understood. This approach has also received the most testing.
213 To avoid operational confusion, it's also necessary to change the
214 mnemonics for these RRs. DNSKEY will be the replacement for KEY,
215 with the mnemonic indicating that these keys are not for application
216 use, per [RFC3445]. RRSIG (Resource Record SIGnature) will replace
217 SIG, and NSEC (Next SECure) will replace NXT. These new types
218 completely replace the old types, except that SIG(0) [RFC2931] and
219 TKEY [RFC2930] will continue to use SIG and KEY.
226 Weiler Standards Track [Page 4]
228 RFC 3755 Legacy Resolver Compatibility for DS May 2004
231 The new types will have exactly the same syntax and semantics as
232 specified for SIG, KEY, and NXT in RFC 2535 and RFC 3658 except for
235 1) Consistent with [RFC3597], domain names embedded in RRSIG and NSEC
236 RRs MUST NOT be compressed,
238 2) Embedded domain names in RRSIG and NSEC RRs are not downcased for
239 purposes of DNSSEC canonical form and ordering nor for equality
242 3) An RRSIG with a type-covered field of zero has undefined
243 semantics. The meaning of such a resource record may only be
244 defined by IETF Standards Action.
246 If a resolver receives the old types, it SHOULD treat them as unknown
247 RRs and SHOULD NOT assign any special meaning to them or give them
248 any special treatment. It MUST NOT use them for DNSSEC validations
249 or other DNS operational decision making. For example, a resolver
250 MUST NOT use DNSKEYs to validate SIGs or use KEYs to validate RRSIGs.
251 If SIG, KEY, or NXT RRs are included in a zone, they MUST NOT receive
252 special treatment. As an example, if a SIG is included in a signed
253 zone, there MUST be an RRSIG for it. Authoritative servers may wish
254 to give error messages when loading zones containing SIG or NXT
255 records (KEY records may be included for SIG(0) or TKEY).
257 As a clarification to previous documents, some positive responses,
258 particularly wildcard proofs and unsecure referrals, will contain
259 NSEC RRs. Resolvers MUST NOT treat answers with NSEC RRs as negative
260 answers merely because they contain an NSEC.
262 4. IANA Considerations
264 4.1. DNS Resource Record Types
266 This document updates the IANA registry for DNS Resource Record Types
267 by assigning types 46, 47, and 48 to the RRSIG, NSEC, and DNSKEY RRs,
270 Types 24 and 25 (SIG and KEY) are retained for SIG(0) [RFC2931] and
271 TKEY [RFC2930] use only.
273 Type 30 (NXT) should be marked as Obsolete.
282 Weiler Standards Track [Page 5]
284 RFC 3755 Legacy Resolver Compatibility for DS May 2004
287 4.2. DNS Security Algorithm Numbers
289 To allow zone signing (DNSSEC) and transaction security mechanisms
290 (SIG(0) and TKEY) to use different sets of algorithms, the existing
291 "DNS Security Algorithm Numbers" registry is modified to include the
292 applicability of each algorithm. Specifically, two new columns are
293 added to the registry, showing whether each algorithm may be used for
294 zone signing, transaction security mechanisms, or both. Only
295 algorithms usable for zone signing may be used in DNSKEY, RRSIG, and
296 DS RRs. Only algorithms usable for SIG(0) and/or TSIG may be used in
299 All currently defined algorithms except for Indirect (algorithm 252)
300 remain usable for transaction security mechanisms. Only RSA/SHA-1
301 [RFC3110], DSA/SHA-1 [RFC2536], and private algorithms (types 253 and
302 254) may be used for zone signing. Note that the registry does not
303 contain the requirement level of each algorithm, only whether or not
304 an algorithm may be used for the given purposes. For example,
305 RSA/MD5, while allowed for transaction security mechanisms, is NOT
306 RECOMMENDED, per [RFC3110].
308 Additionally, the presentation format algorithm mnemonics from
309 [RFC2535] Section 7 are added to the registry. This document assigns
310 RSA/SHA-1 the mnemonic RSASHA1.
312 As before, assignment of new algorithms in this registry requires
313 IETF Standards Action. Additionally, modification of algorithm
314 mnemonics or applicability requires IETF Standards Action. Documents
315 defining a new algorithm must address the applicability of the
316 algorithm and should assign a presentation mnemonic to the algorithm.
320 Like the KEY resource record, DNSKEY contains a 16-bit flags field.
321 This document creates a new registry for the DNSKEY flags field.
323 Initially, this registry only contains an assignment for bit 7 (the
324 ZONE bit). Bits 0-6 and 8-15 are available for assignment by IETF
327 4.4. DNSKEY Protocol Octet
329 Like the KEY resource record, DNSKEY contains an eight bit protocol
330 field. The only defined value for this field is 3 (DNSSEC). No
331 other values are allowed, hence no IANA registry is needed for this
338 Weiler Standards Track [Page 6]
340 RFC 3755 Legacy Resolver Compatibility for DS May 2004
343 5. Security Considerations
345 The changes introduced here do not materially affect security. The
346 implications of trying to use both new and legacy types together are
347 not well understood, and attempts to do so would probably lead to
348 unintended and dangerous results.
350 Changing type codes will leave code paths in legacy resolvers that
351 are never exercised. Unexercised code paths are a frequent source of
352 security holes, largely because those code paths do not get frequent
355 Doing nothing, as described in section 2.5, will slow DNSSEC
356 deployment. While this does not decrease security, it also fails to
361 6.1. Normative References
363 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
364 Requirement Levels", BCP 14, RFC 2119, March 1997.
366 [RFC2535] Eastlake, D., "Domain Name System Security Extensions", RFC
369 [RFC2536] Eastlake, D., "DSA KEYs and SIGs in the Domain Name System
370 (DNS)", RFC 2536, March 1999.
372 [RFC2930] Eastlake, D., "Secret Key Establishment for DNS (TKEY RR)",
373 RFC 2930, September 2000.
375 [RFC2931] Eastlake, D., "DNS Request and Transaction Signatures
376 (SIG(0)s)", RFC 2931, September 2000.
378 [RFC3110] Eastlake, D., "RSA/SHA-1 SIGs and RSA KEYs in the Domain
379 Name System (DNS)", RFC 3110, May 2001.
381 [RFC3658] Gudmundsson, O., "Delegation Signer (DS) Resource Record
382 (RR)", RFC 3658, December 2003.
394 Weiler Standards Track [Page 7]
396 RFC 3755 Legacy Resolver Compatibility for DS May 2004
399 6.2. Informative References
401 [RFC2065] Eastlake, 3rd, D. and C. Kaufman, "Domain Name System
402 Security Extensions", RFC 2065, January 1997.
404 [RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC
407 [RFC3225] Conrad, D., "Indicating Resolver Support of DNSSEC", RFC
410 [RFC3445] Massey, D., and S. Rose, "Limiting the Scope of the KEY
411 Resource Record (RR)", RFC 3445, December 2002.
413 [RFC3597] Gustafsson, A., "Handling of Unknown DNS Resource Record
414 (RR) Types", RFC 3597, September 2003.
418 The changes introduced here and the analysis of alternatives had many
419 contributors. With apologies to anyone overlooked, those include:
420 Michael Graff, Johan Ihren, Olaf Kolkman, Mark Kosters, Ed Lewis,
421 Bill Manning, Paul Vixie, and Suzanne Woolf.
423 Thanks to Jakob Schlyter and Mark Andrews for identifying the
424 incompatibility described in section 1.2.
426 In addition to the above, the author would like to thank Scott Rose,
427 Olafur Gudmundsson, and Sandra Murphy for their substantive comments.
433 7075 Samuel Morse Drive
437 EMail: weiler@tislabs.com
450 Weiler Standards Track [Page 8]
452 RFC 3755 Legacy Resolver Compatibility for DS May 2004
455 9. Full Copyright Statement
457 Copyright (C) The Internet Society (2004). This document is subject
458 to the rights, licenses and restrictions contained in BCP 78, and
459 except as set forth therein, the authors retain all their rights.
461 This document and the information contained herein are provided on an
462 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
463 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
464 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
465 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
466 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
467 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
469 Intellectual Property
471 The IETF takes no position regarding the validity or scope of any
472 Intellectual Property Rights or other rights that might be claimed to
473 pertain to the implementation or use of the technology described in
474 this document or the extent to which any license under such rights
475 might or might not be available; nor does it represent that it has
476 made any independent effort to identify any such rights. Information
477 on the procedures with respect to rights in RFC documents can be
478 found in BCP 78 and BCP 79.
480 Copies of IPR disclosures made to the IETF Secretariat and any
481 assurances of licenses to be made available, or the result of an
482 attempt made to obtain a general license or permission for the use of
483 such proprietary rights by implementers or users of this
484 specification can be obtained from the IETF on-line IPR repository at
485 http://www.ietf.org/ipr.
487 The IETF invites any interested party to bring to its attention any
488 copyrights, patents or patent applications, or other proprietary
489 rights that may cover technology that may be required to implement
490 this standard. Please address the information to the IETF at ietf-
495 Funding for the RFC Editor function is currently provided by the
506 Weiler Standards Track [Page 9]