<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-dnsop-ds-automation-09" number="10026" updates="" obsoletes="" category="bcp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" xml:lang="en" prepTime="2026-07-23T08:11:20" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-dnsop-ds-automation-09" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc10026" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="DS Automation">Operational Recommendations for DNSSEC Delegation Signer (DS) Automation</title>
    <seriesInfo name="RFC" value="10026" stream="IETF"/>
    <seriesInfo name="BCP" value="246" stream="IETF"/>
    <author initials="S." surname="Sheng" fullname="Steve Sheng">
      <organization showOnFrontPage="true"/>
      <address>
        <email>steve.sheng@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
      <organization showOnFrontPage="true">deSEC</organization>
      <address>
        <email>peter@desec.io</email>
      </address>
    </author>
    <date month="07" year="2026"/>
    <area>OPS</area>
    <workgroup>dnsop</workgroup>
    <keyword>DNS</keyword>
    <keyword>DS</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">Enabling support for automatic acceptance of DNSSEC Delegation Signer (DS) parameters from the Child DNS operator (via RFCs 7344, 8078, and 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>
    <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 memo documents an Internet Best Current Practice.
        </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 BCPs 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/rfc10026" 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>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" 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-terminology">Terminology</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-notation">Requirements Notation</xref></t>
              </li>
            </ul>
          </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-recommendations-for-deploym">Recommendations for Deployments of DS Automation</xref></t>
          </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-acceptance-checks-and-safet">Acceptance Checks and Safety Measures</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-recommendations">Recommendations</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-analysis">Analysis</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.2.2">
                  <li pn="section-toc.1-1.4.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.1.1"><xref derivedContent="4.2.1" format="counter" sectionFormat="of" target="section-4.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-continuity-of-resolution">Continuity of Resolution</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.2.1"><xref derivedContent="4.2.2" format="counter" sectionFormat="of" target="section-4.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-timing-ttls-and-caching">Timing, TTLs, and Caching</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.3">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.3.1"><xref derivedContent="4.2.3" format="counter" sectionFormat="of" target="section-4.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cds-vs-cdnskey">CDS vs. CDNSKEY</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </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-reporting-and-transparency">Reporting and Transparency</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-recommendations-2">Recommendations</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-analysis-2">Analysis</xref></t>
              </li>
            </ul>
          </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-registration-locks">Registration Locks</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-recommendations-3">Recommendations</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-analysis-3">Analysis</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.2.2">
                  <li pn="section-toc.1-1.6.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.6.2.2.2.1.1"><xref derivedContent="6.2.1" format="counter" sectionFormat="of" target="section-6.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-registrar-vs-registry-lock">Registrar vs. Registry Lock</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.6.2.2.2.2.1"><xref derivedContent="6.2.2" format="counter" sectionFormat="of" target="section-6.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-detailed-rationale">Detailed Rationale</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multiple-submitting-parties">Multiple Submitting Parties and Suspension of Automation</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="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-recommendations-4">Recommendations</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="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-analysis-4">Analysis</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2.2.2">
                  <li pn="section-toc.1-1.7.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.7.2.2.2.1.1"><xref derivedContent="7.2.1" format="counter" sectionFormat="of" target="section-7.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-necessity-of-non-automatic-">Necessity of Non-Automatic Updates</xref></t>
                  </li>
                  <li pn="section-toc.1-1.7.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.7.2.2.2.2.1"><xref derivedContent="7.2.2" format="counter" sectionFormat="of" target="section-7.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-impact-of-non-automatic-upd">Impact of Non-Automatic Updates: When to Suspend Automation</xref></t>
                  </li>
                  <li pn="section-toc.1-1.7.2.2.2.3">
                    <t indent="0" pn="section-toc.1-1.7.2.2.2.3.1"><xref derivedContent="7.2.3" format="counter" sectionFormat="of" target="section-7.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-concurrent-automatic-update">Concurrent Automatic Updates</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations">Operational Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <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.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-recommendations-overview">Recommendations Overview</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="A.1" format="counter" sectionFormat="of" target="section-appendix.a.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-acceptance-checks-and-safety">Acceptance Checks and Safety Measures</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.2">
                <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="A.2" format="counter" sectionFormat="of" target="section-appendix.a.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reporting-and-transparency-2">Reporting and Transparency</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.3">
                <t indent="0" pn="section-toc.1-1.12.2.3.1"><xref derivedContent="A.3" format="counter" sectionFormat="of" target="section-appendix.a.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-registration-locks-2">Registration Locks</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.4">
                <t indent="0" pn="section-toc.1-1.12.2.4.1"><xref derivedContent="A.4" format="counter" sectionFormat="of" target="section-appendix.a.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multiple-submitting-parties-">Multiple Submitting Parties and Suspension of Automation</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.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.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</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"/>, <xref target="RFC8078" format="default" sectionFormat="of" derivedContent="RFC8078"/>, and <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/> automate DNSSEC <xref target="RFC9364" format="default" sectionFormat="of" derivedContent="RFC9364"/> delegation trust maintenance by having the child publish Child DS (CDS) and/or Child DNSKEY (CDNSKEY) records, which indicate the delegation's desired DNSSEC parameters ("DS automation").</t>
      <t indent="0" pn="section-1-2">Parental Agents using these protocols have to make a number of technical decisions relating to issues of acceptance checks, timing, error reporting, locks, etc. Additionally, when using the registrant-registrar-registry (RRR) model (as is common amongst top-level domains (TLDs)), both the registrar and the registry can effect parent-side changes to the delegation. In such a situation, additional opportunities for implementation differences arise.</t>
      <t indent="0" pn="section-1-3">Not all existing DS automation deployments have made the same choices with respect to these questions, leading to somewhat inconsistent behavior. From the perspective of a domain holder with domain names under various TLDs, this may be unexpected and confusing.</t>
      <t indent="0" pn="section-1-4">In the following sections, operational questions are first raised and answered with the corresponding recommendations. Each section is concluded with an analysis of its recommendations and related considerations. A combined view of the recommendations from all sections is given in <xref target="recommendations_overview" format="default" sectionFormat="of" derivedContent="Appendix A"/>.</t>
      <t indent="0" pn="section-1-5">Readers are expected to be familiar with DNSSEC <xref target="RFC9364" format="default" sectionFormat="of" derivedContent="RFC9364"/> <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/> <xref target="RFC9859" format="default" sectionFormat="of" derivedContent="RFC9859"/> <xref target="RFC9975" format="default" sectionFormat="of" derivedContent="RFC9975"/>.</t>
      <t indent="0" pn="section-1-6">The core issues addressed in the document are derived from Section 4.4 of <xref target="SAC126" format="default" sectionFormat="of" derivedContent="SAC126"/>. Readers are referred to this report for additional background.</t>
    </section>
    <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">The term "Parental Agent" is used as defined in <xref section="1.1" sectionFormat="of" target="RFC7344" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-1.1" derivedContent="RFC7344"/>. The document also uses terms defined in <xref target="RFC9499" format="default" sectionFormat="of" derivedContent="RFC9499"/>, in particular:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-2">
        <li pn="section-2-2.1">
          <t indent="0" pn="section-2-2.1.1">DNS operator</t>
        </li>
        <li pn="section-2-2.2">
          <t indent="0" pn="section-2-2.2.1">Registry</t>
        </li>
        <li pn="section-2-2.3">
          <t indent="0" pn="section-2-2.3.1">Registrant</t>
        </li>
        <li pn="section-2-2.4">
          <t indent="0" pn="section-2-2.4.1">Registrar</t>
        </li>
      </ul>
      <t indent="0" pn="section-2-3">In addition, the document makes use of the following terms:</t>
      <dl indent="3" newline="false" spacing="normal" pn="section-2-4">
        <dt pn="section-2-4.1">Child zone:</dt>
        <dd pn="section-2-4.2">
          <t indent="0" pn="section-2-4.2.1">DNS zone whose delegation is in the Parent zone.</t>
        </dd>
        <dt pn="section-2-4.3">Child (DNS operator):</dt>
        <dd pn="section-2-4.4">
          <t indent="0" pn="section-2-4.4.1">DNS operator responsible for a Child zone.</t>
        </dd>
        <dt pn="section-2-4.5">Parent zone:</dt>
        <dd pn="section-2-4.6">
          <t indent="0" pn="section-2-4.6.1">DNS zone that holds a delegation for a Child zone.</t>
        </dd>
        <dt pn="section-2-4.7">Parent:</dt>
        <dd pn="section-2-4.8">
          <t indent="0" pn="section-2-4.8.1">The operator responsible for a Parent zone and thus involved with the maintenance of the delegation's DNSSEC parameters (in particular, the acceptance of these parameters and the publication of corresponding DS records).</t>
        </dd>
        <dt pn="section-2-4.9">RRR Model:</dt>
        <dd pn="section-2-4.10">
          <t indent="0" pn="section-2-4.10.1">The registrant-registrar-registry (RRR) interaction framework, where registrants interact with a registrar to register and manage domain names and registrars interact with the domain's registry for the provision and management of domain names on the registrant's behalf. This model is common amongst TLDs.</t>
        </dd>
      </dl>
      <section anchor="requirements-notation" numbered="true" removeInRFC="false" toc="include" pn="section-2.1">
        <name slugifiedName="name-requirements-notation">Requirements Notation</name>
        <t indent="0" pn="section-2.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>
    <section anchor="recommendations-for-deployments-of-ds-automation" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-recommendations-for-deploym">Recommendations for Deployments of DS Automation</name>
      <t indent="0" pn="section-3-1">The guidelines for deploying DS automation set out in this document are meant to achieve more uniform treatment across suffixes -- minimizing user surprise and providing baseline safety and uniformity of behavior.
