Re: [hybi] Handshake was: The WebSocket protocol issues.

Maciej Stachowiak <mjs@apple.com> Fri, 24 September 2010 09:36 UTC

Return-Path: <mjs@apple.com>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 690D33A6B2C for <hybi@core3.amsl.com>; Fri, 24 Sep 2010 02:36:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -106.74
X-Spam-Level:
X-Spam-Status: No, score=-106.74 tagged_above=-999 required=5 tests=[AWL=-0.141, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xad67KIhH66C for <hybi@core3.amsl.com>; Fri, 24 Sep 2010 02:36:04 -0700 (PDT)
Received: from mail-out3.apple.com (mail-out.apple.com [17.254.13.22]) by core3.amsl.com (Postfix) with ESMTP id B73193A6B0C for <hybi@ietf.org>; Fri, 24 Sep 2010 02:36:03 -0700 (PDT)
Received: from relay14.apple.com (relay14.apple.com [17.128.113.52]) by mail-out3.apple.com (Postfix) with ESMTP id 1C973AADADC0 for <hybi@ietf.org>; Fri, 24 Sep 2010 02:36:35 -0700 (PDT)
X-AuditID: 11807134-b7cacae0000058e0-58-4c9c71220fa5
Received: from elliott.apple.com (elliott.apple.com [17.151.62.13]) by relay14.apple.com (Apple SCV relay) with SMTP id BB.15.22752.2217C9C4; Fri, 24 Sep 2010 02:36:35 -0700 (PDT)
MIME-version: 1.0
Content-type: text/plain; charset="utf-8"
Received: from [17.151.83.79] by elliott.apple.com (Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008; 32bit)) with ESMTPSA id <0L9800DWYW0YAT40@elliott.apple.com> for hybi@ietf.org; Fri, 24 Sep 2010 02:36:34 -0700 (PDT)
From: Maciej Stachowiak <mjs@apple.com>
In-reply-to: <AANLkTikszM0pVE-0dpZ2kv=i=y5yzS2ekeyZxtz9N=fQ@mail.gmail.com>
Date: Fri, 24 Sep 2010 02:36:34 -0700
Content-transfer-encoding: quoted-printable
Message-id: <62B5CCE3-79AF-4F60-B3A0-5937C9D291D7@apple.com>
References: <AANLkTikszM0pVE-0dpZ2kv=i=y5yzS2ekeyZxtz9N=fQ@mail.gmail.com>
To: Greg Wilkins <gregw@webtide.com>
X-Mailer: Apple Mail (2.1081)
X-Brightmail-Tracker: AAAAAA==
Cc: hybi <hybi@ietf.org>, Alexander Voronin <alexander.voronin@gmail.com>
Subject: Re: [hybi] Handshake was: The WebSocket protocol issues.
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Sep 2010 09:36:05 -0000

On Sep 23, 2010, at 12:06 PM, Greg Wilkins wrote:

> 2010/9/23 Ian Fette (イアンフェッティ) <ifette@google.com>:
>> Greg,
>> I want to point out that I am totally open to replacing the handshake.
>> However, I do think there are a set of requirements that we should meet:
> 
> Ian,
> 
> I never meant to imply that you were not.   You're doing a great job
> and good progress is being made.
> 
> The only thing that I ask is that when we consider all alternative
> proposals that we do not give the current handshake any benefits
> simply due to incumbency that I believe was not obtained with due
> diligence.    We should simply consider all alternatives and pick the
> best.
> 
> 
> So I'll  summarize my ping pong proposal and then discuss the criteria
> you listed below
> 
> + The client handshake should include a random nonce that the client
> generates after the websocket instance has been created
> + The server handshakes with a 101 that indicates acceptance of the
> websocket upgrade.
> + The server then sends as the first message on the connection a ping
> that has a hash of the nonce in its body.
> + The client recieves the 101 response and then the ping request.
> Only after checking the contents of the ping and sending a pong
> response (to ensure the connection is still open) should it call the
> onopen callback of the websocket object
> + The server has a ping timeout running that is cancelled by the
> receipt of the pong. If the pong is not received, the connection is
> terminated.

This proposal does not appear to defend against a cross-protocol attack on a WebSocket server using a browser-hosted HTTP API.

It also appears to add more round trips before actual message sending can begin in either direction.

Regards,
Maciej