<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" submissionType="IETF" consensus="true" ipr="trust200902" docName="draft-ietf-dnsop-dnssec-bootstrapping-11" number="9615" category="std" xml:lang="en" updates="7344, 8078" tocInclude="true" symRefs="true" sortRefs="true" prepTime="2024-07-16T15:56:53" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-dnsop-dnssec-bootstrapping-11" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9615" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="DNSSEC Bootstrapping">Automatic DNSSEC Bootstrapping Using Authenticated Signals from the Zone's Operator</title>
    <seriesInfo name="RFC" value="9615" stream="IETF"/>
    <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
      <organization showOnFrontPage="true">deSEC, Secure Systems Engineering (SSE)</organization>
      <address>
        <postal>
          <city>Berlin</city>
          <country>Germany</country>
        </postal>
        <email>peter@desec.io</email>
      </address>
    </author>
    <author initials="N." surname="Wisiol" fullname="Nils Wisiol">
      <organization showOnFrontPage="true">deSEC, Technische Universität Berlin</organization>
      <address>
        <postal>
          <city>Berlin</city>
          <country>Germany</country>
        </postal>
        <email>nils@desec.io</email>
      </address>
    </author>
    <date month="07" year="2024"/>
    <area>OPS</area>
    <workgroup>dnsop</workgroup>
    <keyword>DNSSEC</keyword>
    <keyword>bootstrapping</keyword>
    <keyword>DS</keyword>
    <keyword>CDS</keyword>
    <keyword>CDNSKEY</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">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" pn="section-abstract-2">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" pn="section-abstract-3">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>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9615" 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) 2024 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-notation">Requirements Notation</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-updates-to-rfcs">Updates to RFCs</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-signaling">Signaling</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-chain-of-trust">Chain of Trust</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-signaling-names">Signaling Names</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bootstrapping-a-dnssec-dele">Bootstrapping a DNSSEC Delegation</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-signaling-consent-to-act-as">Signaling Consent to Act as the Child's Signer</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.1.2">
                  <li pn="section-toc.1-1.4.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.1.2.1.1"><xref derivedContent="4.1.1" format="counter" sectionFormat="of" target="section-4.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-example">Example</xref></t>
                  </li>
                </ul>
              </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-validating-cds-cdnskey-reco">Validating CDS/CDNSKEY Records for DNSSEC Bootstrapping</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-example-2">Example</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-triggers">Triggers</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-limitations">Limitations</xref></t>
              </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-operational-recommendations">Operational Recommendations</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-child-dns-operator">Child DNS Operator</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-parental-agent">Parental Agent</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-security-considerations">Security Considerations</xref></t>
          </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-iana-considerations">IANA Considerations</xref></t>
          </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-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><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">Securing a DNS delegation for the first time requires that the
child's DNSSEC parameters be conveyed to the parent through some
trusted channel.
While the communication conceptually has to occur between the parent
registry and the DNSSEC key holder, what that means exactly and how
communication is coordinated traditionally depends on the
relationship the child has with the parent.</t>
      <t indent="0" pn="section-1-2">A typical situation is that the key is held by the child DNS
