<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.32 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-hardaker-dnsop-nsec3-guidance-00" category="bcp">

  <front>
    <title abbrev="title">Guidance for NSEC3 parameter settings</title>

    <author initials="W." surname="Hardaker" fullname="Wes Hardaker">
      <organization>USC/ISI</organization>
      <address>
        <email>ietf@hardakers.net</email>
      </address>
    </author>
    <author initials="V." surname="Dukhovni" fullname="Viktor Dukhovni">
      <organization>Bloomberg, L.P.</organization>
      <address>
        <email>ietf-dane@dukhovni.org</email>
      </address>
    </author>

    <date year="2021" month="February" day="18"/>

    
    
    

    <abstract>


<t>NSEC3 is a DNSSEC mechanism providing proof of non-existence by
promising there are no names that exist between two domainnames within
a zone.  Unlike its counterpart NSEC, NSEC3 avoids directly disclosing
the bounding domainname pairs.  This document provides guidance on
setting NSEC3 parameters based on recent operational deployment
experience.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>As with NSEC <xref target="RFC4035"/>, NSEC3 <xref target="RFC5155"/> provides proof of
non-existence that consists of signed DNS records establishing the
non-existence of a given name or associated Resource Record Type
(RRTYPE) in a DNSSEC <xref target="RFC4035"/> signed zone.  In the case of NSEC3,
however, the names of valid nodes in the zone are obfuscated through
(possibly multiple iterations of) hashing via SHA-1. (currently only
SHA-1 is in use within the Internet).</t>

<t>NSEC3 also provides “opt-out support”, allowing for blocks of unsigned
delegations to be covered by a single NSEC3 record.  Opt-out blocks
allow large registries to only sign as many NSEC3 records as there are
signed DS or other RRsets in the zone – with opt-out, unsigned
delegations don’t require additional NSEC3 records.  This sacrifices 
the tamper-resistance proof of non-existence offered by NSEC3 in order
to reduce memory and CPU overheads.</t>

<t>NSEC3 records have a number of tunable parameters that are specified
via an NSEC3PARAM record at the zone apex.  These parameters are the
Hash Algorithm, processing Flags, the number of hash Iterations and
the Salt.  Each of these has security and operational considerations
that impact both zone owners and validating resolvers.  This document
provides some best-practice recommendations for setting the NSEC3
parameters.</t>

<section anchor="requirements-notation" title="Requirements notation">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
   “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”,
   and “OPTIONAL” 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="recommendation-for-zone-publishers" title="Recommendation for zone publishers">

<t>The following sections describe recommendations for setting parameters
for NSEC3 and NSEC3PARAM.</t>

<section anchor="algorithms" title="Algorithms">

<t>The algorithm field is not discussed by this document.</t>

</section>
<section anchor="flags" title="Flags">

<t>The flags field currently contains a single flag, that of the
“Opt-Out” flag <xref target="RFC5155"/>, which specifies whether or not NSEC3
records provide proof of non-existence or not.  In general, NSEC3 with
the Opt-Out flag enabled should only be used in large, highly dynamic
zones with a small percentage of signed delegations.  Operationally,
this allows for less signature creations when new delegations are
inserted into a zone.  This is typically only necessary for extremely
large registration points providing zone updates faster than
real-time signing allows.  Smaller zones, or large but relatively
static zones, are encouraged to use a Flags value of 0 (zero) and take
advantage of DNSSEC’s proof-of-non-existence support.</t>

</section>
<section anchor="iterations" title="Iterations">

<t>Generally increasing the number of iterations offers little improved
protections for modern machinery.  Although Section 10.3 of
<xref target="RFC5155"/> specifies upper bounds for the number hash iterations to
use, there is no published guidance on good values to select.  Because
hashing provides only moderate protection, as shown recently in
academic studies of NSEC3 protected zones (tbd: insert ref), this
document recommends using an iteration value of 0 (zero).  This leaves
the creating and verifying hashes with just one application of the
hashing algorithm.</t>