They are also intended to prevent disruption of DNS and DNSSEC functionality.
At a minimum, compliance with this RFC requires support for both DNSSEC bootstrapping <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/> and subsequent updates <xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/> <xref target="RFC8078" format="default" sectionFormat="of" derivedContent="RFC8078"/> under the implementation guidance below.</t>
      <t indent="0" pn="section-3-2">The recommendations optimize interoperability and safety. In certain cases, local policy may take precedence, such as when a registry is subjected to national cryptographic policy requirements.
However, not following any requirements designated with the "<bcp14>SHOULD</bcp14>" key word will generally lead to undesirable effects of ambiguity and interoperability issues.
When implementing these recommendations, operators <bcp14>MUST</bcp14> mitigate issues arising from any particular deviation.</t>
      <t indent="0" pn="section-3-3">Registries with additional requirements on DS update checks <bcp14>MAY</bcp14> implement any additional checks in line with local policy.</t>
    </section>
    <section anchor="acceptance" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-acceptance-checks-and-safet">Acceptance Checks and Safety Measures</name>
      <t indent="0" pn="section-4-1">This section provides recommendations to address the following operational questions:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4-2">
        <li pn="section-4-2.1">
          <t indent="0" pn="section-4-2.1.1">What kind of acceptance checks should be performed on DS parameters?</t>
        </li>
        <li pn="section-4-2.2">
          <t indent="0" pn="section-4-2.2.1">Should these checks be performed upon acceptance or also continually when in place?</t>
        </li>
        <li pn="section-4-2.3">
          <t indent="0" pn="section-4-2.3.1">How do TTLs and caching impact DS provisioning? How important is timing in a child key change?</t>
        </li>
        <li pn="section-4-2.4">
          <t indent="0" pn="section-4-2.4.1">Are parameters for DS automation best conveyed as CDNSKEY or CDS records or both?</t>
        </li>
      </ul>
      <section anchor="recommendations" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-recommendations">Recommendations</name>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-4.1-1">
	  <li pn="section-4.1-1.1" derivedCounter="1.">
            <t indent="0" pn="section-4.1-1.1.1">Entities performing automated DS maintenance <bcp14>MUST</bcp14> verify:  </t>
            <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section-4.1-1.1.2">
	      <li anchor="acceptance-rec1a" pn="section-4.1-1.1.2.1" derivedCounter="a.">
                <t indent="0" pn="section-4.1-1.1.2.1.1">the unambiguous intent of each DS bootstrapping or update request as per <xref target="RFC9975" format="default" sectionFormat="of" derivedContent="RFC9975"/>, by checking its consistency both      </t>
                <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-1.1.2.1.2">
                  <li pn="section-4.1-1.1.2.1.2.1">
                    <t indent="0" pn="section-4.1-1.1.2.1.2.1.1">between any published CDS and CDNSKEY records and</t>
                  </li>
                  <li pn="section-4.1-1.1.2.1.2.2">
                    <t indent="0" pn="section-4.1-1.1.2.1.2.2.1">across all authoritative nameservers in the delegation,</t>
                  </li>
                </ul>
                <t indent="0" pn="section-4.1-1.1.2.1.3">
and</t>
              </li>
              <li pn="section-4.1-1.1.2.2" derivedCounter="b.">
                <t indent="0" pn="section-4.1-1.1.2.2.1">that the resulting DS record set would allow continued DNSSEC validation if deployed</t>
              </li>
            </ol>
            <t indent="0" pn="section-4.1-1.1.3">
