Network Working Group                                          B. Laurie
Internet-Draft                                                 G. Sisson
Expires: July 2, 2005                                            Nominet
                                                               R. Arends
                                                    Telematica Instituut
                                                            january 2005

             DNSSEC Hash Authenticated Denial of Existence
                       draft-ietf-dnsext-nsec3-00

Status of this Memo

   This document is an Internet-Draft and is subject to all provisions
   of section 3 of RFC 3667.  By submitting this Internet-Draft, each
   author represents that any applicable patent or other IPR claims of
   which he or she is aware have been or will be disclosed, and any of
   which he or she become aware will be disclosed, in accordance with
   RFC 3668.

   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 on July 2, 2005.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   The DNS Security (DNSSEC) NSEC resource record (RR) is intended to be
   used to provide authenticated denial of existence of DNS ownernames
   and types; however, it permits any user to traverse a zone and obtain
   a listing of all ownernames.


Laurie, et al.            Expires July 2, 2005                  [Page 1]


Internet-Draft                   nsec3                      january 2005

   A complete zone file can be used either directly as a source of
   probable e-mail addresses for spam, or indirectly as a key for
   multiple WHOIS queries to reveal registrant data which many
   registries (particularly in Europe) may be under strict legal
   obligations to protect.  Many registries therefore prohibit copying
   of their zone file; however the use of NSEC RRs makes renders
   policies unenforceable.

   This document proposes a scheme which obscures original ownernames
   while permitting authenticated denial of existence of non-existent
   names.  Non-authoritative delegation point NS RR types may be
   excluded.




















Laurie, et al.            Expires July 2, 2005                  [Page 2]


Internet-Draft                   nsec3                      january 2005

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
     1.1   Rationale  . . . . . . . . . . . . . . . . . . . . . . . .  4
     1.2   Reserved Words . . . . . . . . . . . . . . . . . . . . . .  4
     1.3   Terminology  . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  The NSEC3 Resource Record  . . . . . . . . . . . . . . . . . .  5
     2.1   NSEC3 RDATA Wire Format  . . . . . . . . . . . . . . . . .  5
       2.1.1   The Authoritative Only Flag Field  . . . . . . . . . .  6
       2.1.2   The Hash Function Field  . . . . . . . . . . . . . . .  6
       2.1.3   The Iterations Field . . . . . . . . . . . . . . . . .  6
       2.1.4   The Salt Length Field  . . . . . . . . . . . . . . . .  6
       2.1.5   The Salt Field . . . . . . . . . . . . . . . . . . . .  6
       2.1.6   The Next Hashed Ownername Field  . . . . . . . . . . .  7
       2.1.7   The list of Type Bit Map(s) Field  . . . . . . . . . .  7
     2.2   The NSEC3 RR Presentation Format . . . . . . . . . . . . .  8
   3.  Creating Additional NSEC3 RR for Empty Non Terminals . . . . .  9
   4.  Calculation of the Hash  . . . . . . . . . . . . . . . . . . .  9
   5.  Special Considerations . . . . . . . . . . . . . . . . . . . .  9
     5.1   delegation points  . . . . . . . . . . . . . . . . . . . . 10
       5.1.1   Unsigned Delegations . . . . . . . . . . . . . . . . . 10
     5.2   Additional Complexity Caused by Wildcards  . . . . . . . . 11
     5.3   Salting  . . . . . . . . . . . . . . . . . . . . . . . . . 11
     5.4   Hash Collision . . . . . . . . . . . . . . . . . . . . . . 11
       5.4.1   Avoiding Hash Collisions during generation . . . . . . 11
       5.4.2   Second Preimage Requirement Analysis . . . . . . . . . 11
       5.4.3   Possible Hash Value Truncation Method  . . . . . . . . 12
   6.  Performance Considerations . . . . . . . . . . . . . . . . . . 12
   7.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 12
   8.  Security Considerations  . . . . . . . . . . . . . . . . . . . 13
   9.  Requirements notation  . . . . . . . . . . . . . . . . . . . . 13
   10.   Security Considerations  . . . . . . . . . . . . . . . . . . 13
   A.  Example Zone . . . . . . . . . . . . . . . . . . . . . . . . . 13
   11.   References . . . . . . . . . . . . . . . . . . . . . . . . . 14
   11.1  Normative References . . . . . . . . . . . . . . . . . . . . 14
   11.2  Informative References . . . . . . . . . . . . . . . . . . . 15
       Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 15
       Intellectual Property and Copyright Statements . . . . . . . . 17







