<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.1.7) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-dnsop-delegation-mgmt-via-ddns-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="DDNS Updates of Delegation Information">Automating DNS Delegation Management via DDNS</title>

    <author initials="J." surname="Stenstam" fullname="Johan Stenstam">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>johan.stenstam@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="E." surname="Bergström" fullname="Erik Bergström">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>erik.bergstrom@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="L." surname="Fernandez" fullname="Leon Fernandez">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>leon.fernandez@internetstiftelsen.se</email>
      </address>
    </author>

    <date />

    <area>Internet</area>
    <workgroup>DNSOP Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 57?>

<t>Delegation information (i.e. the NS RRset, possible glue, possible DS
records) should always be kept in sync between child zone and parent
zone. However, in practice that is not always the case.</t>

<t>When the delegation information is not in sync the child zone is
usually working fine, but without the amount of redundancy that the
zone owner likely expects to have. Hence, should any further problems
ensue it could have catastrophic consequences.</t>

<t>The DNS name space has lived with this problem for decades and it
never goes away. Or, rather, it will never go away until a fully
automated mechanism for how to keep the information in sync
automatically is deployed.</t>

<t>This document proposes such a mechanism based on DNS Dynamic Updates
(DDNS) secured with SIG(0) signatures, sent from the child to the
parent across the zone cut. The target of the update is discovered
via the DSYNC record defined in <xref target="RFC9859"/>.</t>

<t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/johanix/draft-ietf-dnsop-delegation-mgmt-via-ddns">https://github.com/johanix/draft-ietf-dnsop-delegation-mgmt-via-ddns</eref>.
The most recent working version of the document, open issues, etc,
should all be available there.  The authors (gratefully) accept pull
requests.</t>



    </abstract>



  </front>

  <middle>


<?line 84?>

<section anchor="introduction"><name>Introduction</name>

<t>For DNSSEC signed child zones with TLD registries as parents there is 
an emerging trend towards running so-called "CDS scanners" and "CSYNC 
scanners" by the parent.</t>

<t>These scanners detect publication of CDS records (the child signalling
a desire for an update to the DS RRset in the parent) and/or a CSYNC
record (the child signalling a desire for an update to the NS RRset
or, possibly, in-bailiwick glue in the parent).</t>

<t>The scanners have a number of drawbacks, including being inefficient
and slow. They are only applicable to DNSSEC-signed child zones and
they add significant complexity to the parent operations. But given
that, they do work.</t>

<t><xref target="RFC9859"/> proposes a method to alleviate the inefficiency and
slowness of scanners. But the DNSSEC requirement and the complexity
remain.</t>

<t>This document proposes an alternative mechanism to automate the
updating of delegation information in the parent zone for a child
zone based on DNS Dynamic Updates secured with SIG(0) signatures.</t>

<t>This alternative mechanism shares the property of being efficient
and provides rapid convergence (similar to generalized notifications in
conjunction with scanners). Furthermore, it has the advantages of not
requiring any scanners in the parent at all and also not being
dependent on the child (and parent) being DNSSEC-signed.</t>

<t>Knowledge of DNS NOTIFY <xref target="RFC1996"/> and DNS Dynamic Updates
<xref target="RFC2136"/> and <xref target="RFC3007"/> is assumed. DNS SIG(0) transaction
signatures are documented in <xref target="RFC2931"/>. In addition this
Internet-Draft borrows heavily from the thoughts and problem statement
from <xref target="RFC9859"/>.</t>

<section anchor="requirements-notation"><name>Requirements Notation</name>

<t>The key words "<strong>MUST</strong>", "<strong>MUST NOT</strong>", "<strong>REQUIRED</strong>", "<strong>SHALL</strong>",
"<strong>SHALL NOT</strong>", "<strong>SHOULD</strong>", "<strong>SHOULD NOT</strong>", "<strong>RECOMMENDED</strong>",
"<strong>NOT RECOMMENDED</strong>", "<strong>MAY</strong>", and "<strong>OPTIONAL</strong>" in this document
are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>SIG(0)</dt>
  <dd>
    <t>The DNS transaction authentication mechanism of <xref target="RFC2931"/>, which
uses asymmetric (public-key) cryptography so that the recipient needs
only the sender's public key to verify a signature created with the
sender's private key.</t>
  </dd>
  <dt>UPDATE Receiver</dt>
  <dd>
    <t>The logical role that receives and processes DNS UPDATE messages on
behalf of, or under the authority of, the parent zone operator. This
role MAY be co-located with the parent's primary name server, run as
a separate dedicated service operated by the parent, or operated by a
third party (such as a registrar) on the parent's behalf. This
document uses the single term "UPDATE Receiver" for this role
throughout.</t>
  </dd>
  <dt>Bootstrap</dt>
  <dd>
    <t>The process of establishing initial trust in a SIG(0) public key.
A key that has been received but not yet validated is "known"; once
validated it is promoted to "trusted".</t>
  </dd>
</dl>

</section>
</section>
<section anchor="applicability"><name>Applicability</name>

<t>Because of the drawbacks of CDS and CSYNC scanners they are unlikely
to be able to fully automate the maintenance of delegation information
in all parent zones. The primary reasons are the hard requirement on
DNSSEC in the child zones and the complexity cost of operating the
scanner infrastructure. In practice, scanners are likely mostly
realistic for parent zones that are operated by well-resourced
registries.</t>

<t>All the parts of the DNS name space where the parent is smaller and
more resource constrained would be able to automate the delegation
management via this mechanism without the requirement of operating
scanners. Also all parts of the name space where there are child zones
that are not DNSSEC-signed would be able to use this.</t>

<t>Obviously, also well-resourced parent zones with DNSSEC-signed child
zones would be able to use this DNS UPDATE-based mechanism, but in
those cases scanners plus generalized notifications would also work.</t>

</section>
<section anchor="dns-notify-versus-dns-update"><name>DNS NOTIFY versus DNS UPDATE</name>

<t>DNS NOTIFY and DNS UPDATE messages share several properties
and are used to address similar issues.</t>

<section anchor="similarities-between-notify-and-update"><name>Similarities between NOTIFY and UPDATE</name>

<t>Both NOTIFY and UPDATE are "push" rather than "pull" messages and
therefore very efficient.</t>

<t>Both NOTIFY and UPDATE are messages, in DNS packet format. They are
used by one party (the sender) to inform another party (the recipient)
that some piece of DNS information has changed and that as a
consequence of this change the recipient of the message may want to
also make a change to its DNS data.</t>

<t>A NOTIFY (as per <xref target="RFC1996"/>) is only a hint and the recipient may
ignore it. But if the recipient does listen to the NOTIFY it should
make its own lookups to verify what has changed and whether that
should trigger any changes in the DNS data provided by the recipient.</t>

</section>
<section anchor="differences-between-notify-and-update"><name>Differences between NOTIFY and UPDATE</name>

<t>The difference between the UPDATE and the NOTIFY is that the UPDATE
contains the exact change that should (in the opinion of the sender)
be applied to the recipient's DNS data. Furthermore, for secure Dynamic
Updates, the message also contains proof why the update should be
trusted (in the form of a digital signature by a key that the
recipient trusts).</t>

<t>In this document the term "Dynamic Update" or "DNS UPDATE" implies
secure dynamic update. Furthermore this document implies that the
signature algorithms are always based on asymmetric crypto keys, using
the same algorithms as are being used for DNSSEC. With an appropriate
choice of algorithm the SIG(0) signature is therefore as
cryptographically strong as a DNSSEC signature. Note that this is a
statement about the signature primitive only: the overall trust model
still differs from DNSSEC, since a SIG(0) key is trusted individually
(via the bootstrap of <xref target="bootstrapping-sig0-public-keys"/>) rather than
through a chain of signatures back to a trust anchor.</t>

<t>DNS UPDATEs can be used to update any information in a zone (subject
to the policy of the recipient). In the special case addressed by this
document, the data being updated is the delegation information for a
child zone and the UPDATE is sent across a zone cut (i.e. the child
sends it to the parent). In this case the UPDATE serves the same
signalling purpose as a generalized NOTIFY, but additionally carries
the exact change and the proof of its authenticity.</t>

<t>The DNS UPDATE in this case is essentially a message that says:</t>

<figure><artwork><![CDATA[
"the delegation information for this child zone has changed; here
is the exact change; here is the proof that the change is
authentic, please verify this signature"
]]></artwork></figure>

</section>
</section>
<section anchor="updating-delegation-information-via-dns-updates"><name>Updating Delegation Information via DNS UPDATEs</name>

<t>Updating delegation information in the parent via DNS UPDATE is not a
new idea; there is prior art, including the expired
<xref target="I-D.andrews-dnsop-update-parent-zones"/>.</t>

<t>This document does not define a new update mechanism. The child's
update to the delegation information is an ordinary DNS UPDATE
<xref target="RFC2136"/>, secured as a SIG(0)-signed transaction <xref target="RFC3007"/>
<xref target="RFC2931"/>; the NS, glue and DS changes it carries, and the way the
UPDATE Receiver processes them, are exactly as specified there. What
this document adds is a way for the parent to announce, via the DSYNC
mechanism <xref target="RFC9859"/>, whether it accepts such updates for a given
child and where they are to be sent, together with the SIG(0) key
management needed to authenticate them across the zone cut.</t>

<t>The functionality to update delegation information in the parent zone
via DNS UPDATE has been available for years in at least one DNS
implementation (BIND9). However, while DNS UPDATE is used extensively
inside organisations it has not seen much use across organisational
boundaries. And zone cuts, almost by definition, usually cut across
such boundaries.</t>

<t>When sending a DNS UPDATE it is necessary to know where to send
it. Inside an organisation this information is usually readily
available. But outside the organisation it is not. And even if the
sender would know where to send the update, it is not at all clear
that the destination is reachable to the sender (the parent primary is
likely to be protected by firewalls and other measures).</t>

<t>This constitutes a problem for using DNS UPDATES across zone cuts.</t>

<t>Another concern is that traditionally DNS UPDATEs are sent to a
primary nameserver, and if the update signature verifies the update is
automatically applied to the DNS zone. This is often not an acceptable
mechanism. The recipient may, for good reason, require additional
policy checks and likely an audit trail. Finally, the change should in
many cases not be applied to the running zone but rather to some sort
of provisioning system or a database.</t>

