<?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-tld-zone-pipeline-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="TLD Zone Pipeline Requirements">TLD Zone Pipeline: Requirements And Design Principles</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="J." surname="Schlyter" fullname="Jakob Schlyter">
      <organization>Kirei AB</organization>
      <address>
        <email>jakob@kirei.se</email>
      </address>
    </author>

    <date />

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

    <abstract>


<t>Today most TLD registries publish DNSSEC signed zones. The sequence of steps
from generating the unsigned zone, via DNSSEC signing and various types of
verification is referred to as the "zone pipeline".</t>

<t>The robustness and correctness of the zone pipeline is of crucial
importance and the zone pipeline is one of the most critical parts of
the operations of a TLD registry.</t>

<t>The goal of this document is to describe the requirements that the
.SE Registry choose in preparation for the implementation of a new zone
pipeline. The document also describes some of the design consequences that
follow from the requirements. Hence this document is intended to work as a
guide for understanding the actual implementation, which is planned to be
released as open source.</t>

<t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/johanix/draft-johani-tld-zone-pipeline">https://github.com/johanix/draft-johani-tld-zone-pipeline</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>Today most TLD registries publish DNSSEC signed zones. This typically
leads to a zone production "pipeline" that consists of several steps,
including generation of the unsigned zone, signing of the zone and
various types of verifications that the zone is correct before
publication on the Internet.</t>

<t>In some cases, including the .SE Registry, the zone pipeline was not
the result of a clear requirements process, nor was it the result of a
concious design and implementation. Rather, it was the result of
combining various tools in a mostly ad-hoc way that achieved the goal
of moving the zone via signing and verifications towards publication.</t>

<t>When a critical part of the operation of a TLD registry is the result
of an ad-hoc process there are likely to be hidden risks. That was the
case for the .SE registry, which had a serious incident in February
2022. Because of that incident, .SE decided to re-evaluate the
requirements on the zone pipeline and then create a more robust
implementation from scratch.</t>

<t>This document aims to describe the requirements for zone production
(also known as "zone pipeline") that the .SE Registry choose in
preparation for the implementation of the new zone pipeline. It is
developed for the needs of the .SE and .NU TLD Registries, but the
conclusions are intended to be generally applicable.</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="purpose"><name>Purpose</name>

<t>A TLD Registry has a total responsibility towards society and the
Internet community to ensure, at any given time, public access to
correct versions of the DNS zones under their management. In order to
meet this commitment, three components are essentially required:</t>

<t><list style="symbols">
  <t>Generation of unsigned zones from the Registry System.</t>
  <t>Quality control and signing of the zones.</t>
  <t>Publication of resulting signed zones.</t>
</list></t>

<t>The first step is handled by the Registry System. The third step is
handled by a combination of external providers of authoritative DNS
service and in-house DNS service. Both of these steps are out-of-scope
for this document</t>

<t>The sole purpose of this document is to provide a correct set of
requirements for the second step, between zone generation in the
Registry System and zone publication on the public Internet.</t>

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

<t>Upstream: : Further up in the zone pipeline, i.e. in the direction of
the Registry System.</t>

<t>Downstream: : Further down the zone pipeline, i.e. towards the public
Internet.</t>

</section>
<section anchor="basic-design-principles"><name>Basic Design Principles</name>

<t>A number of fundamental principles are defined for the design of the
system. The intention of these principles is to minimize the risk that
the zone data (as generated by the Registry System) can somehow change
at any stage through the zone pipeline.</t>

<t><list style="symbols">
  <t>Critical path for zone data must be via proven and well-reviewed
standard software. This critical path is called the "zone pipeline".  <vspace blankLines='1'/>
Rationale: Using well-established software used by others in the
industry reduces development needs for the Registry. By not being
critically dependent on self-developed software, the dependence on
individuals is reduced.</t>
  <t>Standardized protocols shall be used as far as possible.  <vspace blankLines='1'/>
Rationale: Individual components must be replaceable as easily as
possible.</t>
  <t>Consequences of inaccuracies in custom software must be limited as far
as possible and must never affect published zone data.  <vspace blankLines='1'/>
Rationale: Obvious opportunities for risk minimization of a critical
system within the business.</t>
  <t>Verification, signing and publication of the zone must be able to take
place independently and without dependence on infrastructure outside
the operating facility.  <vspace blankLines='1'/>
Rationale: The ability to always maintain and publish an updated
zone is the most important responsibility of the Registry. To ensure
the ability to always maintain this ability the zone production must
be self-contained.</t>
</list></t>

