<?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-01" category="std" consensus="true" 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 40?>

<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 67?>

<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>An asymmetric signing algorithm that allows the recipient to only
need to know the public key to verify a signature created by the
sender's private key.</t>
  </dd>
  <dt>UPDATE Receiver</dt>
  <dd>
    <t>The entity that receives and processes DNS UPDATE messages on behalf
of the parent zone. This may be the parent primary name server or a
separate dedicated service.</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="is-there-a-use-case"><name>Is there a Use Case?</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. I.e. by using the
right algorithm the resulting signatures will be as strong as
DNSSEC-signatures.</t>

<t>DNS UPDATEs can be used to update any information in a zone (subject
to the policy of the recipient). But in the special case where the
data that is updated is the delegation information for a child zone
and it is sent across a zone cut (i.e. the child sends it to the
parent), it acts as a glorified generalized NOTIFY.</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>This is not a new idea. There is lots of prior art and prior
documents, including the expired
I-D.andrews-dnsop-update-parent-zones-04.</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" (i.e. the number 2 in the wire protocol) the interpretation
is:</t>

<t><spanx style="verb">Send a DNS UPDATE to the IP address for the name {target} on port
5302, where {target} is the domain name in 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-dns-update-receiver"><name>The DNS 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-in-the-dns-update-receiver"><name>Processing the UPDATE in the DNS UPDATE Receiver</name>

<t>The receiver of the DNS UPDATE messages should implement a suitably 
strict policy for what updates are accepted (typically only allowing 
updates to the NS RRset, glue and DS RRset).</t>

<t>Furthermore, it is strongly recommended that the policy is further
tightened by only allowing updates to the delegation information of a
child zone with the exact same name as the name of the SIG(0) key that
signed the UPDATE request. I.e. an UPDATE request for the delegation
information for the zone <spanx style="verb">child.parent.</spanx> should only be processed if
it is signed by a SIG(0) key with the name <spanx style="verb">child.parent.</spanx> and the
signature verifies correctly.</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. 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 a
permanent signal that DNS UPDATEs are not supported by the
receiver. This would indicate a parent misconfiguration, as the UPDATE
should not be sent unless the parent has announced support for DNS
UPDATE via publication of an appropriate target location record.</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 DNS UPDATE Receiver does not have access
to the public SIG(0) key needed for signature verification. In this
case the child should fall back to bootstrap of the SIG(0) public key
into the DNS UPDATE Receiver, see below.</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>For this reason it is suggested that a lack of response is left as
implementation dependent. That way the implementation has sufficient
freedom to choose a sensible approach. Eg. 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 ok (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 then resending the update immediately is
likely pointless.</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 DNS UPDATE Receiver. Keeping all the public
SIG(0) keys for different child zones in some sort of database is
perfectly fine.</t>

<section anchor="bootstrapping-the-sig0-public-key-into-the-dns-update-receiver"><name>Bootstrapping the SIG(0) Public Key Into the DNS 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). If the child wants to enforce manual bootstrap it needs to
request this from the UPDATE Receiver.</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>

<section anchor="automatic-bootstrap-of-the-sig0-public-key"><name>Automatic Bootstrap of the SIG(0) Public Key</name>

<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.</t>

</section>
<section anchor="automatic-bootstrap-when-child-zone-is-dnssec-signed"><name>Automatic Bootstrap 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 old keys should be deleted.</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="automatic-bootstrap-when-child-nameserver-is-in-a-dnssec-signed-zone"><name>Automatic Bootstrap 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 "child.parent." 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
"_sig0key.{child}._signal.{nameserver}":</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>In case of validation success the key SHOULD be promoted to "trusted"
by the UPDATE Receiver. At this point any old keys should be deleted.</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>

</section>
<section anchor="automatic-bootstrap-when-child-zone-is-unsigned"><name>Automatic Bootstrap 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 old SIG(0) public keys for the
child should be deleted.</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 is
essentially identical to the "automatic DNSSEC Bootstrap via CDS"
service a la <xref target="RFC8078"/> that multiple TLD registries provide
today. It does not provide the provable authenticity of the two
previous methods but it is possible to make on-path attacks
arbitrarily difficult by using a larger number of repeated queries
from a larger number of vantage points.</t>

</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>This document utilizes the same mechanism as used in
<xref target="I-D.berra-dnsop-announce-scanner"/> to announce details about CDS and
CSYNC scanner capabilities. This mechanism uses an SVCB record located
at the target of the DSYNC record to announce capabilities. For the
UPDATE Receiver the important capabilities are primarily supported
bootstrap methods.</t>

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