<t>This creates another problem for using DNS UPDATEs for managing
delegation information.</t>

<t>Both problems are addressed by the target location mechanism defined
in <xref target="RFC9859"/>, described in the next section.</t>

</section>
<section anchor="locating-the-target-for-a-generalized-notify-andor-dns-update"><name>Locating the Target for a generalized NOTIFY and/or DNS UPDATE</name>

<t>Section 3 of <xref target="RFC9859"/> defines a new RR type, DSYNC, that has the
following format:</t>

<figure><artwork><![CDATA[
{qname}   IN  DSYNC  {RRtype} {scheme} {port} {target}
]]></artwork></figure>

<t>where {target} is the domain name of the recipient of the NOTIFY
message. {RRtype} is typically CDS or CSYNC in the case where
delegation information should be updated (there are also other uses of
generalized notifications).</t>

<t>Finally, {scheme} is an 8 bit unsigned integer to indicate the type of
notification mechanism to use. Scheme=1 is defined as "NOTIFY" (and
the presentation format is also "NOTIFY"), as in "send a generalized
NOTIFY to {target} on port {port}".</t>

<t>This document proposes the definition of a new {scheme} for the same
record that is used for generalized NOTIFY. Scheme=TBD is here defined
as "UPDATE", as in "send a DNS UPDATE to {target} on port {port}".
When parsing or presenting DNS zone data the 8 bit unsigned integer
TBD should be replaced by the string "UPDATE", as in the examples
below.</t>

<t>Apart from defining a new scheme to specify the mechanism "UPDATE"
(rather than the mechanism "NOTIFY") this document does not say
anything about what Qname to look up or what RR type. The UPDATE
mechanism should use exactly the same method of locating the target of
the UPDATE as is used for generalized NOTIFY.</t>

<t>This lookup addresses the first issue with using DNS UPDATE across
organizational boundaries.</t>

<t>Example 1: a parent zone announces support for DNS UPDATE as a
mechanism for delegation synchronization for all child zones:</t>

<figure><artwork><![CDATA[
_dsync.parent.  IN DSYNC ANY UPDATE 5302 ddns-receiver.parent. 
]]></artwork></figure>

<t>Example 2: a parent zone announces support for different DNS UPDATE
targets on a per-child basis:</t>

<figure><artwork><![CDATA[
childA._dsync.parent.  IN DSYNC ANY UPDATE 5302 ddns-receiver.registrar1.
childB._dsync.parent.  IN DSYNC ANY UPDATE 5302 ddns-receiver.registrar3.
childC._dsync.parent.  IN DSYNC ANY UPDATE 5302 ddns-receiver.registrar2.
]]></artwork></figure>

<t>The DSYNC RRset is looked up, typically by the child primary name
server or by a separate agent for the child, at the time that the
delegation information for the child zone changes in some way that
would prompt an update in the parent zone. When the {scheme} is
"UPDATE" (the scheme value assigned by IANA in <xref target="iana"/>) the
interpretation is:</t>

<t><spanx style="verb">Send a DNS UPDATE to the IP address for the name {target} on port
{port}, where {target} and {port} are taken from the right-hand side
of the DSYNC record that matches the qname in the DNS query.</spanx></t>

</section>
<section anchor="limitation-of-scope-for-the-proposed-mechanism"><name>Limitation of Scope for the Proposed Mechanism</name>

<t>DNS UPDATE is in wide use all over the world, for all sorts of
purposes. It is not in wide use across organizational boundaries. This
document only addresses the specific case of a child zone that makes a
change in its DNS delegation information that will require an update
of the corresponding information in the parent zone. This includes:</t>

<t><list style="symbols">
  <t>changes to the NS RRset</t>
  <t>changes to glue (if any)</t>
  <t>changes to the DS RRset (if any)</t>
  <t>changes to the KEY RRset (only used for validation of UPDATE
messages)</t>
</list></t>

<t>Only for those specific cases is the described mechanism proposed.</t>

</section>
<section anchor="the-update-receiver"><name>The UPDATE Receiver</name>

<t>While the simplest design is to send the DNS UPDATEs to the primary
name server of the parent it will in most cases be more interesting to
send them to a separate UPDATE Receiver. To separate the primary name
server from the UPDATE Receiver, use a {target} with addresses
separate from the addresses of the primary name server.</t>

<section anchor="processing-the-update"><name>Processing the UPDATE in the UPDATE Receiver</name>

<t>The receiver of the DNS UPDATE messages should implement a suitably 
strict policy for what updates are accepted. Two distinct classes of
update are in scope. The first is updates to the delegation
information itself, where the policy typically allows only changes to
the NS RRset, glue and DS RRset. The second is updates to the child's
KEY RRset used to authenticate these UPDATEs; KEY changes are accepted
only as part of the bootstrap and re-bootstrap procedures described in
<xref target="bootstrapping-sig0-public-keys"/>, and are subject to the additional
validation rules stated there (in particular, a previously trusted key
MUST NOT be removed until the replacement key has been validated). A
single UPDATE used for delegation maintenance is not expected to also
carry KEY changes.</t>

<t>Furthermore, the receiver MUST only allow updates to the delegation
information of a child zone when the UPDATE is signed by a trusted
SIG(0) key whose name is the exact same name as the child zone, unless
the receiver implements an alternative authorization scheme (for
example a registrar-operated key authorized to manage many children).
That is, in the absence of such a scheme, an UPDATE request for the
delegation information for the zone <spanx style="verb">child.parent.</spanx> is only processed
if it is signed by a trusted SIG(0) key with the name <spanx style="verb">child.parent.</spanx>
and the signature verifies correctly. This name-scoping rule is the
primary parent-side authorization control and is discussed further in
<xref target="security-considerations"/>.</t>

<t>Once the DNS UPDATE message has been verified to be correctly signed
by a known and trusted key with the correct name and also adhere to
the update policy it should be subjected to the same set of
correctness tests as a CDS/CSYNC scanner would have performed. For DS
changes these are the acceptance checks defined for CDS/CDNSKEY
processing in <xref target="RFC7344"/> and <xref target="RFC8078"/>; for NS and glue changes
they are the checks defined for CSYNC processing in <xref target="RFC7477"/>. The
parent applies the same policy regardless of whether the change
arrives by scanning or by DNS UPDATE. If these requirements are also
fulfilled the change may be applied to the parent zone in whatever
manner the parent zone is maintained (as a text file, data in a
database, via an API, etc).</t>

</section>
</section>
<section anchor="interpretation-of-the-response-to-the-dns-update"><name>Interpretation of the response to the DNS UPDATE</name>

<t>All DNS transactions are designed as a pair of messages and this is
true also for DNS UPDATE. The interpretation of the different
responses to DNS UPDATE are fully documented in <xref target="RFC2136"/>, section
2.2.</t>

<section anchor="rcode-noerror"><name>RCODE NOERROR</name>

<t>A response with rcode=0 (NOERROR) should be interpreted as a
confirmation that the DNS UPDATE has been received and
accepted, i.e., the change to the parent DNS data should be expected to
be published in the parent zone at some future time.</t>

</section>
<section anchor="rcode-refused"><name>RCODE REFUSED</name>

<t>A response with rcode=5 (REFUSED) should be interpreted as the
receiver declining to process the UPDATE. Because the child only sends
an UPDATE after the parent has announced support for it via
publication of an appropriate target location record, a persistent
REFUSED most likely indicates a parent-side misconfiguration. REFUSED
may, however, also be a transient condition (for example a policy or
rate-limit rejection, see <xref target="security-considerations"/>); a child
SHOULD NOT treat a single REFUSED as a permanent signal to stop, but
MAY do so after repeated REFUSED responses over time.</t>

</section>
<section anchor="rcode-badkey"><name>RCODE BADKEY</name>

<t>A response with rcode=17 (BADKEY) should be interpreted as a
definitive statement that the UPDATE Receiver does not have access
to the public SIG(0) key needed for signature verification, i.e. that
the key is unknown to the receiver. In this case the child should fall
back to bootstrap of the SIG(0) public key into the DNS UPDATE
Receiver, see below.</t>

<t>BADKEY does not distinguish the intermediate states in which the
receiver has the key but has not yet trusted it (for example, a
bootstrap that is in progress, where the child should wait, or one
whose validation has failed, where re-bootstrapping will not help).
Those states are conveyed via the Extended DNS Error codes of
<xref target="communication-in-case-of-errors"/>; a child that receives BADKEY
without such an error treats the key as unknown and (re-)initiates
bootstrap.</t>

</section>
<section anchor="no-response-to-a-dns-update"><name>No response to a DNS UPDATE</name>

<t>The case of no response is more complex, as it is not possible to know
whether the DNS UPDATE actually reached the receiver (or was lost in
transit) or the response was not sent (or lost in transit).</t>

<t>Whether and how to retry depends on the sender's situation. For
example, if the sender of the DNS UPDATE message (perhaps the primary
name server of the child zone) only serves a single child, then
resending the DNS UPDATE once or twice may be worthwhile (to ensure
that the lack of response is not due to packets being lost in
transit). On the other hand, if the sender serves a large number of
child zones below the same parent zone, then it may already know that
the receiver for the DNS UPDATEs is not responding for any of the
child zones, and resending the update immediately is likely pointless.</t>

<t>A sender that retries SHOULD wait at least 5 seconds before treating
the absence of a response as a timeout, SHOULD apply exponential
backoff between successive retries (e.g. doubling the interval each
time), and SHOULD give up after no more than 5 retries for a given
UPDATE. A sender MAY deviate from these defaults based on local
knowledge, such as the per-receiver observations described above.</t>

</section>
</section>
<section anchor="management-of-sig0-public-keys"><name>Management of SIG(0) Public Keys</name>

<t>Only the child should have access to the SIG(0) private key. The
corresponding SIG(0) public key should preferably be published in DNS,
but it doesn't have to be. The SIG(0) public key only needs to be
available to the parent UPDATE Receiver. Keeping all the public
SIG(0) keys for different child zones in some sort of database is
perfectly fine.</t>

