<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.6.8) -->

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dnsop-dnssec-bcp-06" number="9364" submissionType="IETF" category="bcp" consensus="true" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" updates="" obsoletes="" xml:lang="en" version="3">

  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="DNSSEC">DNS Security Extensions (DNSSEC)</title>
    <seriesInfo name="RFC" value="9364"/>
    <seriesInfo name="BCP" value="237"/>
    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization>ICANN</organization>
      <address>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>
    <date year="2023" month="February"/>
    <area>ops</area>
    <workgroup>dnsop</workgroup>
    <keyword>DNSSEC</keyword>
    <keyword>DNS Security Extensions</keyword>
    <keyword>DNS</keyword>

    <abstract>
      <t>This document describes the DNS Security Extensions (commonly called "DNSSEC") that are
specified in RFCs 4033, 4034, and 4035, as well as 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.
A second purpose is to state that using DNSSEC for origin authentication of DNS data is the best current practice.
      A third purpose is to provide a single reference for other documents that want to refer to DNSSEC.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The core specification for what we know as DNSSEC (the combination of <xref target="RFC4033"/>,
<xref target="RFC4034"/>, and <xref target="RFC4035"/>) describes a set of protocols that provide origin
authentication of DNS data. <xref target="RFC6840"/> updates and extends those core RFCs
but does not fundamentally change the way that DNSSEC works.</t>
      <t>This document lists RFCs that should be considered by someone
creating an implementation of, or someone deploying, DNSSEC as it is currently standardized.
Although an effort was made to be thorough, the reader should not assume this list is comprehensive.
It uses terminology from those documents without defining that terminology.
It also points to the relevant IANA registry groups that relate to DNSSEC.
It does not, however, point to standards that rely on zones needing to be signed by DNSSEC,
such as DNS-Based Authentication of Named Entities (DANE) <xref target="RFC6698"/>.</t>
      <section anchor="dnssec-as-a-best-current-practice">
        <name>DNSSEC as a Best Current Practice</name>
        <t>Using the DNSSEC set of protocols is the best current practice for adding
origin authentication of DNS data. To date, no Standards Track RFCs offer any other
method for such origin authentication of data in the DNS.</t>
        <t>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 websites are signed, and only around a third of queries to recursive resolvers
are validated. However, this low level of deployment does not affect whether using 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 applicable for implementation by both ordinary and highly sophisticated domain owners.</t>
      </section>
      <section anchor="implementing-dnssec">
        <name>Implementing DNSSEC</name>
        <t>Developers of validating resolvers and authoritative servers,
as well as 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.</t>
        <t>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.</t>
      </section>
    </section>
    <section anchor="dnssec-core-documents">
      <name>DNSSEC Core Documents</name>
      <t>What we refer to as "DNSSEC" is the third iteration of the DNSSEC specification;
<xref target="RFC2065"/> was the first, and <xref target="RFC2535"/> was the second.
Earlier iterations have not been deployed on a significant scale.
Throughout this document, "DNSSEC" means the protocol initially defined in <xref target="RFC4033"/>, <xref target="RFC4034"/>, and  <xref target="RFC4035"/>.</t>
      <t>The three initial core documents generally cover different topics:</t>
      <ul spacing="normal">
        <li>
          <xref target="RFC4033"/> is an overview of DNSSEC, including how it might change the resolution of DNS queries.</li>
        <li>
          <xref target="RFC4034"/> specifies the DNS resource records used in DNSSEC.
It obsoletes many RFCs about earlier versions of DNSSEC.</li>
        <li>
          <xref target="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.</li>
      </ul>
      <t>At the time this set of core documents was published, someone could create a DNSSEC
