Re: Version Ossification: Intended Scope for QUICv1

"Martin Thomson" <mt@lowentropy.net> Sun, 03 November 2019 21:46 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 3C500120024 for <quic@ietfa.amsl.com>; Sun, 3 Nov 2019 13:46:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.701
X-Spam-Level:
X-Spam-Status: No, score=-2.701 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-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=lco/hY6R; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=AEt3y200
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 mopeIiBhCkST for <quic@ietfa.amsl.com>; Sun, 3 Nov 2019 13:46:10 -0800 (PST)
Received: from wout3-smtp.messagingengine.com (wout3-smtp.messagingengine.com [64.147.123.19]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 06BC312001E for <quic@ietf.org>; Sun, 3 Nov 2019 13:46:10 -0800 (PST)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id 4AB7C3F5 for <quic@ietf.org>; Sun, 3 Nov 2019 16:46:09 -0500 (EST)
Received: from imap2 ([10.202.2.52]) by compute1.internal (MEProxy); Sun, 03 Nov 2019 16:46:09 -0500
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=uJGLt /rnvdeBlVRVaQKWv4SGbpYeb1Ji07deJRK0xYg=; b=lco/hY6R5y7aLE7JkBWBn CYRc9/tI8nLrsx8cUrnLeryEDpXKPLanph/j9ApL5p0Gb/gVmFV8BRX9O2KbrlDd VBA0GGbTpGGY4HwmQ6oNOyBDp4HI750Hf0wB+y6lzRoL0h2Sthl6Qd3UIqiKOfmn nC/2vLiL1c3pkhO/x73zF4yZ2n4eqejmzH4ixyUYlax3qgYXpAVoPMUR3ZgdVjw8 QFGEr/G4QI+7HQi6yv9bLD4JgX+a4+8AbjEwR5b2rSwJPcToJ3MSOy0Ckqiutkg3 JmiCQM79NwAaszOZwIB6uwGL+lNOkFDecS9Dxpcqd5suIVbNXC0qzw47rs6aCUxd Q==
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=uJGLt/rnvdeBlVRVaQKWv4SGbpYeb1Ji07deJRK0x Yg=; b=AEt3y200hI/dQ0by4rEpIwSoC7KZ3iIqdWKHAULwTDn6Af1aIi14NyTud W912F864n1yD2DGd+1jsRa+vdpLNwofy2Hzix3GdYEEtxwy8vjpjTYyhDXdKrudI /Jtt/aA8rOjyHvVeT9XYKRelsl4Lcr1YY+6qvxPqIVvABMgnpnvZOzPwRfagLM3y P5g4LQikRNST1eWtiGXL66xFLmGKsy4/JM2evjjflRvpLM/cGJdZyNeCHJknRT2E tlvOWRBAGSN5SDNbqcfOOqhCKPAFxhrnSqlKlpRzn/fYcxrhyxOmB4ocoJn/51Ys m3/z4agcGkQbzsZYCkdcJS3Q6O/jw==
X-ME-Sender: <xms:oEq_XcLAv6A5GeTdbAHxxNyd2Hrar4tKaKUd51Q5Fbs2Is_DMNLHGQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedufedrudduuddgudehjecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhepofgfggfkjghffffhvffutgfgse htqhertderreejnecuhfhrohhmpedfofgrrhhtihhnucfvhhhomhhsohhnfdcuoehmthes lhhofigvnhhtrhhophihrdhnvghtqeenucffohhmrghinhepghhithhhuhgsrdgtohhmne curfgrrhgrmhepmhgrihhlfhhrohhmpehmtheslhhofigvnhhtrhhophihrdhnvghtnecu vehluhhsthgvrhfuihiivgeptd
X-ME-Proxy: <xmx:oEq_XVnil6581CSvQgproUqS8ihlJyAN4U2lXSmX60nt0Z1LTNJhFg> <xmx:oEq_Xdiw9XM-NtZbI7HYINPbV0DHLViUe-Ed8_lCCL3xb1ebDX8pRg> <xmx:oEq_XUuxCdAQKOP-EqhL8PEFLsOWn5GTLTZBioGTcstFKFHqMBkqyA> <xmx:oEq_XcUZKpm3hb4ASBLEazYegl0u_jVy_LPdo_Bs5isIDaFlrhs2hQ>
Received: by mailuser.nyi.internal (Postfix, from userid 501) id 6322BE00A5; Sun, 3 Nov 2019 16:46:08 -0500 (EST)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.1.7-509-ge3ec61c-fmstable-20191030v1
Mime-Version: 1.0
Message-Id: <e24ecddd-139d-4669-be96-b3de57557c4e@www.fastmail.com>
In-Reply-To: <BN6PR2201MB1700184D81061E2CBFD77BFBDA620@BN6PR2201MB1700.namprd22.prod.outlook.com>
References: <CAPDSy+6E79OySoOLbJ8eWp0J-+3yeB5iGvj6sW19bEDn_V7-NA@mail.gmail.com> <CANatvzzaWFgrvnaV=VeZRAVvxqSBeMSZT5aMUu7-Vh9raeZJFw@mail.gmail.com> <BN6PR2201MB1700184D81061E2CBFD77BFBDA620@BN6PR2201MB1700.namprd22.prod.outlook.com>
Date: Mon, 04 Nov 2019 08:45:41 +1100
From: Martin Thomson <mt@lowentropy.net>
To: quic@ietf.org
Subject: Re: Version Ossification: Intended Scope for QUICv1
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/qXJHW0gWnEK8tiD9nIZSxasWn_8>
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: Sun, 03 Nov 2019 21:46:12 -0000

Why can't servers just bake the "keys" into binaries?  I mean, that's not something that is likely to get lost.  And it isn't really the case that keys need to be secret, they just have to change often enough to frustrate attempts to fixate on them.

On Sat, Nov 2, 2019, at 03:13, Mike Bishop wrote:
>  
> The fundamental problem in all this is what happens when a server is no 
> longer in possession of the mapping it sent to the client. One option 
> is to say that servers simply MUST persist this, and if they don’t, 
> handshakes will fail – we tried that with HSTS, and we found that 
> servers don’t like things that can leave the site broken. I don’t think 
> that’s a good path. Either it will break things, or servers won’t use 
> this mechanism, or more likely both in sequence.
> 
> 
> The next obvious solution, sending a VN packet telling the client to 
> come back to v1 and the spec-defined salt, contains a simple version 
> downgrade attack by a middlebox. There are possible mitigations – the 
> client could continue presenting the token, meaning the server would be 
> able to tell whether a downgrade “actually happened” or not. (I.e. 
> whether it could still have parsed the version associated with the 
> token) If the downgrade was illegitimate, that could be communicated. 
> However, that likely means figuring out QUIC’s own version negotiation 
> story and downgrade mitigation and just using that.
> 
> 
> We could also try to build something like ESNI’s recovery path, where 
> the information includes what has to be demonstrated for a recovery 
> value. The trouble is that, while TLS can transfer a certificate and 
> rely on PKI as that recovery path, we’re in a little bit more uncharted 
> territory. The only ready solution I see in this space is some kind of 
> longer-lived keypair that the server is somehow “less likely” to lose, 
> but if you can persist that key, you can probably also persist the 
> original configuration. (Plus, you don’t want to be doing asymmetric 
> crypto before you’ve even decided whether to process the handshake.)
> 
> 
> I remain a little uncomfortable that we entirely punted our version 
> negotiation story from v1, and I think the cleanest solution is to 
> bring it back in support of #3166. However, that has both schedule and 
> security implications – we don’t want to get this part wrong.
> 
> 
> *From:* QUIC <quic-bounces@ietf.org> *On Behalf Of * Kazuho Oku
> *Sent:* Thursday, October 31, 2019 5:34 PM
> *To:* David Schinazi <dschinazi.ietf@gmail.com>
> *Cc:* QUIC <quic@ietf.org>
> *Subject:* Re: Version Ossification: Intended Scope for QUICv1
> 
> 
> Hi David,
> 
> 
> Thank you for summarizing the high-level options. I think it's very 
> useful to have this discussion.
> 
> 
> Please see my comments below.
> 
> 
> 2019年11月1日(金) 6:13 David Schinazi <dschinazi.ietf@gmail.com>:
> 
> > Hi folks,
> 
> 
> > The conversation around version ossification has been really interesting since Cupertino. But at least for me it's reached a level of complexity that warrants taking a step back and looking at what we're trying to solve. Here's my understanding of where we are:
> 
> 
> > 1) In Cupertino there was consensus in the room to do something to mitigate ossification of QUICv1.
> 
> 
> > 2) The solution that folks liked was to have a concept of alternative versions and alternative salts that act like QUICv1 but are encoded differently over the wire.
> 
> 
> > 3) A concrete proposal for (2) was for servers to have their own set of (alternative_version, alternative_salt) pairs, then transmit a random pair from that set to each client (i.e. via transport parameters). The server can then reconstruct the alternative_salt just by seeing the alternative_version.
> 
> 
> > 4) Kazuho proposed a solution (#3166 <https://github.com/quicwg/base-drafts/pull/3166>) that was both more powerful and more complex: tie the (alternative_version, alternative_salt) pair to NEW_TOKEN frames, to allow servers to generate a unique alternative_salt per client and encode it in the token.
> 
> 
> I dispute the argument that #3166 is more complex. My view is that 
> #3166 is more powerful and simpler than (3) (the PR being #2573).
> 
> 
> Reasons:
> 
> * For a server associating one initial salt with one alternative 
> version, #3166 and #2573 are identical with the exception being how the 
> information is carryied (i.e. TP vs. NEW_TOKEN).
> 
> * For a client, bundling the alternative seeds in a NEW_TOKEN makes 
> things simpler, as clients are not required to have a new state that 
> has to be retained across multiple connections.
> 
> 
> 
> > 5) After some interesting back and forth on that PR, it became clear that this is a hard problem to solve: this could cause failures if servers forget their token keys, and mitigations for that problem can become downgrade attack vectors
> 
> 
> The proposal for 3 has this problem. It leads to a failure when a 
> server forgets the alternative initial salts.
> 
> 
> 
> > 6) While there was clear WG appetite for (1), I'm not sure we have consensus to build a more powerful solution like (4)
> 
> 
> > I fear that solving (5) could take some time, which would delay QUICv1. Instead I'd like to propose the following plan:
> 
> > a) we take the simpler solution (3) and add that to the spec
> 
> > b) we take the more powerful/complex solution (5) a turn it into a QUIC extension
> 
> 
> > That would allow us to ship QUICv1 with some level of ossification mitigations without delay.
> 
> 
> As stated, the proposed solution for (4) is simpler than (3), can be 
> used to implement (3), and also provides a stronger protection for 
> servers certain that they can retain the token unprotection keys.
> 
> 
> I agree that solving (5) for all parties might be hard, and that we 
> might want to punt that to v2. But, I think we should adopt (4) than 
> (3) due to the aforementioned reasons.
> 
> 
> 
> > Thoughts?
> 
> 
> > David
> 
> 
> 
> 
> 
> 
> -- 
> 
> Kazuho Oku
>