<t>The "bootstrap" 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>"at-apex": 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="automatic-bootstrap-when-child-zone-is-dnssec-signed">Automatic Bootstrap When Child Zone Is DNSSEC-signed</xref></t>
  <t>"at-ns":   This is an indication that the UPDATE Receiver supports
           automatic bootstrap of the SIG(0) public key by publishing
           the DNSSEC-signed KEY record both at the zone apex AND at
           the special name "_sig0key.{child}._signal.{nameserver}."
           below the name of an authoritative nameserver located in a
           signed zone. 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="automatic-bootstrap-when-child-nameserver-is-in-a-dnssec-signed-zone">Automatic Bootstrap When Child Nameserver Is In A DNSSEC-signed Zone</xref></t>
  <t>"unsigned": 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="automatic-bootstrap-when-child-zone-is-unsigned">Automatic Bootstrap When Child Zone Is Unsigned</xref></t>
  <t>"manual":  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 "bootstrap" key is a string with one or more of the supported
mechanisms, separated by ",". 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 "at-apex" and
"at-ns". Otherwise "manual" bootstrap is needed.</t>

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

<t>I.e. this UPDATE Receiver does not support the "unsigned" method based
on <xref target="RFC8078"/>.</t>

</section>
</section>
</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.</t>

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

<t>An error response from the parent UPDATE Receiver would be improved by
more detail provided via a set of new Extended DNS Error Codes
<xref target="RFC8914"/>. In particular, it would be useful to be able to express
the following "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 "bootstrap" 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>

</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,
eg. 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-and-the-update-receiver-sig0-key"><name>Mutual Authentication and the UPDATE Receiver SIG(0) Key</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.</t>

<section anchor="publishing-the-update-receiver-sig0-key"><name>Publishing the UPDATE Receiver SIG(0) 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 0 updater.parent.example.
updater.parent.example.     IN KEY ...
]]></artwork></figure>

</section>
<section anchor="bootstrapping-the-update-receiver-key-to-the-child"><name>Bootstrapping the UPDATE Receiver Key to the Child</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 anchor="rolling-the-sig0-key"><name>Rolling the SIG(0) Key</name>

<t>Once the parent (or registrar) DNS 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 a</t>

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

<t>and that is an instruction to the parent UPDATE Receiver to delete any
SIG(0) public keys for this child (and after that start the process to
validate 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>

</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>
<section anchor="iana-considerations"><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>

<t><vspace blankLines='999' /></t>

</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="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="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>



    </references>

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




<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>

<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>



    </references>

</references>


<?line 829?>

<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-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:
H4sIAAAAAAAAA+1963LjxtXg/36KXvqHJRdJz4zjxFYqk9VIcqIvc8to/Lm8
qVQCAk0KEQgwACgOM5nX2hfYF9tz7QtAasaOq/bPTqVikQT6cvrcbz2bzUxf
9pU7s5Pzbd+ss76sV/by5Y29dJVbwcemti+yOlu5tat7e19m9hJ+nphssWjd
/Rl9st9viqx3nW2W8XvX9bJp1/S3KZq8ztYwT9Fmy35Wun45K+qu2cwK/8Js
vVr3M5hiVsBPs0ePDY56Zt9fnr+9+mBy+LBq2v2Z7frCmHLTntm+3Xb9k0eP
vn30xGSty85g0t61tevNrmnvVm2z3Zzhfl69tj/AF7i7P+CX5s7t4YkivDC7
xJUZ0/VZXfwtq5oapt67zmzKM/uXvsmntmvavnXLDv7ar/GPvxqTbfvbpj0z
dmYs/Cvr7sz+19ze9K6Gkdb0Je/8v5rbrE5/aNpVVpf/ot2f2be3zt7sXFF2
t35V9rtmWxcMQ3wjh489wgAfdPydW2dldWb/gePPOxn/f5YyQteXy95VnYPf
XLLMq7l95tpV17f/53/HC71qy7vhL7/oSh1MMF/wBM2nrPT53H4Hj8DBuH9F
C33uAMvSH37RdVYw/nyp4x9Zp6kZye/dGSClojx9ms1mNlvAJrMcECuijDJQ
hj0p525ue1gpENKbN53rp3bTdF25qJxdVVsXfby8Ma3LAW27U9vdNtuqsFm1
y/adXTh75zY9jAy4Wefwud85V9v8toSH/gXIbGETdgNEUvcGP8/tH5udu3ft
FF/a4BrL3MFCMhils3XT69i4tjzr3NyYH25hTPxcHN6MvKiroDfDCsrObLtt
VlV7uxNiXJY1bHCx7e2uBEKC/+I72RoPBdlJ6wo8rTrf88rgV1q9bXa1a21V
3jkYzb3buLyHlTb2NrvHrbk6h3EVRvXeLrctvNvCRhuA5LozQCZbWFKPCADP
4Huwyz5DnNzcljl8X3fun1scqYOtIy4hr0PUs90mA1jdZh2s4N4VtHhYG2xf
xrcAEwBSnhXAFhHyZW9qhLZdNfgNAHZuXwHs2wyXNcWF7MqqsvoQPWIBCmVl
M1g9AA15DbJomG/tciD2suN5bpsdbv3OuQ2BLzkRPgp9t8wJ/LDQwm2qZu8K
2hp+bvIt8XjYASAcLLLb5rcwd5hrAUhQWBiUBMQeIAFgEt5vTlASAFq6fNsq
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
pwHm5v8Cx44Z2WCaAAA=

-->

</rfc>

