Re: [DNSOP] rfc4641bis: NSEC vs NSEC3.

Paul Wouters <paul@xelerance.com> Wed, 17 February 2010 15:01 UTC

Return-Path: <paul@xelerance.com>
X-Original-To: dnsop@core3.amsl.com
Delivered-To: dnsop@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E28223A70E2 for <dnsop@core3.amsl.com>; Wed, 17 Feb 2010 07:01:38 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.299
X-Spam-Level:
X-Spam-Status: No, score=-2.299 tagged_above=-999 required=5 tests=[AWL=-0.300, BAYES_00=-2.599, J_CHICKENPOX_45=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1uED2Ni5Yyp3 for <dnsop@core3.amsl.com>; Wed, 17 Feb 2010 07:01:38 -0800 (PST)
Received: from newtla.xelerance.com (newtla.xelerance.com [193.110.157.143]) by core3.amsl.com (Postfix) with ESMTP id AC6703A7D10 for <dnsop@ietf.org>; Wed, 17 Feb 2010 07:01:37 -0800 (PST)
Received: from tla.xelerance.com (tla.xelerance.com [193.110.157.130]) by newtla.xelerance.com (Postfix) with ESMTP id 0867CBC07; Wed, 17 Feb 2010 10:03:14 -0500 (EST)
Date: Wed, 17 Feb 2010 10:03:13 -0500
From: Paul Wouters <paul@xelerance.com>
To: Olaf Kolkman <olaf@NLnetLabs.nl>
In-Reply-To: <8E6C64ED-A336-4E8B-996F-9FB471EB07C6@NLnetLabs.nl>
Message-ID: <alpine.LFD.1.10.1002170942020.23587@newtla.xelerance.com>
References: <200904282021.n3SKL3sg051528@givry.fdupont.fr> <59A58419-FDBD-4810-B2FA-0D293FFA00A5@NLnetLabs.nl> <alpine.LFD.1.10.1001211245180.12114@newtla.xelerance.com> <1AEAE091-2EB3-41DC-A51B-8DD49C10FAD5@NLnetLabs.nl> <24C8A8E2A81760E31D4CDE4A@Ximines.local> <8E6C64ED-A336-4E8B-996F-9FB471EB07C6@NLnetLabs.nl>
User-Agent: Alpine 1.10 (LFD 962 2008-03-14)
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; format="flowed"; charset="US-ASCII"
Cc: dnsop WG <dnsop@ietf.org>, Alex Bligh <alex@alex.org.uk>
Subject: Re: [DNSOP] rfc4641bis: NSEC vs NSEC3.
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/dnsop>, <mailto:dnsop-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dnsop>
List-Post: <mailto:dnsop@ietf.org>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsop>, <mailto:dnsop-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 17 Feb 2010 15:01:39 -0000

On Wed, 17 Feb 2010, Olaf Kolkman wrote:

>   Though all agree DNS data should be accessible through query
>   mechanisms, a side effect of NSEC is that it allows the contents of a
>   zone file to be enumerate in full by sequential query.  Whilst for

Small typos: "enumerated" and "sequential queries"

I am not sure about the "should" in that sentence either. How about "is
accessable through query mechanisms"?


>   delegations).  NSEC3 allows intervals between two such delegations to
>   "Opt-out" in which case they may contain one more more insecure
>   delegations, thus reducing the size and cryptographic complexity of
>   the zone.

"at the expense of some deniability"? I feel we need to make it clear
here that there is a trade-of. Opt-out isn't all positive. It has a
price.

> 5.2.  NSEC or NSEC3
>
>   The first reason to deploy NSEC3, prevention of zone enumeration,
>   makes sense when zone content is not highly structured or trivially

"only makes sense" ?

> 5.3.  NSEC3 parameters
>
>   The NSEC3 hashing includes the FQDN in its uncompressed form.  This

"over its uncompressed form"? The hash does not 'include' it.

> 5.3.1.  NSEC3 Algorithm
>
>   The NSEC3 algorithm is specified as a version of the DNSKEY
>   algorithm.  The current options are:
>
>   Algorithm 6,  DSA-NSEC3-SHA1 is an alias for algorithm 3, DSA.
>
>   Algorithm 7,  RSASHA1-NSEC3-SHA1 is an alias for algorithm 5,
>      RSASHA1.
>
>   The algorithm choice therefor depends solely on the DNSKEY algorithm
>   picked.

"The next record algorithm choice therefor....." to make it less confusing?

> 5.3.3.  NSEC3 Salt
>
>   The salt with NSEC3 is not used to increase the work required by an
>   attacker attacking multiple domains, but as a method to enable
>   creating a new set of hash values if at some point that might be
>   required.  The salt is used as a "roll over".

I would throw this around. Don't start saying what the salt is not for,
but say what it is for. First:

    Key rollovers limit the amount of time attackers can spend on
    attacking a certain key before it is retired.  The salt serves the
    same purpose for the hashes, which are independant of the key being
    used, and therefor do not change when rolling over a key.  Changing
    the salt would cause an attacker to lose all precalculated work for
    that zone.

And then:

   The FQDN RRlabel,
    which is part of the value that is hashed, already ensures that brute
    force work for one RRlabel can not be re-used to attack other RRlabel
    due to their uniquenes.

>   The salt of all NSEC3 records in a zone needs to be the same.  Since
>   changing the salt requires the NSEC3 records to be regenerated, and
>   thus requires generating new RRSIG's over these NSEC3 records, it is
>   recommended to only change the salt when changing the Zone Signing
>   Key, as that process in itself already requires all RRSIG's to be
>   regenerated.

Should there be any explanation about the NSEC3PARAM record here?

>   The Opt-Out mechanism was introduced to allow for a gradual
>   introduction of signed records in zones that contain mostly
>   delegation records.  The use of the OPT-OUT flag changes the meaning
>   of the NSEC3 span from authoritative denial of the existence of names
>   within the span to a proof that DNSSEC is not available for the
>   delegations within the span.  [Editors Note: One could make this
>   construct more correct by talking about the hashed names and the
>   hashed span, but I believe that is overkill].

If you think of protecting typosquatting domain spoofs, it might be important
to realise that the span is over hashes, and not over "most domains that
resemble your domain"?

Paul