operator; thus, the communication often involves this entity.
In addition, depending on the circumstances, it may also involve the
registrar, possibly via the registrant (for details, see <xref target="RFC7344" sectionFormat="of" section="A" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#appendix-A" derivedContent="RFC7344"/>.</t>
      <t indent="0" pn="section-1-3">As observed in <xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/>, these dependencies often result in a manual
process that is susceptible to mistakes and/or errors.
In addition, due to the annoyance factor of the process, involved
parties may avoid the process of getting a DS resource record set (RRset)
published in the first place.</t>
      <t indent="0" pn="section-1-4">To alleviate these problems, automated provisioning of DS records has
been specified in <xref target="RFC8078" format="default" sectionFormat="of" derivedContent="RFC8078"/>.
It is based on the parental agent (registry or registrar) fetching
DNSSEC key parameters from the CDS and CDNSKEY records (<xref target="RFC7344" format="default" sectionFormat="of" derivedContent="RFC7344"/>)
located at the child zone's apex, and validating them somehow.
This validation can be done using the child's existing DNSSEC chain of
trust if the objective is to update an existing DS RRset (such as
during key rollover).
However, when bootstrapping a DNSSEC delegation, the child zone has
no existing DNSSEC validation path, so other means to ensure the
CDS/CDNSKEY records' legitimacy must be found.</t>
      <t indent="0" pn="section-1-5">Due to the lack of a comprehensive DNS-innate solution, either
out-of-band methods have been used so far to complete the chain of
trust, or cryptographic validation has been entirely dispensed with, in
exchange for weaker types of cross-checks such as "Accept after
Delay" (<xref target="RFC8078" sectionFormat="of" section="3.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-3.3" derivedContent="RFC8078"/>).
<xref target="RFC8078" format="default" sectionFormat="of" derivedContent="RFC8078"/> does not define an in-band validation method for enabling
DNSSEC.</t>
      <t indent="0" pn="section-1-6">This document aims to close this gap by introducing an in-band method
for DNS operators to publish arbitrary information about the zones
for which they are authoritative, in an authenticated manner and on a
per-zone basis.
The mechanism allows managed DNS operators to securely announce
DNSSEC key parameters for zones under their management.
The parent can then use this signal to cryptographically validate the
CDS/CDNSKEY RRsets found at an insecure child zone's apex and, upon
success, secure the delegation.</t>
      <t indent="0" pn="section-1-7">While applicable to the vast majority of domains, the protocol does
not support certain edge cases, such as excessively long child zone
names, or DNSSEC bootstrapping for domains with in-domain nameservers
only (see <xref target="limitations" format="default" sectionFormat="of" derivedContent="Section 4.4"/>).</t>
      <t indent="0" pn="section-1-8">DNSSEC bootstrapping is just one application of the generic signaling
mechanism specified in this document.
Other applications might arise in the future, such as publishing
operational metadata or auxiliary information that the DNS operator
likes to make known (e.g., API endpoints for third-party interaction).</t>
      <t indent="0" pn="section-1-9">Readers are expected to be familiar with DNSSEC <xref target="BCP237" format="default" sectionFormat="of" derivedContent="BCP237"/>.</t>
      <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-terminology">Terminology</name>
        <t indent="0" pn="section-1.1-1">This section defines the terminology used in this document.</t>
        <dl spacing="normal" indent="3" newline="false" pn="section-1.1-2">
          <dt pn="section-1.1-2.1">CDS/CDNSKEY:</dt>
          <dd pn="section-1.1-2.2">This notation refers to CDS and/or CDNSKEY, i.e., one or both.</dd>
          <dt pn="section-1.1-2.3">Child:</dt>
          <dd pn="section-1.1-2.4">See <xref target="RFC9499" sectionFormat="of" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9499#section-7" derivedContent="RFC9499"/>.</dd>
          <dt pn="section-1.1-2.5">Child DNS operator:</dt>
          <dd pn="section-1.1-2.6">The entity that maintains and publishes the zone information for
the child DNS.</dd>
          <dt pn="section-1.1-2.7">Parent:</dt>
          <dd pn="section-1.1-2.8">See <xref target="RFC9499" sectionFormat="of" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9499#section-7" derivedContent="RFC9499"/>.</dd>
          <dt pn="section-1.1-2.9">Parental agent:</dt>
          <dd pn="section-1.1-2.10">The entity that has the authority to insert DS records into the
parent zone on behalf of the child.
(It could be the registry, registrar, a reseller, or some other
authorized entity.)</dd>
          <dt pn="section-1.1-2.11">Signaling domain:</dt>
          <dd pn="section-1.1-2.12">A domain name constructed by prepending the label <tt>_signal</tt> to a
hostname taken from a delegation's NS RRset.
There are as many signaling domains as there are distinct NS
targets.</dd>
          <dt pn="section-1.1-2.13">Signaling name:</dt>
          <dd pn="section-1.1-2.14">The labels that are prefixed to a signaling domain in order to
identify a signaling type and a child zone's name (see
<xref target="signalingnames" format="default" sectionFormat="of" derivedContent="Section 3.2"/>).</dd>
          <dt pn="section-1.1-2.15">Signaling record:</dt>
          <dd pn="section-1.1-2.16">A DNS record located at a signaling name under a signaling domain.
Signaling records are used by the child DNS operator to publish
information about the child.</dd>
          <dt pn="section-1.1-2.17">Signaling type:</dt>
          <dd pn="section-1.1-2.18">A signal type identifier, such as <tt>_dsboot</tt> for DNSSEC bootstrapping.</dd>
          <dt pn="section-1.1-2.19">Signaling zone:</dt>
          <dd pn="section-1.1-2.20">The zone that is authoritative for a given signaling record.</dd>
        </dl>
      </section>
      <section anchor="requirements-notation" numbered="true" removeInRFC="false" toc="include" pn="section-1.2">
        <name slugifiedName="name-requirements-notation">Requirements Notation</name>
        <t indent="0" pn="section-1.2-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="updates-to-rfcs" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-updates-to-rfcs">Updates to RFCs</name>
      <t indent="0" pn="section-2-1">The DS enrollment methods described in <xref target="RFC8078" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-3" derivedContent="RFC8078"/> are less
secure than the method described in <xref target="dnssec-bootstrapping" format="default" sectionFormat="of" derivedContent="Section 4"/> of this
document.
Therefore, child DNS operators and parental agents wishing to use CDS/CDNSKEY
records for initial DS enrollment <bcp14>SHOULD</bcp14> support the
authentication protocol described here.</t>
      <t indent="0" pn="section-2-2">In order to facilitate publication of signaling records for the purpose
of DNSSEC bootstrapping (see <xref target="signalingrecords" format="default" sectionFormat="of" derivedContent="Section 4.1"/>), the first bullet
("Location") of <xref target="RFC7344" sectionFormat="of" section="4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-4.1" derivedContent="RFC7344"/> is removed.</t>
    </section>
    <section anchor="signaling" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-signaling">Signaling</name>
      <t indent="0" pn="section-3-1">This section describes the general mechanism by which a child DNS