</section>
<section anchor="interface-to-the-registry"><name>Interface to the Registry</name>

<t>Interface to the Registry System must be done according to
standardized protocols. This requirement has the following
consequences:</t>

<t><list style="symbols">
  <t>Zone data MUST be retrieved from the Registry System using AXFR and
IXFR <xref target="RFC5936"/>.</t>
  <t>The request for publication of new zone data MUST be notified with DNS
NOTIFY <xref target="RFC1995"/>.</t>
  <t>Zone data published by the Registry System MUST contain a checksum in
the form of ZONEMD <xref target="RFC8976"/>.</t>
</list></t>

</section>
<section anchor="local-updates"><name>Local Updates</name>

<t>During normal operation, no changes to the zone data retrieved from
the Registry may take place. However, there may be situations where
the Registry is not reachable (nor is it expected to be reachable
within a reasonable time) and where local updates of zone data must be
able to be carried out. This can for example, be redirection of
socially important infrastructure.</t>

<t>In a crisis situation (emergency operation), zone updates must be able
to take place locally. Updates that take place in this way are
introduced into regular systems as soon as possible. Return to normal
operation may only take place after all changes made during emergency
operation have been introduced into the regular system.</t>

<t>Local updates must be applied using a strict and traceable method. It
must be clear at all times whether local updates have been applied,
what these are and who requested them.</t>

<t>In cases where local updates have taken place, ZONEMD MUST be updated.</t>

<t>N.B. Local updates are an extraordinary measure and must not be used
except in emergency situations. Procedures for who may request these
are decided by the Internet Foundation's crisis management.</t>

</section>
<section anchor="ingress-verification"><name>Ingress Verification</name>

<t>Before signing, a number of checks must be performed on the zone
contents. The reason why checking must take place before signing is to
ensure that the zone being signed is always correct and can thus
continue to be re-signed in the event of problems upstream. The exact
checks to be carried out are set out in a separate specification and
are subject to local policy.</t>

<section anchor="requirements-on-ingress-verification"><name>Requirements on ingress verification</name>

<t><list style="symbols">
  <t>The ingress verification MUST prevent an updated incorrect zone from
being signed. An already approved previous version of the zone MUST
continue to be signed until a new zone is approved.</t>
  <t>New zone controls MUST be able to be added without the component for
ingress verification of zone data needing to be redesigned</t>
  <t>The interface from the zone pipeline to the ingress verification
function MUST be DNS AXFR. This means that all controls must
logically sit to the side and not be part of the critical
path. I.e. the verification code is not part of the zone pipeline.</t>
  <t>All zone controls, self-developed or imported, must have local
ownership within the organization.</t>
</list></t>

</section>
<section anchor="examples-of-ingress-verification-checks"><name>Examples of ingress verification checks</name>

<t><list style="symbols">
  <t>Check that the zone data is complete.</t>
  <t>Check that the ZONEMD, which has been generated by the registry system, is correct</t>
  <t>Check that delegation information for the zone itself is correct.</t>
  <t>Check that the delta (i.e. the difference) between the current zone
