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

Florian Obser <florian+ietf@narrans.de> Wed, 14 June 2023 17:08 UTC

Return-Path: <florian+ietf@narrans.de>
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 4F7B7C1526FB for <dns-privacy@ietfa.amsl.com>; Wed, 14 Jun 2023 10:08:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.896
X-Spam-Level:
X-Spam-Status: No, score=-6.896 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_BLOCKED=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 G75AC_sK0Ax3 for <dns-privacy@ietfa.amsl.com>; Wed, 14 Jun 2023 10:08:52 -0700 (PDT)
Received: from imap.narrans.de (michelangelo.narrans.de [45.77.55.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA512) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C5B8CC14CEFA for <dns-privacy@ietf.org>; Wed, 14 Jun 2023 10:08:50 -0700 (PDT)
Received: from pinkunicorn (2001-1c00-270d-e800-6178-21b0-b873-f611.cable.dynamic.v6.ziggo.nl [2001:1c00:270d:e800:6178:21b0:b873:f611]) by michelangelo.narrans.de (OpenSMTPD) with ESMTPSA id 931f2003 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Wed, 14 Jun 2023 19:08:45 +0200 (CEST)
From: Florian Obser <florian+ietf@narrans.de>
To: Paul Hoffman <paul.hoffman@icann.org>
Cc: "dns-privacy@ietf.org" <dns-privacy@ietf.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>
Date: Wed, 14 Jun 2023 19:08:44 +0200
In-Reply-To: <B9001CCC-3686-4EED-8B2E-856291269240@icann.org> (Paul Hoffman's message of "Mon, 12 Jun 2023 19:48:42 +0000")
Message-ID: <m1ilbqhsyr.fsf@narrans.de>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (darwin)
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/dns-privacy/HVamj2_0tQvVrbiE5FA7qiCnhj8>
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: Wed, 14 Jun 2023 17:08:56 -0000

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.

>> 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. 

>
>>>> 
>>>> 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.

> 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.

>    But if R is unsuccessful (e.g. a non-authoritative answer, or is a timeout or connection closed):
>
>    *  If Q is in Do53-queries[X] or in any of *-queries[X]:
>
>       -  set E-session[X] to null
>
>       -  set E-status[X] to fail
>
>       -  set E-completed[X] to T2
>
>
>    *  Otherwise:
>
>       -  Return SERVFAIL to the requesting client
>
> --Paul Hoffman
>

Florian

-- 
In my defence, I have been left unsupervised.