Re: [dns-privacy] Benjamin Kaduk's Discuss on draft-ietf-dprive-dnsoquic-10: (with DISCUSS and COMMENT)

Christian Huitema <huitema@huitema.net> Thu, 10 March 2022 05:18 UTC

Return-Path: <huitema@huitema.net>
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 CFC2B3A0BFC for <dns-privacy@ietfa.amsl.com>; Wed, 9 Mar 2022 21:18:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
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 5TSrwTTKpmTz for <dns-privacy@ietfa.amsl.com>; Wed, 9 Mar 2022 21:18:04 -0800 (PST)
Received: from mx36-out21.antispamcloud.com (mx36-out21.antispamcloud.com [209.126.121.69]) (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 8BE173A0BD6 for <dns-privacy@ietf.org>; Wed, 9 Mar 2022 21:18:04 -0800 (PST)
Received: from xse219.mail2web.com ([66.113.196.219] helo=xse.mail2web.com) by mx256.antispamcloud.com with esmtp (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1nSBBX-000MfR-3h for dns-privacy@ietf.org; Thu, 10 Mar 2022 06:18:03 +0100
Received: from xsmtp21.mail2web.com (unknown [10.100.68.60]) by xse.mail2web.com (Postfix) with ESMTPS id 4KDclS3T40zBfs for <dns-privacy@ietf.org>; Wed, 9 Mar 2022 21:17:56 -0800 (PST)
Received: from [10.5.2.14] (helo=xmail04.myhosting.com) by xsmtp21.mail2web.com with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1nSBBU-0008WI-BM for dns-privacy@ietf.org; Wed, 09 Mar 2022 21:17:56 -0800
Received: (qmail 32100 invoked from network); 10 Mar 2022 05:17:55 -0000
Received: from unknown (HELO [192.168.1.105]) (Authenticated-user:_huitema@huitema.net@[172.58.43.153]) (envelope-sender <huitema@huitema.net>) by xmail04.myhosting.com (qmail-ldap-1.03) with ESMTPA for <kaduk@mit.edu>; 10 Mar 2022 05:17:54 -0000
Message-ID: <e795b2df-1d57-10ff-4d85-cf381081d674@huitema.net>
Date: Wed, 09 Mar 2022 21:17:52 -0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.2
Content-Language: en-US
To: Benjamin Kaduk <kaduk@mit.edu>, The IESG <iesg@ietf.org>
Cc: draft-ietf-dprive-dnsoquic@ietf.org, dprive-chairs@ietf.org, dns-privacy@ietf.org, brian@innovationslab.net
References: <164687680922.27252.2745356593117748500@ietfa.amsl.com>
From: Christian Huitema <huitema@huitema.net>
In-Reply-To: <164687680922.27252.2745356593117748500@ietfa.amsl.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Originating-IP: 66.113.196.219
X-Spampanel-Domain: xsmtpout.mail2web.com
X-Spampanel-Username: 66.113.196.0/24
Authentication-Results: antispamcloud.com; auth=pass smtp.auth=66.113.196.0/24@xsmtpout.mail2web.com
X-Spampanel-Outgoing-Class: ham
X-Spampanel-Outgoing-Evidence: Combined (0.04)
X-Recommended-Action: accept
X-Filter-ID: Pt3MvcO5N4iKaDQ5O6lkdGlMVN6RH8bjRMzItlySaT9ZLteP7M8dxB2nXGZ/s5hnPUtbdvnXkggZ 3YnVId/Y5jcf0yeVQAvfjHznO7+bT5zh2yKlFwkOJL4c32G0KduLVjVx0XVkNnHJMw/amoreOfYy aKhmv/pwILK8m9U+F2rvFI8fIriRoOYH6S5y5r7oSxIRXVMlFuiz/acFNeeXtxN2fFxZWB9eYgpR BRu3UlDHMLIJYRi1cXH9Dbm+IxLV6+g71gHjp6KKhWH8CiQRhZotTbzF8bFslzcWfB/84WXr3obc i1BDUx+cEdj2Yf5+kVWClPVvbW5lVyQanRxw5hTHswbbB/ha+ZWrSAi8Skyxe17QIfgTGOgXzm19 /3QDep61KNolF2DlH2a2LdpMMmtrv2iUsvl2CC901V0YBrviEnzvvDcGs5qmm9XDE2pdZWZmIMWJ G2DzNierwWd45v2o1X92Cn4UU9JJ17dQkS7izDj4VfLGYhV5rU4pWppWERZjMvwfvbhZOry+t8BT U6S6BiS1pgrDY9yDlGBfLaRjewJ1p2KNOGtnsuIcf3b/prnOfejoy0ryl/SE9sCR4JkwTwd6I5MF c+Z5FxsZqYBzHDeqqFz43py4SDhdaHkWjWBzW47+RMTfWRj6FxhMRZsOyt1RRkQhQVfT6w3+6UYh NLsC4Sv20jvUZxx6gN6RE9tJ3vM773gOGIZYRN78xzpW8OzoGc+rgVv/8YdhErXRtFuayQSHKxuV s+RmqoRqqe0qvr5yub6t9+RpDpmA6OKk+fjg+MKwpIlFTlrORVJZ+JJDNDyg1Ws2Rd4k3jeTDe+I 9tq2wEhsIafC7y3Rgrm4z8swoPklu9z4ph+ir84hu1/rdU1t/SWu+yxj6TsAE8Maud3C8J9PprFE XC3crSlflPzVd+2l231jmDukBYdr5vnQa4fxj449P5oW7YQHYQ8wzy2QJQIUKJy/qSm2GOCf6RKb ch43rE0pU6z6zJn/asDO0V6SUvEY03codo+QgAHGMdQRtAWrhIjqeKCCBgSxHYJFmeUT7QkDnhEY hkQ0Y/Q/ByyhwCqTxj/BD57gcGrPtNGJYX3VT+yZ12sm8Q==
X-Report-Abuse-To: spam@quarantine11.antispamcloud.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/dns-privacy/ayzE_C7uSeNn97vJQx3iyuAHotk>
Subject: Re: [dns-privacy] Benjamin Kaduk's Discuss on draft-ietf-dprive-dnsoquic-10: (with DISCUSS and COMMENT)
X-BeenThere: dns-privacy@ietf.org
X-Mailman-Version: 2.1.29
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: Thu, 10 Mar 2022 05:18:10 -0000

Thanks for the pull request, Ben. Looking at it now.

On the 0RTT point: it is indeed possible for a server to not support 
0RTT at all, and if this is not clear, we should clarify.

I do have a concern about the interaction between "support for 0-RTT" 
and "keep connections alive for a long time". If servers do not support 
0-RTT, clients have incentive to use artificial traffic and keep 
connections alive, and that could be a lot of overhead for servers. But 
people deploying servers can weight that among other factors, and not 
supporting 0RTT is one of many possible choices.

-- Christian Huitema

On 3/9/2022 5:46 PM, Benjamin Kaduk via Datatracker wrote:
> Benjamin Kaduk has entered the following ballot position for
> draft-ietf-dprive-dnsoquic-10: Discuss
>
> When responding, please keep the subject line intact and reply to all
> email addresses included in the To and CC lines. (Feel free to cut this
> introductory paragraph, however.)
>
>
> Please refer to https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/
> for more information about how to handle DISCUSS and COMMENT positions.
>
>
> The document, along with other ballot positions, can be found here:
> https://datatracker.ietf.org/doc/draft-ietf-dprive-dnsoquic/
>
>
>
> ----------------------------------------------------------------------
> DISCUSS:
> ----------------------------------------------------------------------
>
> I have a 0-RTT-related topic that I'd like to discuss, as the current
> situation isn't entirely clear to me.  In particular, TLS 1.3 provides
> (and QUIC inherits) a mechanism for a server to advertise that it just
> does not support 0-RTT at all, via the (absence of the) "early_data"
> extension.  This meshes nicely with the guidance in RFC 8446 that 0-RTT is
> to only be used cautiously, and only with specific request from the
> application.  However, this specificiation diverges from that requirement
> for application opt-in (per §9.1), and so when I read the directive in
> §5.5 that "servers MUST adopt one of the following behaviors", I am forced
> to wonder if the absence of a "abort the connection, because you do not
> enable early data at all" option is intended to forbid a server from
> taking that approach and thus require servers to implement and enable
> 0-RTT at runtime.
> I hope that the intent was just for the §5.5 listing to be predicated on
> the server using 0-RTT at all, but it's hard to reach that conclusion from
> the existing text, so I have to seek clarification.
>
>
> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
>
> Thanks to Phillip Hallam-Baker for the secdir review.  I did want to
> reiterate one of his comments, regarding the potential for harmful
> interaction between use of DoQ (or really, any encrypted DNS transport)
> and captive portals.  While this would accordingly have been best placed
> in something generic to DNS privacy mechanisms, such as RFC 9076 or RFC
> 8932, I think there might still be room to mention it here.  I could
> attempt to craft some text, if there is interest.
>
> I made a pull request with some editorial suggestions at
> https://github.com/huitema/dnsoquic/pull/154
>
> Section 1
>
>     The specific non-goals of this document are:
>     [...]
>     2.  No attempt to support server-initiated transactions, which are
>         used only in DNS Stateful Operations (DSO) [RFC8490].
>
> RFC 8490 is a proposed standard, so excluding it maybe is a bit in
> conflict with claiming that this is a "general-purpose transport for DNS",
> absent some other argument that DSO is a special-purpose tool.
>
> Section 5.1.2
>
>     DoQ connections MUST NOT use UDP port 53.  This recommendation
>     against use of port 53 for DoQ is to avoid confusion between DoQ and
>     the use of DNS over UDP [RFC1035].
>
> Just to clarify: this prohibition is intended to apply even if there would
> otherwise be mutual agreement to use port 53?
>
> Section 5.2
>
>     DNS traffic follows a simple pattern in which the client sends a
>     query, and the server provides one or more responses (multiple
>     responses can occur in zone transfers).
>
> Is this true even for DSO server-initiated transactions?
>
>     The client MUST select the next available client-initiated
>     bidirectional stream for each subsequent query on a QUIC connection,
>     in conformance with the QUIC transport specification [RFC9000].
>
> Just to note: RFC 9000 does not require the client to *use* the "next
> available" stream, instead saying that "a stream ID that is used out of
> order results in all streams of that type with lower- numbered stream IDs
> also being opened".  So this "MUST select the next available" is a new
> requirement for DoQ, and it's not entirely clear to me that it's required
> for interop (though it is more efficient than any alternatives).
>
> Section 5.2.1
>
>     This has implications for proxying DoQ message to and from other
>     transports.  For example, proxies may have to manage the fact that
>     DoQ can support a larger number of outstanding queries on a single
>     connection than e.g., DNS over TCP because DoQ is not limited by the
>     Message ID space.  This issue already exists for DoH, where a Message
>     ID of 0 is recommended.
>
> I'm not sure how often this motivating text is relevant.  The ID field
> seems to be 16 bits, thus enabling 65k outstanding queries on a single
> connection -- how often is there a need to have that many queries
> outstanding at once?  It looks like the motivation presented in RFC 8484
> for setting the ID to zero is to improve caching, as otherwise queries
> identical at the DNS level would be cached as separate requests by HTTP.
> I agree, of course, that the ID field is redundant with the QUIC stream ID
> and that it should be set to zero, I am just not sure if the number of
> outstanding queries is a relevant motivation for doing so.
>
> (It also looks like RFC 8484 refers to this value as the "DNS ID" rather than
> "Message ID".  I guess our options for consistent terminology are somewhat
> limited, though.)
>
> Section 5.3
>
>     The following error codes are defined for use when abruptly
>     terminating streams, aborting reading of streams, or immediately
>     closing connections:
>
> Should we say that these are what QUIC calls "application error code"s?
> (Subsequent occurrences of the phrase "error code" might be modified to
> "application error code" as well.)
>
> Section 5.3.2
>
>     set to DOQ_INTERNAL_ERROR.  [...]
>
> Is there any further guidance to give on when a DNS SERVFAIL response vs
> QUIC RESET_STREAM is preferred (or is the guidance really always to issue
> RESET_STREAM)?
>
> Section 5.3.3
>
>     It is noted that the restrictions on use of the above EDNS(0) options
>     has implications for proxying message from TCP/DoT/DoH over DoQ.
>
> Was it already rejeted to spend a sentence mentioning that such proxying
> would involve translating the messages per the needs of the different
> protocols on the different connections?
>
> Section 5.5
>
>     Servers MUST NOT execute non replayable transactions received in
>     0-RTT data.  Servers MUST adopt one of the following behaviors:
>
> I think we should clarify whether "execute" means "take any action in
> response to" or just "send a response message for".  (I think it needs to
> be the former.)
>
> Section 6.4
>
>     Implementations MUST protect against the traffic analysis attacks
>     described in Section 9.5 by the judicious injection of padding.  This
>
> I think this is already overtaken by events, but a MUST-level requirement
> seems overbearing here.  My understanding is that providing complete
> protection against these types of attack is still an open research
> question....
>
>     could be done either by padding individual DNS messages using the
>     EDNS(0) Padding Option [RFC7830] or by padding QUIC packets (see
>     Section 8.6 of [RFC9000], the QUIC transport specification.
>
> There is no Section 8.6 in RFC 9000.
>
> Section 6.5.2
>
>     Clients that want to maintain long duration DoQ connections SHOULD
>     use the idle timeout mechanisms defined in Section 10.1 of [RFC9000],
>     the QUIC transport specification.  Clients and servers MUST NOT send
>     the edns-tcp-keepalive EDNS(0) Option [RFC7828] in any messages sent
>     on a DoQ connection (because it is specific to the use of TCP/TLS as
>     a transport).
>
> Should we make some statement (analogous to what RFC 7828 does) that if
> such an option is received it MUST be ignored?  In the absence of such
> guidance I can imagine implementors feeling a need to enforce the "MUST
> NOT send" on the receiving end.
>
> Section 6.7
>
>     [RFC9103] specifies zone transfer over TLS (XoT) and includes updates
>     to [RFC1995] (IXFR), [RFC5936] (AXFR) and [RFC7766].  [...]
>
> I note that there is currently no "Updates:" header to indicate this
> relationship.
>
>     *  DoQ implementations SHOULD
>
>        -  use the same QUIC connection for both AXFR and IXFR requests to
>           the same primary
>
>        -  pipeline such requests (if they pipeline XFR requests in
>           general) and MAY intermingle them
>
>        -  send the response(s) for each request as soon as they are
>           available i.e. responses MAY be sent intermingled
>
> Given the "SHOULD use the same QUIC connection", what does MAY-level
> guidance to "intermingle such requests" mean, in a QUIC context?  Each DoQ
> request is on a separate QUIC stream, so I do not see any opportunity for
> intermingling other than by virtue of being in the same QUIC connection,
> which is already a SHOULD.  This is in contrast to a TCP or TLS situation,
> where there is only a single data stream and intermingling has some
> natural meaning (or meanings, for the response case specifically, where it
> might apply to overall responses (composed of multiple response messages)
> or individual response messages).
>
> Section 8
>
> The discussion in §6.5.2 about resource management could be security
> relevant at times, if we wanted to backreference it.
>
>     The security considerations of DoQ should be comparable to those of
>     DoT [RFC7858].  DoT as specified in [RFC7858] only addresses the stub
>
> The security considerations section of RFC 7858 includes a MUST-level
> requirement to adhere to the recommendations of BCP 195.  Does such a
> MUST-level requirement apply to DoQ as well?  (I note that BCP 195 is
> currently listed as only an informative reference, which would need to
> change if a MUST-level requirement was added.)
>
>     to recursive resolver scenario, but the considerations about person-
>     in-the-middle attacks, middleboxes and caching of data from clear
>     text connections also apply for DoQ to the resolver to authoritative
>     server scenario.  [...]
>
> RFC 7858 also lists a fourth consideration, traffic analysis or
> side-channel leaks.  Do we want to forward-reference §9.5 for completeness
> (or even take the secdir reviewer's suggestion of coalescing the privacy
> considerations into the security considerations section as confidentiality
> considerations)?
>
> Section 9.1
>
>     The prevention on allowing replayable transactions in 0-RTT data
>     expressed in Section 5.5 blocks the most obvious risks of replay
>
> Is the parity of negations correct here ("prevention on allowing")?  I see
> §5.5 prohibiting execution of non-replayable transactions in 0-RTT data,
> i.e., allowing replayable ones.
>
> Section 10.4
>
>     Provisional reservations share the range of values larger than 0x3f
>     with some permanent registrations.  This is by design, to enable
>     conversion of provisional registrations into permanent registrations
>     without requiring changes in deployed systems.  (This design is
>     aligned with the principles set in Section 22 of [RFC9000].)
>
> Do we want to specifically call out the guidance on selecting specific
> codepoints from §22.1.2 of RFC 9000?  (Or is it seen as not applicable
> here?)
>
> Section 12.1
>
> We currently only specifically reference RFC 6891 in one place, to mention
> that its provision for specifying maximum UDP message size is not relevant
> for DoQ.  However, since we do define and require (in some cases) use of a
> new "Too Early" EDNS(0) error code, it seems that the solution should be
> to reference it from more places, rather than to demote it to an
> informative reference.
>
> Similarly, we only reference RFC 8914 in the IANA considerations where we
> allocate the codepoint, and would likely benefit from sprinkling an
> additional reference or two in the main body of the text.
>
> RFC 7828, on the other hand, seems to only be mentioned to say that you
> MUST NOT use it, which would probably be fine as an informative reference.
>
> RFC 7873 is referenced for "similar to the DNS Cookies mechanism", which
> also sounds solely informative.
>
>     [I-D.ietf-dnsop-rfc8499bis]
>                Hoffman, P. and K. Fujiwara, "DNS Terminology", Work in
>                Progress, Internet-Draft, draft-ietf-dnsop-rfc8499bis-03,
>
> It's kind of surprising to see DoQ electing to take a normative dependency
> on this draft that is not even in WGLC yet.  Wouldn't that risk incurring
> substantial (unbounded) delays?
>
> Section 12.2
>
> A SHOULD-level requirement to implement the anti-replay mechanisms from
> RFC 8446 seems to promote it to normative status, per
> https://www.ietf.org/about/groups/iesg/statements/normative-informative-references/
>
>
>