<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-fobser-dnsop-dnssec-keyrestore-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>DNSSEC Key Restore</title>
    <seriesInfo name="Internet-Draft" value="draft-fobser-dnsop-dnssec-keyrestore-01"/>
    <author fullname="Florian Obser">
      <organization>RIPE NCC</organization>
      <address>
        <email>fobser@ripe.net</email>
      </address>
    </author>
    <author fullname="Martin Pels">
      <organization>RIPE NCC</organization>
      <address>
        <email>mpels@ripe.net</email>
      </address>
    </author>
    <date year="2025" month="October" day="16"/>
    <area>Operations and Management</area>
    <workgroup>Domain Name System Operations</workgroup>
    <keyword>DNSSEC</keyword>
    <keyword>disaster recovery</keyword>
    <keyword>backup and restore</keyword>
    <abstract>
      <?line 53?>

<t>This document describes the issues surrounding the handling of DNSSEC
private keys in a DNSSEC signer. It presents operational guidance in
case a DNSSEC private key becoming inoperable.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Domain Name System Operations Working Group mailing list (dnsop@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dnsop/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/fobser/draft-fobser-dnsop-dnssec-keyrecovery"/>.</t>
    </note>
  </front>
  <middle>
    <?line 59?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>DNSSEC <xref target="RFC9364"/> uses public key cryptography to provide integrity
protection of DNS data. From an operational point of view, it is
critically important to keep the private key secret under all
circumstances.</t>
      <t>The private key is typically kept secret by using Hardware Security
Modules (HSMs). HSMs are designed to perform cryptographic operations
such as creating keys and signing messages without disclosing the
private key. Alternatively the DNSSEC signer is an appliance or
commodity server hardware and operational policy stipulates that the
private key must not leave the signer.</t>
      <t>Operationally this is a risk because only a single key exists. The
key could become inoperable at any point due to hardware failure,
natural disaster, operator error, or malicious action.</t>
      <t>It is difficult to create backups of the private key. After all, the
system is designed to prevent backups. A compromise is usually reached
by using a secret sharing scheme, e.g. <xref target="Shamir"/>. The private key is
split into N pieces inside of the HSM, which are then distributed to
key share holders. In case the private key becomes inoperable, M out
of the N key share holders need to come together to restore the secret
key.</t>
      <t>A key sharing scheme does not mitigate all risk. When
more than N-M key shares become unavailable a restore cannot be
performed, because not enough key shares are available. This is
particularly challenging in small to medium sized teams.</t>
      <t>Unlike the private key, a DNSSEC signed zone can be considered public
data with its integrity protected by signatures. Signed zones can be
added to the normal, established backup procedures.</t>
      <t>The rest of the document describes procedures on how to restore DNSSEC
signing functionality with only a backup of the signed zone available.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses DNS terminology from <xref target="RFC9499"/>.
DNSSEC key states and timeline related abbreviations are defined in
<xref target="RFC7583"/>.</t>
      <t>The following additional definitions are used within this document.</t>
      <dl>
        <dt>Inoperable (private key):</dt>
        <dd>
          <t>The private part of a DNSKEY appearing in the chain of trust of
the zone that can no longer be used for signing. Causes include
hardware failure, natural disaster, operator error, or malicious
action. A compromised key is not an inoperable private key since it
can still be used for signing.</t>
        </dd>
        <dt>Operable (private key):</dt>
        <dd>
          <t>The opposite of an inoperable private key. A key that can be used
for signing.</t>
        </dd>
      </dl>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <t>The procedures described in this document pertain to DNSSEC architectures
with pre-signed records. Online signing, such as described in <xref target="RFC9824"/>,
is out of scope since it requires that each server carrying the zone holds
a copy of the signing key(s). Thus, the operational challenges are different
than described in the introduction.</t>
      <t>The root zone is out of scope since the distribution of a new trust
anchor takes considerably longer than the RRSIG lifetime <xref target="RFC7958"/>.</t>
    </section>
    <section anchor="dnssec-key-restore">
      <name>DNSSEC Key Restore</name>
      <t>In case of a catastrophe where the DNSSEC private key becomes
inoperable and no functioning backups of the private key are
available, it is desirable to recover from this situation with DNS
resolution continuing to work for the effected zone(s) while
performing DNSSEC key restore operations.</t>
      <t>This is possible because the moment the DNSSEC private key becomes
inoperable, the zone is still correctly signed and served by the
authoritative name servers. Signatures typically have a lifetime of
many days. That means that the operator has a lot of time to recover
from this situation without the zone becoming bogus and no longer
validating. Hasty and inappropriate action on the other hand could
lead to outages.</t>
      <t>While the DNSSEC private key cannot be restored because no functioning
backups exist, the function of the zone can be restored.</t>
      <t>The restore process uses slightly modified key rollover procedures
from <xref target="RFC7583"/>.</t>
      <t>During the restore process, the signing software operates on a
pre-signed zone. That is, the zone already contains a DNSKEY RRset and
RRSIG RRsets. The signing software might try to remove these records
because the accompanying private key is no longer present. The operator
<bcp14>MUST</bcp14> prevent this, otherwise the zone will become bogus.</t>
      <t>The signing software <bcp14>MUST NOT</bcp14> remove DNSKEYs until instructed to do so
and <bcp14>SHOULD NOT</bcp14> remove old RRSIGs. If a signer implementation does
not support keeping the old RRSIG records in place these records,
excluding the RRSIG for the old DNSKEY RRset, <bcp14>MUST</bcp14> be manually added back
to the zone before publication.</t>
      <t>The exact process depends on which key(s) are inoperable and if the
zone is signed with a split KSK / ZSK key pair or a Combined Signing
Key (CSK).</t>
      <t>Performing an Algorithm Rollover as described in <xref target="RFC6781"/> using the
procedures defined in this document is <bcp14>NOT RECOMMENDED</bcp14>. If an
algorithm rollover is not already in progress, signing using the
currently used algorithm should be restored first using the procedures
defined in this document. Once this has been completed a regular
algorithm rollover can be performed.</t>
      <section anchor="key-rollover-considerations">
        <name>Key Rollover Considerations</name>
        <t>If a regular key rollover is in progress, the procedures described in
this document can be followed. They effectively cancel the ongoing key
rollover and perform a new one.</t>
        <t>If an algorithm rollover is in progress, the procedures described in
this document can be followed with the exception that two new keys
<bcp14>MUST</bcp14> be added to the zone. One with the old algorithm and one with the
new algorithm.</t>
      </section>
      <section anchor="ksk-zsk-split-ksk-operable-zsk-inoperable">
        <name>KSK / ZSK split, KSK operable, ZSK inoperable</name>
        <t>Since the old ZSK is inoperable, it cannot be used to create new
RRSIGs. Therefore the zone cannot be changed and only the Pre-Publication
method can be used. See <xref target="RFC7583"/> section 2.1.</t>
        <t>Section 3.2.1 of <xref target="RFC7583"/> documents the timeline for this
method.</t>
        <t>The following diagram shows the timeline of the restoration.
Time increases along the horizontal scale from left to right and the vertical
lines indicate events in the process. Significant times and time intervals
are marked.</t>
        <artwork><![CDATA[
              |1|      |2|   |3|      |4|
               |        |     |        |
Key N         - - ----------->|<-Iret->|
               |        |     |        |
Key N+1        |<-Ipub->|<--->|<----- - -
               |        |     |        |
Key N                                 Trem
Key N+1        Tpub    Trdy  Tact

                  ---- Time ---->
]]></artwork>
        <t>Event 1: The new ZSK is added to the DNSKEY RRset at its publication time
(Tpub).</t>
        <t>The inoperable ZSK and all RRSIGs it created <bcp14>MUST</bcp14> remain in the zone.</t>
        <t>The new ZSK must be published long enough to guarantee that any cached
DNSKEY RRset contains the new ZSK. This interval is the publication
interval (Ipub), given by</t>
        <artwork><![CDATA[
Ipub = Dprp + TTLkey
]]></artwork>
        <t>Dprp is the propagation delay, the time it takes for changes to
propagate to all authoritative nameserver instances. TTLkey is the TTL
of the DNSKEY RRset.</t>
        <t>Event 2: The new ZSK can be used when it becomes ready at Trdy.</t>
        <artwork><![CDATA[
Trdy = Tpub + Ipub.
]]></artwork>
        <t>At this point the zone can be changed again.</t>
        <t>Event 3: At some later time, the zone is signed with the new ZSK. At this
point RRSIGs from the inoperable ZSK can be removed. The inoperable ZSK
<bcp14>MUST</bcp14> be retained in the DNSKEY RRset.</t>
        <t>Event 4: The inoperable ZSK can be removed after the retire interval (Iret).</t>
        <artwork><![CDATA[
Iret = Dsgn + Dprp + TTLsig
]]></artwork>
        <t>Dsgn is the delay needed to ensure that all existing RRsets are signed
with the new ZSK, Dprp is the propagation delay and TTLsig is the
maximum TTL of all RRSIG records.</t>
        <t>Theoretically the Double-Signature method could be used as well. In this case
records in the zone can only be changed after the retire interval, which is at
least as long as the publication interval of the Pre-Publication
method. The Double-Signature retire interval is given by:</t>
        <artwork><![CDATA[
Iret = Dsgn + Dprp + max(TTLkey, TTLsig)
]]></artwork>
      </section>
      <section anchor="ksk-zsk-split-ksk-inoperable">
        <name>KSK / ZSK split, KSK inoperable</name>
        <t>Since the old KSK is inoperable, the DNSKEY RRset cannot be
changed. Therefore, only the Double-DS method can be used. See
<xref target="RFC7583"/> section 2.2.</t>
        <t>If the ZSK is inoperable as well, it <bcp14>MUST NOT</bcp14> be restored yet.</t>
        <t>Section 3.3.2 of <xref target="RFC7583"/> documents the timeline for this
method.</t>
        <t>The following diagram shows the timeline of the restoration.
The diagram follows the convention described in Section 4.1.</t>
        <artwork><![CDATA[
            |1|      |2|       |3|  |4|      |5|
             |        |         |    |        |
Key N       - ---------------------->|<-Iret->|
             |        |         |    |        |
Key N+1      |<-Dreg->|<-IpubP->|<-->|<------- -
             |        |         |    |        |
Key N                                        Trem
Key N+1     Tsbm     Tpub      Trdy Tact

                 ---- Time ---->
]]></artwork>
        <t>Event 1: A new DS record is added to the DS RRset in the parent
zone, this is the submission time, Tsbm.</t>
        <t>Event 2: After the registration delay, Dreg, the DS record is
published in the parent zone. This is the publication time (Tpub).</t>
        <artwork><![CDATA[
Tpub = Tsbm + Dreg.
]]></artwork>
        <t>The DS record must be published long enough to guarantee that any
cached DS RRset contains the new DS record. This is the parent
publication interval (IpubP).</t>
        <artwork><![CDATA[
IpubP = DprpP + TTLds
]]></artwork>
        <t>DprpP is the propagation delay of the parent zone, i.e. the time it
takes for changes to propagate to all authoritative servers of the
parent zone. TTLds is the TTL of the DS RRset at the parent.</t>
        <t>Event 3: The new KSK can be used when it becomes ready at Trdy.</t>
        <artwork><![CDATA[
Trdy = Tpub + IpubP
]]></artwork>
        <t>Event 4: At this point, Tact, the new KSK is added to the DNSKEY
RRset and used to generate the DNSKEY RRsig. The old, inoperable
KSK can be removed. The ZSK <bcp14>MUST</bcp14> remain in the DNSKEY RRset.</t>
        <t>If the ZSK is inoperable, the ZSK signing function can be now be
restored using the procedure in the previous section.</t>
        <t>To ensure that no caches have DNSKEY RRset with the old KSK, the old
DS record <bcp14>MUST</bcp14> remain in the parent zone for the duration of the
retire interval (Iret), given by:</t>
        <artwork><![CDATA[
Iret = DprpC + TTLkey
]]></artwork>
        <t>DprpC is the child propagation delay, the time it takes for changes to
propagate to all authoritative nameserver instances of the child
zone. TTLkey is the TTL of the DNSKEY RRset.</t>
        <t>Event 5: The old DS record can be removed from the parent zone at Trem.</t>
        <artwork><![CDATA[
Trem = Tact + Iret
]]></artwork>
      </section>
      <section anchor="csk-inoperable">
        <name>CSK inoperable</name>
        <t>Since the old CSK is inoperable, the DNSKEY RRset cannot be
changed. Therefore, only the Double-DS method can be used. See
<xref target="RFC7583"/> section 2.2.</t>
        <t>Section 3.3.2 of <xref target="RFC7583"/> documents the timeline for this method.</t>
        <t>Since the CSK is also used to sign the zone, the timing of the
Double-DS method needs to be adjusted.</t>
        <t>The inoperable CSK and all RRSIGs it created <bcp14>MUST</bcp14> remain in the zone.</t>
        <t>The following diagram shows the timeline of the restoration.
The diagram follows the convention described in Section 4.1.</t>
        <artwork><![CDATA[
            |1|      |2|       |3|  |4|      |5|
             |        |         |    |        |
Key N       - ---------------------->|<-Iret->|
             |        |         |    |        |
Key N+1      |<-Dreg->|<-IpubP->|<-->|<------- -
             |        |         |    |        |
Key N                                        Trem
Key N+1     Tsbm     Tpub      Trdy Tact

                 ---- Time ---->
]]></artwork>
        <t>Event 1: A new DS record is added to the DS RRset in the parent zone,
this is the submission time, Tsbm.</t>
        <t>Event 2: After the registration delay, Dreg, the DS record is published
in the parent zone. This is the publication time (Tpub).</t>
        <artwork><![CDATA[
Tpub = Tsbm + Dreg.
]]></artwork>
        <t>The DS record must be published long enough to guarantee that any
cached DS RRset contains the new DS record. This is the parent
publication interval (IpubP) given by</t>
        <artwork><![CDATA[
IpubP = DprpP + TTLds
]]></artwork>
        <t>DprpP is the propagation delay of the parent zone, i.e. the time it
takes for changes to propagate to all authoritative servers of the
parent zone. TTLds is the TTL of the DS RRset at the parent.</t>
        <t>Event 3: The new CSK can be used when it becomes ready at Trdy.</t>
        <artwork><![CDATA[
Trdy = Tpub + IpubP
]]></artwork>
        <t>Event 4: At this point the new CSK is added to the DNSKEY RRset and
used to generate the DNSKEY RRsig. The old, inoperable CSK <bcp14>MUST</bcp14> remain
in the DNSKEY RRset. The new CSK can be used to generate the RRsigs for
the rest of the zone. The RRSIGs generated by the inoperable CSK <bcp14>MUST</bcp14>
remain in the zone.</t>
        <t>To ensure that no caches have DNSKEY RRset with the old CSK, the old
DS record <bcp14>MUST</bcp14> remain in the parent zone for the duration of the
retire interval (Iret), given by:</t>
        <artwork><![CDATA[
Iret = Dsgn + DprpC + max(TTLkey, TTLsig)
]]></artwork>
        <t>Dsgn is the delay needed to ensure that all existing RRsets are signed
with the new CSK. DprpC is the child propagation delay, the time it
takes for changes to propagate to all authoritative nameserver
instances of the child zone. TTLkey is the TTL of the DNSKEY RRset and
TTLsig is the maximum TTL of all RRSIG records.</t>
        <t>Event 5: The old DS record can be removed from the parent zone at Trem.</t>
        <artwork><![CDATA[
Trem = Tact + Iret
]]></artwork>
        <t>At the same time the old, inoperable CSK and all its signatures can be
removed as well.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>All security considerations of <xref target="RFC9364"/> apply to this document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9364">
          <front>
            <title>DNS Security Extensions (DNSSEC)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>This document describes the DNS Security Extensions (commonly called "DNSSEC") that are specified in RFCs 4033, 4034, and 4035, as well as a handful of others. One purpose is to introduce all of the RFCs in one place so that the reader can understand the many aspects of DNSSEC. This document does not update any of those RFCs. A second purpose is to state that using DNSSEC for origin authentication of DNS data is the best current practice. A third purpose is to provide a single reference for other documents that want to refer to DNSSEC.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="237"/>
          <seriesInfo name="RFC" value="9364"/>
          <seriesInfo name="DOI" value="10.17487/RFC9364"/>
        </reference>
        <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6781">
          <front>
            <title>DNSSEC Operational Practices, Version 2</title>
            <author fullname="O. Kolkman" initials="O." surname="Kolkman"/>
            <author fullname="W. Mekking" initials="W." surname="Mekking"/>
            <author fullname="R. Gieben" initials="R." surname="Gieben"/>
            <date month="December" year="2012"/>
            <abstract>
              <t>This document describes a set of practices for operating the DNS with security extensions (DNSSEC). The target audience is zone administrators deploying DNSSEC.</t>
              <t>The document discusses operational aspects of using keys and signatures in the DNS. It discusses issues of key generation, key storage, signature generation, key rollover, and related policies.</t>
              <t>This document obsoletes RFC 4641, as it covers more operational ground and gives more up-to-date requirements with respect to key sizes and the DNSSEC operations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6781"/>
          <seriesInfo name="DOI" value="10.17487/RFC6781"/>
        </reference>
        <reference anchor="RFC7583">
          <front>
            <title>DNSSEC Key Rollover Timing Considerations</title>
            <author fullname="S. Morris" initials="S." surname="Morris"/>
            <author fullname="J. Ihren" initials="J." surname="Ihren"/>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="W. Mekking" initials="W." surname="Mekking"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document describes the issues surrounding the timing of events in the rolling of a key in a DNSSEC-secured zone. It presents timelines for the key rollover and explicitly identifies the relationships between the various parameters affecting the process.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7583"/>
          <seriesInfo name="DOI" value="10.17487/RFC7583"/>
        </reference>
        <reference anchor="RFC7958">
          <front>
            <title>DNSSEC Trust Anchor Publication for the Root Zone</title>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <author fullname="J. Schlyter" initials="J." surname="Schlyter"/>
            <author fullname="G. Bailey" initials="G." surname="Bailey"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The root zone of the Domain Name System (DNS) has been cryptographically signed using DNS Security Extensions (DNSSEC).</t>
              <t>In order to obtain secure answers from the root zone of the DNS using DNSSEC, a client must configure a suitable trust anchor. This document describes the format and publication mechanisms IANA has used to distribute the DNSSEC trust anchors.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7958"/>
          <seriesInfo name="DOI" value="10.17487/RFC7958"/>
        </reference>
        <reference anchor="RFC9499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document updates RFC 2308 by clarifying the definitions of "forwarder" and "QNAME". It obsoletes RFC 8499 by adding multiple terms and clarifications. Comprehensive lists of changed and new definitions can be found in Appendices A and B.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="9499"/>
          <seriesInfo name="DOI" value="10.17487/RFC9499"/>
        </reference>
        <reference anchor="RFC9824">
          <front>
            <title>Compact Denial of Existence in DNSSEC</title>
            <author fullname="S. Huque" initials="S." surname="Huque"/>
            <author fullname="C. Elmerot" initials="C." surname="Elmerot"/>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <date month="September" year="2025"/>
            <abstract>
              <t>This document describes a technique to generate a signed DNS response on demand for a nonexistent name by claiming that the name exists but doesn't have any data for the queried record type. Such responses require only one minimally covering NSEC or NSEC3 record, allow online signing servers to minimize signing operations and response sizes, and prevent zone content disclosure.</t>
              <t>This document updates RFCs 4034 and 4035.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9824"/>
          <seriesInfo name="DOI" value="10.17487/RFC9824"/>
        </reference>
        <reference anchor="Shamir">
          <front>
            <title>How to Share a Secret</title>
            <author fullname="Adi Shamir">
              <organization/>
            </author>
            <date year="1979" month="November"/>
          </front>
          <seriesInfo name="ACM Press" value="Communications of the ACM, Vol. 22, No. 11, pp. 612-613"/>
          <seriesInfo name="DOI" value="10.1145/359168.359176"/>
        </reference>
      </references>
    </references>
    <?line 420?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The document draws heavily from the work in <xref target="RFC7583"/> and we thank
the authors for their work:</t>
      <ul spacing="normal">
        <li>
          <t>Stephen Morris</t>
        </li>
        <li>
          <t>Johan Ihren</t>
        </li>
        <li>
          <t>John Dickinson</t>
        </li>
        <li>
          <t>W. (Matthijs) Mekking</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAIoD8WgAA+1b63bbRpL+30/RK/+xxyQ99N08SWY0lBxrZV1WlNcnu2d/
NIEm2SPcFg1IpmO/yzzLPNl+Vd2NCy9O4kxm9pwZJUcGQaC6uuqrqq8K0HA4
FJWpEj2RB0fns9nxVJ7qtbzStspLfSAiVellXq4n0mSLXIg4jzKV4uq4VItq
uMjnVpfDOLN5Qb+tjoY3el2624e/Hwtbz1Njrcmzal3gvpPj69dS3pMqsTnW
NFmsC41fWXUwkAc6NrjRqIQ+nBz+Cf/kJY6url8fiKxO57qciBg6TUSUZ1Zn
trYTWZW1FrcT+USoUitIvSh0qSqsaaXKYnmmMrXUKa0h7vLyZlnmdUEbzlNl
MnmODcnZ2lY6le2dBwIbwdXxRMihdLaho9hYhUtLWeoov9Xlmk7OVXRTF7yY
37u4d6uzGnrek9Kv9/57+uDM8B5qmGwpv6ev6DQ0SeiSP+oPKi0SPYrylM6r
MlpN5KqqCjt59Kjz5SMnbmmqVT2fyHez46tHV8eXF3QygYVstfu2t4fXx7Nr
IVRdrfKSNickfhZ1kjjPvk7IA5m8INfyd3m5VJn5yHaZyKuTy2N5Pp3yV9rp
7XDwx9IUepTpalvomSormPpSJ/ZnikwLXNtKFFleprj8FiaV8ur19NWT508n
glDZP//8xcuxP3zx7OWTcPjq2ctw49NXr8Lhy8dP6XC2UqkhW+DHR8Ob/E5W
OX1TaqnkTEcl7Qs/jeHox+2zv9fD2HiJ/CUMY7QlRf098uBweiYvARR7ABRO
8zStMxN5wOYLWa20xCUD+Z95MpKPHw/keT6S4/FAFsVIPh8/Hj4fPznwwo4u
TiZy/PvRePz02aMnz16Nn78c0T8vnvMFHCxy/OrFq+F4LMRwOJRqbqtSRbDp
9cpYiZCuKTZkrG1Umrm2rACCtsahrUtANIsJrHR6BYwn9AF6+qAoSnOLVSTi
xSJNwFo+k1izzHQ5kieVLLBbrIHthQBTiVzWJlZZhLUyJBqr2zs7IuUccZbS
iibjm+cAsttIauI40QKIP8mqMo/riAQL4YX8+KOHyefPsrbYS1HPExOx0Khc
F1W+LFWxWpOfizK/NTFpgnxXmmqNXeWVZoF+q2RKNZKvyzxFoPc2UuS4jy67
NfpuIE0F6wnYsoJXk2QtTVrkZaVwDZa60bpgU3Y3aRlfEoZGZsE9IjIl3GIr
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

-->

</rfc>
