<?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.6.17 (Ruby 2.6.10) -->


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

]>


<rfc ipr="trust200902" docName="draft-johani-dnsop-delegation-mgmt-via-ddns-05" 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>


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

<t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/johanix/draft-johani-dnsop-delegation-mgmt-via-ddns">https://github.com/johanix/draft-johani-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>


<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="I-D.ietf-dnsop-generalized-notify"/> proposes a method to alleviate<br />
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 provide rapid convergence (similar to generalized notifications in
conjuction 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 the Internet-Draft on Generalized DNS Notifications (work in progress).</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>
<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 recipients 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="terminology"><name>Terminology</name>

<dl>
  <dt>SIG(0)</dt>
  <dd>
    <t>An assymmetric signing algorithm that allows the recipient to only
need to know the public key to verify a signature created by the
senders private key.</t>
  </dd>
</dl>

</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 a 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 cuts 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 signture 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 proposed mechanism for locating the
recipient of a generalized NOTIFY.</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="I-D.ietf-dnsop-generalized-notify"/> proposes a new RR
type, tentatively with the mnemonic 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 "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=2 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
"2" 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 2 5302 ddns-receiver.parent.
]]></artwork></figure>

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

<figure><artwork><![CDATA[
childA._dsync.parent.  IN DSYNC ANY 2 5302 ddns-receiver.registrar1.
childB._dsync.parent.  IN DSYNC ANY 2 5302 ddns-receiver.registrar3.
childC._dsync.parent.  IN DSYNC ANY 2 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 address 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>
</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 the
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 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 and 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 reciever (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 do chose a sensible approach. Eg. if the sender of the DNS
UPDATE message (like 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 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 Reciever 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="signalling-that-manual-bootstrap-is-required-or-requested"><name>Signalling That Manual Bootstrap is Required or Requested</name>

<t><xref target="I-D.berra-dnsop-keystate"/> describes a mechanism by which the
child may communicate "Key State" to the UPDATE Receiver. If the child
supports this mechanism then a KeyState OPT MUST be included in the
initial key upload (the self-signed UPDATE containing the public
key). The child MAY include a KeyState OPT containing the KEY-STATE for
"Manual bootstrap requested" (value=1). The UPDATE Receiver SHOULD
honour this request and not perform automatic bootstrap for this child
and this key.</t>

<t>Likewise, in the response to the initial key upload, if the UPDATE
contained a KeyState OPT, then the UPDATE Receiver has the ability to
signal the requirement that the child SIG(0) key is manually
bootstrapped (verified) by including a KeyState OPT containing the
KEY-STATE for "Manual bootstrap required" (value=11). If a KeyState OPT
from the UPDATE Receiver is included in the response then the child
MUST validate this message using the SIG(0) public key of the UPDATE
Receiver. If the response is unsigned it MUST be ignored. If the
response valdiates then the child SHOULD signal this information to an
operator, to resolve manually.</t>

</section>
<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 at the child apex 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 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-zone-is-unsigned"><name>Automatic Bootstrap When Child Zone is unsigned</name>

<t>The bootstrap problem in the unsigned case is essentially identical to
the "automatic DNSSEC Bootstrap via CDS" service a la <xref target="RFC8078"/>
that multiple TLD registries provide today.</t>

<t>Hence, to bootstrap the public SIG(0) key for a child zone it is
possible for the parent 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 possible spoofing, do the look up of the child KEY RRset
from multiple vantage points, at multiple times. The child KEY RRset
must be consistent over time and space.</t>
  <t>Make spoofed responses even more difficult by adding a requirement
to use a more stable transport, like TCP (or in the future DOT, DOH
or DOQ once those become more generally available for DNS queries to
authoritative servers) in addition to UDP. 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>

</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. In this case
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="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
sychronization via DNS UPDATE, it does only support manual
bootstrap.</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 EDE.</t>
</list></t>

<t>The communication between child and parent would gain from the
addition of the ability to also send inquiries to the parent:</t>

<t><list style="symbols">
  <t>For the child to be able to inquire about the state of the
parent. I.e. "I operate under the assumption that the key {key} is
known and trusted by you (the parent). Is this correct?"</t>
  <t>For the child to inquire about things: "Do you (parent) support
automatic bootstrapping or not?"</t>
</list></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 all of
the above examples would travel as a new "KeyState codes" in a
KeyState OPT as specified in <xref target="I-D.berra-dnsop-keystate"/>.</t>

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

<t>In a traditional DNS UPDATE only the sender (i.e. the child in this case)
of the UPDATE is providing information. The receiver is only a consumer of
the information (assuming that the receiver able to validate the SIG(0) 
signature of the sender, and that the UPDATE adheres to policy, etc).</t>

<t>However, in the proposed mechanism with the new KeyState OPT the
UPDATE Receiver can also send information back to the sender (the child). One
example is details about the SIG(0) key bootstrap policy of the parent.
This opens up the possibility for an adversary to potentially cause disruption
by sending forged responses to the child.</t>

<t>For this reason the current proposal is that the UPDATE Receiver also maintains 
a SIG(0) key pair, including publication of the public key in DNS. This key 
is then used to sign responses to the child. This requires that the child
goes though a similar bootstrap process to get the public key of the UPDATE
Receiver as the parent does.</t>

<t>Once such bootstrap is complete the child can use the public key of the
UPDATE Receiver to verify the authenticity of responses from the UPDATE
Receiver, thereby making the mutual authentication complete.</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 comparision, 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>2</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='Normative References'>



<reference anchor='RFC1996' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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' target='https://www.rfc-editor.org/info/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='RFC5730' target='https://www.rfc-editor.org/info/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='RFC8914' target='https://www.rfc-editor.org/info/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'>




<reference anchor='I-D.ietf-dnsop-generalized-notify' target='https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-generalized-notify-07'>
   <front>
      <title>Generalized DNS Notifications</title>
      <author fullname='Johan Stenstam' initials='J.' surname='Stenstam'>
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname='Peter Thomassen' initials='P.' surname='Thomassen'>
         <organization>deSEC, Secure Systems Engineering</organization>
      </author>
      <author fullname='John R. Levine' initials='J. R.' surname='Levine'>
         <organization>Standcore LLC</organization>
      </author>
      <date day='3' month='March' year='2025'/>
      <abstract>
	 <t>   This document generalizes and extends the use of DNS NOTIFY (RFC
   1996) beyond conventional zone transfer hints, to allow triggering
   other types of actions via the DNS that were previously lacking a
   trigger mechanism.  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).

   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.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/peterthomassen/draft-ietf-dnsop-generalized-notify
   (https://github.com/peterthomassen/draft-ietf-dnsop-generalized-
   notify).  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-ietf-dnsop-generalized-notify-07'/>
   
</reference>


<reference anchor='I-D.berra-dnsop-keystate' target='https://datatracker.ietf.org/doc/html/draft-berra-dnsop-keystate-01'>
   <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='7' month='February' year='2025'/>
      <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-01'/>
   
</reference>




    </references>


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

<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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
RMsLkQES66YF5ub/AVM0V71LgAAA

-->

</rfc>

