Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-09 Thread Edward Lewis
>… I do want to point out that Compact DoE handles wildcards quite differently, 
>and this may not be readily apparent to the casual observer.

FWIW, I noticed.  (Not meaning to say “I’m not a casual observer” but…). This 
is something that was playing in my mind when reviewing the proposal.

In basic DNS, if a name has no records and no descendants, then the responder 
looks for a relevant source of synthesis.  Relevant means that it is “up the 
tree”, owner first label is “*” and there is no “blocking” name.  (I won’t 
define “blocking here, there’s an RFC for that.)  If a relevant source found, a 
response is cobbled from that.

In year 2004 DNSSEC, the same process is followed, but the responder will add 
DNSSEC records to support the work it is doing.  In essence, DNSSEC is 
“proving” that the responder followed the protocol faithfully in answering as 
it is.  For zones using NSEC, this means showing the query name does not have 
records or descendants (NXDOMAIN) but there is a relevant source of synthesis 
and there is no blocking name.  That can be done in one or two NSEC resource 
record sets.  For zones using NSEC3, this means showing the name doesn’t exist, 
the showing the source of synthesis exists, and then showing there is no 
blocking - the three steps may each need their own NSEC3 resource record set.

(Sorry, now I’m on a roll…)

All of this is because of the way DNS has opted to implement synthesized 
responses. It was pointed out during the writing of the “Clarifications of 
Wildcards” there are many other ways to synthesize a response, “wildcards” was 
just one, the one publicly defined, method.  This argument was from Dan 
Bernstein.  For those who recall his years of participation, there was often 
frustration in understanding his points.  He was correct in this instance.  It 
just took a long time to understand what he meant.  Instead of “wildcards are 
the way to synthesize” he wanted “wildcards are a way to synthesize”.  I’m 
including this because the point is germane here.

If a server is synthesizing responses on the fly according to other algorithms, 
then the NSEC/NSEC3 proofs do not apply.  The server isn’t following the 
“standard” synthesis method.  The server then just needs to figure out how to 
express its response.  For a positive response, the label count has to be 
“right”.  For negative responses, the server needs to decide how it wants to 
answer.  In a purely on-the-fly, synthesizing responder, there may be no 
difference in response between a name not having any records nor descendants 
and a name not having what the query is seeking.

For some part of me, I don’t understand why the original protocol distinguishes 
between name error (NXDOMAIN) and no error/no data.  It’s been said that the 
DNS matching process has two phases, matching name first and then matching 
resource records.  This is apparent in the protocols basic design.  But why it 
is this way, I don’t know.  I don’t see this as terribly significant - except 
when you try to understand how answer synthesis (“wildcards”) is done.

Based on that, I can see that Compact denial of existence handles “wildcards” 
differently.  I don’t think wildcards are integral elements of the protocol, 
but it is a defined mechanism.  A zone administrator can elect to fully 
enumerate the names in the zone, and this can be implemented either by rote 
(explicitly listing all the names in a file) or by function (fully 
synthesizing).  If the zone administrator elects either, and implements the 
protocol fully, they won’t have wildcards and no incidence of Name Error 
(NXDOMAIN).

For any application relying on NXDOMAIN - such a zone has all names “existing” 
(in some sense), there simply will never be an NXDOMAIN.  (There can be empty 
non-terminals, but if the zone is properly defined, all the leaf names - those 
without in-zone descendants - would have to own some record set.)

So…that Compact Denial of Existence handles wildcards “differently” - this is 
significant…
___
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-08 Thread Shumon Huque
On Tue, Aug 8, 2023 at 9:13 AM Edward Lewis  wrote:

> On Mon, Jul 31, 2023 at 11:58 AM Edward Lewis 
> wrote:
>
> >You've probably stumbled across Cloudflare's differential behavior for
> DO=0 vs
>
> >DO=1 queries. With non-DNSSEC queries it provides a vanilla, unsigned
>
> >NXDOMAIN response. With DNSSEC enabled queries, it provides the
>
> >Compact Answer NODATA response.
>
>
>
> Stumbled isn’t the right word - I purposely went looking for it, found it
> as had I expected.  This is what was “feared” in the section in “Protocol
> Modifications for the DNS Security Extensions” titled “Including NSEC RRs
> in a Zone“ [a.k.a. RFC 4035, 2.3] - the divergence of the unsecured and
> secured view of a zone.
>

