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

Tommy Pauly <tpauly@apple.com> Fri, 15 October 2021 22:21 UTC

Return-Path: <tpauly@apple.com>
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 25E003A0D5F for <add@ietfa.amsl.com>; Fri, 15 Oct 2021 15:21:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.542
X-Spam-Level:
X-Spam-Status: No, score=-2.542 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.452, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.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 iCHTsxtG6n8b for <add@ietfa.amsl.com>; Fri, 15 Oct 2021 15:21:30 -0700 (PDT)
Received: from ma1-aaemail-dr-lapp03.apple.com (ma1-aaemail-dr-lapp03.apple.com [17.171.2.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2A8AC3A0D57 for <add@ietf.org>; Fri, 15 Oct 2021 15:21:30 -0700 (PDT)
Received: from pps.filterd (ma1-aaemail-dr-lapp03.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp03.apple.com (8.16.0.42/8.16.0.42) with SMTP id 19FM9Rdn033639; Fri, 15 Oct 2021 15:21:27 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=pxWIAfKS9M0srD1UnATAHU0RnCc8uSvbxIljoS1BC9k=; b=gY6zldIzcMtgzKHdDiLF3BiHQTyETCkAGtlsxTSEgZQ5AhATMeBYhShOkGhp3YhQDh7S u6tZ+corEqugBOzMVtAXHIuvK4+0fmA5hB89keZsn8GeDINQaMiYptK/ND7873EvAI5r D8gUKylUu3/v0Pj07L0r5EmlZbf4ELfaVlN5mA8aIg9nuWW//R4AILtMv2gsrQcNpJrY Q4m6n5yC28QWqLRzdB8lMKB5kgL85g3UoUUvaUfkRk92w/KmVllZhu/LOWGnGjbifVeZ nB6IB7cbl527azDHtSbLTQL6w6NFx39POX4yZ5Gl+pcFC9Qp0vmCBmvCpDZuVI1LK7uf jQ==
Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by ma1-aaemail-dr-lapp03.apple.com with ESMTP id 3bpsr3vb9d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Fri, 15 Oct 2021 15:21:27 -0700
Received: from rn-mailsvcp-mmp-lapp04.rno.apple.com (rn-mailsvcp-mmp-lapp04.rno.apple.com [17.179.253.17]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) with ESMTPS id <0R1100WXQI3QJ2G0@rn-mailsvcp-mta-lapp01.rno.apple.com>; Fri, 15 Oct 2021 15:21:26 -0700 (PDT)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp04.rno.apple.com by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) id <0R1100600HY5MP00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Fri, 15 Oct 2021 15:21:26 -0700 (PDT)
X-Va-A:
X-Va-T-CD: b701b4ee0e43b88356ae7365f7064b47
X-Va-E-CD: 4ef53cc4a5e838c5323b530f8dffd35e
X-Va-R-CD: b76174e5fc2b08c1f5345337c85cadb7
X-Va-CD: 0
X-Va-ID: 82e06938-3977-4d05-8434-ce86209ca3cc
X-V-A:
X-V-T-CD: b701b4ee0e43b88356ae7365f7064b47
X-V-E-CD: 4ef53cc4a5e838c5323b530f8dffd35e
X-V-R-CD: b76174e5fc2b08c1f5345337c85cadb7
X-V-CD: 0
X-V-ID: fea546ed-b6f7-412c-82fc-5bfc489c8a42
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425, 18.0.790 definitions=2021-10-15_07:2021-10-14, 2021-10-15 signatures=0
Received: from smtpclient.apple (unknown [17.234.36.7]) by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) with ESMTPSA id <0R110066AI3Q0L00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Fri, 15 Oct 2021 15:21:26 -0700 (PDT)
From: Tommy Pauly <tpauly@apple.com>
Message-id: <9BA207BE-D6A6-40F8-8EA5-3766B7B29D0E@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_1FB8355F-6223-4509-94E4-1F5D0773DAF9"
MIME-version: 1.0 (Mac OS X Mail 15.0 \(3691.0.3\))
Date: Fri, 15 Oct 2021 15:21:25 -0700
In-reply-to: <8653ebda-a79b-1323-5374-776af6785025@nohats.ca>
Cc: tirumal reddy <kondtir@gmail.com>, "add@ietf.org" <add@ietf.org>, "Deen, Glenn" <Glenn_Deen=40comcast.com@dmarc.ietf.org>
To: Paul Wouters <paul.wouters=40aiven.io@dmarc.ietf.org>
References: <2B5040C6-5A70-4DE6-ADF1-056D5CB0B524@comcast.com> <338d8ed-6712-227b-e4d-6e4d603be5c4@nohats.ca> <CAFpG3gduOGypj7RLddy-nneM53ZGXsK1mSJ8iHhx_sRXYxRF=A@mail.gmail.com> <8653ebda-a79b-1323-5374-776af6785025@nohats.ca>
X-Mailer: Apple Mail (2.3691.0.3)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425, 18.0.790 definitions=2021-10-15_07:2021-10-14, 2021-10-15 signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/add/LV39VWiUWKbWav-noO50i7NFYRQ>
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: Fri, 15 Oct 2021 22:21:35 -0000

I agree with the sentiments being expressed on list that this document isn’t quite ready to adopt in this form.

There’s something here, but the problem being tackled here is larger than enterprise networks, and even split-DNS local network configurations. The use case for enterprise networks is a valid driver of the problem, but I don’t think we can solve it without addressing the problem of proving a relationship between a set of domains and a Provisioning Domain (where that domain can imply a set of DNS resolvers and even network paths that are correct to use). VPNs do solve this nicely today, but we are missing the mechanism to this in a trusted way without a VPN or managed configuration.

The core idea about identifying that a resolver is the “right one” was also one of the goals the work around our “adaptive DNS privacy” was centered around (https://datatracker.ietf.org/doc/html/draft-pauly-add-resolver-discovery-01#section-3.2 <https://datatracker.ietf.org/doc/html/draft-pauly-add-resolver-discovery-01#section-3.2>). In that, the client would have discovery using PvDs, and could confirm the designation of a resolver by the domain owner by looking at a web-fetched PvD file off of the apex domain for the zone. That was a different use case, but I think it shows that the space of solutions we can use to associate domains is broad.

Thanks,
Tommy

> On Oct 14, 2021, at 10:18 AM, Paul Wouters <paul.wouters=40aiven.io@dmarc.ietf.org> wrote:
> 
> 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
> -- 
> Add mailing list
> Add@ietf.org
> https://www.ietf.org/mailman/listinfo/add