Laurie, et al.            Expires July 2, 2005                  [Page 3]


Internet-Draft                   nsec3                      january 2005

1.  Introduction

   The DNS Security Extensions (DNSSEC) introduced the NSEC Resource
   Record (RR) for Authenticated Denial of Existence.  This document
   introduces a new RR as an alternative to NSEC that provides measures
   against zone traversal and allows for gradual expansion of
   delegation-centric zones.

1.1  Rationale

   The DNS Security Extensions included the NSEC RR to provide
   authenticated denial of existence.  Though the NSEC RR meets the
   requirements for authenticated denial of Existence, it introduced a
   side-effect in that the contents of a zone can be enumerated.  This
   property introduces undesired policy issues.

   A second requirement was that the existence of all record types in a
   zone -including delegation point NS record types- can be accounted
   for, despite the fact that delegation point NS RRsets are not
   authoritative and not signed.  This requirement has a side-effect
   that the overhead of delegation centric signed zones is not related
   to the increase in security of subzones.  This requirement does not
   allow delegation centric zones size to grow in relation to the growth
   of signed subzones.

   In the past, solutions have been proposed as a measure against these
   side effects but at the time were regarded as secondary over the need
   to have a stable DNSSEC specification.  With (draft-vixie-dnssec-ter)
   a graceful transition path to future enhancements is introduced,
   while current DNSSEC deployment can continue.  This document
   accumulates measures against the side effects introduced by NSEC, and
   presents the NSEC3 Resource Record.

   The reader is assumed to be familiar with the basic DNS concepts
   described in RFC1034 [RFC1034], RFC1035 [RFC1035] and subsequent RFCs
   that update them:  RFC2136 [RFC2136], RFC2181 [RFC2181] and RFC2308
   [RFC2308].

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 [RFC2119].

1.3  Terminology

   In this document the term "original ownername" refers to a standard
   ownername.  Because this proposal uses the result of a hash function


Laurie, et al.            Expires July 2, 2005                  [Page 4]


Internet-Draft                   nsec3                      january 2005

   over the original (unmodified) ownername, this result is refered to
   as "hashed ownername".

2.  The NSEC3 Resource Record

   The NSEC3 RR provides Authenticated Denial of Existence for DNS
   Resource Record Sets.

   The NSEC3 Resource Record lists RR types present at the NSEC3 RR's
   original ownername.  It includes the next hashed ownername in the
   canonical ordering of the zone.  The complete set of NSEC3 RRs in a
   zone indicates which RRsets exist for the original ownername of the
   RRset and form a chain of hashed ownernames in the zone.  This
   information is used to provide authenticated denial of existence for
   DNS data, as described in RFC 2535 [RFC2535].  Unsigned delegation
   point NS RR sets can optionally be excluded.  To provide protection
   against zone traversal, the ownernames used in the NSEC3 RR are
   cryptographic hash-value prepended to the name of the zone.  The
   NSEC3 RR record indicates which Hash Function is used to construct to
   hash, which Salt is used, and how many iterations of the Hash
   Function are performed over the original ownername.

   The type value for the NSEC3 RR is XX.

   The NSEC3 RR RDATA format is class independent.

   The NSEC3 RR SHOULD have the same TTL value as the SOA minimum TTL
   field.  This is in the spirit of negative caching [RFC2308].

2.1  NSEC3 RDATA Wire Format

   The RDATA of the NSEC3 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |A|Hash Function|                  Iterations                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Salt Length  |                     Salt                      /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                     Next Hashed Ownername                     /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                         Type Bit Maps                         /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+




Laurie, et al.            Expires July 2, 2005                  [Page 5]


Internet-Draft                   nsec3                      january 2005

