Subject: [DNSOP] Empty Non-Terminal sentinel for Black Lies

From: Shumon Huque <[email-masked]>
Date: Tue, 27 Jul 2021 19:34:59 -0400

Folks,

While we have the attention of DNSOP folks this week, I'd like to ask for
review of this draft (I meant to send it earlier in time for f2f discussion
on Tuesday, but better late than never).

    https://datatracker.ietf.org/doc/html/draft-huque-dnsop-blacklies-ent-01

Excerpt:

               Empty Non-Terminal Sentinel for Black Lies

Abstract

   The Black Lies method of providing compact DNSSEC denial of existence
   proofs has some operational implications.  Depending on the specific
   implementation, it may provide no way to reliably distinguish Empty
   Non-Terminal names from names that actually do not exist.  This draft
   describes the use of a synthetic DNS resource record type to act as
   an explicit signal for Empty Non-Terminal names and which is conveyed
   in an NSEC type bitmap.

[...]

Thanks!
Shumon.

---

From: Brian Dickson <[email-masked]>
Date: Tue, 27 Jul 2021 17:46:27 -0700

> https://datatracker.ietf.org/doc/html/draft-huque-dnsop-blacklies-ent-01
That's interesting, and I'm definitely in favor of continuing this work.

 A couple of quick questions:

   - Are there distinctions between NSEC and NSEC3, where ENTs and/or
   negative proofs result in different response sets?
   - Would it make sense to include the synthetic ENT RR as an actual RR in
   the unsigned zones for such names (i.e. which, absent this record, would be
   ENTs)?
   - Does it make sense to harmonize the resulting answers across both
   "black lies" and pre-signed zones?
      - That harmonizing might be advisable and/or necessary in a
      multi-signer universe where one provider is statically signing, and the
      other is dynamically signing

Presumably this would get added to the set of types that must not co-exist
with any other type, and must be singletons.

Brian

---

From: Shumon Huque <[email-masked]>
Date: Wed, 28 Jul 2021 07:30:02 -0400

On Tue, Jul 27, 2021 at 8:46 PM Brian Dickson <[email-masked]>
wrote:

> I'm not sure I entirely understood your question, but for a specific
authenticated
denial of existence mechanism (NSEC, NSEC3, NSEC/3 White Lies, Black Lies)
the response set should be the same. They will differ between those
mechanisms
though.

In NSEC, an ENT response would contain 1 NSEC record that covers the ENT.

In NSEC3, the ENT response would contain 1 NSEC3 record that matches the
hash of the ENT.

In Blacklies, the ENT response contains 1 NSEC record that matches the ENT.

>    - Would it make sense to include the synthetic ENT RR as an actual RR
>    in the unsigned zones for such names (i.e. which, absent this record, would
>    be ENTs)?
>
>
So that you can easily distinguish ENTs in unsigned zones? I guess that
could be of possible use, but I'm not sure how compelling that would be.

For me, the goal of this draft is not necessarily to be able to detect ENTs,
but to precisely distinguish non-existent names from existing names (of
which
ENTs are a subset).

>       other is dynamically signing
Harmonizing the negative answers? Despite their differences, mixing
different
denial of existence mechanisms in a multi-signer configuration shouldn't
cause
any issues. We describe why in RFC 8901, Section 5, although mixing online
and
pre-computed signing will reduce the efficiency of mechanisms like
aggressive
negative caching.

> with any other type, and must be singletons.

Yes, but this is really a pseudo type that is only conveyed in a type
bitmap, and
ENTs by definition have no record types associated with them otherwise - the
answer section is always empty.

If you query the synthetic type itself, it returns a response without
itself in the
type bitmap (so it looks like a NODATA). That may seem mildly paradoxical in
that it denies its own existence. But we already have a precedent for such
behavior
in DNSSEC - recall the famed "NSEC3 paradox" :)

Shumon.

---

From: "Ralf Weber" <[email-masked]>
Date: Wed, 28 Jul 2021 13:42:47 +0200

Moin!

>    an explicit signal for Empty Non-Terminal names and which is conveyed
Hmm I may be sleep deprived, but the way I read this is that instead of
giving back NoError/NoData and a standard NSEC responses I now have to
give back an additional record type, so that some client can distinguish that
as not being NXDomain, which according to the answer it never was?

Does this mean we would have to change all existing authoritative server
to add this record type to signal an empty non terminal responses?

So long
-Ralf
—--
Ralf Weber

---

From: Shumon Huque <[email-masked]>
Date: Wed, 28 Jul 2021 07:47:59 -0400

> to add this record type to signal an empty non terminal responses?

Hi Ralph,

No. This is only for Black Lies implementations (which lie about NXDOMAIN).
If you don't do Black Lies, you don't have to do anything.

Shumon.

---

From: "Hollenbeck, Scott" <[email-masked]>
Date: Wed, 28 Jul 2021 12:18:32 +0000