Ah, I stand corrected on "stumbling" :)

Note however that Cloudflare quite deliberately implemented this
differential behavior (to preserve NXDOMAIN visibility for pre DNSSEC
clients I suspect). Some other implementations of Compact DoE return a
uniform (NOERROR) RCODE for either case. So, I do not think this is a
result of divergence in the contents of the signed vs unsigned zone.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-08 Thread Shumon Huque
On Wed, Jul 26, 2023 at 11:05 PM Edward Lewis 
wrote:

> [...]
> 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.
>

Yes, certainly a different design would have been possible if online
signing was a primary use case. But I think NSEC and its minimally covering
variant(s) probably do a reasonable job of catering to both pre-computed
and online signing models today. I doubt there is an appetite for a larger
redesign at this point.

In regard to your observations on wildcards, I don't have a direct comment
to add -- but I do want to point out that Compact DoE handles wildcards
quite differently, and this may not be readily apparent to the casual
observer. In this system, a wildcard is not a DNS protocol element that is
exposed in the wire protocol, but just an internal response provisioning
instruction. Compact DoE implementations pretend that every name that
matches a wildcard explicitly existed in the zone and generate an
on-the-fly proof for that. This obviates the need to provide an NSEC record
in the response that proves that no closer match than the wildcard is
possible, and is a simplification enabled by online signing. Some details
in:
https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-compact-denial-of-existence-00#name-responses-for-wildcard-matc

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-08 Thread Shumon Huque
On Tue, Aug 8, 2023 at 9:21 AM Edward Lewis  wrote:

> >Compact DoE, and RFC4470 already appear to violate it for ENT responses.
> And it was (arguably) already violated by
>
> >pre-computed NSEC3 (5155), where an empty non-terminal name (or rather
> the hash of it) does solely own an
>
> >NSEC3 record.
>
>
>
> NSEC3 is different.  Because NSEC3 hashes the labels into a flat space, it
> hides the in-zone structure, which is something a multi-label deep zone
> [rather uncommon] would need.  The impact is that empty non-terminals must
> by represented in the NSEC3 chain to adequately prove a name does not have
> records or subordinates (NXDOMAIN).
>
>
>
> Due to NSEC resource record exposing the full name involved, the resolver
> can infer where empty, non-terminal names exist in the zone.  This is the
> reason behind the notion that at most two NSEC resource record sets are
> needed to answer negatively, whereas up to three NSEC3 resource record sets
> may be needed.
>
>
>
Thanks Ed. I have in-depth familiarity with all of this :)

My original comment about NSEC3 was preceded by "arguably", and I probably
should not have brought it up, as Compact DoE doesn't use NSEC3 and none of
its subtle properties are relevant. I suggest we go back to focusing on
NSEC and the relevant impacts.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-08 Thread Edward Lewis
>Compact DoE, and RFC4470 already appear to violate it for ENT responses. And 
>it was (arguably) already violated by
>pre-computed NSEC3 (5155), where an empty non-terminal name (or rather the 
>hash of it) does solely own an
>NSEC3 record.

NSEC3 is different.  Because NSEC3 hashes the labels into a flat space, it 
hides the in-zone structure, which is something a multi-label deep zone [rather 
uncommon] would need.  The impact is that empty non-terminals must by 
represented in the NSEC3 chain to adequately prove a name does not have records 
or subordinates (NXDOMAIN).

Due to NSEC resource record exposing the full name involved, the resolver can 
infer where empty, non-terminal names exist in the zone.  This is the reason 
behind the notion that at most two NSEC resource record sets are needed to 
answer negatively, whereas up to three NSEC3 resource record sets may be needed.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-08 Thread Edward Lewis
On Mon, Jul 31, 2023 at 11:58 AM Edward Lewis 
mailto:edward.le...@icann.org>> wrote:
>You've probably stumbled across Cloudflare's differential behavior for DO=0 vs
>DO=1 queries. With non-DNSSEC queries it provides a vanilla, unsigned
>NXDOMAIN response. With DNSSEC enabled queries, it provides the
>Compact Answer NODATA response.

