<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-dnsop-cds-consistency-11" number="9975" submissionType="IETF" category="std" xml:lang="en" updates="7344, 7477" obsoletes="" tocInclude="true" symRefs="true" sortRefs="true" consensus="true" prepTime="2026-05-26T13:07:28" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-dnsop-cds-consistency-11" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9975" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="CDS/CDNSKEY/CSYNC Consistency">Clarifications on CDS/CDNSKEY and CSYNC Consistency</title>
    <seriesInfo name="RFC" value="9975" stream="IETF"/>
    <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
      <organization abbrev="SSE" showOnFrontPage="true">SSE - Secure Systems Engineering GmbH</organization>
      <address>
        <postal>
          <street>Hauptstraße 3</street>
          <city>Berlin</city>
          <code>10827</code>
          <country>Germany</country>
        </postal>
        <email>pth@systemsecurity.com</email>
      </address>
    </author>
    <date month="05" year="2026"/>
    <area>OPS</area>
    <workgroup>dnsop</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">Maintenance of DNS delegations requires occasional changes of the DS and
NS record sets on the parent side of the delegation.
For the case of DS records, "Automating DNSSEC Delegation Trust Maintenance" (RFC 7344) provides automation by allowing the
child to publish CDS and/or CDNSKEY records holding the prospective DS
parameters that the parent can ingest.
Similarly, "Child-to-Parent Synchronization in DNS" (RFC 7477) specifies CSYNC records to indicate a desired update
of the delegation's NS (and glue) records.
Parent-side entities (e.g., Registries and Registrars) can query these
records from the child and, after validation, use them to update the
parent-side Resource Record Sets (RRsets) of the delegation.</t>
      <t indent="0" pn="section-abstract-2">This document specifies under which conditions the target states expressed
via CDS/CDNSKEY and CSYNC records are considered "consistent". Parent-side
entities accepting such records from the child have to ensure that update
requests retrieved from different authoritative nameservers satisfy these
consistency requirements before taking any action based on them.</t>
      <t indent="0" pn="section-abstract-3">This document updates RFCs 7344 and 7477.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9975" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-notation">Requirements Notation</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-updates-to-rfcs-7344-and-74">Updates to RFCs 7344 and 7477</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-processing-requirements">Processing Requirements</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cds-and-cdnskey">CDS and CDNSKEY</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-csync">CSYNC</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-failure-scenarios-due-to-in">Failure Scenarios due to Inconsistencies</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="A.1" format="counter" sectionFormat="of" target="section-appendix.a.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ds-breakage-due-to-replicat">DS Breakage due to Replication Lag</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="A.2" format="counter" sectionFormat="of" target="section-appendix.a.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-escalation-of-lame-delegati">Escalation of Lame Delegation Takeover</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent="A.3" format="counter" sectionFormat="of" target="section-appendix.a.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multi-provider-permanent-mu">Multi-Provider (Permanent Multi-Signer)</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2.3.2">
                  <li pn="section-toc.1-1.7.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.7.2.3.2.1.1"><xref derivedContent="A.3.1" format="counter" sectionFormat="of" target="section-appendix.a.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ds-breakage">DS Breakage</xref></t>
                  </li>
                  <li pn="section-toc.1-1.7.2.3.2.2">
                    <t indent="0" pn="section-toc.1-1.7.2.3.2.2.1"><xref derivedContent="A.3.2" format="counter" sectionFormat="of" target="section-appendix.a.3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ns-breakage">NS Breakage</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.7.2.4">
                <t indent="0" pn="section-toc.1-1.7.2.4.1"><xref derivedContent="A.4" format="counter" sectionFormat="of" target="section-appendix.a.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bogus-provider-change-tempo">Bogus Provider Change (Temporary Multi-Signer)</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1"><xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/> automates DNS Security Extensions (DNSSEC) delegation trust maintenance by having the
child publish CDS and/or CDNSKEY records that describe the prospective DS
parameters.
Similarly, <xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/> specifies CSYNC records indicating a desired
update of the delegation's NS and associated glue records.
Parent-side entities (e.g., Registries and Registrars) can use these records
to update the corresponding records of the delegation.</t>
      <t indent="0" pn="section-1-2">For ingesting CSYNC records, <xref section="3.1" target="RFC7477" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7477#section-3.1" derivedContent="RFC7477"/> advocates that