operator can publish an authenticated signal about a child zone.
Parental agents (or any other party) can then discover and process the
signal.
Authenticity is ensured through standard DNSSEC validation.</t>
      <section anchor="chain-of-trust" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-chain-of-trust">Chain of Trust</name>
        <t indent="0" pn="section-3.1-1">If a child DNS operator implements this specification, each signaling
zone <bcp14>MUST</bcp14> be signed and be validatable by the parental agent (i.e., have
a valid publicly resolvable DNSSEC chain of trust).
This is typically achieved by securely delegating each signaling zone.</t>
        <t indent="0" pn="section-3.1-2">For example, when publishing a signal that relates to a child zone
with NS records <tt>ns1.example.net</tt> and <tt>ns2.example.org</tt>, the child
DNS operator needs to ensure that the parental agent has a valid DNSSEC
chain of trust for the zone(s) that are authoritative for the signaling
domains <tt>_signal.ns1.example.net</tt> and <tt>_signal.ns2.example.org</tt>.</t>
      </section>
      <section anchor="signalingnames" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-signaling-names">Signaling Names</name>
        <t indent="0" pn="section-3.2-1">To publish information about the child zone in an
authenticated fashion, the child DNS operator <bcp14>MUST</bcp14> publish one or
more signaling records at a signaling name under each signaling domain.</t>
        <t indent="0" pn="section-3.2-2">Signaling records <bcp14>MUST</bcp14> be accompanied by RRSIG records created with
the corresponding signaling zone's key(s).
The type and contents of these signaling records depend on the type of
signal.</t>
        <t indent="0" pn="section-3.2-3">The signaling name identifies the child and the signaling type.
It is identical to the child name (with the final root label removed),
prefixed with a label containing the signaling type.</t>
      </section>
    </section>
    <section anchor="dnssec-bootstrapping" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-bootstrapping-a-dnssec-dele">Bootstrapping a DNSSEC Delegation</name>
      <t indent="0" pn="section-4-1">When the child zone's CDS/CDNSKEY RRsets are used for setting up initial
trust, they need to be authenticated.
This is achieved by copublishing the child's CDS/CDNSKEY RRsets as an
authenticated signal as described in <xref target="signaling" format="default" sectionFormat="of" derivedContent="Section 3"/>.
The parent can discover and validate it, thus transferring trust from
the child DNS operator nameservers' chain of trust to the child zone.</t>
      <t indent="0" pn="section-4-2">This protocol is not intended for updating an existing DS RRset.
