]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-online-signing-02.txt
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / contrib / bind9 / doc / draft / draft-ietf-dnsext-dnssec-online-signing-02.txt
1
2
3
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
8                                                         January 20, 2006
9
10
11        Minimally Covering NSEC Records and DNSSEC On-line Signing
12                draft-ietf-dnsext-dnssec-online-signing-02
13
14 Status of this Memo
15
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.
20
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-
24    Drafts.
25
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."
30
31    The list of current Internet-Drafts can be accessed at
32    http://www.ietf.org/ietf/1id-abstracts.txt.
33
34    The list of Internet-Draft Shadow Directories can be accessed at
35    http://www.ietf.org/shadow.html.
36
37    This Internet-Draft will expire on July 24, 2006.
38
39 Copyright Notice
40
41    Copyright (C) The Internet Society (2006).
42
43 Abstract
44
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
50    signed zone.
51
52
53
54
55 Weiler & Ihren            Expires July 24, 2006                 [Page 1]
56 \f
57 Internet-Draft                NSEC Epsilon                  January 2006
58
59
60 Changes from ietf-01 to ietf-02
61
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
64    said SHOULD.
65
66    Made the applicability statement a little less oppressive.
67
68 Changes from ietf-00 to ietf-01
69
70    Added an applicability statement, making reference to ongoing work on
71    NSEC3.
72
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
76    explanatory sentence.
77
78    Corrected references from 4034 section 6.2 to section 6.1.
79
80    Fixed an out-of-date reference to [-bis] and other typos.
81
82    Replaced IANA Considerations text.
83
84    Escaped close parentheses in examples.
85
86    Added some more acknowledgements.
87
88 Changes from weiler-01 to ietf-00
89
90    Inserted RFC numbers for 4033, 4034, and 4035.
91
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
94    Updates header.
95
96 Changes from weiler-00 to weiler-01
97
98    Clarified that this updates RFC4034 by relaxing requirements on the
99    next name field.
100
101    Added examples covering wildcard names.
102
103    In the 'better functions' section, reiterated that perfect functions
104    aren't needed.
105
106    Added a reference to RFC 2119.
107
108
109
110
111 Weiler & Ihren            Expires July 24, 2006                 [Page 2]
112 \f
113 Internet-Draft                NSEC Epsilon                  January 2006
114
115
116 Table of Contents
117
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167 Weiler & Ihren            Expires July 24, 2006                 [Page 3]
168 \f
169 Internet-Draft                NSEC Epsilon                  January 2006
170
171
172 1.  Introduction and Terminology
173
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.
179
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.
185
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.
194
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].
198
199
200 2.  Applicability of This Technique
201
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.
205
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.
211
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.
218
219
220
221
222
223 Weiler & Ihren            Expires July 24, 2006                 [Page 4]
224 \f
225 Internet-Draft                NSEC Epsilon                  January 2006
226
227
228 3.  Minimally Covering NSEC Records
229
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.
234
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).
245
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.
251
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.
256
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.
265
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.
271
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:
276
277
278
279 Weiler & Ihren            Expires July 24, 2006                 [Page 5]
280 \f
281 Internet-Draft                NSEC Epsilon                  January 2006
282
283
284              exampld.com 3600 IN NSEC example-.com ( RRSIG NSEC )
285
286              \).com 3600 IN NSEC +.com ( RRSIG NSEC )
287
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:
297
298              exampldd.com 3600 IN NSEC example-.com ( NS DS RRSIG NSEC )
299
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.
306
307
308 4.  Better Epsilon Functions
309
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.
318
319    To increment a name, add a leading label with a single null (zero-
320    value) octet.
321
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.
328
329    In response to a query for the non-existent name foo.example.com,
330    these functions produce NSEC records of:
331
332
333
334
335 Weiler & Ihren            Expires July 24, 2006                 [Page 6]
336 \f
337 Internet-Draft                NSEC Epsilon                  January 2006
338
339
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 )
345
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 )
351
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.
355
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.
363
364
365 5.  IANA Considerations
366
367    This document specifies no IANA Actions.
368
369
370 6.  Security Considerations
371
372    This approach requires on-demand generation of RRSIG records.  This
373    creates several new vulnerabilities.
374
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.
379
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.
383
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
388
389
390
391 Weiler & Ihren            Expires July 24, 2006                 [Page 7]
392 \f
393 Internet-Draft                NSEC Epsilon                  January 2006
394
395
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.
399
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
410    Section 4 above.
411
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
420    danger.
421
422 7.  Normative References
423
424    [1]  Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
425         "DNS Security Introduction and Requirements", RFC 4033,
426         March 2005.
427
428    [2]  Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
429         "Resource Records for the DNS Security Extensions", RFC 4034,
430         March 2005.
431
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.
435
436    [4]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
437         Levels", BCP 14, RFC 2119, March 1997.
438
439
440 Appendix A.  Acknowledgments
441
442    Many individuals contributed to this design.  They include, in
443    addition to the authors of this document, Olaf Kolkman, Ed Lewis,
444
445
446
447 Weiler & Ihren            Expires July 24, 2006                 [Page 8]
448 \f
449 Internet-Draft                NSEC Epsilon                  January 2006
450
451
452    Peter Koch, Matt Larson, David Blacka, Suzanne Woolf, Jaap Akkerhuis,
453    Jakob Schlyter, Bill Manning, and Joao Damas.
454
455    In addition, the editors would like to thank Ed Lewis, Scott Rose,
456    and David Blacka for their careful review of the document.
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503 Weiler & Ihren            Expires July 24, 2006                 [Page 9]
504 \f
505 Internet-Draft                NSEC Epsilon                  January 2006
506
507
508 Authors' Addresses
509
510    Samuel Weiler
511    SPARTA, Inc
512    7075 Samuel Morse Drive
513    Columbia, Maryland  21046
514    US
515
516    Email: weiler@tislabs.com
517
518
519    Johan Ihren
520    Autonomica AB
521    Bellmansgatan 30
522    Stockholm  SE-118 47
523    Sweden
524
525    Email: johani@autonomica.se
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559 Weiler & Ihren            Expires July 24, 2006                [Page 10]
560 \f
561 Internet-Draft                NSEC Epsilon                  January 2006
562
563
564 Intellectual Property Statement
565
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.
574
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.
581
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
586    ietf-ipr@ietf.org.
587
588
589 Disclaimer of Validity
590
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.
598
599
600 Copyright Statement
601
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.
605
606
607 Acknowledgment
608
609    Funding for the RFC Editor function is currently provided by the
610    Internet Society.
611
612
613
614
615 Weiler & Ihren            Expires July 24, 2006                [Page 11]
616 \f