<section anchor="choice-of-sig0-signature-algorithm"><name>Choice of SIG(0) Signature Algorithm</name>

<t>The child's SIG(0) public key is, in the common case, discoverable
in DNS: either at the child apex, or at the
<spanx style="verb">_sig0key.{child}._signal.{nameserver}.</spanx> name in the nameserver's
zone, or via multi-query convergence against the child KEY RRset.
In each case the public key is recoverable by any party that can
issue DNS queries. An adversary capable of breaking the signature
algorithm of the SIG(0) key from the public key alone can therefore
forge DNS UPDATEs to the parent UPDATE Receiver and substitute
arbitrary delegation information. The integrity of the entire
mechanism rests on the SIG(0) key remaining unforgeable for the
operational lifetime of the delegation.</t>

<t>The DNS UPDATEs described in this document are infrequent and SHOULD
be carried over TCP (or a connection-oriented secure transport such
as DoT); this avoids the spoofing and fragmentation exposure of UDP
for a message that mutates parent-side state, and accommodates the
larger SIG(0) signatures discussed below. Unlike DNSSEC validation
traffic, which is
size-sensitive because of the per-query UDP path, this path imposes
no significant wire-size constraint on the SIG(0) signature. The
larger public keys and signatures of post-quantum algorithms will
therefore not be a deployment obstacle for SIG(0) on the DDNS UPDATE
path even though they would be a serious obstacle on most ordinary
DNSSEC paths. As post-quantum signature algorithms such as ML-DSA
<xref target="FIPS204"/> and SLH-DSA <xref target="FIPS205"/> become standardized for
DNSSEC use and are supported by parent UPDATE Receivers, child
operators are encouraged to adopt them for the SIG(0) key on this
path: there is no operational reason to prefer a classical
algorithm here.</t>

<t>The experimental algorithm code-point range proposed in
<xref target="I-D.johani-dnsop-dnssec-alg-experimental-range"/> provides one
path by which a PQ-safe algorithm can be used on this path before
full IETF standardization completes.</t>

</section>
<section anchor="communication-between-child-and-parent-update-receiver"><name>Communication Between Child and Parent UPDATE Receiver</name>

<t>There are two cases where communication between child and parent
UPDATE Receiver would benefit greatly from some additional
information. The bootstrap states named in the subsections below
are defined in <xref target="bootstrapping-sig0-public-keys"/>.</t>

<section anchor="communication-in-case-of-errors"><name>Communication in Case of Errors</name>

<t>An error response from the parent UPDATE Receiver is improved by
more detail provided via Extended DNS Errors <xref target="RFC8914"/>. When the
child's key is known to the receiver but the UPDATE cannot yet be
applied because the key is not (or no longer) trusted, the receiver
returns RCODE REFUSED carrying one of the Extended DNS Error codes
below; this is distinct from BADKEY, which indicates that the key is
unknown (<xref target="rcode-badkey"/>). To that end this document defines three
new Extended DNS Error codes (see <xref target="iana"/>), expressing the following
bootstrap "states":</t>

<t><list style="symbols">
  <t>"SIG(0) key is known, but not yet trusted": indicating that
bootstrap of the key is not yet complete. Waiting may resolve the
issue.</t>
  <t>"SIG(0) key is known, but validation failed": indicating that
bootstrap has failed and waiting will not resolve the issue.</t>
  <t>"Automatic bootstrap of SIG(0) keys not supported; manual bootstrap
required": indicating that while the parent does support delegation
synchronization via DNS UPDATE, it only supports manual
bootstrap. Note that the child should normally discover this via the
SVCB <spanx style="verb">bootstrap</spanx> SvcParamKey before attempting automatic bootstrap;
this error serves as a fallback for cases where that discovery was
not performed or the SVCB record was not available.</t>
</list></t>

<t>These Extended DNS Error codes are the always-available baseline
channel for conveying key-state detail in error responses. A richer,
optional channel - able to carry inquiries and key identifiers for
automated processing - is provided by the KeyState OPT of
<xref target="I-D.berra-dnsop-keystate"/>, described in <xref target="communication-to-inquire-state"/>.</t>

</section>
<section anchor="communication-to-inquire-state"><name>Communication To Inquire State</name>

<t>Extended DNS Errors <xref target="RFC8914"/> provides an excellent mechanism
for adding more detail to error responses. However it is,
intentionally, limited to:</t>

<t><list style="symbols">
  <t>returning extra information from the receiver to the original
sender. It is not possible to "send" information, only "return"
information.</t>
  <t>no information except the actual error code is meant for automatic
processing. It is therefore not possible to communicate things like,
e.g. a KeyId via Extended DNS Errors.</t>
</list></t>

<t>The communication between child and parent would benefit from the
addition of the ability to also send inquiries to the parent. For
example, the child should be able to inquire about key state: "I
operate under the assumption that the key {key} is known and trusted
by you (the parent). Is this correct?"</t>

<t><xref target="I-D.berra-dnsop-keystate"/> is proposed as a mechanism to improve
the communication between child and parent, both in the error case and
in the inquiry case. If that draft is supported then the above
example would travel as "KeyState codes" in a KeyState OPT as
specified in <xref target="I-D.berra-dnsop-keystate"/>.</t>

</section>
</section>
<section anchor="mutual-authentication"><name>Mutual Authentication</name>

<t>For the KeyState communication described above to be trustworthy, the
child must be able to verify that responses from the UPDATE Receiver
are authentic. Otherwise an adversary could potentially cause
disruption by sending forged responses, e.g. falsely claiming that
the child's key is unknown and triggering an unnecessary re-bootstrap.</t>

<t>For this reason the UPDATE Receiver SHOULD also maintain a SIG(0) key
pair and use its private key to sign responses to the child. This
enables mutual authentication: the child authenticates to the parent
via its SIG(0) signature on the UPDATE, and the parent authenticates
to the child via its SIG(0) signature on the response. When the child
makes key-state inquiries (for example via the KeyState mechanism of
<xref target="I-D.berra-dnsop-keystate"/>), the UPDATE Receiver MUST sign its
responses, since an unsigned response to such an inquiry is exactly
the forged-response vector described above.</t>

<t>Mutual authentication depends on the child being able to validate the
UPDATE Receiver's key (see
<xref target="acquiring-and-validating-the-update-receivers-key"/>). In the common
case the parent zone is DNSSEC-signed and this validation is
automatic. When the parent zone is unsigned, the child can only obtain
the Receiver's key via manual bootstrap; absent that, mutual
authentication is unavailable, and responses cannot be authenticated -
leaving the forged-response disruption above as a residual risk that
the operator accepts.</t>

<t>The bootstrap problem therefore arises in both directions: the parent
needs to acquire and trust the child's SIG(0) public key, and the
child needs to acquire and trust the UPDATE Receiver's SIG(0) public
key. <xref target="bootstrapping-sig0-public-keys"/> covers both halves.</t>

</section>
<section anchor="bootstrapping-sig0-public-keys"><name>Bootstrapping SIG(0) Public Keys</name>

<t>This section has two parts. The first describes how the parent
UPDATE Receiver acquires and trusts the child's SIG(0) public key.
The second describes how the child acquires and trusts the UPDATE
Receiver's SIG(0) public key. Both halves use the same underlying
DNS-based discovery and DNSSEC-validation pattern, applied to the
two parties in turn.</t>

<section anchor="bootstrapping-the-childs-key-into-the-update-receiver"><name>Bootstrapping the Child's Key Into the UPDATE Receiver</name>

<t>Bootstrap of the child public SIG(0) key to be trusted by the UPDATE
Receiver may be done either manually or automatically. Manually
may in various cases be the preferred method, especially in the case
of non-registry parents with a small number of child delegations.</t>

<t>If the UPDATE Receiver only supports manual bootstrap, then that is
what will happen (apart from informing the child about this policy).
The set of bootstrap methods a parent supports is not negotiated by
the child; it is advertised by the parent through the <spanx style="verb">bootstrap</spanx>
SvcParamKey (<xref target="svcparamkey-bootstrap"/>). A child that requires manual
bootstrap therefore selects a parent (or an UPDATE Receiver) that
advertises <spanx style="verb">manual</spanx>, or arranges it out of band.</t>

<t>In those cases there is by definition some mechanism in place to
communicate information from the child to the parent, be it email, a
web form, pieces of paper or something else. The same mechanism can be
extended to also be used to communicate the initial SIG(0) public key
from the child to the parent.</t>

<t>Regardless of whether manual bootstrap or automatic bootstrap is to be
used (subject to the UPDATE Receiver policy), the bootstrap must be
initiated. This is done by the child issuing a self-signed DNS UPDATE
to the parent containing:</t>

<figure><artwork><![CDATA[
DEL child.parent. {ttl} ANY KEY 
ADD child.parent. {ttl} IN  KEY ... 
]]></artwork></figure>

<t>The first record is an instruction to delete any previous keys for 
this child (CLASS=ANY in a DNS UPDATE is a request to delete an entire
RRset). The second is an instruction to add the new key.</t>

<t>When receiving such a message (where the self-signature validates) the
parent UPDATE Receiver SHOULD mark that key as "known" (but not yet
trusted) and then either put that key into a queue for later look up
and validation of the corresponding KEY record (if supporting
automatic bootstrap) or put that key into a queue for subsequent
manual validation and verification.</t>

<t>A self-signature is made by the very key being added, so its
validation proves only that the sender possesses the corresponding
private key; it does not, by itself, prove that the sender is
authorized to manage the child's delegation. That authorization is
established only by the subsequent validation step (DNSSEC validation
of the published KEY, or manual verification) before the key is
promoted to "trusted". For this reason the receiver MUST NOT act on
the <spanx style="verb">DEL ... ANY KEY</spanx> instruction in a bootstrap UPDATE to remove an
already-trusted key until the newly added key has been validated (see
<xref target="re-bootstrapping-in-case-of-errors"/>).</t>

