RE: Consensus Calls for Transport/TLS issues, post-Cupertino

Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com> Wed, 30 October 2019 16:07 UTC

Return-Path: <mikkelfj@gmail.com>
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 6CC94120113 for <quic@ietfa.amsl.com>; Wed, 30 Oct 2019 09:07:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.996
X-Spam-Level:
X-Spam-Status: No, score=-1.996 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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=gmail.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 mHelnBhb_aau for <quic@ietfa.amsl.com>; Wed, 30 Oct 2019 09:07:37 -0700 (PDT)
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 735F8120110 for <quic@ietf.org>; Wed, 30 Oct 2019 09:07:37 -0700 (PDT)
Received: by mail-ed1-x52f.google.com with SMTP id f25so2169476edw.10 for <quic@ietf.org>; Wed, 30 Oct 2019 09:07:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:in-reply-to:references:mime-version:date:message-id:subject:to; bh=4aBnf9IyV5STVZDfJ4gOe04RHR/lhsQkfl6z6zWBKcc=; b=fIAY0P/+qlbFBhodNiqCFriB4EhD/Ul19m8JGvwKwXrOCOfjZmUqmdBiaMv3dan2lQ 7qP0DCzG7+XdkVnoGvNcYwRRrzYnaxjgqiCxOXQClqnAWqFnO/p31QSBnct9TnRlRSq0 Ae7/P2wdTA+o2yOgP7tcblwRza7c4zE2BVv5Lvd8KNp8i4/ekn4dDzEAWS6axn693xFq 7FyNm2rsb/Cng7zr0RY8TCNdD+t+eO8OKyZwAVPGO5PFvWufMBtSRCnyQODtvW7chu3r IB+9OAeNaOqGpV3cZy0ndxOGmKm4AYZ2LecoynBJTq0geNq2oym/UVepeN+rjzTzeFdq OSJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to; bh=4aBnf9IyV5STVZDfJ4gOe04RHR/lhsQkfl6z6zWBKcc=; b=F/rETOeooV9EUgzkeQc16LBxcF00hp7Jc24mx28qVZUo0t2pnvRXNNCwq0jDV4Q4Ch GQD6+1HhahHpjYK7G0kBhh/vjXPc4EJYJ0oynAnGGn4SpkQwCM3J3S7z/7cXhwKfS/yO 9pXC1luxKiqp2PCJtVIqa0Yz/9lFBVrlV9tlkqyokjwgWUh/OT6m82xNDb74RkCi6yPJ myiuFj7XQwbxbDLHYsmRmgiMAXIJt1mvbSPPCDBkieDLGmVbZRe4FYTMeq786Qr0QPX8 tVuu2j1Jn0Ak8pcVe3ps3TZFh8gpXEimWHq1Qx8tkDPmgpCJDivUs8A15yTiYXBNsZC1 CRVg==
X-Gm-Message-State: APjAAAWsepASFTsJ+ZkIiHSpLljtVcqrL0fLS5Yd6EeFjbIo0Cwvnx7Y FYrptU0iMGWM5M4+UuTis4CnTJgsolpWpgqrUppF8igW
X-Google-Smtp-Source: APXvYqzTjg4scWlHZrjpN4knstH4we19DbfwSU6ct3QwAEdO6ABZ0kE7fz/X/Dr3ad4n0XhI9b1OgU2VQ6Q3RabIGX8=
X-Received: by 2002:a50:b723:: with SMTP id g32mr456479ede.13.1572451656016; Wed, 30 Oct 2019 09:07:36 -0700 (PDT)
Received: from 1058052472880 named unknown by gmailapi.google.com with HTTPREST; Wed, 30 Oct 2019 12:07:35 -0400
From: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
In-Reply-To: <BN6PR2201MB170025E69A882091F9DCF481DA600@BN6PR2201MB1700.namprd22.prod.outlook.com>
References: <4D6397AF-B411-4E67-AFD2-76E8F2AD462C@mnot.net> <CANatvzwYA-NN+p5jLu4vpgKY_G-ZoUM03CacZWS2FAPyPqgiiw@mail.gmail.com> <BN3PR00MB0083E9A10A58F4CCC7B8A5C6B3680@BN3PR00MB0083.namprd00.prod.outlook.com> <22517ab5-9a6c-4486-b7ea-03badc064cbe@www.fastmail.com> <CANatvzx=RWB1Bio7tqX7nN_Vn1SfSaE69LZbuiU5pWeXP=BwNQ@mail.gmail.com> <DB6PR10MB176678E88FF226C2EB8FF78EAC680@DB6PR10MB1766.EURPRD10.PROD.OUTLOOK.COM> <CACpbDccOe01VBjwwy=mdSi5nync8bXa506OMTbLPpBH-hoj4Sw@mail.gmail.com> <CAPDSy+4S06qHBbitdH07Ah6gJYV+ZMY4huYLVGw14Q-n6isCrg@mail.gmail.com> <BN6PR2201MB17008576E4F8400B5DDB696FDA6B0@BN6PR2201MB1700.namprd22.prod.outlook.com> <CACpbDcf+n47NXh8XMEKx6n1fiJPZ+WyuivNmuBy1vKhZYZe6Uw@mail.gmail.com> <CAM4esxQYyTQPpF13v0AT4R=TcFOa9=UCn0nWsiqwMReYFOYDYg@mail.gmail.com> <CABcZeBM2QGC+wx-UUKMkJDqxKscOgJfhqwPhr7QXg3h-GpZwfQ@mail.gmail.com> <4d408d7a-7c50-4ccc-a42b-fb2b71b0c507@www.fastmail.com> <CABcZeBMdQPMeu862uizQYKr451Y9mvwhZ4MT7h_te5ho_Y9DOQ@mail.gmail.com> <BN6PR2201MB1700E30A73DA3E8E91937C6BDA610@BN6PR2201MB1700.namprd22.prod.outlook.com> <f3e3b8e9-9da7-4666-bf94-03f8e0751b9a@www.fastmail.com> <BN6PR2201MB170025E69A882091F9DCF481DA600@BN6PR2201MB1700.namprd22.prod.outlook.com>
X-Mailer: Airmail (420)
MIME-Version: 1.0
Date: Wed, 30 Oct 2019 12:07:35 -0400
Message-ID: <CAN1APdfPQZ_Z9XV0g1nVR9m4rbCfPfodmkuGXzN7kWrO5ej-3w@mail.gmail.com>
Subject: RE: Consensus Calls for Transport/TLS issues, post-Cupertino
To: Mike Bishop <mbishop@evequefou.be>, Martin Thomson <mt@lowentropy.net>, "quic@ietf.org" <quic@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000622b1e059622ee01"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/dWGiJZzEmq6NAVrbEfQwEHSjz5c>
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: Wed, 30 Oct 2019 16:07:39 -0000