and the previous version is within approved limits.</t>
  <t>Check that certain crucial records are present and correct (the
zone's SOA record is one example).</t>
</list></t>

</section>
</section>
<section anchor="signing"><name>Signing</name>

<t>The task of the signing step is to keep an approved and received zone
signed for an arbitrary length of time until a new zone is received
from upstream (i.e. from Registry via Ingress Verification).</t>

<section anchor="key-management"><name>Key management</name>

<t>The following requirements apply to the management of cryptographic
keys for signing zone data:</t>

<t><list style="symbols">
  <t>The key material must be stored and used
in an HSM that meets the security requirements set by the CISO.</t>
  <t>The interface for accessing the key material SHALL be PKCS#11.</t>
  <t>All keys must, to facilitate replication between different signing
entities, be generated in advance.In order to facilitate replication
between different signing entities, all keys must be generated in
advance.</t>
  <t>Exchange of KSK can be initiated automatically or manually, and is
automatically terminated when the DS record in the parent zone is
updated (after according to an appropriate safety margin).</t>
  <t>Changing the KSK may only be completed if the DS record in the
parent zone is updated.</t>
  <t>Replacement of ZSK MUST be done automatically.</t>
</list></t>

</section>
<section anchor="zone-signing"><name>Zone signing</name>

<t>The following requirements apply to signing zone data:</t>

<t><list style="symbols">
  <t>Signing MUST be done using key material via PKCS#11.</t>
  <t>The signing function MUST support algorithm rollover, e.g,. from RSA/SHA-256 to ECC/P-256/SHA-256.</t>
  <t>Signing MUST be done with either NSEC or NSEC3 semantics.</t>
  <t>If NSEC3 salt is used, the salt MUST be periodically changed automatically.</t>
  <t>Change of DNSSEC signing semantics from NSEC to NSEC3 and vice versa
MUST be possible automatically.</t>
  <t>Previous signatures that are valid within a configurable time window
SHALL be reused when re-signing, in order to reduce the rate of
change on the zone.</t>
  <t>The signing function SHALL recreate the ZONEMD RR per <xref target="RFC8976"/> after
the zone has been signed.</t>
</list></t>

</section>
</section>
<section anchor="egress-verification"><name>Egress Verification</name>

<t>After signing, several checks must be performed on the zone contents.
Apart from the obvious validation of generated DNSSEC signatures it is
also important to ensure that the signing step only added DNSSEC-
information without in any way modifying the unsigned data.</t>

<section anchor="requirements-on-egress-verification"><name>Requirements on egress verification</name>

<t><list style="symbols">
  <t>All generated DNSSEC signatures (RRSIG records) MUST be validated.</t>
  <t>The NSEC (or NSEC3) chain MUST be verified to be complete.</t>
  <t>The non-DNSSEC content of the signed zone MUST be provably identical
to the corresponding unsigned zone that entered the signing step.</t>
</list></t>

</section>
<section anchor="examples-of-egress-verification-checks"><name>Examples of egress verification checks</name>

<t><list style="symbols">
  <t>Verify the zone with other software than was used for signing.</t>
  <t>Remove all data added by the signing step and check the ZONEMD value
over that data with the ZONEMD from before the signing.</t>
</list></t>

</section>
</section>
<section anchor="distribution"><name>Distribution</name>

<t>The following requirements apply to distribution of the signed zone:</t>

<t><list style="symbols">
  <t>The signed zone MUST be retrieved from signing and egress
verification to the distribution points with AXFR (not IXFR).  <vspace blankLines='1'/>
It must be AXFR, as otherwise it is not possible to switch from one
upstream to another in the distribution points (the IXFR from one
upstream will not apply cleanly to a zone from another upstream).</t>
  <t>The signed zone SHALL be distributed to the designated authoritative
name server services using AXFR/IXFR.</t>
  <t>To reduce convergence time towards the public Internet, the signed
zone MUST be distributed with IXFR as far as possible.</t>
  <t>At least two complete zone publishing chains MUST be operational and
always active.  <vspace blankLines='1'/>
This is a policy decision, based on the strong intent to avoid all 
single points of failure, including in the signing operation.</t>
  <t>Choice of zone publishing chain is an active configuration choice
in each distribution point and MUST always be the same for all
distribution points.</t>
  <t>The signed zone from the selected zone publishing chain MUST be
 retrieved by all distribution points in all operating facilities.</t>
</list></t>

</section>
<section anchor="resulting-design-consequences"><name>Resulting Design Consequences</name>

<t><list style="symbols">
  <t>The requirement on being able to prove that no unsigned data has
been modified during signing is most efficiently fullfilled by
computing the ZONEMD checksum on the unsigned data after signing
(i.e. the signed zone modulo the DNSSEC related records DNSKEY,
RRSIG. NSEC, NSEC3, NSEC3PARAM, apex CDS and CDNSKEY) and comparing
that to the ZONEMD checksum for the corresponding unsigned zone.</t>
  <t>The ZONEMD checksums need to be stored outside the zone pipeline,
indexed by the unsigned zone that each checksum corresponds to.</t>
  <t>The signed zone may (and will) change the SOA Serial independently
of the unsigned zone. For this reason the ZONEMD checksums can not
be stored using the SOA Serial as the index. Therefore a separate,
unique, identifier is attached to each new version of the zone as a
TXT record. A UUID is used as the identifier.</t>
  <t>Each unsigned zone MUST have a ZONEMD and a UUID index to store it
under. Therefore changes to the unsigned zone via the local update
facility MUST update the UUID in addition to any other change that
is executed.</t>
  <t>The Registry runs multiple, parallel zone pipelines for the same
zone with the requirement to be able to switch which pipeline is
"active" at any time. As the local update facility is responsible
for updating the UUID if a local change is needed, the same UUID
will identify the exact same zone in all pipelines.</t>
  <t>The requirement that the zone pipeline only consists of proven and
widely used software forces all local and custom software (including
various tests and verification modules) to be located outside the
zone pipeline. This cause a need for a component inside the zone
pipeline with the ability to call an external "verifier" for
verifications. At present only one such component is known (the
authoritative nameserver NSD with its "verify:" attribute), but we
hope that there will be more alternatives in the future.</t>
</list></t>

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

<t>The correct generation and DNSSEC signing of a TLD zone is a matter of
significant importance. As such requirements and methods for
verification of correctness is an important matter that has previously
not been much publically discussed.</t>

<t>As a requirements specification this document aims to make this topic
more public and visible with the intent of improving the correctness
of the requirements via public review.</t>

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

<t>None</t>

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

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

<t>We appreciate suggestions and helpful comments from a number of
people, including but not limited to:</t>

<t><list style="symbols">
  <t>Stefan Ubbingk, SIDN</t>
  <t>Calvin Browne, DNS Pty, Ltd</t>
  <t>David Blacka, Verisign</t>
  <t>Pawel Kowalik, DENIC</t>
</list></t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<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='RFC5936' target='https://www.rfc-editor.org/info/rfc5936'>
  <front>
    <title>DNS Zone Transfer Protocol (AXFR)</title>
    <author fullname='E. Lewis' initials='E.' surname='Lewis'/>
    <author fullname='A. Hoenes' initials='A.' role='editor' surname='Hoenes'/>
    <date month='June' year='2010'/>
    <abstract>
      <t>The standard means within the Domain Name System protocol for maintaining coherence among a zone's authoritative name servers consists of three mechanisms. Authoritative Transfer (AXFR) is one of the mechanisms and is defined in RFC 1034 and RFC 1035.</t>
      <t>The definition of AXFR has proven insufficient in detail, thereby forcing implementations intended to be compliant to make assumptions, impeding interoperability. Yet today we have a satisfactory set of implementations that do interoperate. This document is a new definition of AXFR -- new in the sense that it records an accurate definition of an interoperable AXFR mechanism. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='5936'/>
  <seriesInfo name='DOI' value='10.17487/RFC5936'/>
</reference>

<reference anchor='RFC1995' target='https://www.rfc-editor.org/info/rfc1995'>
  <front>
    <title>Incremental Zone Transfer in DNS</title>
    <author fullname='M. Ohta' initials='M.' surname='Ohta'/>
    <date month='August' year='1996'/>
    <abstract>
      <t>This document proposes extensions to the DNS protocols to provide an incremental zone transfer (IXFR) mechanism. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='1995'/>
  <seriesInfo name='DOI' value='10.17487/RFC1995'/>
</reference>

<reference anchor='RFC8976' target='https://www.rfc-editor.org/info/rfc8976'>
  <front>
    <title>Message Digest for DNS Zones</title>
    <author fullname='D. Wessels' initials='D.' surname='Wessels'/>
    <author fullname='P. Barber' initials='P.' surname='Barber'/>
    <author fullname='M. Weinberg' initials='M.' surname='Weinberg'/>
    <author fullname='W. Kumari' initials='W.' surname='Kumari'/>
    <author fullname='W. Hardaker' initials='W.' surname='Hardaker'/>
    <date month='February' year='2021'/>
    <abstract>
      <t>This document describes a protocol and new DNS Resource Record that provides a cryptographic message digest over DNS zone data at rest. The ZONEMD Resource Record conveys the digest data in the zone itself. When used in combination with DNSSEC, ZONEMD allows recipients to verify the zone contents for data integrity and origin authenticity. This provides assurance that received zone data matches published data, regardless of how the zone data has been transmitted and received. When used without DNSSEC, ZONEMD functions as a checksum, guarding only against unintentional changes.</t>
      <t>ZONEMD does not replace DNSSEC: DNSSEC protects individual RRsets (DNS data with fine granularity), whereas ZONEMD protects a zone's data as a whole, whether consumed by authoritative name servers, recursive name servers, or any other applications.</t>
      <t>As specified herein, ZONEMD is impractical for large, dynamic zones due to the time and resources required for digest calculation. However, the ZONEMD record is extensible so that new digest schemes may be added in the future to support large, dynamic zones.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8976'/>
  <seriesInfo name='DOI' value='10.17487/RFC8976'/>
</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-tld-zone-pipeline-00</t>
</list></t>

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

<t><list style="symbols">
  <t>draft-johani-tld-zone-pipeline-01</t>
</list></t>

<ul empty="true"><li>
  <t>Security and IANA Considerations sections added.
Minor typos fixed.</t>
</li></ul>

<t><list style="symbols">
  <t>draft-johani-tld-zone-pipeline-02</t>
</list></t>

<ul empty="true"><li>
  <t>Several typos fixed. 
Further clarifications and explanations.</t>
</li></ul>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