<t>Automated bootstrapping is also possible, subject to the policy of the
UPDATE Receiver. The basic idea is to publish the public SIG(0) key as
a KEY record either at the child apex or at a special name below the
name of an authoritative nameserver for the zone located in a DNSSEC-
signed zone. This publication must occur prior to the initial key
upload. Then the UPDATE Receiver (or an agent) may look that KEY up
for subsequent validation. The following three subsections describe
the three automatic bootstrap methods this document defines, one per
case of child-zone signing status.</t>

<section anchor="when-child-zone-is-dnssec-signed"><name>When Child Zone Is DNSSEC-signed</name>

<t>If the child zone is DNSSEC-signed (including a signed delegation via
a DS record), then the KEY record containing the SIG(0) public key
located at the zone apex can be looked up and validated by the DNS
UPDATE Receiver.</t>

<figure><artwork><![CDATA[
child.parent. IN KEY ...
child.parent. IN RRSIG KEY ...
]]></artwork></figure>

<t>In case of validation success the key SHOULD be promoted to "trusted"
by the UPDATE Receiver. At this point any superseded keys SHOULD be
deleted (note that this is the validation-success path; on the
re-bootstrap path a previously trusted key MUST NOT be deleted until
the replacement key has been validated, see
<xref target="re-bootstrapping-in-case-of-errors"/>).</t>

<t>In case of validation failure (or absence of a DNSSEC signature) the
SIG(0) SHOULD NOT be promoted to the set of keys that the UPDATE
Receiver trusts and any old keys MUST be kept.</t>

</section>
<section anchor="when-child-nameserver-is-in-a-dnssec-signed-zone"><name>When Child Nameserver Is In A DNSSEC-signed Zone</name>

<t>If the child zone is unsigned but at least one of the authoritative
nameservers for the zone is located in a DNSSEC-signed zone (including
a signed delegation via a DS record), then the KEY record containing
the SIG(0) public key can be looked up and validated by the DNS UPDATE
Receiver.</t>

<t>Example: assume that the unsigned child zone <spanx style="verb">child.parent.</spanx> has
two nameservers:</t>

<figure><artwork><![CDATA[
child.parent.  IN NS ns.child.parent.
child.parent.  IN NS ns.provider.example.
]]></artwork></figure>

<t>ns.child.parent. is located in the unsigned zone child.parent.
and a KEY record located under that name can not be DNSSEC-validated.
ns.provider.example. on the other hand is located in a DNSSEC signed
zone.  In this case the KEY record containing the public SIG(0) key
for child.parent.  may be located at the special label
<spanx style="verb">_sig0key.{child}._signal.{nameserver}</spanx>:</t>

<figure><artwork><![CDATA[
_sig0key.child.parent._signal.ns.provider.example. IN KEY ...
_sig0key.child.parent._signal.ns.provider.example. IN RRSIG KEY ...
]]></artwork></figure>

<t>The underscored globally scoped label <spanx style="verb">_signal</spanx> in this name pattern
is the one registered by <xref target="RFC9615"/> for DNSSEC bootstrap (see
<xref target="iana"/>). The leading <spanx style="verb">_sig0key</spanx> label is introduced by this
document to distinguish the SIG(0) bootstrap use case from the
CDS/CDNSKEY use case defined in <xref target="RFC9615"/>.</t>

<t>In case of validation success the key SHOULD be promoted to "trusted"
by the UPDATE Receiver. At this point any superseded keys SHOULD be
deleted (note that this is the validation-success path; on the
re-bootstrap path a previously trusted key MUST NOT be deleted until
the replacement key has been validated, see
<xref target="re-bootstrapping-in-case-of-errors"/>).</t>

<t>In case of validation failure (or absence of a DNSSEC signature) the
SIG(0) SHOULD NOT be promoted to the set of keys that the UPDATE
Receiver trusts and any old keys MUST be kept.</t>

<t>This bootstrap mechanism is identical to the method used for DNSSEC
bootstrap as described in <xref target="RFC9615"/>. As the proof of the SIG(0) key
being authentic is based on a clear DNSSEC signature chain this method
is as secure as if the child zone had been signed.</t>

<t><strong>Operator coordination via HSYNCPARAM.</strong>
The KEY record at <spanx style="verb">_sig0key.{child}._signal.{nameserver}.</spanx> must be
published by the operator of the nameserver's zone, not by the
operator of the child zone. The child operator therefore needs a
mechanism to instruct each of the child's nameserver operators
that they should publish the KEY record under the appropriate
<spanx style="verb">_sig0key.{child}._signal.{their-ns-name}.</spanx> name within their own
zone.</t>

<t>This document recommends, but does not require, that this
instruction be conveyed via the <spanx style="verb">pubkey</spanx> key of the HSYNCPARAM
record defined in <xref target="I-D.leon-dnsop-signaling-zone-owner-intent"/>.
HSYNCPARAM is published in the child zone, and the providers of
the child zone are authoritative for that zone and can therefore
observe HSYNCPARAM directly. The <spanx style="verb">pubkey</spanx> signal expresses the
child operator's intent that each provider SHOULD publish the
child's SIG(0) KEY at <spanx style="verb">_sig0key.{child}._signal.{their-ns-name}.</spanx>
in their own zone.</t>

<t>The mechanics of how each provider acts on this signal
(operational coordination, provisioning APIs, internal handoffs,
etc.) are out of scope for this document.</t>

</section>
<section anchor="when-child-zone-is-unsigned"><name>When Child Zone Is Unsigned</name>

<t>Hence, to bootstrap the public SIG(0) key for a child zone it is
possible for the parent to use a "bootstrap policy" a la:</t>

<t><list style="symbols">
  <t>Look up the KEY RRset in the child zone. Compare to the child KEY
received in the self-signed DNS UPDATE.</t>
  <t>To mitigate a possible on-path attacker, do the look up of the child
KEY RRset, using TCP transport, from multiple vantage points, at
multiple times. The child KEY RRset must be consistent over time and
space.</t>
  <t>Make on-path attacks even more difficult by adding a requirement to,
in addition to TCP, also use a more secure transport, like DoT, DoH
or DoQ once those become more generally available for DNS queries to
authoritative servers. The child KEY RRset must be consistent over
all tested transports.</t>
  <t>If the received KEY RRset is consistent from multiple vantage points
and multiple times then it is considered authentic and promoted by
the parent's UPDATE Receiver from "known" to "trusted" SIG(0) key
for the child. At this point any superseded SIG(0) public keys for
the child SHOULD be deleted (on the validation-success path; see the
MUST NOT-delete-until-validated rule for re-bootstrap in
<xref target="re-bootstrapping-in-case-of-errors"/>).</t>
</list></t>

<t>Should a "registry" parent want to support this mechanism (as a
service to its unsigned children) then a likely model is that the
target of the DNS UPDATE is operated by the registrar (or possibly
that the DNS UPDATE is forwarded to the registrar). The registrar
performs its normal verifications of a change and then transforms the
update into an EPP <xref target="RFC5730"/> transaction to communicate it to the
registry.</t>

<t>This bootstrap mechanism for the case of an unsigned child reuses the
"acceptance" method standardized in <xref target="RFC8078"/> for automatic DNSSEC
bootstrapping via CDS, which multiple TLD registries provide today.
Its security properties and limitations are therefore those of
<xref target="RFC8078"/>, not new ones introduced here: it does not provide the
provable authenticity of the two DNSSEC-validated methods above, and
its strength against on-path attackers increases with the number and
diversity of vantage points and transports used, but it cannot exceed
the authenticity of the child's own authoritative servers.</t>

<t>In particular, this method authenticates the current operator of the
child's delegation, not the registrant: an attacker who controls (or
is on-path to all of) the child's authoritative name servers can
present a chosen KEY. That exposure, however, is not introduced by
this mechanism - such an attacker can already manipulate the child
zone regardless. The remedies (using reputable providers, and signing
the child zone, which enables the stronger at-apex and at-ns methods)
are out of scope for this document. For these reasons this is the
weakest of the defined bootstrap methods; a parent advertises whether
it supports it via the <spanx style="verb">unsigned</spanx> token of the <spanx style="verb">bootstrap</spanx>
SvcParamKey (<xref target="svcparamkey-bootstrap"/>).</t>

</section>
</section>
<section anchor="bootstrapping-the-update-receivers-key-into-the-child"><name>Bootstrapping the UPDATE Receiver's Key Into the Child</name>

<section anchor="publishing-the-update-receivers-key"><name>Publishing the UPDATE Receiver's Key</name>

<t>The UPDATE Receiver SHOULD publish its public SIG(0) key as a KEY
record at the domain name that is the {target} of the DSYNC record.
Example:</t>

<figure><artwork><![CDATA[
_dsync.parent.example.      IN DSYNC ANY UPDATE 5302 updater.parent.example.
updater.parent.example.     IN KEY ...
]]></artwork></figure>

</section>
<section anchor="acquiring-and-validating-the-update-receivers-key"><name>Acquiring and Validating the UPDATE Receiver's Key</name>

<t>The child needs to acquire and validate the UPDATE Receiver's public
SIG(0) key before it can verify signed responses. Two methods are
defined:</t>

<t><list style="symbols">
  <t>If the KEY record for the UPDATE Receiver is located in a
DNSSEC-signed zone (which is expected in the common case where
the parent zone is DNSSEC-signed), the child looks up the KEY
record and performs standard DNSSEC validation. On validation
success the key is trusted.</t>
  <t>If the KEY record is not in a DNSSEC-signed zone, manual
bootstrap is required. The same out-of-band mechanisms available
for bootstrapping the child key (email, web form, etc.) may be
used in reverse.</t>
</list></t>

</section>
</section>
</section>
<section anchor="publishing-supported-bootstrap-methods"><name>Publishing Supported Bootstrap Methods</name>

<t>As there are multiple possible methods to bootstrap the initial SIG(0)
public key to become trusted by the parent it becomes important for
child zone operators to be able to find out which method to use.</t>

<t>For this purpose, a parent that operates an UPDATE Receiver MAY
publish an SVCB record <xref target="RFC9460"/> at the {target} of the DSYNC
record, announcing the capabilities of that UPDATE Receiver. This
re-uses the SVCB-at-DSYNC-target convention introduced by
<xref target="I-D.berra-dnsop-announce-scanner"/> (where it announces CDS and
CSYNC scanner capabilities). The relevant capability for the UPDATE
Receiver is the set of supported bootstrap methods, carried in the
<spanx style="verb">bootstrap</spanx> SvcParamKey defined below; this document describes that
use in full, so it does not depend on
<xref target="I-D.berra-dnsop-announce-scanner"/> for interoperability.</t>