Parental Agents limit queries to a single authoritative nameserver (as
done in normal resolution).  <xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/> (on CDS/CDNSKEY) has a corresponding section (<xref section="6.1" target="RFC7344" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-6.1" derivedContent="RFC7344"/>) that contains no
provision for how specifically queries for these records should be done.</t>
      <t indent="0" pn="section-1-3">Retrieving records from just one authoritative server (e.g., by
directing queries towards a trusted validating resolver) works well
under ideal operating scenarios.
However, problems may arise if CDS/CDNSKEY/CSYNC record sets are
inconsistent across authoritative nameserver either because they are
out of sync (e.g., during a Key Signing Key (KSK) rollover) or because they are not
controlled by the same entity (e.g., in a multi-signer setup
<xref target="RFC8901" format="default" sectionFormat="of" derivedContent="RFC8901"/>).</t>
      <t indent="0" pn="section-1-4">In such cases, if CDS/CDNSKEY/CSYNC records are retrieved from one
nameserver only ("naively", without a consistency check), each
nameserver can unilaterally trigger an update of the delegation's DS or
NS record set.</t>
      <t indent="0" pn="section-1-5">For example, a single provider in a multi-signer setup may (accidentally
or maliciously) cause another provider's trust anchors and/or
nameservers to be removed from the delegation.
This can occur both when the multi-signer configuration is temporary
(e.g., during a provider change) and when it is permanent (e.g., for redundancy).  In any case, a single provider should not be in the position to remove
any other provider's records from the delegation.</t>
      <t indent="0" pn="section-1-6">Similar breakage can occur when the delegation has lame nameservers,
where an attacker may illegitimately initialize a DS record set and then
manipulate the delegation's NS record set at will.
More detailed examples are given in <xref target="scenarios" format="default" sectionFormat="of" derivedContent="Appendix A"/>.</t>
      <t indent="0" pn="section-1-7">For a CDS/CDNSKEY/CSYNC consumer, it is generally impossible to estimate
the impact of a requested delegation update unless all of the child's
authoritative nameservers are inspected.
At the same time, applying an automated delegation update "<bcp14>MUST NOT</bcp14>
break the current delegation" (per <xref target="RFC7344" section="4.1" sectionFormat="comma" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-4.1" derivedContent="RFC7344"/>), i.e., it must
not hamper availability or validatability of the Child's resolution.
As part of a more holistic treatment of the problem space, <xref target="I-D.ietf-dnsop-ds-automation" format="default" sectionFormat="of" derivedContent="DS-AUTOMATION"/> provides more-specific guidance on
such safety checks.</t>
      <t indent="0" pn="section-1-8">Therefore, this document specifies that parent-side entities need to
ensure that the updates indicated by CDS/CDNSKEY and CSYNC record sets
are plausibly consistent across the child's nameservers before taking
any action based on these records.</t>
      <t indent="0" pn="section-1-9">Readers are expected to be familiar with DNSSEC <xref target="RFC9364" format="default" sectionFormat="of" derivedContent="RFC9364"/>, in
particular, <xref target="RFC4033" format="default" sectionFormat="of" derivedContent="RFC4033"/>, <xref target="RFC4034" format="default" sectionFormat="of" derivedContent="RFC4034"/>, <xref target="RFC4035" format="default" sectionFormat="of" derivedContent="RFC4035"/>, <xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/>, and
<xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/>.
For an overview of related operational practices, refer to <xref target="RFC6781" format="default" sectionFormat="of" derivedContent="RFC6781"/>
and <xref target="RFC8901" format="default" sectionFormat="of" derivedContent="RFC8901"/>.</t>
      <section anchor="requirements-notation" numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-requirements-notation">Requirements Notation</name>
        <t indent="0" pn="section-1.1-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
      <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-1.2">
        <name slugifiedName="name-terminology">Terminology</name>
        <dl spacing="normal" newline="false" indent="3" pn="section-1.2-1">
          <dt pn="section-1.2-1.1">Multi-provider setup:</dt>
          <dd pn="section-1.2-1.2">A constellation where several providers independently operate authoritative
DNS service for a domain, usually for purposes of redundancy. This includes
setups both with and without DNSSEC.</dd>
          <dt pn="section-1.2-1.3">Multi-signer setup:</dt>
          <dd pn="section-1.2-1.4">A multi-provider setup for a DNSSEC-enabled domain with multiple independent
signing entities <xref target="RFC8901" format="default" sectionFormat="of" derivedContent="RFC8901"/>. Such a setup may be permanent (for redundancy)
or temporary (for continuity of DNSSEC operation while changing the provider
of a domain that normally uses a single one).</dd>
        </dl>
        <t indent="0" pn="section-1.2-2">Otherwise, the terminology in this document is as defined in <xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/>.</t>
      </section>
    </section>
    <section anchor="updates-to-rfc-7344-and-rfc-7477" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-updates-to-rfcs-7344-and-74">Updates to RFCs 7344 and 7477</name>
      <t indent="0" pn="section-2-1"><xref section="4.1" target="RFC7344" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-4.1" derivedContent="RFC7344"/> lists acceptance rules for CDS/CDNSKEY records.
This list is extended with the consistency requirements defined in this
document. This document does not modify any other part of <xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/>.</t>
      <t indent="0" pn="section-2-2">Sections <xref target="RFC7477" section="3.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7477#section-3.1" derivedContent="RFC7477"/> and <xref target="RFC7477" section="4.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7477#section-4.2" derivedContent="RFC7477"/> of <xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/> have logic for deciding from which
nameserver to query CSYNC information. This logic is replaced with the
CSYNC consistency requirements defined in this document.</t>
    </section>
    <section anchor="processing-requirements" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-processing-requirements">Processing Requirements</name>
      <t indent="0" pn="section-3-1">Consistency requirements that apply equally to CDS/CDNSKEY and CSYNC are
listed first; type-specific consistency criteria are described in
separate subsections.</t>
      <t indent="0" pn="section-3-2">In order to determine plausible consistency of CDS/CDNSKEY or CSYNC