2.1.1  The Authoritative Only Flag Field

   The Authoritative Only Flag field indicates whether the Type Bit Maps
   include delegation point NS record types.

   If the flag is set to 1, the NS RR type bit for a delegation point
   ownername SHOULD be clear when the NSEC3 RR is generated.  The NS RR
   type bit MUST be ignored during processing of the NSEC3 RR.  The NS
   RR type bit has no meaning in this context (it is not authoritative),
   hence the NSEC3 does not contest the existence of a NS RR type record
   for this ownername.  When a delegation is not secured, there exist no
   DS RR type nor any other authoritative types for this delegation,
   hence the unsecured delegation has no NSEC3 record associated.
   Please see the Special Consideration section for implications for
   unsigned delegations.

   If the flag is set to 0, the NS RR type bit for a delegation point
   ownername MUST be set if the NSEC3 covers a delegation, even though
   the NS RR itself is not authoritative.  This implies that all
   delegations, signed or unsigned, have an NSEC3 record associated.
   This behavior is identical to NSEC behavior.

2.1.2  The Hash Function Field

   The Hash Function field identifies the cryptographic hash function
   used to construct the hash-value.

   This document defines Value 1 for SHA-1 and Value 127 for
   Experimental.  All other values are reserved.

   On reception, a resolver MUST discard an NSEC3 RR with an unknown
   Hash Function value.

2.1.3  The Iterations Field

   The Iterations field defines the number of times the hash has been
   iterated.  More iterations results in greater resiliency of the hash
   value against dictionary attacks, but at a higher cost for both the
   server and resolver.

2.1.4  The Salt Length Field

   The Salt Length Field defines the length of the salt in octets.

2.1.5  The Salt Field

   The salt field is not present when the Salt Length Field has a value
   of 0.


Laurie, et al.            Expires July 2, 2005                  [Page 6]


Internet-Draft                   nsec3                      january 2005

   The salt field is prepended to the original ownername before hashing
   in order to defend against precalculated dictionary attacks.

   The salt is not prepended during iterations of the hash function.

   The Salt field value MUST be identical for all NSEC3 RRs generated
   for the zone.  If the salt were different for each NSEC3 RR,
   collisions could occur where an NSEC3 denies the existence of
   existing RRs due to the application of different salt values.

2.1.6  The Next Hashed Ownername Field

   The Next Hashed Ownername Field contains the hash of the ownername of
   the next RR in the canonical ordering of the hashed ownernames of the
   zone.  The value of the Next Hashed Ownername Field in the last NSEC3
   record in the zone is the same as the ownername of the first NSEC3 RR
   in the zone in canonical order.

   A sender MUST NOT use DNS name compression on the Next Hashed
   Ownername field when transmitting an NSEC3 RR.

   Hashed ownernames of RRsets not authoritative for the given zone
   (such as glue records) MUST NOT be listed in the Hash of Next Domain
   Name unless at least one authoritative RRset exists at the same owner
   name.