For this purpose, the parental agent can validate the child's
CDS/CDNSKEY RRsets directly, using the chain of trust established by
the existing DS RRset (<xref target="RFC7344" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-4" derivedContent="RFC7344"/>).</t>
      <section anchor="signalingrecords" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-signaling-consent-to-act-as">Signaling Consent to Act as the Child's Signer</name>
        <t indent="0" pn="section-4.1-1">To confirm its willingness to act as the child's delegated signer and
authenticate the child's CDS/CDNSKEY RRsets, the child DNS operator
<bcp14>MUST</bcp14> copublish them at the corresponding signaling name under each
signaling domain, excluding those that would fall within the child
domain (<xref target="signalingnames" format="default" sectionFormat="of" derivedContent="Section 3.2"/>).
For simplicity, the child DNS operator <bcp14>MAY</bcp14> also copublish the child's
CDS/CDNSKEY RRsets under signaling domains within the child domain,
although those signaling domains are not used for validation
(<xref target="cds-auth" format="default" sectionFormat="of" derivedContent="Section 4.2"/>).</t>
        <t indent="0" pn="section-4.1-2">Unlike the CDS/CDNSKEY RRsets at the child's apex, a signaling
RRset <bcp14>MUST</bcp14> be signed with the corresponding signaling zone's
key(s).  Its contents <bcp14>MUST</bcp14> be identical to the corresponding
RRset published at the child's apex.</t>
        <t indent="0" pn="section-4.1-3">Existing use of CDS/CDNSKEY records was specified at the child apex
only (<xref target="RFC7344" sectionFormat="of" section="4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7344#section-4.1" derivedContent="RFC7344"/>).  This protocol extends the use of
these record types to non-apex owner names for the purpose of DNSSEC
bootstrapping.  To exclude the possibility of semantic collision,
there <bcp14>MUST NOT</bcp14> be a zone cut at a signaling name.</t>
        <section anchor="example" numbered="true" removeInRFC="false" toc="include" pn="section-4.1.1">
          <name slugifiedName="name-example">Example</name>
          <t indent="0" pn="section-4.1.1-1">For the purposes of bootstrapping the child zone <tt>example.co.uk</tt> with NS
records <tt>ns1.example.net</tt>, <tt>ns2.example.org</tt>, and <tt>ns3.example.co.uk</tt>,
the required signaling domains are <tt>_signal.ns1.example.net</tt> and
<tt>_signal.ns2.example.org</tt>.</t>
          <t indent="0" pn="section-4.1.1-2">In the zones containing these domains, the child DNS operator
authenticates the CDS/CDNSKEY RRsets found at the child's apex by
copublishing them as CDS/CDNSKEY RRsets at the names:</t>
          <artwork align="left" pn="section-4.1.1-3">_dsboot.example.co.uk._signal.ns1.example.net
_dsboot.example.co.uk._signal.ns2.example.org
</artwork>
          <t indent="0" pn="section-4.1.1-4">These RRsets are signed with DNSSEC just like any other zone data.</t>
          <t indent="0" pn="section-4.1.1-5">Publication of signaling records under the in-domain name
<tt>_signal.ns3.example.co.uk</tt> is not required.</t>
        </section>
      </section>
      <section anchor="cds-auth" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-validating-cds-cdnskey-reco">Validating CDS/CDNSKEY Records for DNSSEC Bootstrapping</name>
        <t indent="0" pn="section-4.2-1">To validate a child's CDS/CDNSKEY RRset for DNSSEC bootstrapping, the
parental agent, knowing both the child zone name and its NS
hostnames, <bcp14>MUST</bcp14> execute the following steps:</t>
        <ol type="Step %d:" indent="adaptive" spacing="normal" start="1" pn="section-4.2-2">
<li anchor="s1" pn="section-4.2-2.1" derivedCounter="Step 1:">
            <t indent="0" pn="section-4.2-2.1.1">verify that the child has no DS records published at the parent and
that at least one of its nameservers is outside the child domain;</t>
          </li>
          <li anchor="s2" pn="section-4.2-2.2" derivedCounter="Step 2:">
            <t indent="0" pn="section-4.2-2.2.1">query the CDS/CDNSKEY RRset at the child zone apex directly from
each of the authoritative servers as determined by the delegation's
(parent-side) NS RRset, without caching;</t>
          </li>
          <li anchor="s3" pn="section-4.2-2.3" derivedCounter="Step 3:">
            <t indent="0" pn="section-4.2-2.3.1">query the CDS/CDNSKEY RRset located at the signaling name under
each signaling domain (except those falling within the child domain)
using a trusted DNS resolver and enforce DNSSEC validation;</t>
          </li>
          <li anchor="s4" pn="section-4.2-2.4" derivedCounter="Step 4:">
            <t indent="0" pn="section-4.2-2.4.1">check (separately by record type) that all RRsets retrieved
in Steps 2 and 3 have equal contents;</t>
          </li>
        </ol>
        <t indent="0" pn="section-4.2-3">If the above steps succeed without error, the CDS/CDNSKEY RRsets are
successfully verified, and the parental agent can proceed with the
publication of the DS RRset under the precautions described in
<xref target="RFC8078" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-5" derivedContent="RFC8078"/>.</t>
        <t indent="0" pn="section-4.2-4">The parental agent <bcp14>MUST</bcp14> abort the procedure if an error
condition occurs, in particular:</t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-4.2-5">
          <li pn="section-4.2-5.1">
            <t indent="0" pn="section-4.2-5.1.1">in <xref target="s1" format="none" sectionFormat="of" derivedContent="">Step 1</xref>: the child is already securely delegated or has in-domain
nameservers only;</t>
          </li>
          <li pn="section-4.2-5.2">
            <t indent="0" pn="section-4.2-5.2.1">in <xref target="s2" format="none" sectionFormat="of" derivedContent="">Step 2</xref>: any failure during the retrieval of the CDS/CDNSKEY
RRset located at the child apex from any of the authoritative
nameservers;</t>
          </li>
          <li pn="section-4.2-5.3">
            <t indent="0" pn="section-4.2-5.3.1">in <xref target="s3" format="none" sectionFormat="of" derivedContent="">Step 3</xref>: any failure to retrieve the CDS/CDNSKEY RRsets located
at the signaling name under any signaling domain, including failure
of DNSSEC validation, or unauthenticated data (AD bit not set);</t>
          </li>
          <li pn="section-4.2-5.4">
            <t indent="0" pn="section-4.2-5.4.1">in <xref target="s4" format="none" sectionFormat="of" derivedContent="">Step 4</xref>: inconsistent responses (for at least one of the types),
including an RRset that is empty in one of Steps <xref target="s2" format="none" sectionFormat="of" derivedContent="">2</xref> or <xref target="s3" format="none" sectionFormat="of" derivedContent="">3</xref>, but
non-empty in the other.</t>
          </li>
        </ul>
        <section anchor="example-1" numbered="true" removeInRFC="false" toc="include" pn="section-4.2.1">
          <name slugifiedName="name-example-2">Example</name>
          <t indent="0" pn="section-4.2.1-1">To verify the CDS/CDNSKEY RRsets for the child <tt>example.co.uk</tt>, the
parental agent (assuming that the child delegation's NS records are
<tt>ns1.example.net</tt>, <tt>ns2.example.org</tt>, and <tt>ns3.example.co.uk</tt>)</t>
          <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section-4.2.1-2">
<li pn="section-4.2.1-2.1" derivedCounter="1.">
              <t indent="0" pn="section-4.2.1-2.1.1">checks that the child domain is not yet securely delegated;</t>
            </li>
            <li pn="section-4.2.1-2.2" derivedCounter="2.">
              <t indent="0" pn="section-4.2.1-2.2.1">queries the CDS/CDNSKEY RRsets for <tt>example.co.uk</tt> directly from
<tt>ns1.example.net</tt>, <tt>ns2.example.org</tt>, and <tt>ns3.example.co.uk</tt>
(without caching);</t>
            </li>
            <li pn="section-4.2.1-2.3" derivedCounter="3.">
              <t indent="0" pn="section-4.2.1-2.3.1">queries and validates the CDS/CDNSKEY RRsets located at (see
<xref target="signalingnames" format="default" sectionFormat="of" derivedContent="Section 3.2"/>; <tt>ns3.example.co.uk</tt> is ignored because it is
in-domain)</t>
              <artwork align="left" pn="section-4.2.1-2.3.2">_dsboot.example.co.uk._signal.ns1.example.net
_dsboot.example.co.uk._signal.ns2.example.org
</artwork>
            </li>
            <li pn="section-4.2.1-2.4" derivedCounter="4.">checks that the CDS/CDNSKEY RRsets retrieved in Steps <xref target="s2" format="none" sectionFormat="of" derivedContent="">2</xref>
and <xref target="s3" format="none" sectionFormat="of" derivedContent="">3</xref> agree across responses.</li>
          </ol>
          <t indent="0" pn="section-4.2.1-3">If all of these steps succeed, the parental agent can proceed to publish
a DS RRset as indicated by the validated CDS/CDNSKEY RRset.</t>
          <t indent="0" pn="section-4.2.1-4">As in-domain signaling names do not have a chain of trust at
bootstrapping time, the parental agent does not consider them during
validation.
Consequently, if all NS hostnames are in-domain, validation cannot be
completed and DS records are not published.</t>
        </section>
      </section>
      <section anchor="triggers" numbered="true" removeInRFC="false" toc="include" pn="section-4.3">
        <name slugifiedName="name-triggers">Triggers</name>
        <t indent="0" pn="section-4.3-1">Parental agents <bcp14>SHOULD</bcp14> trigger the procedure described in <xref target="cds-auth" format="default" sectionFormat="of" derivedContent="Section 4.2"/>
once one of the following conditions is fulfilled:</t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-4.3-2">
          <li pn="section-4.3-2.1">
            <t indent="0" pn="section-4.3-2.1.1">The parental agent receives a new or updated NS RRset for a
child;</t>
          </li>
          <li pn="section-4.3-2.2">
            <t indent="0" pn="section-4.3-2.2.1">The parental agent receives a notification indicating that the child
wishes to have its CDS/CDNSKEY RRset processed;</t>
          </li>
          <li pn="section-4.3-2.3">
            <t indent="0" pn="section-4.3-2.3.1">The parental agent encounters a signaling record during a proactive,
opportunistic scan (e.g., daily queries of signaling records for
some or all of its delegations);</t>
          </li>
          <li pn="section-4.3-2.4">
            <t indent="0" pn="section-4.3-2.4.1">The parental agent encounters a signaling record during an NSEC walk
or when parsing a signaling zone (e.g., when made available via AXFR
by the child DNS operator);</t>
          </li>
          <li pn="section-4.3-2.5">
            <t indent="0" pn="section-4.3-2.5.1">Any other condition deemed appropriate by local policy.</t>
          </li>
        </ul>
        <t indent="0" pn="section-4.3-3">Timer-based trigger mechanisms (such as scans) exhibit undesirable
properties with respect to processing delay and scaling; on-demand
triggers (like notifications) are preferable. Whenever possible, child
DNS operators and parental agents are thus encouraged to use them,
reducing both delays and the amount of scanning traffic.</t>
        <t indent="0" pn="section-4.3-4">Most types of discovery (such as daily scans of delegations) are based
directly on the delegation's NS RRset.
In this case, these NS names can be used as is by the bootstrapping
algorithm (<xref target="cds-auth" format="default" sectionFormat="of" derivedContent="Section 4.2"/>) for querying signaling records.</t>
        <t indent="0" pn="section-4.3-5">Some discovery methods, however, do not imply reliable knowledge of the
delegation's NS RRset.
For example, when discovering signaling names by performing an NSEC
walk or zone transfer of a signaling zone, the parental agent <bcp14>MUST NOT</bcp14>
assume that a nameserver under whose signaling domain a signaling
record appears is actually authoritative for the corresponding child.</t>
        <t indent="0" pn="section-4.3-6">Instead, whenever a list of "bootstrappable domains" is obtained by means other
than directly from the parent, the parental
agent <bcp14>MUST</bcp14> ascertain that the delegation actually contains the
nameserver hostname seen during discovery, and ensure that signaling-record queries are only made against the proper set of nameservers as
listed in the child's delegation from the parent.</t>
      </section>
      <section anchor="limitations" numbered="true" removeInRFC="false" toc="include" pn="section-4.4">
        <name slugifiedName="name-limitations">Limitations</name>
        <t indent="0" pn="section-4.4-1">As a consequence of <xref target="s3" format="none" sectionFormat="of" derivedContent="">Step 3</xref> in <xref target="cds-auth" format="default" sectionFormat="of" derivedContent="Section 4.2"/>, DS bootstrapping does not
work for fully in-domain delegations, as no preexisting chain of
trust to the child domain is available during bootstrapping.
(As a workaround, one can add an out-of-domain nameserver to the
initial NS RRset and remove it once bootstrapping is completed.
Automation for this is available via CSYNC records, see <xref target="RFC7477" format="default" sectionFormat="of" derivedContent="RFC7477"/>.)</t>
        <t indent="0" pn="section-4.4-2">Fully qualified signaling names must by valid DNS names.
Label count and length requirements for DNS names (<xref target="RFC1035" sectionFormat="of" section="3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc1035#section-3.1" derivedContent="RFC1035"/>) imply that the protocol does not work for unusually long child
domain names or NS hostnames.</t>
      </section>
    </section>
    <section anchor="operational-recommendations" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-operational-recommendations">Operational Recommendations</name>
      <section anchor="child-dns-operator" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-child-dns-operator">Child DNS Operator</name>
        <t indent="0" pn="section-5.1-1">It is possible to add CDS/CDNSKEY records and corresponding signaling
records to a zone without the domain owner's explicit knowledge.
To spare domain owners from being caught off guard by the ensuing DS
changes, child DNS operators following this practice are advised to make
that transparent, such as by informing the domain owner during zone
creation (e.g., in a GUI) or by notifying them via email.</t>
        <t indent="0" pn="section-5.1-2">When transferring a zone to another DNS operator, the old and new child
DNS operators need to cooperate to achieve a smooth transition, e.g.,
by using the multi-signer protocols described in <xref target="RFC8901" format="default" sectionFormat="of" derivedContent="RFC8901"/>.
If all else fails, the domain owner might have to request the removal of
all DS records and have the transfer performed insecurely (see
<xref target="I-D.hardaker-dnsop-intentionally-temporary-insec" format="default" sectionFormat="of" derivedContent="INSEC"/>).</t>
        <t indent="0" pn="section-5.1-3">Signaling domains <bcp14>SHOULD</bcp14> be delegated as standalone zones, so
that the signaling zone's apex coincides with the signaling domain (such
as <tt>_signal.ns1.example.net</tt>).
While it is permissible for the signaling domain to be contained
in a signaling zone of fewer labels (such as <tt>example.net</tt>), a
zone cut ensures that bootstrapping activities do not require
modifications of the zone containing the nameserver hostname.</t>
        <t indent="0" pn="section-5.1-4">Once a child DNS operator determines that specific signaling record sets