Stumbled isn’t the right word - I purposely went looking for it, found it as 
had I expected.  This is what was “feared” in the section in “Protocol 
Modifications for the DNS Security Extensions” titled “Including NSEC RRs in a 
Zone“ [a.k.a. RFC 4035, 2.3] - the divergence of the unsecured and secured view 
of a zone.

Backwards compatibility was one of the chief concerns in designing DNSSEC as it 
was expected that it would take it a very long time to achieve full deployment 
- and it was anticipated that “islands of security” would emerge before 
top-down.  (I don’t think there are many “islands of security”, especially the 
way the DNS service economy has emerged this century.)

>Your 1st query probably was DO=0. For your 2nd query, I assume the recursive
>server that you used sent DO=1 queries upstream by default.

Yep.  Well, not “by default” - I diddled the DiG run time parameters to make 
sure I did that…

>Yes, this is kind of confusing, and I'm not particularly a fan of this 
>differential
>behavior.

“Confusing” situations ought to be avoided.  Confusing is a problem in 
situations when “mean time to repair” matters.

My general concern is that although things may “work” in practice today and 
there’s a desire for expediency, but the way in which this pleases or 
displeases operations will be a large factor in whether deployment is achieved.

As has been the case in other finer points of the extension definitions, the 
rule against names only having an NSEC (and RRSIG) emerged in the context of 
developing the signing process.  At the time, the prevailing winds would have 
justified preparing an NSEC resource record set for each name in the zone, 
including empty non-terminals and possible even those that did not exist (no 
data and no descendants).  I can’t think of a negative impact on a validator 
verifying that a name had only an NSEC record, but that wasn’t the concern at 
the time.

What wasn’t done was disallowing queries for NSEC, by the time NSEC3 was 
derived, this was “fixed” (meaning, explicitly barred).

Buried in here is the notion that we want to tailor the response to match the 
query.  The only time this is done in base DNS is in answer synthesis 
(wildcards) and the only field modified there is the owner field.  DNSSEC 
accommodates this (and any decrement to the TTL).  We don’t have any precedent 
in the protocol for modifying the RDATA field based on the query, and DNSSEC 
was not built anticipating that.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-07 Thread Mark Andrews


> On 8 Aug 2023, at 11:27, Shumon Huque  wrote:
> 
> On Mon, Aug 7, 2023 at 9:20 PM Mark Andrews  wrote:
> 
> You can’t query for NSEC3 records.  NSEC3 names do not prevent wildcard 
> matches nor are NSEC3 records or their RRSIGs returned for * queries at the 
> hashed name.  They are pure metadata.  NSEC3 records and their RRSIGs exist 
> in their own namespace.
> 
> I'm well aware. 
> 
> My comment was specifically related to the constraint that NSEC records 
> cannot be the sole record type owned by a domain name. That constraint was in 
> 4035 though, and perhaps cannot even be extrapolated to NSEC3.

The different namespaces preclude there being such a record additionally
it is noted that NSEC3 will never appear in the types bit map.  Similarly
RRSIG can’t appear by itself.

   o The Type Bit Maps field of every NSEC3 RR in a signed zone MUST
indicate the presence of all types present at the original owner
name, except for the types solely contributed by an NSEC3 RR
itself. Note that this means that the NSEC3 type itself will
never be present in the Type Bit Maps.



> Shumon.
> 

-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742  INTERNET: ma...@isc.org

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-07 Thread Shumon Huque
On Mon, Aug 7, 2023 at 9:20 PM Mark Andrews  wrote:

>
> You can’t query for NSEC3 records.  NSEC3 names do not prevent wildcard
> matches nor are NSEC3 records or their RRSIGs returned for * queries at the
> hashed name.  They are pure metadata.  NSEC3 records and their RRSIGs exist
> in their own namespace.
>

I'm well aware.

My comment was specifically related to the constraint that NSEC records
cannot be the sole record type owned by a domain name. That constraint was
in 4035 though, and perhaps cannot even be extrapolated to NSEC3.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-07 Thread Mark Andrews