RRsets across the child's nameservers, the Parental Agent <bcp14>MUST</bcp14> fetch all
IP addresses for each nameserver hostname as listed in the Child's
delegation from the Parent using a validating resolver, including
any available glue records. Before acting on any CDS/CDNSKEY or CSYNC
record for the child, the Parental Agent <bcp14>MUST</bcp14> have established plausible
consistency by querying all of these IP addresses for the record set(s)
in question, as per the guidelines spelled out in the following
subsections.</t>
      <t indent="0" pn="section-3-3">In all cases, consistency is <bcp14>REQUIRED</bcp14> across received responses only.


(A NODATA response (see <xref target="RFC9499" format="default" sectionFormat="of" derivedContent="RFC9499"/>) is a received response.)</t>
      <t indent="0" pn="section-3-4">When a response cannot be obtained from a given nameserver, the Parental
Agent <bcp14>SHOULD</bcp14> attempt to obtain it at a later time, before concluding
that the nameserver is permanently unreachable and removing it from
consideration.
A configurable retry schedule is <bcp14>RECOMMENDED</bcp14> to increase the likelihood
of collecting data from all nameservers. An exponential back-off
schedule (e.g., 5, 10, 20, 40, ... minutes) provides a balance between
faster task completion while accommodating transient unreachability.
To sidestep localized routing issues, the Parental Agent <bcp14>MAY</bcp14> also
attempt contacting the nameserver from another network vantage point.</t>
      <t indent="0" pn="section-3-5">If an inconsistent state is encountered, the Parental Agent <bcp14>MUST</bcp14> abort
the operation.
Specifically, it <bcp14>MUST NOT</bcp14> delete or alter any existing RRset that would
have been deleted or altered, and it <bcp14>MUST NOT</bcp14> create any RRsets that would
have been created had the nameservers given consistent responses.</t>
      <t indent="0" pn="section-3-6">To accommodate transient inconsistencies (e.g., replication delays),
implementations <bcp14>MAY</bcp14> be configurable to undertake a retry of the full
process, repeating all queries (suggested default: enabled with
exponential back-off).</t>
      <t indent="0" pn="section-3-7">Any pending queries can immediately be dequeued when encountering a
response that confirms the status quo, either implicitly (NODATA) or
explicitly (via a response that matches the current delegation state).
This is because any subsequent responses could only confirm that nothing
needs to happen or give an inconsistent result in which case nothing
needs to happen.
The parent may apply local policy in determining whether the requested
update is consistent or not with the status quo, as illustrated in the
type-specific sections below.
In any case, queries may be continued across all nameservers for
reporting purposes.</t>
      <t indent="0" pn="section-3-8">Existing requirements for ensuring integrity remain in effect.
In particular, DNSSEC signatures <bcp14>MUST</bcp14> be requested and validated for all
queries unless otherwise noted.</t>
      <section anchor="cds-and-cdnskey" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-cds-and-cdnskey">CDS and CDNSKEY</name>
        <t indent="0" pn="section-3.1-1">When retrieving a Child's CDS/CDNSKEY RRset for DNSSEC delegation trust
