RE: Exercising Version Negotiation

"Lubashev, Igor" <ilubashe@akamai.com> Thu, 22 March 2018 23:45 UTC

Return-Path: <ilubashe@akamai.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id CE00312711D for <quic@ietfa.amsl.com>; Thu, 22 Mar 2018 16:45:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1521762313; bh=RZw6c/Wa7D2jS2ZSWsecaq8BMR3D1J5bWs4EAc30y3g=; h=From:CC:Subject:Date:References:In-Reply-To:To:To; b=MD+tBNfZv4+eE+B/77/RgtiO4JrByJ3WqC4bDPAQ4tzudaHShncHp9IOsCottaszj 5Y9fbj3uR7YOwnfW1RzLqd7m3j2k8DCc3rKTMa/y+YhfNmf/B6M/WW+TWivYv7UEuS qgGCtvhHE5ZOezKlOEkvGB6krOhOOwMfSrrLRb/4=
X-Mailbox-Line: From ilubashe@akamai.com Thu Mar 22 16:45:13 2018
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 995891270AE; Thu, 22 Mar 2018 16:45:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1521762313; bh=VrhY21raa56Ndr8zsH+3QRixIRhQ+0skobX2p9qS4cg=; h=From:CC:Subject:Date:References:In-Reply-To:To:To; b=rix+9Fi252CLwPrxn0dWr7j+UP9i3lqt0WgLVfzCZJmasPMwzd169sv2MWYYm6nL8 DAEaifzxWzwn5o0RVy+I3EKHYLXmmg70qQ4vgWxwSUPxylUtx2Ft7qaNJ2Qp5OxoJ6 OOIBHqDk4X3I128v8EviDlS28T0rrhwXRUyljqkc=
X-Original-To: dmarc-reverse@ietfa.amsl.com
Delivered-To: dmarc-reverse@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7327A124D37 for <dmarc-reverse@ietfa.amsl.com>; Thu, 22 Mar 2018 16:45:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, 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=akamai.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 LpF2lwIr5-xn for <dmarc-reverse@ietfa.amsl.com>; Thu, 22 Mar 2018 16:45:11 -0700 (PDT)
Received: from mx0a-00190b01.pphosted.com (mx0a-00190b01.pphosted.com [IPv6:2620:100:9001:583::1]) (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 7EC4712711D for <rch=40google.com@dmarc.ietf.org>; Thu, 22 Mar 2018 16:45:11 -0700 (PDT)
Received: from pps.filterd (m0050095.ppops.net [127.0.0.1]) by m0050095.ppops.net-00190b01. (8.16.0.22/8.16.0.22) with SMTP id w2MNgsue015901; Thu, 22 Mar 2018 23:45:10 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=jan2016.eng; bh=894isAok4QYEQpBMU9wMv6D2yJXimB4Uy1g0dhIhgnY=; b=VPgNeVascc32ykZvKbmc0lByrvur0/uzsejV1oBStC86nVLS/etW8dXheIpUiJTCZx/c m8TbSXOyhG4DfHYpdIIg2308nqcdcijN/LAfMzSAVSwFFYSbI538wBqftrg1yZ+8ZmY7 GodZoawDuHp1G47BbRTmoENl/Fc1578TZ4WhSsUI2glJ89MFzWtkLgIWTYakFlyY4X2J DUoalHOuxXcL7kOqp83QVJY5S9G4YUsdQntyWTAVDS3J7XAU4ne5+2Qk2pDynKBtUNEc ezqDGUDzxDYXLkdJ5XZ4nM5v9S5QW08aHf47ywFv5R9D2U8HEEKET13cYQZhSDBG9VrQ zw==
Received: from prod-mail-ppoint4 ([96.6.114.87]) by m0050095.ppops.net-00190b01. with ESMTP id 2gvh9n8x49-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 22 Mar 2018 23:45:09 +0000
Received: from pps.filterd (prod-mail-ppoint4.akamai.com [127.0.0.1]) by prod-mail-ppoint4.akamai.com (8.16.0.21/8.16.0.21) with SMTP id w2MNaWQd017850; Thu, 22 Mar 2018 19:45:08 -0400
Received: from email.msg.corp.akamai.com ([172.27.27.25]) by prod-mail-ppoint4.akamai.com with ESMTP id 2grxbw256c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 22 Mar 2018 19:45:08 -0400
Received: from USTX2EX-DAG1MB5.msg.corp.akamai.com (172.27.27.105) by ustx2ex-dag1mb3.msg.corp.akamai.com (172.27.27.103) with Microsoft SMTP Server (TLS) id 15.0.1263.5; Thu, 22 Mar 2018 18:45:06 -0500
Received: from USTX2EX-DAG1MB5.msg.corp.akamai.com ([172.27.27.105]) by ustx2ex-dag1mb5.msg.corp.akamai.com ([172.27.27.105]) with mapi id 15.00.1263.000; Thu, 22 Mar 2018 18:45:06 -0500
From: "Lubashev, Igor" <ilubashe@akamai.com>
CC: "ekr@rtfm.com" <ekr@rtfm.com>, "quic@ietf.org" <quic@ietf.org>
Subject: RE: Exercising Version Negotiation
Thread-Topic: Exercising Version Negotiation
Thread-Index: AQHTwdXrIKNHYUQfhEaGGwLwqlZA9KPcnysAgAAEWICAABZ4AIAAVd+A///cFqo=
Date: Thu, 22 Mar 2018 23:45:06 +0000
Message-ID: <a75e36930dca401ba8718fab60cb04cb@ustx2ex-dag1mb5.msg.corp.akamai.com>
References: <CABcZeBMv5BqZOtgVA2wfqaaGCd94gcNPB9bTXkrvNXXRveU8wA@mail.gmail.com> <CAJ_4DfQ6zqVeUUF7XcoT110kVcP1BJFEtqVR-+FN5XD2UuRMMA@mail.gmail.com> <CABcZeBMVNy151rFntLutSPtctPsd2Ei3Qy-ChuEXVMVpz4pgdQ@mail.gmail.com> <SN1PR08MB1854DD71FDCB9FBA48DD26E9DAA90@SN1PR08MB1854.namprd08.prod.outlook.com>, <CAJ_4DfQxcxNGNP9CW3poPqnFgUsrNy269dO2Lf0dvWBFKKsSHg@mail.gmail.com>
In-Reply-To: <CAJ_4DfQxcxNGNP9CW3poPqnFgUsrNy269dO2Lf0dvWBFKKsSHg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
Content-Type: multipart/alternative; boundary="_000_a75e36930dca401ba8718fab60cb04cbustx2exdag1mb5msgcorpak_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-03-22_12:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1803220264
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-03-22_12:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1803220265
To: "rch=40google.com@dmarc.ietf.org" <rch@google.com>
To: "mbishop@evequefou.be" <mbishop@evequefou.be>
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/iVtJsVuA6y6OiT6XVHc-zZBRdng>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
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, 22 Mar 2018 23:45:14 -0000

The easiest solution is the client sometimes trying a bogus version. It would be fully under client's control when to engage in such network policing.

-----Original Message-----
From: Ryan Hamilton [rch=40google.com@dmarc.ietf.org]
Received: Thursday, 22 Mar 2018, 8:53PM
To: Mike Bishop [mbishop@evequefou.be]
CC: Eric Rescorla [ekr@rtfm.com] IETF QUIC WG [quic@ietf.org]
Subject: Re: Exercising Version Negotiation

Agreed. As specified, I don't see how the server would be induced to send a version negotiation packet in this case. Ekr, perhaps you can provide some sample flows. If the server supports versions A and B, and the client supports versions A and B, then it doesn't matter which version the client prefers. In either case, the server supports the version the client is attempting to speak and will not send a version negotiation packet.

Further, it's complicated for the server to (some fraction of the time) send a VN packet in response to a connection attempt that uses a version the server actually does support. It will, obviously, need to exclude this version from the VN packet it sends to the client. That's easy. But it also needs to ensure that the list of QUIC versions it provides in the subsequent TLS handshake matches this version list. This, I suspect, is more complicated as version negotiation is typically stateless.

On Thu, Mar 22, 2018 at 8:46 AM, Mike Bishop <mbishop@evequefou.be<mailto:mbishop@evequefou.be>> wrote:
Technically, no, it wouldn't.  Servers accept if they're capable/willing to speak the version the client selected, so a server that supports both would always accept no matter what the client chooses.  You'd need the server to be contrarian a small percentage of the time instead.

From: QUIC <quic-bounces@ietf.org<mailto:quic-bounces@ietf.org>> On Behalf Of Eric Rescorla
Sent: Thursday, March 22, 2018 2:26 PM
To: Ryan Hamilton <rch@google.com<mailto:rch@google.com>>
Cc: IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>
Subject: Re: Exercising Version Negotiation

It would exercise the former.

-Ekr


On Thu, Mar 22, 2018 at 2:10 PM, Ryan Hamilton <rch@google.com<mailto:rch@google.com>> wrote:
When you say Version Negotiation, do you mean the process of sending an receiving a version negotiation packet, or simply the act of speaking two different versions? Your proposal seems to be the latter but I don't think I follow how it would exercise the former, though maybe that's intentional?

On Thu, Mar 22, 2018 at 5:03 AM, Eric Rescorla <ekr@rtfm.com<mailto:ekr@rtfm.com>> wrote:
Following up on the discussion at the mic, I do think it is useful to exercise the VN function, but I don't think it's useful to have those versions be different, because that creates perverse incentives.

Here's what I suggest instead: create two versions (we can call them QUIC v1+i  and QUIC v1-i), each with its own code point [0]. They should be essentially identical except for two trivial differences, intended to ensure that if you screw up version negotiation, you get failed interop.

- The constant in the handshake salt (5.2.2)
- The HKDF expansion constants

I suggest we handle each of these by just inverting the bits.

We would then suggest to people that they somewhat randomize their preferences (e.g., 99% of the time prefer v1+i, 1% of the time prefer v1-i). This will almost always result in matching versions, but will occasionally result in a mismatch, thus forcing us to test VN.

-Ekr

[0] Obviously we can do this for draft versions. We just say that the two versions are
ff0000XX and ffffffXX.