<?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 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dyson-dnssec-policy-initialisation-00" category="std" consensus="true" submissionType="IETF" updates="9432" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title>Initialisation of DNSSEC Policy for DNS Catalog Zones Members</title>
    <seriesInfo name="Internet-Draft" value="draft-dyson-dnssec-policy-initialisation-00"/>
    <author fullname="Karl Dyson">
      <organization>Nominet UK</organization>
      <address>
        <postal>
          <street>Minerva House</street>
          <street>Edmund Halley Road</street>
          <street>Oxford Science Park</street>
          <city>Oxford</city>
          <code>OX4 4DQ</code>
          <country>UK</country>
        </postal>
        <email>karl.dyson@nominet.uk</email>
        <uri>https://nominet.uk</uri>
      </address>
    </author>
    <date year="2025" month="April" day="25"/>
    <keyword>catalog zone</keyword>
    <keyword>dnssec policy initialisation</keyword>
    <keyword>dnssec signer</keyword>
    <abstract>
      <?line 47?>

<t>This document describes an update to "DNS Catalog Zones" (<xref target="RFC9432"/>) that facilitates a method to signal DNSSEC policy to DNSSEC signers for member zone(s) using information contained within a catalog zone.</t>
    </abstract>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document is a companion to draft-dyson-primary-zonefile-initialisation in that between them, and in conjunction with "DNS Catalog Zones" (<xref target="RFC9432"/>) and "Dynamic Updates in the Domain Name System (DNS UPDATE)" (<xref target="RFC2136"/>), it becomes possible to complete the end to end initialisation of the provisioning, distribution, signing and serving of a new zone using standards-defined mechanisms.</t>
      <t>The key steps covered are:</t>
      <ul spacing="normal">
        <li>
          <t>Dynamically add a new zone to a catalog ("DNS Dynamic Updates" (<xref target="RFC2136"/>), "DNS Catalog Zones" (<xref target="RFC9432"/>))</t>
        </li>
        <li>
          <t>Have a designated primary server initialise the zone and serve it (draft-dyson-primary-zonefile-initialisation)</t>
        </li>
        <li>
          <t>Have secondary servers automatically add and transfer the zone ("DNS Catalog Zones" (<xref target="RFC9432"/>))</t>
        </li>
        <li>
          <t>Have designated DNSSEC signer(s) initialise keys and signing policy for the zone (this document)</t>
        </li>
      </ul>
      <t>Operators of large scale DNS systems may want to be able to signal the creation of keys as well as key lifetime and other DNSSEC related policy parameters as part of an end-to-end automated mechanism. Further, they may want to avoid the need or overhead of engineering a bespoke solution with the ongoing need to support and maintain it.</t>
      <t>This document defines a vendor-independent mechanism of signalling DNSSEC policy parameters to DNSSEC signer(s) consuming a catalog zone.</t>
      <t>Broader provisioning of the base nameserver configuration is beyond the scope of this document.</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>The following is in addition to the conventions and definitions as defined in "DNS Catalog Zones" (<xref target="RFC9432"/>).</t>
      <t>The use of parenthesis in the examples is as described in "Domain Names - Implementation and Specification" (<xref target="RFC1035"/>) Section 5.1.</t>
    </section>
    <section anchor="catalog-zone-properties">
      <name>Catalog Zone Properties</name>
      <t>This section specifies new Catalog Zone level properties, additional to those defined in "DNS Catalog Zones" (<xref target="RFC9432"/>).</t>
      <section anchor="schema-version-version-property">
        <name>Schema Version (version property)</name>
        <t>For this memo, the value of the version.$CATZ TXT resource record is unchanged.</t>
        <t>"DNS Catalog Zones" (<xref target="RFC9432"/>) Section 3 is clear that "Catalog consumers <bcp14>MUST</bcp14> ignore any RRs in the catalog zone for which no processing is specified or which are otherwise not supported by the implementation." and as such the addition of the records outlined in this document will be ignored by implementations that do not recognise them.</t>
      </section>
      <section anchor="dnssec-dnssec-property">
        <name>DNSSEC (dnssec property)</name>
        <t>If the catalog zone consumer is configured to be a signer of the member zone being processed, the server <bcp14>MUST</bcp14> apply the policy in the catalog. This action does not have to be constrained to the point at which a member zone is newly added to the catalog zone. If a catalog zone is re-configured such that signing is added or updated, the policy <bcp14>MUST</bcp14> be applied to existing members zones within the catalog.</t>
        <t>If the server consuming the catalog zone is not configured to be a signer for the member zones in the catalog, records within the bailiwick of the dnssec property record <bcp14>MUST</bcp14> be ignored.</t>
        <t>The "dnssec" property and labels within that bailiwick are <bcp14>OPTIONAL</bcp14> and if absent then no special processing relating to DNSSEC should occur.</t>
        <t>A number of sub-properties, expressed as labels within the bailiwick of the "dnssec" label, define the initialisation parameters.</t>
        <section anchor="enabling-signing-enabled-property">
          <name>Enabling Signing (enabled property)</name>
          <t>The "enabled" property is used to signal whether zones should be signed.</t>
          <t>It is <bcp14>OPTIONAL</bcp14> and if absent, defaults to "1".</t>
          <t>This can be configured at both the catalog zone level, as well as at the member zone level. As such, it facilitates the ability to set policy parameters at the catalog level, and then override that setting on a per member zone level.</t>
          <section anchor="parameters">
            <name>Parameters</name>
            <t>The only parameter is a boolean, stored as a character-string in the RDATA of a TXT resource record.</t>
          </section>
          <section anchor="examples">
            <name>Examples</name>
            <t>Signing is disabled by default for member zones:</t>
            <artwork><![CDATA[
enabled.dnssec.$CATZ IN TXT "0"
]]></artwork>
            <t>Signing is enabled by default for member zones:</t>
            <artwork><![CDATA[
enabled.dnssec.$CATZ IN TXT "1"
]]></artwork>
          </section>
        </section>
        <section anchor="policy-policy-property">
          <name>Policy (policy property)</name>
          <t>If the implementation has the concept of pre-configured DNSSEC policy, the "policy" property can be used to indicate the name of such a policy.</t>
          <t>The "policy" property is <bcp14>OPTIONAL</bcp14>. If present, then its value takes priority over policy defined in the catalog.</t>
          <t>If the named policy is not configured on the designated signing server, then an error <bcp14>SHOULD</bcp14> be logged. DNSSEC related processing <bcp14>MAY</bcp14> continue if the other dnssec properties are present and correct. Otherwise, processing <bcp14>SHOULD</bcp14> continue as if the entire dnssec property section was absent.</t>
          <t>Note that the member zone section permits the catalog zone level settings to be overridden. A global policy can be overridden with either a different policy, or with key details at the member zone level (see <xref target="memberZoneSection"/>).</t>
          <section anchor="parameters-1">
            <name>Parameters</name>
            <t>The only parameter is a character-string in the RDATA of a TXT resource record containing name of the pre-configured policy.</t>
          </section>
          <section anchor="example">
            <name>Example</name>
            <artwork><![CDATA[
policy.dnssec.$CATZ IN TXT "some-dnssec-policy-name"
]]></artwork>
          </section>
        </section>
        <section anchor="keys-key-property">
          <name>Keys (key property)</name>
          <t>The "key" property is used to configure keys that will be applied to the member zone(s) in the catalog.</t>
          <t>In the case of a single combined key (type csk), at least one key <bcp14>MUST</bcp14> be defined.</t>
          <t>In the case of split keys (types zsk, ksk), at least one key of each type <bcp14>MUST</bcp14> be defined.</t>
          <t>If parameters are omitted, such as key sizes or timing parameters, sensible defaults following the guidance of "DNSSEC Operational Practices, Version 2" (<xref target="RFC6781"/>) <bcp14>MUST</bcp14> be used.</t>
          <section anchor="type-parameter">
            <name>type parameter</name>
            <t>The "type" parameter <bcp14>MUST</bcp14> be present, and is used to convey the key type. It <bcp14>MUST</bcp14> be one of csk, zsk or ksk</t>
          </section>
          <section anchor="alg-parameter">
            <name>alg parameter</name>
            <t>The "alg" parameter <bcp14>MUST</bcp14> be present, and is used to convey the key algorithm. Algorithms can be specified by name or number (see IANA Registry "DNS Security Algorithm Numbers").</t>
          </section>
          <section anchor="bits-parameter">
            <name>bits parameter</name>
            <t>The "bits" parameter is <bcp14>OPTIONAL</bcp14>, depending on whether this is relevant to the algorithm being used.</t>
          </section>
          <section anchor="lifetime-parameter">
            <name>lifetime parameter</name>
            <t>The "lifetime" parameter is <bcp14>OPTIONAL</bcp14> and is used to specify how long the key should be published for before being rolled.</t>
            <t>A value of zero (0) is used to indicate "unlimited" whereby the key will not be rolled. This is also the default if unspecified.</t>
          </section>
          <section anchor="examples-1">
            <name>Examples</name>
            <t>Combined Key</t>
            <artwork><![CDATA[
key.dnskey.$CATZ IN TXT "type=csk alg=RSASHA256 bits=2048 lifetime=0"
]]></artwork>
            <t>Split Key. The KSK will have unlimited lifetime due to the omitted lifetime parameter defaulting to zero (0). The ZSK will have a lifetime of 90 days.</t>
            <artwork><![CDATA[
key.dnssec.$CATZ IN TXT "type=ksk alg=ECDSAP256SHA256"
key.dnssec.$CATZ IN TXT "type=zsk alg=ECDSAP256SHA256 lifetime=90D"
]]></artwork>
          </section>
        </section>
        <section anchor="non-existence-nsec-property">
          <name>Non Existence (nsec property)</name>
          <t>The nsec parameter is <bcp14>OPTIONAL</bcp14>.</t>
          <t>If absent, it defaults to the value "nsec".</t>
          <section anchor="parameters-2">
            <name>Parameters</name>
            <t>The only parameter is a character-string in the RDATA of a TXT resource record containing the preferred NSEC mechanism.</t>
            <t>If the desired mechanism is NSEC3, the NSEC3 parameters <bcp14>MAY</bcp14> be supplied immediately after, separated by a space. If supplied, they <bcp14>MUST</bcp14> be compliant with "DNSSEC Security (DNSSEC) Hashed Authenticated Denial of Existence" (<xref target="RFC5155"/>) Section 3.3.</t>
            <t>If the value is set to "nsec3" and the NSEC3 parameters are omitted, the values <bcp14>MUST</bcp14> default to "1 0 0 -" as per "Guidance for NSEC3 Parameter Setting" (<xref target="BCP236"/>) Section 3.1.</t>
          </section>
          <section anchor="examples-2">
            <name>Examples</name>
            <t>NSEC</t>
            <artwork><![CDATA[
nsec.dnssec.$CATZ IN TXT "nsec"
]]></artwork>
            <t>NSEC3 with defaults from <xref target="BCP236"/></t>
            <artwork><![CDATA[
nsec.dnssec.$CATZ IN TXT "nsec3"
]]></artwork>
            <t>NSEC3 with supplied parameters</t>
            <artwork><![CDATA[
nsec.dnssec.$CATZ IN TXT "nsec3 1 1 0 aabbccdd"
]]></artwork>
          </section>
        </section>
      </section>
    </section>
    <section anchor="memberZoneSection">
      <name>Member Zone Properties</name>
      <t>The default properties outlined above can be overridden per member zone. If properties are specified in a more specific scope than the defaults, the most specific scope <bcp14>MUST</bcp14> be used.</t>
      <t>A subset <bcp14>MAY</bcp14> be specified in a more specific scope, for example, the SOA could be omitted, and just the NS records or DNSSEC parameters specified.</t>
      <t>The omitted properties would be inherited from the catalog level values.</t>
      <t>Similarly, if parameters for a property are defined at the catalog zone level, and only some parameters are overridden at the member zone level, the other parameters <bcp14>SHOULD</bcp14> be inherited from the catalog zone level.</t>
      <artwork><![CDATA[
<unique-N>.zones.$CATZ          0 PTR example.com.
enabled.dnssec.<unique-N>.zones.$CATZ IN TXT "1"
key.dnssec.<unique-N>.zones.$CATZ IN TXT ( "type=csk"
        "alg=ECDSAP256SHA256" )
nsec.dnssec.<unique-N>.zones.$CATZ IN TXT "nsec3"
]]></artwork>
      <section anchor="change-of-ownership-coo-property">
        <name>Change Of Ownership (coo property)</name>
        <t>There is no change to the coo property; if the member zone changes ownership to another catalog, fundamentally, the zone's master file already exists.</t>
        <t>The scope of this document is solely concerned with the initialisation of a new zone's master file, and so in the case of the zone changing ownership, the initialisation parameters <bcp14>MUST NOT</bcp14> be processed.</t>
        <t>Noting that the primary server for a given catalog's member zones may not be the primary server for the catalog zone itself, nor the primary server for another catalog's member zones, operators should consider their implementation's configuration when planning a change of ownership operation.</t>
      </section>
    </section>
    <section anchor="name-server-behaviour">
      <name>Name Server Behaviour</name>
      <section anchor="generalBehaviourSection">
        <name>General Behaviour</name>
      </section>
      <section anchor="member-zone-removal">
        <name>Member Zone Removal</name>
        <t>If the member zone is removed from the catalog zone, then any data or configuration related to the DNSSEC signing of the zone <bcp14>MUST</bcp14> also be removed unless the implementation provides a configuration option that facilitates retention.</t>
      </section>
      <section anchor="zone-associated-state-reset">
        <name>Zone-Associated State Reset</name>
        <t>In the event of a zone state reset being carried out, the state of the zone's master file <bcp14>MUST</bcp14> be reset as if the file was being initialised for the first time per this document.</t>
      </section>
    </section>
    <section anchor="implementation-and-operational-notes">
      <name>Implementation and Operational Notes</name>
      <t>When configuring the use of catalog zones, implementations should give the operator the ability to indicate whether the catalog zone consumer is a DNSSEC signer of the catalog's member zones.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document does not alter the security considerations outlined in "DNS Catalog Zones" (<xref target="RFC9432"/>).</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>IANA is requested to add the following entries to the registry:</t>
      <t>Registry Name: DNS Catalog Zones Properties</t>
      <t>Reference: this document</t>
      <table>
        <name>DNS Catalog Zones Properies Registry</name>
        <thead>
          <tr>
            <th align="left">Property Prefix</th>
            <th align="left">Description</th>
            <th align="left">Status</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">dnssec</td>
            <td align="left">DNSSEC Properties</td>
            <td align="left">Standards Track</td>
            <td align="left">this document</td>
          </tr>
          <tr>
            <td align="left">enabled.dnssec</td>
            <td align="left">Enable/Disable DNSSEC Signing</td>
            <td align="left">Standards Track</td>
            <td align="left">this document</td>
          </tr>
          <tr>
            <td align="left">policy.dnssec</td>
            <td align="left">DNSSEC Policy</td>
            <td align="left">Standards Track</td>
            <td align="left">this document</td>
          </tr>
          <tr>
            <td align="left">key.dnssec</td>
            <td align="left">DNSSEC Keys</td>
            <td align="left">Standards Track</td>
            <td align="left">this document</td>
          </tr>
          <tr>
            <td align="left">nsec.dnssec</td>
            <td align="left">DNSSEC Proof of Non Existence</td>
            <td align="left">Standards Track</td>
            <td align="left">this document</td>
          </tr>
        </tbody>
      </table>
      <t>Field meanings are unchanged from the definitions in "DNS Catalog Zones" (<xref target="RFC9432"/>).</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9432">
        <front>
          <title>DNS Catalog Zones</title>
          <author fullname="P. van Dijk" initials="P." surname="van Dijk"/>
          <author fullname="L. Peltan" initials="L." surname="Peltan"/>
          <author fullname="O. Surý" initials="O." surname="Surý"/>
          <author fullname="W. Toorop" initials="W." surname="Toorop"/>
          <author fullname="C.R. Monshouwer" initials="C.R." surname="Monshouwer"/>
          <author fullname="P. Thomassen" initials="P." surname="Thomassen"/>
          <author fullname="A. Sargsyan" initials="A." surname="Sargsyan"/>
          <date month="July" year="2023"/>
          <abstract>
            <t>This document describes a method for automatic DNS zone provisioning among DNS primary and secondary name servers by storing and transferring the catalog of zones to be provisioned as one or more regular DNS zones.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9432"/>
        <seriesInfo name="DOI" value="10.17487/RFC9432"/>
      </reference>
      <reference anchor="RFC2136">
        <front>
          <title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
          <author fullname="P. Vixie" initials="P." role="editor" surname="Vixie"/>
          <author fullname="S. Thomson" initials="S." surname="Thomson"/>
          <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
          <author fullname="J. Bound" initials="J." surname="Bound"/>
          <date month="April" year="1997"/>
          <abstract>
            <t>Using this specification of the UPDATE opcode, it is possible to add or delete RRs or RRsets from a specified zone. Prerequisites are specified separately from update operations, and can specify a dependency upon either the previous existence or nonexistence of an RRset, or the existence of a single RR. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2136"/>
        <seriesInfo name="DOI" value="10.17487/RFC2136"/>
      </reference>
      <reference anchor="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="RFC1035">
        <front>
          <title>Domain names - implementation and specification</title>
          <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
          <date month="November" year="1987"/>
          <abstract>
            <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="13"/>
        <seriesInfo name="RFC" value="1035"/>
        <seriesInfo name="DOI" value="10.17487/RFC1035"/>
      </reference>
      <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="RFC5155">
        <front>
          <title>DNS Security (DNSSEC) Hashed Authenticated Denial of Existence</title>
          <author fullname="B. Laurie" initials="B." surname="Laurie"/>
          <author fullname="G. Sisson" initials="G." surname="Sisson"/>
          <author fullname="R. Arends" initials="R." surname="Arends"/>
          <author fullname="D. Blacka" initials="D." surname="Blacka"/>
          <date month="March" year="2008"/>
          <abstract>
            <t>The Domain Name System Security (DNSSEC) Extensions introduced the NSEC resource record (RR) for authenticated denial of existence. This document introduces an alternative resource record, NSEC3, which similarly provides authenticated denial of existence. However, it also provides measures against zone enumeration and permits gradual expansion of delegation-centric zones. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5155"/>
        <seriesInfo name="DOI" value="10.17487/RFC5155"/>
      </reference>
      <referencegroup anchor="BCP236" target="https://www.rfc-editor.org/info/bcp236">
        <reference anchor="RFC9276" target="https://www.rfc-editor.org/info/rfc9276">
          <front>
            <title>Guidance for NSEC3 Parameter Settings</title>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <author fullname="V. Dukhovni" initials="V." surname="Dukhovni"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>NSEC3 is a DNSSEC mechanism providing proof of nonexistence by asserting that there are no names that exist between two domain names within a zone. Unlike its counterpart NSEC, NSEC3 avoids directly disclosing the bounding domain name pairs. This document provides guidance on setting NSEC3 parameters based on recent operational deployment experience. This document updates RFC 5155 with guidance about selecting NSEC3 iteration and salt parameters.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="236"/>
          <seriesInfo name="RFC" value="9276"/>
          <seriesInfo name="DOI" value="10.17487/RFC9276"/>
        </reference>
      </referencegroup>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 303?>