have been processed (e.g., by seeing the result in the parent zone),
they are advised to remove them.
This will reduce the size of the signaling zone and facilitate more
efficient bulk processing (such as via zone transfers).</t>
      </section>
      <section anchor="parental-agent" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-parental-agent">Parental Agent</name>
        <t indent="0" pn="section-5.2-1">In order to ensure timely DNSSEC bootstrapping of insecure domains,
stalemate situations due to mismatch of stale cached records (<xref target="s4" format="none" sectionFormat="of" derivedContent="">Step 4</xref> of
<xref target="cds-auth" format="default" sectionFormat="of" derivedContent="Section 4.2"/>) need to be avoided.
  It is thus <bcp14>RECOMMENDED</bcp14> that
  queries into signaling domains be performed with an (initially) empty
  resolver cache, or that some other method for retrieving fresh data
  from authoritative servers be used.</t>
        <t indent="0" pn="section-5.2-2">It is also <bcp14>RECOMMENDED</bcp14> that QNAME minimization <xref target="RFC9156" format="default" sectionFormat="of" derivedContent="RFC9156"/> be used when
resolving queries for signaling records to guard against certain
attacks (see <xref target="security" format="default" sectionFormat="of" derivedContent="Section 6"/>).</t>
      </section>
    </section>
    <section anchor="security" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1">The DNSSEC bootstrapping method introduced in this document is based on