implementation of signing software, of a DNSSEC-aware authoritative server, and/or of
a DNSSEC-aware recursive resolver from the three core documents, plus a few older
      RFCs specifying the cryptography used. Those two older documents are the following:</t>
      <ul spacing="normal">
        <li>
          <xref target="RFC2536"/> defines how to use the DSA signature algorithm (although it refers to other
documents for the details).
DSA was thinly implemented and can safely be ignored by DNSSEC implementations.</li>
        <li>
          <xref target="RFC3110"/> defines how to use the RSA signature algorithm (although refers to other
documents for the details).
RSA is still among the most popular signing algorithms for DNSSEC.</li>
      </ul>
      <t>It is important to note that later RFCs update the core documents. As just one example,
<xref target="RFC9077"/> changes how TTL values are calculated in DNSSEC processing.</t>
      <section anchor="addition-to-the-dnssec-core">
        <name>Addition to the DNSSEC Core</name>
        <t>As with any major protocol, developers and operators discovered issues with the original
core documents over the years.
<xref target="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.</t>
        <t><xref target="RFC6840"/> brings a few additions into the core of DNSSEC.
	It makes NSEC3 <xref target="RFC5155"/> as much a part of DNSSEC as NSEC is.
It also makes the SHA-256 and SHA-512 hash functions defined in <xref target="RFC4509"/> and <xref target="RFC5702"/> part of the core.</t>
      </section>
    </section>
    <section anchor="additional-cryptographic-algorithms-and-dnssec">
      <name>Additional Cryptographic Algorithms and DNSSEC</name>
      <t>Current cryptographic algorithms typically weaken over time as computing power improves and new cryptoanalysis emerges.
Two new  signing algorithms have been adopted by the DNSSEC community: Elliptic Curve Digital Signature Algorithm (ECDSA) <xref target="RFC6605"/> and Edwards-curve Digital Signature Algorithm (EdDSA) <xref target="RFC8080"/>.
ECDSA and EdDSA have become very popular signing algorithms in recent years.
The GOST signing algorithm <xref target="I-D.ietf-dnsop-rfc5933-bis"/> was also adopted but has seen very limited use, likely
because it is a national algorithm specific to a very small number of countries.</t>
      <t>Implementation developers who want to know which algorithms to implement in DNSSEC software
      should refer to <xref target="RFC8624"/>.
   Note that
   this specification is only about what algorithms should and should
   not be included in implementations, i.e., it is not advice about which
   algorithms zone operators should or should not use for signing, nor
   which algorithms recursive resolver operators should or should not use
   for validation.</t>
    </section>
    <section anchor="extensions-to-dnssec">
      <name>Extensions to DNSSEC</name>
      <t>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 the following:</t>
      <ul spacing="normal">
        <li>
          <xref target="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.</li>
        <li>
          <xref target="RFC6781"/> is a compendium of operational practices that may not be obvious from reading
just the core specifications.</li>
        <li>
          <xref target="RFC7344"/> describes using the CDS and CDNSKEY resource records to help automate the maintenance
of DS records in the parents of signed zones.</li>
        <li>
          <xref target="RFC8078"/> extends <xref target="RFC7344"/> by showing how to do initial setup of trusted relationships
between signed parent and child zones.</li>
        <li>
          <xref target="RFC8198"/> describes how a validating resolver can emit fewer queries in signed zones that
use NSEC and NSEC3 for negative caching.</li>
        <li>
          <xref target="RFC9077"/> updates <xref target="RFC8198"/> with respect to the TTL fields in signed records.</li>
      </ul>
    </section>
    <section anchor="additional-documents-of-interest">
      <name>Additional Documents of Interest</name>
      <t>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:</t>
      <ul spacing="normal">
        <li>
          <xref target="RFC4470"/> "describes how to construct DNSSEC NSEC resource records that cover a smaller range of
names than called for by <xref target="RFC4034"/>. By generating and signing these records on demand, authoritative name
servers can effectively stop the disclosure of zone contents otherwise made possible by walking the chain of NSEC records in a
signed zone".</li>
        <li>
          <xref target="RFC6975"/> "specifies a way for validating end-system resolvers to signal to a server which digital signature
