One document matched: draft-laurie-dnsext-nsec2v2-00.txt
Network Working Group B. Laurie
Internet-Draft G. Sission
Expires: April 1, 2005 Nominet
October 2004
DNSSEC NSEC2 Owner and RDATA Format
draft-laurie-dnsext-nsec2v2-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 April 1, 2005.
Copyright Notice
Copyright (C) The Internet Society (2004).
Abstract
The DNS Security (DNSSEC) NSEC resource record (RR) is intended to be
used to provide authenticated denial of existence of DNS owner names
and types; however, it also permits any user to obtain a listing of
all DNS owner names in a zone. This can accomplished via successive
DNS queries for all NSEC RRs in that zone.
A complete zone file can be used either directly as a source of
Laurie & Sission Expires April 1, 2005 [Page 1]
Internet-Draft nsec2 October 2004
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 an alternate scheme which hides owner names
while permitting authenticated denial of existence of non-existent
names. The scheme uses two new RR types: NSEC2 and EXIST.
Table of Contents
1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. The NSEC2 Resource Record . . . . . . . . . . . . . . . . . . 3
2.1 NSEC2 RDATA Wire Format . . . . . . . . . . . . . . . . . 3
2.1.1 The Hash Field . . . . . . . . . . . . . . . . . . . . 3
2.1.2 The Iterations field . . . . . . . . . . . . . . . . . 4
2.1.3 The Salt field . . . . . . . . . . . . . . . . . . . . 4
2.1.4 The Hash of Next Domain Name Field . . . . . . . . . . 4
2.1.5 The list of Type Bit Map(s) Field . . . . . . . . . . 4
2.2 Owner Name Wire Format . . . . . . . . . . . . . . . . . . 5
2.3 The NSEC2 RR Presentation Format . . . . . . . . . . . . . 5
3. The EXIST Resource Record . . . . . . . . . . . . . . . . . . 5
4. Calculation of the Hash . . . . . . . . . . . . . . . . . . . 6
4.1 Test Vectors . . . . . . . . . . . . . . . . . . . . . . . 6
5. Complications Caused by Wildcards . . . . . . . . . . . . . . 6
6. Performance Considerations . . . . . . . . . . . . . . . . . . 7
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7
8. Security Considerations . . . . . . . . . . . . . . . . . . . 7
9. Requirements notation . . . . . . . . . . . . . . . . . . . . 8
10. Security Considerations . . . . . . . . . . . . . . . . . . 8
A. Example Zone . . . . . . . . . . . . . . . . . . . . . . . . . 8
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
11.1 Normative References . . . . . . . . . . . . . . . . . . . . 9
11.2 Informative References . . . . . . . . . . . . . . . . . . . 9
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 10
Intellectual Property and Copyright Statements . . . . . . . . 11
Laurie & Sission Expires April 1, 2005 [Page 2]
Internet-Draft nsec2 October 2004
1. Terminology
Because the owner name must be modified (by hashing), the unmodified
owner name is referred to as the "actual owner name" in this draft.
2. The NSEC2 Resource Record
The NSEC2 resource record lists two separate things: the SHA-1 hash
of the owner name of the next RRset in the canonical ordering of the
zone, and the set of RR types present at the NSEC2 RR's actual owner
name. The complete set of NSEC2 RRs in a zone both indicate which
RRsets exist in a zone and also form a chain of hashed owner names in
the zone. This information is used to provide authenticated denial
of existence for DNS data, as described in RFC 2535 [RFC2535], except
that the range covered by the returned RR will span consist of two
hashed owner names between which the hash of the queried record would
lie in canonical order.
The type value for the NSEC2 RR is ??.
The NSEC2 RR RDATA format is class independent and defined for all
classes.
The NSEC2 RR SHOULD have the same TTL value as the SOA minimum TTL
field. This is in the spirit of negative caching [RFC2308].
2.1 NSEC2 RDATA Wire Format
The RDATA of the NSEC2 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hash | Iterations |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Salt |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Hash of Next Domain Name /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ List of Type Bit Map(s) /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.1.1 The Hash Field
The Hash Type field identifies the hash algorithm used to hash the
owner name. Currently only one value is defined, 1, for the SHA-1
algorithm. All other values are reserved.
Laurie & Sission Expires April 1, 2005 [Page 3]
Internet-Draft nsec2 October 2004
2.1.2 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 to dictionary attacks, but at a higher cost.
2.1.3 The Salt field
The salt is prepended to the value to be hashed in order to defend
against precalculated dictionary attacks.
2.1.4 The Hash of Next Domain Name Field
The Hash of Next Domain Name field contains the hash of the owner
name of the next RR in the canonical ordering of the hashed names of
the zone. The value of the Hash of Next Domain Name field in the
last NSEC2 record in the zone is the hash of the owner of the first
NSEC2 RR in the zone.
A sender MUST NOT use DNS name compression on the Next Domain Name
field when transmitting an NSEC2 RR. [Not sure if this is still
required]
Hashed owner names 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.5 The list of Type Bit Map(s) Field
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 NSEC2 RR RDATA in increasing numerical
order.
"|" denotes concatenation
Type Bit Map(s) Field = ( Window Block # | Bitmap Length | Bitmap ) +
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
Laurie & Sission Expires April 1, 2005 [Page 4]
Internet-Draft nsec2 October 2004
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 NSEC2
RR's owner name. If a bit is set to 0, it indicates that no RRset of
that type is present for the NSEC2 RR's owner name.
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
NSEC2 RR's actual owner name. Trailing zero octets not specified
MUST be interpretted as zero octets.
2.2 Owner Name Wire Format
The owner name of the NSEC2 RR will be the SHA-1 hash represented in
hexadecimal of the owner's full domain name instead of the name
itself. There is no conflict if this happens to coincide with a real
domain name, since these hashed names will only appear in NSEC2 RRs.
2.3 The NSEC2 RR Presentation Format
The presentation format of the RDATA portion is as follows:
The Hash field is presented as the name of the hash.
The Iterations field is presented as a decimal number.
The Salt field is presented as a hexadecimal number.
The Hash of Next Domain Name field is represented as a hexadecimal
number.
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. The EXIST Resource Record
In order to prove the nonexistence of a record that might be covered
Laurie & Sission Expires April 1, 2005 [Page 5]
Internet-Draft nsec2 October 2004
by a wildcard, it is necessary to prove the existence of its closest
encloser. This record does that. Its owner is the closest encloser.
It has no RDATA. If there is another RR that proves the existence of
the closest encloser, this SHOULD be used instead of an EXIST record.
EXIST records SHOULD NOT be returned in response to ANY queries (but
note that returning them does not do any real harm, since a query for
a domain within the existing domain will reveal it in any case).
4. Calculation of the Hash
Define H(x) to be the hash of x using the hash function selected by
the NSEC2 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 a name is IH(salt,name,iterations-1).
4.1 Test Vectors
TBD
5. Complications Caused by Wildcards
If a wildcard owner name appears in a zone, the wildcard label ("*")
is treated as a literal symbol and is treated in the same way as any
other owner name for purposes of generating NSEC2 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. If there is no other RR for the closest encloser, the
EXIST RR MUST be used.
To illustrate, suppose a.b.c.d.e. does not exist in the d.e. zone,
and c.d.e. is the closest encloser, the proof would consist of:
a) Nonexistence of a.b.c.d.e (NSEC2)
b) Nonexistence of b.c.d.e (NSEC2)
c) Existence of c.d.e (EXIST or other RR)
d) Nonexistence of *.c.d.e (NSEC2)
Laurie & Sission Expires April 1, 2005 [Page 6]
Internet-Draft nsec2 October 2004
6. Performance Considerations
Iterated hashes will obviously impose a performance penalty on both
servers and clients. However, servers already have to do public key
signatures for every record, which is far more costly than an
iterated hash (unless impractically large values are chosen for
iterations). Although checking a public key signature is
significantly cheaper than signing, at least for RSA, individual
clients should not be frequently required to check nonexistence of
RRs, and in any case values for iterations can still be chosen to
make the cost small compared to the cost of the signature checking.
[Note: clients may want limit the number of iterations (and fail if
too high) to avoid apparently hanging]
[Example: on a Pentium using OpenSSL, at least 1000 iterations of
SHA-1 can be done in the time it takes to check a 2048 bit RSA
signature]
7. IANA Considerations
Type values for NSEC2 and EXIST will have to be assigned. Value(s)
for hash algorithm(s) will have to be assigned.
8. Security Considerations
The NSEC2 records are still susceptible to dictionary attacks (i.e.
the attacker retrieves all the NSEC2 records, then calculates the
hashes of all likely domain names, comparing against the hashes found
in the NSEC2 records, and thus enumerating the zone). These are
substantially more expensive than traversing the original NSEC2
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 NSEC2 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 NSEC2 is scanned periodically and compared against the
precomputed hashes. This attack is prevented by changing the salt on
a regular basis.
EXIST records may leak information. If a.b.c.d.e exists and
f.b.c.d.e does not, then a query for f.b.c.d.e will reveal the fact
that b.c.d.e exists, even if there is no RR for it. In practice,
this rarely matters, since usually b.c.d.e will be a delegated domain
and hence have at least an SOA record.
Laurie & Sission Expires April 1, 2005 [Page 7]
Internet-Draft nsec2 October 2004
Walking the NSEC2 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 NSEC2 records. They can also be used as
test vectors for the hash algorithm. RRSIG records have been elided.
Laurie & Sission Expires April 1, 2005 [Page 8]
Internet-Draft nsec2 October 2004
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 NSEC2 \
SHA-1 200 31323334 4EF8239D95C18403A509D7C336A5D0FA48FD1107 \
NS SOA RRSIG DNSKEY NSEC2
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 NSEC2 \
SHA-1 200 31323334 F519593E82969842A136E0F47814C881FA163833 \
A TXT RRSIG NSEC2
b.example.com. 1000 IN A 1.2.3.7
83c06d3b7d01fbc9576c71af2bec1a1163435153.example.com. 3600 IN NSEC2 \
SHA-1 200 31323334 A33559360EECB02F36B5C1B72C109126CA4F5A0D \
A RRSIG NSEC2
a.b.c.example.com. 1000 IN A 1.2.3.6
a33559360eecb02f36b5c1b72c109126ca4f5a0d.example.com. 3600 IN NSEC2 \
SHA-1 200 31323334 BFE6EA21DEE9D228889AE11FA58C4BD551D15801 \
A RRSIG NSEC2
ns1.example.com. 1000 IN A 1.2.3.8
4ef8239d95c18403a509d7c336a5d0fa48fd1107.example.com. 3600 IN NSEC2 \
SHA-1 200 31323334 50016B56FD2F0FFC7B563C50FAF0E34259763BBB \
A RRSIG NSEC2
ns2.example.com. 1000 IN A 1.2.3.9
50016b56fd2f0ffc7b563c50faf0e34259763bbb.example.com. 3600 IN NSEC2 \
SHA-1 200 31323334 83C06D3B7D01FBC9576C71AF2BEC1A1163435153 \
A RRSIG NSEC2
11. References
11.1 Normative References
[dnssecbis-protocol]
"DNSSECbis Protocol Definitions", BCP XX, RFC XXXX, Some
Month 2004.
11.2 Informative References
[RFC2026] Bradner, S., "The Internet Standards Process -- Revision
Laurie & Sission Expires April 1, 2005 [Page 9]
Internet-Draft nsec2 October 2004
3", BCP 9, RFC 2026, October 1996.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[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 & Sission Expires April 1, 2005 [Page 10]
Internet-Draft nsec2 October 2004
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 (2004). 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 & Sission Expires April 1, 2005 [Page 11]
| PAFTECH AB 2003-2026 | 2026-05-01 17:41:05 |