Re: [dns-privacy] [Ext] Re: ADoT requirements for authentication?

Brian Dickson <brian.peter.dickson@gmail.com> Wed, 30 October 2019 01:04 UTC

Return-Path: <brian.peter.dickson@gmail.com>
X-Original-To: dns-privacy@ietfa.amsl.com
Delivered-To: dns-privacy@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 92547120052 for <dns-privacy@ietfa.amsl.com>; Tue, 29 Oct 2019 18:04:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.997
X-Spam-Level:
X-Spam-Status: No, score=-1.997 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2ZolsrFv0JRa for <dns-privacy@ietfa.amsl.com>; Tue, 29 Oct 2019 18:04:02 -0700 (PDT)
Received: from mail-vk1-xa2b.google.com (mail-vk1-xa2b.google.com [IPv6:2607:f8b0:4864:20::a2b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2E9681200E3 for <dns-privacy@ietf.org>; Tue, 29 Oct 2019 18:04:02 -0700 (PDT)
Received: by mail-vk1-xa2b.google.com with SMTP id d126so99019vkb.1 for <dns-privacy@ietf.org>; Tue, 29 Oct 2019 18:04:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=YMMCcXjTkXHUWWYUkGCBQfsL3USSDMZ4DCGzrtMUST8=; b=JNCfJU8kGUsbH+2IlnpLhMd3PKNqILudjsqcrs3VFyY7AQBysXRGnMdeCUtjiWdA/w m/J1WuHvtnPgQ6hCa3s+L7CV3IuGl/SBjHadv/zO0PB7Xy1PY0GjFV0Q1fDcStVciwD8 cLQn8a47IbWsFpqz3wLyJlEtBsJCqXhM13GI5SDug7KmCiAPcgnAFRW6HiIWFqDMHYBW lSqIOSHl8u6EYN1jasxXnEO3FYjF/oPbVZ+/DIIdgkrTDgLOdl/BVdk6WxK5/xxw8CVD qQ4ZeFknDGi32ftuZdnnEZ0UXXvjT6gNTMFDnRZOnq2DXT0LZ4PhAXR1N3GUkCr6W7+S PdKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=YMMCcXjTkXHUWWYUkGCBQfsL3USSDMZ4DCGzrtMUST8=; b=Y/NfsXPrbdxzDgCquiZZgGgTKvXqbBbawPp2j7tUWfmC2kyFXWpNpRPsQ+ylNRAPjI qgsI2vCFu41l4NTAuv0RjwzCOb2ms2Vr7QO7Cwc0O8QnPNCQSFTMl7IERpvAaPVodbN1 77kHRkaKKd33day2zvTrE2FeO6KL3HGl4A3TEBxAog9BYn3gxtS08L3r3TaTosHGyLO0 R/WhgNbkNXDLY3wmHMjuasWULONeHyICQxHtxB4QgRl8QNNiTKw3yjN/kjQ4gGWbJcIX nw/TYuoAZyNvDL7l5bIK6AV808DYSzDK1By1mI4SamF0qRnLR1QRMcPShGcBv3JY1pXJ 2+Hw==
X-Gm-Message-State: APjAAAVroKIQIgjLQCgKAQia5MeqXHHZKcV3wZ7gy/tNYI1UN3ST7okh oi1JwD+XtEUlYdaCPsM7HFrG8Mpz8c4sc7WZIQg=
X-Google-Smtp-Source: APXvYqxCDmT+2W8Hs5j0DIW2F2K0Lq1D7jGf8ds+De8XjeHqrcAU8UaY6RHPIon2Vx+0PkxV+ax8xsmXv3sv8qQr7r8=
X-Received: by 2002:a1f:5787:: with SMTP id l129mr6412689vkb.41.1572397440939; Tue, 29 Oct 2019 18:04:00 -0700 (PDT)
MIME-Version: 1.0
References: <943e3973-f6a7-9f6e-a66a-33aff835bd5e@innovationslab.net> <503df6fb-b653-476f-055f-15c1a668ba36@innovationslab.net> <5fe86408-35a8-16ea-d22a-9c6c4a681057@icann.org> <CA+9kkMBZUPfWov6B+pgLYuFmZh10dTzwF2PdKs5Vozzssqvzjw@mail.gmail.com> <edf53c16-3be9-786c-dcb1-0edc9fd9711c@icann.org> <CA+9kkMC5ynqK+8QO==5Pi_9edjTkJJ3yLHBHqJFOox8fi1_8HQ@mail.gmail.com> <CAHbrMsAAvadukzifKEj9eEWB91aDjmnu775F_YdtBaUHrHwDDQ@mail.gmail.com> <CA+9kkMCVj3Lte1dooNthm0f6eBPFUGbxdQBGyjB62KD8wn+f-g@mail.gmail.com> <CAHbrMsCU4b7yNwEfq1J0qsX3vbij+bLdXpanPMKaF+h6yqkXKw@mail.gmail.com> <CA+9kkMA9=m67w=yPR4=cNmHvMH29ogzBVzA8GZU_HCBkVNUxOg@mail.gmail.com> <CABcZeBMyrW=D+dyoT3FUvfe+9hM7ZCndv=tZ9B2F170U0Z7obw@mail.gmail.com>
In-Reply-To: <CABcZeBMyrW=D+dyoT3FUvfe+9hM7ZCndv=tZ9B2F170U0Z7obw@mail.gmail.com>
From: Brian Dickson <brian.peter.dickson@gmail.com>
Date: Tue, 29 Oct 2019 18:03:49 -0700
Message-ID: <CAH1iCir8RH0=1s61yPnvgy4=hmfvjs+F3-zvnCH_vz3sMMcExQ@mail.gmail.com>
To: Eric Rescorla <ekr@rtfm.com>
Cc: Ted Hardie <ted.ietf@gmail.com>, Ben Schwartz <bemasc@google.com>, Paul Hoffman <paul.hoffman@icann.org>, "dns-privacy@ietf.org" <dns-privacy@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000e9baf50596164e79"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dns-privacy/I1yGQdxHTWP6KjLFyJPnaRRU7w0>
Subject: Re: [dns-privacy] [Ext] Re: ADoT requirements for authentication?
X-BeenThere: dns-privacy@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <dns-privacy.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dns-privacy>, <mailto:dns-privacy-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dns-privacy/>
List-Post: <mailto:dns-privacy@ietf.org>
List-Help: <mailto:dns-privacy-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dns-privacy>, <mailto:dns-privacy-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Oct 2019 01:04:06 -0000

On Tue, Oct 29, 2019 at 5:02 PM Eric Rescorla <ekr@rtfm.com> wrote:

>
>
> On Tue, Oct 29, 2019 at 3:55 PM Ted Hardie <ted.ietf@gmail.com> wrote:
>
>> Clipping away a bit where we appear to agree.
>>
>> On Tue, Oct 29, 2019 at 1:58 PM Ben Schwartz <bemasc@google.com> wrote:
>>>
>>
>> This resembles the ongoing experiment
>> <https://engineering.fb.com/security/dns-over-tls/> between Facebook and
>> Cloudflare, where both parties have agreed to speak DoT by hardcoding the
>> relevant parameters and special-casing the relevant authoritative servers.
>> They didn't need an ADoT standard to make this possible, because the
>> connection is a "closed system" based on an agreement between the two
>> parties.
>>
>> In your corporate-internal scenario, the recursive and authoritative
>> servers are even more closely tied, being operated and controlled by the
>> same party, so a secure upgrade protocol is much less relevant than on the
>> open internet.  The admins can hardcode whatever authentication procedure
>> they want.  They can even use pre-shared keys!
>>
>> Agreed, they could also use pre-shared keys.  But that means that we
>> should not require in the standard that they use a specific method, but
>> provide a method that works for the common case and allow for methods where
>> other things are driven by specific deployment conditions.
>>
>> Leaving that aspect aside, if we suppose that enterprise.example is a
>> signed parent zone, and internal.enterprise.example is an unsigned child
>> zone, we can still potentially enable DNSSEC-rooted ADoT to
>> ns.internal.enterprise.example, if we can find a way to put its TLSA data
>> in the parent zone.  I think this is worth attempting.
>>
>> I would really like to see a sketch of the design for that before it gets
>> to be a foundation of the approach.  I can picture both large flat zones
>> and deep hierarchies where it could end up being a real tangle.  But since
>> that tangle is based on my headcanon of the design, it's liable to being
>> very badly off.
>>
>> Put another way, I think you may need to support authentication using PKI
>>> trust anchors as well.
>>>
>>
>> Assuming PKI is used to validate the nameserver's name, I'm not sure it's
>> sufficient, because this name is potentially attacker-controlled.  If the
>> parent zone is unsigned, I think opportunistic privacy is likely the best
>> we can offer.
>>
>> I'm not sure what you mean by control the name here.  To save me tilting
>> at strawmen, would you mind elaborating?
>>
>
> Ben,
>
> Is what you're saying here that .com provides the NS record for
> example.com and that may not itself be example.com, but instead
> ns.server.invalid, and therefore if you can't trust .com then it doesn't
> matter if ns.server.invalid has a WebPKI cert?
>
> -Ekr
>
>
(Apologies in advance for "DNS-splaining" this, but I'd rather do that than
assume knowledge of some tid-bit.)

I am neither Ben nor Ted, but I think I may get the gist of the conundrum
that exists due the "unsigned delegation" (which was labeled "unsigned
child zone", but can even be the case if the child zone is signed but not
securely delegated.)

The term for the child zone or any of the child's descendants, if any are
signed, is an "island of security". That refers to a sub-tree of DNS which
contiguous and where every delegation in that tree is signed, and every
other record type is signed.

What the problem is concerned with, is that the unsigned delegation creates
a gap in the security coverage at the child, where the authoritative data
for the child zone is not DNSSEC signed, and therefore potentially
vulnerable to "cache poisoning" attacks.

And a successful cache poisoning turns an otherwise benign record into an
"attacker controlled" record.

The (literal) key to preventing this, is to put all of the relevant
components under a signed parent, where that signed parent is one such
"island of security".  That "island parent" would be DNSSEC signed, and the
secure entry to that zone (the zone's KSK hash) would be the "trust anchor"
for everything below it.

Here are some example "meat" of how this might look:
com has a secure delegation to example.com, with NS of ns.server.example.net
(out of bailiwick for example.com to avoid any short cuts).
com has the corresponding DS record for example.com, which matches the
DNSKEY at the apex of the example.com zone.
example.com is a signed zone.
internal.example.com is an unsigned delegation; it has the NS record
pointing to the appropriate server for internal.example.com.
example.com does NOT have a corresponding DS record since
internal.example.com is an insecure delegation.

HOWEVER, it is entirely possible that internal.example.com is the top of
the internal-only "island of security", and has DNSKEY records etc.
(Even if there is a level of totally unsigned DNS between the signed parent
and for example the signed grandchild, the installation of the trust anchor
of the grandchild creates the necessary element for DNSSEC validation of
anything in that grandchild's island of security.)

NB: The only missing component that makes internal.example.com an insecure
delegation, is the lack of the DS record in the parent zone at the zone cut.

Everything at/below internal.example.com can be DNSSEC signed and would be
possible to validate by any resolver that has the trust anchor for
internal.example.com configured.

At that point, assuming that all the resolvers referred to in the original
example have this trust anchor, everything DANE is available to use.

There are many different ways that the the certificates can have TLSA
records built for them.

Possible examples include:
Use of TLSA type 2 records that are identical for all certificates, where
the type 2 record corresponds to whatever CA (internal or otherwise, root
or intermediate) issued the certificates, at the owner name of the host of
each individual certificate.
Use of (signed) CNAME records that point to a single TLSA type 2 record ...
Use of TLSA type 3 (end entity) records that correspond to the actual
certificate itself (raw key, full certificate, or fingerprint), for each
issued certificate, at the owner name of the host in the certificate.

E.g. ns.internal.enterprise.example TLSA 2 x x { stuff }, and the cert for
ns.internal.enterprise.example has a cert chain that includes a cert
matching { stuff }.
The DNSSEC signature on this record validates based on the trust anchor for
"internal.example.com". This guarantees the validity of the TLSA record,
which can then be used to validate the certificate.

Note that the TLSA of type 2 or 3, does not automatically mean that the
certificate was NOT issued by a WebPKI CA. It only means that the WebPKI
validation does not depend on trusting the root CA that issued the
certificate.

Hopefully this is a clear enough description of what is meant, and
demonstrates a robust enough security model.

(The resolver SHOULD implement DNSSEC validation and TLSA certificate
validation, and if the authority server is using TLSA records, it MUST sign
the zones. The trust requires sharing the root trust anchor from the
authority server to the resolver. No sharing of private keys is required
outside of the DNSSEC signer, and the management of the TLS materials is
orthogonal to the validation model.)

The DANE model is very flexible, and as a result this general design
supports pretty much any imaginable scenario including this "split DNS" one.

Brian