and hash algorithms they support".</li>
        <li>
          <xref target="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.</li>
        <li>
          <xref target="RFC7583"/> "describes the issues surrounding the timing of events in the rolling of a key in a DNSSEC-secured zone".</li>
        <li>
          <xref target="RFC7646"/> "defines Negative Trust Anchors (NTAs), which can be used to mitigate DNSSEC validation failures by disabling
DNSSEC validation at specified domains".</li>
        <li>
          <xref target="RFC7958"/> "describes the format and publication mechanisms IANA has used to distribute the DNSSEC trust anchors".</li>
        <li>
          <xref target="RFC8027"/> "describes problems that a Validating DNS resolver, stub-resolver, or application might run into within
a non-compliant infrastructure".</li>
        <li>
          <xref target="RFC8145"/> "specifies two different ways for validating resolvers to signal to a server which keys are
referenced in their chain of trust".</li>
        <li>
          <xref target="RFC8499"/> contains lists of terminology used when talking about DNS; Sections <xref target="RFC8499" section="10" sectionFormat="bare"/> and <xref target="RFC8499" section="11" sectionFormat="bare"/> cover DNSSEC.</li>
        <li>
          <xref target="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".</li>
        <li>
          <xref target="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".</li>
        <li>
          <xref target="RFC9276"/> "provides guidance on setting NSEC3 parameters based on recent operational
deployment experience".</li>
      </ul>
      <t>There will certainly be other RFCs related to DNSSEC that are published after this one.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA already has three registry groups that relate to DNSSEC:</t>
      <ul spacing="normal">
        <li>
          <eref target="https://www.iana.org/assignments/dns-sec-alg-numbers">DNSSEC algorithm numbers</eref></li>
        <li>
          <eref target="https://www.iana.org/assignments/dnssec-nsec3-parameters">DNSSEC NSEC3 parameters</eref></li>
        <li>
          <eref target="https://www.iana.org/assignments/ds-rr-types">DNSSEC DS RRtype digest algorithms</eref></li>
      </ul>
      <t>The rules for the DNSSEC algorithm registry were set in the core RFCs and
updated by <xref target="RFC6014"/>, <xref target="RFC6725"/>, and <xref target="RFC9157"/>.</t>
      <t>This document does not update or create any registry groups or registries.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>All of the security considerations from all of the RFCs referenced in this document
apply here.</t>
    </section>
  </middle>
  <back>

<displayreference target="I-D.ietf-dnsop-rfc5933-bis" to="GOST-SIGN"/>

    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3110.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4033.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4034.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4035.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4509.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5155.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5702.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6840.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2065.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2535.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2536.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4470.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5011.xml"/>

<reference anchor="I-D.ietf-dnsop-rfc5933-bis">
<front>
<title>Use of GOST 2012 Signature Algorithms in DNSKEY and RRSIG Resource Records for DNSSEC
</title>
<author initials="D." surname="Belyavsky" fullname="Dmitry Belyavsky">
<organization>TCINET</organization>
</author>
<author initials="V." surname="Dolmatov" fullname="Vasily Dolmatov" role="editor">
<organization>JSC "NPK Kryptonite"</organization>
</author>
<author initials="B." surname="Makarenko" fullname="Boris Makarenko" role="editor">
<organization>The Technical center of Internet, LLC</organization>
</author>
<date month="November" day="30" year="2022"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-rfc5933-bis-13"/>
</reference>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6014.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6605.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6698.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6725.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6781.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6975.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7129.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7344.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7583.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7646.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7958.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8027.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8078.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8080.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8145.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8198.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8499.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8509.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8624.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8901.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9077.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9157.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9276.xml"/>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>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.</t>
      <t>In addition, the following people made significant contributions to early draft versions
of this document: <contact fullname="Ben Schwartz"/> and <contact fullname="Duane Wessels"/>.</t>
    </section>
  </back>
</rfc>