<section anchor="examples-3">
      <name>Examples</name>
      <section anchor="catalog-zone-example">
        <name>Catalog Zone Example</name>
        <t>The following is an example catalog zone showing some of the additional properties and parameters as outlined in this document.</t>
        <t>By default, zones are signed with ECDSAP256SHA256, and NSEC is used for proof of non existence.</t>
        <t>The example.com zone is not signed at all.</t>
        <t>The example.org zone is signed with RSASHA256 with 2048 bit keys.</t>
        <t>The example.net zone is signed with NSEC3 with OptOut set.</t>
        <artwork><![CDATA[
catz.invalid.                   0 SOA invalid. invalid. (
      1 3600 600 2419200 3600 )
catz.invalid.                   0 NS invalid.
enabled.dnssec.catz.invalid.    0 TXT "1"
key.dnssec.catz.invalid.        0 TXT ( "type=zsk"
      "alg=ECDSAP256SHA256" )
key.dnssec.catz.invalid.        0 TXT ( "type=ksk"
      "alg=ECDSAP256SHA256" )
nsec.dnssec.catz.invalid.       0 TXT "nsec"
kahdkh6f.zones.catz.invalid.    0 PTR example.com.
hajhsjha.zones.catz.invalid.    0 PTR example.net.
ytrytryt.zones.catz.invalid.    0 PTR example.org.
enabled.dnssec.kahdkh6f.zones.catz.invalid. 0 TXT "0"
key.dnssec.ytrytryt.zones.catz.invalid. 0 TXT ( "type=zsk"
     "alg=RSASHA256 bits=2048" )
key.dnssec.ytrytryt.zones.catz.invalid. 0 TXT ( "type=ksk"
     "alg=RSASHA256 bits=2048" )
nsec.hajhsjha.zones.catz.invalid. 0 TXT "nsec3 1 1 0 -"
]]></artwork>
      </section>
    </section>
    <section anchor="author-notesthoughts">
      <name>Author Notes/Thoughts</name>
      <t><em>NB: To be removed by the RFC Editor prior to publication.</em></t>
      <t>More parameters can be added to support timings, TTLs, etc, but I wanted to circulate the broad idea for feedback first before refining the detail.</t>
      <t>Not sure referring to BCP236 by section is correct as if the BCP is updated to refer to another RFC, the section reference may be incorrect... suspect I should remove the section reference...</t>
      <t>I've stated that at least one key of each type <bcp14>MUST</bcp14> be configured, 1xCSK or (1xZSK + 1xKSK) however, this doesn't permit for the scenario where the operator keeps their KSK offline and only periodically signs and re-inserts the keyset signature into the zone...</t>
      <t>It may also be nice to be able to say "type=none" so that if the zone received is already signed, it can be unsigned... see other operator/transition thought below...</t>
      <t>I'm mindful of this being useful, but also not overly complex. It's outside of the scope of this document, for example, as to the updating of the DS in the parent. There are other mechanisms, such as RFC9615 that deal with this.</t>
      <t>I'm also mindful that 3.2 says that if the policy changes, it must be applied to member zones - this feels like it is open to causing mayhem unless the operator is very careful. I'd like to include something like the word "gracefully" ('the policy <bcp14>MUST</bcp14> be gracefully applied') but this feels too wooly and unclear. I'd welome thoughts here.</t>
      <t>I've stated that if defined, the name of a pre-defined (in the implementation's config, such as BIND9's dnssec-policy) policy name should override policy defined in the catalog, but then permitted keys to be defined at a member zone level. This may be confusing. I'm thinking about revising/removing this.</t>
      <t>I'm thinking about defining named policy in the catalog and then setting a default named policy at the catalog level and just specifying the policy name at the mmeber zone level if there's a desire to override.</t>
      <t>so, something like:</t>
      <artwork><![CDATA[
key.dnssec.mypolicy.policies.dnssec.catz.invalid. 0 TXT ( "type=csk"
            "alg=13" )
nsec.dnssec.mypolicy.policies.dnssec.catz.invalid. 0 TXT "nsec3"
key.dnssec.otherpolicy.policies.dnssec.catz.invalid. 0 TXT ( "type=csk"
            "alg=8 bits 2048" )
nsec.dnssec.otherpolicy.policies.dnssec.catz.invalid. 0 TXT "nsec3 1 1 0 -"

enabled.dnssec.catz.invalid. 0 TXT "1"

policy.dnssec.catz.invalid. 0 TXT "mypolicy"
policy.dnssec.<unique-N>.zones.catz.invalid. 0 TXT "otherpolicy"
]]></artwork>
      <t>An operator may want to be able to transition zones from other operators without breaking DNSSEC; secondary the given zone from the existing provider, unsign it whilst post-publishing the incumbent's key(s) and re-sign with their own key(s) (all as part of a wider process). This feels quite niche and custom though, but is a use case I'm considering.</t>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <t><em>NB: To be removed by the RFC Editor prior to publication.</em></t>
      <section anchor="initial-draft">
        <name>00 - Initial draft</name>
      </section>
    </section>
    <section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