the approaches described in <xref target="RFC8078" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8078#section-3" derivedContent="RFC8078"/>, but
adds authentication to the CDS/CDNSKEY concept.
Its security level is therefore strictly higher than that of existing
approaches described in that document (e.g., "Accept after Delay").
Apart from this general improvement, the same Security Considerations
apply as in <xref target="RFC8078" format="default" sectionFormat="of" derivedContent="RFC8078"/>.</t>
      <t indent="0" pn="section-6-2">The level of rigor in <xref target="cds-auth" format="default" sectionFormat="of" derivedContent="Section 4.2"/> is needed to prevent publication of an
ill-conceived DS RRset (authorized only under a subset of NS hostnames).
This ensures, for example, that an operator in a multi-homed setup
cannot enable DNSSEC unless all other operators agree.</t>
      <t indent="0" pn="section-6-3">In any case, as the child DNS operator has authoritative knowledge of
the child's CDS/CDNSKEY records, it can readily detect fraudulent
provisioning of DS records.</t>
      <t indent="0" pn="section-6-4">In order to prevent the parents of nameserver hostnames from becoming a
single point of failure for a delegation (both in terms of resolution
availability and for the trust model of this protocol), 
diversifying the path from the root to the child's nameserver hostnames is advisable. For example, different and independently operated TLDs may be used for each one.</t>
      <t indent="0" pn="section-6-5">If QNAME minimization <xref target="RFC9156" format="default" sectionFormat="of" derivedContent="RFC9156"/> is not used when querying for
