2972 lines
128 KiB
Plaintext
2972 lines
128 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Network Working Group R. Arends
|
|||
|
Request for Comments: 4035 Telematica Instituut
|
|||
|
Obsoletes: 2535, 3008, 3090, 3445, 3655, 3658, R. Austein
|
|||
|
3755, 3757, 3845 ISC
|
|||
|
Updates: 1034, 1035, 2136, 2181, 2308, 3225, M. Larson
|
|||
|
3007, 3597, 3226 VeriSign
|
|||
|
Category: Standards Track D. Massey
|
|||
|
Colorado State University
|
|||
|
S. Rose
|
|||
|
NIST
|
|||
|
March 2005
|
|||
|
|
|||
|
|
|||
|
Protocol Modifications for the DNS Security Extensions
|
|||
|
|
|||
|
Status of This Memo
|
|||
|
|
|||
|
This document specifies an Internet standards track protocol for the
|
|||
|
Internet community, and requests discussion and suggestions for
|
|||
|
improvements. Please refer to the current edition of the "Internet
|
|||
|
Official Protocol Standards" (STD 1) for the standardization state
|
|||
|
and status of this protocol. Distribution of this memo is unlimited.
|
|||
|
|
|||
|
Copyright Notice
|
|||
|
|
|||
|
Copyright (C) The Internet Society (2005).
|
|||
|
|
|||
|
Abstract
|
|||
|
|
|||
|
This document is part of a family of documents that describe the DNS
|
|||
|
Security Extensions (DNSSEC). The DNS Security Extensions are a
|
|||
|
collection of new resource records and protocol modifications that
|
|||
|
add data origin authentication and data integrity to the DNS. This
|
|||
|
document describes the DNSSEC protocol modifications. This document
|
|||
|
defines the concept of a signed zone, along with the requirements for
|
|||
|
serving and resolving by using DNSSEC. These techniques allow a
|
|||
|
security-aware resolver to authenticate both DNS resource records and
|
|||
|
authoritative DNS error indications.
|
|||
|
|
|||
|
This document obsoletes RFC 2535 and incorporates changes from all
|
|||
|
updates to RFC 2535.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 1]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
Table of Contents
|
|||
|
|
|||
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
|||
|
1.1. Background and Related Documents . . . . . . . . . . . . 4
|
|||
|
1.2. Reserved Words . . . . . . . . . . . . . . . . . . . . . 4
|
|||
|
2. Zone Signing . . . . . . . . . . . . . . . . . . . . . . . . . 4
|
|||
|
2.1. Including DNSKEY RRs in a Zone . . . . . . . . . . . . . 5
|
|||
|
2.2. Including RRSIG RRs in a Zone . . . . . . . . . . . . . 5
|
|||
|
2.3. Including NSEC RRs in a Zone . . . . . . . . . . . . . . 6
|
|||
|
2.4. Including DS RRs in a Zone . . . . . . . . . . . . . . . 7
|
|||
|
2.5. Changes to the CNAME Resource Record. . . . . . . . . . 7
|
|||
|
2.6. DNSSEC RR Types Appearing at Zone Cuts. . . . . . . . . 8
|
|||
|
2.7. Example of a Secure Zone . . . . . . . . . . . . . . . . 8
|
|||
|
3. Serving . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
|
|||
|
3.1. Authoritative Name Servers . . . . . . . . . . . . . . . 9
|
|||
|
3.1.1. Including RRSIG RRs in a Response . . . . . . . 10
|
|||
|
3.1.2. Including DNSKEY RRs in a Response . . . . . . . 11
|
|||
|
3.1.3. Including NSEC RRs in a Response . . . . . . . . 11
|
|||
|
3.1.4. Including DS RRs in a Response . . . . . . . . . 14
|
|||
|
3.1.5. Responding to Queries for Type AXFR or IXFR . . 15
|
|||
|
3.1.6. The AD and CD Bits in an Authoritative Response. 16
|
|||
|
3.2. Recursive Name Servers . . . . . . . . . . . . . . . . . 17
|
|||
|
3.2.1. The DO Bit . . . . . . . . . . . . . . . . . . . 17
|
|||
|
3.2.2. The CD Bit . . . . . . . . . . . . . . . . . . . 17
|
|||
|
3.2.3. The AD Bit . . . . . . . . . . . . . . . . . . . 18
|
|||
|
3.3. Example DNSSEC Responses . . . . . . . . . . . . . . . . 19
|
|||
|
4. Resolving . . . . . . . . . . . . . . . . . . . . . . . . . . 19
|
|||
|
4.1. EDNS Support . . . . . . . . . . . . . . . . . . . . . . 19
|
|||
|
4.2. Signature Verification Support . . . . . . . . . . . . . 19
|
|||
|
4.3. Determining Security Status of Data . . . . . . . . . . 20
|
|||
|
4.4. Configured Trust Anchors . . . . . . . . . . . . . . . . 21
|
|||
|
4.5. Response Caching . . . . . . . . . . . . . . . . . . . . 21
|
|||
|
4.6. Handling of the CD and AD Bits . . . . . . . . . . . . . 22
|
|||
|
4.7. Caching BAD Data . . . . . . . . . . . . . . . . . . . . 22
|
|||
|
4.8. Synthesized CNAMEs . . . . . . . . . . . . . . . . . . . 23
|
|||
|
4.9. Stub Resolvers . . . . . . . . . . . . . . . . . . . . . 23
|
|||
|
4.9.1. Handling of the DO Bit . . . . . . . . . . . . . 24
|
|||
|
4.9.2. Handling of the CD Bit . . . . . . . . . . . . . 24
|
|||
|
4.9.3. Handling of the AD Bit . . . . . . . . . . . . . 24
|
|||
|
5. Authenticating DNS Responses . . . . . . . . . . . . . . . . . 25
|
|||
|
5.1. Special Considerations for Islands of Security . . . . . 26
|
|||
|
5.2. Authenticating Referrals . . . . . . . . . . . . . . . . 26
|
|||
|
5.3. Authenticating an RRset with an RRSIG RR . . . . . . . . 28
|
|||
|
5.3.1. Checking the RRSIG RR Validity . . . . . . . . . 28
|
|||
|
5.3.2. Reconstructing the Signed Data . . . . . . . . . 29
|
|||
|
5.3.3. Checking the Signature . . . . . . . . . . . . . 31
|
|||
|
5.3.4. Authenticating a Wildcard Expanded RRset
|
|||
|
Positive Response. . . . . . . . . . . . . . . . 32
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 2]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
5.4. Authenticated Denial of Existence . . . . . . . . . . . 32
|
|||
|
5.5. Resolver Behavior When Signatures Do Not Validate . . . 33
|
|||
|
5.6. Authentication Example . . . . . . . . . . . . . . . . . 33
|
|||
|
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33
|
|||
|
7. Security Considerations . . . . . . . . . . . . . . . . . . . 33
|
|||
|
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 34
|
|||
|
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34
|
|||
|
9.1. Normative References . . . . . . . . . . . . . . . . . . 34
|
|||
|
9.2. Informative References . . . . . . . . . . . . . . . . . 35
|
|||
|
A. Signed Zone Example . . . . . . . . . . . . . . . . . . . . . 36
|
|||
|
B. Example Responses . . . . . . . . . . . . . . . . . . . . . . 41
|
|||
|
B.1. Answer . . . . . . . . . . . . . . . . . . . . . . . . . 41
|
|||
|
B.2. Name Error . . . . . . . . . . . . . . . . . . . . . . . 43
|
|||
|
B.3. No Data Error . . . . . . . . . . . . . . . . . . . . . 44
|
|||
|
B.4. Referral to Signed Zone . . . . . . . . . . . . . . . . 44
|
|||
|
B.5. Referral to Unsigned Zone . . . . . . . . . . . . . . . 45
|
|||
|
B.6. Wildcard Expansion . . . . . . . . . . . . . . . . . . . 46
|
|||
|
B.7. Wildcard No Data Error . . . . . . . . . . . . . . . . . 47
|
|||
|
B.8. DS Child Zone No Data Error . . . . . . . . . . . . . . 48
|
|||
|
C. Authentication Examples . . . . . . . . . . . . . . . . . . . 49
|
|||
|
C.1. Authenticating an Answer . . . . . . . . . . . . . . . . 49
|
|||
|
C.1.1. Authenticating the Example DNSKEY RR . . . . . . 49
|
|||
|
C.2. Name Error . . . . . . . . . . . . . . . . . . . . . . . 50
|
|||
|
C.3. No Data Error . . . . . . . . . . . . . . . . . . . . . 50
|
|||
|
C.4. Referral to Signed Zone . . . . . . . . . . . . . . . . 50
|
|||
|
C.5. Referral to Unsigned Zone . . . . . . . . . . . . . . . 51
|
|||
|
C.6. Wildcard Expansion . . . . . . . . . . . . . . . . . . . 51
|
|||
|
C.7. Wildcard No Data Error . . . . . . . . . . . . . . . . . 51
|
|||
|
C.8. DS Child Zone No Data Error . . . . . . . . . . . . . . 51
|
|||
|
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 52
|
|||
|
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 53
|
|||
|
|
|||
|
1. Introduction
|
|||
|
|
|||
|
The DNS Security Extensions (DNSSEC) are a collection of new resource
|
|||
|
records and protocol modifications that add data origin
|
|||
|
authentication and data integrity to the DNS. This document defines
|
|||
|
the DNSSEC protocol modifications. Section 2 of this document
|
|||
|
defines the concept of a signed zone and lists the requirements for
|
|||
|
zone signing. Section 3 describes the modifications to authoritative
|
|||
|
name server behavior necessary for handling signed zones. Section 4
|
|||
|
describes the behavior of entities that include security-aware
|
|||
|
resolver functions. Finally, Section 5 defines how to use DNSSEC RRs
|
|||
|
to authenticate a response.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 3]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
1.1. Background and Related Documents
|
|||
|
|
|||
|
This document is part of a family of documents defining DNSSEC that
|
|||
|
should be read together as a set.
|
|||
|
|
|||
|
[RFC4033] contains an introduction to DNSSEC and definitions of
|
|||
|
common terms; the reader is assumed to be familiar with this
|
|||
|
document. [RFC4033] also contains a list of other documents updated
|
|||
|
by and obsoleted by this document set.
|
|||
|
|
|||
|
[RFC4034] defines the DNSSEC resource records.
|
|||
|
|
|||
|
The reader is also assumed to be familiar with the basic DNS concepts
|
|||
|
described in [RFC1034], [RFC1035], and the subsequent documents that
|
|||
|
update them; particularly, [RFC2181] and [RFC2308].
|
|||
|
|
|||
|
This document defines the DNSSEC protocol operations.
|
|||
|
|
|||
|
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 [RFC2119].
|
|||
|
|
|||
|
2. Zone Signing
|
|||
|
|
|||
|
DNSSEC introduces the concept of signed zones. A signed zone
|
|||
|
includes DNS Public Key (DNSKEY), Resource Record Signature (RRSIG),
|
|||
|
Next Secure (NSEC), and (optionally) Delegation Signer (DS) records
|
|||
|
according to the rules specified in Sections 2.1, 2.2, 2.3, and 2.4,
|
|||
|
respectively. A zone that does not include these records according
|
|||
|
to the rules in this section is an unsigned zone.
|
|||
|
|
|||
|
DNSSEC requires a change to the definition of the CNAME resource
|
|||
|
record ([RFC1035]). Section 2.5 changes the CNAME RR to allow RRSIG
|
|||
|
and NSEC RRs to appear at the same owner name as does a CNAME RR.
|
|||
|
|
|||
|
DNSSEC specifies the placement of two new RR types, NSEC and DS,
|
|||
|
which can be placed at the parental side of a zone cut (that is, at a
|
|||
|
delegation point). This is an exception to the general prohibition
|
|||
|
against putting data in the parent zone at a zone cut. Section 2.6
|
|||
|
describes this change.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 4]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
2.1. Including DNSKEY RRs in a Zone
|
|||
|
|
|||
|
To sign a zone, the zone's administrator generates one or more
|
|||
|
public/private key pairs and uses the private key(s) to sign
|
|||
|
authoritative RRsets in the zone. For each private key used to
|
|||
|
create RRSIG RRs in a zone, the zone SHOULD include a zone DNSKEY RR
|
|||
|
containing the corresponding public key. A zone key DNSKEY RR MUST
|
|||
|
have the Zone Key bit of the flags RDATA field set (see Section 2.1.1
|
|||
|
of [RFC4034]). Public keys associated with other DNS operations MAY
|
|||
|
be stored in DNSKEY RRs that are not marked as zone keys but MUST NOT
|
|||
|
be used to verify RRSIGs.
|
|||
|
|
|||
|
If the zone administrator intends a signed zone to be usable other
|
|||
|
than as an island of security, the zone apex MUST contain at least
|
|||
|
one DNSKEY RR to act as a secure entry point into the zone. This
|
|||
|
secure entry point could then be used as the target of a secure
|
|||
|
delegation via a corresponding DS RR in the parent zone (see
|
|||
|
[RFC4034]).
|
|||
|
|
|||
|
2.2. Including RRSIG RRs in a Zone
|
|||
|
|
|||
|
For each authoritative RRset in a signed zone, there MUST be at least
|
|||
|
one RRSIG record that meets the following requirements:
|
|||
|
|
|||
|
o The RRSIG owner name is equal to the RRset owner name.
|
|||
|
|
|||
|
o The RRSIG class is equal to the RRset class.
|
|||
|
|
|||
|
o The RRSIG Type Covered field is equal to the RRset type.
|
|||
|
|
|||
|
o The RRSIG Original TTL field is equal to the TTL of the RRset.
|
|||
|
|
|||
|
o The RRSIG RR's TTL is equal to the TTL of the RRset.
|
|||
|
|
|||
|
o The RRSIG Labels field is equal to the number of labels in the
|
|||
|
RRset owner name, not counting the null root label and not
|
|||
|
counting the leftmost label if it is a wildcard.
|
|||
|
|
|||
|
o The RRSIG Signer's Name field is equal to the name of the zone
|
|||
|
containing the RRset.
|
|||
|
|
|||
|
o The RRSIG Algorithm, Signer's Name, and Key Tag fields identify a
|
|||
|
zone key DNSKEY record at the zone apex.
|
|||
|
|
|||
|
The process for constructing the RRSIG RR for a given RRset is
|
|||
|
described in [RFC4034]. An RRset MAY have multiple RRSIG RRs
|
|||
|
associated with it. Note that as RRSIG RRs are closely tied to the
|
|||
|
RRsets whose signatures they contain, RRSIG RRs, unlike all other DNS
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 5]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
RR types, do not form RRsets. In particular, the TTL values among
|
|||
|
RRSIG RRs with a common owner name do not follow the RRset rules
|
|||
|
described in [RFC2181].
|
|||
|
|
|||
|
An RRSIG RR itself MUST NOT be signed, as signing an RRSIG RR would
|
|||
|
add no value and would create an infinite loop in the signing
|
|||
|
process.
|
|||
|
|
|||
|
The NS RRset that appears at the zone apex name MUST be signed, but
|
|||
|
the NS RRsets that appear at delegation points (that is, the NS
|
|||
|
RRsets in the parent zone that delegate the name to the child zone's
|
|||
|
name servers) MUST NOT be signed. Glue address RRsets associated
|
|||
|
with delegations MUST NOT be signed.
|
|||
|
|
|||
|
There MUST be an RRSIG for each RRset using at least one DNSKEY of
|
|||
|
each algorithm in the zone apex DNSKEY RRset. The apex DNSKEY RRset
|
|||
|
itself MUST be signed by each algorithm appearing in the DS RRset
|
|||
|
located at the delegating parent (if any).
|
|||
|
|
|||
|
2.3. Including NSEC RRs in a Zone
|
|||
|
|
|||
|
Each owner name in the zone that has authoritative data or a
|
|||
|
delegation point NS RRset MUST have an NSEC resource record. The
|
|||
|
format of NSEC RRs and the process for constructing the NSEC RR for a
|
|||
|
given name is described in [RFC4034].
|
|||
|
|
|||
|
The TTL value for any NSEC RR SHOULD be the same as the minimum TTL
|
|||
|
value field in the zone SOA RR.
|
|||
|
|
|||
|
An NSEC record (and its associated RRSIG RRset) MUST NOT be the only
|
|||
|
RRset at any particular owner name. That is, the signing process
|
|||
|
MUST NOT create NSEC or RRSIG RRs for owner name nodes that were not
|
|||
|
the owner name of any RRset before the zone was signed. The main
|
|||
|
reasons for this are a desire for namespace consistency between
|
|||
|
signed and unsigned versions of the same zone and a desire to reduce
|
|||
|
the risk of response inconsistency in security oblivious recursive
|
|||
|
name servers.
|
|||
|
|
|||
|
The type bitmap of every NSEC resource record in a signed zone MUST
|
|||
|
indicate the presence of both the NSEC record itself and its
|
|||
|
corresponding RRSIG record.
|
|||
|
|
|||
|
The difference between the set of owner names that require RRSIG
|
|||
|
records and the set of owner names that require NSEC records is
|
|||
|
subtle and worth highlighting. RRSIG records are present at the
|
|||
|
owner names of all authoritative RRsets. NSEC records are present at
|
|||
|
the owner names of all names for which the signed zone is
|
|||
|
authoritative and also at the owner names of delegations from the
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 6]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
signed zone to its children. Neither NSEC nor RRSIG records are
|
|||
|
present (in the parent zone) at the owner names of glue address
|
|||
|
RRsets. Note, however, that this distinction is for the most part
|
|||
|
visible only during the zone signing process, as NSEC RRsets are
|
|||
|
authoritative data and are therefore signed. Thus, any owner name
|
|||
|
that has an NSEC RRset will have RRSIG RRs as well in the signed
|
|||
|
zone.
|
|||
|
|
|||
|
The bitmap for the NSEC 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.
|
|||
|
|
|||
|
2.4. Including DS RRs in a Zone
|
|||
|
|
|||
|
The DS resource record establishes authentication chains between DNS
|
|||
|
zones. A DS RRset SHOULD be present at a delegation point when the
|
|||
|
child zone is signed. The DS RRset MAY contain multiple records,
|
|||
|
each referencing a public key in the child zone used to verify the
|
|||
|
RRSIGs in that zone. All DS RRsets in a zone MUST be signed, and DS
|
|||
|
RRsets MUST NOT appear at a zone's apex.
|
|||
|
|
|||
|
A DS RR SHOULD point to a DNSKEY RR that is present in the child's
|
|||
|
apex DNSKEY RRset, and the child's apex DNSKEY RRset SHOULD be signed
|
|||
|
by the corresponding private key. DS RRs that fail to meet these
|
|||
|
conditions are not useful for validation, but because the DS RR and
|
|||
|
its corresponding DNSKEY RR are in different zones, and because the
|
|||
|
DNS is only loosely consistent, temporary mismatches can occur.
|
|||
|
|
|||
|
The TTL of a DS RRset SHOULD match the TTL of the delegating NS RRset
|
|||
|
(that is, the NS RRset from the same zone containing the DS RRset).
|
|||
|
|
|||
|
Construction of a DS RR requires knowledge of the corresponding
|
|||
|
DNSKEY RR in the child zone, which implies communication between the
|
|||
|
child and parent zones. This communication is an operational matter
|
|||
|
not covered by this document.
|
|||
|
|
|||
|
2.5. Changes to the CNAME Resource Record
|
|||
|
|
|||
|
If a CNAME RRset is present at a name in a signed zone, appropriate
|
|||
|
RRSIG and NSEC RRsets are REQUIRED at that name. A KEY RRset at that
|
|||
|
name for secure dynamic update purposes is also allowed ([RFC3007]).
|
|||
|
Other types MUST NOT be present at that name.
|
|||
|
|
|||
|
This is a modification to the original CNAME definition given in
|
|||
|
[RFC1034]. The original definition of the CNAME RR did not allow any
|
|||
|
other types to coexist with a CNAME record, but a signed zone
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 7]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
requires NSEC and RRSIG RRs for every authoritative name. To resolve
|
|||
|
this conflict, this specification modifies the definition of the
|
|||
|
CNAME resource record to allow it to coexist with NSEC and RRSIG RRs.
|
|||
|
|
|||
|
2.6. DNSSEC RR Types Appearing at Zone Cuts
|
|||
|
|
|||
|
DNSSEC introduced two new RR types that are unusual in that they can
|
|||
|
appear at the parental side of a zone cut. At the parental side of a
|
|||
|
zone cut (that is, at a delegation point), NSEC RRs are REQUIRED at
|
|||
|
the owner name. A DS RR could also be present if the zone being
|
|||
|
delegated is signed and seeks to have a chain of authentication to
|
|||
|
the parent zone. This is an exception to the original DNS
|
|||
|
specification ([RFC1034]), which states that only NS RRsets could
|
|||
|
appear at the parental side of a zone cut.
|
|||
|
|
|||
|
This specification updates the original DNS specification to allow
|
|||
|
NSEC and DS RR types at the parent side of a zone cut. These RRsets
|
|||
|
are authoritative for the parent when they appear at the parent side
|
|||
|
of a zone cut.
|
|||
|
|
|||
|
2.7. Example of a Secure Zone
|
|||
|
|
|||
|
Appendix A shows a complete example of a small signed zone.
|
|||
|
|
|||
|
3. Serving
|
|||
|
|
|||
|
This section describes the behavior of entities that include
|
|||
|
security-aware name server functions. In many cases such functions
|
|||
|
will be part of a security-aware recursive name server, but a
|
|||
|
security-aware authoritative name server has some of the same
|
|||
|
requirements. Functions specific to security-aware recursive name
|
|||
|
servers are described in Section 3.2; functions specific to
|
|||
|
authoritative servers are described in Section 3.1.
|
|||
|
|
|||
|
In the following discussion, the terms "SNAME", "SCLASS", and "STYPE"
|
|||
|
are as used in [RFC1034].
|
|||
|
|
|||
|
A security-aware name server MUST support the EDNS0 ([RFC2671])
|
|||
|
message size extension, MUST support a message size of at least 1220
|
|||
|
octets, and SHOULD support a message size of 4000 octets. As IPv6
|
|||
|
packets can only be fragmented by the source host, a security aware
|
|||
|
name server SHOULD take steps to ensure that UDP datagrams it
|
|||
|
transmits over IPv6 are fragmented, if necessary, at the minimum IPv6
|
|||
|
MTU, unless the path MTU is known. Please see [RFC1122], [RFC2460],
|
|||
|
and [RFC3226] for further discussion of packet size and fragmentation
|
|||
|
issues.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 8]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
A security-aware name server that receives a DNS query that does not
|
|||
|
include the EDNS OPT pseudo-RR or that has the DO bit clear MUST
|
|||
|
treat the RRSIG, DNSKEY, and NSEC RRs as it would any other RRset and
|
|||
|
MUST NOT perform any of the additional processing described below.
|
|||
|
Because the DS RR type has the peculiar property of only existing in
|
|||
|
the parent zone at delegation points, DS RRs always require some
|
|||
|
special processing, as described in Section 3.1.4.1.
|
|||
|
|
|||
|
Security aware name servers that receive explicit queries for
|
|||
|
security RR types that match the content of more than one zone that
|
|||
|
it serves (for example, NSEC and RRSIG RRs above and below a
|
|||
|
delegation point where the server is authoritative for both zones)
|
|||
|
should behave self-consistently. As long as the response is always
|
|||
|
consistent for each query to the name server, the name server MAY
|
|||
|
return one of the following:
|
|||
|
|
|||
|
o The above-delegation RRsets.
|
|||
|
o The below-delegation RRsets.
|
|||
|
o Both above and below-delegation RRsets.
|
|||
|
o Empty answer section (no records).
|
|||
|
o Some other response.
|
|||
|
o An error.
|
|||
|
|
|||
|
DNSSEC allocates two new bits in the DNS message header: the CD
|
|||
|
(Checking Disabled) bit and the AD (Authentic Data) bit. The CD bit
|
|||
|
is controlled by resolvers; a security-aware name server MUST copy
|
|||
|
the CD bit from a query into the corresponding response. The AD bit
|
|||
|
is controlled by name servers; a security-aware name server MUST
|
|||
|
ignore the setting of the AD bit in queries. See Sections 3.1.6,
|
|||
|
3.2.2, 3.2.3, 4, and 4.9 for details on the behavior of these bits.
|
|||
|
|
|||
|
A security aware name server that synthesizes CNAME RRs from DNAME
|
|||
|
RRs as described in [RFC2672] SHOULD NOT generate signatures for the
|
|||
|
synthesized CNAME RRs.
|
|||
|
|
|||
|
3.1. Authoritative Name Servers
|
|||
|
|
|||
|
Upon receiving a relevant query that has the EDNS ([RFC2671]) OPT
|
|||
|
pseudo-RR DO bit ([RFC3225]) set, a security-aware authoritative name
|
|||
|
server for a signed zone MUST include additional RRSIG, NSEC, and DS
|
|||
|
RRs, according to the following rules:
|
|||
|
|
|||
|
o RRSIG RRs that can be used to authenticate a response MUST be
|
|||
|
included in the response according to the rules in Section 3.1.1.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 9]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
o NSEC RRs that can be used to provide authenticated denial of
|
|||
|
existence MUST be included in the response automatically according
|
|||
|
to the rules in Section 3.1.3.
|
|||
|
|
|||
|
o Either a DS RRset or an NSEC RR proving that no DS RRs exist MUST
|
|||
|
be included in referrals automatically according to the rules in
|
|||
|
Section 3.1.4.
|
|||
|
|
|||
|
These rules only apply to responses where the semantics convey
|
|||
|
information about the presence or absence of resource records. That
|
|||
|
is, these rules are not intended to rule out responses such as RCODE
|
|||
|
4 ("Not Implemented") or RCODE 5 ("Refused").
|
|||
|
|
|||
|
DNSSEC does not change the DNS zone transfer protocol. Section 3.1.5
|
|||
|
discusses zone transfer requirements.
|
|||
|
|
|||
|
3.1.1. Including RRSIG RRs in a Response
|
|||
|
|
|||
|
When responding to a query that has the DO bit set, a security-aware
|
|||
|
authoritative name server SHOULD attempt to send RRSIG RRs that a
|
|||
|
security-aware resolver can use to authenticate the RRsets in the
|
|||
|
response. A name server SHOULD make every attempt to keep the RRset
|
|||
|
and its associated RRSIG(s) together in a response. Inclusion of
|
|||
|
RRSIG RRs in a response is subject to the following rules:
|
|||
|
|
|||
|
o When placing a signed RRset in the Answer section, the name server
|
|||
|
MUST also place its RRSIG RRs in the Answer section. The RRSIG
|
|||
|
RRs have a higher priority for inclusion than any other RRsets
|
|||
|
that may have to be included. If space does not permit inclusion
|
|||
|
of these RRSIG RRs, the name server MUST set the TC bit.
|
|||
|
|
|||
|
o When placing a signed RRset in the Authority section, the name
|
|||
|
server MUST also place its RRSIG RRs in the Authority section.
|
|||
|
The RRSIG RRs have a higher priority for inclusion than any other
|
|||
|
RRsets that may have to be included. If space does not permit
|
|||
|
inclusion of these RRSIG RRs, the name server MUST set the TC bit.
|
|||
|
|
|||
|
o When placing a signed RRset in the Additional section, the name
|
|||
|
server MUST also place its RRSIG RRs in the Additional section.
|
|||
|
If space does not permit inclusion of both the RRset and its
|
|||
|
associated RRSIG RRs, the name server MAY retain the RRset while
|
|||
|
dropping the RRSIG RRs. If this happens, the name server MUST NOT
|
|||
|
set the TC bit solely because these RRSIG RRs didn't fit.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 10]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
3.1.2. Including DNSKEY RRs in a Response
|
|||
|
|
|||
|
When responding to a query that has the DO bit set and that requests
|
|||
|
the SOA or NS RRs at the apex of a signed zone, a security-aware
|
|||
|
authoritative name server for that zone MAY return the zone apex
|
|||
|
DNSKEY RRset in the Additional section. In this situation, the
|
|||
|
DNSKEY RRset and associated RRSIG RRs have lower priority than does
|
|||
|
any other information that would be placed in the additional section.
|
|||
|
The name server SHOULD NOT include the DNSKEY RRset unless there is
|
|||
|
enough space in the response message for both the DNSKEY RRset and
|
|||
|
its associated RRSIG RR(s). If there is not enough space to include
|
|||
|
these DNSKEY and RRSIG RRs, the name server MUST omit them and MUST
|
|||
|
NOT set the TC bit solely because these RRs didn't fit (see Section
|
|||
|
3.1.1).
|
|||
|
|
|||
|
3.1.3. Including NSEC RRs in a Response
|
|||
|
|
|||
|
When responding to a query that has the DO bit set, a security-aware
|
|||
|
authoritative name server for a signed zone MUST include NSEC RRs in
|
|||
|
each of the following cases:
|
|||
|
|
|||
|
No Data: The zone contains RRsets that exactly match <SNAME, SCLASS>
|
|||
|
but does not contain any RRsets that exactly match <SNAME, SCLASS,
|
|||
|
STYPE>.
|
|||
|
|
|||
|
Name Error: The zone does not contain any RRsets that match <SNAME,
|
|||
|
SCLASS> either exactly or via wildcard name expansion.
|
|||
|
|
|||
|
Wildcard Answer: The zone does not contain any RRsets that exactly
|
|||
|
match <SNAME, SCLASS> but does contain an RRset that matches
|
|||
|
<SNAME, SCLASS, STYPE> via wildcard name expansion.
|
|||
|
|
|||
|
Wildcard No Data: The zone does not contain any RRsets that exactly
|
|||
|
match <SNAME, SCLASS> and does contain one or more RRsets that
|
|||
|
match <SNAME, SCLASS> via wildcard name expansion, but does not
|
|||
|
contain any RRsets that match <SNAME, SCLASS, STYPE> via wildcard
|
|||
|
name expansion.
|
|||
|
|
|||
|
In each of these cases, the name server includes NSEC RRs in the
|
|||
|
response to prove that an exact match for <SNAME, SCLASS, STYPE> was
|
|||
|
not present in the zone and that the response that the name server is
|
|||
|
returning is correct given the data in the zone.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 11]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
3.1.3.1. Including NSEC RRs: No Data Response
|
|||
|
|
|||
|
If the zone contains RRsets matching <SNAME, SCLASS> but contains no
|
|||
|
RRset matching <SNAME, SCLASS, STYPE>, then the name server MUST
|
|||
|
include the NSEC RR for <SNAME, SCLASS> along with its associated
|
|||
|
RRSIG RR(s) in the Authority section of the response (see Section
|
|||
|
3.1.1). If space does not permit inclusion of the NSEC RR or its
|
|||
|
associated RRSIG RR(s), the name server MUST set the TC bit (see
|
|||
|
Section 3.1.1).
|
|||
|
|
|||
|
Since the search name exists, wildcard name expansion does not apply
|
|||
|
to this query, and a single signed NSEC RR suffices to prove that the
|
|||
|
requested RR type does not exist.
|
|||
|
|
|||
|
3.1.3.2. Including NSEC RRs: Name Error Response
|
|||
|
|
|||
|
If the zone does not contain any RRsets matching <SNAME, SCLASS>
|
|||
|
either exactly or via wildcard name expansion, then the name server
|
|||
|
MUST include the following NSEC RRs in the Authority section, along
|
|||
|
with their associated RRSIG RRs:
|
|||
|
|
|||
|
o An NSEC RR proving that there is no exact match for <SNAME,
|
|||
|
SCLASS>.
|
|||
|
|
|||
|
o An NSEC RR proving that the zone contains no RRsets that would
|
|||
|
match <SNAME, SCLASS> via wildcard name expansion.
|
|||
|
|
|||
|
In some cases, a single NSEC RR may prove both of these points. If
|
|||
|
it does, the name server SHOULD only include the NSEC RR and its
|
|||
|
RRSIG RR(s) once in the Authority section.
|
|||
|
|
|||
|
If space does not permit inclusion of these NSEC and RRSIG RRs, the
|
|||
|
name server MUST set the TC bit (see Section 3.1.1).
|
|||
|
|
|||
|
The owner names of these NSEC and RRSIG RRs are not subject to
|
|||
|
wildcard name expansion when these RRs are included in the Authority
|
|||
|
section of the response.
|
|||
|
|
|||
|
Note that this form of response includes cases in which SNAME
|
|||
|
corresponds to an empty non-terminal name within the zone (a name
|
|||
|
that is not the owner name for any RRset but that is the parent name
|
|||
|
of one or more RRsets).
|
|||
|
|
|||
|
3.1.3.3. Including NSEC RRs: Wildcard Answer Response
|
|||
|
|
|||
|
If the zone does not contain any RRsets that exactly match <SNAME,
|
|||
|
SCLASS> but does contain an RRset that matches <SNAME, SCLASS, STYPE>
|
|||
|
via wildcard name expansion, the name server MUST include the
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 12]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
wildcard-expanded answer and the corresponding wildcard-expanded
|
|||
|
RRSIG RRs in the Answer section and MUST include in the Authority
|
|||
|
section an NSEC RR and associated RRSIG RR(s) proving that the zone
|
|||
|
does not contain a closer match for <SNAME, SCLASS>. If space does
|
|||
|
not permit inclusion of the answer, NSEC and RRSIG RRs, the name
|
|||
|
server MUST set the TC bit (see Section 3.1.1).
|
|||
|
|
|||
|
3.1.3.4. Including NSEC RRs: Wildcard No Data Response
|
|||
|
|
|||
|
This case is a combination of the previous cases. The zone does not
|
|||
|
contain an exact match for <SNAME, SCLASS>, and although the zone
|
|||
|
does contain RRsets that match <SNAME, SCLASS> via wildcard
|
|||
|
expansion, none of those RRsets matches STYPE. The name server MUST
|
|||
|
include the following NSEC RRs in the Authority section, along with
|
|||
|
their associated RRSIG RRs:
|
|||
|
|
|||
|
o An NSEC RR proving that there are no RRsets matching STYPE at the
|
|||
|
wildcard owner name that matched <SNAME, SCLASS> via wildcard
|
|||
|
expansion.
|
|||
|
|
|||
|
o An NSEC RR proving that there are no RRsets in the zone that would
|
|||
|
have been a closer match for <SNAME, SCLASS>.
|
|||
|
|
|||
|
In some cases, a single NSEC RR may prove both of these points. If
|
|||
|
it does, the name server SHOULD only include the NSEC RR and its
|
|||
|
RRSIG RR(s) once in the Authority section.
|
|||
|
|
|||
|
The owner names of these NSEC and RRSIG RRs are not subject to
|
|||
|
wildcard name expansion when these RRs are included in the Authority
|
|||
|
section of the response.
|
|||
|
|
|||
|
If space does not permit inclusion of these NSEC and RRSIG RRs, the
|
|||
|
name server MUST set the TC bit (see Section 3.1.1).
|
|||
|
|
|||
|
3.1.3.5. Finding the Right NSEC RRs
|
|||
|
|
|||
|
As explained above, there are several situations in which a
|
|||
|
security-aware authoritative name server has to locate an NSEC RR
|
|||
|
that proves that no RRsets matching a particular SNAME exist.
|
|||
|
Locating such an NSEC RR within an authoritative zone is relatively
|
|||
|
simple, at least in concept. The following discussion assumes that
|
|||
|
the name server is authoritative for the zone that would have held
|
|||
|
the non-existent RRsets matching SNAME. The algorithm below is
|
|||
|
written for clarity, not for efficiency.
|
|||
|
|
|||
|
To find the NSEC that proves that no RRsets matching name N exist in
|
|||
|
the zone Z that would have held them, construct a sequence, S,
|
|||
|
consisting of the owner names of every RRset in Z, sorted into
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 13]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
canonical order ([RFC4034]), with no duplicate names. Find the name
|
|||
|
M that would have immediately preceded N in S if any RRsets with
|
|||
|
owner name N had existed. M is the owner name of the NSEC RR that
|
|||
|
proves that no RRsets exist with owner name N.
|
|||
|
|
|||
|
The algorithm for finding the NSEC RR that proves that a given name
|
|||
|
is not covered by any applicable wildcard is similar but requires an
|
|||
|
extra step. More precisely, the algorithm for finding the NSEC
|
|||
|
proving that no RRsets exist with the applicable wildcard name is
|
|||
|
precisely the same as the algorithm for finding the NSEC RR that
|
|||
|
proves that RRsets with any other owner name do not exist. The part
|
|||
|
that's missing is a method of determining the name of the non-
|
|||
|
existent applicable wildcard. In practice, this is easy, because the
|
|||
|
authoritative name server has already checked for the presence of
|
|||
|
precisely this wildcard name as part of step (1)(c) of the normal
|
|||
|
lookup algorithm described in Section 4.3.2 of [RFC1034].
|
|||
|
|
|||
|
3.1.4. Including DS RRs in a Response
|
|||
|
|
|||
|
When responding to a query that has the DO bit set, a security-aware
|
|||
|
authoritative name server returning a referral includes DNSSEC data
|
|||
|
along with the NS RRset.
|
|||
|
|
|||
|
If a DS RRset is present at the delegation point, the name server
|
|||
|
MUST return both the DS RRset and its associated RRSIG RR(s) in the
|
|||
|
Authority section along with the NS RRset.
|
|||
|
|
|||
|
If no DS RRset is present at the delegation point, the name server
|
|||
|
MUST return both the NSEC RR that proves that the DS RRset is not
|
|||
|
present and the NSEC RR's associated RRSIG RR(s) along with the NS
|
|||
|
RRset. The name server MUST place the NS RRset before the NSEC RRset
|
|||
|
and its associated RRSIG RR(s).
|
|||
|
|
|||
|
Including these DS, NSEC, and RRSIG RRs increases the size of
|
|||
|
referral messages and may cause some or all glue RRs to be omitted.
|
|||
|
If space does not permit inclusion of the DS or NSEC RRset and
|
|||
|
associated RRSIG RRs, the name server MUST set the TC bit (see
|
|||
|
Section 3.1.1).
|
|||
|
|
|||
|
3.1.4.1. Responding to Queries for DS RRs
|
|||
|
|
|||
|
The DS resource record type is unusual in that it appears only on the
|
|||
|
parent zone's side of a zone cut. For example, the DS RRset for the
|
|||
|
delegation of "foo.example" is stored in the "example" zone rather
|
|||
|
than in the "foo.example" zone. This requires special processing
|
|||
|
rules for both name servers and resolvers, as the name server for the
|
|||
|
child zone is authoritative for the name at the zone cut by the
|
|||
|
normal DNS rules but the child zone does not contain the DS RRset.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 14]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
A security-aware resolver sends queries to the parent zone when
|
|||
|
looking for a needed DS RR at a delegation point (see Section 4.2).
|
|||
|
However, special rules are necessary to avoid confusing
|
|||
|
security-oblivious resolvers which might become involved in
|
|||
|
processing such a query (for example, in a network configuration that
|
|||
|
forces a security-aware resolver to channel its queries through a
|
|||
|
security-oblivious recursive name server). The rest of this section
|
|||
|
describes how a security-aware name server processes DS queries in
|
|||
|
order to avoid this problem.
|
|||
|
|
|||
|
The need for special processing by a security-aware name server only
|
|||
|
arises when all the following conditions are met:
|
|||
|
|
|||
|
o The name server has received a query for the DS RRset at a zone
|
|||
|
cut.
|
|||
|
|
|||
|
o The name server is authoritative for the child zone.
|
|||
|
|
|||
|
o The name server is not authoritative for the parent zone.
|
|||
|
|
|||
|
o The name server does not offer recursion.
|
|||
|
|
|||
|
In all other cases, the name server either has some way of obtaining
|
|||
|
the DS RRset or could not have been expected to have the DS RRset
|
|||
|
even by the pre-DNSSEC processing rules, so the name server can
|
|||
|
return either the DS RRset or an error response according to the
|
|||
|
normal processing rules.
|
|||
|
|
|||
|
If all the above conditions are met, however, the name server is
|
|||
|
authoritative for SNAME but cannot supply the requested RRset. In
|
|||
|
this case, the name server MUST return an authoritative "no data"
|
|||
|
response showing that the DS RRset does not exist in the child zone's
|
|||
|
apex. See Appendix B.8 for an example of such a response.
|
|||
|
|
|||
|
3.1.5. Responding to Queries for Type AXFR or IXFR
|
|||
|
|
|||
|
DNSSEC does not change the DNS zone transfer process. A signed zone
|
|||
|
will contain RRSIG, DNSKEY, NSEC, and DS resource records, but these
|
|||
|
records have no special meaning with respect to a zone transfer
|
|||
|
operation.
|
|||
|
|
|||
|
An authoritative name server is not required to verify that a zone is
|
|||
|
properly signed before sending or accepting a zone transfer.
|
|||
|
However, an authoritative name server MAY choose to reject the entire
|
|||
|
zone transfer if the zone fails to meet any of the signing
|
|||
|
requirements described in Section 2. The primary objective of a zone
|
|||
|
transfer is to ensure that all authoritative name servers have
|
|||
|
identical copies of the zone. An authoritative name server that
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 15]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
chooses to perform its own zone validation MUST NOT selectively
|
|||
|
reject some RRs and accept others.
|
|||
|
|
|||
|
DS RRsets appear only on the parental side of a zone cut and are
|
|||
|
authoritative data in the parent zone. As with any other
|
|||
|
authoritative RRset, the DS RRset MUST be included in zone transfers
|
|||
|
of the zone in which the RRset is authoritative data. In the case of
|
|||
|
the DS RRset, this is the parent zone.
|
|||
|
|
|||
|
NSEC RRs appear in both the parent and child zones at a zone cut and
|
|||
|
are authoritative data in both the parent and child zones. The
|
|||
|
parental and child NSEC RRs at a zone cut are never identical to each
|
|||
|
other, as the NSEC RR in the child zone's apex will always indicate
|
|||
|
the presence of the child zone's SOA RR whereas the parental NSEC RR
|
|||
|
at the zone cut will never indicate the presence of an SOA RR. As
|
|||
|
with any other authoritative RRs, NSEC RRs MUST be included in zone
|
|||
|
transfers of the zone in which they are authoritative data. The
|
|||
|
parental NSEC RR at a zone cut MUST be included in zone transfers of
|
|||
|
the parent zone, and the NSEC at the zone apex of the child zone MUST
|
|||
|
be included in zone transfers of the child zone.
|
|||
|
|
|||
|
RRSIG RRs appear in both the parent and child zones at a zone cut and
|
|||
|
are authoritative in whichever zone contains the authoritative RRset
|
|||
|
for which the RRSIG RR provides the signature. That is, the RRSIG RR
|
|||
|
for a DS RRset or a parental NSEC RR at a zone cut will be
|
|||
|
authoritative in the parent zone, and the RRSIG for any RRset in the
|
|||
|
child zone's apex will be authoritative in the child zone. Parental
|
|||
|
and child RRSIG RRs at a zone cut will never be identical to each
|
|||
|
other, as the Signer's Name field of an RRSIG RR in the child zone's
|
|||
|
apex will indicate a DNSKEY RR in the child zone's apex whereas the
|
|||
|
same field of a parental RRSIG RR at the zone cut will indicate a
|
|||
|
DNSKEY RR in the parent zone's apex. As with any other authoritative
|
|||
|
RRs, RRSIG RRs MUST be included in zone transfers of the zone in
|
|||
|
which they are authoritative data.
|
|||
|
|
|||
|
3.1.6. The AD and CD Bits in an Authoritative Response
|
|||
|
|
|||
|
The CD and AD bits are designed for use in communication between
|
|||
|
security-aware resolvers and security-aware recursive name servers.
|
|||
|
These bits are for the most part not relevant to query processing by
|
|||
|
security-aware authoritative name servers.
|
|||
|
|
|||
|
A security-aware name server does not perform signature validation
|
|||
|
for authoritative data during query processing, even when the CD bit
|
|||
|
is clear. A security-aware name server SHOULD clear the CD bit when
|
|||
|
composing an authoritative response.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 16]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
A security-aware name server MUST NOT set the AD bit in a response
|
|||
|
unless the name server considers all RRsets in the Answer and
|
|||
|
Authority sections of the response to be authentic. A security-aware
|
|||
|
name server's local policy MAY consider data from an authoritative
|
|||
|
zone to be authentic without further validation. However, the name
|
|||
|
server MUST NOT do so unless the name server obtained the
|
|||
|
authoritative zone via secure means (such as a secure zone transfer
|
|||
|
mechanism) and MUST NOT do so unless this behavior has been
|
|||
|
configured explicitly.
|
|||
|
|
|||
|
A security-aware name server that supports recursion MUST follow the
|
|||
|
rules for the CD and AD bits given in Section 3.2 when generating a
|
|||
|
response that involves data obtained via recursion.
|
|||
|
|
|||
|
3.2. Recursive Name Servers
|
|||
|
|
|||
|
As explained in [RFC4033], a security-aware recursive name server is
|
|||
|
an entity that acts in both the security-aware name server and
|
|||
|
security-aware resolver roles. This section uses the terms "name
|
|||
|
server side" and "resolver side" to refer to the code within a
|
|||
|
security-aware recursive name server that implements the
|
|||
|
security-aware name server role and the code that implements the
|
|||
|
security-aware resolver role, respectively.
|
|||
|
|
|||
|
The resolver side follows the usual rules for caching and negative
|
|||
|
caching that would apply to any security-aware resolver.
|
|||
|
|
|||
|
3.2.1. The DO Bit
|
|||
|
|
|||
|
The resolver side of a security-aware recursive name server MUST set
|
|||
|
the DO bit when sending requests, regardless of the state of the DO
|
|||
|
bit in the initiating request received by the name server side. If
|
|||
|
the DO bit in an initiating query is not set, the name server side
|
|||
|
MUST strip any authenticating DNSSEC RRs from the response but MUST
|
|||
|
NOT strip any DNSSEC RR types that the initiating query explicitly
|
|||
|
requested.
|
|||
|
|
|||
|
3.2.2. The CD Bit
|
|||
|
|
|||
|
The CD bit exists in order to allow a security-aware resolver to
|
|||
|
disable signature validation in a security-aware name server's
|
|||
|
processing of a particular query.
|
|||
|
|
|||
|
The name server side MUST copy the setting of the CD bit from a query
|
|||
|
to the corresponding response.
|
|||
|
|
|||
|
The name server side of a security-aware recursive name server MUST
|
|||
|
pass the state of the CD bit to the resolver side along with the rest
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 17]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
of an initiating query, so that the resolver side will know whether
|
|||
|
it is required to verify the response data it returns to the name
|
|||
|
server side. If the CD bit is set, it indicates that the originating
|
|||
|
resolver is willing to perform whatever authentication its local
|
|||
|
policy requires. Thus, the resolver side of the recursive name
|
|||
|
server need not perform authentication on the RRsets in the response.
|
|||
|
When the CD bit is set, the recursive name server SHOULD, if
|
|||
|
possible, return the requested data to the originating resolver, even
|
|||
|
if the recursive name server's local authentication policy would
|
|||
|
reject the records in question. That is, by setting the CD bit, the
|
|||
|
originating resolver has indicated that it takes responsibility for
|
|||
|
performing its own authentication, and the recursive name server
|
|||
|
should not interfere.
|
|||
|
|
|||
|
If the resolver side implements a BAD cache (see Section 4.7) and the
|
|||
|
name server side receives a query that matches an entry in the
|
|||
|
resolver side's BAD cache, the name server side's response depends on
|
|||
|
the state of the CD bit in the original query. If the CD bit is set,
|
|||
|
the name server side SHOULD return the data from the BAD cache; if
|
|||
|
the CD bit is not set, the name server side MUST return RCODE 2
|
|||
|
(server failure).
|
|||
|
|
|||
|
The intent of the above rule is to provide the raw data to clients
|
|||
|
that are capable of performing their own signature verification
|
|||
|
checks while protecting clients that depend on the resolver side of a
|
|||
|
security-aware recursive name server to perform such checks. Several
|
|||
|
of the possible reasons why signature validation might fail involve
|
|||
|
conditions that may not apply equally to the recursive name server
|
|||
|
and the client that invoked it. For example, the recursive name
|
|||
|
server's clock may be set incorrectly, or the client may have
|
|||
|
knowledge of a relevant island of security that the recursive name
|
|||
|
server does not share. In such cases, "protecting" a client that is
|
|||
|
capable of performing its own signature validation from ever seeing
|
|||
|
the "bad" data does not help the client.
|
|||
|
|
|||
|
3.2.3. The AD Bit
|
|||
|
|
|||
|
The name server side of a security-aware recursive name server MUST
|
|||
|
NOT set the AD bit in a response unless the name server considers all
|
|||
|
RRsets in the Answer and Authority sections of the response to be
|
|||
|
authentic. The name server side SHOULD set the AD bit if and only if
|
|||
|
the resolver side considers all RRsets in the Answer section and any
|
|||
|
relevant negative response RRs in the Authority section to be
|
|||
|
authentic. The resolver side MUST follow the procedure described in
|
|||
|
Section 5 to determine whether the RRs in question are authentic.
|
|||
|
However, for backward compatibility, a recursive name server MAY set
|
|||
|
the AD bit when a response includes unsigned CNAME RRs if those CNAME
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 18]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
RRs demonstrably could have been synthesized from an authentic DNAME
|
|||
|
RR that is also included in the response according to the synthesis
|
|||
|
rules described in [RFC2672].
|
|||
|
|
|||
|
3.3. Example DNSSEC Responses
|
|||
|
|
|||
|
See Appendix B for example response packets.
|
|||
|
|
|||
|
4. Resolving
|
|||
|
|
|||
|
This section describes the behavior of entities that include
|
|||
|
security-aware resolver functions. In many cases such functions will
|
|||
|
be part of a security-aware recursive name server, but a stand-alone
|
|||
|
security-aware resolver has many of the same requirements. Functions
|
|||
|
specific to security-aware recursive name servers are described in
|
|||
|
Section 3.2.
|
|||
|
|
|||
|
4.1. EDNS Support
|
|||
|
|
|||
|
A security-aware resolver MUST include an EDNS ([RFC2671]) OPT
|
|||
|
pseudo-RR with the DO ([RFC3225]) bit set when sending queries.
|
|||
|
|
|||
|
A security-aware resolver MUST support a message size of at least
|
|||
|
1220 octets, SHOULD support a message size of 4000 octets, and MUST
|
|||
|
use the "sender's UDP payload size" field in the EDNS OPT pseudo-RR
|
|||
|
to advertise the message size that it is willing to accept. A
|
|||
|
security-aware resolver's IP layer MUST handle fragmented UDP packets
|
|||
|
correctly regardless of whether any such fragmented packets were
|
|||
|
received via IPv4 or IPv6. Please see [RFC1122], [RFC2460], and
|
|||
|
[RFC3226] for discussion of these requirements.
|
|||
|
|
|||
|
4.2. Signature Verification Support
|
|||
|
|
|||
|
A security-aware resolver MUST support the signature verification
|
|||
|
mechanisms described in Section 5 and SHOULD apply them to every
|
|||
|
received response, except when:
|
|||
|
|
|||
|
o the security-aware resolver is part of a security-aware recursive
|
|||
|
name server, and the response is the result of recursion on behalf
|
|||
|
of a query received with the CD bit set;
|
|||
|
|
|||
|
o the response is the result of a query generated directly via some
|
|||
|
form of application interface that instructed the security-aware
|
|||
|
resolver not to perform validation for this query; or
|
|||
|
|
|||
|
o validation for this query has been disabled by local policy.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 19]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
A security-aware resolver's support for signature verification MUST
|
|||
|
include support for verification of wildcard owner names.
|
|||
|
|
|||
|
Security-aware resolvers MAY query for missing security RRs in an
|
|||
|
attempt to perform validation; implementations that choose to do so
|
|||
|
must be aware that the answers received may not be sufficient to
|
|||
|
validate the original response. For example, a zone update may have
|
|||
|
changed (or deleted) the desired information between the original and
|
|||
|
follow-up queries.
|
|||
|
|
|||
|
When attempting to retrieve missing NSEC RRs that reside on the
|
|||
|
parental side at a zone cut, a security-aware iterative-mode resolver
|
|||
|
MUST query the name servers for the parent zone, not the child zone.
|
|||
|
|
|||
|
When attempting to retrieve a missing DS, a security-aware
|
|||
|
iterative-mode resolver MUST query the name servers for the parent
|
|||
|
zone, not the child zone. As explained in Section 3.1.4.1,
|
|||
|
security-aware name servers need to apply special processing rules to
|
|||
|
handle the DS RR, and in some situations the resolver may also need
|
|||
|
to apply special rules to locate the name servers for the parent zone
|
|||
|
if the resolver does not already have the parent's NS RRset. To
|
|||
|
locate the parent NS RRset, the resolver can start with the
|
|||
|
delegation name, strip off the leftmost label, and query for an NS
|
|||
|
RRset by that name. If no NS RRset is present at that name, the
|
|||
|
resolver then strips off the leftmost remaining label and retries the
|
|||
|
query for that name, repeating this process of walking up the tree
|
|||
|
until it either finds the NS RRset or runs out of labels.
|
|||
|
|
|||
|
4.3. Determining Security Status of Data
|
|||
|
|
|||
|
A security-aware resolver MUST be able to determine whether it should
|
|||
|
expect a particular RRset to be signed. More precisely, a
|
|||
|
security-aware resolver must be able to distinguish between four
|
|||
|
cases:
|
|||
|
|
|||
|
Secure: An RRset for which the resolver is able to build a chain of
|
|||
|
signed DNSKEY and DS RRs from a trusted security anchor to the
|
|||
|
RRset. In this case, the RRset should be signed and is subject to
|
|||
|
signature validation, as described above.
|
|||
|
|
|||
|
Insecure: An RRset for which the resolver knows that it has no chain
|
|||
|
of signed DNSKEY and DS RRs from any trusted starting point to the
|
|||
|
RRset. This can occur when the target RRset lies in an unsigned
|
|||
|
zone or in a descendent of an unsigned zone. In this case, the
|
|||
|
RRset may or may not be signed, but the resolver will not be able
|
|||
|
to verify the signature.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 20]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
Bogus: An RRset for which the resolver believes that it ought to be
|
|||
|
able to establish a chain of trust but for which it is unable to
|
|||
|
do so, either due to signatures that for some reason fail to
|
|||
|
validate or due to missing data that the relevant DNSSEC RRs
|
|||
|
indicate should be present. This case may indicate an attack but
|
|||
|
may also indicate a configuration error or some form of data
|
|||
|
corruption.
|
|||
|
|
|||
|
Indeterminate: An RRset for which the resolver is not able to
|
|||
|
determine whether the RRset should be signed, as the resolver is
|
|||
|
not able to obtain the necessary DNSSEC RRs. This can occur when
|
|||
|
the security-aware resolver is not able to contact security-aware
|
|||
|
name servers for the relevant zones.
|
|||
|
|
|||
|
4.4. Configured Trust Anchors
|
|||
|
|
|||
|
A security-aware resolver MUST be capable of being configured with at
|
|||
|
least one trusted public key or DS RR and SHOULD be capable of being
|
|||
|
configured with multiple trusted public keys or DS RRs. Since a
|
|||
|
security-aware resolver will not be able to validate signatures
|
|||
|
without such a configured trust anchor, the resolver SHOULD have some
|
|||
|
reasonably robust mechanism for obtaining such keys when it boots;
|
|||
|
examples of such a mechanism would be some form of non-volatile
|
|||
|
storage (such as a disk drive) or some form of trusted local network
|
|||
|
configuration mechanism.
|
|||
|
|
|||
|
Note that trust anchors also cover key material that is updated in a
|
|||
|
secure manner. This secure manner could be through physical media, a
|
|||
|
key exchange protocol, or some other out-of-band means.
|
|||
|
|
|||
|
4.5. Response Caching
|
|||
|
|
|||
|
A security-aware resolver SHOULD cache each response as a single
|
|||
|
atomic entry containing the entire answer, including the named RRset
|
|||
|
and any associated DNSSEC RRs. The resolver SHOULD discard the
|
|||
|
entire atomic entry when any of the RRs contained in it expire. In
|
|||
|
most cases the appropriate cache index for the atomic entry will be
|
|||
|
the triple <QNAME, QTYPE, QCLASS>, but in cases such as the response
|
|||
|
form described in Section 3.1.3.2 the appropriate cache index will be
|
|||
|
the double <QNAME,QCLASS>.
|
|||
|
|
|||
|
The reason for these recommendations is that, between the initial
|
|||
|
query and the expiration of the data from the cache, the
|
|||
|
authoritative data might have been changed (for example, via dynamic
|
|||
|
update).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 21]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
There are two situations for which this is relevant:
|
|||
|
|
|||
|
1. By using the RRSIG record, it is possible to deduce that an
|
|||
|
answer was synthesized from a wildcard. A security-aware
|
|||
|
recursive name server could store this wildcard data and use it
|
|||
|
to generate positive responses to queries other than the name for
|
|||
|
which the original answer was first received.
|
|||
|
|
|||
|
2. NSEC RRs received to prove the non-existence of a name could be
|
|||
|
reused by a security-aware resolver to prove the non-existence of
|
|||
|
any name in the name range it spans.
|
|||
|
|
|||
|
In theory, a resolver could use wildcards or NSEC RRs to generate
|
|||
|
positive and negative responses (respectively) until the TTL or
|
|||
|
signatures on the records in question expire. However, it seems
|
|||
|
prudent for resolvers to avoid blocking new authoritative data or
|
|||
|
synthesizing new data on their own. Resolvers that follow this
|
|||
|
recommendation will have a more consistent view of the namespace.
|
|||
|
|
|||
|
4.6. Handling of the CD and AD Bits
|
|||
|
|
|||
|
A security-aware resolver MAY set a query's CD bit in order to
|
|||
|
indicate that the resolver takes responsibility for performing
|
|||
|
whatever authentication its local policy requires on the RRsets in
|
|||
|
the response. See Section 3.2 for the effect this bit has on the
|
|||
|
behavior of security-aware recursive name servers.
|
|||
|
|
|||
|
A security-aware resolver MUST clear the AD bit when composing query
|
|||
|
messages to protect against buggy name servers that blindly copy
|
|||
|
header bits that they do not understand from the query message to the
|
|||
|
response message.
|
|||
|
|
|||
|
A resolver MUST disregard the meaning of the CD and AD bits in a
|
|||
|
response unless the response was obtained by using a secure channel
|
|||
|
or the resolver was specifically configured to regard the message
|
|||
|
header bits without using a secure channel.
|
|||
|
|
|||
|
4.7. Caching BAD Data
|
|||
|
|
|||
|
While many validation errors will be transient, some are likely to be
|
|||
|
more persistent, such as those caused by administrative error
|
|||
|
(failure to re-sign a zone, clock skew, and so forth). Since
|
|||
|
requerying will not help in these cases, validating resolvers might
|
|||
|
generate a significant amount of unnecessary DNS traffic as a result
|
|||
|
of repeated queries for RRsets with persistent validation failures.
|
|||
|
|
|||
|
To prevent such unnecessary DNS traffic, security-aware resolvers MAY
|
|||
|
cache data with invalid signatures, with some restrictions.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 22]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
Conceptually, caching such data is similar to negative caching
|
|||
|
([RFC2308]), except that instead of caching a valid negative
|
|||
|
response, the resolver is caching the fact that a particular answer
|
|||
|
failed to validate. This document refers to a cache of data with
|
|||
|
invalid signatures as a "BAD cache".
|
|||
|
|
|||
|
Resolvers that implement a BAD cache MUST take steps to prevent the
|
|||
|
cache from being useful as a denial-of-service attack amplifier,
|
|||
|
particularly the following:
|
|||
|
|
|||
|
o Since RRsets that fail to validate do not have trustworthy TTLs,
|
|||
|
the implementation MUST assign a TTL. This TTL SHOULD be small,
|
|||
|
in order to mitigate the effect of caching the results of an
|
|||
|
attack.
|
|||
|
|
|||
|
o In order to prevent caching of a transient validation failure
|
|||
|
(which might be the result of an attack), resolvers SHOULD track
|
|||
|
queries that result in validation failures and SHOULD only answer
|
|||
|
from the BAD cache after the number of times that responses to
|
|||
|
queries for that particular <QNAME, QTYPE, QCLASS> have failed to
|
|||
|
validate exceeds a threshold value.
|
|||
|
|
|||
|
Resolvers MUST NOT return RRsets from the BAD cache unless the
|
|||
|
resolver is not required to validate the signatures of the RRsets in
|
|||
|
question under the rules given in Section 4.2 of this document. See
|
|||
|
Section 3.2.2 for discussion of how the responses returned by a
|
|||
|
security-aware recursive name server interact with a BAD cache.
|
|||
|
|
|||
|
4.8. Synthesized CNAMEs
|
|||
|
|
|||
|
A validating security-aware resolver MUST treat the signature of a
|
|||
|
valid signed DNAME RR as also covering unsigned CNAME RRs that could
|
|||
|
have been synthesized from the DNAME RR, as described in [RFC2672],
|
|||
|
at least to the extent of not rejecting a response message solely
|
|||
|
because it contains such CNAME RRs. The resolver MAY retain such
|
|||
|
CNAME RRs in its cache or in the answers it hands back, but is not
|
|||
|
required to do so.
|
|||
|
|
|||
|
4.9. Stub Resolvers
|
|||
|
|
|||
|
A security-aware stub resolver MUST support the DNSSEC RR types, at
|
|||
|
least to the extent of not mishandling responses just because they
|
|||
|
contain DNSSEC RRs.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 23]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
4.9.1. Handling of the DO Bit
|
|||
|
|
|||
|
A non-validating security-aware stub resolver MAY include the DNSSEC
|
|||
|
RRs returned by a security-aware recursive name server as part of the
|
|||
|
data that the stub resolver hands back to the application that
|
|||
|
invoked it, but is not required to do so. A non-validating stub
|
|||
|
resolver that seeks to do this will need to set the DO bit in order
|
|||
|
to receive DNSSEC RRs from the recursive name server.
|
|||
|
|
|||
|
A validating security-aware stub resolver MUST set the DO bit,
|
|||
|
because otherwise it will not receive the DNSSEC RRs it needs to
|
|||
|
perform signature validation.
|
|||
|
|
|||
|
4.9.2. Handling of the CD Bit
|
|||
|
|
|||
|
A non-validating security-aware stub resolver SHOULD NOT set the CD
|
|||
|
bit when sending queries unless it is requested by the application
|
|||
|
layer, as by definition, a non-validating stub resolver depends on
|
|||
|
the security-aware recursive name server to perform validation on its
|
|||
|
behalf.
|
|||
|
|
|||
|
A validating security-aware stub resolver SHOULD set the CD bit,
|
|||
|
because otherwise the security-aware recursive name server will
|
|||
|
answer the query using the name server's local policy, which may
|
|||
|
prevent the stub resolver from receiving data that would be
|
|||
|
acceptable to the stub resolver's local policy.
|
|||
|
|
|||
|
4.9.3. Handling of the AD Bit
|
|||
|
|
|||
|
A non-validating security-aware stub resolver MAY chose to examine
|
|||
|
the setting of the AD bit in response messages that it receives in
|
|||
|
order to determine whether the security-aware recursive name server
|
|||
|
that sent the response claims to have cryptographically verified the
|
|||
|
data in the Answer and Authority sections of the response message.
|
|||
|
Note, however, that the responses received by a security-aware stub
|
|||
|
resolver are heavily dependent on the local policy of the
|
|||
|
security-aware recursive name server. Therefore, there may be little
|
|||
|
practical value in checking the status of the AD bit, except perhaps
|
|||
|
as a debugging aid. In any case, a security-aware stub resolver MUST
|
|||
|
NOT place any reliance on signature validation allegedly performed on
|
|||
|
its behalf, except when the security-aware stub resolver obtained the
|
|||
|
data in question from a trusted security-aware recursive name server
|
|||
|
via a secure channel.
|
|||
|
|
|||
|
A validating security-aware stub resolver SHOULD NOT examine the
|
|||
|
setting of the AD bit in response messages, as, by definition, the
|
|||
|
stub resolver performs its own signature validation regardless of the
|
|||
|
setting of the AD bit.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 24]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
5. Authenticating DNS Responses
|
|||
|
|
|||
|
To use DNSSEC RRs for authentication, a security-aware resolver
|
|||
|
requires configured knowledge of at least one authenticated DNSKEY or
|
|||
|
DS RR. The process for obtaining and authenticating this initial
|
|||
|
trust anchor is achieved via some external mechanism. For example, a
|
|||
|
resolver could use some off-line authenticated exchange to obtain a
|
|||
|
zone's DNSKEY RR or to obtain a DS RR that identifies and
|
|||
|
authenticates a zone's DNSKEY RR. The remainder of this section
|
|||
|
assumes that the resolver has somehow obtained an initial set of
|
|||
|
trust anchors.
|
|||
|
|
|||
|
An initial DNSKEY RR can be used to authenticate a zone's apex DNSKEY
|
|||
|
RRset. To authenticate an apex DNSKEY RRset by using an initial key,
|
|||
|
the resolver MUST:
|
|||
|
|
|||
|
1. verify that the initial DNSKEY RR appears in the apex DNSKEY
|
|||
|
RRset, and that the DNSKEY RR has the Zone Key Flag (DNSKEY RDATA
|
|||
|
bit 7) set; and
|
|||
|
|
|||
|
2. verify that there is some RRSIG RR that covers the apex DNSKEY
|
|||
|
RRset, and that the combination of the RRSIG RR and the initial
|
|||
|
DNSKEY RR authenticates the DNSKEY RRset. The process for using
|
|||
|
an RRSIG RR to authenticate an RRset is described in Section 5.3.
|
|||
|
|
|||
|
Once the resolver has authenticated the apex DNSKEY RRset by using an
|
|||
|
initial DNSKEY RR, delegations from that zone can be authenticated by
|
|||
|
using DS RRs. This allows a resolver to start from an initial key
|
|||
|
and use DS RRsets to proceed recursively down the DNS tree, obtaining
|
|||
|
other apex DNSKEY RRsets. If the resolver were configured with a
|
|||
|
root DNSKEY RR, and if every delegation had a DS RR associated with
|
|||
|
it, then the resolver could obtain and validate any apex DNSKEY
|
|||
|
RRset. The process of using DS RRs to authenticate referrals is
|
|||
|
described in Section 5.2.
|
|||
|
|
|||
|
Section 5.3 shows how the resolver can use DNSKEY RRs in the apex
|
|||
|
DNSKEY RRset and RRSIG RRs from the zone to authenticate any other
|
|||
|
RRsets in the zone once the resolver has authenticated a zone's apex
|
|||
|
DNSKEY RRset. Section 5.4 shows how the resolver can use
|
|||
|
authenticated NSEC RRsets from the zone to prove that an RRset is not
|
|||
|
present in the zone.
|
|||
|
|
|||
|
When a resolver indicates support for DNSSEC (by setting the DO bit),
|
|||
|
a security-aware name server should attempt to provide the necessary
|
|||
|
DNSKEY, RRSIG, NSEC, and DS RRsets in a response (see Section 3).
|
|||
|
However, a security-aware resolver may still receive a response that
|
|||
|
lacks the appropriate DNSSEC RRs, whether due to configuration issues
|
|||
|
such as an upstream security-oblivious recursive name server that
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 25]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
accidentally interferes with DNSSEC RRs or due to a deliberate attack
|
|||
|
in which an adversary forges a response, strips DNSSEC RRs from a
|
|||
|
response, or modifies a query so that DNSSEC RRs appear not to be
|
|||
|
requested. The absence of DNSSEC data in a response MUST NOT by
|
|||
|
itself be taken as an indication that no authentication information
|
|||
|
exists.
|
|||
|
|
|||
|
A resolver SHOULD expect authentication information from signed
|
|||
|
zones. A resolver SHOULD believe that a zone is signed if the
|
|||
|
resolver has been configured with public key information for the
|
|||
|
zone, or if the zone's parent is signed and the delegation from the
|
|||
|
parent contains a DS RRset.
|
|||
|
|
|||
|
5.1. Special Considerations for Islands of Security
|
|||
|
|
|||
|
Islands of security (see [RFC4033]) are signed zones for which it is
|
|||
|
not possible to construct an authentication chain to the zone from
|
|||
|
its parent. Validating signatures within an island of security
|
|||
|
requires that the validator have some other means of obtaining an
|
|||
|
initial authenticated zone key for the island. If a validator cannot
|
|||
|
obtain such a key, it SHOULD switch to operating as if the zones in
|
|||
|
the island of security are unsigned.
|
|||
|
|
|||
|
All the normal processes for validating responses apply to islands of
|
|||
|
security. The only difference between normal validation and
|
|||
|
validation within an island of security is in how the validator
|
|||
|
obtains a trust anchor for the authentication chain.
|
|||
|
|
|||
|
5.2. Authenticating Referrals
|
|||
|
|
|||
|
Once the apex DNSKEY RRset for a signed parent zone has been
|
|||
|
authenticated, DS RRsets can be used to authenticate the delegation
|
|||
|
to a signed child zone. A DS RR identifies a DNSKEY RR in the child
|
|||
|
zone's apex DNSKEY RRset and contains a cryptographic digest of the
|
|||
|
child zone's DNSKEY RR. Use of a strong cryptographic digest
|
|||
|
algorithm ensures that it is computationally infeasible for an
|
|||
|
adversary to generate a DNSKEY RR that matches the digest. Thus,
|
|||
|
authenticating the digest allows a resolver to authenticate the
|
|||
|
matching DNSKEY RR. The resolver can then use this child DNSKEY RR
|
|||
|
to authenticate the entire child apex DNSKEY RRset.
|
|||
|
|
|||
|
Given a DS RR for a delegation, the child zone's apex DNSKEY RRset
|
|||
|
can be authenticated if all of the following hold:
|
|||
|
|
|||
|
o The DS RR has been authenticated using some DNSKEY RR in the
|
|||
|
parent's apex DNSKEY RRset (see Section 5.3).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 26]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
o The Algorithm and Key Tag in the DS RR match the Algorithm field
|
|||
|
and the key tag of a DNSKEY RR in the child zone's apex DNSKEY
|
|||
|
RRset, and, when the DNSKEY RR's owner name and RDATA are hashed
|
|||
|
using the digest algorithm specified in the DS RR's Digest Type
|
|||
|
field, the resulting digest value matches the Digest field of the
|
|||
|
DS RR.
|
|||
|
|
|||
|
o The matching DNSKEY RR in the child zone has the Zone Flag bit
|
|||
|
set, the corresponding private key has signed the child zone's
|
|||
|
apex DNSKEY RRset, and the resulting RRSIG RR authenticates the
|
|||
|
child zone's apex DNSKEY RRset.
|
|||
|
|
|||
|
If the referral from the parent zone did not contain a DS RRset, the
|
|||
|
response should have included a signed NSEC RRset proving that no DS
|
|||
|
RRset exists for the delegated name (see Section 3.1.4). A
|
|||
|
security-aware resolver MUST query the name servers for the parent
|
|||
|
zone for the DS RRset if the referral includes neither a DS RRset nor
|
|||
|
a NSEC RRset proving that the DS RRset does not exist (see Section
|
|||
|
4).
|
|||
|
|
|||
|
If the validator authenticates an NSEC RRset that proves that no DS
|
|||
|
RRset is present for this zone, then there is no authentication path
|
|||
|
leading from the parent to the child. If the resolver has an initial
|
|||
|
DNSKEY or DS RR that belongs to the child zone or to any delegation
|
|||
|
below the child zone, this initial DNSKEY or DS RR MAY be used to
|
|||
|
re-establish an authentication path. If no such initial DNSKEY or DS
|
|||
|
RR exists, the validator cannot authenticate RRsets in or below the
|
|||
|
child zone.
|
|||
|
|
|||
|
If the validator does not support any of the algorithms listed in an
|
|||
|
authenticated DS RRset, then the resolver has no supported
|
|||
|
authentication path leading from the parent to the child. The
|
|||
|
resolver should treat this case as it would the case of an
|
|||
|
authenticated NSEC RRset proving that no DS RRset exists, as
|
|||
|
described above.
|
|||
|
|
|||
|
Note that, for a signed delegation, there are two NSEC RRs associated
|
|||
|
with the delegated name. One NSEC RR resides in the parent zone and
|
|||
|
can be used to prove whether a DS RRset exists for the delegated
|
|||
|
name. The second NSEC RR resides in the child zone and identifies
|
|||
|
which RRsets are present at the apex of the child zone. The parent
|
|||
|
NSEC RR and child NSEC RR can always be distinguished because the SOA
|
|||
|
bit will be set in the child NSEC RR and clear in the parent NSEC RR.
|
|||
|
A security-aware resolver MUST use the parent NSEC RR when attempting
|
|||
|
to prove that a DS RRset does not exist.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 27]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
If the resolver does not support any of the algorithms listed in an
|
|||
|
authenticated DS RRset, then the resolver will not be able to verify
|
|||
|
the authentication path to the child zone. In this case, the
|
|||
|
resolver SHOULD treat the child zone as if it were unsigned.
|
|||
|
|
|||
|
5.3. Authenticating an RRset with an RRSIG RR
|
|||
|
|
|||
|
A validator can use an RRSIG RR and its corresponding DNSKEY RR to
|
|||
|
attempt to authenticate RRsets. The validator first checks the RRSIG
|
|||
|
RR to verify that it covers the RRset, has a valid time interval, and
|
|||
|
identifies a valid DNSKEY RR. The validator then constructs the
|
|||
|
canonical form of the signed data by appending the RRSIG RDATA
|
|||
|
(excluding the Signature Field) with the canonical form of the
|
|||
|
covered RRset. Finally, the validator uses the public key and
|
|||
|
signature to authenticate the signed data. Sections 5.3.1, 5.3.2,
|
|||
|
and 5.3.3 describe each step in detail.
|
|||
|
|
|||
|
5.3.1. Checking the RRSIG RR Validity
|
|||
|
|
|||
|
A security-aware resolver can use an RRSIG RR to authenticate an
|
|||
|
RRset if all of the following conditions hold:
|
|||
|
|
|||
|
o The RRSIG RR and the RRset MUST have the same owner name and the
|
|||
|
same class.
|
|||
|
|
|||
|
o The RRSIG RR's Signer's Name field MUST be the name of the zone
|
|||
|
that contains the RRset.
|
|||
|
|
|||
|
o The RRSIG RR's Type Covered field MUST equal the RRset's type.
|
|||
|
|
|||
|
o The number of labels in the RRset owner name MUST be greater than
|
|||
|
or equal to the value in the RRSIG RR's Labels field.
|
|||
|
|
|||
|
o The validator's notion of the current time MUST be less than or
|
|||
|
equal to the time listed in the RRSIG RR's Expiration field.
|
|||
|
|
|||
|
o The validator's notion of the current time MUST be greater than or
|
|||
|
equal to the time listed in the RRSIG RR's Inception field.
|
|||
|
|
|||
|
o The RRSIG RR's Signer's Name, Algorithm, and Key Tag fields MUST
|
|||
|
match the owner name, algorithm, and key tag for some DNSKEY RR in
|
|||
|
the zone's apex DNSKEY RRset.
|
|||
|
|
|||
|
o The matching DNSKEY RR MUST be present in the zone's apex DNSKEY
|
|||
|
RRset, and MUST have the Zone Flag bit (DNSKEY RDATA Flag bit 7)
|
|||
|
set.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 28]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
It is possible for more than one DNSKEY RR to match the conditions
|
|||
|
above. In this case, the validator cannot predetermine which DNSKEY
|
|||
|
RR to use to authenticate the signature, and it MUST try each
|
|||
|
matching DNSKEY RR until either the signature is validated or the
|
|||
|
validator has run out of matching public keys to try.
|
|||
|
|
|||
|
Note that this authentication process is only meaningful if the
|
|||
|
validator authenticates the DNSKEY RR before using it to validate
|
|||
|
signatures. The matching DNSKEY RR is considered to be authentic if:
|
|||
|
|
|||
|
o the apex DNSKEY RRset containing the DNSKEY RR is considered
|
|||
|
authentic; or
|
|||
|
|
|||
|
o the RRset covered by the RRSIG RR is the apex DNSKEY RRset itself,
|
|||
|
and the DNSKEY RR either matches an authenticated DS RR from the
|
|||
|
parent zone or matches a trust anchor.
|
|||
|
|
|||
|
5.3.2. Reconstructing the Signed Data
|
|||
|
|
|||
|
Once the RRSIG RR has met the validity requirements described in
|
|||
|
Section 5.3.1, the validator has to reconstruct the original signed
|
|||
|
data. The original signed data includes RRSIG RDATA (excluding the
|
|||
|
Signature field) and the canonical form of the RRset. Aside from
|
|||
|
being ordered, the canonical form of the RRset might also differ from
|
|||
|
the received RRset due to DNS name compression, decremented TTLs, or
|
|||
|
wildcard expansion. The validator should use the following to
|
|||
|
reconstruct the original signed data:
|
|||
|
|
|||
|
signed_data = RRSIG_RDATA | RR(1) | RR(2)... where
|
|||
|
|
|||
|
"|" denotes concatenation
|
|||
|
|
|||
|
RRSIG_RDATA is the wire format of the RRSIG RDATA fields
|
|||
|
with the Signature field excluded and the Signer's Name
|
|||
|
in canonical form.
|
|||
|
|
|||
|
RR(i) = name | type | class | OrigTTL | RDATA length | RDATA
|
|||
|
|
|||
|
name is calculated according to the function below
|
|||
|
|
|||
|
class is the RRset's class
|
|||
|
|
|||
|
type is the RRset type and all RRs in the class
|
|||
|
|
|||
|
OrigTTL is the value from the RRSIG Original TTL field
|
|||
|
|
|||
|
All names in the RDATA field are in canonical form
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 29]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
The set of all RR(i) is sorted into canonical order.
|
|||
|
|
|||
|
To calculate the name:
|
|||
|
let rrsig_labels = the value of the RRSIG Labels field
|
|||
|
|
|||
|
let fqdn = RRset's fully qualified domain name in
|
|||
|
canonical form
|
|||
|
|
|||
|
let fqdn_labels = Label count of the fqdn above.
|
|||
|
|
|||
|
if rrsig_labels = fqdn_labels,
|
|||
|
name = fqdn
|
|||
|
|
|||
|
if rrsig_labels < fqdn_labels,
|
|||
|
name = "*." | the rightmost rrsig_label labels of the
|
|||
|
fqdn
|
|||
|
|
|||
|
if rrsig_labels > fqdn_labels
|
|||
|
the RRSIG RR did not pass the necessary validation
|
|||
|
checks and MUST NOT be used to authenticate this
|
|||
|
RRset.
|
|||
|
|
|||
|
The canonical forms for names and RRsets are defined in [RFC4034].
|
|||
|
|
|||
|
NSEC RRsets at a delegation boundary require special processing.
|
|||
|
There are two distinct NSEC RRsets associated with a signed delegated
|
|||
|
name. One NSEC RRset resides in the parent zone, and specifies which
|
|||
|
RRsets are present at the parent zone. The second NSEC RRset resides
|
|||
|
at the child zone and identifies which RRsets are present at the apex
|
|||
|
in the child zone. The parent NSEC RRset and child NSEC RRset can
|
|||
|
always be distinguished as only a child NSEC RR will indicate that an
|
|||
|
SOA RRset exists at the name. When reconstructing the original NSEC
|
|||
|
RRset for the delegation from the parent zone, the NSEC RRs MUST NOT
|
|||
|
be combined with NSEC RRs from the child zone. When reconstructing
|
|||
|
the original NSEC RRset for the apex of the child zone, the NSEC RRs
|
|||
|
MUST NOT be combined with NSEC RRs from the parent zone.
|
|||
|
|
|||
|
Note that each of the two NSEC RRsets at a delegation point has a
|
|||
|
corresponding RRSIG RR with an owner name matching the delegated
|
|||
|
name, and each of these RRSIG RRs is authoritative data associated
|
|||
|
with the same zone that contains the corresponding NSEC RRset. If
|
|||
|
necessary, a resolver can tell these RRSIG RRs apart by checking the
|
|||
|
Signer's Name field.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 30]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
5.3.3. Checking the Signature
|
|||
|
|
|||
|
Once the resolver has validated the RRSIG RR as described in Section
|
|||
|
5.3.1 and reconstructed the original signed data as described in
|
|||
|
Section 5.3.2, the validator can attempt to use the cryptographic
|
|||
|
signature to authenticate the signed data, and thus (finally!)
|
|||
|
authenticate the RRset.
|
|||
|
|
|||
|
The Algorithm field in the RRSIG RR identifies the cryptographic
|
|||
|
algorithm used to generate the signature. The signature itself is
|
|||
|
contained in the Signature field of the RRSIG RDATA, and the public
|
|||
|
key used to verify the signature is contained in the Public Key field
|
|||
|
of the matching DNSKEY RR(s) (found in Section 5.3.1). [RFC4034]
|
|||
|
provides a list of algorithm types and provides pointers to the
|
|||
|
documents that define each algorithm's use.
|
|||
|
|
|||
|
Note that it is possible for more than one DNSKEY RR to match the
|
|||
|
conditions in Section 5.3.1. In this case, the validator can only
|
|||
|
determine which DNSKEY RR is correct by trying each matching public
|
|||
|
key until the validator either succeeds in validating the signature
|
|||
|
or runs out of keys to try.
|
|||
|
|
|||
|
If the Labels field of the RRSIG RR is not equal to the number of
|
|||
|
labels in the RRset's fully qualified owner name, then the RRset is
|
|||
|
either invalid or the result of wildcard expansion. The resolver
|
|||
|
MUST verify that wildcard expansion was applied properly before
|
|||
|
considering the RRset to be authentic. Section 5.3.4 describes how
|
|||
|
to determine whether a wildcard was applied properly.
|
|||
|
|
|||
|
If other RRSIG RRs also cover this RRset, the local resolver security
|
|||
|
policy determines whether the resolver also has to test these RRSIG
|
|||
|
RRs and how to resolve conflicts if these RRSIG RRs lead to differing
|
|||
|
results.
|
|||
|
|
|||
|
If the resolver accepts the RRset as authentic, the validator MUST
|
|||
|
set the TTL of the RRSIG RR and each RR in the authenticated RRset to
|
|||
|
a value no greater than the minimum of:
|
|||
|
|
|||
|
o the RRset's TTL as received in the response;
|
|||
|
|
|||
|
o the RRSIG RR's TTL as received in the response;
|
|||
|
|
|||
|
o the value in the RRSIG RR's Original TTL field; and
|
|||
|
|
|||
|
o the difference of the RRSIG RR's Signature Expiration time and the
|
|||
|
current time.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 31]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
5.3.4. Authenticating a Wildcard Expanded RRset Positive Response
|
|||
|
|
|||
|
If the number of labels in an RRset's owner name is greater than the
|
|||
|
Labels field of the covering RRSIG RR, then the RRset and its
|
|||
|
covering RRSIG RR were created as a result of wildcard expansion.
|
|||
|
Once the validator has verified the signature, as described in
|
|||
|
Section 5.3, it must take additional steps to verify the non-
|
|||
|
existence of an exact match or closer wildcard match for the query.
|
|||
|
Section 5.4 discusses these steps.
|
|||
|
|
|||
|
Note that the response received by the resolver should include all
|
|||
|
NSEC RRs needed to authenticate the response (see Section 3.1.3).
|
|||
|
|
|||
|
5.4. Authenticated Denial of Existence
|
|||
|
|
|||
|
A resolver can use authenticated NSEC RRs to prove that an RRset is
|
|||
|
not present in a signed zone. Security-aware name servers should
|
|||
|
automatically include any necessary NSEC RRs for signed zones in
|
|||
|
their responses to security-aware resolvers.
|
|||
|
|
|||
|
Denial of existence is determined by the following rules:
|
|||
|
|
|||
|
o If the requested RR name matches the owner name of an
|
|||
|
authenticated NSEC RR, then the NSEC RR's type bit map field lists
|
|||
|
all RR types present at that owner name, and a resolver can prove
|
|||
|
that the requested RR type does not exist by checking for the RR
|
|||
|
type in the bit map. If the number of labels in an authenticated
|
|||
|
NSEC RR's owner name equals the Labels field of the covering RRSIG
|
|||
|
RR, then the existence of the NSEC RR proves that wildcard
|
|||
|
expansion could not have been used to match the request.
|
|||
|
|
|||
|
o If the requested RR name would appear after an authenticated NSEC
|
|||
|
RR's owner name and before the name listed in that NSEC RR's Next
|
|||
|
Domain Name field according to the canonical DNS name order
|
|||
|
defined in [RFC4034], then no RRsets with the requested name exist
|
|||
|
in the zone. However, it is possible that a wildcard could be
|
|||
|
used to match the requested RR owner name and type, so proving
|
|||
|
that the requested RRset does not exist also requires proving that
|
|||
|
no possible wildcard RRset exists that could have been used to
|
|||
|
generate a positive response.
|
|||
|
|
|||
|
In addition, security-aware resolvers MUST authenticate the NSEC
|
|||
|
RRsets that comprise the non-existence proof as described in Section
|
|||
|
5.3.
|
|||
|
|
|||
|
To prove the non-existence of an RRset, the resolver must be able to
|
|||
|
verify both that the queried RRset does not exist and that no
|
|||
|
relevant wildcard RRset exists. Proving this may require more than
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 32]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
one NSEC RRset from the zone. If the complete set of necessary NSEC
|
|||
|
RRsets is not present in a response (perhaps due to message
|
|||
|
truncation), then a security-aware resolver MUST resend the query in
|
|||
|
order to attempt to obtain the full collection of NSEC RRs necessary
|
|||
|
to verify the non-existence of the requested RRset. As with all DNS
|
|||
|
operations, however, the resolver MUST bound the work it puts into
|
|||
|
answering any particular query.
|
|||
|
|
|||
|
Since a validated NSEC RR proves the existence of both itself and its
|
|||
|
corresponding RRSIG RR, a validator MUST ignore the settings of the
|
|||
|
NSEC and RRSIG bits in an NSEC RR.
|
|||
|
|
|||
|
5.5. Resolver Behavior When Signatures Do Not Validate
|
|||
|
|
|||
|
If for whatever reason none of the RRSIGs can be validated, the
|
|||
|
response SHOULD be considered BAD. If the validation was being done
|
|||
|
to service a recursive query, the name server MUST return RCODE 2 to
|
|||
|
the originating client. However, it MUST return the full response if
|
|||
|
and only if the original query had the CD bit set. Also see Section
|
|||
|
4.7 on caching responses that do not validate.
|
|||
|
|
|||
|
5.6. Authentication Example
|
|||
|
|
|||
|
Appendix C shows an example of the authentication process.
|
|||
|
|
|||
|
6. IANA Considerations
|
|||
|
|
|||
|
[RFC4034] contains a review of the IANA considerations introduced by
|
|||
|
DNSSEC. The following are additional IANA considerations discussed
|
|||
|
in this document:
|
|||
|
|
|||
|
[RFC2535] reserved the CD and AD bits in the message header. The
|
|||
|
meaning of the AD bit was redefined in [RFC3655], and the meaning of
|
|||
|
both the CD and AD bit are restated in this document. No new bits in
|
|||
|
the DNS message header are defined in this document.
|
|||
|
|
|||
|
[RFC2671] introduced EDNS, and [RFC3225] reserved the DNSSEC OK bit
|
|||
|
and defined its use. The use is restated but not altered in this
|
|||
|
document.
|
|||
|
|
|||
|
7. Security Considerations
|
|||
|
|
|||
|
This document describes how the DNS security extensions use public
|
|||
|
key cryptography to sign and authenticate DNS resource record sets.
|
|||
|
Please see [RFC4033] for terminology and general security
|
|||
|
considerations related to DNSSEC; see [RFC4034] for considerations
|
|||
|
specific to the DNSSEC resource record types.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 33]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
An active attacker who can set the CD bit in a DNS query message or
|
|||
|
the AD bit in a DNS response message can use these bits to defeat the
|
|||
|
protection that DNSSEC attempts to provide to security-oblivious
|
|||
|
recursive-mode resolvers. For this reason, use of these control bits
|
|||
|
by a security-aware recursive-mode resolver requires a secure
|
|||
|
channel. See Sections 3.2.2 and 4.9 for further discussion.
|
|||
|
|
|||
|
The protocol described in this document attempts to extend the
|
|||
|
benefits of DNSSEC to security-oblivious stub resolvers. However, as
|
|||
|
recovery from validation failures is likely to be specific to
|
|||
|
particular applications, the facilities that DNSSEC provides for stub
|
|||
|
resolvers may prove inadequate. Operators of security-aware
|
|||
|
recursive name servers will have to pay close attention to the
|
|||
|
behavior of the applications that use their services when choosing a
|
|||
|
local validation policy; failure to do so could easily result in the
|
|||
|
recursive name server accidentally denying service to the clients it
|
|||
|
is intended to support.
|
|||
|
|
|||
|
8. Acknowledgements
|
|||
|
|
|||
|
This document was created from the input and ideas of the members of
|
|||
|
the DNS Extensions Working Group and working group mailing list. The
|
|||
|
editors would like to express their thanks for the comments and
|
|||
|
suggestions received during the revision of these security extension
|
|||
|
specifications. Although explicitly listing everyone who has
|
|||
|
contributed during the decade in which DNSSEC has been under
|
|||
|
development would be impossible, [RFC4033] includes a list of some of
|
|||
|
the participants who were kind enough to comment on these documents.
|
|||
|
|
|||
|
9. References
|
|||
|
|
|||
|
9.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.
|
|||
|
|
|||
|
[RFC1122] Braden, R., "Requirements for Internet Hosts -
|
|||
|
Communication Layers", STD 3, RFC 1122, October 1989.
|
|||
|
|
|||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
|||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
|||
|
|
|||
|
[RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS
|
|||
|
Specification", RFC 2181, July 1997.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 34]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
|
|||
|
(IPv6) Specification", RFC 2460, December 1998.
|
|||
|
|
|||
|
[RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC
|
|||
|
2671, August 1999.
|
|||
|
|
|||
|
[RFC2672] Crawford, M., "Non-Terminal DNS Name Redirection", RFC
|
|||
|
2672, August 1999.
|
|||
|
|
|||
|
[RFC3225] Conrad, D., "Indicating Resolver Support of DNSSEC", RFC
|
|||
|
3225, December 2001.
|
|||
|
|
|||
|
[RFC3226] Gudmundsson, O., "DNSSEC and IPv6 A6 aware server/resolver
|
|||
|
message size requirements", RFC 3226, December 2001.
|
|||
|
|
|||
|
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
|
|||
|
Rose, "DNS Security Introduction and Requirements", RFC
|
|||
|
4033, March 2005.
|
|||
|
|
|||
|
[RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S.
|
|||
|
Rose, "Resource Records for DNS Security Extensions", RFC
|
|||
|
4034, March 2005.
|
|||
|
|
|||
|
9.2. Informative References
|
|||
|
|
|||
|
[RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS
|
|||
|
NCACHE)", RFC 2308, March 1998.
|
|||
|
|
|||
|
[RFC2535] Eastlake 3rd, D., "Domain Name System Security
|
|||
|
Extensions", RFC 2535, March 1999.
|
|||
|
|
|||
|
[RFC3007] Wellington, B., "Secure Domain Name System (DNS) Dynamic
|
|||
|
Update", RFC 3007, November 2000.
|
|||
|
|
|||
|
[RFC3655] Wellington, B. and O. Gudmundsson, "Redefinition of DNS
|
|||
|
Authenticated Data (AD) bit", RFC 3655, November 2003.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 35]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
Appendix A. Signed Zone Example
|
|||
|
|
|||
|
The following example shows a (small) complete signed zone.
|
|||
|
|
|||
|
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
|
|||
|
1081539377
|
|||
|
3600
|
|||
|
300
|
|||
|
3600000
|
|||
|
3600
|
|||
|
)
|
|||
|
3600 RRSIG SOA 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
|
|||
|
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
|
|||
|
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
|
|||
|
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
|
|||
|
jV7j86HyQgM5e7+miRAz8V01b0I= )
|
|||
|
3600 NS ns1.example.
|
|||
|
3600 NS ns2.example.
|
|||
|
3600 RRSIG NS 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
gl13F00f2U0R+SWiXXLHwsMY+qStYy5k6zfd
|
|||
|
EuivWc+wd1fmbNCyql0Tk7lHTX6UOxc8AgNf
|
|||
|
4ISFve8XqF4q+o9qlnqIzmppU3LiNeKT4FZ8
|
|||
|
RO5urFOvoMRTbQxW3U0hXWuggE4g3ZpsHv48
|
|||
|
0HjMeRaZB/FRPGfJPajngcq6Kwg= )
|
|||
|
3600 MX 1 xx.example.
|
|||
|
3600 RRSIG MX 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
HyDHYVT5KHSZ7HtO/vypumPmSZQrcOP3tzWB
|
|||
|
2qaKkHVPfau/DgLgS/IKENkYOGL95G4N+NzE
|
|||
|
VyNU8dcTOckT+ChPcGeVjguQ7a3Ao9Z/ZkUO
|
|||
|
6gmmUW4b89rz1PUxW4jzUxj66PTwoVtUU/iM
|
|||
|
W6OISukd1EQt7a0kygkg+PEDxdI= )
|
|||
|
3600 NSEC a.example. NS SOA MX RRSIG NSEC DNSKEY
|
|||
|
3600 RRSIG NSEC 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
O0k558jHhyrC97ISHnislm4kLMW48C7U7cBm
|
|||
|
FTfhke5iVqNRVTB1STLMpgpbDIC9hcryoO0V
|
|||
|
Z9ME5xPzUEhbvGnHd5sfzgFVeGxr5Nyyq4tW
|
|||
|
SDBgIBiLQUv1ivy29vhXy7WgR62dPrZ0PWvm
|
|||
|
jfFJ5arXf4nPxp/kEowGgBRzY/U= )
|
|||
|
3600 DNSKEY 256 3 5 (
|
|||
|
AQOy1bZVvpPqhg4j7EJoM9rI3ZmyEx2OzDBV
|
|||
|
rZy/lvI5CQePxXHZS4i8dANH4DX3tbHol61e
|
|||
|
k8EFMcsGXxKciJFHyhl94C+NwILQdzsUlSFo
|
|||
|
vBZsyl/NX6yEbtw/xN9ZNcrbYvgjjZ/UVPZI
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 36]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
ySFNsgEYvh0z2542lzMKR4Dh8uZffQ==
|
|||
|
)
|
|||
|
3600 DNSKEY 257 3 5 (
|
|||
|
AQOeX7+baTmvpVHb2CcLnL1dMRWbuscRvHXl
|
|||
|
LnXwDzvqp4tZVKp1sZMepFb8MvxhhW3y/0QZ
|
|||
|
syCjczGJ1qk8vJe52iOhInKROVLRwxGpMfzP
|
|||
|
RLMlGybr51bOV/1se0ODacj3DomyB4QB5gKT
|
|||
|
Yot/K9alk5/j8vfd4jWCWD+E1Sze0Q==
|
|||
|
)
|
|||
|
3600 RRSIG DNSKEY 5 1 3600 20040509183619 (
|
|||
|
20040409183619 9465 example.
|
|||
|
ZxgauAuIj+k1YoVEOSlZfx41fcmKzTFHoweZ
|
|||
|
xYnz99JVQZJ33wFS0Q0jcP7VXKkaElXk9nYJ
|
|||
|
XevO/7nAbo88iWsMkSpSR6jWzYYKwfrBI/L9
|
|||
|
hjYmyVO9m6FjQ7uwM4dCP/bIuV/DKqOAK9NY
|
|||
|
NC3AHfvCV1Tp4VKDqxqG7R5tTVM= )
|
|||
|
3600 RRSIG DNSKEY 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
eGL0s90glUqcOmloo/2y+bSzyEfKVOQViD9Z
|
|||
|
DNhLz/Yn9CQZlDVRJffACQDAUhXpU/oP34ri
|
|||
|
bKBpysRXosczFrKqS5Oa0bzMOfXCXup9qHAp
|
|||
|
eFIku28Vqfr8Nt7cigZLxjK+u0Ws/4lIRjKk
|
|||
|
7z5OXogYVaFzHKillDt3HRxHIZM= )
|
|||
|
a.example. 3600 IN NS ns1.a.example.
|
|||
|
3600 IN NS ns2.a.example.
|
|||
|
3600 DS 57855 5 1 (
|
|||
|
B6DCD485719ADCA18E5F3D48A2331627FDD3
|
|||
|
636B )
|
|||
|
3600 RRSIG DS 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
oXIKit/QtdG64J/CB+Gi8dOvnwRvqrto1AdQ
|
|||
|
oRkAN15FP3iZ7suB7gvTBmXzCjL7XUgQVcoH
|
|||
|
kdhyCuzp8W9qJHgRUSwKKkczSyuL64nhgjuD
|
|||
|
EML8l9wlWVsl7PR2VnZduM9bLyBhaaPmRKX/
|
|||
|
Fm+v6ccF2EGNLRiY08kdkz+XHHo= )
|
|||
|
3600 NSEC ai.example. NS DS RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
cOlYgqJLqlRqmBQ3iap2SyIsK4O5aqpKSoba
|
|||
|
U9fQ5SMApZmHfq3AgLflkrkXRXvgxTQSKkG2
|
|||
|
039/cRUs6Jk/25+fi7Xr5nOVJsb0lq4zsB3I
|
|||
|
BBdjyGDAHE0F5ROJj87996vJupdm1fbH481g
|
|||
|
sdkOW6Zyqtz3Zos8N0BBkEx+2G4= )
|
|||
|
ns1.a.example. 3600 IN A 192.0.2.5
|
|||
|
ns2.a.example. 3600 IN A 192.0.2.6
|
|||
|
ai.example. 3600 IN A 192.0.2.9
|
|||
|
3600 RRSIG A 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 37]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
pAOtzLP2MU0tDJUwHOKE5FPIIHmdYsCgTb5B
|
|||
|
ERGgpnJluA9ixOyf6xxVCgrEJW0WNZSsJicd
|
|||
|
hBHXfDmAGKUajUUlYSAH8tS4ZnrhyymIvk3u
|
|||
|
ArDu2wfT130e9UHnumaHHMpUTosKe22PblOy
|
|||
|
6zrTpg9FkS0XGVmYRvOTNYx2HvQ= )
|
|||
|
3600 HINFO "KLH-10" "ITS"
|
|||
|
3600 RRSIG HINFO 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
Iq/RGCbBdKzcYzlGE4ovbr5YcB+ezxbZ9W0l
|
|||
|
e/7WqyvhOO9J16HxhhL7VY/IKmTUY0GGdcfh
|
|||
|
ZEOCkf4lEykZF9NPok1/R/fWrtzNp8jobuY7
|
|||
|
AZEcZadp1WdDF3jc2/ndCa5XZhLKD3JzOsBw
|
|||
|
FvL8sqlS5QS6FY/ijFEDnI4RkZA= )
|
|||
|
3600 AAAA 2001:db8::f00:baa9
|
|||
|
3600 RRSIG AAAA 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
nLcpFuXdT35AcE+EoafOUkl69KB+/e56XmFK
|
|||
|
kewXG2IadYLKAOBIoR5+VoQV3XgTcofTJNsh
|
|||
|
1rnF6Eav2zpZB3byI6yo2bwY8MNkr4A7cL9T
|
|||
|
cMmDwV/hWFKsbGBsj8xSCN/caEL2CWY/5XP2
|
|||
|
sZM6QjBBLmukH30+w1z3h8PUP2o= )
|
|||
|
3600 NSEC b.example. A HINFO AAAA RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
QoshyPevLcJ/xcRpEtMft1uoIrcrieVcc9pG
|
|||
|
CScIn5Glnib40T6ayVOimXwdSTZ/8ISXGj4p
|
|||
|
P8Sh0PlA6olZQ84L453/BUqB8BpdOGky4hsN
|
|||
|
3AGcLEv1Gr0QMvirQaFcjzOECfnGyBm+wpFL
|
|||
|
AhS+JOVfDI/79QtyTI0SaDWcg8U= )
|
|||
|
b.example. 3600 IN NS ns1.b.example.
|
|||
|
3600 IN NS ns2.b.example.
|
|||
|
3600 NSEC ns1.example. NS RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
GNuxHn844wfmUhPzGWKJCPY5ttEX/RfjDoOx
|
|||
|
9ueK1PtYkOWKOOdiJ/PJKCYB3hYX+858dDWS
|
|||
|
xb2qnV/LSTCNVBnkm6owOpysY97MVj5VQEWs
|
|||
|
0lm9tFoqjcptQkmQKYPrwUnCSNwvvclSF1xZ
|
|||
|
vhRXgWT7OuFXldoCG6TfVFMs9xE= )
|
|||
|
ns1.b.example. 3600 IN A 192.0.2.7
|
|||
|
ns2.b.example. 3600 IN A 192.0.2.8
|
|||
|
ns1.example. 3600 IN A 192.0.2.1
|
|||
|
3600 RRSIG A 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
F1C9HVhIcs10cZU09G5yIVfKJy5yRQQ3qVet
|
|||
|
5pGhp82pzhAOMZ3K22JnmK4c+IjUeFp/to06
|
|||
|
im5FVpHtbFisdjyPq84bhTv8vrXt5AB1wNB+
|
|||
|
+iAqvIfdgW4sFNC6oADb1hK8QNauw9VePJhK
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 38]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
v/iVXSYC0b7mPSU+EOlknFpVECs= )
|
|||
|
3600 NSEC ns2.example. A RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
I4hj+Kt6+8rCcHcUdolks2S+Wzri9h3fHas8
|
|||
|
1rGN/eILdJHN7JpV6lLGPIh/8fIBkfvdyWnB
|
|||
|
jjf1q3O7JgYO1UdI7FvBNWqaaEPJK3UkddBq
|
|||
|
ZIaLi8Qr2XHkjq38BeQsbp8X0+6h4ETWSGT8
|
|||
|
IZaIGBLryQWGLw6Y6X8dqhlnxJM= )
|
|||
|
ns2.example. 3600 IN A 192.0.2.2
|
|||
|
3600 RRSIG A 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
V7cQRw1TR+knlaL1z/psxlS1PcD37JJDaCMq
|
|||
|
Qo6/u1qFQu6x+wuDHRH22Ap9ulJPQjFwMKOu
|
|||
|
yfPGQPC8KzGdE3vt5snFEAoE1Vn3mQqtu7SO
|
|||
|
6amIjk13Kj/jyJ4nGmdRIc/3cM3ipXFhNTKq
|
|||
|
rdhx8SZ0yy4ObIRzIzvBFLiSS8o= )
|
|||
|
3600 NSEC *.w.example. A RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
N0QzHvaJf5NRw1rE9uxS1Ltb2LZ73Qb9bKGE
|
|||
|
VyaISkqzGpP3jYJXZJPVTq4UVEsgT3CgeHvb
|
|||
|
3QbeJ5Dfb2V9NGCHj/OvF/LBxFFWwhLwzngH
|
|||
|
l+bQAgAcMsLu/nL3nDi1y/JSQjAcdZNDl4bw
|
|||
|
Ymx28EtgIpo9A0qmP08rMBqs1Jw= )
|
|||
|
*.w.example. 3600 IN MX 1 ai.example.
|
|||
|
3600 RRSIG MX 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
OMK8rAZlepfzLWW75Dxd63jy2wswESzxDKG2
|
|||
|
f9AMN1CytCd10cYISAxfAdvXSZ7xujKAtPbc
|
|||
|
tvOQ2ofO7AZJ+d01EeeQTVBPq4/6KCWhqe2X
|
|||
|
TjnkVLNvvhnc0u28aoSsG0+4InvkkOHknKxw
|
|||
|
4kX18MMR34i8lC36SR5xBni8vHI= )
|
|||
|
3600 NSEC x.w.example. MX RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
r/mZnRC3I/VIcrelgIcteSxDhtsdlTDt8ng9
|
|||
|
HSBlABOlzLxQtfgTnn8f+aOwJIAFe1Ee5RvU
|
|||
|
5cVhQJNP5XpXMJHfyps8tVvfxSAXfahpYqtx
|
|||
|
91gsmcV/1V9/bZAG55CefP9cM4Z9Y9NT9XQ8
|
|||
|
s1InQ2UoIv6tJEaaKkP701j8OLA= )
|
|||
|
x.w.example. 3600 IN MX 1 xx.example.
|
|||
|
3600 RRSIG MX 5 3 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
Il2WTZ+Bkv+OytBx4LItNW5mjB4RCwhOO8y1
|
|||
|
XzPHZmZUTVYL7LaA63f6T9ysVBzJRI3KRjAP
|
|||
|
H3U1qaYnDoN1DrWqmi9RJe4FoObkbcdm7P3I
|
|||
|
kx70ePCoFgRz1Yq+bVVXCvGuAU4xALv3W/Y1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 39]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
jNSlwZ2mSWKHfxFQxPtLj8s32+k= )
|
|||
|
3600 NSEC x.y.w.example. MX RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 3 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
aRbpHftxggzgMXdDlym9SsADqMZovZZl2QWK
|
|||
|
vw8J0tZEUNQByH5Qfnf5N1FqH/pS46UA7A4E
|
|||
|
mcWBN9PUA1pdPY6RVeaRlZlCr1IkVctvbtaI
|
|||
|
NJuBba/VHm+pebTbKcAPIvL9tBOoh+to1h6e
|
|||
|
IjgiM8PXkBQtxPq37wDKALkyn7Q= )
|
|||
|
x.y.w.example. 3600 IN MX 1 xx.example.
|
|||
|
3600 RRSIG MX 5 4 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
k2bJHbwP5LH5qN4is39UiPzjAWYmJA38Hhia
|
|||
|
t7i9t7nbX/e0FPnvDSQXzcK7UL+zrVA+3MDj
|
|||
|
q1ub4q3SZgcbLMgexxIW3Va//LVrxkP6Xupq
|
|||
|
GtOB9prkK54QTl/qZTXfMQpW480YOvVknhvb
|
|||
|
+gLcMZBnHJ326nb/TOOmrqNmQQE= )
|
|||
|
3600 NSEC xx.example. MX RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 4 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
OvE6WUzN2ziieJcvKPWbCAyXyP6ef8cr6Csp
|
|||
|
ArVSTzKSquNwbezZmkU7E34o5lmb6CWSSSpg
|
|||
|
xw098kNUFnHcQf/LzY2zqRomubrNQhJTiDTX
|
|||
|
a0ArunJQCzPjOYq5t0SLjm6qp6McJI1AP5Vr
|
|||
|
QoKqJDCLnoAlcPOPKAm/jJkn3jk= )
|
|||
|
xx.example. 3600 IN A 192.0.2.10
|
|||
|
3600 RRSIG A 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
kBF4YxMGWF0D8r0cztL+2fWWOvN1U/GYSpYP
|
|||
|
7SoKoNQ4fZKyk+weWGlKLIUM+uE1zjVTPXoa
|
|||
|
0Z6WG0oZp46rkl1EzMcdMgoaeUzzAJ2BMq+Y
|
|||
|
VdxG9IK1yZkYGY9AgbTOGPoAgbJyO9EPULsx
|
|||
|
kbIDV6GPPSZVusnZU6OMgdgzHV4= )
|
|||
|
3600 HINFO "KLH-10" "TOPS-20"
|
|||
|
3600 RRSIG HINFO 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
GY2PLSXmMHkWHfLdggiox8+chWpeMNJLkML0
|
|||
|
t+U/SXSUsoUdR91KNdNUkTDWamwcF8oFRjhq
|
|||
|
BcPZ6EqrF+vl5v5oGuvSF7U52epfVTC+wWF8
|
|||
|
3yCUeUw8YklhLWlvk8gQ15YKth0ITQy8/wI+
|
|||
|
RgNvuwbioFSEuv2pNlkq0goYxNY= )
|
|||
|
3600 AAAA 2001:db8::f00:baaa
|
|||
|
3600 RRSIG AAAA 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
Zzj0yodDxcBLnnOIwDsuKo5WqiaK24DlKg9C
|
|||
|
aGaxDFiKgKobUj2jilYQHpGFn2poFRetZd4z
|
|||
|
ulyQkssz2QHrVrPuTMS22knudCiwP4LWpVTr
|
|||
|
U4zfeA+rDz9stmSBP/4PekH/x2IoAYnwctd/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 40]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
xS9cL2QgW7FChw16mzlkH6/vsfs= )
|
|||
|
3600 NSEC example. A HINFO AAAA RRSIG NSEC
|
|||
|
3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
ZFWUln6Avc8bmGl5GFjD3BwT530DUZKHNuoY
|
|||
|
9A8lgXYyrxu+pqgFiRVbyZRQvVB5pccEOT3k
|
|||
|
mvHgEa/HzbDB4PIYY79W+VHrgOxzdQGGCZzi
|
|||
|
asXrpSGOWwSOElghPnMIi8xdF7qtCntr382W
|
|||
|
GghLahumFIpg4MO3LS/prgzVVWo= )
|
|||
|
|
|||
|
The apex DNSKEY set includes two DNSKEY RRs, and the DNSKEY RDATA
|
|||
|
Flags indicate that each of these DNSKEY RRs is a zone key. One of
|
|||
|
these DNSKEY RRs also has the SEP flag set and has been used to sign
|
|||
|
the apex DNSKEY RRset; this is the key that should be hashed to
|
|||
|
generate a DS record to be inserted into the parent zone. The other
|
|||
|
DNSKEY is used to sign all the other RRsets in the zone.
|
|||
|
|
|||
|
The zone includes a wildcard entry, "*.w.example". Note that the
|
|||
|
name "*.w.example" is used in constructing NSEC chains, and that the
|
|||
|
RRSIG covering the "*.w.example" MX RRset has a label count of 2.
|
|||
|
|
|||
|
The zone also includes two delegations. The delegation to
|
|||
|
"b.example" includes an NS RRset, glue address records, and an NSEC
|
|||
|
RR; note that only the NSEC RRset is signed. The delegation to
|
|||
|
"a.example" provides a DS RR; note that only the NSEC and DS RRsets
|
|||
|
are signed.
|
|||
|
|
|||
|
Appendix B. Example Responses
|
|||
|
|
|||
|
The examples in this section show response messages using the signed
|
|||
|
zone example in Appendix A.
|
|||
|
|
|||
|
B.1. Answer
|
|||
|
|
|||
|
A successful query to an authoritative server.
|
|||
|
|
|||
|
;; Header: QR AA DO RCODE=0
|
|||
|
;;
|
|||
|
;; Question
|
|||
|
x.w.example. IN MX
|
|||
|
|
|||
|
;; Answer
|
|||
|
x.w.example. 3600 IN MX 1 xx.example.
|
|||
|
x.w.example. 3600 RRSIG MX 5 3 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
Il2WTZ+Bkv+OytBx4LItNW5mjB4RCwhOO8y1
|
|||
|
XzPHZmZUTVYL7LaA63f6T9ysVBzJRI3KRjAP
|
|||
|
H3U1qaYnDoN1DrWqmi9RJe4FoObkbcdm7P3I
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 41]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
kx70ePCoFgRz1Yq+bVVXCvGuAU4xALv3W/Y1
|
|||
|
jNSlwZ2mSWKHfxFQxPtLj8s32+k= )
|
|||
|
|
|||
|
;; Authority
|
|||
|
example. 3600 NS ns1.example.
|
|||
|
example. 3600 NS ns2.example.
|
|||
|
example. 3600 RRSIG NS 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
gl13F00f2U0R+SWiXXLHwsMY+qStYy5k6zfd
|
|||
|
EuivWc+wd1fmbNCyql0Tk7lHTX6UOxc8AgNf
|
|||
|
4ISFve8XqF4q+o9qlnqIzmppU3LiNeKT4FZ8
|
|||
|
RO5urFOvoMRTbQxW3U0hXWuggE4g3ZpsHv48
|
|||
|
0HjMeRaZB/FRPGfJPajngcq6Kwg= )
|
|||
|
|
|||
|
;; Additional
|
|||
|
xx.example. 3600 IN A 192.0.2.10
|
|||
|
xx.example. 3600 RRSIG A 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
kBF4YxMGWF0D8r0cztL+2fWWOvN1U/GYSpYP
|
|||
|
7SoKoNQ4fZKyk+weWGlKLIUM+uE1zjVTPXoa
|
|||
|
0Z6WG0oZp46rkl1EzMcdMgoaeUzzAJ2BMq+Y
|
|||
|
VdxG9IK1yZkYGY9AgbTOGPoAgbJyO9EPULsx
|
|||
|
kbIDV6GPPSZVusnZU6OMgdgzHV4= )
|
|||
|
xx.example. 3600 AAAA 2001:db8::f00:baaa
|
|||
|
xx.example. 3600 RRSIG AAAA 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
Zzj0yodDxcBLnnOIwDsuKo5WqiaK24DlKg9C
|
|||
|
aGaxDFiKgKobUj2jilYQHpGFn2poFRetZd4z
|
|||
|
ulyQkssz2QHrVrPuTMS22knudCiwP4LWpVTr
|
|||
|
U4zfeA+rDz9stmSBP/4PekH/x2IoAYnwctd/
|
|||
|
xS9cL2QgW7FChw16mzlkH6/vsfs= )
|
|||
|
ns1.example. 3600 IN A 192.0.2.1
|
|||
|
ns1.example. 3600 RRSIG A 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
F1C9HVhIcs10cZU09G5yIVfKJy5yRQQ3qVet
|
|||
|
5pGhp82pzhAOMZ3K22JnmK4c+IjUeFp/to06
|
|||
|
im5FVpHtbFisdjyPq84bhTv8vrXt5AB1wNB+
|
|||
|
+iAqvIfdgW4sFNC6oADb1hK8QNauw9VePJhK
|
|||
|
v/iVXSYC0b7mPSU+EOlknFpVECs= )
|
|||
|
ns2.example. 3600 IN A 192.0.2.2
|
|||
|
ns2.example. 3600 RRSIG A 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
V7cQRw1TR+knlaL1z/psxlS1PcD37JJDaCMq
|
|||
|
Qo6/u1qFQu6x+wuDHRH22Ap9ulJPQjFwMKOu
|
|||
|
yfPGQPC8KzGdE3vt5snFEAoE1Vn3mQqtu7SO
|
|||
|
6amIjk13Kj/jyJ4nGmdRIc/3cM3ipXFhNTKq
|
|||
|
rdhx8SZ0yy4ObIRzIzvBFLiSS8o= )
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 42]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
B.2. Name Error
|
|||
|
|
|||
|
An authoritative name error. The NSEC RRs prove that the name does
|
|||
|
not exist and that no covering wildcard exists.
|
|||
|
|
|||
|
;; Header: QR AA DO RCODE=3
|
|||
|
;;
|
|||
|
;; Question
|
|||
|
ml.example. IN A
|
|||
|
|
|||
|
;; Answer
|
|||
|
;; (empty)
|
|||
|
|
|||
|
;; Authority
|
|||
|
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
|
|||
|
1081539377
|
|||
|
3600
|
|||
|
300
|
|||
|
3600000
|
|||
|
3600
|
|||
|
)
|
|||
|
example. 3600 RRSIG SOA 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
|
|||
|
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
|
|||
|
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
|
|||
|
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
|
|||
|
jV7j86HyQgM5e7+miRAz8V01b0I= )
|
|||
|
b.example. 3600 NSEC ns1.example. NS RRSIG NSEC
|
|||
|
b.example. 3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
GNuxHn844wfmUhPzGWKJCPY5ttEX/RfjDoOx
|
|||
|
9ueK1PtYkOWKOOdiJ/PJKCYB3hYX+858dDWS
|
|||
|
xb2qnV/LSTCNVBnkm6owOpysY97MVj5VQEWs
|
|||
|
0lm9tFoqjcptQkmQKYPrwUnCSNwvvclSF1xZ
|
|||
|
vhRXgWT7OuFXldoCG6TfVFMs9xE= )
|
|||
|
example. 3600 NSEC a.example. NS SOA MX RRSIG NSEC DNSKEY
|
|||
|
example. 3600 RRSIG NSEC 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
O0k558jHhyrC97ISHnislm4kLMW48C7U7cBm
|
|||
|
FTfhke5iVqNRVTB1STLMpgpbDIC9hcryoO0V
|
|||
|
Z9ME5xPzUEhbvGnHd5sfzgFVeGxr5Nyyq4tW
|
|||
|
SDBgIBiLQUv1ivy29vhXy7WgR62dPrZ0PWvm
|
|||
|
jfFJ5arXf4nPxp/kEowGgBRzY/U= )
|
|||
|
|
|||
|
;; Additional
|
|||
|
;; (empty)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 43]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
B.3. No Data Error
|
|||
|
|
|||
|
A "no data" response. The NSEC RR proves that the name exists and
|
|||
|
that the requested RR type does not.
|
|||
|
|
|||
|
;; Header: QR AA DO RCODE=0
|
|||
|
;;
|
|||
|
;; Question
|
|||
|
ns1.example. IN MX
|
|||
|
|
|||
|
;; Answer
|
|||
|
;; (empty)
|
|||
|
|
|||
|
;; Authority
|
|||
|
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
|
|||
|
1081539377
|
|||
|
3600
|
|||
|
300
|
|||
|
3600000
|
|||
|
3600
|
|||
|
)
|
|||
|
example. 3600 RRSIG SOA 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
|
|||
|
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
|
|||
|
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
|
|||
|
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
|
|||
|
jV7j86HyQgM5e7+miRAz8V01b0I= )
|
|||
|
ns1.example. 3600 NSEC ns2.example. A RRSIG NSEC
|
|||
|
ns1.example. 3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
I4hj+Kt6+8rCcHcUdolks2S+Wzri9h3fHas8
|
|||
|
1rGN/eILdJHN7JpV6lLGPIh/8fIBkfvdyWnB
|
|||
|
jjf1q3O7JgYO1UdI7FvBNWqaaEPJK3UkddBq
|
|||
|
ZIaLi8Qr2XHkjq38BeQsbp8X0+6h4ETWSGT8
|
|||
|
IZaIGBLryQWGLw6Y6X8dqhlnxJM= )
|
|||
|
|
|||
|
;; Additional
|
|||
|
;; (empty)
|
|||
|
|
|||
|
B.4. Referral to Signed Zone
|
|||
|
|
|||
|
Referral to a signed zone. The DS RR contains the data which the
|
|||
|
resolver will need to validate the corresponding DNSKEY RR in the
|
|||
|
child zone's apex.
|
|||
|
|
|||
|
;; Header: QR DO RCODE=0
|
|||
|
;;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 44]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
;; Question
|
|||
|
mc.a.example. IN MX
|
|||
|
|
|||
|
;; Answer
|
|||
|
;; (empty)
|
|||
|
|
|||
|
;; Authority
|
|||
|
a.example. 3600 IN NS ns1.a.example.
|
|||
|
a.example. 3600 IN NS ns2.a.example.
|
|||
|
a.example. 3600 DS 57855 5 1 (
|
|||
|
B6DCD485719ADCA18E5F3D48A2331627FDD3
|
|||
|
636B )
|
|||
|
a.example. 3600 RRSIG DS 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
oXIKit/QtdG64J/CB+Gi8dOvnwRvqrto1AdQ
|
|||
|
oRkAN15FP3iZ7suB7gvTBmXzCjL7XUgQVcoH
|
|||
|
kdhyCuzp8W9qJHgRUSwKKkczSyuL64nhgjuD
|
|||
|
EML8l9wlWVsl7PR2VnZduM9bLyBhaaPmRKX/
|
|||
|
Fm+v6ccF2EGNLRiY08kdkz+XHHo= )
|
|||
|
|
|||
|
;; Additional
|
|||
|
ns1.a.example. 3600 IN A 192.0.2.5
|
|||
|
ns2.a.example. 3600 IN A 192.0.2.6
|
|||
|
|
|||
|
B.5. Referral to Unsigned Zone
|
|||
|
|
|||
|
Referral to an unsigned zone. The NSEC RR proves that no DS RR for
|
|||
|
this delegation exists in the parent zone.
|
|||
|
|
|||
|
;; Header: QR DO RCODE=0
|
|||
|
;;
|
|||
|
;; Question
|
|||
|
mc.b.example. IN MX
|
|||
|
|
|||
|
;; Answer
|
|||
|
;; (empty)
|
|||
|
|
|||
|
;; Authority
|
|||
|
b.example. 3600 IN NS ns1.b.example.
|
|||
|
b.example. 3600 IN NS ns2.b.example.
|
|||
|
b.example. 3600 NSEC ns1.example. NS RRSIG NSEC
|
|||
|
b.example. 3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
GNuxHn844wfmUhPzGWKJCPY5ttEX/RfjDoOx
|
|||
|
9ueK1PtYkOWKOOdiJ/PJKCYB3hYX+858dDWS
|
|||
|
xb2qnV/LSTCNVBnkm6owOpysY97MVj5VQEWs
|
|||
|
0lm9tFoqjcptQkmQKYPrwUnCSNwvvclSF1xZ
|
|||
|
vhRXgWT7OuFXldoCG6TfVFMs9xE= )
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 45]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
;; Additional
|
|||
|
ns1.b.example. 3600 IN A 192.0.2.7
|
|||
|
ns2.b.example. 3600 IN A 192.0.2.8
|
|||
|
|
|||
|
B.6. Wildcard Expansion
|
|||
|
|
|||
|
A successful query that was answered via wildcard expansion. The
|
|||
|
label count in the answer's RRSIG RR indicates that a wildcard RRset
|
|||
|
was expanded to produce this response, and the NSEC RR proves that no
|
|||
|
closer match exists in the zone.
|
|||
|
|
|||
|
;; Header: QR AA DO RCODE=0
|
|||
|
;;
|
|||
|
;; Question
|
|||
|
a.z.w.example. IN MX
|
|||
|
|
|||
|
;; Answer
|
|||
|
a.z.w.example. 3600 IN MX 1 ai.example.
|
|||
|
a.z.w.example. 3600 RRSIG MX 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
OMK8rAZlepfzLWW75Dxd63jy2wswESzxDKG2
|
|||
|
f9AMN1CytCd10cYISAxfAdvXSZ7xujKAtPbc
|
|||
|
tvOQ2ofO7AZJ+d01EeeQTVBPq4/6KCWhqe2X
|
|||
|
TjnkVLNvvhnc0u28aoSsG0+4InvkkOHknKxw
|
|||
|
4kX18MMR34i8lC36SR5xBni8vHI= )
|
|||
|
|
|||
|
;; Authority
|
|||
|
example. 3600 NS ns1.example.
|
|||
|
example. 3600 NS ns2.example.
|
|||
|
example. 3600 RRSIG NS 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
gl13F00f2U0R+SWiXXLHwsMY+qStYy5k6zfd
|
|||
|
EuivWc+wd1fmbNCyql0Tk7lHTX6UOxc8AgNf
|
|||
|
4ISFve8XqF4q+o9qlnqIzmppU3LiNeKT4FZ8
|
|||
|
RO5urFOvoMRTbQxW3U0hXWuggE4g3ZpsHv48
|
|||
|
0HjMeRaZB/FRPGfJPajngcq6Kwg= )
|
|||
|
x.y.w.example. 3600 NSEC xx.example. MX RRSIG NSEC
|
|||
|
x.y.w.example. 3600 RRSIG NSEC 5 4 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
OvE6WUzN2ziieJcvKPWbCAyXyP6ef8cr6Csp
|
|||
|
ArVSTzKSquNwbezZmkU7E34o5lmb6CWSSSpg
|
|||
|
xw098kNUFnHcQf/LzY2zqRomubrNQhJTiDTX
|
|||
|
a0ArunJQCzPjOYq5t0SLjm6qp6McJI1AP5Vr
|
|||
|
QoKqJDCLnoAlcPOPKAm/jJkn3jk= )
|
|||
|
|
|||
|
;; Additional
|
|||
|
ai.example. 3600 IN A 192.0.2.9
|
|||
|
ai.example. 3600 RRSIG A 5 2 3600 20040509183619 (
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 46]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
20040409183619 38519 example.
|
|||
|
pAOtzLP2MU0tDJUwHOKE5FPIIHmdYsCgTb5B
|
|||
|
ERGgpnJluA9ixOyf6xxVCgrEJW0WNZSsJicd
|
|||
|
hBHXfDmAGKUajUUlYSAH8tS4ZnrhyymIvk3u
|
|||
|
ArDu2wfT130e9UHnumaHHMpUTosKe22PblOy
|
|||
|
6zrTpg9FkS0XGVmYRvOTNYx2HvQ= )
|
|||
|
ai.example. 3600 AAAA 2001:db8::f00:baa9
|
|||
|
ai.example. 3600 RRSIG AAAA 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
nLcpFuXdT35AcE+EoafOUkl69KB+/e56XmFK
|
|||
|
kewXG2IadYLKAOBIoR5+VoQV3XgTcofTJNsh
|
|||
|
1rnF6Eav2zpZB3byI6yo2bwY8MNkr4A7cL9T
|
|||
|
cMmDwV/hWFKsbGBsj8xSCN/caEL2CWY/5XP2
|
|||
|
sZM6QjBBLmukH30+w1z3h8PUP2o= )
|
|||
|
|
|||
|
B.7. Wildcard No Data Error
|
|||
|
|
|||
|
A "no data" response for a name covered by a wildcard. The NSEC RRs
|
|||
|
prove that the matching wildcard name does not have any RRs of the
|
|||
|
requested type and that no closer match exists in the zone.
|
|||
|
|
|||
|
;; Header: QR AA DO RCODE=0
|
|||
|
;;
|
|||
|
;; Question
|
|||
|
a.z.w.example. IN AAAA
|
|||
|
|
|||
|
;; Answer
|
|||
|
;; (empty)
|
|||
|
|
|||
|
;; Authority
|
|||
|
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
|
|||
|
1081539377
|
|||
|
3600
|
|||
|
300
|
|||
|
3600000
|
|||
|
3600
|
|||
|
)
|
|||
|
example. 3600 RRSIG SOA 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
|
|||
|
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
|
|||
|
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
|
|||
|
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
|
|||
|
jV7j86HyQgM5e7+miRAz8V01b0I= )
|
|||
|
x.y.w.example. 3600 NSEC xx.example. MX RRSIG NSEC
|
|||
|
x.y.w.example. 3600 RRSIG NSEC 5 4 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
OvE6WUzN2ziieJcvKPWbCAyXyP6ef8cr6Csp
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 47]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
ArVSTzKSquNwbezZmkU7E34o5lmb6CWSSSpg
|
|||
|
xw098kNUFnHcQf/LzY2zqRomubrNQhJTiDTX
|
|||
|
a0ArunJQCzPjOYq5t0SLjm6qp6McJI1AP5Vr
|
|||
|
QoKqJDCLnoAlcPOPKAm/jJkn3jk= )
|
|||
|
*.w.example. 3600 NSEC x.w.example. MX RRSIG NSEC
|
|||
|
*.w.example. 3600 RRSIG NSEC 5 2 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
r/mZnRC3I/VIcrelgIcteSxDhtsdlTDt8ng9
|
|||
|
HSBlABOlzLxQtfgTnn8f+aOwJIAFe1Ee5RvU
|
|||
|
5cVhQJNP5XpXMJHfyps8tVvfxSAXfahpYqtx
|
|||
|
91gsmcV/1V9/bZAG55CefP9cM4Z9Y9NT9XQ8
|
|||
|
s1InQ2UoIv6tJEaaKkP701j8OLA= )
|
|||
|
|
|||
|
;; Additional
|
|||
|
;; (empty)
|
|||
|
|
|||
|
B.8. DS Child Zone No Data Error
|
|||
|
|
|||
|
A "no data" response for a QTYPE=DS query that was mistakenly sent to
|
|||
|
a name server for the child zone.
|
|||
|
|
|||
|
;; Header: QR AA DO RCODE=0
|
|||
|
;;
|
|||
|
;; Question
|
|||
|
example. IN DS
|
|||
|
|
|||
|
;; Answer
|
|||
|
;; (empty)
|
|||
|
|
|||
|
;; Authority
|
|||
|
example. 3600 IN SOA ns1.example. bugs.x.w.example. (
|
|||
|
1081539377
|
|||
|
3600
|
|||
|
300
|
|||
|
3600000
|
|||
|
3600
|
|||
|
)
|
|||
|
example. 3600 RRSIG SOA 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
ONx0k36rcjaxYtcNgq6iQnpNV5+drqYAsC9h
|
|||
|
7TSJaHCqbhE67Sr6aH2xDUGcqQWu/n0UVzrF
|
|||
|
vkgO9ebarZ0GWDKcuwlM6eNB5SiX2K74l5LW
|
|||
|
DA7S/Un/IbtDq4Ay8NMNLQI7Dw7n4p8/rjkB
|
|||
|
jV7j86HyQgM5e7+miRAz8V01b0I= )
|
|||
|
example. 3600 NSEC a.example. NS SOA MX RRSIG NSEC DNSKEY
|
|||
|
example. 3600 RRSIG NSEC 5 1 3600 20040509183619 (
|
|||
|
20040409183619 38519 example.
|
|||
|
O0k558jHhyrC97ISHnislm4kLMW48C7U7cBm
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 48]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
FTfhke5iVqNRVTB1STLMpgpbDIC9hcryoO0V
|
|||
|
Z9ME5xPzUEhbvGnHd5sfzgFVeGxr5Nyyq4tW
|
|||
|
SDBgIBiLQUv1ivy29vhXy7WgR62dPrZ0PWvm
|
|||
|
jfFJ5arXf4nPxp/kEowGgBRzY/U= )
|
|||
|
|
|||
|
;; Additional
|
|||
|
;; (empty)
|
|||
|
|
|||
|
Appendix C. Authentication Examples
|
|||
|
|
|||
|
The examples in this section show how the response messages in
|
|||
|
Appendix B are authenticated.
|
|||
|
|
|||
|
C.1. Authenticating an Answer
|
|||
|
|
|||
|
The query in Appendix B.1 returned an MX RRset for "x.w.example.com".
|
|||
|
The corresponding RRSIG indicates that the MX RRset was signed by an
|
|||
|
"example" DNSKEY with algorithm 5 and key tag 38519. The resolver
|
|||
|
needs the corresponding DNSKEY RR in order to authenticate this
|
|||
|
answer. The discussion below describes how a resolver might obtain
|
|||
|
this DNSKEY RR.
|
|||
|
|
|||
|
The RRSIG indicates the original TTL of the MX RRset was 3600, and,
|
|||
|
for the purpose of authentication, the current TTL is replaced by
|
|||
|
3600. The RRSIG labels field value of 3 indicates that the answer
|
|||
|
was not the result of wildcard expansion. The "x.w.example.com" MX
|
|||
|
RRset is placed in canonical form, and, assuming the current time
|
|||
|
falls between the signature inception and expiration dates, the
|
|||
|
signature is authenticated.
|
|||
|
|
|||
|
C.1.1. Authenticating the Example DNSKEY RR
|
|||
|
|
|||
|
This example shows the logical authentication process that starts
|
|||
|
from the a configured root DNSKEY (or DS RR) and moves down the tree
|
|||
|
to authenticate the desired "example" DNSKEY RR. Note that the
|
|||
|
logical order is presented for clarity. An implementation may choose
|
|||
|
to construct the authentication as referrals are received or to
|
|||
|
construct the authentication chain only after all RRsets have been
|
|||
|
obtained, or in any other combination it sees fit. The example here
|
|||
|
demonstrates only the logical process and does not dictate any
|
|||
|
implementation rules.
|
|||
|
|
|||
|
We assume the resolver starts with a configured DNSKEY RR for the
|
|||
|
root zone (or a configured DS RR for the root zone). The resolver
|
|||
|
checks whether this configured DNSKEY RR is present in the root
|
|||
|
DNSKEY RRset (or whether the DS RR matches some DNSKEY in the root
|
|||
|
DNSKEY RRset), whether this DNSKEY RR has signed the root DNSKEY
|
|||
|
RRset, and whether the signature lifetime is valid. If all these
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 49]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
conditions are met, all keys in the DNSKEY RRset are considered
|
|||
|
authenticated. The resolver then uses one (or more) of the root
|
|||
|
DNSKEY RRs to authenticate the "example" DS RRset. Note that the
|
|||
|
resolver may have to query the root zone to obtain the root DNSKEY
|
|||
|
RRset or "example" DS RRset.
|
|||
|
|
|||
|
Once the DS RRset has been authenticated using the root DNSKEY, the
|
|||
|
resolver checks the "example" DNSKEY RRset for some "example" DNSKEY
|
|||
|
RR that matches one of the authenticated "example" DS RRs. If such a
|
|||
|
matching "example" DNSKEY is found, the resolver checks whether this
|
|||
|
DNSKEY RR has signed the "example" DNSKEY RRset and the signature
|
|||
|
lifetime is valid. If these conditions are met, all keys in the
|
|||
|
"example" DNSKEY RRset are considered authenticated.
|
|||
|
|
|||
|
Finally, the resolver checks that some DNSKEY RR in the "example"
|
|||
|
DNSKEY RRset uses algorithm 5 and has a key tag of 38519. This
|
|||
|
DNSKEY is used to authenticate the RRSIG included in the response.
|
|||
|
If multiple "example" DNSKEY RRs match this algorithm and key tag,
|
|||
|
then each DNSKEY RR is tried, and the answer is authenticated if any
|
|||
|
of the matching DNSKEY RRs validate the signature as described above.
|
|||
|
|
|||
|
C.2. Name Error
|
|||
|
|
|||
|
The query in Appendix B.2 returned NSEC RRs that prove that the
|
|||
|
requested data does not exist and no wildcard applies. The negative
|
|||
|
reply is authenticated by verifying both NSEC RRs. The NSEC RRs are
|
|||
|
authenticated in a manner identical to that of the MX RRset discussed
|
|||
|
above.
|
|||
|
|
|||
|
C.3. No Data Error
|
|||
|
|
|||
|
The query in Appendix B.3 returned an NSEC RR that proves that the
|
|||
|
requested name exists, but the requested RR type does not exist. The
|
|||
|
negative reply is authenticated by verifying the NSEC RR. The NSEC
|
|||
|
RR is authenticated in a manner identical to that of the MX RRset
|
|||
|
discussed above.
|
|||
|
|
|||
|
C.4. Referral to Signed Zone
|
|||
|
|
|||
|
The query in Appendix B.4 returned a referral to the signed
|
|||
|
"a.example." zone. The DS RR is authenticated in a manner identical
|
|||
|
to that of the MX RRset discussed above. This DS RR is used to
|
|||
|
authenticate the "a.example" DNSKEY RRset.
|
|||
|
|
|||
|
Once the "a.example" DS RRset has been authenticated using the
|
|||
|
"example" DNSKEY, the resolver checks the "a.example" DNSKEY RRset
|
|||
|
for some "a.example" DNSKEY RR that matches the DS RR. If such a
|
|||
|
matching "a.example" DNSKEY is found, the resolver checks whether
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 50]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
this DNSKEY RR has signed the "a.example" DNSKEY RRset and whether
|
|||
|
the signature lifetime is valid. If all these conditions are met,
|
|||
|
all keys in the "a.example" DNSKEY RRset are considered
|
|||
|
authenticated.
|
|||
|
|
|||
|
C.5. Referral to Unsigned Zone
|
|||
|
|
|||
|
The query in Appendix B.5 returned a referral to an unsigned
|
|||
|
"b.example." zone. The NSEC proves that no authentication leads from
|
|||
|
"example" to "b.example", and the NSEC RR is authenticated in a
|
|||
|
manner identical to that of the MX RRset discussed above.
|
|||
|
|
|||
|
C.6. Wildcard Expansion
|
|||
|
|
|||
|
The query in Appendix B.6 returned an answer that was produced as a
|
|||
|
result of wildcard expansion. The answer section contains a wildcard
|
|||
|
RRset expanded as it would be in a traditional DNS response, and the
|
|||
|
corresponding RRSIG indicates that the expanded wildcard MX RRset was
|
|||
|
signed by an "example" DNSKEY with algorithm 5 and key tag 38519.
|
|||
|
The RRSIG indicates that the original TTL of the MX RRset was 3600,
|
|||
|
and, for the purpose of authentication, the current TTL is replaced
|
|||
|
by 3600. The RRSIG labels field value of 2 indicates that the answer
|
|||
|
is the result of wildcard expansion, as the "a.z.w.example" name
|
|||
|
contains 4 labels. The name "a.z.w.w.example" is replaced by
|
|||
|
"*.w.example", the MX RRset is placed in canonical form, and,
|
|||
|
assuming that the current time falls between the signature inception
|
|||
|
and expiration dates, the signature is authenticated.
|
|||
|
|
|||
|
The NSEC proves that no closer match (exact or closer wildcard) could
|
|||
|
have been used to answer this query, and the NSEC RR must also be
|
|||
|
authenticated before the answer is considered valid.
|
|||
|
|
|||
|
C.7. Wildcard No Data Error
|
|||
|
|
|||
|
The query in Appendix B.7 returned NSEC RRs that prove that the
|
|||
|
requested data does not exist and no wildcard applies. The negative
|
|||
|
reply is authenticated by verifying both NSEC RRs.
|
|||
|
|
|||
|
C.8. DS Child Zone No Data Error
|
|||
|
|
|||
|
The query in Appendix B.8 returned NSEC RRs that shows the requested
|
|||
|
was answered by a child server ("example" server). The NSEC RR
|
|||
|
indicates the presence of an SOA RR, showing that the answer is from
|
|||
|
the child . Queries for the "example" DS RRset should be sent to the
|
|||
|
parent servers ("root" servers).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 51]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
Authors' Addresses
|
|||
|
|
|||
|
Roy Arends
|
|||
|
Telematica Instituut
|
|||
|
Brouwerijstraat 1
|
|||
|
7523 XC Enschede
|
|||
|
NL
|
|||
|
|
|||
|
EMail: roy.arends@telin.nl
|
|||
|
|
|||
|
|
|||
|
Rob Austein
|
|||
|
Internet Systems Consortium
|
|||
|
950 Charter Street
|
|||
|
Redwood City, CA 94063
|
|||
|
USA
|
|||
|
|
|||
|
EMail: sra@isc.org
|
|||
|
|
|||
|
|
|||
|
Matt Larson
|
|||
|
VeriSign, Inc.
|
|||
|
21345 Ridgetop Circle
|
|||
|
Dulles, VA 20166-6503
|
|||
|
USA
|
|||
|
|
|||
|
EMail: mlarson@verisign.com
|
|||
|
|
|||
|
|
|||
|
Dan Massey
|
|||
|
Colorado State University
|
|||
|
Department of Computer Science
|
|||
|
Fort Collins, CO 80523-1873
|
|||
|
|
|||
|
EMail: massey@cs.colostate.edu
|
|||
|
|
|||
|
|
|||
|
Scott Rose
|
|||
|
National Institute for Standards and Technology
|
|||
|
100 Bureau Drive
|
|||
|
Gaithersburg, MD 20899-8920
|
|||
|
USA
|
|||
|
|
|||
|
EMail: scott.rose@nist.gov
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 52]
|
|||
|
|
|||
|
RFC 4035 DNSSEC Protocol Modifications March 2005
|
|||
|
|
|||
|
|
|||
|
Full 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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
Intellectual Property
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
Acknowledgement
|
|||
|
|
|||
|
Funding for the RFC Editor function is currently provided by the
|
|||
|
Internet Society.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Arends, et al. Standards Track [Page 53]
|
|||
|
|