2.1.7  The list of Type Bit Map(s) Field

   The Type Bit Maps field identifies the RRset types which exist at the
   NSEC3 RR's ownername.

   The Type bit for the NSEC3 and RRSIG MUST be set during generation,
   and MUST be ignored during processing.

   The RR type space is split into 256 window blocks, each representing
   the low-order 8 bits of the 16-bit RR type space.  Each block that
   has at least one active RR type is encoded using a single octet
   window number (from 0 to 255), a single octet bitmap length (from 1
   to 32) indicating the number of octets used for the window block's
   bitmap, and up to 32 octets (256 bits) of bitmap.

   Blocks are present in the NSEC3 RR RDATA in increasing numerical
   order.

   "|" denotes concatenation

   Type Bit Map(s) Field = ( Window Block # | Bitmap Length | Bitmap ) +


Laurie, et al.            Expires July 2, 2005                  [Page 7]


Internet-Draft                   nsec3                      january 2005

   Each bitmap encodes the low-order 8 bits of RR types within the
   window block, in network bit order.  The first bit is bit 0.  For
   window block 0, bit 1 corresponds to RR type 1 (A), bit 2 corresponds
   to RR type 2 (NS), and so forth.  For window block 1, bit 1
   corresponds to RR type 257, bit 2 to RR type 258.  If a bit is set to
   1, it indicates that an RRset of that type is present for the NSEC3
   RR's ownername.  If a bit is set to 0, it indicates that no RRset of
   that type is present for the NSEC3 RR's ownername.

   The RR type 2 (NS) is authoritative at the apex of a zone and is not
   authoritative at delegation points.  If the Authoritative Only Flag
   is set to 1, the delegation point NS RR type MUST NOT be included in
   the type bit maps.  If the Authoritative Only Flag is set to 0, the
   NS RR type at a delegation point MUST be included in the type bit
   maps.

   Since bit 0 in window block 0 refers to the non-existing RR type 0,
   it MUST be set to 0.  After verification, the validator MUST ignore
   the value of bit 0 in window block 0.

   Bits representing Meta-TYPEs or QTYPEs as specified in RFC 2929 [4]
   (section 3.1) or within the range reserved for assignment only to
   QTYPEs and Meta-TYPEs MUST be set to 0, since they do not appear in
   zone data.  If encountered, they must be ignored upon reading.

   Blocks with no types present MUST NOT be included.  Trailing zero
   octets in the bitmap MUST be omitted.  The length of each block's
   bitmap is determined by the type code with the largest numerical
   value, within that block, among the set of RR types present at the
   NSEC3 RR's actual ownername.  Trailing zero octets not specified MUST
   be interpretted as zero octets.

2.2  The NSEC3 RR Presentation Format

   The presentation format of the RDATA portion is as follows:

   The Authoritative Only Field is represented as an unsigned decimal
   integer.  The value are either 0 or 1.

   The Hash field is presented as the name of the hash or as an unsigned
   decimal integer.  The value has a maximum of 127.

   The Iterations field is presented as an unsigned decimal integer.

   The Salt Length field is not presented.

   The Salt field is represented as a sequence of case-insensitive
   hexadecimal digits.  Whitespace is not allowed within the sequence.


Laurie, et al.            Expires July 2, 2005                  [Page 8]


Internet-Draft                   nsec3                      january 2005

   The Salt Field is represented as 00 when the Salt Length field has
   value 0.

   The Hash of Next Domain Name field is represented as a sequence of
   case-insensitive base32 digits.  Whitespace is allowed within the
   sequence.

   The List of Type Bit Map(s) Field is represented as a sequence of RR
   type mnemonics.  When the mnemonic is not known, the TYPE
   representation as described in RFC 3597 [5] (section 5) MUST be used.

3.  Creating Additional NSEC3 RR for Empty Non Terminals

   In order to prove the nonexistence of a record that might be covered
   by a wildcard, it is necessary to prove the existence of its closest
   encloser.  A closest encloser might be an Empty Non Terminal.

   Additional NSEC3 RRs cover every existing intermediate label level.
   Additional NSEC3 RRs are identical in format to NSEC3 RRs that cover
   existing RRs in the zone.  The difference is that the type-bit-maps
   only indicate the existence of an NSEC3 RR and a RRSIG type.

4.  Calculation of the Hash

   Define H(x) to be the hash of x using the hash function selected by
   the NSEC3 record and || to indicate concatenation.  Then define:

   IH(salt,x,0)=H(x || salt)

   IH(salt,x,k)=H(IH(salt,x,k-1) || salt) if k > 0

   Then the calculated hash of an ownername is
   IH(salt,ownername,iterations-1), where the ownername is the canonical
   form.

   The canonical form of the ownername is the wire format of the
   ownername where:
   1.  The ownername is fully expanded (no DNS name compression) and
       fully qualified;
   2.  All uppercase US-ASCII letters are replaced by the corresponding
       lowercase US-ASCII letters;
   3.  If the ownername is a wildcard name, the ownername is in its
       original unexpanded form, including the "*" label (no wildcard
       substitution);

5.  Special Considerations

   The following paragraphs clarify specific behavior explain special


Laurie, et al.            Expires July 2, 2005                  [Page 9]


Internet-Draft                   nsec3                      january 2005

   considerations for implementations.

5.1  delegation points

   This proposal introduces the Authoritative Only Flag which indicates
   whether non authoritative delegation point NS records are included in
   the type bit Maps.  As discussed in paragraph 2.1.1, a flag value of
   0 indicates that the interpretation of the type bit maps is identical
   to NSEC records.

   The following subsections describe behavior when the flag value is 1.

5.1.1  Unsigned Delegations

   Delegation point NS records are not authoritative.  They are
   authoritative in the delegated zone.  No other data exists at the
   ownername of an unsigned delegation point.

   Since no authoritative data exist at this ownername, it is excluded
   from the NSEC3 chain.  This is an optimization since it relieves the
   zone of including an NSEC3 record and its associated signature for
   this name.

   An NSEC3 that denies existence of ownernames between X and X' with
   the Authoritative Only Flag set to 1 can not be used to proof
   presence nor absence of the delegation point NS records for unsigned
   delegations in the interval X, X'.  The Authoritative Only Flag
   effectively states No Contest on the presence of delegation point NS
   resource records.

   Since proof is absent, there exists a new attack vector.  Unsigned
   delegation point NS records can be deleted during a man in the middle
   attack, effectively denying existence of the delegation.  This is a
   form of Denial of Service, where the victim has no information it is
   under attack, since all signatures are valid and the fabricated
   response form is a known type of response.

   The only possible mitigation is to either not use this method, hence
   proving existence or absence of unsigned delegations, or signing the
   delegated zone, changing the unsigned delegation into a signed
   delegation.

   A second attack vector exists in that an adversary is able to
   successfully fabricate a response claiming a not existent delegation
   to exist, though unsigned.

   The only possible mitigation is to either not use this method, hence
   proving absence of unsigned delegations.


Laurie, et al.            Expires July 2, 2005                 [Page 10]


Internet-Draft                   nsec3                      january 2005

5.2  Additional Complexity Caused by Wildcards

   If a wildcard ownername appears in a zone, the wildcard label ("*")
   is treated as a literal symbol and is treated in the same way as any
   other ownername for purposes of generating NSEC3 RRs.  RFC 2535
   [RFC2525] describes the impact of wildcards on authenticated denial
   of existence.

   In order to prove there are no wildcards for a domain, as well as no
   RRs that match directly, an RR must be shown for the closest
   encloser, and nonexistence must be shown for all enclosers that could
   be closer.

5.3  Salting

   Augmenting original ownernames with salt before hashing increases the
   cost of a dictionary of pre-generated hash-values.  For every bit of
   salt, the cost of the dictionary doubles.  The NSEC3 RR can use
   maximum 2040 bits of salt, multiplying the cost by 2^2040.

   The salt value for each NSEC3 RR MUST be equal for a single version
   of the zone.

5.4  Hash Collision

   Hash collisions occur when different messages have the same hash
   value.  The expected number of domain names needed to give a 1 in 2
   chance of a single collision is about 2^80.  Though this probability
   is extremely low, the following paragraphs deal with avoiding
   collisions and assessing possible damage in the event of an attack
   using Hash collisions.

5.4.1  Avoiding Hash Collisions during generation

   During generation of NSEC3 RRs, hash values are supposedly unique.
   In the (academic) case of a collision occuring, an alternative salt
   SHOULD be chosen and all hash values SHOULD be regenerated.

   If hash values are not regenerated on collision, the NSEC3 RR MUST
   list all authoritative RR types that exist for both owners, to avoid
   a replay attack, spoofing an existing type as non-existent.

5.4.2  Second Preimage Requirement Analysis

   A collision resistant hash function has a second-preimage resistance
   property.  The second-preimage resistance property means that it is
   computationally infeasible to find another message with the same hash
   value as a given message, i.e.  given preimage X, to find a second


Laurie, et al.            Expires July 2, 2005                 [Page 11]


Internet-Draft                   nsec3                      january 2005

   preimage X' <> X such that hash(X) = hash(X').  The probability of
   finding a second preimage is 1 in 2^160 for SHA-1 on average.  To
   mount an attack using an existing NSEC3 RR, an adversary needs to
   find a second preimage.

   Assuming an adversary is capable of mounting such an extreme attack,
   the actual damage is that a response message can be generated which
   claims that a certain QNAME (i.e.  the second pre-image) does exist,
   while in reality QNAME does not exist (a false positive), which will
   either cause a security aware resolver to re-query for the
   non-existent name, or to fail the initial query.  Note that the
   adversary can't mount this attack on an existing name but only on a
   name that the adversary can't choose and does not yet exist.

