Re: [Add] draft-reddy-add-enterprise-split-dns, was Re: ADD Calls for WF Adoption

Paul Wouters <paul.wouters@aiven.io> Thu, 14 October 2021 17:18 UTC

Return-Path: <paul.wouters@aiven.io>
X-Original-To: add@ietfa.amsl.com
Delivered-To: add@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 929B43A177D for <add@ietfa.amsl.com>; Thu, 14 Oct 2021 10:18:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.09
X-Spam-Level:
X-Spam-Status: No, score=-2.09 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=aiven.io
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 jLKP8O1azbO2 for <add@ietfa.amsl.com>; Thu, 14 Oct 2021 10:18:30 -0700 (PDT)
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) (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 EF4F53A176D for <add@ietf.org>; Thu, 14 Oct 2021 10:18:29 -0700 (PDT)
Received: by mail-ed1-x533.google.com with SMTP id w14so26948452edv.11 for <add@ietf.org>; Thu, 14 Oct 2021 10:18:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aiven.io; s=google; h=from:date:to:cc:subject:in-reply-to:message-id:references :mime-version; bh=YnMjWixn9WDWHk7l5VfIfY7Pp0wLe5QodjKnA3EEHuU=; b=J66EA3T8/qNUzD8DlcKthZH/NvA6Myb5Rj3q7WgcDplHkohdN7GuVfftEfrPRBDcB6 Cyy739MWZtSK804ZmguN+TbuXWZCKJ77MmiasVIGmhAClO/IYVn9elxCtWIQb3zgHZOW MLb+hM3b2XQ3fKeX/vk0l6VadC5eqOXi34jRA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:date:to:cc:subject:in-reply-to:message-id :references:mime-version; bh=YnMjWixn9WDWHk7l5VfIfY7Pp0wLe5QodjKnA3EEHuU=; b=24+wc9TfxFvmTc0hRr3E81rNfKstddkNu+2vWcwUcUbmcEf105b1mNXSk2MgVK8rfm W2JNKEVqd+SQoOF4IFyYLAOKhF4lWs8MR8iSzkjUH4Eea0N1/ztyhxPX9WP2klfl3iOG T10ZUid3qj2pPSnzDPTdwwZx45IwkLr5sZVWPTrFNyGGC8XSBElTpMoisIiUpoDsk5eO 4pPzGbF3PsEXqAYjOi+nr5SrGCOEbKQDmcJsKfd7q3F9UAH1z+wbuYggzibgOtwPPr0M WyxdBqxlvsgL+LVcWl9W2uog4dyK4CusL91jc8WR807MKO+jc2Mqw/wv/anHmgJVACt7 tUUw==
X-Gm-Message-State: AOAM533ySOF3TtuCdP7D2VkhV+QmBKSrGS7eNPG6qFI944NS3MQI0y8c VbquX0hJ/dyM8CHYuWro9/+SXQ==
X-Google-Smtp-Source: ABdhPJxTz88BgGG8BIa/WTs+L+MuR1T+uqMPjNk+G1sjvOnR2Ia9UuEckj+er7XzfRYOvpUlgCwQOg==
X-Received: by 2002:a17:907:1dd2:: with SMTP id og18mr211309ejc.267.1634231907602; Thu, 14 Oct 2021 10:18:27 -0700 (PDT)
Received: from bofh.nohats.ca (bofh.nohats.ca. [193.110.157.194]) by smtp.gmail.com with ESMTPSA id y4sm2414297ejr.101.2021.10.14.10.18.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Oct 2021 10:18:27 -0700 (PDT)
From: Paul Wouters <paul.wouters@aiven.io>
X-Google-Original-From: Paul Wouters <paul@nohats.ca>
Date: Thu, 14 Oct 2021 13:18:23 -0400
To: tirumal reddy <kondtir@gmail.com>
cc: Paul Wouters <paul.wouters=40aiven.io@dmarc.ietf.org>, "add@ietf.org" <add@ietf.org>, "Deen, Glenn" <Glenn_Deen=40comcast.com@dmarc.ietf.org>
In-Reply-To: <CAFpG3gduOGypj7RLddy-nneM53ZGXsK1mSJ8iHhx_sRXYxRF=A@mail.gmail.com>
Message-ID: <8653ebda-a79b-1323-5374-776af6785025@nohats.ca>
References: <2B5040C6-5A70-4DE6-ADF1-056D5CB0B524@comcast.com> <338d8ed-6712-227b-e4d-6e4d603be5c4@nohats.ca> <CAFpG3gduOGypj7RLddy-nneM53ZGXsK1mSJ8iHhx_sRXYxRF=A@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="12647681-1215538538-1634231906=:1063189"
Archived-At: <https://mailarchive.ietf.org/arch/msg/add/lcp0CxctEIJdhu5hxdnnPFMsHro>
Subject: Re: [Add] draft-reddy-add-enterprise-split-dns, was Re: ADD Calls for WF Adoption
X-BeenThere: add@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Applications Doing DNS <add.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/add>, <mailto:add-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/add/>
List-Post: <mailto:add@ietf.org>
List-Help: <mailto:add-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/add>, <mailto:add-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Oct 2021 17:18:36 -0000

On Thu, 14 Oct 2021, tirumal reddy wrote:

> Thanks for the review. The split-horizon DNS configuration is not specific to Enterprise networks and is applicable to other types of networks offering
> private domains.  The draft does not make any assumptions whether the network is Enterprise or not based on the WiFi authentication mechanism.

That is not the traditional way of defining an "enterprise network".
Also, the document _does_ define it:

    The term "enterprise network" in this document extends to a wide
    variety of deployment scenarios.  For example, an "enterprise" can be
    a Small Office, Home Office or Corporation.

It is not at all obvious that we can encounter this protocol at
coffeeshop and hotel wifis, which have a strongly different security
context from corporate enterprises (small or home or large)

I can ignore the "enterprise" in the draft name, but not the definition
in the document with the security aspects of the protocol. So in that
way, my raised issues still apply and have not been addressed.

>       This document can say that this is for "enterprise" networks, but an
>       enduser does not know when it is connecting to an enterprise network or
>       not. Even if it does, it is unclear why the user should trust a list of
>       domains to "give away" to the local resolver. Should a Google Wifi at a
>       Starbucks be able to redirect gmail.com ? Should "coffee.com" be able
>       to be redirected by a Starbucks Wifi? Or by Java House Inc ? Who even
>       is coffee.com? Can humans even made these kind of decisions? And if
>       humans can't, do we think we can teach algorithms this ?
> 
> 
> The network-designated resolver must prove authority over the domains as discussed in 
> https://datatracker.ietf.org/doc/html/draft-reddy-add-enterprise-split-dns-06#section-4.1, otherwise, the client will not use the network-designated
> resolver to resolve the domains in the "dnsZones" key. Most importantly, the mechanism proposed in the draft does not require any end-user intervention to
> determine authority over the domains. 

Can you please give me (or better yet, in the document) and complete
example of the queries and responses sent? Because I still feel there
is a chicken and egg problem here. The location of PvD related to the
domain names in particular is what I don't understand.

> Retrieving the additional PvD information using an HTTPS server is discussed in  https://datatracker.ietf.org/doc/html/rfc8801#section-4.1.  

I read that part, but it does not explain it to me well enough to
understand:

    When the H-flag of the PvD Option is set, hosts MAY attempt to
    retrieve the PvD Additional Information associated with a given PvD
    by performing an HTTP-over-TLS [RFC2818] GET query to "https://<PvD-
    ID>/.well-known/pvd".  Inversely, hosts MUST NOT do so whenever the
    H-flag is not set.

What is the relationship between PvD-ID as FQDN and the domain names
(plural!) that I'm asking authentication of? Can I send a PVD-ID H-flag
pointing to pvd.nohats.ca? That would list "gmail.com" ? Please clarify
the relationship between the internet-reachable PvD domain name and the
target list of domain names the network wants to take over. Then also
tell me how that would work for 50000 starbucks wifi networks?

>       Section 4.1:
>
>               To comply with [RFC2826] the split-horizon DNS zone must either not
>               exist in the global DNS hierarchy or must be authoritatively
>               delegated to the split-horizon DNS server to answer.
>
>       I am unsure how this "authoritatively delegated to the split-horizon DNS
>       server" works? Unless it means "single public reachable DNS server with
>       bind views". I don't think these two methods would cover most of the
>       split DNS zones currently deployed. I think RFC2826's advise in practise
>       is a ship that sailed a long time ago. This is again an important issue,
>       because it is the base of trust going forward. The client will receives
>       answers it has to trust, but I don't see the full verifiable linked chain
>       clearly. I am not sure if that is due to the document text or my
>       understanding of it.

You did not answer this question.

>               The client sends an NS query for the domain in DnsZones.  This
>               query MUST only be sent over encrypted DNS session to a public
>               resolver that is configured independently or to a network-
>               designated resolver whose response will be validated using DNSSEC
>               as described in [RFC6698].
>
>       I have strong objections to treating DNSSEC validation and "outsourced
>       DNS validation over secure transport" as equivalent. Transport security
>       is not data origin protection.
> 
> 
> Good point, we will update the draft to clarify that a DNSSEC validating client will apply the same validation policy to the NS query as it does to other
> queries. 

that would improve things, but still leave this authentication method
between starbucks consumer and starbucks provider to whatever thid party
DNS server the consumer has installed, and requires that this third
party DNS is reachable. If it is not reachable (eg lets say DoH and DoT
is blocked) then this requrement fails. What does a client then do? Use
regular port 53 from the local network? Refuse to send the query and fail?
If the latter, then I can censor newyorktimes.com simply by adding it to
my dnsZones and blocking all known DoT/DoH servers. In other words, this
part of the protcol implies to do something security related, but it
does not actually seem to add security AND it potentially adds a denial of
service vector.

>       This statement has the underlying claim
>       that the outsourced DNS query to a public DNS server over TLS is
>       equivalent to a DNSSEC protected query (over TLS or not). It is not
>       equivalent. I have concerns about TRR and ADD type DNS resolvers getting
>       mandated by nation states as internet entry points, and ADD really helps
>       building such a censorship infrastructure.
> 
> 
> The client would use the proposed mechanism only if it is configured to use a DNS resolver not signalled by the network (e.g., the endpoint is configured
> to use VPN or a public resolver).  If the client is using DNR/DDR to discover and use the network-designated resolvers, it does not have to use this draft
> and the split-horizon domains will be resolved by the network-designated DNS server.

We are saying the same thing. Imagine Badcountry says "configure TRR to
IP a.b.c.d" or else. And now this whole protocol is triggered with their
potential impact with the (wrong) assumption that this is something the
user opted in to but are actually forced in to. Our goal should be to
make this as least attrictive to censors as possible.

>       One MUST be able to require
>       DNSSEC to ensure domain owners keep control of their domain and not lose
>       it to a nation state with bad intensions.
> 
> If the client is using a public resolver, it is anyway receiving all the queries from the endpoint including the queries for private domains and the bad
> public resolver can do a lot more damage than lying about the non-existence of a domain. 

It is not the public resolver that is the issue here, but the local one.
Say my company uses DNSSEC to protect "nohats.ca" and now I'm going to
the office, and connect to the split-dns. I wouldn't want to degrade the
security to non-dnssec just because I cannot get the split DNS trust
anchor for "nohats.ca" within this office in Toronto (which on top of
things might also be differet from the split DNS trust anchor in use by
my office in Helsinki). How can I get DNSSEC to work for "nohats.ca" in
the split view DNS at various offices ? I see no capability in the
protocol for this, so using this protocol always causes a downgrade from
DNSSEC to non-DNSSEC.

>               The client checks that the NS RRset matches any one of the ADN of
>               the discovered network-designated encrypted DNS resolvers.
>
>       Which NS RRset is it supposed to check? The RRset at the parent
>       (unsigned!) or at the child (validatable). Current practise already
>       sees so many mismatches between these two (called lame delegations)
>       that I think this cannot be used by the ADD client to determine
>       applicability unless there is a Section of test clarifying what it
>       should do with respect to different NS RRsets.
> 
> The client will have to check the NS RRset at the child and not at the parent level. We will update the draft for better clarity.

So all offices of "nohats.ca" worldwide have to use the same single "discovered
network-designated encrypted DNS resolvers"? Because they will all get
the same answer from public DNS ? This would be hard to impossible to
manage for global companies with different IT departments in each
country or city.

>               If the match succeeds, the client can then establish a secure
>               connection to that network-designated resolver and validates
>               its certificate.
>
>       I guess it cannot build a secure connection _until_ it has validated
>       its certificate? There are subtle implications here, as in the
>       connection cannot be blindly used, it must first go from unvalidated
>       to validated before it is available.
> 
> 
> Sure, we will fix the above line as follows: 
> 
> If the match succeeds, the client establishes a TLS connection to that network-designated resolver and validates the server certificate exchanged during
> the TLS handshake. 

How does it validate the TLS certificate ? I don't think TLSA because
again that would be available only on 1 version in the world view, but
ns.toronto.nohats.ca might not exist in the worldview if
toronto.nohats.ca is the split dns name to begin with ? And the network
is likely on private IP space and we can't look up things there? That
leaves webpki but how are those going to validate private IP or
non-public names ?

>               As an exception to this rule, the client need not perform the
>               above validation for domains reserved for special use [RFC6761]
>               or [RFC6762] such as ".home.arpa" or ".local".
>
>       What about those split DNS worlds that use .local locally. There are
>       many. Should all of them skip validation? That is a security issue
>       that should be addressed in a better way.
> 
> I don't get the above comment, please elaborate on the need to perform the validation for .local domains. 

I believe it was Microsoft who recommended companies use ".local" or
".corp" for their internal domain name. This document saying to skip
validation on those means these names cannot be securely used for split
DNS.

>           For example, if in a network the private domain names are defined
>           under "internal.corp1.example.com".  The DnsZones PvD Key would
>           indicate that "*.internal.corp1.example.com" are private domain
>           names.  The client can trigger a NS query of
>           "internal.corp1.example.com" and the NS RRset returns that the
>           nameserver is "ns1.corp2.example.com".  The client would then connect
>           to the network-designated encrypted resolver whose name is
>           "ns1.corp2.example.com", authenticate it using server certificate
>           validation in TLS handshake, and use it for resolving the domains in
>           the subtree of "*.internal.corp1.example.com".
>
>       It is unclear to me where the PVD Key (PVD ID, aka FQDN) for this domain
>       should be "found" ? See my comment above? It cannot be on the internal
>       resolver, that has not been approved yet as valid. Should it be done on
>       the public one? But then all split zones need to coordinate (eg all
>       *.starbucks.com need to link their coffeeshops to the same public PVD
>       info?). I don't fully understand the bootstrap here, and cannot determine
>       its security.

You did not answer this question, which is my biggest question actually
as the mapping between PvD domain and dnsZones entry is what I don't
understand.

>       Security Considerations section:
>
>           As an additional precaution, clients may want to preconfigure global
>           domains for TLDs and Second-Level Domains (SLDs) to prevent malicious
>           DNS redirections for well-known domains.
>
>       This seems like a really big deal. It kind of says this mechanism cannot
>       be fully trusted. Preconfiguration of "well-known domains" in internet
>       protocols is very damaging to the decentralized nature of the internet -
>       it creates first and second class citizens/domains. If the draft cannot
>       address this problem, I would be tempted to look for alternative solutions
>       that stand on their own protocol without hardcoded lists.
> 
> No, the mechanism discussed in Section 4.1 is required to determine if the network-designated encrypted resolver is authoritative over the domain in
> DnsZones. The well-known domains are only used as a first line of defense to detect if the network is lying.  

Either your method is secure, and this "additional precaution" is not
providing security and should be removed, or it does provide some
security, in which it is hiding a fundamental flaw in the security
properties of this protocol.

Paul

> 
> Cheers,
> 
> -Tiru 
> 
>  
>
>       I think this document is using "enterprise deployment" in too easy a
>       way. WPA2 Enterprise is deployed by coffee shops, so the protocol
>       specifications says nothing about the how the protocol will be used.
>       So to me, this protocol is "Access Point split DNS", and I have to
>       figure out if the access point is trusted or not. It seems that the
>       validation of this depends strongly on being able to reach public DNS
>       servers, which is often not the case. For example ISP redirectin of
>       8.8.8.8 to their own servers, country level blocking of public DNS
>       for censorship reasons, etc.
>
>       I am still not convinced that any client (browser) should ever enable
>       any of this (ADD) for their own security. In fact, I would almost argue
>       that setting up an IKEv2 VPN _just_ for configuring DNS using RFC 8598
>       would be a better solution. It would require an explicit trust
>       relationship between client and network, installed with consent of and by
>       the enduser, and would be limited to the security considerations of RFC
>       8598. And it would support internal zones with their own DNSSEC keys
>       different from the public zones. Of course, I don't want to securely
>       provision my phone or laptop for all the coffeeshops brands in the world,
>       so we need something better. But so far, I don't think this draft is
>       providing me with a strong alternative solution for reconfiguring part
>       of my DNS.
>
>       Paul
>       --
>       Add mailing list
>       Add@ietf.org
>       https://www.ietf.org/mailman/listinfo/add
> 
> 
>