DNS Security Extensions (DNSSEC)
Paul Hoffman
ICANN
paul.hoffman@icann.org
11 August 2022
Internet-Draft
This document describes the DNS security extensions (commonly called "DNSSEC") that are specified RFCs 4033, 4034, 4035, and a handful of others. One purpose is to introduce all of the RFCs in one place so that the reader can understand the many aspects of DNSSEC. This document does not update any of those RFCs. Another purpose is to move DNSSEC to Best Current Practice status.
This document is currently maintained at https://github.com/paulehoffman/draft-hoffman-dnssec. Issues and pull requests are welcomed.
Introduction
The core specification for what we know as DNSSEC (the combination of [RFC4033], [RFC4034], and [RFC4035]) describes a set of protocols that provide origin authentication to data in the DNS. [RFC6840] updates and extends those core RFCs, but does not fundamentally change the way that DNSSEC works.
This document lists many (but not all) of the RFCs that should be considered by someone creating an implementation of, or someone deploying, modern DNSSEC. It uses terminology from those documents without defining that terminology. It also points to the relevant IANA registries that relate to DNSSEC. It does not, however, point to standards that rely on zones needing to be signed by DNSSEC.
DNSSEC as a Best Current Practice
The DNSSEC set of protocols is widely considered the best current practice for adding origin authentication of data in the DNS. To date, no standards-track RFCs offer any other method for such origin authentication of data in the DNS.
Some observers note that, more than 15 years after the DNSSEC specification was published, it is still not widely deployed. Recent estimates are that fewer than 10% of the domain names used for web sites are signed, and only around a third of queries to recursive resolvers are validated. However, this low level of implementation does not affect whether DNSSEC is a best current practice; it just indicates that the value of deploying DNSSEC is often considered lower than the cost. Nonetheless, the significant deployment of DNSSEC beneath some top-level domains (TLDs), and the near-universal deployment of DNSSEC for the TLDs in the DNS root zone, demonstrate that DNSSEC is suitable for implementation by both ordinary and highly sophisticated domain owners.
Implementing DNSSEC
Developers of validating resolvers and authoritative servers, as well as operators of operators of validating resolvers and authoritative servers, need to know the parts of the DNSSEC protocol that would affect them. They should read the DNSSEC core documents, and probably at least be familiar with the extensions. Developers will probably need to be very familiar with the algorithm documents as well.
As a side note, some of the DNSSEC-related RFCs have significant errata, so reading the RFCs should also include looking for the related errata.
DNSSEC Core Documents
What we today call "DNSSEC" is formally version 3 of the DNSSEC specification. However, earlier versions of DNSSEC were thinly deployed and significantly less visible than the current DNSSEC specification. Throughout this document, "DNSSEC" means version 3 of the protocol initially defined in [RFC4033], [RFC4034], and [RFC4035].
The three initial core documents generally cover different topics:
- [RFC4033] is an overview of DNSSEC, including how it might change the resolution of DNS queries.
- [RFC4034] specifies the DNS resource records used in DNSSEC. It obsoletes many RFCs for earlier versions of DNSSEC.
- [RFC4035] covers the modifications to the DNS protocol incurred by DNSSEC. These include signing zones, serving signed zones, resolving in light of DNSSEC, and authenticating DNSSEC-signed data.
At the time this set of core documents was published, someone could create a DNSSEC implementation of signing software, of an DNSSEC-aware authoritative server, and/or a DNSSEC-aware recursive resolver from the three core documents, the many documents that update them, plus a few older RFCs specifying the cryptography used. Those two older documents are:
- [RFC2536] defines how to use the DSA signature algorithm (although refers to other documents for the details). DSA was thinly implemented and can safely be ignored by DNSSEC implementations
- [RFC3110] defines how to use the RSA signature algorithm (although refers to other documents for the details). RSA is still the most popular signing algorithm for DNSSEC.
It is important to note that later RFCs update the core documents. As just one example, [RFC9077] changes how TTL values are calculated in DNSSEC processing.
Addition to the DNSSEC Core
As with any major protocol, developers and operators discovered issues with the original core documents over the years. [RFC6840] is an omnibus update to the original core documents and thus itself has become a core document. In addition to covering new requirements from new DNSSEC RFCs, it describes many important security and interoperability issues that arose during the deployment of the initial specifications, particularly after the DNS root was signed in 2010. It also lists some errors in the examples of the core specifications.
[RFC6840] brings a few additions into the core of DNSSEC. It makes NSEC3 [RFC5155] as much a part of DNSSEC as NSEC is. It also makes the SHA-2 hash function defined in [RFC4509] and [RFC5702] part of the core as well.
Additional Cryptographic Algorithms and DNSSEC
Cryptography improves over time, and new algorithms get adopted by various Internet protocols. Two new signing algorithms have been adopted by the DNSSEC community: ECDSA [RFC6605] and EdDSA [RFC8080]. The GOST signing algorithm [RFC5933] was also adopted, but has seen very limited use, likely because it is a national algorithm specific to a very small number of countries.
Implementation developers who want to know which algorithms to implement in DNSSEC software should refer to [RFC8624]. Note that this specification is only about what algorithms should and should not be included in implementations: it is not advice for which algorithms that zone operators should and should not sign with, nor which algorithms recursive resolver operators should or should not validate.
Extensions to DNSSEC
The DNSSEC community has extended the DNSSEC core and the cryptographic algorithms both in terms of describing good operational practices and in new protocols. Some of the RFCs that describe these extensions include:
- [RFC5011] describes a method to help resolvers update their DNSSEC trust anchors in an automated fashion. This method was used in 2018 to update the DNS root trust anchor.
- [RFC6781] is a compendium of operational practices that may not be obvious from reading just the core specifications.
- [RFC7344] describes using the CDS and CDNSKEY resource records to help automate the maintenance of DS records in the parents of signed zones.
- [RFC8078] extends [RFC7344] by showing how to do initial setup of trusted relationships between signed parent and child zones.
- [RFC8198] describes how a validating resolver can emit fewer queries in signed zones that use NSEC and NSEC3 for negative caching.
- [RFC9077] updates [RFC8198] with respect to the time-to-live (TTL) fields in signed records.
Additional Documents of Interest
The documents listed above constitute the core of DNSSEC, the additional cryptographic algorithms, and the major extensions to DNSSEC. This section lists some additional documents that someone interested in implementing or operating DNSSEC might find of value.
- [RFC4470] "describes how to construct DNSSEC NSEC resource records that cover a smaller range of names than called for by [RFC4034]".
- [RFC6975] "specifies a way for validating end-system resolvers to signal to a server which digital signature and hash algorithms they support".
- [RFC7129] "provides additional background commentary and some context for the NSEC and NSEC3 mechanisms used by DNSSEC to provide authenticated denial-of-existence responses". This background is particularly important for understanding NSEC and NSEC3 usage.
- [RFC7583] "describes the issues surrounding the timing of events in the rolling of a key in a DNSSEC-secured zone".
- [RFC7646] "defines Negative Trust Anchors (NTAs), which can be used to mitigate DNSSEC validation failures by disabling DNSSEC validation at specified domains".
- [RFC7958] "describes the format and publication mechanisms IANA has used to distribute the DNSSEC trust anchors".
- [RFC8027] "describes problems that a Validating DNS resolver, stub-resolver, or application might run into within a non-compliant infrastructure".
- [RFC8145] "specifies two different ways for validating resolvers to signal to a server which keys are referenced in their chain of trust".
- [RFC8499] is a list of terminology used when talking about the DNS; sections 10 and 11 cover DNSSEC.
- [RFC8509] "specifies a mechanism that will allow an end user and third parties to determine the trusted key state for the root key of the resolvers that handle that user's DNS queries".
- [RFC8901] "presents deployment models that accommodate this scenario [when each DNS provider independently signs zone data with their own keys] and describes these key-management requirements".
- [RFC9276] "provides guidance on setting NSEC3 parameters based on recent operational deployment experience".
There will certainly be other RFCs related to DNSSEC that are published after this one.
IANA Considerations
IANA already has three registries that relate to DNSSEC:
- DNSSEC algorithm numbers (https://www.iana.org/assignments/dns-sec-alg-numbers)
- DNSSEC NSEC3 parameters (https://www.iana.org/assignments/dnssec-nsec3-parameters)
- DNSSEC DS RRtype digest algorithms (https://www.iana.org/assignments/ds-rr-types)
The rules for the DNSSEC algorithm registry were set in the core RFCs and updated by [RFC6014], [RFC6725], and [RFC9157].
This document does not update or create any registries.
Security Considerations
All of the security considerations from all of the RFCs referenced in this document apply here.

Normative References
[RFC3110]

RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)
D. Eastlake 3rd
May 2001
RFC 3110
DOI 10.17487/RFC3110
[RFC4033]

DNS Security Introduction and Requirements
R. Arends
R. Austein
M. Larson
D. Massey
S. Rose
March 2005
RFC 4033
DOI 10.17487/RFC4033
[RFC4034]

Resource Records for the DNS Security Extensions
R. Arends
R. Austein
M. Larson
D. Massey
S. Rose
March 2005
RFC 4034
DOI 10.17487/RFC4034
[RFC4035]

Protocol Modifications for the DNS Security Extensions
R. Arends
R. Austein
M. Larson
D. Massey
S. Rose
March 2005
RFC 4035
DOI 10.17487/RFC4035
[RFC4509]

Use of SHA-256 in DNSSEC Delegation Signer (DS) Resource Records (RRs)
W. Hardaker
May 2006
RFC 4509
DOI 10.17487/RFC4509
[RFC5155]

DNS Security (DNSSEC) Hashed Authenticated Denial of Existence
B. Laurie
G. Sisson
R. Arends
D. Blacka
March 2008
RFC 5155
DOI 10.17487/RFC5155
[RFC5702]

Use of SHA-2 Algorithms with RSA in DNSKEY and RRSIG Resource Records for DNSSEC
J. Jansen
October 2009
RFC 5702
DOI 10.17487/RFC5702
[RFC6840]

Clarifications and Implementation Notes for DNS Security (DNSSEC)
S. Weiler, Ed.
D. Blacka, Ed.
February 2013
RFC 6840
DOI 10.17487/RFC6840

Informative References
[RFC2536]

DSA KEYs and SIGs in the Domain Name System (DNS)
D. Eastlake 3rd
March 1999
RFC 2536
DOI 10.17487/RFC2536
[RFC4470]

Minimally Covering NSEC Records and DNSSEC On-line Signing
S. Weiler
J. Ihren
April 2006
RFC 4470
DOI 10.17487/RFC4470
[RFC5011]

Automated Updates of DNS Security (DNSSEC) Trust Anchors
M. StJohns
September 2007
STD 74
RFC 5011
DOI 10.17487/RFC5011
[RFC5933]

Use of GOST Signature Algorithms in DNSKEY and RRSIG Resource Records for DNSSEC
V. Dolmatov, Ed.
A. Chuprina
I. Ustinov
July 2010
RFC 5933
DOI 10.17487/RFC5933
[RFC6014]

Cryptographic Algorithm Identifier Allocation for DNSSEC
P. Hoffman
November 2010
RFC 6014
DOI 10.17487/RFC6014
[RFC6605]

Elliptic Curve Digital Signature Algorithm (DSA) for DNSSEC
P. Hoffman
W.C.A. Wijngaards
April 2012
RFC 6605
DOI 10.17487/RFC6605
[RFC6725]

DNS Security (DNSSEC) DNSKEY Algorithm IANA Registry Updates
S. Rose
August 2012
RFC 6725
DOI 10.17487/RFC6725
[RFC6781]

DNSSEC Operational Practices, Version 2
O. Kolkman
W. Mekking
R. Gieben
December 2012
RFC 6781
DOI 10.17487/RFC6781
[RFC6975]

Signaling Cryptographic Algorithm Understanding in DNS Security Extensions (DNSSEC)
S. Crocker
S. Rose
July 2013
RFC 6975
DOI 10.17487/RFC6975
[RFC7129]

Authenticated Denial of Existence in the DNS
R. Gieben
W. Mekking
February 2014
RFC 7129
DOI 10.17487/RFC7129
[RFC7344]

Automating DNSSEC Delegation Trust Maintenance
W. Kumari
O. Gudmundsson
G. Barwood
September 2014
RFC 7344
DOI 10.17487/RFC7344
[RFC7583]

DNSSEC Key Rollover Timing Considerations
S. Morris
J. Ihren
J. Dickinson
W. Mekking
October 2015
RFC 7583
DOI 10.17487/RFC7583
[RFC7646]

Definition and Use of DNSSEC Negative Trust Anchors
P. Ebersman
W. Kumari
C. Griffiths
J. Livingood
R. Weber
September 2015
RFC 7646
DOI 10.17487/RFC7646
[RFC7958]

DNSSEC Trust Anchor Publication for the Root Zone
J. Abley
J. Schlyter
G. Bailey
P. Hoffman
August 2016
RFC 7958
DOI 10.17487/RFC7958
[RFC8027]

DNSSEC Roadblock Avoidance
W. Hardaker
O. Gudmundsson
S. Krishnaswamy
November 2016
BCP 207
RFC 8027
DOI 10.17487/RFC8027
[RFC8078]

Managing DS Records from the Parent via CDS/CDNSKEY
O. Gudmundsson
P. Wouters
March 2017
RFC 8078
DOI 10.17487/RFC8078
[RFC8080]

Edwards-Curve Digital Security Algorithm (EdDSA) for DNSSEC
O. Sury
R. Edmonds
February 2017
RFC 8080
DOI 10.17487/RFC8080
[RFC8145]

Signaling Trust Anchor Knowledge in DNS Security Extensions (DNSSEC)
D. Wessels
W. Kumari
P. Hoffman
April 2017
RFC 8145
DOI 10.17487/RFC8145
[RFC8198]

Aggressive Use of DNSSEC-Validated Cache
K. Fujiwara
A. Kato
W. Kumari
July 2017
RFC 8198
DOI 10.17487/RFC8198
[RFC8499]

DNS Terminology
P. Hoffman
A. Sullivan
K. Fujiwara
January 2019
BCP 219
RFC 8499
DOI 10.17487/RFC8499
[RFC8509]

A Root Key Trust Anchor Sentinel for DNSSEC
G. Huston
J. Damas
W. Kumari
December 2018
RFC 8509
DOI 10.17487/RFC8509
[RFC8624]

Algorithm Implementation Requirements and Usage Guidance for DNSSEC
P. Wouters
O. Sury
June 2019
RFC 8624
DOI 10.17487/RFC8624
[RFC8901]

Multi-Signer DNSSEC Models
S. Huque
P. Aras
J. Dickinson
J. Vcelak
D. Blacka
September 2020
RFC 8901
DOI 10.17487/RFC8901
[RFC9077]

NSEC and NSEC3: TTLs and Aggressive Use
P. van Dijk
July 2021
RFC 9077
DOI 10.17487/RFC9077
[RFC9157]

Revised IANA Considerations for DNSSEC
P. Hoffman
December 2021
RFC 9157
DOI 10.17487/RFC9157
[RFC9276]

Guidance for NSEC3 Parameter Settings
W. Hardaker
V. Dukhovni
August 2022
BCP 236
RFC 9276
DOI 10.17487/RFC9276
Acknowledgements
The DNS world owes a depth of gratitude to the authors and other contributors to the core DNSSEC documents, and to the notable DNSSEC extensions.
In addition, the following people made significant contributions to early versions of this document: Ben Schwartz and Duane Wessels.