Shumon, you where correct the first time. A closest encloser can be a ENT a.b.c.d.example A ... a.e.x A ...
with QNAME a.c.c.d.example the closest encloser is the ENT c.d.example. > On 9 Oct 2020, at 12:32, Shumon Huque <[email protected]> wrote: > > On Thu, Oct 8, 2020 at 8:59 PM Shumon Huque <[email protected]> wrote: > On Thu, Oct 8, 2020 at 7:46 PM Nick Johnson > <[email protected]> wrote: > I'm reading RFC 5155, and I'm a bit puzzled by the requirement for "closest > encloser" proofs to prove nonexistence of a domain. Given that the RFC > requires generating NSEC3 records on empty non-terminals, isn't it sufficient > to examine a single NSEC3 record to prove nonexistence? > > For example, if I want to prove the nonexistence of a.b.c.example, isn't it > sufficient to validate an NSEC3 record that covers that name and is one level > higher (eg, somehash.b.c.example)? Why do I need to prove the > closest-encloser with a second NSEC3 record? > > -Nick Johnson > > The closest encloser proof actually *is* what proves that the name doesn't > exist. But the other reason is that for NXDOMAIN proofs, you also need to > prove that the name could not have been synthesized by a wildcard. The > hypothetical wildcard that might have synthesized a response for the name is > constructed by prepending the asterisk label to the closest encloser. > > Let's use your example and say 'a.b.c.example' doesn't exist in the zone > example. > > Let's also say the longest ancestor of this name that actually does exist in > the zone is 'c.example' (which could be an empty non-terminal or not -- > either way, it will have an NSEC3 record matching the hash of the name). > > One small correction to my sentence above: strike the phrase about empty > non-terminals - the closest encloser can't be an ENT of course (otherwise it > wouldn't exist either!). > > Shumon. > > The NXDOMAIN proof consists of: > > ### Closest Encloser proof: > * the NSEC3 RR that matches the closest encloser name 'c.example' > * the NSEC3 RR that covers the next closer name 'b.c.example' > > This proves that b.c.example does not exist. This automatically means that > all names under it, including a.b.c.example, do not exist. > > ### Wildcard non existence proof: > * the NSEC3 RR that covers the wildcard at the closest encloser, namely > '*.c.example'. > > Shumon Huque > > _______________________________________________ > DNSOP mailing list > [email protected] > https://www.ietf.org/mailman/listinfo/dnsop -- Mark Andrews, ISC 1 Seymour St., Dundas Valley, NSW 2117, Australia PHONE: +61 2 9871 4742 INTERNET: [email protected] _______________________________________________ DNSOP mailing list [email protected] https://www.ietf.org/mailman/listinfo/dnsop