From: DNSOP <[email-masked]> On Behalf Of Shumon Huque
Sent: Tuesday, July 27, 2021 7:35 PM
To: [email-masked] WG <[email-masked]>
Subject: [EXTERNAL] [DNSOP] Empty Non-Terminal sentinel for Black Lies

Caution: This email originated from outside the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

Folks,

While we have the attention of DNSOP folks this week, I'd like to ask for review of this draft (I meant to send it earlier in time for f2f discussion on Tuesday, but better late than never).

    https://datatracker.ietf.org/doc/html/draft-huque-dnsop-blacklies-ent-01<https://secure-web.cisco.com/1YTiuVe-DvVNG7ASvMGQwCQ_8P7vWlgGf0Klt0graLQOeSAlwlixroDJUbX3WZFF7Kn7TnRPBnnT3jfDtB2AfUYYX468YiRX2sIyZzlQ3sediqxtTR-XIa4_4vwDY4lHxuasRtJeUrqBhyMoNiLmj6rJ9J7ncpk8MebTabpy5-0YnN5-J-72HOg3al-8ffhW4wx4q0w-xItD3WtYcLR5vo2qQ2b7IBUstbtpTaDK8oHJ3o4RpCDp4Z16ClGXNxCvP/https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Fdraft-huque-dnsop-blacklies-ent-01>

Excerpt:

Abstract

[SAH] Something to consider: https://www.ietf.org/about/groups/iesg/statements/on-inclusive-language/

“The “black lies” term may get called into question.

Scott

---

From: Shumon Huque <[email-masked]>
Date: Wed, 28 Jul 2021 11:12:31 -0400

On Wed, Jul 28, 2021 at 8:18 AM Hollenbeck, Scott <[email-masked]>
wrote:

>
>
> *[SAH] *Something to consider:
> https://www.ietf.org/about/groups/iesg/statements/on-inclusive-language/
>
>
>

Hi Scott,

I'm aware that this would come up. I'm currently using the term this
protocol variation is widely known as.
Since it hasn't been technically published yet, we have an opportunity to
propose an alternative name. If
that happens, I will update the draft. Probably too late for "White Lies"
though which has been published.

Shumon.

---

From: Peter van Dijk <[email-masked]>
Date: Thu, 29 Jul 2021 20:28:35 +0200

Hi Shumon,

>    an explicit signal for Empty Non-Terminal names and which is conveyed

I have read the draft, and I believe I understand what the draft is doing. I have also read the Introduction and Motivation section. While it does contain some motivation, I do not think it contains enough motivation. One might argue that ENT/NXDOMAIN problems do not exist with these operators, precisely because they do Black Lies.

Furthermore, it looks like a trick that could only be relied on with specific operators (such as, for now, NS1) that have implemented it. There are plenty of differences between the implementations already. In fact, when promoting RFC8482, CloudFlare heavily argued how the difference between NODATA and NXDOMAIN is a very expensive one for them. So presumably, it would not make sense for them to implement this signal. Because of that, I wonder if it would not make more sense if the individual implementers/operators of things that are somewhat similar under the 'Black Lies'-umbrella document how they signal the difference between ENT and NXDOMAIN. (It would of course be fine if some of them agree on the signal).

I also hope, but want to say that out loud here, that there is no expection of -resolver- software to handle this signal in any special way.

Kind regards,
-- 
Peter van Dijk
PowerDNS.COM BV - https://www.powerdns.com/

---

From: Shumon Huque <[email-masked]>
Date: Thu, 29 Jul 2021 16:32:12 -0400

On Thu, Jul 29, 2021 at 2:29 PM Peter van Dijk <[email-masked]>
wrote:

> I have read the draft, and I believe I understand what the draft is doing.
> I have also read the Introduction and Motivation section. While it does
> contain some motivation, I do not think it contains enough motivation. One
> might argue that ENT/NXDOMAIN problems do not exist with these operators,
> precisely because they do Black Lies.
>
> Furthermore, it looks like a trick that could only be relied on with
> specific operators (such as, for now, NS1) that have implemented it. There
> are plenty of differences between the implementations already. In fact,
> when promoting RFC8482, CloudFlare heavily argued how the difference
> between NODATA and NXDOMAIN is a very expensive one for them. So
> presumably, it would not make sense for them to implement this signal.
> Because of that, I wonder if it would not make more sense if the individual
> implementers/operators of things that are somewhat similar under the 'Black
> Lies'-umbrella document how they signal the difference between ENT and
> NXDOMAIN. (It would of course be fine if some of them agree on the signal).
>

Hi Peter,

Yes, Cloudflare is a bit different than the other 2 implementations - they
did not exactly follow the spec as described in the expired ID (presumably
for the reason you mention, although I don't know enough about their
implementation to know why it's hard for them). For any NODATA, including
ENT they return a NSEC bitmap that contains every (~ 20) RR type they
support except for the queried type. I mention this in the draft. So, they
effectively avoid the NXDOMAIN/ENT distinguishability problem that way.

I also hope, but want to say that out loud here, that there is no expection
> of -resolver- software to handle this signal in any special way.
>

Confirmed! :)

Shumon.