I don’t see a need for HANDSHAKE_DONE in both directions although it won’t
hurt.

An argument for symmetric HANDSHAKE_DONE is that it decouples the handshake
transition from the handshake logic which makes it easier to replace TLS
with something simpler, for example in a QUIC version for constrained
devices.

On 30 October 2019 at 16.46.10, Mike Bishop (mbishop@evequefou.be) wrote:

And this is the piece I'm not getting, I think.

The minimum requirement for the server to know the client got the whole
handshake is to receive the Client Finished; receipt of any 1-RTT traffic
from the client demonstrates they derived the correct keys. The server can
drop Handshake keys at that point. However, the server can no longer
retransmit the ACK or even know if it was delivered, so the client needs a
reliable sync point based on 1-RTT traffic to know that the server received
the Client Finished.

Since the server can send 1-RTT packets before the handshake completes,
receipt of 1-RTT packets isn't sufficient. Since the 0-RTT and 1-RTT
packets share a space, receiving an ACK in a 1-RTT packet isn't sufficient.
The client knows that the server has seen the whole handshake once it
receives an ACK of a 1-RTT packet. As soon as any packet sent in 1-RTT is
ACK'd, the client can drop handshake keys.

As you explain in the other fork, organic traffic isn't sufficient, so we
have to force something into 1-RTT to ensure these signals happen. If the
client sends HANDSHAKE_DONE in 1-RTT, probably coalesced with Client
Finished, that's an ack-eliciting 1-RTT packet. The server will ACK it; if
the ACK gets lost, the client will PTO its 1-RTT packet and the server will
ack *that*, and so on. Eventually the client gets an ACK of a 1-RTT packet,
which is what it needs. It drops keys.

If the server sends HANDSHAKE_DONE upon receipt of the Finished, that is a
more direct signal, and the client can drop keys upon receipt of that
frame.. If the ACK of the server's HANDSHAKE_DONE gets lost, the server
will PTO it, and the client will ACK, and so on. But those things aren't
really necessary -- the client and server have both already gotten their
signal. I can see the appeal of having the server send it, so that we're
not driving off of ACKs of particular packets.

The only reason I see for both sides to send it is distaste for implicit
acknowledgements, trying to avoid letting the Client Finished be what tells
the server that all its Handshake data clearly made it. Is this just
preference for one solution over another, or is there a technical reason
I'm missing?

-----Original Message-----
From: QUIC <quic-bounces@ietf.org> On Behalf Of Martin Thomson
Sent: Tuesday, October 29, 2019 7:46 PM
To: quic@ietf.org
Subject: Re: Consensus Calls for Transport/TLS issues, post-Cupertino

On Wed, Oct 30, 2019, at 05:26, Mike Bishop wrote:
> Therefore, ACK works iff we *know* that the client sent something
> ack-eliciting in 1-RTT.

I think that you have to make it symmetric, not just "client sends".
Because we don't have implicit acknowledgement for Handshake packets from
the server, the server can enter the same state that the client does in
Marten's deadlock scenario. In other words, both need to send something
ack-eliciting. And it's not just anything at any time, it has to be
anything within some bounded time. The upper bound is probably high, but it
is at least before the Handshake packets consume all the available
congestion window (which might be a long time, but I haven't worked out how
long that could take).

> So one solution is to require clients to send

.....and servers :)