508 lines
19 KiB
Plaintext
508 lines
19 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
Network Working Group S. Weiler
|
||
Request for Comments: 3755 SPARTA, Inc.
|
||
Updates: 3658, 2535 May 2004
|
||
Category: Standards Track
|
||
|
||
|
||
Legacy Resolver Compatibility for Delegation Signer (DS)
|
||
|
||
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 (2004). All Rights Reserved.
|
||
|
||
Abstract
|
||
|
||
As the DNS Security (DNSSEC) specifications have evolved, the syntax
|
||
and semantics of the DNSSEC resource records (RRs) have changed.
|
||
Many deployed nameservers understand variants of these semantics.
|
||
Dangerous interactions can occur when a resolver that understands an
|
||
earlier version of these semantics queries an authoritative server
|
||
that understands the new delegation signer semantics, including at
|
||
least one failure scenario that will cause an unsecured zone to be
|
||
unresolvable. This document changes the type codes and mnemonics of
|
||
the DNSSEC RRs (SIG, KEY, and NXT) to avoid those interactions.
|
||
|
||
1. Introduction
|
||
|
||
The DNSSEC protocol has been through many iterations whose syntax and
|
||
semantics are not completely compatible. This has occurred as part
|
||
of the ordinary process of proposing a protocol, implementing it,
|
||
testing it in the increasingly complex and diverse environment of the
|
||
Internet, and refining the definitions of the initial Proposed
|
||
Standard. In the case of DNSSEC, the process has been complicated by
|
||
DNS's criticality and wide deployment and the need to add security
|
||
while minimizing daily operational complexity.
|
||
|
||
A weak area for previous DNS specifications has been lack of detail
|
||
in specifying resolver behavior, leaving implementors largely on
|
||
their own to determine many details of resolver function. This,
|
||
combined with the number of iterations the DNSSEC specifications have
|
||
been through, has resulted in fielded code with a wide variety of
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 1]
|
||
|
||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||
|
||
|
||
behaviors. This variety makes it difficult to predict how a protocol
|
||
change will be handled by all deployed resolvers. The risk that a
|
||
change will cause unacceptable or even catastrophic failures makes it
|
||
difficult to design and deploy a protocol change. One strategy for
|
||
managing that risk is to structure protocol changes so that existing
|
||
resolvers can completely ignore input that might confuse them or
|
||
trigger undesirable failure modes.
|
||
|
||
This document addresses a specific problem caused by Delegation
|
||
Signer's (DS) [RFC3658] introduction of new semantics for the NXT RR
|
||
that are incompatible with the semantics in [RFC2535]. Answers
|
||
provided by DS-aware servers can trigger an unacceptable failure mode
|
||
in some resolvers that implement RFC 2535, which provides a great
|
||
disincentive to sign zones with DS. The changes defined in this
|
||
document allow for the incremental deployment of DS.
|
||
|
||
1.1. Terminology
|
||
|
||
In this document, the term "unsecure delegation" means any delegation
|
||
for which no DS record appears at the parent. An "unsecure referral"
|
||
is an answer from the parent containing an NS RRset and a proof that
|
||
no DS record exists for that name.
|
||
|
||
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].
|
||
|
||
1.2. The Problem
|
||
|
||
Delegation Signer (DS) introduces new semantics for the NXT RR that
|
||
are incompatible with the semantics in RFC 2535. In RFC 2535, NXT
|
||
records were only required to be returned as part of a non-existence
|
||
proof. With DS, an unsecure referral returns, in addition to the NS,
|
||
a proof of non-existence of a DS RR in the form of an NXT and
|
||
SIG(NXT). RFC 2535 didn't specify how a resolver was to interpret a
|
||
response with RCODE=0, AA=0, and both an NS and an NXT in the
|
||
authority section. Some widely deployed 2535-aware resolvers
|
||
interpret any answer with an NXT as a proof of non-existence of the
|
||
requested record. This results in unsecure delegations being
|
||
invisible to 2535-aware resolvers and violates the basic
|
||
architectural principle that DNSSEC must do no harm -- the signing of
|
||
zones must not prevent the resolution of unsecured delegations.
|
||
|
||
2. Possible Solutions
|
||
|
||
This section presents several solutions that were considered.
|
||
Section 3 describes the one selected.
|
||
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 2]
|
||
|
||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||
|
||
|
||
2.1. Change SIG, KEY, and NXT type codes
|
||
|
||
To avoid the problem described above, legacy (RFC2535-aware)
|
||
resolvers need to be kept from seeing unsecure referrals that include
|
||
NXT records in the authority section. The simplest way to do that is
|
||
to change the type codes for SIG, KEY, and NXT.
|
||
|
||
The obvious drawback to this is that new resolvers will not be able
|
||
to validate zones signed with the old RRs. This problem already
|
||
exists, however, because of the changes made by DS, and resolvers
|
||
that understand the old RRs (and have compatibility issues with DS)
|
||
are far more prevalent than 2535-signed zones.
|
||
|
||
2.2. Change a subset of type codes
|
||
|
||
The observed problem with unsecure referrals could be addressed by
|
||
changing only the NXT type code or another subset of the type codes
|
||
that includes NXT. This has the virtue of apparent simplicity, but
|
||
it risks introducing new problems or not going far enough. It's
|
||
quite possible that more incompatibilities exist between DS and
|
||
earlier semantics. Legacy resolvers may also be confused by seeing
|
||
records they recognize (SIG and KEY) while being unable to find NXTs.
|
||
Although it may seem unnecessary to fix that which is not obviously
|
||
broken, it's far cleaner to change all of the type codes at once.
|
||
This will leave legacy resolvers and tools completely blinded to
|
||
DNSSEC -- they will see only unknown RRs.
|
||
|
||
2.3. Replace the DO bit
|
||
|
||
Another way to keep legacy resolvers from ever seeing DNSSEC records
|
||
with DS semantics is to have authoritative servers only send that
|
||
data to DS-aware resolvers. It's been proposed that assigning a new
|
||
EDNS0 flag bit to signal DS-awareness (tentatively called "DA"), and
|
||
having authoritative servers send DNSSEC data only in response to
|
||
queries with the DA bit set, would accomplish this. This bit would
|
||
presumably supplant the DO bit described in [RFC3225].
|
||
|
||
This solution is sufficient only if all 2535-aware resolvers zero out
|
||
EDNS0 flags that they don't understand. If one passed through the DA
|
||
bit unchanged, it would still see the new semantics, and it would
|
||
probably fail to see unsecure delegations. Since it's impractical to
|
||
know how every DNS implementation handles unknown EDNS0 flags, this
|
||
is not a universal solution. It could, though, be considered in
|
||
addition to changing the RR type codes.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 3]
|
||
|
||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||
|
||
|
||
2.4. Increment the EDNS version
|
||
|
||
Another possible solution is to increment the EDNS version number as
|
||
defined in [RFC2671], on the assumption that all existing
|
||
implementations will reject higher versions than they support, and
|
||
retain the DO bit as the signal for DNSSEC awareness. This approach
|
||
has not been tested.
|
||
|
||
2.5. Do nothing
|
||
|
||
There is a large deployed base of DNS resolvers that understand
|
||
DNSSEC as defined by the standards track RFC 2535 and [RFC2065] and,
|
||
due to under specification in those documents, interpret any answer
|
||
with an NXT as a non-existence proof. So long as that is the case,
|
||
zone owners will have a strong incentive to not sign any zones that
|
||
contain unsecure delegations, lest those delegations be invisible to
|
||
such a large installed base. This will dramatically slow DNSSEC
|
||
adoption.
|
||
|
||
Unfortunately, without signed zones there's no clear incentive for
|
||
operators of resolvers to upgrade their software to support the new
|
||
version of DNSSEC, as defined in RFC 3658. Historical data suggests
|
||
that resolvers are rarely upgraded, and that old nameserver code
|
||
never dies.
|
||
|
||
Rather than wait years for resolvers to be upgraded through natural
|
||
processes before signing zones with unsecure delegations, addressing
|
||
this problem with a protocol change will immediately remove the
|
||
disincentive for signing zones and allow widespread deployment of
|
||
DNSSEC.
|
||
|
||
3. Protocol changes
|
||
|
||
This document changes the type codes of SIG, KEY, and NXT. This
|
||
approach is the cleanest and safest of those discussed above, largely
|
||
because the behavior of resolvers that receive unknown type codes is
|
||
well understood. This approach has also received the most testing.
|
||
|
||
To avoid operational confusion, it's also necessary to change the
|
||
mnemonics for these RRs. DNSKEY will be the replacement for KEY,
|
||
with the mnemonic indicating that these keys are not for application
|
||
use, per [RFC3445]. RRSIG (Resource Record SIGnature) will replace
|
||
SIG, and NSEC (Next SECure) will replace NXT. These new types
|
||
completely replace the old types, except that SIG(0) [RFC2931] and
|
||
TKEY [RFC2930] will continue to use SIG and KEY.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 4]
|
||
|
||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||
|
||
|
||
The new types will have exactly the same syntax and semantics as
|
||
specified for SIG, KEY, and NXT in RFC 2535 and RFC 3658 except for
|
||
the following:
|
||
|
||
1) Consistent with [RFC3597], domain names embedded in RRSIG and NSEC
|
||
RRs MUST NOT be compressed,
|
||
|
||
2) Embedded domain names in RRSIG and NSEC RRs are not downcased for
|
||
purposes of DNSSEC canonical form and ordering nor for equality
|
||
comparison, and
|
||
|
||
3) An RRSIG with a type-covered field of zero has undefined
|
||
semantics. The meaning of such a resource record may only be
|
||
defined by IETF Standards Action.
|
||
|
||
If a resolver receives the old types, it SHOULD treat them as unknown
|
||
RRs and SHOULD NOT assign any special meaning to them or give them
|
||
any special treatment. It MUST NOT use them for DNSSEC validations
|
||
or other DNS operational decision making. For example, a resolver
|
||
MUST NOT use DNSKEYs to validate SIGs or use KEYs to validate RRSIGs.
|
||
If SIG, KEY, or NXT RRs are included in a zone, they MUST NOT receive
|
||
special treatment. As an example, if a SIG is included in a signed
|
||
zone, there MUST be an RRSIG for it. Authoritative servers may wish
|
||
to give error messages when loading zones containing SIG or NXT
|
||
records (KEY records may be included for SIG(0) or TKEY).
|
||
|
||
As a clarification to previous documents, some positive responses,
|
||
particularly wildcard proofs and unsecure referrals, will contain
|
||
NSEC RRs. Resolvers MUST NOT treat answers with NSEC RRs as negative
|
||
answers merely because they contain an NSEC.
|
||
|
||
4. IANA Considerations
|
||
|
||
4.1. DNS Resource Record Types
|
||
|
||
This document updates the IANA registry for DNS Resource Record Types
|
||
by assigning types 46, 47, and 48 to the RRSIG, NSEC, and DNSKEY RRs,
|
||
respectively.
|
||
|
||
Types 24 and 25 (SIG and KEY) are retained for SIG(0) [RFC2931] and
|
||
TKEY [RFC2930] use only.
|
||
|
||
Type 30 (NXT) should be marked as Obsolete.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 5]
|
||
|
||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||
|
||
|
||
4.2. DNS Security Algorithm Numbers
|
||
|
||
To allow zone signing (DNSSEC) and transaction security mechanisms
|
||
(SIG(0) and TKEY) to use different sets of algorithms, the existing
|
||
"DNS Security Algorithm Numbers" registry is modified to include the
|
||
applicability of each algorithm. Specifically, two new columns are
|
||
added to the registry, showing whether each algorithm may be used for
|
||
zone signing, transaction security mechanisms, or both. Only
|
||
algorithms usable for zone signing may be used in DNSKEY, RRSIG, and
|
||
DS RRs. Only algorithms usable for SIG(0) and/or TSIG may be used in
|
||
SIG and KEY RRs.
|
||
|
||
All currently defined algorithms except for Indirect (algorithm 252)
|
||
remain usable for transaction security mechanisms. Only RSA/SHA-1
|
||
[RFC3110], DSA/SHA-1 [RFC2536], and private algorithms (types 253 and
|
||
254) may be used for zone signing. Note that the registry does not
|
||
contain the requirement level of each algorithm, only whether or not
|
||
an algorithm may be used for the given purposes. For example,
|
||
RSA/MD5, while allowed for transaction security mechanisms, is NOT
|
||
RECOMMENDED, per [RFC3110].
|
||
|
||
Additionally, the presentation format algorithm mnemonics from
|
||
[RFC2535] Section 7 are added to the registry. This document assigns
|
||
RSA/SHA-1 the mnemonic RSASHA1.
|
||
|
||
As before, assignment of new algorithms in this registry requires
|
||
IETF Standards Action. Additionally, modification of algorithm
|
||
mnemonics or applicability requires IETF Standards Action. Documents
|
||
defining a new algorithm must address the applicability of the
|
||
algorithm and should assign a presentation mnemonic to the algorithm.
|
||
|
||
4.3. DNSKEY Flags
|
||
|
||
Like the KEY resource record, DNSKEY contains a 16-bit flags field.
|
||
This document creates a new registry for the DNSKEY flags field.
|
||
|
||
Initially, this registry only contains an assignment for bit 7 (the
|
||
ZONE bit). Bits 0-6 and 8-15 are available for assignment by IETF
|
||
Standards Action.
|
||
|
||
4.4. DNSKEY Protocol Octet
|
||
|
||
Like the KEY resource record, DNSKEY contains an eight bit protocol
|
||
field. The only defined value for this field is 3 (DNSSEC). No
|
||
other values are allowed, hence no IANA registry is needed for this
|
||
field.
|
||
|
||
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 6]
|
||
|
||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||
|
||
|
||
5. Security Considerations
|
||
|
||
The changes introduced here do not materially affect security. The
|
||
implications of trying to use both new and legacy types together are
|
||
not well understood, and attempts to do so would probably lead to
|
||
unintended and dangerous results.
|
||
|
||
Changing type codes will leave code paths in legacy resolvers that
|
||
are never exercised. Unexercised code paths are a frequent source of
|
||
security holes, largely because those code paths do not get frequent
|
||
scrutiny.
|
||
|
||
Doing nothing, as described in section 2.5, will slow DNSSEC
|
||
deployment. While this does not decrease security, it also fails to
|
||
increase it.
|
||
|
||
6. References
|
||
|
||
6.1. Normative References
|
||
|
||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||
|
||
[RFC2535] Eastlake, D., "Domain Name System Security Extensions", RFC
|
||
2535, March 1999.
|
||
|
||
[RFC2536] Eastlake, D., "DSA KEYs and SIGs in the Domain Name System
|
||
(DNS)", RFC 2536, March 1999.
|
||
|
||
[RFC2930] Eastlake, D., "Secret Key Establishment for DNS (TKEY RR)",
|
||
RFC 2930, September 2000.
|
||
|
||
[RFC2931] Eastlake, D., "DNS Request and Transaction Signatures
|
||
(SIG(0)s)", RFC 2931, September 2000.
|
||
|
||
[RFC3110] Eastlake, D., "RSA/SHA-1 SIGs and RSA KEYs in the Domain
|
||
Name System (DNS)", RFC 3110, May 2001.
|
||
|
||
[RFC3658] Gudmundsson, O., "Delegation Signer (DS) Resource Record
|
||
(RR)", RFC 3658, December 2003.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 7]
|
||
|
||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||
|
||
|
||
6.2. Informative References
|
||
|
||
[RFC2065] Eastlake, 3rd, D. and C. Kaufman, "Domain Name System
|
||
Security Extensions", RFC 2065, January 1997.
|
||
|
||
[RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC
|
||
2671, August 1999.
|
||
|
||
[RFC3225] Conrad, D., "Indicating Resolver Support of DNSSEC", RFC
|
||
3225, December 2001.
|
||
|
||
[RFC3445] Massey, D., and S. Rose, "Limiting the Scope of the KEY
|
||
Resource Record (RR)", RFC 3445, December 2002.
|
||
|
||
[RFC3597] Gustafsson, A., "Handling of Unknown DNS Resource Record
|
||
(RR) Types", RFC 3597, September 2003.
|
||
|
||
7. Acknowledgments
|
||
|
||
The changes introduced here and the analysis of alternatives had many
|
||
contributors. With apologies to anyone overlooked, those include:
|
||
Michael Graff, Johan Ihren, Olaf Kolkman, Mark Kosters, Ed Lewis,
|
||
Bill Manning, Paul Vixie, and Suzanne Woolf.
|
||
|
||
Thanks to Jakob Schlyter and Mark Andrews for identifying the
|
||
incompatibility described in section 1.2.
|
||
|
||
In addition to the above, the author would like to thank Scott Rose,
|
||
Olafur Gudmundsson, and Sandra Murphy for their substantive comments.
|
||
|
||
8. Author's Address
|
||
|
||
Samuel Weiler
|
||
SPARTA, Inc.
|
||
7075 Samuel Morse Drive
|
||
Columbia, MD 21046
|
||
USA
|
||
|
||
EMail: weiler@tislabs.com
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 8]
|
||
|
||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||
|
||
|
||
9. Full Copyright Statement
|
||
|
||
Copyright (C) The Internet Society (2004). This document is subject
|
||
to the rights, licenses and restrictions contained in BCP 78, and
|
||
except as set forth therein, the authors retain all their rights.
|
||
|
||
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.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Weiler Standards Track [Page 9]
|
||
|