</section>
<section anchor="salt" title="Salt">

<t>Salts add yet another layer of protection against offline, stored
dictionary attacks by using randomly generated values when creating
new records.  The length and usage of a salt value has little
operational concerns beyond bandwidth requirements for transmitting
the salt.  Thus, the primary consideration is whether or not there is
a security benefit to deploying signed zones with salt values.
Operators may choose to use a salt for this reason, though it should
be noted that the use of salts doesn’t prevent against guess based
approaches in offline attacks – only against memorization hash based
lookups.  Thus, the added value is minimal enough that operators may
wish to deploy zones without a hash value at all.</t>

</section>
</section>
<section anchor="recommendation-for-validating-resolvers" title="Recommendation for validating resolvers">

<t>Because there has been a large growth of open (public) DNSSEC
validating resolvers that are subject to compute resource constraints
when handling requests from anonymous clients, this document
recommends that validating resolvers should change their behaviour
with respect to large iteration values.  Validating resolvers SHOULD
return a SERVFAIL when processing NSEC3 records with iterations larger
than 100.  Note that this significantly decreases the requirements
originally specified in Section 10.3 of <xref target="RFC5155"/>.</t>

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

<t>This entire document discusses security considerations with various
parameters selections of NSEC3 and NSEC3PARAM fields.</t>

</section>
<section anchor="operational-considerations" title="Operational Considerations">

<t>This entire document discusses operational considerations with various
parameters selections of NSEC3 and NSEC3PARAM fields.</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 initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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="RFC5155" target='https://www.rfc-editor.org/info/rfc5155'>
<front>
<title>DNS Security (DNSSEC) Hashed Authenticated Denial of Existence</title>
<author initials='B.' surname='Laurie' fullname='B. Laurie'><organization /></author>
<author initials='G.' surname='Sisson' fullname='G. Sisson'><organization /></author>
<author initials='R.' surname='Arends' fullname='R. Arends'><organization /></author>
<author initials='D.' surname='Blacka' fullname='D. Blacka'><organization /></author>
<date year='2008' month='March' />
<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>



<reference  anchor="RFC4035" target='https://www.rfc-editor.org/info/rfc4035'>
<front>
<title>Protocol Modifications for the DNS Security Extensions</title>
<author initials='R.' surname='Arends' fullname='R. Arends'><organization /></author>
<author initials='R.' surname='Austein' fullname='R. Austein'><organization /></author>
<author initials='M.' surname='Larson' fullname='M. Larson'><organization /></author>
<author initials='D.' surname='Massey' fullname='D. Massey'><organization /></author>
<author initials='S.' surname='Rose' fullname='S. Rose'><organization /></author>
<date year='2005' month='March' />
<abstract><t>This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC).  The DNS Security Extensions are a collection of new resource records and protocol modifications that add data origin authentication and data integrity to the DNS.  This document describes the DNSSEC protocol modifications.  This document defines the concept of a signed zone, along with the requirements for serving and resolving by using DNSSEC.  These techniques allow a security-aware resolver to authenticate both DNS resource records and authoritative DNS error indications. </t><t> This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4035'/>
<seriesInfo name='DOI' value='10.17487/RFC4035'/>
</reference>




    </references>

    <references title='Informative References'>





<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 initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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>


<section anchor="acknowledgments" title="Acknowledgments">

<t>dns-operations discussion participants</t>

</section>
<section anchor="github-version-of-this-document" title="Github Version of this document">

<t>While this document is under development, it can be viewed, tracked,
issued, pushed with PRs, … here:</t>

<t>https://github.com/hardaker/draft-hardaker-dnsop-nsec3-guidance</t>

</section>


  </back>

<!-- ##markdown-source:
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
5y9elOzRDH31ov8t98V/8Xu1+DfV8Jd8HhcAAA==

-->

</rfc>

