RFC 3755 PROPOSED STANDARD DNS · DNSSEC · COMPATIBILITY

Legacy Resolver Compatibility for Delegation Signer (DS)

Renaming three DNSSEC record types so that old resolvers ignore them instead of misreading them.

On rfc-editor.org ↗
PUBLISHED
May 2004
AUTHORS
S. Weiler
STREAM
IETF
BUILDS ON
RFC 2535 — DNSSEC, RFC 3658 — DS record
OBSOLETED BY
RFC 4033 — DNSSEC Introduction, RFC 4034 — DNSSEC Records, RFC 4035 — DNSSEC Protocol
UPDATED BY
RFC 3757 — Domain Name System KEY (DNSKEY) Resource Record (RR) Secure Entry Point (SEP) Flag, RFC 3845 — NSEC Type Bit Map
NEW TYPE CODES
RRSIG 46, NSEC 47, DNSKEY 48
OLD TYPE CODES
SIG 24, KEY 25, NXT 30
DNSKEY FLAGS FIELD
16 bits, only bit 7 (ZONE) assigned
DNSKEY PROTOCOL VALUE
3 (DNSSEC)
ALGORITHMS ALLOWED FOR ZONE SIGNING
RSA/SHA-1, DSA/SHA-1, private types 253 and 254
INDIRECT ALGORITHM NUMBER
252
DOI
10.17487/RFC3755

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
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
   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.

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.

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.

   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.

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.

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.

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

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.

ISO Plain Language

On this page
PROBLEMAdding the Delegation Signer record gave the NXT record new meaning, and widely deployed resolvers that follow RFC 2535 treat any answer containing an NXT as proof that the requested name does not exist. A zone with an unsigned delegation could then become impossible to resolve.
MECHANISMThe RFC gives SIG, KEY and NXT new type codes and new names, RRSIG, DNSKEY and NSEC. A resolver that does not know the new codes sees unknown records and skips them, so the old behaviour cannot be triggered.
WHAT IT ACHIEVEDSigning a zone no longer breaks the zones it delegates to, which removes the main obstacle to deploying DNSSEC. RFC 3755 was obsoleted by RFC 4033, RFC 4034 and RFC 4035.

§1The Problem with NXT and DS

DNSSEC had been through many iterations whose syntax and semantics are not completely compatible, as part of the ordinary process of proposing a protocol, implementing it, testing it in a diverse environment and refining the definitions. The DNSSEC process was complicated by the criticality and wide deployment of DNS, and by the need to add security while minimising daily operational complexity.

One weak area of earlier DNS specifications was the lack of detail about resolver behaviour, which left implementors to decide many details themselves. Combined with the number of iterations DNSSEC had been through, this produced deployed code with a wide variety of behaviours, and made it hard to predict how a protocol change would be handled by every resolver in the field.

The specific problem came from Delegation Signer's introduction of new semantics for the NXT record that are incompatible with 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 record, a proof that no DS record exists, in the form of an NXT and a SIG over that NXT. RFC 2535 did not say how a resolver should interpret a response with RCODE=0, AA=0, and both an NS and an NXT in the authority section. Some widely deployed RFC 2535 aware resolvers interpret any answer with an NXT as a proof that the requested record does not exist, which makes unsecure delegations invisible to them and breaks the principle that DNSSEC must do no harm, since signing a zone must not prevent the resolution of unsecured delegations.

The RFC defines an unsecure delegation as any delegation for which no DS record appears at the parent, and an unsecure referral as an answer from the parent containing an NS RRset and a proof that no DS record exists for that name.

The trouble started when DNSSEC gave the NXT record a second job. Under the old rules, NXT appeared only to prove that a name does not exist. With the Delegation Signer record, a server also sends NXT to prove that the parent does not vouch for the child zone. Many resolvers in the field read any NXT as proof of non-existence, so they concluded the child zone did not exist at all.

ILLUSTRATIVE: THE FAILURE MODE DESCRIBED IN RFC 3755 SECTION 1.2
Legacy resolver (RFC 2535)DS-aware authoritative server
  1. QUERYThe resolver asks for a name under a delegation the parent does not vouch for.
  2. UNSECURE REFERRALThe answer carries the NS record and an NXT proving that no DS record exists.
  3. TREATED AS NON-EXISTENCEThe resolver reads any NXT as proof the name does not exist, so the delegation disappears.

§2The Alternatives Considered

The RFC sets out several ways to keep legacy resolvers from seeing the new semantics, and explains why each was or was not chosen.

Changing the type codes for SIG, KEY and NXT is the simplest way to hide unsecure referrals from legacy resolvers. The drawback is that new resolvers cannot validate zones signed with the old records, but that problem already exists because of the changes made by DS, and resolvers that understand the old records are far more prevalent than zones signed under RFC 2535.

Changing only the NXT type code, or a subset that includes it, has the appearance of simplicity, but it risks new problems and may not go far enough, since more incompatibilities may exist between DS and earlier semantics. Legacy resolvers may also be confused by seeing records they recognise, SIG and KEY, while being unable to find NXT. Changing all the type codes at once leaves legacy resolvers and tools completely blinded to DNSSEC, so they see only unknown records.

Two other approaches rely on EDNS0. Assigning a new flag bit to signal DS-awareness, tentatively called DA, and having authoritative servers send DNSSEC data only in response to queries with that bit set, would work only if every legacy resolver zeroes out EDNS0 flags it does not understand. Since it is impractical to know how every implementation handles unknown flags, this is not a universal solution, though it could be used in addition to changing the type codes. Incrementing the EDNS version number assumes that all existing implementations reject higher versions than they support, and that approach has not been tested.