5.4.3  Possible Hash Value Truncation Method

   The previous sections outlined the low probability and low impact of
   a second-preimage attack.  When impact and probability are low, while
   space in a DNS message is costly, truncation is tempting.  Truncation
   might be considered to allow for shorter ownernames and rdata for
   hashed labels.  In general, if a cryptographic hash is truncated to n
   bits, then the expected number of domains required to give a 1 in 2
   probability of a single collision is approximately 2^(n/2) and the
   work factor to produce a second preimage resistance is 2^n.

   An extreme hash value truncation would be truncating to the shortest
   possible unique label value.  Considering that hash values are
   presented in base32, which represents 5 bits per label character,
   truncation must be done on a 5 bit boundary.  This would be unwise,
   since the work factor to produce collisions would then approximate
   the size of the zone.

   Though the mentioned truncation can be maximized to a certain
   extreme, the probability of collision increases exponentially for
   every truncated bit.  Given the low impact of hash value collisions
   and limited space in DNS messages, the balance between truncation
   profit and collision damage may be determined by local policy.

6.  Performance Considerations

   Iterated hashes will obviously impose a performance penalty on both
   authoritative servers and resolvers.  Therefore, the number of
   iterations should be carefully chosen.

7.  IANA Considerations

   IANA has to create a new registry for NSEC3 Hash Functions.  The
   range for this registry is 0-127.  Value 1 is marked as SHA-1.