maintenance, the Parental Agent, knowing both the Child zone name and
its NS hostnames, <bcp14>MUST</bcp14> ascertain that queries are made against all
nameservers listed in the Child's delegation from the
Parent. The Parental Agent <bcp14>MUST</bcp14> also ensure that each key referenced in any of the received
answers is also referenced in all other received responses (subject to the CDS digest type considerations below) or that responses consistently indicate a request for removal of the entire
DS RRset (<xref target="RFC8078" section="6" sectionFormat="comma" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-6" derivedContent="RFC8078"/>).</t>
        <t indent="0" pn="section-3.1-2">In other words, CDS/CDNSKEY records at the Child zone apex must be
fetched directly from each reachable authoritative server as
determined by the delegation's NS record set.
When a key is referenced in an eligible CDS record set but not the CDNSKEY record
set (or vice versa), or returned by one nameserver but is missing from
at least one other nameserver's answer, the CDS/CDNSKEY state <bcp14>MUST</bcp14> be
considered inconsistent.
Similarly, the state <bcp14>MUST</bcp14> be considered inconsistent if there is a CDS
or CDNSKEY response that indicates a removal request for the DS RRset
whereas another response indicates no change (NODATA) or a DS update.</t>
        <t indent="0" pn="section-3.1-3">  CDS records <bcp14>MUST</bcp14> be considered for consistency only when their digest
  type field is designated as "MUST" in the "Implement for DNSSEC
  Delegation" column of the "Digest Algorithms" registry <xref target="DS-IANA" format="default" sectionFormat="of" derivedContent="DS-IANA"/>).   Consistency of records with other digest types need not be verified,
  especially when the digest type is unsupported; such records can be
  ignored.</t>
        <t indent="0" pn="section-3.1-4">Independently of this, the parent may, as a matter of local policy,
  make its own choice regarding the hash digest types used when
  publishing a DS RRset (notwithstanding the requirements specified in
 <xref target="DS-IANA" format="default" sectionFormat="of" derivedContent="DS-IANA"/>). (The set of keys referenced in the DS RRset is not up to
  local policy.  Only if all keys from the CDNSKEY RRset and eligible
  CDS records are included is the DS RRset considered consistent.)</t>
        <t indent="0" pn="section-3.1-5">During initial DS provisioning (DNSSEC bootstrapping), conventional
DNSSEC validation for CDS/CDNSKEY responses is not (yet) available; in
this case, authenticated bootstrapping <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/> should be used.</t>
      </section>
      <section anchor="csync" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-csync">CSYNC</name>
        <t indent="0" pn="section-3.2-1">A CSYNC-based workflow generally consists of:</t>
        <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section-3.2-2">
  <li pn="section-3.2-2.1" derivedCounter="1.">querying the CSYNC (and
possibly SOA) record to determine which data records shall be synchronized from
child to parent, and</li>
          <li pn="section-3.2-2.2" derivedCounter="2.">querying for these data records (e.g., NS) before
placing them in the parent zone.</li>
        </ol>
        <t indent="0" pn="section-3.2-3">
If the below conditions are not met during these steps, the CSYNC state
<bcp14>MUST</bcp14> be considered inconsistent.</t>
        <t indent="0" pn="section-3.2-4">When querying the CSYNC record, the Parental Agent <bcp14>MUST</bcp14> ascertain that
queries are made against all nameservers listed in the
Child's delegation from the Parent and ensure that the record's
immediate flag and type bitmap are equal across received responses.</t>
        <t indent="0" pn="section-3.2-5">The CSYNC record's SOA serial field and soaminimum flag might
legitimately differ across nameservers (such as in multi-provider
setups); thus, equality is not required across responses.
Instead, for a given response, processing of these values <bcp14>MUST</bcp14>
occur with respect to the SOA record as obtained from the same
nameserver.
If the resulting per-nameserver assessments of whether the update is
permissible do not all agree, the CSYNC state <bcp14>MUST</bcp14> be considered
inconsistent.</t>
        <t indent="0" pn="section-3.2-6">Further, when retrieving the data record sets as indicated in the CSYNC
record (such as NS or A/AAAA records), the Parental Agent <bcp14>MUST</bcp14> ascertain
that all queries are made against all nameservers from which a CSYNC
record was received and ensure that all of them return responses with equal rdata
sets (including cases where all are empty).</t>
        <t indent="0" pn="section-3.2-7">As an example of local policy, the parent may choose to accept glue
records only for in-domain or sibling NS hostnames <xref target="RFC9499" format="default" sectionFormat="of" derivedContent="RFC9499"/>.</t>
        <t indent="0" pn="section-3.2-8">Other CSYNC processing rules from <xref section="3" target="RFC7477" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7477#section-3" derivedContent="RFC7477"/> remain in place without
modification. For example, when the NS type flag is present, associated NS
processing has to occur before potential glue updates to ensure that glue
addresses match the right set of nameservers.
Also, when the type bitmap contains the A/AAAA flags, corresponding address
queries are only to be sent for NS hostnames that are in bailiwick, while
out-of-bailiwick NS records are ignored.
Refer to Sections <xref target="RFC7477" section="3.2.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7477#section-3.2.2" derivedContent="RFC7477"/> and <xref target="RFC7477" section="4.3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7477#section-4.3" derivedContent="RFC7477"/> of <xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/> for more details.</t>
        <t indent="0" pn="section-3.2-9">CSYNC-based updates may cause validation or even insecure resolution to break
(e.g., by changing the delegation to a set of nameservers that do not
serve required DNSKEY records or do not know the zone at all).
Parental Agents <bcp14>SHOULD</bcp14> check that CSYNC-based updates, if applied, do not
break the delegation.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-4-1">This document has no IANA actions.</t>
    </section>
    <section anchor="security-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-5-1">The level of rigor mandated by this document is needed to prevent
publication of half-baked DS or delegation NS RRsets (authorized only
under an insufficient subset of authoritative nameservers), ensuring
that a single operator cannot unilaterally modify the delegation (add or
remove trust anchors or nameservers) when other operators are present.
This applies both when the setup is intentional and when it is
unintentional (such as in the case of lame-delegation hijacking).</t>
      <t indent="0" pn="section-5-2">As a consequence, the delegation's records can only be modified when
zones are synchronized across operators, unanimously reflecting the
domain owner's intentions.
Both availability and integrity of the domain's DNS service benefit from
this policy.</t>
      <t indent="0" pn="section-5-3">In order to resolve situations in which consensus about child zone
contents cannot be reached (e.g., because one of the nameserver
operators is uncooperative), Parental Agents <bcp14>SHOULD</bcp14> continue to accept
DS and NS/glue update requests from the domain owner via an
authenticated out-of-band channel (such as Extensible Provisioning Protocol (EPP) <xref target="RFC5730" format="default" sectionFormat="of" derivedContent="RFC5730"/>),
irrespective of the adoption of automated delegation maintenance.
Availability of such an interface also enables recovery from a situation
where the private key is no longer available for signing the CDS/CDNSKEY
or CSYNC records in the child zone.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-dnsop-ds-automation" to="DS-AUTOMATION"/>
    <references pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4033" target="https://www.rfc-editor.org/info/rfc4033" quoteTitle="true" derivedAnchor="RFC4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t indent="0">The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC4034" target="https://www.rfc-editor.org/info/rfc4034" quoteTitle="true" derivedAnchor="RFC4034">
          <front>
            <title>Resource Records for the DNS Security Extensions</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t indent="0">This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection of resource records and protocol modifications that provide source authentication for the DNS. This document defines the public key (DNSKEY), delegation signer (DS), resource record digital signature (RRSIG), and authenticated denial of existence (NSEC) resource records. The purpose and format of each resource record is described in detail, and an example of each resource record is given.</t>
              <t indent="0">This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4034"/>
          <seriesInfo name="DOI" value="10.17487/RFC4034"/>
        </reference>
        <reference anchor="RFC4035" target="https://www.rfc-editor.org/info/rfc4035" quoteTitle="true" derivedAnchor="RFC4035">
          <front>
            <title>Protocol Modifications for the DNS Security Extensions</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t indent="0">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.</t>
              <t indent="0">This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4035"/>
          <seriesInfo name="DOI" value="10.17487/RFC4035"/>
        </reference>
        <reference anchor="RFC5730" target="https://www.rfc-editor.org/info/rfc5730" quoteTitle="true" derivedAnchor="RFC5730">
          <front>
            <title>Extensible Provisioning Protocol (EPP)</title>
            <author fullname="S. Hollenbeck" initials="S." surname="Hollenbeck"/>
            <date month="August" year="2009"/>
            <abstract>
              <t indent="0">This document describes an application-layer client-server protocol for the provisioning and management of objects stored in a shared central repository. Specified in XML, the protocol defines generic object management operations and an extensible framework that maps protocol operations to objects. This document includes a protocol specification, an object mapping template, and an XML media type registration. This document obsoletes RFC 4930. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="69"/>
          <seriesInfo name="RFC" value="5730"/>
          <seriesInfo name="DOI" value="10.17487/RFC5730"/>
        </reference>
        <reference anchor="RFC7344" target="https://www.rfc-editor.org/info/rfc7344" quoteTitle="true" derivedAnchor="RFC7344">
          <front>
            <title>Automating DNSSEC Delegation Trust Maintenance</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <author fullname="G. Barwood" initials="G." surname="Barwood"/>
            <date month="September" year="2014"/>
            <abstract>
              <t indent="0">This document describes a method to allow DNS Operators to more easily update DNSSEC Key Signing Keys using the DNS as a communication channel. The technique described is aimed at delegations in which it is currently hard to move information from the Child to Parent.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7344"/>
          <seriesInfo name="DOI" value="10.17487/RFC7344"/>
        </reference>
        <reference anchor="RFC7477" target="https://www.rfc-editor.org/info/rfc7477" quoteTitle="true" derivedAnchor="RFC7477">
          <front>
            <title>Child-to-Parent Synchronization in DNS</title>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <date month="March" year="2015"/>
            <abstract>
              <t indent="0">This document specifies how a child zone in the DNS can publish a record to indicate to a parental agent that the parental agent may copy and process certain records from the child zone. The existence of the record and any change in its value can be monitored by a parental agent and acted on depending on local policy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7477"/>
          <seriesInfo name="DOI" value="10.17487/RFC7477"/>
        </reference>
        <reference anchor="RFC8078" target="https://www.rfc-editor.org/info/rfc8078" quoteTitle="true" derivedAnchor="RFC8078">
          <front>
            <title>Managing DS Records from the Parent via CDS/CDNSKEY</title>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <date month="March" year="2017"/>
            <abstract>
              <t indent="0">RFC 7344 specifies how DNS trust can be maintained across key rollovers in-band between parent and child. This document elevates RFC 7344 from Informational to Standards Track. It also adds a method for initial trust setup and removal of a secure entry point.</t>
              <t indent="0">Changing a domain's DNSSEC status can be a complicated matter involving multiple unrelated parties. Some of these parties, such as the DNS operator, might not even be known by all the organizations involved. The inability to disable DNSSEC via in-band signaling is seen as a problem or liability that prevents some DNSSEC adoption at a large scale. This document adds a method for in-band signaling of these DNSSEC status changes.</t>
              <t indent="0">This document describes reasonable policies to ease deployment of the initial acceptance of new secure entry points (DS records).</t>
              <t indent="0">It is preferable that operators collaborate on the transfer or move of a domain. The best method is to perform a Key Signing Key (KSK) plus Zone Signing Key (ZSK) rollover. If that is not possible, the method using an unsigned intermediate state described in this document can be used to move the domain between two parties. This leaves the domain temporarily unsigned and vulnerable to DNS spoofing, but that is preferred over the alternative of validation failures due to a mismatched DS and DNSKEY record.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8078"/>
          <seriesInfo name="DOI" value="10.17487/RFC8078"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9364" target="https://www.rfc-editor.org/info/rfc9364" quoteTitle="true" derivedAnchor="RFC9364">
          <front>
            <title>DNS Security Extensions (DNSSEC)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="February" year="2023"/>
            <abstract>
              <t indent="0">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>
          <seriesInfo name="BCP" value="237"/>
          <seriesInfo name="RFC" value="9364"/>
          <seriesInfo name="DOI" value="10.17487/RFC9364"/>
        </reference>
        <reference anchor="RFC9615" target="https://www.rfc-editor.org/info/rfc9615" quoteTitle="true" derivedAnchor="RFC9615">
          <front>
            <title>Automatic DNSSEC Bootstrapping Using Authenticated Signals from the Zone's Operator</title>
            <author fullname="P. Thomassen" initials="P." surname="Thomassen"/>
            <author fullname="N. Wisiol" initials="N." surname="Wisiol"/>
            <date month="July" year="2024"/>
            <abstract>
              <t indent="0">This document introduces an in-band method for DNS operators to publish arbitrary information about the zones for which they are authoritative, in an authenticated fashion and on a per-zone basis. The mechanism allows managed DNS operators to securely announce DNSSEC key parameters for zones under their management, including for zones that are not currently securely delegated.</t>
              <t indent="0">Whenever DS records are absent for a zone's delegation, this signal enables the parent's registry or registrar to cryptographically validate the CDS/CDNSKEY records found at the child's apex. The parent can then provision DS records for the delegation without resorting to out-of-band validation or weaker types of cross-checks such as "Accept after Delay".</t>
              <t indent="0">This document establishes the DS enrollment method described in Section 4 of this document as the preferred method over those from Section 3 of RFC 8078. It also updates RFC 7344.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9615"/>
          <seriesInfo name="DOI" value="10.17487/RFC9615"/>
        </reference>
      </references>
      <references pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-dnsop-ds-automation" target="https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-ds-automation-09" quoteTitle="true" derivedAnchor="DS-AUTOMATION">
          <front>
            <title>Operational Recommendations for DNSSEC Delegation Signer (DS) Automation</title>
            <author fullname="Steve Sheng" initials="S." surname="Sheng"/>
            <author fullname="Peter Thomassen" initials="P." surname="Thomassen">
              <organization showOnFrontPage="true">deSEC</organization>
            </author>
            <date day="22" month="May" year="2026"/>
            <abstract>
              <t indent="0">Enabling support for automatic acceptance of DNSSEC Delegation Signer (DS) parameters from the Child DNS operator (via RFCs 7344, 8078, 9615) requires the parental agent, often a registry or registrar, to make a number of technical decisions around acceptance checks, error and success reporting, and multi-party issues such as concurrent updates. This document describes recommendations about how these points are best addressed in practice.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-ds-automation-09"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="DS-IANA" target="https://www.iana.org/assignments/ds-rr-types" quoteTitle="true" derivedAnchor="DS-IANA">
          <front>
            <title>DNSSEC Delegation Signer (DS) Resource Record (RR) Type Digest Algorithms</title>
            <author fullname="IANA"/>
          </front>
        </reference>
        <reference anchor="LAME1" quoteTitle="true" target="https://doi.org/10.1145/3419394.3423623" derivedAnchor="LAME1">
          <front>
            <title>Unresolved Issues: Prevalence, Persistence, and Perils of Lame Delegations</title>
            <author fullname="Gautam Akiwate" surname="Akiwate">
              <organization showOnFrontPage="true">UC San Diego</organization>
            </author>
            <author fullname="Mattijs Jonker" surname="Jonker">
              <organization showOnFrontPage="true">University of Twente</organization>
            </author>
            <author fullname="Raffaele Sommese" surname="Sommese">
              <organization showOnFrontPage="true">University of Twente</organization>
            </author>
            <author fullname="Ian Foster" surname="Foster">
              <organization showOnFrontPage="true">DNS Coffee</organization>
            </author>
            <author fullname="Geoffrey M. Voelker" surname="Voelker">
              <organization showOnFrontPage="true">UC San Diego</organization>
            </author>
            <author fullname="Stefan Savage" surname="Savage">
              <organization showOnFrontPage="true">UC San Diego</organization>
            </author>
            <author fullname="KC Claffy" surname="Claffy">
              <organization showOnFrontPage="true">CAIDA/UC San Diego</organization>
            </author>
            <date year="2020" month="October" day="27"/>
          </front>
          <seriesInfo name="DOI" value="10.1145/3419394.3423623"/>
          <refcontent>IMC '20: Proceedings of the ACM Internet Measurement Conference, pp. 281-294</refcontent>
        </reference>
        <reference anchor="LAME2" quoteTitle="true" target="https://doi.org/10.1145/3487552.3487816" derivedAnchor="LAME2">
          <front>
            <title>Risky BIZness: risks derived from registrar name management</title>
            <author fullname="Gautam Akiwate" surname="Akiwate">
              <organization showOnFrontPage="true">UC San Diego</organization>
            </author>
            <author fullname="Stefan Savage" surname="Savage">
              <organization showOnFrontPage="true">UC San Diego</organization>
            </author>
            <author fullname="Geoffrey M. Voelker" surname="Voelker">
              <organization showOnFrontPage="true">UC San Diego</organization>
            </author>
            <author fullname="KC Claffy" surname="Claffy">
              <organization showOnFrontPage="true">CAIDA/UC San Diego</organization>
            </author>
            <date year="2021" month="November" day="2"/>
          </front>
          <seriesInfo name="DOI" value="10.1145/3487552.3487816"/>
          <refcontent>IMC '21: Proceedings of the 21st ACM Internet Measurement Conference, pp. 673-686</refcontent>
        </reference>
        <reference anchor="RFC6781" target="https://www.rfc-editor.org/info/rfc6781" quoteTitle="true" derivedAnchor="RFC6781">
          <front>
            <title>DNSSEC Operational Practices, Version 2</title>
            <author fullname="O. Kolkman" initials="O." surname="Kolkman"/>
            <author fullname="W. Mekking" initials="W." surname="Mekking"/>
            <author fullname="R. Gieben" initials="R." surname="Gieben"/>
            <date month="December" year="2012"/>
            <abstract>
              <t indent="0">This document describes a set of practices for operating the DNS with security extensions (DNSSEC). The target audience is zone administrators deploying DNSSEC.</t>
              <t indent="0">The document discusses operational aspects of using keys and signatures in the DNS. It discusses issues of key generation, key storage, signature generation, key rollover, and related policies.</t>
              <t indent="0">This document obsoletes RFC 4641, as it covers more operational ground and gives more up-to-date requirements with respect to key sizes and the DNSSEC operations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6781"/>
          <seriesInfo name="DOI" value="10.17487/RFC6781"/>
        </reference>
        <reference anchor="RFC8901" target="https://www.rfc-editor.org/info/rfc8901" quoteTitle="true" derivedAnchor="RFC8901">
          <front>
            <title>Multi-Signer DNSSEC Models</title>
            <author fullname="S. Huque" initials="S." surname="Huque"/>
            <author fullname="P. Aras" initials="P." surname="Aras"/>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="J. Vcelak" initials="J." surname="Vcelak"/>
            <author fullname="D. Blacka" initials="D." surname="Blacka"/>
            <date month="September" year="2020"/>
            <abstract>
              <t indent="0">Many enterprises today employ the service of multiple DNS providers to distribute their authoritative DNS service. Deploying DNSSEC in such an environment may present some challenges, depending on the configuration and feature set in use. In particular, when each DNS provider independently signs zone data with their own keys, additional key-management mechanisms are necessary. This document presents deployment models that accommodate this scenario and describes these key-management requirements. These models do not require any changes to the behavior of validating resolvers, nor do they impose the new key-management requirements on authoritative servers not involved in multi-signer configurations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8901"/>
          <seriesInfo name="DOI" value="10.17487/RFC8901"/>
        </reference>
        <reference anchor="RFC9499" target="https://www.rfc-editor.org/info/rfc9499" quoteTitle="true" derivedAnchor="RFC9499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="March" year="2024"/>
            <abstract>
              <t indent="0">The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t indent="0">This document updates RFC 2308 by clarifying the definitions of "forwarder" and "QNAME". It obsoletes RFC 8499 by adding multiple terms and clarifications. Comprehensive lists of changed and new definitions can be found in Appendices A and B.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="9499"/>
          <seriesInfo name="DOI" value="10.17487/RFC9499"/>
        </reference>
      </references>
    </references>
    <section anchor="scenarios" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-failure-scenarios-due-to-in">Failure Scenarios due to Inconsistencies</name>
      <t indent="0" pn="section-appendix.a-1">The following scenarios are informative examples of how things can go wrong when
consistency is not enforced by the parent during CDS/CDNSKEY/CSYNC
processing.
Other scenarios that cause similar (or perhaps even more) harm may
exist.</t>
      <t indent="0" pn="section-appendix.a-2">The common feature of these scenarios is that if one nameserver steps
out of line and the parent is not careful, DNS resolution and/or
validation will break down. When several DNS providers are involved,
this undermines the very guarantees of operator independence that
multi-provider configurations are intended to provide.</t>
      <section anchor="ds-breakage-due-to-replication-lag" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.1">
        <name slugifiedName="name-ds-breakage-due-to-replicat">DS Breakage due to Replication Lag</name>
        <t indent="0" pn="section-appendix.a.1-1">If an authoritative nameserver is lagging behind during a key rollover,
the parent may see different CDS/CDNSKEY RRsets depending on the
nameserver contacted. This may cause old and new DS RRsets to be
deployed in an alternating fashion and without the awareness of the zone
maintainer, who may then inadvertently break the chain of trust by
prematurely removing a DNSKEY still referenced by a (stale) CDS/CDNSKEY
RRset.</t>
        <t indent="0" pn="section-appendix.a.1-2">While foreseen in <xref section="6.2" target="RFC7344" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-6.2" derivedContent="RFC7344"/>, the solution specified there
requires parents to keep state on CDS/CDNSKEY RRsets. This document
achieves the same without this burden and, in case the parent reports
consistency errors downstream, can also help detection of the child-side
replication issue by the operator.</t>
      </section>
      <section anchor="escalation-of-lame-delegation-takeover" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.2">
        <name slugifiedName="name-escalation-of-lame-delegati">Escalation of Lame Delegation Takeover</name>
        <t indent="0" pn="section-appendix.a.2-1">A delegation may include a nonexistent NS hostname, for example, due to
a typo or the nameserver's domain registration having expired.
(Re-)registering such a non-resolvable nameserver domain allows a third
party to run authoritative DNS service for all domains delegated to that
NS hostname, serving responses different from the legitimate ones.</t>
        <t indent="0" pn="section-appendix.a.2-2">This strategy for hijacking (at least part of the) DNS traffic and
spoofing responses is not new but is surprisingly common <xref target="LAME1" format="default" sectionFormat="of" derivedContent="LAME1"/> <xref target="LAME2" format="default" sectionFormat="of" derivedContent="LAME2"/>.
It is also known that DNSSEC reduces the impact of such an attack,
as validating resolvers will reject illegitimate responses due to lack
of signatures consistent with the delegation's DS records.</t>
        <t indent="0" pn="section-appendix.a.2-3">On the other hand, if the delegation is not protected by DNSSEC, the
rogue nameserver is not only able to serve unauthorized responses
without detection: it is even possible for the attacker to escalate the
nameserver takeover to a full domain takeover.</t>
        <t indent="0" pn="section-appendix.a.2-4">In particular, the rogue nameserver can publish CDS/CDNSKEY records.
If those are processed by the parent without ensuring consistency with
other authoritative nameservers, the delegation will, with some patience, get
secured with the attacker's DNSSEC keys. Of course, as the parent's query (or
sometimes queries) need to hit the attacker's nameserver, this requires some
statistical luck, but, eventually, it will succeed.
As responses served by the remaining legitimate nameservers are not
signed with these keys, validating resolvers will start rejecting them.</t>
        <t indent="0" pn="section-appendix.a.2-5">Once DNSSEC is established, the attacker can use CSYNC to remove other
nameservers from the delegation at will (and potentially add new ones
under their control) or change glue records to point to the attacker's
nameservers.
This enables the attacker to position itself as the only party
providing authoritative DNS service for the victim domain,
significantly augmenting the attack's impact.</t>
      </section>
      <section anchor="multi-provider-permanent-multi-signer" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.3">
        <name slugifiedName="name-multi-provider-permanent-mu">Multi-Provider (Permanent Multi-Signer)</name>
        <section anchor="ds-breakage" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.3.1">
          <name slugifiedName="name-ds-breakage">DS Breakage</name>
          <t indent="0" pn="section-appendix.a.3.1-1">While performing a key rollover and adjusting the corresponding
CDS/CDNSKEY records, a provider could accidentally publish CDS/CDNSKEY
records that only include its own keys.</t>
          <t indent="0" pn="section-appendix.a.3.1-2">When the parent happens to retrieve the records from a nameserver
controlled by this provider, the other providers' DS records would be
removed from the delegation.
As a result, the zone is broken (at least for some queries).</t>
        </section>
        <section anchor="ns-breakage" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.3.2">
          <name slugifiedName="name-ns-breakage">NS Breakage</name>
          <t indent="0" pn="section-appendix.a.3.2-1">A similar scenario affects the CSYNC record, which is used to update the
delegation's NS record set at the parent.
For example, the issue occurs when a provider accidentally includes
only their own set of hostnames in the local NS record set or publishes
an otherwise flawed NS record set.</t>
          <t indent="0" pn="section-appendix.a.3.2-2">If the parent then observes a CSYNC signal and fetches the flawed NS
record set without ensuring consistency across nameservers, the
delegation may be updated in a way that breaks resolution or silently
reduces the multi-provider setup to a single-provider setup.</t>
        </section>
      </section>
      <section anchor="bogus-provider-change-temporary-multi-signer" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.4">
        <name slugifiedName="name-bogus-provider-change-tempo">Bogus Provider Change (Temporary Multi-Signer)</name>
        <t indent="0" pn="section-appendix.a.4-1">Transferring DNS service for a domain name from one (signing) DNS
provider to another, without going insecure, necessitates a brief period
during which the domain is operated in multi-signer mode.  First, the providers include each other's signing keys as DNSKEY and
CDS/CDNSKEY records in their own copy of the zone.
Once the parent learns about the updated CDS/CDNSKEY record set at the
old provider, the delegation's DS record set is updated.
Then, after waiting for cache expiration, the new provider's NS
hostnames can be added to the zone's NS record set so that queries
start balancing across both providers.
To conclude the handover, the old provider is removed by inverting
these steps with swapped roles.</t>
        <t indent="0" pn="section-appendix.a.4-2">The multi-signer phase of this process breaks when the new provider,
perhaps unaware of the situation and its intricacies, fails to include
the old provider's keys in the DNSKEY (and CDS/CDNSKEY) record sets.
One obvious consequence is that whenever the resolver happens to
retrieve the DNSKEY record set from the new provider, the old provider's
RRSIGs no longer validate, causing SERVFAIL to be returned.</t>
        <t indent="0" pn="section-appendix.a.4-3">However, an even worse consequence can occur when the parent performs
their next CDS/CDNSKEY scan.
The incorrect CDS/CDNSKEY record set is fetched
from the new provider and used to update the delegation's DS record set.
As a result, the old provider (who still appears in the delegation) is
prematurely removed from the domain's DNSSEC chain of trust.
The new DS record set authenticates the new provider's DNSKEYs only, and
DNSSEC validation fails for all answers served by the old provider.</t>
      </section>
    </section>
    <section anchor="acknowledgments" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.b-1">In order of first contribution or review: <contact fullname="Viktor Dukhovni"/>, <contact fullname="Wes Hardaker"/>, <contact fullname="Libor Peltan"/>, <contact fullname="Oli Schacher"/>, <contact fullname="David Blacka"/>, <contact fullname="Charlie Kaufman"/>, <contact fullname="Michael Bauland"/>, <contact fullname="Patrick Mevzek"/>, <contact fullname="Joe Abley"/>, <contact fullname="Ondřej Caletka"/>, <contact fullname="Ondřej Surý"/>, <contact fullname="Mohamed Boucadair"/>, <contact fullname="Vijay Gurbani"/>, <contact fullname="Gorry Fairhurst"/>, <contact fullname="Paul Wouters"/>, <contact fullname="Andy Newton"/>, <contact fullname="Mike Bishop"/>, and <contact fullname="Warren Kumari"/>.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
        <organization abbrev="SSE" showOnFrontPage="true">SSE - Secure Systems Engineering GmbH</organization>
        <address>
          <postal>
            <street>Hauptstraße 3</street>
            <city>Berlin</city>
            <code>10827</code>
            <country>Germany</country>
          </postal>
          <email>pth@systemsecurity.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