> On 8 Aug 2023, at 10:58, Shumon Huque  wrote:
> 
> On Wed, Jul 26, 2023 at 11:05 PM Edward Lewis  wrote:
> On 7/24/23, 1:55 PM, "DNSOP on behalf of Viktor Dukhovni" 
>  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).
> 
> Hi Ed,
> 
> It might be time to revise the spec to remove this constraint, which I 
> personally don't find very compelling. And besides, as a practical matter, 
> resolvers in the field don't appear to enforce this constraint in any way 
> that I can detect.
> 
> Compact DoE, and RFC4470 already appear to violate it for ENT responses. And 
> it was (arguably) already violated by pre-computed NSEC3 (5155), where an 
> empty non-terminal name (or rather the hash of it) does solely own an NSEC3 
> record.

You can’t query for NSEC3 records.  NSEC3 names do not prevent wildcard matches 
nor are NSEC3 records or their RRSIGs returned for * queries at the hashed 
name.  They are pure metadata.  NSEC3 records and their RRSIGs exist in their 
own namespace.

> Shumon.
> 
> ___
> DNSOP mailing list
> DNSOP@ietf.org
> https://www.ietf.org/mailman/listinfo/dnsop


-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742  INTERNET: ma...@isc.org

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-07 Thread Shumon Huque
On Mon, Jul 31, 2023 at 11:58 AM Edward Lewis 
wrote:

>
> E.g., while preparing this message I tried these two dig messages:
>
> dig somename.cloudflare.com a @ns3.cloudflare.com.
> and
> dig somename.cloudflare.com a
>
> The first returned NXDOMAIN, the later NoError/NoData.  If I were a human
> trying to figure out a problem with a wildcard not matching, the difference
> between these two responses would be significant.  (The reason existence is
> defined in the wildcard document is that existence matters when applying
> the synthesis rules.)
>

You've probably stumbled across Cloudflare's differential behavior for DO=0
vs
DO=1 queries. With non-DNSSEC queries it provides a vanilla, unsigned
NXDOMAIN response. With DNSSEC enabled queries, it provides the
Compact Answer NODATA response.

Your 1st query probably was DO=0. For your 2nd query, I assume the recursive
server that you used sent DO=1 queries upstream by default.

Yes, this is kind of confusing, and I'm not particularly a fan of this
differential
behavior.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-08-07 Thread Shumon Huque
On Wed, Jul 26, 2023 at 11:05 PM Edward Lewis 
wrote:

> 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).
>

Hi Ed,

It might be time to revise the spec to remove this constraint, which I
personally don't find very compelling. And besides, as a practical matter,
resolvers in the field don't appear to enforce this constraint in any way
that I can detect.

Compact DoE, and RFC4470 already appear to violate it for ENT responses.
And it was (arguably) already violated by pre-computed NSEC3 (5155), where
an empty non-terminal name (or rather the hash of it) does solely own an
NSEC3 record.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-07-31 Thread Edward Lewis
On 7/28/23, 1:48 PM, "DNSOP on behalf of Viktor Dukhovni" 
 wrote:

>We rolled out NSEC3 by introducing new algorithm code points, and
>eventually these weere widely enough deployed to allow zones to be
>signed with 7/8/10/13/14 without being seen as insecure by a significant
>fraction of resolvers.  I don't expect CDoE to wait for the ~5 years or
>more that this would take.

"Minimally Covering NSEC Records and DNSSEC On-line Signing" is referenced in 
the Compact Denial of Existence draft, it was published in 2004 (aka RFC 4470). 
 I can't determine which internet draft led to that document so I can't tell 
when discussions on this topic began.  Suffice it to say, this has been hanging 
around a very long time - enough time for a person to be born, raised and 
graduate from public schools (~18 years).  Persuasively I'll claim that this is 
the result of trying to be pragmatic when updating a protocol.  (Meaning - 
"what's another few years"?.)

I also think that software is updated more quickly, when motivated.  That's one 
lesson from the 2018 root zone KSK roll.  But I won't concentrate on that here.

What's pragmatic for protocol engineering may not be suitable for operations.  
I'm concerned with the low deployment of DNSSEC, 25 years since the first 
meeting to spur adoption.  Having sat through years of messaging that 
"operators need to be informed" and "we need to present the business case" 
without much success has led me to think inward.  My hypothesis 
(note-hypothesis) is that DNSSEC is not (entirely) suitable for operations.  My 
theory is that we need to be driving towards a simpler protocol, and as part of 
that, we need to avoid trying to retrofit "what is needed in the world now" 
into "what was designed for the world we anticipated in 1990."