<section anchor="svcparamkey-bootstrap"><name>SvcParamKey <spanx style="verb">bootstrap</spanx></name>

<t>The <spanx style="verb">bootstrap</spanx> SvcParamKey in the SVCB record is used to signal what
mechanisms are supported for bootstrapping the trust of the child's public
SIG(0) key to the UPDATE Receiver. Four mechanisms are currently identified:</t>

<t><list style="symbols">
  <t><spanx style="verb">at-apex</spanx>: This is an indication that the UPDATE Receiver supports
           automatic bootstrap of the SIG(0) public key for signed
           child zones by the child publishing the DNSSEC-signed
           KEY record at the child zone apex.  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
child.parent.  IN KEY ... 
child.parent.  IN RRSIG KEY ... 
]]></artwork></figure>
  <vspace blankLines='1'/>
See <xref target="when-child-zone-is-dnssec-signed"/>.</t>
  <t><spanx style="verb">at-ns</spanx>:   This is an indication that the UPDATE Receiver supports
           automatic bootstrap of the SIG(0) public key by publishing
           the KEY record both at the child zone apex AND at the
           special name <spanx style="verb">_sig0key.{child}._signal.{nameserver}.</spanx>
           below the name of an authoritative nameserver located in a
           signed zone. The apex KEY is published so that the
           nameserver operators can re-publish it under the special
           name, where it is DNSSEC-signed and can be validated. This
           mechanism is similar to what is described in <xref target="RFC9615"/>
           for CDS bootstrap:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
child.parent.     IN NS ns.provider.com.
child.parent.     IN KEY ... 
_sig0key.{child}._signal.ns.provider.com.  IN KEY ... 
_sig0key.{child}._signal.ns.provider.com.  IN RRSIG KEY ... 
]]></artwork></figure>
  <vspace blankLines='1'/>
See <xref target="when-child-nameserver-is-in-a-dnssec-signed-zone"/>.</t>
  <t><spanx style="verb">unsigned</spanx>: This method is similar to what <xref target="RFC8078"/> describes
            for CDS bootstrapping.  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
child.parent.     IN KEY ... 
]]></artwork></figure>
  <vspace blankLines='1'/>
See <xref target="when-child-zone-is-unsigned"/>.</t>
  <t><spanx style="verb">manual</spanx>:  This is an indication that the UPDATE Receiver supports some other
           mechanism for bootstrap of the SIG(0) public key.</t>
</list></t>

<t>The value of the <spanx style="verb">bootstrap</spanx> key is a string with one or more of the supported
mechanisms, separated by <spanx style="verb">,</spanx>. The mechanisms may occur in arbitrary order.</t>

<t>New mechanisms are likely to be defined in the future.</t>

</section>
<section anchor="complete-example"><name>Complete Example</name>

<t>Example for a parent that operates an UPDATE Receiver that only
supports the secure automatic bootstrap methods <spanx style="verb">at-apex</spanx> and
<spanx style="verb">at-ns</spanx>. Otherwise <spanx style="verb">manual</spanx> bootstrap is needed.</t>

<figure><artwork><![CDATA[
_dsync.parent.example.   IN  DSYNC ANY UPDATE 5302 updater.parent.example.
updater.parent.example.  IN  SVCB 0 . (bootstrap="at-apex,at-ns,manual")
]]></artwork></figure>

<t>That is, this UPDATE Receiver does not support the <spanx style="verb">unsigned</spanx> method based
on <xref target="RFC8078"/>.</t>

</section>
</section>
<section anchor="rolling-the-sig0-key"><name>Rolling the SIG(0) Key</name>

<t>Once the parent (or registrar) UPDATE Receiver has the key, the
child can update it via a DNS UPDATE just like updating the NS RRset,
the DS RRset or the glue in the parent zone (assuming a suitable DNS
UPDATE policy in the parent), i.e., only the initial bootstrapping of
the key is an issue.</t>

<t>Note, however, that the alternative of re-bootstrapping (by whatever
bootstrapping mechanism was used) in case of a key compromise may be a
better alternative to the parent supporting key rollover for child
SIG(0) keys. The decision of whether to allow SIG(0) key rollover via
DNS UPDATE is left as parent-side policy.</t>

</section>
<section anchor="re-bootstrapping-in-case-of-errors"><name>Re-bootstrapping In Case of Errors</name>

<t>Sometimes things get out of sync in spite of all efforts. It could be
an operator error in the parent end losing the child public key or it
could be an error in the child end losing the private key. Another
possibility could be a key rollover that for some reason didn't sync
correctly.</t>

<t>If <xref target="I-D.berra-dnsop-keystate"/> is supported then the child can
inquire with the UPDATE Receiver about the KeyState of the SIG(0) key
it would use in an UPDATE request.</t>

<t>In all such cases, as soon as the child becomes aware of the problem
it should simply re-bootstrap by the same mechanism as used
initially. The self-signed DNS UPDATE that starts the bootstrapping
process contains the instruction</t>

<figure><artwork><![CDATA[
DEL child.parent. {ttl} ANY KEY
]]></artwork></figure>

<t>which directs the parent UPDATE Receiver to delete any SIG(0) public
keys for this child (and after that to start the process of validating
the new key).</t>

<t>Note that when receiving such a self-signed DNS UPDATE the parent MUST
NOT delete any old keys until the new key has been validated and
therefore promoted to "trusted". This is needed and important to avoid
the potential attack vector of an adversary causing a parent to
invalidate the child key by just sending a self-signed bootstrap
UPDATE (which will not validate, but if the old key is deleted then
the harm would already be done).</t>

</section>
</section>
<section anchor="scalability-considerations"><name>Scalability Considerations</name>

<t>The primary existing mechanism for automatic synchronization of DNS
delegation information is based on parent-side "scanning" of the child
zones for CDS and/or CSYNC RRsets, performing DNSSEC validation on the
result and then, in the CSYNC case, based on the result, issue and
validate a potentially large number of additional DNS queries, all of
which must be DNSSEC validated. This makes a CDS/CSYNC scanner for a
parent with a significant number of delegations a complex and resource
consuming service. Among the issues are rate-limiting by large DNS
operators and inherent difficulties in issuing millions of recursive
DNS queries where all received data must be validated.</t>

<t>By comparison, the DNS UPDATE based mechanism for automatic
synchronization shifts most of the effort to the child side. It is the
child that is responsible for detecting the need to update the
delegation information in the parent zone (which makes sense as it is
the child that has made a change and therefore, in many cases, already
"knows"). It is the child rather than the parent that computes what
records should be added or removed. All of this is good for
scalability.</t>

<t>Furthermore, the information collection and validation effort for the
UPDATE Receiver is restricted to validation of a single DNS message,
using a SIG(0) key that the UPDATE Receiver already has.</t>

<t>Hence, as the data collection and validation is much simplified the
task of the UPDATE Receiver is mostly focused on the policy issues of
whether to approve the UPDATE or not (i.e. the same process that a CDS
and/or CSYNC scanner follows).</t>

<t>Note that this is a shift of complexity, not an elimination of it.
The receiver-side policy checks, audit trail, and integration with
the parent's provisioning system are still required, just as they
would be for a scanner-based mechanism. The principal scalability
gain is the avoidance of the scanning round-trip latency: the parent
no longer needs to poll every child zone on a fixed cadence in order
to detect a change, because the child updates the parent at the
moment the change happens.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>Any fully automatic mechanism to update the contents of a DNS zone
opens up a potential vulnerability should the mechanism not be
implemented correctly.</t>

<t>In this case the definition of "correct" is a question for the
receiver of the DNS UPDATE. The receiver should verify the
authenticity of the DNS UPDATE and then do the same checks and
verifications as a CDS or CSYNC scanner does. The difference from the
scanner is only in the validation: single SIG(0) signature by a key
that the UPDATE Receiver trusts vs DNSSEC signatures that chain back
to a DNSSEC trust anchor that the validator trusts.</t>

<t>Another issue of concern is whether a parent-side service that
provides support for changes to child delegation information via DNS
UPDATE is open for potential denial-of-service attacks. The answer is
likely no, as it is possible to have a very strict rate-limiting
policy based on the observation that no child zone should have a
legitimate need to change its delegation information frequently.</t>

<t>Furthermore, as the location of the UPDATE Receiver can be separated
from any parent name server even in the worst case the only service
that can be subject to an attack is the UPDATE Receiver itself, which
is a service that previously did not exist.</t>

<section anchor="authorization-scoping"><name>Authorization Scoping</name>

<t>The most important parent-side authorization control is the name-
scoping rule of <xref target="processing-the-update"/>, which requires an UPDATE to
the delegation information of <spanx style="verb">child.parent.</spanx> to be signed by a
trusted SIG(0) key named <spanx style="verb">child.parent.</spanx>. This binds the authority to
change a child's delegation to possession of a key bootstrapped
specifically for that child, and prevents one child (or one
compromised key) from altering the delegation of another. The rule
permits an alternative authorization scheme (for example a
registrar-operated key authorized to manage many children); a receiver
that uses one takes on the corresponding responsibility for
authorizing each change by other means.</t>

</section>
<section anchor="sig0-key-bootstrap"><name>SIG(0) Key Bootstrap</name>

<t>The trust the UPDATE Receiver places in a child's SIG(0) key is only
as strong as the bootstrap method used to acquire it. The at-apex and
at-ns methods derive trust from a DNSSEC signature chain and are as
strong as DNSSEC. The <spanx style="verb">unsigned</spanx> method (see
<xref target="when-child-zone-is-unsigned"/>) reuses the <xref target="RFC8078"/> acceptance
method and authenticates only the current operator of the child's
authoritative servers, not the registrant; it is the weakest method
and cannot defend against an attacker who controls those servers
(an exposure that exists independently of this mechanism).</t>