signaling records, an upstream parent of a signaling domain will see
those CDS/CDNSKEY queries and could respond with an authoritative answer
signed with its own key, instead of sending the referral.
Enabling QNAME minimization reduces the attack surface for such forgery.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">IANA has added the following entries to the
"Underscored and Globally Scoped DNS Node Names" registry <xref target="RFC8552" format="default" sectionFormat="of" derivedContent="RFC8552"/>:</t>
      <table anchor="iana-table" align="center" pn="table-1">
        <name/>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">RR Type</th>
            <th align="left" colspan="1" rowspan="1">_NODE NAME</th>
            <th align="left" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">CDS</td>
            <td align="left" colspan="1" rowspan="1">_signal</td>
            <td align="left" colspan="1" rowspan="1">RFC 9615</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">CDNSKEY</td>
            <td align="left" colspan="1" rowspan="1">_signal</td>
            <td align="left" colspan="1" rowspan="1">RFC 9615</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.hardaker-dnsop-intentionally-temporary-insec" to="INSEC"/>
    <references pn="section-8">
      <name slugifiedName="name-references">References</name>
      <references pn="section-8.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <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="RFC7477" target="https://www.rfc-editor.org/info/rfc7477" quoteTitle="true" derivedAnchor="RFC7477">
          <front>
            <title>Child-to-Parent Synchronization in DNS</title>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <date month="March" year="2015"/>
            <abstract>
              <t indent="0">This document specifies how a child zone in the DNS can publish a record to indicate to a parental agent that the parental agent may copy and process certain records from the child zone. The existence of the record and any change in its value can be monitored by a parental agent and acted on depending on local policy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7477"/>
          <seriesInfo name="DOI" value="10.17487/RFC7477"/>
        </reference>
        <reference anchor="RFC8078" target="https://www.rfc-editor.org/info/rfc8078" quoteTitle="true" derivedAnchor="RFC8078">
          <front>
            <title>Managing DS Records from the Parent via CDS/CDNSKEY</title>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <date month="March" year="2017"/>
            <abstract>
              <t indent="0">RFC 7344 specifies how DNS trust can be maintained across key rollovers in-band between parent and child. This document elevates RFC 7344 from Informational to Standards Track. It also adds a method for initial trust setup and removal of a secure entry point.</t>
              <t indent="0">Changing a domain's DNSSEC status can be a complicated matter involving multiple unrelated parties. Some of these parties, such as the DNS operator, might not even be known by all the organizations involved. The inability to disable DNSSEC via in-band signaling is seen as a problem or liability that prevents some DNSSEC adoption at a large scale. This document adds a method for in-band signaling of these DNSSEC status changes.</t>
              <t indent="0">This document describes reasonable policies to ease deployment of the initial acceptance of new secure entry points (DS records).</t>
              <t indent="0">It is preferable that operators collaborate on the transfer or move of a domain. The best method is to perform a Key Signing Key (KSK) plus Zone Signing Key (ZSK) rollover. If that is not possible, the method using an unsigned intermediate state described in this document can be used to move the domain between two parties. This leaves the domain temporarily unsigned and vulnerable to DNS spoofing, but that is preferred over the alternative of validation failures due to a mismatched DS and DNSKEY record.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8078"/>
          <seriesInfo name="DOI" value="10.17487/RFC8078"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8552" target="https://www.rfc-editor.org/info/rfc8552" quoteTitle="true" derivedAnchor="RFC8552">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="March" year="2019"/>
            <abstract>
              <t indent="0">Formally, any DNS Resource Record (RR) may occur under any domain name. However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies. The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name"). The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch. This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
        <reference anchor="RFC9156" target="https://www.rfc-editor.org/info/rfc9156" quoteTitle="true" derivedAnchor="RFC9156">
          <front>
            <title>DNS Query Name Minimisation to Improve Privacy</title>
            <author fullname="S. Bortzmeyer" initials="S." surname="Bortzmeyer"/>
            <author fullname="R. Dolmans" initials="R." surname="Dolmans"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="November" year="2021"/>
            <abstract>
              <t indent="0">This document describes a technique called "QNAME minimisation" to improve DNS privacy, where the DNS resolver no longer always sends the full original QNAME and original QTYPE to the upstream name server. This document obsoletes RFC 7816.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9156"/>
          <seriesInfo name="DOI" value="10.17487/RFC9156"/>
        </reference>
        <reference anchor="RFC9499" target="https://www.rfc-editor.org/info/rfc9499" quoteTitle="true" derivedAnchor="RFC9499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="March" year="2024"/>
            <abstract>
              <t indent="0">The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t indent="0">This document updates RFC 2308 by clarifying the definitions of "forwarder" and "QNAME". It obsoletes RFC 8499 by adding multiple terms and clarifications. Comprehensive lists of changed and new definitions can be found in Appendices A and B.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="9499"/>
          <seriesInfo name="DOI" value="10.17487/RFC9499"/>
        </reference>
      </references>
      <references pn="section-8.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <referencegroup anchor="BCP237" target="https://www.rfc-editor.org/info/bcp237" derivedAnchor="BCP237">
          <reference anchor="RFC9364" target="https://www.rfc-editor.org/info/rfc9364" quoteTitle="true">
            <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>
        </referencegroup>
        <reference anchor="I-D.hardaker-dnsop-intentionally-temporary-insec" target="https://datatracker.ietf.org/doc/html/draft-hardaker-dnsop-intentionally-temporary-insec-01" quoteTitle="true" derivedAnchor="INSEC">
          <front>
            <title>Intentionally Temporarily Degraded or Insecure</title>
            <author fullname="Wes Hardaker" initials="W." surname="Hardaker">
              <organization showOnFrontPage="true">USC/ISI</organization>
            </author>
            <date day="21" month="October" year="2021"/>
            <abstract>
              <t indent="0">Performing DNSKEY algorithm transitions with DNSSEC signing is unfortunately challenging to get right in practice without decent tooling support. This document weighs the correct, completely secure way of rolling keys against an alternate, significantly simplified, method that takes a zone through an insecure state.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hardaker-dnsop-intentionally-temporary-insec-01"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC8901" target="https://www.rfc-editor.org/info/rfc8901" quoteTitle="true" derivedAnchor="RFC8901">
          <front>
            <title>Multi-Signer DNSSEC Models</title>
            <author fullname="S. Huque" initials="S." surname="Huque"/>
            <author fullname="P. Aras" initials="P." surname="Aras"/>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="J. Vcelak" initials="J." surname="Vcelak"/>
            <author fullname="D. Blacka" initials="D." surname="Blacka"/>
            <date month="September" year="2020"/>
            <abstract>
              <t indent="0">Many enterprises today employ the service of multiple DNS providers to distribute their authoritative DNS service. Deploying DNSSEC in such an environment may present some challenges, depending on the configuration and feature set in use. In particular, when each DNS provider independently signs zone data with their own keys, additional key-management mechanisms are necessary. This document presents deployment models that accommodate this scenario and describes these key-management requirements. These models do not require any changes to the behavior of validating resolvers, nor do they impose the new key-management requirements on authoritative servers not involved in multi-signer configurations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8901"/>
          <seriesInfo name="DOI" value="10.17487/RFC8901"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">Thanks to <contact fullname="Brian Dickson"/>, <contact fullname="Ondřej Caletka"/>, <contact fullname="John R. Levine"/>, <contact fullname="Christian Elmerot"/>, <contact fullname="Oli Schacher"/>, <contact fullname="Donald Eastlake"/>, <contact fullname="Libor Peltan"/>, <contact fullname="Warren Kumari"/>,
