On 7/24/23, 1:55 PM, "DNSOP on behalf of Viktor Dukhovni" 
<dnsop-boun...@ietf.org on behalf of ietf-d...@dukhovni.org> wrote:
>    2.  That said, there are multiple ways to *distinguish* ENT vs. NXDOMAIN
>        responses:
>
>            a.  Sentinel RTYPE for NXDOMAIN with just NSEC + RRSIG for ENT.
>            b.  Sentinel RTYPE for ENT with just NSEC + RRSIG for NXDOMAIN.
>            c.  Distinct sentinel RTYPEs for both ENTs and NXDOMAIN.
>
>    Presently, the draft is proposing option "a".  My point is that with "a"
>    we get a response that is promising the existence of an RRset for a name
>    that does not exist:

Launching off this observation (and realizing there's a whole thread following 
it), I wanted to register some discomfort with this approach.

The definition of DNSSEC in RFC 4035 contains this paragraph:

#   An NSEC record (and its associated RRSIG RRset) MUST NOT be the only
#   RRset at any particular owner name.  That is, the signing process
#   MUST NOT create NSEC or RRSIG RRs for owner name nodes that were not
#   the owner name of any RRset before the zone was signed.  The main
#   reasons for this are a desire for namespace consistency between
#   signed and unsigned versions of the same zone and a desire to reduce
#   the risk of response inconsistency in security oblivious recursive
#   name servers.

What is most significant in that text is the "desire for namespace consistency 
between signed and unsigned versions of the same zone".  With this proposal 
providing an answer that says "yes the name exists but it doesn't have what you 
want" contradicts the unsigned response that would indicate NXDOMAIN, there is 
an inconsistency in what is seen in the signed and unsigned zone.

Note: I'm not trying to say "we have to stick to the old rules", I'm trying to 
look at the environment in which the DNSSEC was born and how we went from 
concept to reality (then).

In some sense, this proposal is establishing a (set of) wildcard(s) (source[s] 
of synthesis) that owns just an NSEC record when it applies to otherwise 
NXDOMAIN responses.  Mulling this over, it becomes apparent that the next name 
field in the NSEC record is a problem - wildcards allow for the inclusion of an 
owner name pulled from the query (and DNSSEC accommodates that via the label 
count) but there is no process for modifying the RDATA in a synthesized record. 
 The lack of a process for modifying the RDATA means that "this is something 
entirely new".

 I think that signing on the fly is a great idea.  But when DNSSEC was defined, 
and specifically here the NSEC record, it was assumed that DNSSEC records would 
be generated on machines air-gapped from the network because the state of the 
art in host security was simply poor.  This forced the design to take on an 
approach of showing the querier "here's what I do have, you can deduce that 
your request has no answer (NXDOMAIN)".  With signing on the fly, that approach 
makes no sense - you should be able to send a tailored response.

A tailored response, i.e., "there's no name matching the QNAME", means there's 
no need to mention the next name.  This would be great - no need to sort the 
zone, no need to assist zone walking, etc.  The NSEC record is just not built 
for that though, it's an entirely ill-fit.

We have the NSEC record, it's implemented and deployed.  (I'm just not 
considering NSEC3 as it's similar in approach despite it working on hashes and 
not names.)  Rolling out a new approach (say "NSEC17") would be an uphill 
battle (although we did roll out NSEC3...), assumed to be more work that 
force-fitting on-the-fly signing into NSEC.

But I'm not so sure - because of the potential problems with inconsistencies 
introduced.

I'm not saying "this can't work" - I'm raising a concern...and hoping some 
thought/work is done to come up with a new approach that is built to support 
the modern world.

_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to