This is the reason I'm objecting to this approach.

One of my objections is that this approach will make names that are 
non-existent (per the definition in "The Role of Wildcards in the Domain Name 
System") and reply to queries with records owned by the name.  In replies 
without DNSSEC records, the response code would be NXDOMAIN and in replies with 
DNSSEC records, the answer appears to be a no error but no data response.  This 
means the zone would be seen differently depending on whether the recipient 
reads DNSSEC or not.

Another objection is in the redefining of fields.  While the implementation of 
signing and validation may be able to accommodate using "dummy resource record 
types" (such as meta types designed to be in the range 128-255), whether 
management tools will be able to keep up needs to be kept in mind as well as 
the increasing skillset needed by the operations staff (who will be called in 
when customers do not get what they expect).

E.g., while preparing this message I tried these two dig messages:

dig somename.cloudflare.com a @ns3.cloudflare.com.
and
dig somename.cloudflare.com a

The first returned NXDOMAIN, the later NoError/NoData.  If I were a human 
trying to figure out a problem with a wildcard not matching, the difference 
between these two responses would be significant.  (The reason existence is 
defined in the wildcard document is that existence matters when applying the 
synthesis rules.)

I encourage updating DNSSEC to fit into the modern world.  The result ought to 
lead towards higher adoption - by making DNSSEC a "no brainer" to deploy and 
operate.  I'm urging that this be done in the (unquantified here) right way.  I 
have my doubts that fitting new meanings into old formats is the way to go.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-07-28 Thread Viktor Dukhovni
On Thu, Jul 27, 2023 at 03:04:37AM +, Edward Lewis 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.

It is decidedly pragmatic.  Negative responses (NODATA or NXDOMAIN)
require presenting NSEC or NSEC3 RRs to extant resolvers.  Introducing a
new flavour of denial existence would require a fresh batch of DNSSEC
algorithms (just like NSEC3 required adding algorithm 7 to supplment
algorithm 5).  Requiring broad support for a new algorithm would make
CDoE impractical for quite some time.

> #   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.

That's admirable for pre-signed zones, but for on-the-fly signing with
zones that may not even have a well-defined whole zone point in time
snapshot (loosely coherent, eventually consistent, across various
authoritative copies) that text has little relevance.

> With signing on the fly, that approach makes no sense - you should be
> able to send a tailored response.

The cleanest solution is to use an *EMPTY* type bitmap for NXDOMAIN
responses.  It likely works just fine in extant resolvers.  The apparent
denial of the very NSEC and RRSIG records that evidence the denial of
existence is unlikely to be an issue.  In particular, (and I believe
this to be a feature), even for a qtype "NSEC" query, the answer section
remains empty (the name does not exist), and the type bitmap denies the
existence of the NSEC RRset.

;
; QUESTION
nxdomain.example. IN NSEC ?

; AUTHORITY
example. IN SOA ...
example. IN RRSIG SOA ...

nxdomain.example. IN NSEC \0.nxdomain.example. ; (EMPTY type bitmap)
nxdomain.example. IN RRSIG NSEC ...

The NSEC RRs in the authority section are not answer records, and don't
constitute an answer to the request for the NSEC records associated with
the qname.  It would be greate to see some interop testing of this or a
similar variant of pruned type bitmaps.  We already know that the
unexpected "NSEC RRSIG" is working out OK, can we prune the bitmap even
more?

> 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.

This is entirely impractical with extant algorithm codepoints.

> 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.

We rolled out NSEC3 by introducing new algorithm code points, and
eventually these weere widely enough deployed to allow zones to be
signed with 7/8/10/13/14 without being seen as insecure by a significant
fraction of resolvers.  I don't expect CDoE to wait for the ~5 years or
more that this would take.

-- 
Viktor.

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


Re: [DNSOP] [Ext] Compact DoE sentinel choice

2023-07-26 Thread Edward Lewis
On 7/24/23, 1:55 PM, "DNSOP on behalf of Viktor Dukhovni" 
 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