<contact fullname="Scott Rose"/>, <contact fullname="Linda Dunbar"/>, <contact fullname="Tim Wicinski"/>, <contact fullname="Paul Wouters"/>, <contact fullname="Paul Hoffman"/>,
<contact fullname="Peter Yee"/>, <contact fullname="Benson Muite"/>, <contact fullname="Roman Danyliw"/>, <contact fullname="Éric Vyncke"/>, and <contact fullname="Joe Abley"/> for
reviewing draft proposals and offering comments and suggestions.</t>
      <t indent="0" pn="section-appendix.a-2">Thanks also to <contact fullname="Steve Crocker"/>, <contact fullname="Hugo Salgado"/>, and <contact fullname="Ulrich Wisser"/> for
early-stage brainstorming.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="P." surname="Thomassen" fullname="Peter Thomassen">
        <organization showOnFrontPage="true">deSEC, Secure Systems Engineering (SSE)</organization>
        <address>
          <postal>
            <city>Berlin</city>
            <country>Germany</country>
          </postal>
          <email>peter@desec.io</email>
        </address>
      </author>
      <author initials="N." surname="Wisiol" fullname="Nils Wisiol">
        <organization showOnFrontPage="true">deSEC, Technische Universität Berlin</organization>
        <address>
          <postal>
            <city>Berlin</city>
            <country>Germany</country>
          </postal>
          <email>nils@desec.io</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
