1010 lines
36 KiB
Plaintext
1010 lines
36 KiB
Plaintext
|
||
|
||
Network Working Group B. Laurie
|
||
Internet-Draft G. Sisson
|
||
Expires: August 2, 2005 Nominet
|
||
R. Arends
|
||
Telematica Instituut
|
||
february 2005
|
||
|
||
|
||
DNSSEC Hash Authenticated Denial of Existence
|
||
draft-ietf-dnsext-nsec3-01
|
||
|
||
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 August 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 August 2, 2005 [Page 1]
|
||
|
||
Internet-Draft nsec3 february 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.
|
||
|
||
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. Including NSEC3 RRs in a Zone . . . . . . . . . . . . . . . . 9
|
||
6. Special Considerations . . . . . . . . . . . . . . . . . . . . 10
|
||
6.1 delegation points . . . . . . . . . . . . . . . . . . . . 10
|
||
6.1.1 Unsigned Delegations . . . . . . . . . . . . . . . . . 11
|
||
6.2 Additional Complexity Caused by Wildcards . . . . . . . . 11
|
||
6.3 Salting . . . . . . . . . . . . . . . . . . . . . . . . . 12
|
||
6.4 Hash Collision . . . . . . . . . . . . . . . . . . . . . . 12
|
||
6.4.1 Avoiding Hash Collisions during generation . . . . . . 12
|
||
6.4.2 Second Preimage Requirement Analysis . . . . . . . . . 12
|
||
6.4.3 Possible Hash Value Truncation Method . . . . . . . . 13
|
||
7. Performance Considerations . . . . . . . . . . . . . . . . . . 13
|
||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13
|
||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 14
|
||
10. Requirements notation . . . . . . . . . . . . . . . . . . . 14
|
||
11. Security Considerations . . . . . . . . . . . . . . . . . . 14
|
||
A. Example Zone . . . . . . . . . . . . . . . . . . . . . . . . . 14
|
||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
|
||
|
||
|
||
|
||
Laurie, et al. Expires August 2, 2005 [Page 2]
|
||
|
||
Internet-Draft nsec3 february 2005
|
||
|
||
|
||
12.1 Normative References . . . . . . . . . . . . . . . . . . . . 15
|
||
12.2 Informative References . . . . . . . . . . . . . . . . . . . 16
|
||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 16
|
||
Intellectual Property and Copyright Statements . . . . . . . . 18
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Laurie, et al. Expires August 2, 2005 [Page 3]
|
||
|
||
Internet-Draft nsec3 february 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 August 2, 2005 [Page 4]
|
||
|
||
Internet-Draft nsec3 february 2005
|
||
|
||
|
||
over the original (unmodified) ownername, this result is referred 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 August 2, 2005 [Page 5]
|
||
|
||
Internet-Draft nsec3 february 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 behaviour is identical to NSEC behaviour.
|
||
|
||
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 August 2, 2005 [Page 6]
|
||
|
||
Internet-Draft nsec3 february 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 August 2, 2005 [Page 7]
|
||
|
||
Internet-Draft nsec3 february 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 interpreted 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 August 2, 2005 [Page 8]
|
||
|
||
Internet-Draft nsec3 february 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 non-existence 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. Including NSEC3 RRs in a Zone
|
||
|
||
Each owner name in the zone which has authoritative data or a secured
|
||
|
||
|
||
|
||
Laurie, et al. Expires August 2, 2005 [Page 9]
|
||
|
||
Internet-Draft nsec3 february 2005
|
||
|
||
|
||
delegation point NS RRset MUST have an NSEC3 resource record.
|
||
|
||
An unsecured delegation point NS RRset MAY have an NSEC3 resource
|
||
record. This is different from NSEC records where an unsecured
|
||
delegation point NS RRset MUST have an NSEC record.
|
||
|
||
The TTL value for any NSEC3 RR SHOULD be the same as the minimum TTL
|
||
value field in the zone SOA RR.
|
||
|
||
The type bitmap of every NSEC3 resource record in a signed zone MUST
|
||
indicate the presence of both the NSEC3 record itself and its
|
||
corresponding RRSIG record.
|
||
|
||
The bitmap for the NSEC3 RR at a delegation point requires special
|
||
attention. Bits corresponding to the delegation NS RRset and any
|
||
RRsets for which the parent zone has authoritative data MUST be set;
|
||
bits corresponding to any non-NS RRset for which the parent is not
|
||
authoritative MUST be clear.
|
||
|
||
The following steps describe the proper construction of NSEC3
|
||
records.
|
||
1. Sort the zone in canonical order.
|
||
2. For each unique original owner name, add a NSEC3 RRset, where the
|
||
ownername of the NSEC3 RR is the hashed equivalent of the
|
||
original owner name, prepended to the zone name.
|
||
3. For each RRset at the original owner, set the corresponding bit
|
||
in the type bit map. If the RRset signifies an unsecured
|
||
delegation point, and the policy is to have Authoritative Only
|
||
RRsets, mark this NSEC3 RR.
|
||
4. If the difference in labels between the apex and the original
|
||
ownername is greater then 1, additional NSEC3 need to be added
|
||
for every intermediate label level between the apex and the
|
||
original ownername.
|
||
5. sort the set of NSEC3 RRs.
|
||
6. In each NSEC3 RR, insert the Next Hashed Ownername. If the next
|
||
hashed ownername is a marked NSEC3 (from step 3), delete the
|
||
marked NSEC3 from the zone, set the Authoritative Only bit in the
|
||
current NSEC3 RRs, and repeat this step. The last NSEC3 in the
|
||
zone will contain the value of the first NSEC3 in the zone.
|
||
|
||
6. Special Considerations
|
||
|
||
The following paragraphs clarify specific behaviour explain special
|
||
considerations for implementations.
|
||
|
||
6.1 delegation points
|
||
|
||
This proposal introduces the Authoritative Only Flag which indicates
|
||
|
||
|
||
|
||
Laurie, et al. Expires August 2, 2005 [Page 10]
|
||
|
||
Internet-Draft nsec3 february 2005
|
||
|
||
|
||
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 behaviour when the flag value is
|
||
1.
|
||
|
||
6.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.
|
||
|
||
6.2 Additional Complexity Caused by Wildcards
|
||
|
||
If a wildcard ownername appears in a zone, the wildcard label ("*")
|
||
|
||
|
||
|
||
Laurie, et al. Expires August 2, 2005 [Page 11]
|
||
|
||
Internet-Draft nsec3 february 2005
|
||
|
||
|
||
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 non-existence must be shown for all enclosers that
|
||
could be closer.
|
||
|
||
6.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.
|
||
|
||
6.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.
|
||
|
||
6.4.1 Avoiding Hash Collisions during generation
|
||
|
||
During generation of NSEC3 RRs, hash values are supposedly unique.
|
||
In the (academic) case of a collision occurring, 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.
|
||
|
||
6.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
|
||
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
|
||
|
||
|
||
|
||
Laurie, et al. Expires August 2, 2005 [Page 12]
|
||
|
||
Internet-Draft nsec3 february 2005
|
||
|
||
|
||
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.
|
||
|
||
6.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.
|
||
|
||
7. 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.
|
||
|
||
8. 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.
|
||
Values 0, 2-126 are marked as Reserved For Future Use. Value 127 is
|
||
marked as Experimental.
|
||
|
||
|
||
|
||
|
||
Laurie, et al. Expires August 2, 2005 [Page 13]
|
||
|
||
Internet-Draft nsec3 february 2005
|
||
|
||
|
||
9. 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 non-existence of the colliding domain - however, this is
|
||
fantastically unlikely, and, in any case, DNSSEC already relies on
|
||
SHA-1 to not collide.
|
||
|
||
10. 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].
|
||
|
||
11. 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 August 2, 2005 [Page 14]
|
||
|
||
Internet-Draft nsec3 february 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
|
||
|
||
|
||
12. References
|
||
|
||
12.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 August 2, 2005 [Page 15]
|
||
|
||
Internet-Draft nsec3 february 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.
|
||
|
||
12.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 August 2, 2005 [Page 16]
|
||
|
||
Internet-Draft nsec3 february 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 August 2, 2005 [Page 17]
|
||
|
||
Internet-Draft nsec3 february 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 August 2, 2005 [Page 18]
|
||
|
||
|