Laurie, et al.            Expires July 2, 2005                 [Page 12]


Internet-Draft                   nsec3                      january 2005

   Values 0, 2-126 are marked as Reserved For Future Use.  Value 127 is
   marked as Experimental.

8.  Security Considerations

   The NSEC3 records are still susceptible to dictionary attacks (i.e.
   the attacker retrieves all the NSEC3 records, then calculates the
   hashes of all likely domain names, comparing against the hashes found
   in the NSEC3 records, and thus enumerating the zone).  These are
   substantially more expensive than traversing the original NSEC
   records would have been, and in any case, such an attack could also
   be used directly against the name server itself by performing queries
   for all likely names.  The expense of this attack can be chosen by
   setting the iterations in the NSEC3 RR.

   High-value domains are also susceptible to a precalculated dictionary
   attack - that is, a list of hashes for all likely names is computed
   once, then NSEC3 is scanned periodically and compared against the
   precomputed hashes.  This attack is prevented by changing the salt on
   a regular basis.

   Walking the NSEC3 RRs will reveal the total number of records in the
   zone, and also what types they are.  This could be mitigated by
   adding dummy entries, but certainly an upper limit can always be
   found.

   Hash collisions may occur.  If they do, it will be impossible to
   prove the nonexistence of the colliding domain - however, this is
   fantastically unlikely, and, in any case, DNSSEC already relies on
   SHA-1 to not collide.

9.  Requirements notation

   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 [RFC2119].

10.  Security Considerations

Appendix A.  Example Zone

   This is a zone showing its NSEC3 records.  They can also be used as
   test vectors for the hash algorithm.  RRSIG records have been elided.




Laurie, et al.            Expires July 2, 2005                 [Page 13]


