Re: [WAS RE: New Version Notification for draft-kuhn-quic-0rtt-bdp-07.txt] Discussion on security
Martin Thomson <mt@lowentropy.net> Thu, 29 October 2020 23:06 UTC
Return-Path: <mt@lowentropy.net>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B47D03A09B7 for <quic@ietfa.amsl.com>; Thu, 29 Oct 2020 16:06:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=lowentropy.net header.b=ulXwq0RU; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=GUWErPFC
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 FqUiBlKk7yNX for <quic@ietfa.amsl.com>; Thu, 29 Oct 2020 16:05:59 -0700 (PDT)
Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E10D33A0934 for <quic@ietf.org>; Thu, 29 Oct 2020 16:05:58 -0700 (PDT)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 175145C0144 for <quic@ietf.org>; Thu, 29 Oct 2020 19:05:58 -0400 (EDT)
Received: from imap10 ([10.202.2.60]) by compute1.internal (MEProxy); Thu, 29 Oct 2020 19:05:58 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lowentropy.net; h=mime-version:message-id:in-reply-to:references:date:from:to :subject:content-type:content-transfer-encoding; s=fm3; bh=890e2 XG72Bw9lN8pDQMf4BNDTHDSbFPEtWjdFUuR9ws=; b=ulXwq0RUTuvibTubnFdVx r14zLnq0EzYaB4a3txVTCXyAHe+O1HHSZthjhPEyshhc4jdB0ile5u2gXvt3G8k2 t1fCWVdGeOdF2Si0PgsNlg1RJhWfeYkYvpQjPuy8gexsz5m4w48SIUs5wYDbcjt5 BrPaFTauxiVg3XoZY735uKJj7Mj35w2Dkc/CyZKFscNs7HInOOqhiEXDxFREXVqx NsiQ+xgREJsSLp5Sl6gGh7qd4YAwyOTxEsXJIAfQp6/5qm1RDgg44neRZ/evMIct VdyKoZzaHD7p9ekcBIE70fCs9vxz5Nzcyb5m8dmO7uxOlnQgYFQ+Sg/JPYwRkpFG g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=890e2XG72Bw9lN8pDQMf4BNDTHDSbFPEtWjdFUuR9 ws=; b=GUWErPFC0QTe2ZhpXAEDIHMR79htBhvKZmdTYxqzpUQv8hNdQu5Svy02c /65fY0oBZi6cf0pJEKtINvDR+AhB9id03G3W58nzTQPAeAOgTW0yuh2uXbEQxVs0 qQ5/UsWBOV6qH6f//9L7SN7fh4yy48tVhpLkwUWEQt9IFFuoNA5crnSk2bP/R3lo Cr+ra7rrGGLMguvR9eFQZdiut3NrT52IDQct/DHDa9DMGjsVnhR2o7Jchil70XSJ eHPb6MQOxh9bdnmFUHeHM1icsnMRfUPu44TAQrm+2ARm9EXG8jCJvEQ8BmjbKBUG mR+THwjQnP6ObJ8qbzu66Ddd2plkw==
X-ME-Sender: <xms:1UqbX2PThu3_HyJpVpEG-vIJHE_UiCgMD6SD78_e4kqwmF95gOTTsA> <xme:1UqbX08PjUUb-T_wP9XeGYC3Ers_VZahK7rrOYC_KpQG0BrxhnVa92QgMAOFKfsIX 0kUpMm8_ZF4bb21HE4>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleeggddtiecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepofgfggfkjghffffhvffutgfgsehtqh ertderreejnecuhfhrohhmpedfofgrrhhtihhnucfvhhhomhhsohhnfdcuoehmtheslhho figvnhhtrhhophihrdhnvghtqeenucggtffrrghtthgvrhhnpefgjeeuudeiffeltdegle ehjedvtedtjeduudehgfegfefgkefgueeiteegffdttdenucevlhhushhtvghrufhiiigv pedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmtheslhhofigvnhhtrhhophihrdhnvg ht
X-ME-Proxy: <xmx:1UqbX9TWBO9Au4KX9DNltebCENeJcgtf9Gbv-TGph-WEn7KDLkooIw> <xmx:1UqbX2tcZUaQba8d1haJ2nWVa1QNJJpA4bthiHYuaoQB0Fh9S4ezmw> <xmx:1UqbX-c_GENg1ujDZw4AgXBJhGejl5IuBxjVGgBl7sRI6zVncbs6LQ> <xmx:1kqbX4onS_KjeItB-c4JVYW-Iv1rIcWcA4ZVVWQI3_Eitfy0Hkv9jw>
Received: by mailuser.nyi.internal (Postfix, from userid 501) id B2A7B20214; Thu, 29 Oct 2020 19:05:57 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.3.0-530-g8da6958-fm-20201021.003-g69105b13-v35
Mime-Version: 1.0
Message-Id: <2a5deda2-d17d-4a79-ae33-638b41344b77@www.fastmail.com>
In-Reply-To: <F3B0A07CFD358240926B78A680E166FF2195988F@TW-MBX-P02.cnesnet.ad.cnes.fr>
References: <F3B0A07CFD358240926B78A680E166FF2195988F@TW-MBX-P02.cnesnet.ad.cnes.fr>
Date: Fri, 30 Oct 2020 10:05:38 +1100
From: Martin Thomson <mt@lowentropy.net>
To: quic@ietf.org
Subject: Re: [WAS RE: New Version Notification for draft-kuhn-quic-0rtt-bdp-07.txt] Discussion on security
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/ijwyQtWaR4uNajPPCXhgnoZ5HkM>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Oct 2020 23:06:01 -0000
I think that Kazuho was saying something else. That is, there is no need for a protocol here*. If a server was able to send at X previously, it can "remember" that by packing some extra information into NEW_TOKEN (or the session ticket, but again I agree with Kazuho that NEW_TOKEN is more appropriate). The usual caveats around the stability of network capacity over time apply, which is why there might be some value in a document explaining how not to do this. For instance, just because you managed 1Gbps last Tuesday at 1am, it doesn't mean that the same capacity will be available next Thursday at 8pm. But the idea that you might be able to do something better than starting at a default congestion window isn't crazy. * Where a protocol might add value is not in storing values, but constraining their use. If a client successfully hits 1Gbps and wants to send 0-RTT at nearly 1Gbps when it resumes, the server might want to be able to provide some constraints. On Fri, Oct 30, 2020, at 01:33, Kuhn Nicolas wrote: > > There were comments on the security aspects of the approach. > > > > Christian Huitema: > > I am glad that we agree. Now, we have an issue regarding security. > Nicolas Kuhn and his coauthors have pursued a design in which the > server sends an encrypted blob to the client, > > and then client echoes it in the new connection. This is largely based > on concerns about potential attacks. Suppose the client said "I > received at 1Gbps last time", when in fact > > it can only absorb 10 Mbps. Some bad stuff might well be happening > along the way. But then, Matt is looking at passing statistics from > server to client, so the client can debug issues, > > display statistics in the app, and potentially also reuse the > statistics to inform server that the last connection had an RTT of 600 > ms and a data-rate of 100 Mbps, and maybe we should > > shortcut initial congestion control in order to gain lots of time. How > do we reconcile these multiple goals? > > > > Kazuho Oku: > > Loss recovery and CC states are properties maintained by an endpoint. > The peer should not be given the right to change them (e.g., CWND, > RTT). > > Servers might offload the state to the client, but that state has to be > encrypted and integrity-protected. NEW_TOKEN tokens cover this purpose. > > > > [NK] Indeed. Depending on how the 0-RTT extension is set up, the client > may not be able to tune the values or the server may remember the > values for cross-checking the information. We can rely on the transport > parameter integrity protection already described in 7.4.1: > > *The server can remember these transport parameters, or store an* > > *integrity-protected copy of the values in the ticket and recover the* > > *information when accepting 0-RTT data.* > > > > > > Nicolas and Emile > > > > *De :* Ian Swett <ianswett@google.com> > *Envoyé :* mardi 27 octobre 2020 14:39 > *À :* Kazuho Oku <kazuhooku@gmail.com> > *Cc :* Christian Huitema <huitema@huitema.net>; Kuhn Nicolas > <Nicolas.Kuhn@cnes.fr>; IETF QUIC WG <quic@ietf.org>; Matt Joras > <matt.joras@gmail.com>; Lucas Pardue <lucaspardue.24.7@gmail.com> > *Objet :* Re: New Version Notification for > draft-kuhn-quic-0rtt-bdp-07.txt > > > > I agree with most of the points made by Kazuho and Christian. > > > > In particular, I think relying on information the client repeats back > to the server which is not encrypted by the server is potentially quite > dangerous. Even with that, there's real potential for abuse, > particularly when combined with 0-RTT, so if we're going to document > something, I believe we need a lot of MUST NOTs to prevent that abuse. > Using the same token across many connections seems particularly > concerning. > > > > On Mon, Oct 26, 2020 at 10:30 PM Kazuho Oku <kazuhooku@gmail.com> wrote: > > > > > > > > > 2020年10月27日(火) 11:14 Christian Huitema <huitema@huitema.net>: > > >> > > >> On 10/26/2020 6:20 PM, Lucas Pardue wrote: > > >>> > > >>> On Tue, 27 Oct 2020, 01:12 Matt Joras, <matt.joras@gmail.com> wrote: > > >>>> Indeed, but as much as I love HTTP it's not the only protocol we have on top of QUIC. A consistency argument can also be made for having a connection-level metric tied to a connection-level semantic (i.e. a QUIC frame) rather than the transactional-level semantic (HTTP header). > > >>> > > >>> I agree! A QUIC-level frame could be the most appropriate thing in this case. I think this will be an interesting space for innovation. And let's not forget all the other datagram-oriented protocols that have preceeded - so perhaps there will be some re-innovation. > > >> > > >> I am glad that we agree. Now, we have an issue regarding security. Nicolas Kuhn and his coauthors have pursued a design in which the server sends an encrypted blob to the client, and then client echoes it in the new connection. This is largely based on concerns about potential attacks. Suppose the client said "I received at 1Gbps last time", when in fact it can only absorb 10 Mbps. Some bad stuff might well be happening along the way. But then, Matt is looking at passing statistics from server to client, so the client can debug issues, display statistics in the app, and potentially also reuse the statistics to inform server that the last connection had an RTT of 600 ms and a data-rate of 100 Mbps, and maybe we should shortcut initial congestion control in order to gain lots of time. How do we reconcile these multiple goals? > > > > > > I think that the answer is simple. > > > > > > Loss recovery and CC states are properties maintained by an endpoint. The peer should not be given the right to change them (e.g., CWND, RTT). Servers might offload the state to the client, but that state has to be encrypted and integrity-protected. NEW_TOKEN tokens cover this purpose. > > > > > > OTOH, servers can expose any information to the client regarding the quality of the connection. It is totally reasonable to give the client the bandwidth information that the server retains, so that the client could choose a good bandwidth. There are no security concerns providing such information, regardless of the medium being a QUIC frame or a HTTP header. And that's because it does not affect loss recovery or CC. > > > > > >> -- Christian Huitema > > > > > > > -- > > > Kazuho Oku >
- [WAS RE: New Version Notification for draft-kuhn-… Kuhn Nicolas
- Re: [WAS RE: New Version Notification for draft-k… Martin Thomson
- Re: [WAS RE: New Version Notification for draft-k… Kazuho Oku
- Re: [WAS RE: New Version Notification for draft-k… Ian Swett