Re: [dns-privacy] [Ext] WGLC : draft-ietf-dprive-unilateral-probing

Paul Hoffman <paul.hoffman@icann.org> Sat, 24 June 2023 22:17 UTC

Return-Path: <paul.hoffman@icann.org>
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 5C3A6C151992; Sat, 24 Jun 2023 15:17:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.897
X-Spam-Level:
X-Spam-Status: No, score=-6.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XmSCz-YdQjoY; Sat, 24 Jun 2023 15:17:24 -0700 (PDT)
Received: from ppa4.dc.icann.org (ppa4.dc.icann.org [192.0.46.77]) (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 3712DC151982; Sat, 24 Jun 2023 15:17:24 -0700 (PDT)
Received: from MBX112-E2-CO-1.pexch112.icann.org (out.mail.icann.org [64.78.33.7]) by ppa4.dc.icann.org (8.17.1.19/8.17.1.19) with ESMTPS id 35OMHM4E015484 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 24 Jun 2023 22:17:23 GMT
Received: from MBX112-W2-CO-1.pexch112.icann.org (10.226.41.128) by MBX112-W2-CO-2.pexch112.icann.org (10.226.41.130) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Sat, 24 Jun 2023 15:17:21 -0700
Received: from MBX112-W2-CO-1.pexch112.icann.org ([10.226.41.128]) by MBX112-W2-CO-1.pexch112.icann.org ([10.226.41.128]) with mapi id 15.02.1118.026; Sat, 24 Jun 2023 15:17:21 -0700
From: Paul Hoffman <paul.hoffman@icann.org>
To: Florian Obser <florian+ietf@narrans.de>
CC: "dns-privacy@ietf.org" <dns-privacy@ietf.org>, "dnsdir@ietf.org" <dnsdir@ietf.org>
Thread-Topic: [dns-privacy] [Ext] WGLC : draft-ietf-dprive-unilateral-probing
Thread-Index: AQHZkAIFa64t/3ey40OqazMThvYUVq99Hf4A//+LIuCAAHi3AIAABMUAgAAOUwCAAGnTAIAAsGwA//+h2FKAAHmKgIAAoxlvgAFysYCAAHQHCYACYZ2AgAEPAq2AAMufgIABkdhrgAFgpQCAAoK5zIAQgsgA
Date: Sat, 24 Jun 2023 22:17:21 +0000
Message-ID: <24B7D6A7-0200-431F-87C8-913D92C68C8C@icann.org>
References: <64e17d73-ea1a-00cb-a8a5-b5cfb39c37ae@innovationslab.net> <7a3cd83a-b80d-f00d-b050-0a1d4845146b@innovationslab.net> <D7C916AC-E47D-45FE-9976-188DAE0775EF@icann.org> <CADyWQ+HMj5NH1g_oCTNxYkGDmp2L3EwmMyOv2-bXeXvp5kvm0A@mail.gmail.com> <6B55CCC0-069F-43DD-B9DA-024E4334D6F4@icann.org> <20c5ac1666e4428b8ffa70c7b9e8a19c@verisign.com> <CADyWQ+HJ7ZLWfwxr6vb9HsERMJXuu-1zD_=cr4S+mZ1ieWrYwQ@mail.gmail.com> <0007CDA7-ADD3-43BB-B5D3-3B1810206E0E@icann.org> <8fbed8926b3f4e28b9f3f76a85e0b619@verisign.com> <CANMuhxt5cE--GUtapEL69dFkAFSU5dF3psMCgNRKj8_dXpsFLA@mail.gmail.com> <ABE27A4A-BA96-4505-A3E3-1FE83CAA5A63@icann.org> <m1q6YGM-0000KoC@stereo.hq.phicoh.net> <3B79D45A-1F95-4A4A-9F8D-D3D9C424B4B2@icann.org> <m1q6oAa-0000KqC@stereo.hq.phicoh.net> <E68DAF11-E748-4F3C-AAD3-4E5921B652D9@icann.org> <m1q7FM5-0000LSC@stereo.hq.phicoh.net> <9E965077-D2BA-46C7-99EC-5B4C37918069@icann.org> <m1q82YG-0000MXC@stereo.hq.phicoh.net> <B2088F5F-60B6-4796-B16F-ED7F42838B72@icann.org> <m14jndnsh3.fsf@narrans.de> <B9001CCC-3686-4EED-8B2E-856291269240@icann.org> <m1ilbqhsyr.fsf@narrans.de>
In-Reply-To: <m1ilbqhsyr.fsf@narrans.de>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [192.0.32.234]
x-source-routing-agent: True
Content-Type: text/plain; charset="us-ascii"
Content-ID: <4D0C0BE674539D4C9683FC6579DE581B@pexch112.icann.org>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-06-24_16,2023-06-22_02,2023-05-22_02
Archived-At: <https://mailarchive.ietf.org/arch/msg/dns-privacy/mEdECqkQMv6gaHUnZXTdESueAyo>
Subject: Re: [dns-privacy] [Ext] WGLC : draft-ietf-dprive-unilateral-probing
X-BeenThere: dns-privacy@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Addition of privacy to the DNS protocol <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: Sat, 24 Jun 2023 22:17:28 -0000

On Jun 14, 2023, at 10:08 AM, Florian Obser <florian+ietf@narrans.de> wrote:
> 
> On 2023-06-12 19:48 UTC, Paul Hoffman <paul.hoffman@icann.org> wrote:
>> On Jun 12, 2023, at 1:46 AM, Florian Obser <florian+ietf@narrans.de> wrote:
>>> 
>>> On 2023-06-10 22:48 UTC, Paul Hoffman <paul.hoffman@icann.org> wrote:
>>>> On Jun 10, 2023, at 1:38 PM, Philip Homburg <pch-ietf-dprive@u-1.phicoh.com> wrote:
>>>>> 
>>>>>> In such a case, resolvers following
>>>>>> this protocol will look for authoritative answers to ports 53 and
>>>>>> 853 on that system, and the system would need to be able to
>>>>>> differentiate queries for recursive answers from queries for
>>>>>> authoritative answers.
>>> 
>>> I think this needs some MUST requirements because it's an interop
>>> problem.
>> 
>> Please say more. Would this be MUST requirements on resolvers, auth servers, or both? What requirements would you suggest?
>> 
> 
> It's on the recursive resolvers. People have been happily providing open
> resolvers using DoT on port 853. Now a new standard comes out that is
> OPTIONAL for auths and OPTIONAL for recursive resolvers that still
> changes what auths and recursive resolvers are allowed to do.
> 
> "Recursive resolvers when implementing this protocol MUST ignore answers
> from recursive resolvers on port 853."
> 
> Clearly this needs word smithing.

Maybe I'm being dense, but I'm not sure how this differs at all from today on port 53. If someone lists 9.9.9.9 as authoritative for fournines.com, and a recursive resolver queries it, doesn't it have *exactly* the same problem as you are saying this document creates for port 853?

>>> An issue with the draft is that it never specifies explicitly
>>> what a successful or unsuccessful probe is. My reading is that it
>>> decides successful / unsuccessful on the transport layer. E.g. when it
>>> can talk TLS to *something* on port 853 that's a success. Nevermind what
>>> that something is.
>> 
>> Yes. The document says (in Section 4.6.4) "When an encrypted transport connection actually completes (e.g., the TLS handshake completes)...".
>> 
>> How would you change that? I don't think "and it responded to a DNS
>> query" will help much, because your concern seems to be a system that
>> is responding to both recursive and authoritative queries on 853. How
>> can this be clarified for your issue?
> 
> No, that's not my issue, that's clearly broken. My issue is a system
> that answers authoritatively for some queries on Do53 (and REFUSED
> otherwise). And answers to all recursive queries on 853, like the
> ns1.eu.org example. The algorithm will just think that ns1.eu.org is
> lame. But it's not, it is currently a perfectly valid setup. It answers
> correctly on 53. The problem is that this draft changes what it is
> required to do on 853. 

See above. I don't see where this draft changes what happens on port 853 any more than it does on port 53. The wording here is no different than saying that the unencrypted transpor connection completes for TCP when the SYN-ACK comes back. (Yes, there is no "transport connection" for UDP.)

>>>>> 
>>>>> For lack of a better term, I use the word 'lame' here:
>>>>> 
>>>>> If, during probing, a recursive resolver decides that the authoritative
>>>>> server on port 853 is 'lame', then the recursive resolver should fall back
>>>>> to port 53.
>>>> 
>>>> The feeling that I got from the other messages is that the server on
>>>> 853 is not lame: it is being authoritative for some names and
>>>> recursive for all others. If so, it's not lame at all.
>>> 
>>> ns1.eu.org is authoritative for eu.org:
>>> $ dig +norec +noall +comments @ns1.eu.org eu.org NS
>>> ;; Got answer:
>>> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54105
>>> ;; flags: qr aa; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 5
>>> 
>>> The DoT recursive resolver refuses to talk to as when we turn of RD:
>>> $ dig +tls +norec +noall +comments @ns1.eu.org eu.org NS
>>> ;; Got answer:
>>> ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 9454
>>> ;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
>>> 
>>> It is happy to give us a recursive answer though, heck, it's even DNSSEC
>>> validated:
>>> $ dig +tls +noall +comments @ns1.eu.org eu.org NS
>>> ;; Got answer:
>>> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48894
>>> ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 5
>>> 
>>> 
>>> From the PoV of the draft (as it currently stands) the DoT probe is
>>> successful, because something responded to us.
>> 
>> There is a looooong and indecisive (so far!) discussion in DNSOP about what is "lame". I would agree with you that this qualifies as lame: it is supposed to give an authoritative response but instead gives a non-authoritative one.
>> 
> 
> It's worse, it answers refused. So what we currently have in
> the draft will lead to the recursive resolver answering refused. Because
> it is a successful response.

Right. If someone says "that server is authoritative for this name", and that server is a recursive resolver that will answer REFUSED for queries from addresses outside its ACL, you will see that on port 53 and port 853.

> 
>> I think what you are talking about here is Section 4.6.9, the end of which currently says:
>>   But if R is unsuccessful (e.g. timeout or connection closed):
>> 
>>   *  If Q is not in Do53-queries[X] or in any of *-queries[X]:
>> 
>>      -  Return SERVFAIL to the requesting client
>> 
>> Would the following cover your issue?
> 
> I think so. I would love to hear from recursive resolver implementers though.
> 
> But I need to go through the full section 4 again. Also for the dnsdir
> review.

I've responded to those now, and will do a new draft early next week after my co-authors have had a chance to review the changes from the SecDir review.


On Jun 14, 2023, at 10:26 AM, Florian Obser <fobser@ripe.net> wrote:
>>> * 3.3.  Server Name Indication
>>> | MUST NOT serve resource records that differ based on SNI
>>> 
>>> The MUST NOT adds a strong restriction on future protocols that
>>> eliminate opportunistic encryption and unilateral probing.  I can
>>> envision a desire to at least respond REFUSED when using the wrong
>>> name.
>>> 
>>> As B.3. puts it:
>>> |   Any new stronger protocol should consider how it interacts with the
>>> |   opportunistic protocol defined here, so that operators are not faced
>>> |   with the choice between widespread opportunistic protection against
>>> |   passive attackers (this document) and more narrowly-targeted
>>> |   protection against active attackers.
>>> 
>>> I would say this protocol should also consider how it might interact with
>>> a new stronger protocol. That is, how can it be forward compatible.
>> 
>> This future-proofing is a good concern, but doesn't the current wording already cover it? The full text is:
>>   An authoritative DNS server that wants to handle unilateral queries
>>   MAY rely on Server Name Indication (SNI) to select alternate server
>>   credentials.  However, such a server MUST NOT serve resource records
>>   that differ based on SNI (or on the lack of SNI) provided by the
>>   client, because a probing recursive resolver that offers SNI might or
>>   might not have used the right server name to get the records it is
>>   looking for.
>> Returning REFUSED is certainly one way to meet "MUST NOT serve resource records". 
>> 
> 
> you cut of "that differ". If querying with the correct SNI you get a
> specific RRset. with the wrong SNI you get the empty set. Those
> sets differ. At least that's how I read it.

There is only so much we can future-proof. I would not suggest that we add anything more to the current text because the resolve cannot know the configuration settings in the authoritative server for when that server would respond with REFUSED, or silence, or anything else.

>>> * 4.1.  High-level Overview
>>> "If the encrypted transport protocol fails"
>>> 
>>> We really need to spell out what "fails" means, somewhere.
>>> 
>>> I am under the impression that draft is only concerned with successful
>>> / unsuccessful probes on the transport layer. As long as something
>>> answers it is a successful probe, it would not even need to be a valid
>>> DNS answer.
>> 
>> In the previous message to the mailing list, I pointed out that this
>> is covered in Section 4.6.4. Having said that, possibly moving the
>> definition up in the document seems fine. However, I think you want a
>> different definition; if so, please specify.
>> 
> 
> I think we are on the right track in the dprive mailing list
> discussion. I think we can resolve it over there.

I will add a pointer from 4.1 to 4.6.4 and the following subsections.

>>> 
>>> * 4.6.7.  Handling Clean Shutdown of an Encrypted Transport Connection
>>> Should we immediately retry E for the outstanding queries?
>> 
>> I don't think so. What is your logic here?
> 
> So this gave me the impression that it's not just about initial probing
> but also about what to do with subsequent queries.
> 
> So we successfully probed, we have a connection open, we send a bunch of
> queries through and then idle for a bit. The auth will not keep sessions
> open indefinitely and after some time without activity shut the session
> down.
> If we then have another query for the server we should open an encrypted
> connection again, because we know it will work. This section seems to
> suggest to do one round trip through Do53.

No, because of the second bullet from 4.6.1:

   For any of the supported encrypted transports E, if either of the
   following holds true, the resolver SHOULD NOT send a query to X over
   Do53:

   *  E-session[X] is in the established state, or

   *  E-status[X] is success, and (T0 - E-last-response[X]) <
      persistence


>>> * 5.  IANA Considerations
>>> odd boiler plate
>> 
>> There is no standard for NXIANA boiler plate. IANA always double-checks the section when documents move to IETF Last Call.


This was also called out in the SecDir review, so we will indeed fix this.

--Paul Hoffman