4 Network Working Group S. Weiler
5 Internet-Draft SPARTA, Inc
6 Updates: 4034, 4035 (if approved) J. Ihren
7 Expires: July 24, 2006 Autonomica AB
11 Minimally Covering NSEC Records and DNSSEC On-line Signing
12 draft-ietf-dnsext-dnssec-online-signing-02
16 By submitting this Internet-Draft, each author represents that any
17 applicable patent or other IPR claims of which he or she is aware
18 have been or will be disclosed, and any of which he or she becomes
19 aware will be disclosed, in accordance with Section 6 of BCP 79.
21 Internet-Drafts are working documents of the Internet Engineering
22 Task Force (IETF), its areas, and its working groups. Note that
23 other groups may also distribute working documents as Internet-
26 Internet-Drafts are draft documents valid for a maximum of six months
27 and may be updated, replaced, or obsoleted by other documents at any
28 time. It is inappropriate to use Internet-Drafts as reference
29 material or to cite them other than as "work in progress."
31 The list of current Internet-Drafts can be accessed at
32 http://www.ietf.org/ietf/1id-abstracts.txt.
34 The list of Internet-Draft Shadow Directories can be accessed at
35 http://www.ietf.org/shadow.html.
37 This Internet-Draft will expire on July 24, 2006.
41 Copyright (C) The Internet Society (2006).
45 This document describes how to construct DNSSEC NSEC resource records
46 that cover a smaller range of names than called for by RFC4034. By
47 generating and signing these records on demand, authoritative name
48 servers can effectively stop the disclosure of zone contents
49 otherwise made possible by walking the chain of NSEC records in a
55 Weiler & Ihren Expires July 24, 2006 [Page 1]
57 Internet-Draft NSEC Epsilon January 2006
60 Changes from ietf-01 to ietf-02
62 Clarified that a generated NSEC RR's type bitmap MUST have the RRSIG
63 and NSEC bits set, to be consistent with DNSSECbis -- previous text
66 Made the applicability statement a little less oppressive.
68 Changes from ietf-00 to ietf-01
70 Added an applicability statement, making reference to ongoing work on
73 Added the phrase "epsilon functions", which has been commonly used to
74 describe the technique and already appeared in the header of each
75 page, in place of "increment and decrement functions". Also added an
78 Corrected references from 4034 section 6.2 to section 6.1.
80 Fixed an out-of-date reference to [-bis] and other typos.
82 Replaced IANA Considerations text.
84 Escaped close parentheses in examples.
86 Added some more acknowledgements.
88 Changes from weiler-01 to ietf-00
90 Inserted RFC numbers for 4033, 4034, and 4035.
92 Specified contents of bitmap field in synthesized NSEC RR's, pointing
93 out that this relaxes a constraint in 4035. Added 4035 to the
96 Changes from weiler-00 to weiler-01
98 Clarified that this updates RFC4034 by relaxing requirements on the
101 Added examples covering wildcard names.
103 In the 'better functions' section, reiterated that perfect functions
106 Added a reference to RFC 2119.
111 Weiler & Ihren Expires July 24, 2006 [Page 2]
113 Internet-Draft NSEC Epsilon January 2006
118 1. Introduction and Terminology . . . . . . . . . . . . . . . . . 4
119 2. Applicability of This Technique . . . . . . . . . . . . . . . 4
120 3. Minimally Covering NSEC Records . . . . . . . . . . . . . . . 5
121 4. Better Epsilon Functions . . . . . . . . . . . . . . . . . . . 6
122 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7
123 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7
124 7. Normative References . . . . . . . . . . . . . . . . . . . . . 8
125 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 8
126 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10
127 Intellectual Property and Copyright Statements . . . . . . . . . . 11
167 Weiler & Ihren Expires July 24, 2006 [Page 3]
169 Internet-Draft NSEC Epsilon January 2006
172 1. Introduction and Terminology
174 With DNSSEC [1], an NSEC record lists the next instantiated name in
175 its zone, proving that no names exist in the "span" between the
176 NSEC's owner name and the name in the "next name" field. In this
177 document, an NSEC record is said to "cover" the names between its
178 owner name and next name.
180 Through repeated queries that return NSEC records, it is possible to
181 retrieve all of the names in the zone, a process commonly called
182 "walking" the zone. Some zone owners have policies forbidding zone
183 transfers by arbitrary clients; this side-effect of the NSEC
184 architecture subverts those policies.
186 This document presents a way to prevent zone walking by constructing
187 NSEC records that cover fewer names. These records can make zone
188 walking take approximately as many queries as simply asking for all
189 possible names in a zone, making zone walking impractical. Some of
190 these records must be created and signed on demand, which requires
191 on-line private keys. Anyone contemplating use of this technique is
192 strongly encouraged to review the discussion of the risks of on-line
193 signing in Section 6.
195 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
196 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
197 document are to be interpreted as described in RFC 2119 [4].
200 2. Applicability of This Technique
202 The technique presented here may be useful to a zone owner that wants
203 to use DNSSEC, is concerned about exposure of its zone contents via
204 zone walking, and is willing to bear the costs of on-line signing.
206 As discussed in Section 6, on-line signing has several security
207 risks, including an increased likelihood of private keys being
208 disclosed and an increased risk of denial of service attack. Anyone
209 contemplating use of this technique is strongly encouraged to review
210 the discussion of the risks of on-line signing in Section 6.
212 Furthermore, at the time this document was published, the DNSEXT
213 working group was actively working on a mechanism to prevent zone
214 walking that does not require on-line signing (tentatively called
215 NSEC3). The new mechanism is likely to expose slightly more
216 information about the zone than this technique (e.g. the number of
217 instantiated names), but it may be preferable to this technique.
223 Weiler & Ihren Expires July 24, 2006 [Page 4]
225 Internet-Draft NSEC Epsilon January 2006
228 3. Minimally Covering NSEC Records
230 This mechanism involves changes to NSEC records for instantiated
231 names, which can still be generated and signed in advance, as well as
232 the on-demand generation and signing of new NSEC records whenever a
233 name must be proven not to exist.
235 In the 'next name' field of instantiated names' NSEC records, rather
236 than list the next instantiated name in the zone, list any name that
237 falls lexically after the NSEC's owner name and before the next
238 instantiated name in the zone, according to the ordering function in
239 RFC4034 [2] section 6.1. This relaxes the requirement in section
240 4.1.1 of RFC4034 that the 'next name' field contains the next owner
241 name in the zone. This change is expected to be fully compatible
242 with all existing DNSSEC validators. These NSEC records are returned
243 whenever proving something specifically about the owner name (e.g.
244 that no resource records of a given type appear at that name).
246 Whenever an NSEC record is needed to prove the non-existence of a
247 name, a new NSEC record is dynamically produced and signed. The new
248 NSEC record has an owner name lexically before the QNAME but
249 lexically following any existing name and a 'next name' lexically
250 following the QNAME but before any existing name.
252 The generated NSEC record's type bitmap MUST have the RRSIG and NSEC
253 bits set and SHOULD NOT have any other bits set. This relaxes the
254 requirement in Section 2.3 of RFC4035 that NSEC RRs not appear at
255 names that did not exist before the zone was signed.
257 The functions to generate the lexically following and proceeding
258 names need not be perfect nor consistent, but the generated NSEC
259 records must not cover any existing names. Furthermore, this
260 technique works best when the generated NSEC records cover as few
261 names as possible. In this document, the functions that generate the
262 nearby names are called 'epsilon' functions, a reference to the
263 mathematical convention of using the greek letter epsilon to
264 represent small deviations.
266 An NSEC record denying the existence of a wildcard may be generated
267 in the same way. Since the NSEC record covering a non-existent
268 wildcard is likely to be used in response to many queries,
269 authoritative name servers using the techniques described here may
270 want to pregenerate or cache that record and its corresponding RRSIG.
272 For example, a query for an A record at the non-instantiated name
273 example.com might produce the following two NSEC records, the first
274 denying the existence of the name example.com and the second denying
275 the existence of a wildcard:
279 Weiler & Ihren Expires July 24, 2006 [Page 5]
281 Internet-Draft NSEC Epsilon January 2006
284 exampld.com 3600 IN NSEC example-.com ( RRSIG NSEC )
286 \).com 3600 IN NSEC +.com ( RRSIG NSEC )
288 Before answering a query with these records, an authoritative server
289 must test for the existence of names between these endpoints. If the
290 generated NSEC would cover existing names (e.g. exampldd.com or
291 *bizarre.example.com), a better epsilon function may be used or the
292 covered name closest to the QNAME could be used as the NSEC owner
293 name or next name, as appropriate. If an existing name is used as
294 the NSEC owner name, that name's real NSEC record MUST be returned.
295 Using the same example, assuming an exampldd.com delegation exists,
296 this record might be returned from the parent:
298 exampldd.com 3600 IN NSEC example-.com ( NS DS RRSIG NSEC )
300 Like every authoritative record in the zone, each generated NSEC
301 record MUST have corresponding RRSIGs generated using each algorithm
302 (but not necessarily each DNSKEY) in the zone's DNSKEY RRset, as
303 described in RFC4035 [3] section 2.2. To minimize the number of
304 signatures that must be generated, a zone may wish to limit the
305 number of algorithms in its DNSKEY RRset.
308 4. Better Epsilon Functions
310 Section 6.1 of RFC4034 defines a strict ordering of DNS names.
311 Working backwards from that definition, it should be possible to
312 define epsilon functions that generate the immediately following and
313 preceding names, respectively. This document does not define such
314 functions. Instead, this section presents functions that come
315 reasonably close to the perfect ones. As described above, an
316 authoritative server should still ensure than no generated NSEC
317 covers any existing name.
319 To increment a name, add a leading label with a single null (zero-
322 To decrement a name, decrement the last character of the leftmost
323 label, then fill that label to a length of 63 octets with octets of
324 value 255. To decrement a null (zero-value) octet, remove the octet
325 -- if an empty label is left, remove the label. Defining this
326 function numerically: fill the left-most label to its maximum length
327 with zeros (numeric, not ASCII zeros) and subtract one.
329 In response to a query for the non-existent name foo.example.com,
330 these functions produce NSEC records of:
335 Weiler & Ihren Expires July 24, 2006 [Page 6]
337 Internet-Draft NSEC Epsilon January 2006
340 fon\255\255\255\255\255\255\255\255\255\255\255\255\255\255
341 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255
342 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255
343 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255
344 \255.example.com 3600 IN NSEC \000.foo.example.com ( NSEC RRSIG )
346 \)\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255
347 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255
348 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255
349 \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255
350 \255\255.example.com 3600 IN NSEC \000.*.example.com ( NSEC RRSIG )
352 The first of these NSEC RRs proves that no exact match for
353 foo.example.com exists, and the second proves that there is no
354 wildcard in example.com.
356 Both of these functions are imperfect: they don't take into account
357 constraints on number of labels in a name nor total length of a name.
358 As noted in the previous section, though, this technique does not
359 depend on the use of perfect epsilon functions: it is sufficient to
360 test whether any instantiated names fall into the span covered by the
361 generated NSEC and, if so, substitute those instantiated owner names
362 for the NSEC owner name or next name, as appropriate.
365 5. IANA Considerations
367 This document specifies no IANA Actions.
370 6. Security Considerations
372 This approach requires on-demand generation of RRSIG records. This
373 creates several new vulnerabilities.
375 First, on-demand signing requires that a zone's authoritative servers
376 have access to its private keys. Storing private keys on well-known
377 internet-accessible servers may make them more vulnerable to
378 unintended disclosure.
380 Second, since generation of digital signatures tends to be
381 computationally demanding, the requirement for on-demand signing
382 makes authoritative servers vulnerable to a denial of service attack.
384 Lastly, if the epsilon functions are predictable, on-demand signing
385 may enable a chosen-plaintext attack on a zone's private keys. Zones
386 using this approach should attempt to use cryptographic algorithms
387 that are resistant to chosen-plaintext attacks. It's worth noting
391 Weiler & Ihren Expires July 24, 2006 [Page 7]
393 Internet-Draft NSEC Epsilon January 2006
396 that while DNSSEC has a "mandatory to implement" algorithm, that is a
397 requirement on resolvers and validators -- there is no requirement
398 that a zone be signed with any given algorithm.
400 The success of using minimally covering NSEC record to prevent zone
401 walking depends greatly on the quality of the epsilon functions
402 chosen. An increment function that chooses a name obviously derived
403 from the next instantiated name may be easily reverse engineered,
404 destroying the value of this technique. An increment function that
405 always returns a name close to the next instantiated name is likewise
406 a poor choice. Good choices of epsilon functions are the ones that
407 produce the immediately following and preceding names, respectively,
408 though zone administrators may wish to use less perfect functions
409 that return more human-friendly names than the functions described in
412 Another obvious but misguided concern is the danger from synthesized
413 NSEC records being replayed. It's possible for an attacker to replay
414 an old but still validly signed NSEC record after a new name has been
415 added in the span covered by that NSEC, incorrectly proving that
416 there is no record at that name. This danger exists with DNSSEC as
417 defined in [3]. The techniques described here actually decrease the
418 danger, since the span covered by any NSEC record is smaller than
419 before. Choosing better epsilon functions will further reduce this
422 7. Normative References
424 [1] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
425 "DNS Security Introduction and Requirements", RFC 4033,
428 [2] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
429 "Resource Records for the DNS Security Extensions", RFC 4034,
432 [3] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
433 "Protocol Modifications for the DNS Security Extensions",
434 RFC 4035, March 2005.
436 [4] Bradner, S., "Key words for use in RFCs to Indicate Requirement
437 Levels", BCP 14, RFC 2119, March 1997.
440 Appendix A. Acknowledgments
442 Many individuals contributed to this design. They include, in
443 addition to the authors of this document, Olaf Kolkman, Ed Lewis,
447 Weiler & Ihren Expires July 24, 2006 [Page 8]
449 Internet-Draft NSEC Epsilon January 2006
452 Peter Koch, Matt Larson, David Blacka, Suzanne Woolf, Jaap Akkerhuis,
453 Jakob Schlyter, Bill Manning, and Joao Damas.
455 In addition, the editors would like to thank Ed Lewis, Scott Rose,
456 and David Blacka for their careful review of the document.
503 Weiler & Ihren Expires July 24, 2006 [Page 9]
505 Internet-Draft NSEC Epsilon January 2006
512 7075 Samuel Morse Drive
513 Columbia, Maryland 21046
516 Email: weiler@tislabs.com
525 Email: johani@autonomica.se
559 Weiler & Ihren Expires July 24, 2006 [Page 10]
561 Internet-Draft NSEC Epsilon January 2006
564 Intellectual Property Statement
566 The IETF takes no position regarding the validity or scope of any
567 Intellectual Property Rights or other rights that might be claimed to
568 pertain to the implementation or use of the technology described in
569 this document or the extent to which any license under such rights
570 might or might not be available; nor does it represent that it has
571 made any independent effort to identify any such rights. Information
572 on the procedures with respect to rights in RFC documents can be
573 found in BCP 78 and BCP 79.
575 Copies of IPR disclosures made to the IETF Secretariat and any
576 assurances of licenses to be made available, or the result of an
577 attempt made to obtain a general license or permission for the use of
578 such proprietary rights by implementers or users of this
579 specification can be obtained from the IETF on-line IPR repository at
580 http://www.ietf.org/ipr.
582 The IETF invites any interested party to bring to its attention any
583 copyrights, patents or patent applications, or other proprietary
584 rights that may cover technology that may be required to implement
585 this standard. Please address the information to the IETF at
589 Disclaimer of Validity
591 This document and the information contained herein are provided on an
592 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
593 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
594 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
595 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
596 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
597 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
602 Copyright (C) The Internet Society (2006). This document is subject
603 to the rights, licenses and restrictions contained in BCP 78, and
604 except as set forth therein, the authors retain all their rights.
609 Funding for the RFC Editor function is currently provided by the
615 Weiler & Ihren Expires July 24, 2006 [Page 11]