Internet-Draft                   nsec3                      january 2005

   example.com. 1000    IN SOA  localhost.
        postmaster.localhost.example.com. (
                                1          ; serial
                                3600       ; refresh (1 hour)
                                1800       ; retry (30 minutes)
                                604800     ; expire (1 week)
                                3600       ; minimum (1 hour)
                                )
                1000    NS      ns1.example.com.
                1000    NS      ns2.example.com.
   f519593e82969842a136e0f47814c881fa163833.example.com. 3600 IN NSEC3 \
           SHA-1 200 31323334 4EF8239D95C18403A509D7C336A5D0FA48FD1107 \
           NS SOA RRSIG DNSKEY NSEC3
   a.example.com.               1000    IN A    1.2.3.4
                        1000    IN A    1.2.3.5
                        1000    TXT     "An example"
   bfe6ea21dee9d228889ae11fa58c4bd551d15801.example.com. 3600 IN NSEC3 \
           SHA-1 200 31323334 F519593E82969842A136E0F47814C881FA163833 \
           A TXT RRSIG NSEC3
   b.example.com.               1000    IN A    1.2.3.7
   83c06d3b7d01fbc9576c71af2bec1a1163435153.example.com. 3600 IN NSEC3 \
           SHA-1 200 31323334 A33559360EECB02F36B5C1B72C109126CA4F5A0D \
           A RRSIG NSEC3
   a.b.c.example.com.   1000    IN A    1.2.3.6
   a33559360eecb02f36b5c1b72c109126ca4f5a0d.example.com. 3600 IN NSEC3 \
           SHA-1 200 31323334 BFE6EA21DEE9D228889AE11FA58C4BD551D15801 \
           A RRSIG NSEC3
   ns1.example.com.     1000    IN A    1.2.3.8
   4ef8239d95c18403a509d7c336a5d0fa48fd1107.example.com. 3600 IN NSEC3 \
           SHA-1 200 31323334 50016B56FD2F0FFC7B563C50FAF0E34259763BBB \
           A RRSIG NSEC3
   ns2.example.com.     1000    IN A    1.2.3.9
   50016b56fd2f0ffc7b563c50faf0e34259763bbb.example.com. 3600 IN NSEC3 \
           SHA-1 200 31323334 83C06D3B7D01FBC9576C71AF2BEC1A1163435153 \
           A RRSIG NSEC3

11.  References

11.1  Normative References

   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
              STD 13, RFC 1034, November 1987.

   [RFC1035]  Mockapetris, P., "Domain names - implementation and
              specification", STD 13, RFC 1035, November 1987.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate


Laurie, et al.            Expires July 2, 2005                 [Page 14]


Internet-Draft                   nsec3                      january 2005

              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2136]  Vixie, P., Thomson, S., Rekhter, Y. and J. Bound, "Dynamic
              Updates in the Domain Name System (DNS UPDATE)", RFC 2136,
              April 1997.

   [RFC2181]  Elz, R. and R. Bush, "Clarifications to the DNS
              Specification", RFC 2181, July 1997.

   [RFC2308]  Andrews, M., "Negative Caching of DNS Queries (DNS
              NCACHE)", RFC 2308, March 1998.

   [RFC2535]  Eastlake, D., "Domain Name System Security Extensions",
              RFC 2535, March 1999.

11.2  Informative References

   [RFC2026]  Bradner, S., "The Internet Standards Process -- Revision
              3", BCP 9, RFC 2026, October 1996.

   [RFC2418]  Bradner, S., "IETF Working Group Guidelines and
              Procedures", BCP 25, RFC 2418, September 1998.

   [rollover]
              Ihren, J., Kolkman, O. and B. Manning, "An In-Band
              Rollover Algorithm and a Out-Of-Band Priming Method  for
              DNS Trust Anchors.", July 2004.

Authors' Addresses

   Ben Laurie
   Nominet
   17 Perryn Road
   London  W3 7LR
   England

   Phone: +44 (20) 8735 0686
   EMail: ben@algroup.co.uk

   Geoffrey Sisson
   Nominet




Laurie, et al.            Expires July 2, 2005                 [Page 15]


Internet-Draft                   nsec3                      january 2005

   Roy Arends
   Telematica Instituut
   Brouwerijstraat 1
   7523 XC  Enschede
   The Netherlands

   Phone: +31 (53) 485 0485
   EMail: roy.arends@telin.nl






















Laurie, et al.            Expires July 2, 2005                 [Page 16]


Internet-Draft                   nsec3                      january 2005

Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM 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.

Copyright Statement

   Copyright (C) The Internet Society (2005).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.

Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.


Laurie, et al.            Expires July 2, 2005                 [Page 17]