and cancel the update if the verifications do not succeed.</t>
          </li>
          <li pn="section-4.1-1.2" derivedCounter="2.">
            <t indent="0" pn="section-4.1-1.2.1">Parent-side entities (such as registries) <bcp14>SHOULD</bcp14> allow for effective rollback by reducing a DS record set's TTL to a value between 5-15 minutes when a new set of records is published, and restore the previous (or, if unavailable, default) TTL value at a later occasion (but not before the previous DS RRset's TTL has expired).</t>
            <t indent="0" pn="section-4.1-1.2.2">Besides a prudent choice of TTL, prompt DS changes also require
      timely discovery of update requests.  For recommended methods,
      see <xref target="ttls-and-caching" format="default" sectionFormat="of" derivedContent="Section 4.2.2"/>.</t>
          </li>
          <li pn="section-4.1-1.3" derivedCounter="3.">
            <t indent="0" pn="section-4.1-1.3.1">DNS operators <bcp14>MUST</bcp14> publish both CDNSKEY and CDS records (unless the parent's preference is known) and follow best practice for the choice of hash digest type <xref target="DS-IANA" format="default" sectionFormat="of" derivedContent="DS-IANA"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="analysis_acceptance" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-analysis">Analysis</name>
        <section anchor="continuity-of-resolution" numbered="true" removeInRFC="false" toc="include" pn="section-4.2.1">
          <name slugifiedName="name-continuity-of-resolution">Continuity of Resolution</name>
          <t indent="0" pn="section-4.2.1-1">To maintain the basic resolution function, it is critical to avoid deployment of flawed DS record sets in the Parent zone. It is therefore necessary for the Parent to verify that the DS record set resulting from an automated (or even manual) update does not break DNSSEC validation if deployed and otherwise cancel the update.</t>
          <t indent="0" pn="section-4.2.1-2">This is best achieved by:</t>
          <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-4.2.1-3">
	    <li pn="section-4.2.1-3.1" derivedCounter="1.">
              <t indent="0" pn="section-4.2.1-3.1.1">verifying that consistent CDS/CDNSKEY responses are served by all of the delegation's nameservers <xref target="RFC9975" format="default" sectionFormat="of" derivedContent="RFC9975"/>;</t>
            </li>
            <li pn="section-4.2.1-3.2" derivedCounter="2.">
              <t indent="0" pn="section-4.2.1-3.2.1">verifying that the resulting DS Resource Record set (RRset) does not break the delegation if applied (<xref section="4.1" sectionFormat="comma" target="RFC7344" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-4.1" derivedContent="RFC7344"/>), i.e., it provides at least one valid path for validators to use (<xref section="5.11" sectionFormat="comma" target="RFC6840" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6840#section-5.11" derivedContent="RFC6840"/>). This is the case if the child's DNSKEY RRset has a valid RRSIG signature from a key that is referenced by at least one DS record, with the digest type and signing algorithm values designated as "<bcp14>RECOMMENDED</bcp14>" or "<bcp14>MUST</bcp14>" in the "Use for DNSSEC Validation" columns of the relevant IANA registries (<xref target="DS-IANA" format="default" sectionFormat="of" derivedContent="DS-IANA"/> and <xref target="DNSKEY-IANA" format="default" sectionFormat="of" derivedContent="DNSKEY-IANA"/>). Note that these checks need not be enforced when provisioning DS records manually in order to enable the use of other digest types or algorithms for potentially non-interoperable purposes.</t>
            </li>
          </ol>
          <t indent="0" pn="section-4.2.1-4">Even without an update being requested, Parents may occasionally check whether the current DS contents would still be acceptable if they were newly submitted in CDS/CDNSKEY form (see <xref target="acceptance" format="default" sectionFormat="of" derivedContent="Section 4"/>).
Any failures -- such as a missing DNSKEY due to improper rollover timing (<xref section="4.1" sectionFormat="comma" target="RFC6781" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6781#section-4.1" derivedContent="RFC6781"/>) or changed algorithm requirements -- can then be communicated in line with <xref target="recommendations-1" format="default" sectionFormat="of" derivedContent="Section 5.1"/>, without altering or removing the existing DS RRset.</t>
        </section>
        <section anchor="ttls-and-caching" numbered="true" removeInRFC="false" toc="include" pn="section-4.2.2">
          <name slugifiedName="name-timing-ttls-and-caching">Timing, TTLs, and Caching</name>
          <t indent="0" pn="section-4.2.2-1">For timely execution of DS provisioning requests, it is important to
  discover them reasonably quickly.  The best way to do so is for the
  Child DNS operator to send an <xref target="RFC9859" format="default" sectionFormat="of" derivedContent="RFC9859"/> notification to the parent
  (Sections <xref target="RFC9859" section="4.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-4.1" derivedContent="RFC9859"/> and <xref target="RFC9859" section="4.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-4.2" derivedContent="RFC9859"/> of <xref target="RFC9859" format="default" sectionFormat="of" derivedContent="RFC9859"/>).  In addition to publication of the
  relevant notification targets, this requires the advertised endpoint
  to actually listen (Sections <xref target="RFC9859" section="3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-3" derivedContent="RFC9859"/> and <xref target="RFC9859" section="4.3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-4.3" derivedContent="RFC9859"/> of <xref target="RFC9859" format="default" sectionFormat="of" derivedContent="RFC9859"/>).  By explicitly
  naming a responsible endpoint, this method also resolves potential
  contention between registry and registrar when the RRR model is used
  (see <xref target="concurrent-automatic-updates" format="default" sectionFormat="of" derivedContent="Section 7.2.3"/>).  Note that periodic scanning is a suboptimal
  alternative as it introduces policy-dependent delays and does not
  scale well for large zones.</t>
          <t indent="0" pn="section-4.2.2-2">To further reduce the impact of any misconfigured DS record set -- be it from automated or from manual provisioning -- the option to quickly roll back the delegation's DNSSEC parameters is of great importance. This is achieved by setting a comparatively low TTL on the DS record set in the parent domain, at the cost of reduced resiliency against nameserver unreachability due to the earlier expiration of cached records. The availability risk can be mitigated by limiting such TTLs to a brief time period after a change to the DS configuration, during which rollbacks are most likely to occur.</t>
          <t indent="0" pn="section-4.2.2-3">Registries therefore should significantly lower the DS RRset's TTL for some time following bootstrapping or an update. Pragmatic values for the reduced TTL value range between 5-15 minutes.
Using values below 5 minutes risks excessive queries, and using values greater than 15 minutes may impact recovery from operational mistakes.</t>
          <t indent="0" pn="section-4.2.2-4">Note that recent measurements have demonstrated low TTLs like the above to have negligible impact on the overall load of a registry's authoritative nameserver infrastructure <xref target="LowTTL" format="default" sectionFormat="of" derivedContent="LowTTL"/>.</t>
          <t indent="0" pn="section-4.2.2-5">The reduction should be in effect at least for a couple of days and until the previous DS record set has expired from caches, i.e., the period during which the low-TTL is applied typically will significantly exceed the normal TTL value. When using the Extensible Provisioning Protocol (EPP) <xref target="RFC5730" format="default" sectionFormat="of" derivedContent="RFC5730"/>, the domain <tt>&lt;info&gt;</tt> command described in <xref section="2.1.1.2" sectionFormat="of" target="RFC9803" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9803#section-2.1.1.2" derivedContent="RFC9803"/> can be used by the registrar to obtain the registry's TTL policy.</t>
          <t indent="0" pn="section-4.2.2-6">While this approach enables quick rollbacks, timing of the desired DS update process itself is largely governed by the previous DS RRset's TTL and therefore does not generally benefit from an overall speed-up. Note also that nothing is gained from first lowering the TTL of the old DS RRset: Such an additional step would, in fact, require another wait period while resolver caches adjust. For the sake of completeness, there likewise is no point to increasing any DS TTL values beyond their normal value.</t>
        </section>
        <section anchor="cds-vs-cdnskey" numbered="true" removeInRFC="false" toc="include" pn="section-4.2.3">
          <name slugifiedName="name-cds-vs-cdnskey">CDS vs. CDNSKEY</name>
          <t indent="0" pn="section-4.2.3-1">DS records can be generated from information provided either in DS format (CDS) or in DNSKEY format (CDNSKEY). While the format of CDS records is identical to that of DS records (so the record data can be taken verbatim), generation of a DS record from CDNSKEY information involves computing a hash.</t>
          <t indent="0" pn="section-4.2.3-2">Whether a Parent processes CDS or CDNSKEY records depends on their preference:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2.3-3">
            <li pn="section-4.2.3-3.1">
              <t indent="0" pn="section-4.2.3-3.1.1">Processing (and storing) CDNSKEY information allows the Parent to control the choice of hash algorithms. The Parent may then unilaterally regenerate DS records with a different choice of hash algorithm(s) whenever deemed appropriate.</t>
            </li>
            <li pn="section-4.2.3-3.2">
              <t indent="0" pn="section-4.2.3-3.2.1">Processing CDS information allows the Child DNS operator to control the hash digest type used in DS records, enabling the Child DNS operator to deploy (for example) experimental hash digests and removing the need for registry-side changes when additional digest types become available.</t>
            </li>
          </ul>
          <t indent="0" pn="section-4.2.3-4">The need to make a choice in the face of this dichotomy is not specific to DS automation: Even when DNSSEC parameters are relayed to the Parent through conventional channels, the Parent has to make some choice about which format(s) to accept.</t>
          <t indent="0" pn="section-4.2.3-5">As there exists no protocol for Child DNS operators to discover a Parent's input format preference, interoperability requires publication of both CDNSKEY as well as CDS records, in line with <xref section="5" sectionFormat="of" target="RFC7344" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-5" derivedContent="RFC7344"/>. The choice of hash digest type should follow current best practice <xref target="DS-IANA" format="default" sectionFormat="of" derivedContent="DS-IANA"/>.</t>
          <t indent="0" pn="section-4.2.3-6">Publishing the same information in two different formats is not ideal. Still, it is much less complex and costly than burdening the Child DNS operator with discovering each Parent's current policy. Also, it is very easily automated. Operators should ensure that published RRsets are consistent with each other.</t>
          <t indent="0" pn="section-4.2.3-7">If both RRsets are published, Parents are expected to verify consistency between them by verifying that they refer to the same set of keys <xref target="RFC9975" format="default" sectionFormat="of" derivedContent="RFC9975"/>. By not second-guessing inconsistencies (such as by RRset recency) and instead rejecting them, responsibility to clearly express each update request is placed on the Child DNS operator.</t>
          <t indent="0" pn="section-4.2.3-8">CDS records need only be considered for CDNSKEY consistency when their digest type field is designated as "<bcp14>MUST</bcp14>" 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.
Note that this does not imply a restriction on the DS hash digest types: If no inconsistencies are found, the parent can publish DS records with whatever digest type(s) it prefers.</t>
        </section>
      </section>
    </section>
    <section anchor="reporting" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-reporting-and-transparency">Reporting and Transparency</name>
      <t indent="0" pn="section-5-1">This section provides recommendations to address the following operational question:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5-2">
        <li pn="section-5-2.1">
          <t indent="0" pn="section-5-2.1.1">Should a failed (or even successful) DS update trigger a notification to anyone?</t>
        </li>
      </ul>
      <section anchor="recommendations-1" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-recommendations-2">Recommendations</name>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-5.1-1">
	  <li pn="section-5.1-1.1" derivedCounter="1.">
            <t indent="0" pn="section-5.1-1.1.1">For certain DS updates (see <xref target="analysis_reporting" format="default" sectionFormat="of" derivedContent="Section 5.2">analysis</xref>) and for DS deactivation, relevant points of contact known to the parent-side entity (registry or registrar) <bcp14>SHOULD</bcp14> be notified.</t>
          </li>
          <li pn="section-5.1-1.2" derivedCounter="2.">
            <t indent="0" pn="section-5.1-1.2.1">For error conditions, the child DNS operator and the domain's technical contact (if applicable) <bcp14>SHOULD</bcp14> be notified first. The registrant <bcp14>SHOULD NOT</bcp14> be notified unless the problem persists for a prolonged amount of time (e.g., three days).</t>
          </li>
          <li pn="section-5.1-1.3" derivedCounter="3.">
            <t indent="0" pn="section-5.1-1.3.1">Child DNS operators <bcp14>SHOULD</bcp14> be notified of errors using a report query <xref target="RFC9567" format="default" sectionFormat="of" derivedContent="RFC9567"/> to the agent domain as described in <xref section="4" sectionFormat="of" target="RFC9859" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-4" derivedContent="RFC9859"/>. Note that this requires listening to notifications and that appropriate notification targets are in place (<xref target="RFC9859" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-3" derivedContent="RFC9859"/>).</t>
            <t indent="0" pn="section-5.1-1.3.2">Notifications to humans (domain holder) will be performed in accordance with the communication preferences established with the parent-side entity. The same condition <bcp14>SHOULD NOT</bcp14> be reported unnecessarily frequently to the same recipient.</t>
          </li>
          <li pn="section-5.1-1.4" derivedCounter="4.">
            <t indent="0" pn="section-5.1-1.4.1">In the RRR model, registries performing DS automation <bcp14>SHOULD</bcp14> inform the registrar of any DS record changes via the EPP Change Poll Extension <xref target="RFC8590" format="default" sectionFormat="of" derivedContent="RFC8590"/> or a similar channel.</t>
          </li>
          <li pn="section-5.1-1.5" derivedCounter="5.">
            <t indent="0" pn="section-5.1-1.5.1">The currently active DS configuration <bcp14>SHOULD</bcp14> be made accessible to the registrant (or their designated party) through the customer portal available for domain management. The DS update history <bcp14>MAY</bcp14> be made available in the same way.</t>
          </li>
        </ol>
      </section>
      <section anchor="analysis_reporting" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-analysis-2">Analysis</name>
        <t indent="0" pn="section-5.2-1">When accepting or rejecting a DS update, it cannot be assumed that relevant parties are aware of what's happening. For example, a registrar may not know when an automatic DS update is performed by the registry. Similarly, a Child DNS operator may not be aware when their CDS/CDNSKEY RRsets are out of sync across nameservers, causing them to be ignored.</t>
        <t indent="0" pn="section-5.2-2">To help involved parties act appropriately and in a timely manner, entities performing automated DS maintenance should report on conditions they encounter. The following success situations may be of particular interest:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-5.2-3">
	  <li anchor="reporting-1" pn="section-5.2-3.1" derivedCounter="1.">
            <t indent="0" pn="section-5.2-3.1.1">A DS RRset has been provisioned:</t>
            <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section-5.2-3.1.2">
	      <li anchor="reporting-1a" pn="section-5.2-3.1.2.1" derivedCounter="a.">
                <t indent="0" pn="section-5.2-3.1.2.1.1">manually;</t>
              </li>
              <li anchor="reporting-1b" pn="section-5.2-3.1.2.2" derivedCounter="b.">
                <t indent="0" pn="section-5.2-3.1.2.2.1">due to commencing DS automation (either via DNSSEC bootstrapping or for the first time after a manual change; see <xref target="multiple" format="default" sectionFormat="of" derivedContent="Section 7"/>);</t>
              </li>
              <li anchor="reporting-1c" pn="section-5.2-3.1.2.3" derivedCounter="c.">
                <t indent="0" pn="section-5.2-3.1.2.3.1">automatically, as an update to an existing DS RRset that had itself been automatically provisioned.</t>
              </li>
            </ol>
          </li>
          <li anchor="reporting-2" pn="section-5.2-3.2" derivedCounter="2.">
            <t indent="0" pn="section-5.2-3.2.1">The DS RRset has been removed:</t>
            <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section-5.2-3.2.2">
	      <li pn="section-5.2-3.2.2.1" derivedCounter="a.">
                <t indent="0" pn="section-5.2-3.2.2.1.1">manually;</t>
              </li>
              <li pn="section-5.2-3.2.2.2" derivedCounter="b.">
                <t indent="0" pn="section-5.2-3.2.2.2.1">automatically, using a delete signal (<xref section="4" sectionFormat="comma" target="RFC8078" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-4" derivedContent="RFC8078"/>).</t>
              </li>
            </ol>
          </li>
        </ol>
        <t indent="0" pn="section-5.2-4">In addition, there are error conditions worthy of being reported:</t>
        <ol spacing="normal" type="1" start="3" indent="adaptive" pn="section-5.2-5">
	  <li anchor="reporting-3" pn="section-5.2-5.1" derivedCounter="3.">
            <t indent="0" pn="section-5.2-5.1.1">A pending DS update cannot be applied due to an error condition. There are various scenarios where an automated DS update might have been requested but can't be fulfilled. These include:</t>
            <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section-5.2-5.1.2">
	      <li pn="section-5.2-5.1.2.1" derivedCounter="a.">
                <t indent="0" pn="section-5.2-5.1.2.1.1">The new DS record set would break validation/resolution or is not acceptable to the Parent for some other reason (see <xref target="acceptance" format="default" sectionFormat="of" derivedContent="Section 4"/>).</t>
              </li>
              <li pn="section-5.2-5.1.2.2" derivedCounter="b.">
                <t indent="0" pn="section-5.2-5.1.2.2.1">A lock prevents DS automation (see <xref target="locks" format="default" sectionFormat="of" derivedContent="Section 6"/>).</t>
              </li>
            </ol>
          </li>
          <li anchor="reporting-4" pn="section-5.2-5.2" derivedCounter="4.">
            <t indent="0" pn="section-5.2-5.2.1">No DS update is due, but it was determined that the Child zone is no longer compatible with the existing DS record set (e.g., DS RRset only references non-existing keys).</t>
          </li>
        </ol>
        <t indent="0" pn="section-5.2-6">In these latter two cases, the entity performing DS automation would be justified to attempt communicating the situation. Potential recipients are:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.2-7">
          <li pn="section-5.2-7.1">
            <t indent="0" pn="section-5.2-7.1.1">Child DNS operator, preferably by making a report query <xref target="RFC9567" format="default" sectionFormat="of" derivedContent="RFC9567"/> to the agent domain listed in the EDNS0 Report-Channel option of the DS update notification that triggered the DS update (<xref section="4" sectionFormat="comma" target="RFC9859" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-4" derivedContent="RFC9859"/>) or else via email to the address contained in the Child zone's SOA RNAME field (see Sections <xref target="RFC1035" section="3.3.13" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc1035#section-3.3.13" derivedContent="RFC1035"/> and <xref target="RFC1035" section="8" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc1035#section-8" derivedContent="RFC1035"/> of <xref target="RFC1035" format="default" sectionFormat="of" derivedContent="RFC1035"/>);</t>
          </li>
          <li pn="section-5.2-7.2">
            <t indent="0" pn="section-5.2-7.2.1">Registrar (if DS automation is performed by the registry);</t>
          </li>
          <li pn="section-5.2-7.3">
            <t indent="0" pn="section-5.2-7.3.1">Registrant (domain holder; in non-technical language, such as "DNSSEC security for your domain has been enabled and will be maintained automatically"), or technical contact, in accordance with the communication preferences established with the parent-side entity.</t>
          </li>
        </ul>
        <t indent="0" pn="section-5.2-8">For manual updates (<xref target="reporting-1a" format="none" sectionFormat="of" derivedContent="">case 1a</xref>), commencing DS automation (<xref target="reporting-1b" format="none" sectionFormat="of" derivedContent="">case 1b</xref>), and deactivating DNSSEC (<xref target="reporting-2" format="none" sectionFormat="of" derivedContent="">case 2</xref>), it seems worthwhile to notify both the domain's technical contact (if applicable) and the registrant. This will typically lead to one notification during normal operation of a domain. (<xref target="reporting-1c" format="none" sectionFormat="of" derivedContent="">Case 1c</xref>, the regular operation of automation, is not an interesting condition to report to a human.)</t>
        <t indent="0" pn="section-5.2-9">For error conditions (cases <xref target="reporting-3" format="none" sectionFormat="of" derivedContent="">3</xref> and <xref target="reporting-4" format="none" sectionFormat="of" derivedContent="">4</xref>), the registrant need not always be involved. It seems advisable to first notify the domain's technical contact and the DNS operator serving the affected Child zone, and only if the problem persists for a prolonged amount of time (e.g., three days), notify the registrant.</t>
        <t indent="0" pn="section-5.2-10">When the RRR model is used and the registry performs DS automation, the registrar should always stay informed of any DS record changes, e.g., via the EPP Change Poll Extension <xref target="RFC8590" format="default" sectionFormat="of" derivedContent="RFC8590"/>.</t>
        <t indent="0" pn="section-5.2-11">Overly frequent reporting of the same condition to the same recipient is discouraged (e.g., no more than twice in a row). For example, when CDS and CDNSKEY records are inconsistent and prevent DS initialization, the registrant may be notified twice. Additional notifications may be sent with some back-off mechanism (in increasing intervals).</t>
        <t indent="0" pn="section-5.2-12">The registrant (or their designated party) should be able to retrieve the current DS configuration through the customer portal available for domain management.
Failure to provide the registrant a means to inspect the current configuration after it has been changed may hinder recovery from operational incidents because the registrant may have out-of-date information.</t>
        <t indent="0" pn="section-5.2-13">Ideally, the history of DS updates would also be available. However, due to the associated state requirements and the lack of direct operational impact, implementation of this is optional.
If supported by the registry, the DS TTL currently in effect can be obtained using the RDAP TTL extension <xref target="I-D.ietf-regext-rdap-ttl-extension" format="default" sectionFormat="of" derivedContent="RDAP-TTL"/>.</t>
        <t indent="0" pn="section-5.2-14">For troubleshooting, dispute resolution, and post-incident analysis, it is instrumental for the Parental Agent to retain structured records of each DS automation decision, including timestamp, triggering CDS/CDNSKEY RRsets, notification channel, authoritative nameservers consulted, verification results, decision outcome, and the applied DS RRset or cancellation reason.</t>
      </section>
    </section>
    <section anchor="locks" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-registration-locks">Registration Locks</name>
      <t indent="0" pn="section-6-1">This section provides recommendations to address the following operational question:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-2">
        <li pn="section-6-2.1">
          <t indent="0" pn="section-6-2.1.1">How does DS automation interact with other registration state parameters, such as registration locks?</t>
        </li>
      </ul>
      <section anchor="recommendations-2" numbered="true" removeInRFC="false" toc="include" pn="section-6.1">
        <name slugifiedName="name-recommendations-3">Recommendations</name>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-6.1-1">
	  <li pn="section-6.1-1.1" derivedCounter="1.">
            <t indent="0" pn="section-6.1-1.1.1">To secure ongoing operations, automated DS maintenance <bcp14>MUST NOT</bcp14> be suspended based on a registrar update lock alone (such as EPP status clientUpdateProhibited <xref target="RFC5731" format="default" sectionFormat="of" derivedContent="RFC5731"/>).</t>
          </li>
          <li pn="section-6.1-1.2" derivedCounter="2.">
            <t indent="0" pn="section-6.1-1.2.1">When performed by the registry, automated DS maintenance <bcp14>MUST NOT</bcp14> be suspended based on a registry update lock alone (such as EPP status serverUpdateProhibited <xref target="RFC5731" format="default" sectionFormat="of" derivedContent="RFC5731"/>).</t>
          </li>
        </ol>
      </section>
      <section anchor="analysis_locks" numbered="true" removeInRFC="false" toc="include" pn="section-6.2">
        <name slugifiedName="name-analysis-3">Analysis</name>
        <t indent="0" pn="section-6.2-1">Registries and registrars can set various types of locks for domain registrations, usually upon the registrant's request. An overview of standardized locks using EPP, for example, is given in <xref section="2.3" sectionFormat="of" target="RFC5731" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5731#section-2.3" derivedContent="RFC5731"/>. Some registries may offer additional (or other) types of locks whose meaning and set/unset mechanisms are defined according to a proprietary policy.</t>
        <t indent="0" pn="section-6.2-2">While some locks clearly should have no impact on DS automation (such as transfer or deletion locks), other types of locks, in particular "update locks", deserve a closer analysis.</t>
        <section anchor="registrar-vs-registry-lock" numbered="true" removeInRFC="false" toc="include" pn="section-6.2.1">
          <name slugifiedName="name-registrar-vs-registry-lock">Registrar vs. Registry Lock</name>
          <t indent="0" pn="section-6.2.1-1">A registrar-side update lock (such as clientUpdateProhibited in EPP) protects against various types of accidental or malicious change (like unintended changes through the registrar's customer portal). Its security model does not prevent the registrar's (nor the registry's) actions. This is because a registrar-side lock can be removed by the registrar without an out-of-band interaction.</t>
          <t indent="0" pn="section-6.2.1-2">Under such a security model, no tangible security benefit is gained by preventing automated DS maintenance based on a registrar lock alone, while preventing it would make maintenance needlessly difficult. It is therefore not justified to suspend automation when such a lock is present.</t>
          <t indent="0" pn="section-6.2.1-3">When a registry-side update lock is in place, the registrar cannot apply any changes (for security or delinquency or other reasons). However, it does not protect against changes made by the registry itself. This is exemplified by the serverUpdateProhibited EPP status, which demands only that the registrar's "[r]equests to update the object [...] <bcp14>MUST</bcp14> be rejected" (<xref section="2.3" sectionFormat="of" target="RFC5731" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5731#section-2.3" derivedContent="RFC5731"/>). This type of lock therefore precludes DS automation by the registrar, while registry-side automation remains unaffected.</t>
          <t indent="0" pn="section-6.2.1-4">DS automation by the registry is consistent with <xref section="2.3" sectionFormat="of" target="RFC5731" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5731#section-2.3" derivedContent="RFC5731"/>, which explicitly notes that an EPP server (registry) may override status values set by an EPP client (registrar), subject to local server policies. The risk that DS changes from registry-side DS automation might go unnoticed by the registrar is mitigated by sending change notifications to the registrar; see Recommendation 4 of <xref target="reporting" format="default" sectionFormat="of" derivedContent="Section 5"/>.</t>
        </section>
        <section anchor="detailed-rationale" numbered="true" removeInRFC="false" toc="include" pn="section-6.2.2">
          <name slugifiedName="name-detailed-rationale">Detailed Rationale</name>
          <t indent="0" pn="section-6.2.2-1">Pre-DNSSEC, it was possible for a registration to be set up once, then locked and left alone (no maintenance required). With DNSSEC comes a change to this operational model: The configuration may have to be maintained in order to remain secure and operational. For example, the Child DNS operator may switch to another signing algorithm if the previous one is no longer deemed appropriate or roll its Secure Entry Point (SEP) key for other reasons. Such changes entail updating the delegation's DS records.</t>
          <t indent="0" pn="section-6.2.2-2">If authenticated, these operations do not qualify as accidental or malicious changes but as legitimate and normal activity for securing ongoing operation. The CDS/CDNSKEY method provides an automatic, authenticated means to convey DS bootstrapping and update requests <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/> <xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/>. The resulting operation is subject to the parent's acceptance checks; in particular, it is not applied when it would break the delegation (see <xref target="acceptance" format="default" sectionFormat="of" derivedContent="Section 4"/>).</t>
          <t indent="0" pn="section-6.2.2-3">Given that registrar locks protect against unintended changes (such as through the customer portal) while not preventing actions done by the registrar (or the registry) itself, such a lock is not suitable for defending against actions performed illegitimately by the registrar or registry (e.g., due to compromise). Any attack on the registration data that is feasible in the presence of a registrar lock is also feasible regardless of whether DS maintenance is done automatically; in other words, DS automation is orthogonal to the attack vector that a registrar lock protects against.</t>
          <t indent="0" pn="section-6.2.2-4">Considering that automated DS bootstrapping and update requests are required to be authenticated and validated for correctness, honoring such requests -- while in the registrant's interest -- comes with no additional associated risk when compared to other authenticated update methods. Suspending automated DS maintenance therefore is not justified.</t>
          <t indent="0" pn="section-6.2.2-5">Following this line of thought, at the time of document writing, some registries (e.g., .ch/.cz/.li) perform automated DS maintenance even when an "update lock" is in place. Registries offering proprietary locks should carefully consider for each lock whether its scope warrants suspension.</t>
          <t indent="0" pn="section-6.2.2-6">In case of a domain not yet secured with DNSSEC, automatic DS initialization is not required to maintain ongoing operation; however, authenticated DNSSEC bootstrapping <xref target="RFC9615" format="default" sectionFormat="of" derivedContent="RFC9615"/> might be requested. Besides being in the interest of security, the fact that a Child is requesting DS initialization through an authenticated method expresses the registrant's intent to have the delegation secured.</t>
          <t indent="0" pn="section-6.2.2-7">Further, some domains are equipped with an update lock by default. Not honoring DNSSEC bootstrapping requests then imposes an additional burden on the registrant, who has to unlock and relock the domain in order to facilitate DS provisioning after registration. This is a needless cost especially for large domain portfolios. It is also unexpected, as the registrant already has arranged for the necessary CDS/CDNSKEY records to be published. DS initialization and rollovers therefore should be treated the same way with respect to locks.</t>
        </section>
      </section>
    </section>
    <section anchor="multiple" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-multiple-submitting-parties">Multiple Submitting Parties and Suspension of Automation</name>
      <t indent="0" pn="section-7-1">This section provides recommendations to address the following operational questions:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7-2">
        <li pn="section-7-2.1">
          <t indent="0" pn="section-7-2.1.1">How are conflicts resolved when DS parameters are accepted through multiple channels (e.g., via a conventional channel and via automation)?</t>
        </li>
        <li pn="section-7-2.2">
          <t indent="0" pn="section-7-2.2.1">In case both the registry and the registrar are automating DS provisioning, how are potential collisions resolved?</t>
        </li>
      </ul>
      <section anchor="recommendations-3" numbered="true" removeInRFC="false" toc="include" pn="section-7.1">
        <name slugifiedName="name-recommendations-4">Recommendations</name>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-7.1-1">
	  <li pn="section-7.1-1.1" derivedCounter="1.">
            <t indent="0" pn="section-7.1-1.1.1">Registries and registrars <bcp14>MUST</bcp14> provide another (e.g., manual) channel for DS maintenance in order to enable recovery when the Child has lost access to its signing key(s). This out-of-band channel is also needed when a DNS operator does not support DS automation or refuses to cooperate.</t>
          </li>
          <li pn="section-7.1-1.2" derivedCounter="2.">
            <t indent="0" pn="section-7.1-1.2.1">DS bootstrapping and update requests <bcp14>MUST</bcp14> be executed at the next publication opportunity after verification of their authenticity, regardless of whether they are received in-band or via an out-of-band channel.</t>
          </li>
          <li anchor="multiple-rec3" pn="section-7.1-1.3" derivedCounter="3.">
            <t indent="0" pn="section-7.1-1.3.1">When processing a CDS/CDNSKEY "delete" signal to remove the entire DS record set (<xref section="4" sectionFormat="comma" target="RFC8078" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-4" derivedContent="RFC8078"/>), DS automation <bcp14>MUST NOT</bcp14> be suspended. For all other removal requests (such as when received via EPP or a web form), DS automation <bcp14>SHOULD</bcp14> be suspended until a new DS record set has been provisioned, in order to prevent accidental re-initialization when the registrant intended to disable DNSSEC.</t>
          </li>
          <li pn="section-7.1-1.4" derivedCounter="4.">
            <t indent="0" pn="section-7.1-1.4.1">Whenever a non-empty DS record set is provisioned, through whichever channel, DS automation <bcp14>SHOULD NOT</bcp14> (or no longer) be suspended (including after an earlier removal).</t>
          </li>
          <li pn="section-7.1-1.5" derivedCounter="5.">
            <t indent="0" pn="section-7.1-1.5.1">In the RRR model, a registry <bcp14>MUST NOT</bcp14> automatically initialize DS records when it is known that the registrar does not provide a way for the domain holder to later disable DNSSEC. If the registrar has declared that it performs automated DS maintenance, the registry <bcp14>SHOULD</bcp14> publish the registrar's notification endpoint <xref target="RFC9859" format="default" sectionFormat="of" derivedContent="RFC9859"/> (if applicable) instead of their own and refrain from registry-side DS automation.</t>
          </li>
        </ol>
      </section>
      <section anchor="analysis_multiple" numbered="true" removeInRFC="false" toc="include" pn="section-7.2">
        <name slugifiedName="name-analysis-4">Analysis</name>
        <t indent="0" pn="section-7.2-1">In the RRR model, there are multiple channels through which DS parameters can be accepted:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7.2-2">
          <li pn="section-7.2-2.1">
            <t indent="0" pn="section-7.2-2.1.1">The registry can retrieve information about an intended DS provisioning request automatically from the Child DNS operator and apply the it directly;</t>
          </li>
          <li pn="section-7.2-2.2">
            <t indent="0" pn="section-7.2-2.2.1">The registrar can retrieve the same and relay it to the registry;</t>
          </li>
          <li pn="section-7.2-2.3">
            <t indent="0" pn="section-7.2-2.3.1">The registrar can obtain the information from the registrant through another channel (such as a non-automated "manual update" via web form submission) and relay it to the registry.</t>
          </li>
        </ul>
        <t indent="0" pn="section-7.2-3">There are several considerations in this context, as discussed in the following subsections.</t>
        <section anchor="necessity-of-non-automatic-updates" numbered="true" removeInRFC="false" toc="include" pn="section-7.2.1">
          <name slugifiedName="name-necessity-of-non-automatic-">Necessity of Non-Automatic Updates</name>
          <t indent="0" pn="section-7.2.1-1">Under special circumstances, it may be necessary to perform a non-automatic DS update. One important example is when the key used for authentication of DS updates is destroyed: In this case, an automatic key rollover is impossible as the Child DNS operator can no longer authenticate the associated information. Another example is when several providers are involved, but one no longer cooperates (e.g., when removing a provider from a multi-provider setup). Disabling all other DS management interfaces therefore poses significant operational risk.</t>
          <t indent="0" pn="section-7.2.1-2">Similarly, when the registrar is known to not support DNSSEC (especially to not provide a means to remove a DS RRset), registries are cautioned against automatically initializing DS records, in order to prevent situations in which a misconfigured or undesired DS RRset cannot be repaired by the registrant.</t>
        </section>
        <section anchor="impact-of-non-automatic-updates-when-to-suspend-automation" numbered="true" removeInRFC="false" toc="include" pn="section-7.2.2">
          <name slugifiedName="name-impact-of-non-automatic-upd">Impact of Non-Automatic Updates: When to Suspend Automation</name>
          <t indent="0" pn="section-7.2.2-1">When an out-of-band (e.g., manual) DS update is performed while CDS/CDNSKEY records referencing the previous DS RRset's keys are present, the delegation's DS records may be reset to their previous state at the next run of the automation process. This section discusses in which situations it is appropriate to suspend DS automation after such a non-automatic update.</t>
          <t indent="0" pn="section-7.2.2-2">One option is to suspend DS automation after a manual DS update but only until a resumption signal is observed. In the past, it was proposed that seeing an updated SOA serial in the Child zone may serve as a resumption signal. However, as any arbitrary modification of zone contents -- including the regular updating of DNSSEC signature validity timestamps -- typically causes an SOA serial change, resumption of DS automation after a serial change comes with a high risk of surprise. Additional issues arise if nameservers have different serial offsets (e.g., in a multi-provider setup). This practice therefore is <bcp14>NOT RECOMMENDED</bcp14>.</t>
          <t indent="0" pn="section-7.2.2-3">Note also that "automatic rollback" due to old CDS/CDNSKEY RRsets can only occur if they are signed with a key authorized by one of the new DS records. Acceptance checks described in <xref target="acceptance" format="default" sectionFormat="of" derivedContent="Section 4"/> further ensure that updates do not break validation.</t>
          <t indent="0" pn="section-7.2.2-4">Removal of a DS record set is triggered either through a CDS/CDNSKEY "delete" signal observed by the party performing the automation (<xref section="4" sectionFormat="comma" target="RFC8078" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-4" derivedContent="RFC8078"/>) or by receiving a removal request out-of-band (e.g., via EPP or a web form). In the first case, the registrant can expect automation to be kept active for the delegation to facilitate later DS bootstrapping. In the second case, it is likely that the registrant intends to disable DNSSEC for the domain, and DS automation is best suspended (until a new DS record is provisioned somehow).</t>
          <t indent="0" pn="section-7.2.2-5">One may ask how a registry can know whether a removal request received via EPP was the result of the registrar observing a CDS/CDNSKEY "delete" signal. It turns out that the registry does not need to know that; in fact, the advice works out nicely regardless of who does the automation:</t>
          <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section-7.2.2-6">
	    <li pn="section-7.2.2-6.1" derivedCounter="a.">
              <t indent="0" pn="section-7.2.2-6.1.1">Only registry: If the registry performs automation, then the registry will consider any request received from the registrar as out-of-band (in the context of this automation). When such requests demand removal of the entire DS record set, the registry therefore should suspend automation.</t>
            </li>
            <li pn="section-7.2.2-6.2" derivedCounter="b.">
              <t indent="0" pn="section-7.2.2-6.2.1">Only registrar: The registrar can always distinguish between removal requests obtained from a CDS/CDNSKEY "delete" signal and other registrant requests and suspend automation as appropriate.</t>
            </li>
            <li pn="section-7.2.2-6.3" derivedCounter="c.">
              <t indent="0" pn="section-7.2.2-6.3.1">In the (undesirable) case that both parties automate, there are two cases:  </t>
              <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7.2.2-6.3.2">
                <li pn="section-7.2.2-6.3.2.1">
                  <t indent="0" pn="section-7.2.2-6.3.2.1.1">If the registrant submits a manual removal request to the registrar, it is out-of-band from the registrar perspective (e.g., web form) and also for the registry (e.g., EPP). As a consequence, both will suspend automation (which is the correct result).</t>
                </li>
                <li pn="section-7.2.2-6.3.2.2">
                  <t indent="0" pn="section-7.2.2-6.3.2.2.1">If a CDS/CDNSKEY "delete" signal causes the registrar to request DS removal from the registry, then the registry will suspend automation (because the removal request is received out-of-band, such as via EPP). This is independent of whether the registry's automation has already seen the signal. The registrar, however, will be aware of the in-band nature of the request and not suspend automation (which is also the correct result).</t>
                </li>
              </ul>
              <t indent="0" pn="section-7.2.2-6.3.3">
As a side effect, this works towards avoiding redundant automation at the registry.</t>
            </li>
          </ol>
          <t indent="0" pn="section-7.2.2-7">All in all:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7.2.2-8">
            <li pn="section-7.2.2-8.1">
              <t indent="0" pn="section-7.2.2-8.1.1">It is advisable to generally not suspend in-band DS automation when an out-of-band DS update has occurred.</t>
            </li>
            <li pn="section-7.2.2-8.2">
              <t indent="0" pn="section-7.2.2-8.2.1">An exception to this rule is when the entire DS record set was removed through an out-of-band request, in which case the registrant likely wants to disable DNSSEC for the domain. DS automation should then be suspended so that automatic re-initialization (bootstrapping) does not occur.</t>
            </li>
            <li pn="section-7.2.2-8.3">
              <t indent="0" pn="section-7.2.2-8.3.1">In all other cases, any properly authenticated DS updates received, including through an automated method, are to be considered as the current intent of the domain holder.</t>
            </li>
          </ul>
        </section>
        <section anchor="concurrent-automatic-updates" numbered="true" removeInRFC="false" toc="include" pn="section-7.2.3">
          <name slugifiedName="name-concurrent-automatic-update">Concurrent Automatic Updates</name>
          <t indent="0" pn="section-7.2.3-1">When the RRR model is used, there is a potential for collision if both the registry and the registrar are automating DS provisioning by scanning the child for CDS/CDNSKEY records. No disruptive consequences are expected if both parties perform DS automation. An exception is when, during a key rollover, the registry and registrar see different versions of the Child's DS update requests, such as when CDS/CDNSKEY records are retrieved from different vantage points. Although unlikely due to Recommendation 1a of <xref target="acceptance" format="default" sectionFormat="of" derivedContent="Section 4"/>, this may lead to flapping of DS updates. However, it is not expected to be harmful as either DS RRset will allow for the validation function to continue to work, as ensured by Recommendation 1b of <xref target="acceptance" format="default" sectionFormat="of" derivedContent="Section 4"/>. The effect subsides as the Child's state eventually becomes consistent (roughly within the child's replication delay); any flapping until then will be a minor nuisance only.</t>
          <t indent="0" pn="section-7.2.3-2">The issue disappears entirely when scanning is replaced by notifications that trigger DS maintenance through one party's designated endpoint <xref target="RFC9859" format="default" sectionFormat="of" derivedContent="RFC9859"/> and can otherwise be mitigated if the registry and registrar agree that only one of them will perform scanning.</t>
          <t indent="0" pn="section-7.2.3-3">As a standard aspect of key rollovers <xref target="RFC6781" format="default" sectionFormat="of" derivedContent="RFC6781"/>, the Child DNS operator is expected to monitor propagation of Child zone updates to all authoritative nameserver instances and only proceed to the next step once replication has succeeded everywhere and the DS record set was subsequently updated (and in no case before the DS RRset's TTL has passed). Any breakage resulting from improper timing on the Child side is outside of the Parent's sphere of influence and thus cannot be handled with only parent-side changes.</t>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1">This document has no IANA actions.</t>
    </section>
    <section anchor="operational-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <t indent="0" pn="section-9-1">The document provides operational recommendations for DNSSEC DS automation. There are no additional operational considerations beyond those listed in <xref target="recommendations_overview" format="default" sectionFormat="of" derivedContent="Appendix A"/>.</t>
    </section>
    <section anchor="security-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-10">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-10-1">The recommendations in this document are designed to improve the safety and interoperability of DNSSEC delegation maintenance. Relevant security implications and various trade-offs are explained in the analysis subsections above. This section notes additional aspects worth considering.</t>
      <t indent="0" pn="section-10-2">When inconsistencies between CDS/CDNSKEY RRsets are ignored (contrary to <xref target="acceptance-rec1a" format="none" sectionFormat="of" derivedContent="">Recommendation 4.1.1.a</xref>), a number of security risks result. For example, when a nameserver domain expires and is re-registered maliciously, the adversary may be able to initialize a DS RRset and subsequently redelegate the domain using CSYNC synchronization <xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/>, resulting in a full hijack of the domain. For details, refer to <xref section="A" sectionFormat="of" target="RFC9975" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9975#appendix-A" derivedContent="RFC9975"/>.</t>
      <t indent="0" pn="section-10-3">Similar risks of total adversarial control exist when the child's SEP key is compromised, as this key can authorize DS update or removal requests if consistently published on all nameservers. This reinforces that loss of key control poses severe risks; utmost care must be taken when managing SEP keys.</t>
      <t indent="0" pn="section-10-4">When a domain is stripped of its DNSSEC protection by removing the DS RRset -- either manually or using an automatic delete signal (<xref target="multiple-rec3" format="none" sectionFormat="of" derivedContent="">Recommendation 7.1.3</xref>) -- DNSSEC security guarantees and associated benefits are no longer in effect. For example, an email operator may enforce DNS-Based Authentication of Named Entities (DANE) <xref target="RFC7672" format="default" sectionFormat="of" derivedContent="RFC7672"/> for domains previously observed to support it and, as a result, experience a service disruption in email delivery. Both child and parent DNS operators <bcp14>MUST</bcp14> take such service disruptions into account when considering removal of the DS RRset for their zone.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-regext-rdap-ttl-extension" to="RDAP-TTL"/>
    <references anchor="sec-combined-references" pn="section-11">
      <name slugifiedName="name-references">References</name>
      <references anchor="sec-normative-references" pn="section-11.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="DNSKEY-IANA" target="https://www.iana.org/assignments/dns-sec-alg-numbers" quoteTitle="true" derivedAnchor="DNSKEY-IANA">
          <front>
            <title>DNS Security Algorithm Numbers</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </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>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035" quoteTitle="true" derivedAnchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t indent="0">This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <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="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="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="RFC8590" target="https://www.rfc-editor.org/info/rfc8590" quoteTitle="true" derivedAnchor="RFC8590">
          <front>
            <title>Change Poll Extension for the Extensible Provisioning Protocol (EPP)</title>
            <author fullname="J. Gould" initials="J." surname="Gould"/>
            <author fullname="K. Feher" initials="K." surname="Feher"/>
            <date month="May" year="2019"/>
            <abstract>
              <t indent="0">This document describes an Extensible Provisioning Protocol (EPP) extension for notifying clients of operations on client-sponsored objects that were not initiated by the client through EPP. These operations may include contractual or policy requirements including, but not limited to, regular batch processes, customer support actions, Uniform Domain-Name Dispute-Resolution Policy (UDRP) or Uniform Rapid Suspension (URS) actions, court-directed actions, and bulk updates based on customer requests. Since the client is not directly involved or knowledgable of these operations, the extension is used along with an EPP object mapping to provide the resulting state of the postoperation object, and optionally a preoperation object, with the operation metadata of what, when, who, and why.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8590"/>
          <seriesInfo name="DOI" value="10.17487/RFC8590"/>
        </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="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>
        <reference anchor="RFC9567" target="https://www.rfc-editor.org/info/rfc9567" quoteTitle="true" derivedAnchor="RFC9567">
          <front>
            <title>DNS Error Reporting</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <date month="April" year="2024"/>
            <abstract>
              <t indent="0">DNS error reporting is a lightweight reporting mechanism that provides the operator of an authoritative server with reports on DNS resource records that fail to resolve or validate. A domain owner or DNS hosting organization can use these reports to improve domain hosting. The reports are based on extended DNS errors as described in RFC 8914.</t>
              <t indent="0">When a domain name fails to resolve or validate due to a misconfiguration or an attack, the operator of the authoritative server may be unaware of this. To mitigate this lack of feedback, this document describes a method for a validating resolver to automatically signal an error to a monitoring agent specified by the authoritative server. The error is encoded in the QNAME; thus, the very act of sending the query is to report the error.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9567"/>
          <seriesInfo name="DOI" value="10.17487/RFC9567"/>
        </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>
        <reference anchor="RFC9859" target="https://www.rfc-editor.org/info/rfc9859" quoteTitle="true" derivedAnchor="RFC9859">
          <front>
            <title>Generalized DNS Notifications</title>
            <author fullname="J. Stenstam" initials="J." surname="Stenstam"/>
            <author fullname="P. Thomassen" initials="P." surname="Thomassen"/>
            <author fullname="J. Levine" initials="J." surname="Levine"/>
            <date month="September" year="2025"/>
            <abstract>
              <t indent="0">This document generalizes and extends the use of DNS NOTIFY (RFC 1996) beyond conventional zone transfer hints to allow other types of actions that were previously lacking a trigger mechanism to be triggered via the DNS. Notifications merely nudge the receiver to initiate a predefined action promptly (instead of on a schedule); they do not alter the action itself (including any security checks it might employ).</t>
              <t indent="0">To enable this functionality, a method for discovering the receiver endpoint for such notification messages is introduced, via the new DSYNC record type. Notification types are recorded in a new registry, with initial support for parental NS and DS record updates including DNSSEC bootstrapping.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9859"/>
          <seriesInfo name="DOI" value="10.17487/RFC9859"/>
        </reference>
        <reference anchor="RFC9975" target="https://www.rfc-editor.org/info/rfc9975" quoteTitle="true" derivedAnchor="RFC9975">
          <front>
            <title>Clarifications on CDS/CDNSKEY and CSYNC Consistency</title>
            <author fullname="P. Thomassen" initials="P." surname="Thomassen"/>
            <date month="May" year="2026"/>
            <abstract>
              <t indent="0">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">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">This document updates RFCs 7344 and 7477.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9975"/>
          <seriesInfo name="DOI" value="10.17487/RFC9975"/>
        </reference>
      </references>
      <references anchor="sec-informative-references" pn="section-11.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="LowTTL" target="https://indico.dns-oarc.net/event/47/contributions/1010/attachments/958/1811/DS%20and%20DNSKEY%20TTL%20experiment.pdf" quoteTitle="true" derivedAnchor="LowTTL">
          <front>
            <title>DS and DNSKEY low TTL experiments</title>
            <author initials="P." surname="Špaček" fullname="Petr Špaček">
              <organization showOnFrontPage="true">ISC</organization>
            </author>
            <date year="2023" month="September" day="06"/>
          </front>
          <refcontent>DNS OARC 41</refcontent>
        </reference>
        <reference anchor="I-D.ietf-regext-rdap-ttl-extension" target="https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-ttl-extension-12" quoteTitle="true" derivedAnchor="RDAP-TTL">
          <front>
            <title>RDAP Extension for DNS Time-To-Live (TTL Values)</title>
            <author fullname="Gavin Brown" initials="G." surname="Brown">
              <organization showOnFrontPage="true">ICANN</organization>
            </author>
            <date day="27" month="May" year="2026"/>
            <abstract>
              <t indent="0">This document specifies an extension to the Registration Data Access Protocol which allows the Time-To-Live (TTL) values for relevant DNS record types to be included in RDAP responses. About this draft This note is to be removed before publishing as an RFC. The source for this draft, and an issue tracker, may can be found at https://github.com/gbxyz/rdap-ttl-extension.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-regext-rdap-ttl-extension-12"/>
          <refcontent>Work in Progress</refcontent>
        </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="RFC5731" target="https://www.rfc-editor.org/info/rfc5731" quoteTitle="true" derivedAnchor="RFC5731">
          <front>
            <title>Extensible Provisioning Protocol (EPP) Domain Name Mapping</title>
            <author fullname="S. Hollenbeck" initials="S." surname="Hollenbeck"/>
            <date month="August" year="2009"/>
            <abstract>
              <t indent="0">This document describes an Extensible Provisioning Protocol (EPP) mapping for the provisioning and management of Internet domain names stored in a shared central repository. Specified in XML, the mapping defines EPP command syntax and semantics as applied to domain names. This document obsoletes RFC 4931. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="69"/>
          <seriesInfo name="RFC" value="5731"/>
          <seriesInfo name="DOI" value="10.17487/RFC5731"/>
        </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="RFC6840" target="https://www.rfc-editor.org/info/rfc6840" quoteTitle="true" derivedAnchor="RFC6840">
          <front>
            <title>Clarifications and Implementation Notes for DNS Security (DNSSEC)</title>
            <author fullname="S. Weiler" initials="S." role="editor" surname="Weiler"/>
            <author fullname="D. Blacka" initials="D." role="editor" surname="Blacka"/>
            <date month="February" year="2013"/>
            <abstract>
              <t indent="0">This document is a collection of technical clarifications to the DNS Security (DNSSEC) document set. It is meant to serve as a resource to implementors as well as a collection of DNSSEC errata that existed at the time of writing.</t>
              <t indent="0">This document updates the core DNSSEC documents (RFC 4033, RFC 4034, and RFC 4035) as well as the NSEC3 specification (RFC 5155). It also defines NSEC3 and SHA-2 (RFC 4509 and RFC 5702) as core parts of the DNSSEC specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6840"/>
          <seriesInfo name="DOI" value="10.17487/RFC6840"/>
        </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="RFC7672" target="https://www.rfc-editor.org/info/rfc7672" quoteTitle="true" derivedAnchor="RFC7672">
          <front>
            <title>SMTP Security via Opportunistic DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS)</title>
            <author fullname="V. Dukhovni" initials="V." surname="Dukhovni"/>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <date month="October" year="2015"/>
            <abstract>
              <t indent="0">This memo describes a downgrade-resistant protocol for SMTP transport security between Message Transfer Agents (MTAs), based on the DNS-Based Authentication of Named Entities (DANE) TLSA DNS record. Adoption of this protocol enables an incremental transition of the Internet email backbone to one using encrypted and authenticated Transport Layer Security (TLS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7672"/>
          <seriesInfo name="DOI" value="10.17487/RFC7672"/>
        </reference>
        <reference anchor="RFC9803" target="https://www.rfc-editor.org/info/rfc9803" quoteTitle="true" derivedAnchor="RFC9803">
          <front>
            <title>Extensible Provisioning Protocol (EPP) Mapping for DNS Time-to-Live (TTL) Values</title>
            <author fullname="G. Brown" initials="G." surname="Brown"/>
            <date month="June" year="2025"/>
            <abstract>
              <t indent="0">This document describes an extension to the Extensible Provisioning
Protocol (EPP) that allows EPP clients to manage the Time-to-Live
(TTL) value for domain name delegation records.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9803"/>
          <seriesInfo name="DOI" value="10.17487/RFC9803"/>
        </reference>
        <reference anchor="SAC126" target="https://itp.cdn.icann.org/en/files/security-and-stability-advisory-committee-ssac-reports/sac-126-16-08-2024-en.pdf" quoteTitle="true" derivedAnchor="SAC126">
          <front>
            <title>SAC126: DNSSEC Delegation Signer (DS) Record Automation</title>
            <author>
              <organization showOnFrontPage="true">ICANN Security and Stability Advisory Committee (SSAC)</organization>
            </author>
            <date year="2024" month="August" day="12"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="recommendations_overview" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-recommendations-overview">Recommendations Overview</name>
      <t indent="0" pn="section-appendix.a-1">For ease of review and referencing, the recommendations from this document are reproduced here without further comment. For background and analysis, refer to Sections <xref format="counter" target="acceptance" sectionFormat="of" derivedContent="4"/>-<xref format="counter" target="multiple" sectionFormat="of" derivedContent="7"/>.</t>
      <section anchor="acceptance-checks-and-safety-measures" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.1">
        <name slugifiedName="name-acceptance-checks-and-safety">Acceptance Checks and Safety Measures</name>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-appendix.a.1-1">
	  <li pn="section-appendix.a.1-1.1" derivedCounter="1.">
            <t indent="0" pn="section-appendix.a.1-1.1.1">Entities performing automated DS maintenance <bcp14>MUST</bcp14> verify:  </t>
            <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section-appendix.a.1-1.1.2">
	      <li pn="section-appendix.a.1-1.1.2.1" derivedCounter="a.">
                <t indent="0" pn="section-appendix.a.1-1.1.2.1.1">the unambiguous intent of each DS bootstrapping or update request as per <xref target="RFC9975" format="default" sectionFormat="of" derivedContent="RFC9975"/>, by checking its consistency both      </t>
                <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-appendix.a.1-1.1.2.1.2">
                  <li pn="section-appendix.a.1-1.1.2.1.2.1">
                    <t indent="0" pn="section-appendix.a.1-1.1.2.1.2.1.1">between any published CDS and CDNSKEY records and</t>
                  </li>
                  <li pn="section-appendix.a.1-1.1.2.1.2.2">
                    <t indent="0" pn="section-appendix.a.1-1.1.2.1.2.2.1">across all authoritative nameservers in the delegation,</t>
                  </li>
                </ul>
                <t indent="0" pn="section-appendix.a.1-1.1.2.1.3">
and</t>
              </li>
              <li pn="section-appendix.a.1-1.1.2.2" derivedCounter="b.">
                <t indent="0" pn="section-appendix.a.1-1.1.2.2.1">that the resulting DS record set would allow continued DNSSEC validation if deployed</t>
              </li>
            </ol>
            <t indent="0" pn="section-appendix.a.1-1.1.3">
and cancel the update if the verifications do not succeed.</t>
          </li>
          <li pn="section-appendix.a.1-1.2" derivedCounter="2.">
            <t indent="0" pn="section-appendix.a.1-1.2.1">Parent-side entities (such as registries) <bcp14>SHOULD</bcp14> allow for effective rollback by reducing a DS record set's TTL to a value between 5-15 minutes when a new set of records is published, and restore the previous (or, if unavailable, default) TTL value at a later occasion (but not before the previous DS RRset's TTL has expired).</t>
            <t indent="0" pn="section-appendix.a.1-1.2.2">Besides a prudent choice of TTL, prompt DS changes also require
      timely discovery of update requests.  For recommended methods,
      see <xref target="ttls-and-caching" format="default" sectionFormat="of" derivedContent="Section 4.2.2"/>.</t>
          </li>
          <li pn="section-appendix.a.1-1.3" derivedCounter="3.">
            <t indent="0" pn="section-appendix.a.1-1.3.1">DNS operators <bcp14>MUST</bcp14> publish both CDNSKEY and CDS records (unless the parent's preference is known) and follow best practice for the choice of hash digest type <xref target="DS-IANA" format="default" sectionFormat="of" derivedContent="DS-IANA"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="reporting-and-transparency" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.2">
        <name slugifiedName="name-reporting-and-transparency-2">Reporting and Transparency</name>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-appendix.a.2-1">
	  <li pn="section-appendix.a.2-1.1" derivedCounter="1.">
            <t indent="0" pn="section-appendix.a.2-1.1.1">For certain DS updates (see <xref target="analysis_reporting" format="default" sectionFormat="of" derivedContent="Section 5.2">analysis</xref>) and for DS deactivation, relevant points of contact known to the parent-side entity (registry or registrar) <bcp14>SHOULD</bcp14> be notified.</t>
          </li>
          <li pn="section-appendix.a.2-1.2" derivedCounter="2.">
            <t indent="0" pn="section-appendix.a.2-1.2.1">For error conditions, the child DNS operator and the domain's technical contact (if applicable) <bcp14>SHOULD</bcp14> be notified first. The registrant <bcp14>SHOULD NOT</bcp14> be notified unless the problem persists for a prolonged amount of time (e.g., three days).</t>
          </li>
          <li pn="section-appendix.a.2-1.3" derivedCounter="3.">
            <t indent="0" pn="section-appendix.a.2-1.3.1">Child DNS operators <bcp14>SHOULD</bcp14> be notified of errors using a report query <xref target="RFC9567" format="default" sectionFormat="of" derivedContent="RFC9567"/> to the agent domain as described in <xref section="4" sectionFormat="of" target="RFC9859" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-4" derivedContent="RFC9859"/>. Note that this requires listening to notifications and that appropriate notification targets are in place (<xref target="RFC9859" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9859#section-3" derivedContent="RFC9859"/>).</t>
            <t indent="0" pn="section-appendix.a.2-1.3.2">Notifications to humans (domain holder) will be performed in accordance with the communication preferences established with the parent-side entity. The same condition <bcp14>SHOULD NOT</bcp14> be reported unnecessarily frequently to the same recipient.</t>
          </li>
          <li pn="section-appendix.a.2-1.4" derivedCounter="4.">
            <t indent="0" pn="section-appendix.a.2-1.4.1">In the RRR model, registries performing DS automation <bcp14>SHOULD</bcp14> inform the registrar of any DS record changes via the EPP Change Poll Extension <xref target="RFC8590" format="default" sectionFormat="of" derivedContent="RFC8590"/> or a similar channel.</t>
          </li>
          <li pn="section-appendix.a.2-1.5" derivedCounter="5.">
            <t indent="0" pn="section-appendix.a.2-1.5.1">The currently active DS configuration <bcp14>SHOULD</bcp14> be made accessible to the registrant (or their designated party) through the customer portal available for domain management. The DS update history <bcp14>MAY</bcp14> be made available in the same way.</t>
          </li>
        </ol>
      </section>
      <section anchor="registration-locks" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.3">
        <name slugifiedName="name-registration-locks-2">Registration Locks</name>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-appendix.a.3-1">
	  <li pn="section-appendix.a.3-1.1" derivedCounter="1.">
            <t indent="0" pn="section-appendix.a.3-1.1.1">To secure ongoing operations, automated DS maintenance <bcp14>MUST NOT</bcp14> be suspended based on a registrar update lock alone (such as EPP status clientUpdateProhibited <xref target="RFC5731" format="default" sectionFormat="of" derivedContent="RFC5731"/>).</t>
          </li>
          <li pn="section-appendix.a.3-1.2" derivedCounter="2.">
            <t indent="0" pn="section-appendix.a.3-1.2.1">When performed by the registry, automated DS maintenance <bcp14>MUST NOT</bcp14> be suspended based on a registry update lock alone (such as EPP status serverUpdateProhibited <xref target="RFC5731" format="default" sectionFormat="of" derivedContent="RFC5731"/>).</t>
          </li>
        </ol>
      </section>
      <section anchor="multiple-submitting-parties-and-suspension-of-automation" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.4">
        <name slugifiedName="name-multiple-submitting-parties-">Multiple Submitting Parties and Suspension of Automation</name>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-appendix.a.4-1">
	  <li pn="section-appendix.a.4-1.1" derivedCounter="1.">
            <t indent="0" pn="section-appendix.a.4-1.1.1">Registries and registrars <bcp14>MUST</bcp14> provide another (e.g., manual) channel for DS maintenance in order to enable recovery when the Child has lost access to its signing key(s). This out-of-band channel is also needed when a DNS operator does not support DS automation or refuses to cooperate.</t>
          </li>
          <li pn="section-appendix.a.4-1.2" derivedCounter="2.">
            <t indent="0" pn="section-appendix.a.4-1.2.1">DS bootstrapping and update requests <bcp14>MUST</bcp14> be executed at the next publication opportunity after verification of their authenticity, regardless of whether they are received in-band or via an out-of-band channel.</t>
          </li>
          <li pn="section-appendix.a.4-1.3" derivedCounter="3.">
            <t indent="0" pn="section-appendix.a.4-1.3.1">When processing a CDS/CDNSKEY "delete" signal to remove the entire DS record set (<xref section="4" sectionFormat="comma" target="RFC8078" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-4" derivedContent="RFC8078"/>), DS automation <bcp14>MUST NOT</bcp14> be suspended. For all other removal requests (such as when received via EPP or a web form), DS automation <bcp14>SHOULD</bcp14> be suspended until a new DS record set has been provisioned, in order to prevent accidental re-initialization when the registrant intended to disable DNSSEC.</t>
          </li>
          <li pn="section-appendix.a.4-1.4" derivedCounter="4.">
            <t indent="0" pn="section-appendix.a.4-1.4.1">Whenever a non-empty DS record set is provisioned, through whichever channel, DS automation <bcp14>SHOULD NOT</bcp14> (or no longer) be suspended (including after an earlier removal).</t>
          </li>
          <li pn="section-appendix.a.4-1.5" derivedCounter="5.">
            <t indent="0" pn="section-appendix.a.4-1.5.1">In the RRR model, a registry <bcp14>MUST NOT</bcp14> automatically initialize DS records when it is known that the registrar does not provide a way for the domain holder to later disable DNSSEC. If the registrar has declared that it performs automated DS maintenance, the registry <bcp14>SHOULD</bcp14> publish the registrar's notification endpoint <xref target="RFC9859" format="default" sectionFormat="of" derivedContent="RFC9859"/> (if applicable) instead of their own and refrain from registry-side DS automation.</t>
          </li>
        </ol>
      </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">The authors would like to thank the members of ICANN's Security and Stability Advisory Committee (SSAC) who wrote the <xref target="SAC126" format="default" sectionFormat="of" derivedContent="SAC126"/> report on which this document is based.</t>
      <t indent="0" pn="section-appendix.b-2">Additional thanks are extended to the following individuals (in the order of their first contribution or review): <contact fullname="Barbara Jantzen"/>, <contact fullname="Matt Pounsett"/>, <contact fullname="Matthijs Mekking"/>, <contact fullname="Ondřej Caletka"/>, <contact fullname="Oli Schacher"/>, <contact fullname="Kim Davies"/>, <contact fullname="Jim Reid"/>, <contact fullname="Q Misell"/>, <contact fullname="Scott Hollenbeck"/>, <contact fullname="Tamás Csillag"/>, <contact fullname="Philip Homburg"/>, <contact fullname="Shumon Huque"/> (Document Shepherd), <contact fullname="Libor Peltan"/>, <contact fullname="Josh Simpson"/>, <contact fullname="Johan Stenstam"/>, <contact fullname="Stefan Ubbink"/>, <contact fullname="Viktor Dukhovni"/>, <contact fullname="Hugo Salgado"/>, <contact fullname="Wes Hardaker"/>, <contact fullname="Mohamed Boucadair"/> (responsible Area Director), <contact fullname="Meir Goldman"/>, <contact fullname="Thomas Fossati"/>, <contact fullname="Peter van Dijk"/>, <contact fullname="Jiankang Yao"/>, <contact fullname="Donald Eastlake"/>, <contact fullname="James Gannon"/>, <contact fullname="Roman Danyliw"/>, <contact fullname="Andy Newton"/>, <contact fullname="Éric Vyncke"/>, <contact fullname="Mike Bishop"/>, <contact fullname="Mahesh Jethanandani"/>, <contact fullname="Deb Cooley"/>, <contact fullname="Charles Eckel"/>, <contact fullname="Christopher Inacio"/>, and <contact fullname="Ketan Talaulikar"/>.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="S." surname="Sheng" fullname="Steve Sheng">
        <organization showOnFrontPage="true"/>
        <address>
          <email>steve.sheng@gmail.com</email>
        </address>
      </author>
      <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
        <organization showOnFrontPage="true">deSEC</organization>
        <address>
          <email>peter@desec.io</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