<t>A receiver discovers which bootstrap methods a child can use, and a
child discovers which methods a parent supports, via the <spanx style="verb">bootstrap</spanx>
SvcParamKey (<xref target="svcparamkey-bootstrap"/>). Because that SVCB record is
published in the parent's zone, an attacker able to forge it could
attempt a downgrade - steering a child toward the weaker <spanx style="verb">unsigned</spanx>
method. A parent that supports DNSSEC SHOULD sign the SVCB record so
that children can detect such tampering; a child SHOULD prefer the
strongest method the parent advertises that it can satisfy.</t>

<t>During (re-)bootstrap the receiver MUST NOT delete a previously
trusted key until a newly presented key has been validated (see
<xref target="re-bootstrapping-in-case-of-errors"/>). This prevents an attacker
from using a forged or self-signed bootstrap UPDATE to evict a good
key and substitute its own.</t>

</section>
<section anchor="authenticating-responses"><name>Authenticating Responses</name>

<t>Responses from the UPDATE Receiver are authenticated only when the
receiver signs them with its own SIG(0) key and the child has
validated that key (see <xref target="mutual-authentication"/>). When the parent
zone is unsigned and no manual receiver-key bootstrap has been
performed, responses cannot be authenticated, and an attacker able to
inject responses could, for example, falsely report a key as unknown
and trigger unnecessary re-bootstrap. This is a denial/disruption
risk rather than an integrity risk: it cannot cause an unauthorized
delegation change. Whether to act on unauthenticated responses when
receiver-key trust cannot be established is subject to local policy.</t>

</section>
<section anchor="replay"><name>Replay</name>

<t>A DNS UPDATE in this mechanism is protected by its SIG(0) signature,
whose validity is bounded by the inception and expiration times of
the signature <xref target="RFC2931"/>. Receivers MUST reject UPDATEs whose
signature time is outside an acceptable window, and the window
SHOULD be kept small, to limit the value of a captured UPDATE to an
attacker.</t>

</section>
</section>
<section anchor="iana"><name>IANA Considerations</name>

<t>IANA is requested to assign a new scheme value to the registry for
"DSYNC Location of Synchronization Endpoints" as follows:</t>

<dl>
  <dt>Reference</dt>
  <dd>
    <t>(this document)</t>
  </dd>
</dl>

<texttable>
      <ttcol align='left'>RRtype</ttcol>
      <ttcol align='left'>Scheme</ttcol>
      <ttcol align='left'>Purpose</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>ANY</c>
      <c>TBD</c>
      <c>Delegation management</c>
      <c>(this document)</c>
</texttable>

<section anchor="underscored-node-name"><name>Underscored Node Name</name>

<t>IANA is requested to add the following entry to the
"Underscored and Globally Scoped DNS Node Names" registry
<xref target="RFC8552"/>, alongside the entries added by <xref target="RFC9615"/>:</t>

<texttable>
      <ttcol align='left'>RR Type</ttcol>
      <ttcol align='left'>_NODE NAME</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>KEY</c>
      <c>_signal</c>
      <c>(this document)</c>
</texttable>

<t><xref target="RFC9615"/> registered the <spanx style="verb">_signal</spanx> global underscored label for
the CDS and CDNSKEY RR types; this document adds an entry for the KEY
RR type at the same global label, for SIG(0) key bootstrap. See
<xref target="when-child-nameserver-is-in-a-dnssec-signed-zone"/> for the name
pattern in which this label is used. The subordinate label <spanx style="verb">_sig0key</spanx>
introduced by this document
(in <spanx style="verb">_sig0key.{child}._signal.{nameserver}.</spanx>) is not separately
registered: per <xref target="RFC8552"/>, only the global underscored node name
(<spanx style="verb">_signal</spanx>) is registered, and labels subordinate to it are the
responsibility of the specification that uses the global label.</t>

</section>
<section anchor="svcb-svcparamkey-bootstrap"><name>SVCB SvcParamKey <spanx style="verb">bootstrap</spanx></name>

<t>IANA is requested to register a new SvcParamKey in the "Service
Binding (SVCB) Parameter Registry" (per Section 14.3.2 of
<xref target="RFC9460"/>):</t>

<texttable>
      <ttcol align='left'>Number</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>TBD</c>
      <c>bootstrap</c>
      <c>SIG(0) key bootstrap methods supported</c>
      <c>(this document)</c>
</texttable>

<t>The format and use of this SvcParamKey are defined in
<xref target="svcparamkey-bootstrap"/>. Its value is a comma-separated list of
tokens from the "DSYNC SIG(0) Bootstrap Mechanisms" registry below.</t>

</section>
<section anchor="dsync-sig0-bootstrap-mechanisms-registry"><name>DSYNC SIG(0) Bootstrap Mechanisms Registry</name>

<t>IANA is requested to create a new registry, "DSYNC SIG(0) Bootstrap
Mechanisms", to hold the tokens that may appear in the value of the
<spanx style="verb">bootstrap</spanx> SvcParamKey. The registration policy is Specification
Required (<xref target="RFC8126"/>). Each entry has a token (a short
case-sensitive string), a brief description, and a reference. The
initial contents are:</t>

<texttable>
      <ttcol align='left'>Token</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>at-apex</c>
      <c>KEY published, DNSSEC-signed, at the child zone apex</c>
      <c>(this document)</c>
      <c>at-ns</c>
      <c>KEY published under <spanx style="verb">_sig0key.{child}._signal.{nameserver}</spanx> in a signed nameserver zone</c>
      <c>(this document)</c>
      <c>unsigned</c>
      <c>RFC 8078-style multiple-vantage-point acceptance</c>
      <c>(this document)</c>
      <c>manual</c>
      <c>Out-of-band / manual bootstrap</c>
      <c>(this document)</c>
</texttable>

</section>
<section anchor="extended-dns-error-codes"><name>Extended DNS Error Codes</name>

<t>IANA is requested to register three new Extended DNS Error codes in
the "Extended DNS Error Codes" registry <xref target="RFC8914"/>:</t>

<texttable>
      <ttcol align='left'>INFO-CODE</ttcol>
      <ttcol align='left'>Mnemonic</ttcol>
      <ttcol align='left'>Purpose</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>TBD</c>
      <c>KEY-KNOWN-NOT-TRUSTED</c>
      <c>SIG(0) key known but not yet trusted</c>
      <c>(this document)</c>
      <c>TBD</c>
      <c>KEY-VALIDATION-FAILED</c>
      <c>SIG(0) key known but validation failed</c>
      <c>(this document)</c>
      <c>TBD</c>
      <c>MANUAL-BOOTSTRAP-REQUIRED</c>
      <c>Automatic SIG(0) bootstrap not supported; manual bootstrap required</c>
      <c>(this document)</c>
</texttable>

<t>The meaning and intended use of these codes are described in
<xref target="communication-in-case-of-errors"/>.</t>

</section>
</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t><list style="symbols">
  <t>Peter Thomassen and I together came up with the location mechanism
for the generalized notifications, which this draft relies upon.</t>
  <t>Mark Andrews provided the initial inspiration for writing some code
to experiment with the combination of the location mechanism from
the generalised notifications with DNS UPDATEs across zone cuts.</t>
  <t>Stefan Ubbink helped me realize the need to also cater for the case
of re-bootstrapping if or when things got out of sync for some
reason.</t>
</list></t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="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>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>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="RFC1996">
  <front>
    <title>A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)</title>
    <author fullname="P. Vixie" initials="P." surname="Vixie"/>
    <date month="August" year="1996"/>
    <abstract>
      <t>This memo describes the NOTIFY opcode for DNS, by which a master server advises a set of slave servers that the master's data has been changed and that a query should be initiated to discover the new data. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="1996"/>
  <seriesInfo name="DOI" value="10.17487/RFC1996"/>
</reference>
<reference anchor="RFC2136">
  <front>
    <title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
    <author fullname="P. Vixie" initials="P." role="editor" surname="Vixie"/>
    <author fullname="S. Thomson" initials="S." surname="Thomson"/>
    <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
    <author fullname="J. Bound" initials="J." surname="Bound"/>
    <date month="April" year="1997"/>
    <abstract>
      <t>Using this specification of the UPDATE opcode, it is possible to add or delete RRs or RRsets from a specified zone. Prerequisites are specified separately from update operations, and can specify a dependency upon either the previous existence or nonexistence of an RRset, or the existence of a single RR. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2136"/>
  <seriesInfo name="DOI" value="10.17487/RFC2136"/>
</reference>
<reference anchor="RFC3007">
  <front>
    <title>Secure Domain Name System (DNS) Dynamic Update</title>
    <author fullname="B. Wellington" initials="B." surname="Wellington"/>
    <date month="November" year="2000"/>
    <abstract>
      <t>This document proposes a method for performing secure Domain Name System (DNS) dynamic updates. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3007"/>
  <seriesInfo name="DOI" value="10.17487/RFC3007"/>
</reference>
<reference anchor="RFC2931">
  <front>
    <title>DNS Request and Transaction Signatures ( SIG(0)s )</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <date month="September" year="2000"/>
    <abstract>
      <t>This document describes the minor but non-interoperable changes in Request and Transaction signature resource records ( SIG(0)s ) that implementation experience has deemed necessary. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2931"/>
  <seriesInfo name="DOI" value="10.17487/RFC2931"/>
</reference>
<reference anchor="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>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="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>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="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>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>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>This document describes reasonable policies to ease deployment of the initial acceptance of new secure entry points (DS records).</t>
      <t>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="RFC8914">
  <front>
    <title>Extended DNS Errors</title>
    <author fullname="W. Kumari" initials="W." surname="Kumari"/>
    <author fullname="E. Hunt" initials="E." surname="Hunt"/>
    <author fullname="R. Arends" initials="R." surname="Arends"/>
    <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
    <author fullname="D. Lawrence" initials="D." surname="Lawrence"/>
    <date month="October" year="2020"/>
    <abstract>
      <t>This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8914"/>
  <seriesInfo name="DOI" value="10.17487/RFC8914"/>