Doing nothing was the last option. As long as a large deployed base of resolvers interprets any answer with an NXT as a non-existence proof, zone owners have a strong incentive not to sign zones that contain unsecure delegations, which would slow DNSSEC adoption sharply. Without signed zones there is no clear incentive for resolver operators to upgrade, and historical data suggests resolvers are rarely upgraded and old nameserver code never dies. A protocol change removes the disincentive immediately.

Four options were considered. Renaming all three record types hides the new behaviour from old resolvers, but old resolvers can no longer check old signatures. Changing only one type code leaves the others visible and may miss other clashes. Marking DNSSEC awareness with a new EDNS0 flag only works if every resolver strips flags it does not recognise, which nobody can check. Doing nothing is the worst option, because zone owners will then refuse to sign anything, and nothing improves.

§3The Protocol Changes

This document changes the type codes of SIG, KEY and NXT. The RFC calls this the cleanest and safest of the options, largely because the behaviour of resolvers that receive unknown type codes is well understood, and because it has received the most testing.

The mnemonics change as well, to avoid operational confusion. DNSKEY replaces KEY, with the mnemonic indicating that these keys are not for application use. RRSIG, for Resource Record SIGnature, replaces SIG, and NSEC, for Next SECure, replaces NXT. These new types completely replace the old ones, except that SIG(0) and TKEY continue to use SIG and KEY.

The new types have exactly the same syntax and semantics as SIG, KEY and NXT in RFC 2535 and RFC 3658, with three exceptions. Domain names embedded in RRSIG and NSEC records MUST NOT be compressed. Embedded domain names in RRSIG and NSEC records are not downcased for DNSSEC canonical form and ordering, nor for equality comparison. An RRSIG with a type-covered field of zero has undefined semantics, and the meaning of such a record may only be defined by IETF Standards Action.

A resolver that receives the old types SHOULD treat them as unknown records, SHOULD NOT assign them any special meaning or treatment, and 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 records are included in a zone they MUST NOT receive special treatment, so a SIG in a signed zone MUST have an RRSIG for it. Authoritative servers may wish to give error messages when loading zones that contain SIG or NXT records, since KEY records may still 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 records, and resolvers MUST NOT treat answers with NSEC records as negative answers merely because they contain an NSEC.

The fix is to give the three record types new numbers and new names: DNSKEY for KEY, RRSIG for SIG and NSEC for NXT. A resolver that predates the change sees records it does not recognise and ignores them, which stops the wrong interpretation. The RFC is strict about this: a resolver must not use the old records for any check, and it must not read an NSEC on its own as proof that a name is missing.

THE OLD AND NEW DNSSEC RECORD TYPES
Old nameOld type codeNew nameNew type code
KEY25DNSKEY48
SIG24RRSIG46
NXT30NSEC47

§4IANA Considerations

The IANA registry for DNS resource record types is updated by assigning types 46, 47 and 48 to RRSIG, NSEC and DNSKEY. Types 24 and 25, SIG and KEY, are retained for SIG(0) and TKEY use only, and type 30, NXT, should be marked as Obsolete.

The DNS Security Algorithm Numbers registry is modified to include the applicability of each algorithm. Two new columns are added showing whether an algorithm may be used for zone signing, for transaction security mechanisms, or for both. Only algorithms usable for zone signing may be used in DNSKEY, RRSIG and DS records, and only algorithms usable for SIG(0) and TSIG may be used in SIG and KEY records. All currently defined algorithms except Indirect, algorithm 252, remain usable for transaction security mechanisms. Only RSA/SHA-1, DSA/SHA-1 and the private algorithm types 253 and 254 may be used for zone signing. The registry does not carry the requirement level of each algorithm, only its applicability, so RSA/MD5 is allowed for transaction security but is NOT RECOMMENDED. This document assigns RSA/SHA-1 the presentation mnemonic RSASHA1.

A new registry is created for the DNSKEY flags field, which contains a 16-bit flags field like the KEY record. Initially it holds only bit 7, the ZONE bit; bits 0 to 6 and 8 to 15 are available for assignment. The DNSKEY protocol field is eight bits wide and its only defined value is 3, for DNSSEC, so no registry is needed for it.

The new records are given type codes 46, 47 and 48. The old codes for SIG and KEY are kept for the two transaction security mechanisms that still need them, and the old NXT code is retired. The algorithm registry gains a column saying where each algorithm may be used, so an algorithm approved for signing a zone cannot also be used for transaction security, and the other way round.

THE FOUR REGISTRIES THIS RFC TOUCHES
  • Record typesRRSIG is 46, NSEC is 47 and DNSKEY is 48. SIG and KEY keep codes 24 and 25 for SIG(0) and TKEY, and NXT, code 30, becomes Obsolete.
  • Algorithm numbersThe registry now says whether an algorithm may be used for zone signing, for transaction security, or for both.
  • DNSKEY flagsA new 16-bit registry with only bit 7, the ZONE bit, assigned.
  • DNSKEY protocolAn eight bit field whose only defined value is 3, for DNSSEC.

§5Security Considerations

The changes introduced here do not materially affect security. The implications of trying to use the new and the 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 they 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.

The change itself does not weaken security. The one risk it leaves is that old resolvers keep code for handling the old record types that can now never run, and untested code is where security holes tend to hide. Waiting instead would leave everything as it is, which protects nothing and improves nothing.

§6References