[quicwg/base-drafts] Consider three ways handshake for new paths (#1749)
Christian Huitema <notifications@github.com> Sun, 16 September 2018 01:23 UTC
Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 675AB130E62 for <quic-issues@ietfa.amsl.com>; Sat, 15 Sep 2018 18:23:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.01
X-Spam-Level:
X-Spam-Status: No, score=-8.01 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, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.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 I76hQeJdu-Ui for <quic-issues@ietfa.amsl.com>; Sat, 15 Sep 2018 18:23:12 -0700 (PDT)
Received: from out-7.smtp.github.com (out-7.smtp.github.com [192.30.252.198]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6E316130E58 for <quic-issues@ietf.org>; Sat, 15 Sep 2018 18:23:12 -0700 (PDT)
Date: Sat, 15 Sep 2018 18:23:11 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1537060991; bh=k8CpiTGUOIewUlyUdN5s/NBVE11S8Icxa0GA/wRz5ZA=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=hoV4HEaCrQ3du5zAjbyDmXxJj0JeS+Wnkc+62ichotikxN1Bn1tIPqhVE3ws2aJ/2 NVqvTXLhupXn52QCg3wRd/LgE1nZRoQKfEgHs3ejaz7LwL5qCH/46jKRtoY1ZdBhOs gwdP1psymRIxH19tvzEtB5LTxuZHS7ySNBQ8QOQc=
From: Christian Huitema <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab7a5dbd1eccfc18254a7c2933504446aca6950fa992cf0000000117b5727f92a169ce157e2f35@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/1749@github.com>
Subject: [quicwg/base-drafts] Consider three ways handshake for new paths (#1749)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5b9db07f9c1b1_2f453fe7eced45b82812ed"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: huitema
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/plGOvN6Na3uVqS2bVQ0KG7BrC68>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 16 Sep 2018 01:23:14 -0000
For privacy reasons, we want that communication between peers happens on path defined by a pair of addresses and identified by a pair of connection ID. For security reasons, we also want to not use paths before their continuity has been tested. Implementations end up doing that with an "ad hoc" three ways handshake:
```
Client API: please test a new path between dest and srce addresses.
Client:
picks fresh connection ID from list provided by server.
sends "probe" (path challenge) to/from selected addresses, to selected CID.
Server Node:
receives the path challenge
picks fresh connection ID from list provided by client.
sends probe response (path challenge response and path challenge) to selected CID
receives probe response.
uses address pair to correlate with one of the probes in progress.
associate server selected "client CID" with client selected "server CID".
consider path validated.
sends challenge response
receives response. considers path validated.
```
Developers can make that work, and in fact it works in my code. But it is very brittle. It will fail if:
1) There is no fresh server CID available at the client to start the process.
2) There is no fresh client CID available at the server.
3) Somehow the client cannot correlate the incoming response with a pending probe.
The first condition is unavoidable -- the client needs a fresh ID, and the server needs accept packets through it. But the other failure modes could be avoided, and a slight redesign would make the whole process more robust. The idea would be to recognize that this is a 3-ways handshake, and treat it as such:
```
Client API: please test a new path between dest and srce addresses.
Client:
picks fresh connection ID from list provided by server.
picks new local CID.
sends "probe" towards server selected CID with three parameters:
probe challenge, client source CID, client reset token.
Server Node:
receives the probe. If it is ready to accept it,
sends probe response to client source CID with two parameters:
probe response and server challenge
receives probe response.
uses destination CID to correlate with probe in progress.
consider path validated.
sends challenge response to server.
receives response. considers path validated.
```
Recognizing the probes as such makes bookkeeping much easier. It also allows enforcement of privacy rules: use exactly one CID for each of the peer CID. But of course, it requires three or four new frames; PATH_PROBE, PATH_RESPONSE, PATH_CONFIRM. And maybe something like PATH_RESET.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1749
- [quicwg/base-drafts] Consider three ways handshak… Christian Huitema
- Re: [quicwg/base-drafts] Consider three ways hand… ianswett
- Re: [quicwg/base-drafts] Consider three ways hand… Mike Bishop
- Re: [quicwg/base-drafts] Consider three ways hand… Martin Thomson
- Re: [quicwg/base-drafts] Consider three ways hand… Martin Thomson