</reference>
<reference anchor="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>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>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>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="RFC5730">
  <front>
    <title>Extensible Provisioning Protocol (EPP)</title>
    <author fullname="S. Hollenbeck" initials="S." surname="Hollenbeck"/>
    <date month="August" year="2009"/>
    <abstract>
      <t>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="RFC9460">
  <front>
    <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
    <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
    <author fullname="M. Bishop" initials="M." surname="Bishop"/>
    <author fullname="E. Nygren" initials="E." surname="Nygren"/>
    <date month="November" year="2023"/>
    <abstract>
      <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9460"/>
  <seriesInfo name="DOI" value="10.17487/RFC9460"/>
</reference>
<reference anchor="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>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="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="FIPS204" target="https://csrc.nist.gov/pubs/fips/204/final">
  <front>
    <title>Module-Lattice-Based Digital Signature Standard</title>
    <author >
      <organization>National Institute of Standards and Technology (NIST)</organization>
    </author>
    <date year="2024" month="August"/>
  </front>
  <seriesInfo name="FIPS" value="204"/>
</reference>
<reference anchor="FIPS205" target="https://csrc.nist.gov/pubs/fips/205/final">
  <front>
    <title>Stateless Hash-Based Digital Signature Standard</title>
    <author >
      <organization>National Institute of Standards and Technology (NIST)</organization>
    </author>
    <date year="2024" month="August"/>
  </front>
  <seriesInfo name="FIPS" value="205"/>
</reference>



<reference anchor="I-D.andrews-dnsop-update-parent-zones">
   <front>
      <title>Updating Parent Zones</title>
      <author fullname="Mark P. Andrews" initials="M. P." surname="Andrews">
         <organization>ISC</organization>
      </author>
      <date day="6" month="November" year="2013"/>
      <abstract>
	 <t>   DNS UPDATE was developed to allow DNS zones to be updated.

   There is a perception that UPDATE cannot be used in conjuction with
   the Registry, Registar, Registrant (RRR) model to update a zone.

   This document explains how UPDATE can be used in the RRR model.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-andrews-dnsop-update-parent-zones-04"/>
   
</reference>
<reference anchor="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>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">
  <front>
    <title>Child-to-Parent Synchronization in DNS</title>
    <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
    <date month="March" year="2015"/>
    <abstract>
      <t>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="I-D.johani-dnsop-dnssec-alg-experimental-range">
   <front>
      <title>Experimental and Private-Use Ranges in the DNSSEC Algorithm Numbers Registry</title>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day="12" month="June" year="2026"/>
      <abstract>
	 <t>   The DNSSEC Algorithm Numbers registry contains two code points, 253
   (PRIVATEDNS) and 254 (PRIVATEOID), intended for private and
   experimental algorithms.  These code points identify the algorithm by
   prepending a domain name or an object identifier to the &quot;Public Key&quot;
   field of the DNSKEY RDATA, overloading the semantics of that field
   and forcing every implementation to special-case algorithm dispatch.
   Because all such algorithms share a single code point, they cannot be
   distinguished on the wire by the algorithm number alone.

   This document reserves two small ranges of DNSSEC algorithm numbers:
   one for Private Use, requiring no IANA registration, and one for
   experimental algorithms, registered on a First Come First Served
   basis.  Code points drawn from these ranges behave identically to
   ordinary algorithm numbers and require no overloading of the DNSKEY
   RDATA.  This enables clean experimentation with the growing set of
   post-quantum and other candidate signature algorithms.  This document
   updates RFC 6014 and RFC 9157.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-johani-dnsop-dnssec-alg-experimental-range-00"/>
   
</reference>

<reference anchor="I-D.berra-dnsop-keystate">
   <front>
      <title>Signalling Key State Via DNS EDNS(0) OPT</title>
      <author fullname="Erik Bergström" initials="E." surname="Bergström">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Leon Fernandez" initials="L." surname="Fernandez">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   This document introduces the KeyState EDNS(0) option code, to enable
   the exchange of SIG(0) key state information between DNS entities via
   the DNS protocol.  The KeyState option allows DNS clients and servers
   to include key state data in both queries and responses, facilitating
   mutual awareness of SIG(0) key status between child and parent zones.
   This mechanism addresses the challenges of maintaining
   synchronization of SIG(0) keys used for securing DNS UPDATE messages,
   thereby enhancing the efficiency and reliability of DNS operations
   that require coordinated key management.

   This document proposes such a mechanism.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/johanix/draft-berra-dnsop-opt-transaction-state
   (https://github.com/johanix/draft-berra-dnsop-transaction-state-00).
   The most recent working version of the document, open issues, etc,
   should all be available there.  The authors (gratefully) accept pull
   requests.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-berra-dnsop-keystate-02"/>
   
</reference>

<reference anchor="I-D.leon-dnsop-signaling-zone-owner-intent">
   <front>
      <title>Signaling Zone Owner Intent</title>
      <author fullname="Leon Fernandez" initials="L." surname="Fernandez">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Erik Bergström" initials="E." surname="Bergström">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Steve Crocker" initials="S." surname="Crocker">
         <organization>Edgemoor Research Institute</organization>
      </author>
      <date day="12" month="June" year="2026"/>
      <abstract>
	 <t>   This document introduces a standardized mechanism for zone owners to
   signal their intent regarding DNS provider responsibilities through
   DNS itself.  It defines two new DNS RRtypes -- HSYNC (Horizontal
   Synchronization, per-provider enrollment) and HSYNCPARAM (zone-wide
   multi-provider policy) -- that together enable zone owners to
   designate which Providers are authorized to serve and/or sign their
   zones, control whether Providers or the zone owner manages the NS
   RRset, and specify zone transfer chain configurations.

   The HSYNC and HSYNCPARAM records allow DNS Providers to discover each
   other and establish secure communication, either using the JOSE
   framework over DNS or via a RESTful API secured by TLS.  This
   provider-to-provider communication enables automated coordination for
   tasks such as NS RRset management and DNSSEC-related operations.  The
   document describes how the Providers discover one another, establish
   secure communication, and maintain it with periodic keep-alives; this
   specification covers those discovery and communication-establishment
   aspects, while the on-the-wire framing of the messages the Providers
   exchange is defined in a companion document.

   While a distributed DNSSEC multi-signer architecture (similar to
   &quot;model 2&quot; in [RFC8901]) is an important application of this
   framework, the HSYNC-based signaling supports broader provider
   synchronization needs.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/johanix/draft-leon-dnsop-signaling-zone-owner-
   intent (https://github.com/johanix/draft-leon-dnsop-signaling-zone-
   owner-intent).  The most recent working version of the document, open
   issues, etc, should all be available there.  The authors (gratefully)
   accept pull requests.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-leon-dnsop-signaling-zone-owner-intent-01"/>
   
</reference>

<reference anchor="I-D.berra-dnsop-announce-scanner">
   <front>
      <title>Announce Existence of Parent CDS/CSYNC Scanner</title>
      <author fullname="Erik Bergström" initials="E." surname="Bergström">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Leon Fernandez" initials="L." surname="Fernandez">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   In DNS operations, automated scanners are commonly employed by the
   operator of a parent zone to detect the presence of specific records,
   such as CDS or CSYNC, in child zones, indicating a desire for
   delegation updates.  However, the presence and periodicity of these
   scanners are typically implicit and undocumented, leading to
   inefficiencies and uncertainties.

   This document proposes an extension to the semantics of the DSYNC
   resource record, as defined in [RFC9859], allowing parent zones to
   explicitly signal the presence and scanning interval of such
   automated scanners.  This enhancement aims to improve transparency
   and coordination between child and parent zones.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/johanix/draft-berra-dnsop-announce-scanner
   (https://github.com/johanix/draft-berra-dnsop-announce-scanner).  The
   most recent working version of the document, open issues, etc, should
   all be available there.  The authors (gratefully) accept pull
   requests.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-berra-dnsop-announce-scanner-03"/>
   
</reference>



    </references>

</references>


<?line 1192?>

<section anchor="change-history-to-be-removed-before-publication"><name>Change History (to be removed before publication)</name>

<t><list style="symbols">
  <t>draft-ietf-dnsop-delegation-mgmt-via-ddns-02</t>
</list></t>

<ul empty="true"><li>
  <t>Restructured Section Management of SIG(0) Public Keys to expose the
two-direction bootstrap symmetry: Section Mutual Authentication now
motivates a single Section Bootstrapping SIG(0) Public Keys section
with subsections for the child's key and the UPDATE Receiver's
key.</t>
</li></ul>

<ul empty="true"><li>
  <t>Added Section Choice of SIG(0) Signature Algorithm covering the case
for adopting a PQ-safe algorithm on this path once available.</t>
</li></ul>

<ul empty="true"><li>
  <t>Added Section Operator coordination via HSYNCPARAM (a <spanx style="verb">pubkey</spanx> key in
the HSYNCPARAM record from draft-leon-dnsop-signaling-zone-owner-intent)
for the at-ns bootstrap method, and an IANA request for a
(KEY, _signal) entry in the RFC 8552 registry.</t>
</li></ul>

<ul empty="true"><li>
  <t>Added baseline retry policy for missing UPDATE responses, plus
minor structural and editorial polish.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-ietf-dnsop-delegation-mgmt-via-ddns-01</t>
</list></t>

<ul empty="true"><li>
  <t>Large number of editorial nits addressed (thanks to Yorgos Thessalonikefs)</t>
</li></ul>

<ul empty="true"><li>
  <t>Replaced the hand-waving "Mutual Authentication" section with a
concrete specification for where the UPDATE Receiver publishes its
SIG(0) public key and how the child validates it (DNSSEC validation
or manual bootstrap).</t>

  <t>Moved "Communication Between Child and Parent UPDATE Receiver" and
"Mutual Authentication" to directly after the child key bootstrap
sections, so that the motivation (KeyState communication) directly
precedes the solution (mutual authentication via the parent's SIG(0)
key).</t>

  <t>Removed the policy inquiry references that were made obsolete by
the SVCB "bootstrap" SvcParamKey mechanism.</t>

  <t>Moved Terminology to the Introduction and added definitions for
UPDATE Receiver and Bootstrap.</t>

  <t>Expanded the abstract to describe the proposed mechanism.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-ietf-dnsop-delegation-mgmt-via-ddns-00</t>
</list></t>

<ul empty="true"><li>
  <t>Re-submitted as a WG document after adoption.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-johani-dnsop-delegation-mgmt-via-ddns-06</t>
</list></t>

<ul empty="true"><li>
  <t>Added the more secure bootstrap of the SIG(0) public key based on
RFC9615 in addition to the original mechanism based on RFC8078.</t>
</li></ul>

<ul empty="true"><li>
  <t>Replaced references to the draft on generalized notifications with
a reference to RFC9859.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-johani-dnsop-delegation-mgmt-via-ddns-05</t>
</list></t>

<ul empty="true"><li>
  <t>Fixed typos in the KeyState OPT section.</t>
</li></ul>

<ul empty="true"><li>
  <t>Added a section on mutual authentication.</t>
</li></ul>

<ul empty="true"><li>
  <t>Fixed spelling errors.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-johani-dnsop-delegation-mgmt-via-ddns-04</t>
</list></t>

<ul empty="true"><li>
  <t>Reworked the section on automatic bootstrapping a la RFC8078.</t>
</li></ul>

<ul empty="true"><li>
  <t>Added a section on re-bootstrapping the SIG(0) key with the parent
after problems.</t>
</li></ul>

<ul empty="true"><li>
  <t>Added text on the importance of augmenting error responses using EDE
(RFC8914).</t>
</li></ul>

<ul empty="true"><li>
  <t>Added text on the insufficiency of RFC8914 for child-to-parent
communication and a reference to the (upcoming) draft on a new OPT
code to alleviate this.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-johani-dnsop-delegation-mgmt-via-ddns-03</t>
</list></t>

<ul empty="true"><li>
  <t>Update the draft based on the excellent dnsdir review of 
draft-ietf-dnsop-generalized-notify-01 by Patrick Mevsek.</t>
</li></ul>

<ul empty="true"><li>
  <t>Expand the section on alternatives for initial bootstrap
to suggest a mechanism similar to what is used for automatic
bootstrap of DNSSEC signed delegations via multiple queries
for child the CDS RRset.</t>
</li></ul>

<ul empty="true"><li>
  <t>Added a section on scalability considerations.</t>
</li></ul>

<ul empty="true"><li>
  <t>Expanded the Security Considerations section with a paragraph on
the potential for DDOS attacks aimed at the UPDATE Receiver.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-johani-dnsop-delegation-mgmt-via-ddns-02</t>
</list></t>

<ul empty="true"><li>
  <t>Update the references to the (updated) I-D for generalized
notifications.</t>
</li></ul>

<ul empty="true"><li>
  <t>Remove duplicated descriptions between the two drafts. It is
sufficient that the generalized notification draft describes the
mechanics.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-johani-dnsop-delegation-mgmt-via-ddns-01</t>
</list></t>

<ul empty="true"><li>
  <t>Change the RRtype from the original "NOTIFY" to the proposed "DSYNC"</t>
</li></ul>

<ul empty="true"><li>
  <t>Expand the description of how to interpret different RCODE responses
to the UPDATE. Expand the description of bootstrapping
alternatives. Change the mnemonic of the RR type used from "NOTIFY"
to "DSYNC" in the examples.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-johani-dnsop-delegation-mgmt-via-ddns-00</t>
</list></t>

<ul empty="true"><li>
  <t>Initial public draft.</t>
</li></ul>

</section>


  </back>

<!-- ##markdown-source:
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
CkPYXGrhjcrX7uIqWmG7eFZcfTikoT8WgXxkGUbmoyFFK53PMUKuRU560ZTZ
cVoNKJdXeRhP9UjuiA0pTJLX02dL5Ax3S00OI/PWvOnmHkhOr2iT+VNUGxf6
756UiD3X1+apDHNHNsTBubqhHtdiiB/iNUcF/67Co69jov8hdu9cY0APv5x9
MXuU8qwlf+eIr+cLCeb+g2+9McLnZK3jBR/+76OY5j1881fwUvBPfmPSzf6x
87pEcy2BjPYxhwvml/BWxS5LZlr6Ayiz7rJhr0mHqGavQq7WkPiqnCZELCkz
A2sHSIx1yrRKP12NT04zHGzix9qQm+nsg49FkthDdUhjZ2sHNGdvmOybT3Dz
YW3iptW4iC5IepCXd4j/oTxY8vpHpPG+pKa8boNUDrcAY3Hubx8JfImnwbhm
/vDw0e9Y439acjo1NumGAxeSgHyI+CARApcKdo3JBd58hNy4S5JiV4oXX0uq
u9Sj7Iy8pau4ITJjMIlIg+/RBb+J6ew0jfIRN+ijr9Ovu0Qfe6vM8VWITI1e
h0meKzHZl5Zi896+XP/QvPVia2zN3PjIUpfi9VOTzaWG8Bx2vzhaeLSf3z8p
4C2b9sPdMuV1TrUsg3b8To607DB2ja3WIr5+6dJaP9/uRnH/Qe9W+Hb0Vn3C
nZM/IDSkiva9XY21M9bBvlc4DuN7izJ1n734/uWU2z6TcGiqFSnl812L2q1Z
/2aCv5fif8NtuF+yGKFOf3zx8s8vpqjPc/GaDLSnp/qdEzbSEXBHS+cPnvL2
6/508uyMzK6zly+m35+cPbv/dVtdm3/V656fvPjp5Nn08cuXF+cXr09eTV8/
/eNPZ6+fwjJJjZq36p1+oEFzBDjsF7Ir1SgMSsEEGMUt6lSkFsI+mSqMe+ju
8JuxfXoyxx7RfohF1aOE1StWii5uaFk9Kofg5Wd0ba7FSTHnBljrBDOOMcXU
ODfVjdK6XBxPof1IIfKJV6al42dXLWEUbdbalPY5OoucNIuuunUdhgeH8K+b
PvoQ8MbbToBwjLfG1qD4VMsFB7p6FYF5EpxZXTp4y+6FsKqhBaxsJf14JTJm
8p/Qccy7tu+1WvNGK4OdD9UVAoCX9Nq3xU21XDNeBbBwbE+GQ+PqaHPufeIr
G6EK2o5EhPoKPk11GQq0vs2h9YZB58p2QKEjxSXgInOwnwjhiUSefiBO1hIr
O5R4owLDrKKEa5hwhCXxsU3rarhStHrybU1X16th+q4mA4u+mj54FMJ3cI0y
upqdJqZmP0/2fGpw7lvRyQG2ElmmUYbbdhq787nr1N+tSIXt7o7T0Lsat9Lh
3dIoKzrCd5LIFCEV+tgHm+NpSwYahY/eN2nI6qVpG0VzMm3V7qABJK/su+KE
PQE2gyc3bS2QJKukG/1aJ8trhJtuVtLbL1UI6LE30rG61Uboxas/TvvyCqBN
e8jqRnJpIa6l5zuVj+fxMeVkoSdmtUZrbAzm5H5jJUSguQvVfFyZ0SNd0yDB
xqbfsleiz5glvfVREjDud8Uht41RBelIlVxVr1nHIRu5cAXGbAOs9TpadaPt
nKjUGHVVS9vzmBQRO5qulxuc6KpucNuU0IFUh69zUdM21up97W9mv/L6PMTU
no3wzGnQhmPgiwUXN11AmpTNW745f2m767aHEt738EHVb6ur/kguI4eHhTRR
CHR6K803D3Zem4PY6lGwzTQC0D0doj65lX8lzKjbWbAmqrNcWY4G2U79xn7l
TRxjPyo4HHY0C/rONQZKvZ1m4Tv65jkzsIO8V/xj7VktBUzxwlc7kzYOOLL9
3d4t4arnAl6LqRpZZkE0Ab+z7esnPofb2BAmdfjjzkbSR/EVNMganv+FVb1q
lxt5cmeb4hhkjSFQrbXynSaIfMdUIBx+cMhU7bkbbTg1UG9xpIxebi/p1Tj4
yzu96uy5SUVZDzI/QAJluhO5AHKjaZftdawbcaYushghEPdoQgBKPcnvtoNo
jStNIy95+vO6bExdKC/xzVzbq4maJCu2huduir/uYj6QqzQlGbCqB854gUT5
8x+cb5MJQ7iyajbygr+1eOcHX/G7xJaEYlK51I8ppKAINExTHLrjeqyM1+rq
6xr+4KT6ROiaAidmGdPwxCFDiA5Hv9+r8gkC+DvvHsDDmNbvv/rm12/MV5jR
94ysHe7oHI2x/+j7veu1c7y9jJyM+z7tuDmzNDCxNkmuFbX510/yS9m227Z7
qwfo3r4jJXotkntZZvu+Y+ZbaqA7fxx81HQ1jvudEqLm3/Vu3KH6eTDQksHi
tMD/5ho0HDfABSIlqv709CnErNq9R/sGbfoN0k5qwKgxrv4+pa1Oh3YaJ5rx
v7FHyejtcLOm38ETlUhPHHJ07DwI19lEwkr1rhY4c90DY/wrT/ALrOmnhIiW
t2XITtSepNcgvabpiV2jlFaNUpxXBT27xU7cDZnyDbkjCY+wwKsSWNK3xfPq
XV+95c0URrZFOAns1mt9oVHOMxgzStVeM/qjdBd7RyGO2AohZeF8lzOXrNNL
lsHETcKt7pfmCqnWZpkvEgfipLB91Ozw+bG8sbzA7YJeoD249pGCArovr2n6
N8L9RMIZEphrQ5++PI9lrcsa2MndyOlff+sfjWhmm10eCkp0cVScTU95Oo4q
6OGMcyrv5Z6Ci816qagA53gF2kJ0GvYr37Yy314zhqB/2A0ckvaxj1Urjfua
WLAuYmH6X78hrMCqkcnKt4SXoys/CqCDFy8vzr7/y0HMezcRLc71g9GdcFtg
1fK5HQRdD9KVhgiyH4rX7IiL/EvuRzrs2T2j5onD32W3b+ZXtTInn4pjC17K
/eKK27o8eb2uyQSXIll+w/ayGnKmPEClPw8wC/8XTn2zfSrqAAA=

-->

</rfc>

