Re: [hybi] WebSocket, TLS and intermediaries

Roberto Peon <fenix@google.com> Wed, 21 July 2010 00:14 UTC

Return-Path: <fenix@google.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 9C2663A65A5 for <hybi@core3.amsl.com>; Tue, 20 Jul 2010 17:14:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.976
X-Spam-Level:
X-Spam-Status: No, score=-101.976 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, 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 J2i570LytoKj for <hybi@core3.amsl.com>; Tue, 20 Jul 2010 17:14:51 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [74.125.121.35]) by core3.amsl.com (Postfix) with ESMTP id 00EEC3A67FA for <hybi@ietf.org>; Tue, 20 Jul 2010 17:14:50 -0700 (PDT)
Received: from wpaz17.hot.corp.google.com (wpaz17.hot.corp.google.com [172.24.198.81]) by smtp-out.google.com with ESMTP id o6L0F4Z3003204 for <hybi@ietf.org>; Tue, 20 Jul 2010 17:15:04 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1279671304; bh=pmf/hvcXOA2eKAZBpH8iQyhLOSg=; h=MIME-Version:In-Reply-To:References:Date:Message-ID:Subject:From: To:Cc:Content-Type; b=TSEf3UX61PXjCjx8iLdXRU1bIISSMp/4FKiK2C3tGgJKTtijQKvXUG3f6kpVja+wr lLqpuOsek/LYZ6v5jWTqg==
DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=mime-version:in-reply-to:references:date:message-id:subject:from:to: cc:content-type:x-system-of-record; b=jf6Czjv+wX5bPQCSFrbu8+eIHfo54D9SA0YNyClo6I538pfXvVApd7cYii49oad9Q ma17PQckeE/Fw3okpZvNA==
Received: from qyk27 (qyk27.prod.google.com [10.241.83.155]) by wpaz17.hot.corp.google.com with ESMTP id o6L0F3mJ017321 for <hybi@ietf.org>; Tue, 20 Jul 2010 17:15:03 -0700
Received: by qyk27 with SMTP id 27so2425022qyk.3 for <hybi@ietf.org>; Tue, 20 Jul 2010 17:15:03 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.224.60.205 with SMTP id q13mr6431441qah.335.1279671302790; Tue, 20 Jul 2010 17:15:02 -0700 (PDT)
Received: by 10.229.106.214 with HTTP; Tue, 20 Jul 2010 17:15:02 -0700 (PDT)
In-Reply-To: <FC1F510E-6D48-4D75-A356-F455C9FD5BD8@apple.com>
References: <h2w5c902b9e1004152345j992b815bz5f8d38f06a19181a@mail.gmail.com> <Pine.LNX.4.64.1004160701250.751@ps20323.dreamhostps.com> <4BC860FD.8080007@webtide.com> <Pine.LNX.4.64.1004161952530.751@ps20323.dreamhostps.com> <35EFEA5E-9017-48A1-BB66-A0AF947E159F@d2dx.com> <AANLkTinihlL2sn3Kiwtcl7QYKhFlvmj9lvmH4_z02xF7@mail.gmail.com> <FC1F510E-6D48-4D75-A356-F455C9FD5BD8@apple.com>
Date: Tue, 20 Jul 2010 17:15:02 -0700
Message-ID: <AANLkTiko_Pjie0FNRvLHsh5PAotW2a6OH=6oapEhJBOQ@mail.gmail.com>
From: Roberto Peon <fenix@google.com>
To: Maciej Stachowiak <mjs@apple.com>
Content-Type: multipart/alternative; boundary="0015175caae46e9e90048bdab1ad"
X-System-Of-Record: true
Cc: Hybi <hybi@ietf.org>
Subject: Re: [hybi] WebSocket, TLS and intermediaries
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: Wed, 21 Jul 2010 00:14:52 -0000

On Tue, Jul 20, 2010 at 5:01 PM, Maciej Stachowiak <mjs@apple.com> wrote:

>
> On Jul 20, 2010, at 4:29 PM, Mike Belshe wrote:
>
>
>> 3. Error checking
>> A properly written intermediary is also expertly written. So it would be
>> able to prevent protocol exploits that may appear. In addition, these types
>> of intermediaries would be maintained for the purpose of security and thus
>> updated faster than you could hypothetically update client(s) and server(s).
>> While it doesn't eliminate the spread of exploits and malware, it can reduce
>> it. If we are supposed to be as concerned as we are about security, we
>> should also cover the possibility that there may be a security hole in the
>> future (one that we couldn't consider now) and make sure it can be
>> protected. An intermediary can be a part of such a solution, but that also
>> implies we must have intermediaries that can talk WebSockets.
>>
>
> Let me try to be objective about the tradeoff here:  When everything is
> encrypted and authenticated at the endpoints, it prevents an intermediary
> (who's motivations may be different than yours) from taking action.  When
> data is not encrypted & authenticated, intermediaries, which have different
> motivations (good or bad) are possible.
>
> So the sad news is that for every good motivation, there is an equal and
> opposite bad motivation as a counter argument...
>
>
> Also, in practice it does not seem to be the case that intermediaries are
> updated faster than clients or servers. One of the challenges to deploying
> new protocols or protocol features is old intermediaries that are not
> updated.
>


Hear, hear. This is the part about intermediaries that is really terrible.
They ossify the net.
There is another concern w.r.t. intermediaries.
Schools and other institutions will block port 443 if they feel unacceptable
content is flowing over it and they have other means of dealing with it.
I believe that this means that we need an 'authorized proxy' model. No proxy
would be fully transparent (unless it was a reverse proxy representing the
real endpoint), however it should be exceptionally easy to install a policy
allowing the proxy explicitly. It is a hair more annoying for the user than
no proxy, but it gives schools, etc. a way to control the computers that
they own without blocking port 443 for everyone and everything.



>
> Actually, if you do that, the browser throws up a huge red box saying
> "danger".  The MITM will not have a signing cert for a CA trusted by the
> browser.  So, the cert will be signed by the ISP or other transparent
> intermediary, which won't match the trusted CA list, and the browser will
> complain.  Corporations can get around this by forcing a CA cert onto the
> browser; but that is no longer a transparent intermediary - it was
> specifically granted permission at the endpoint.  Of course, the user, not
> knowing what the hell is going on, will click through anyway, think "that's
> weird", and everything else will still work.
>
>
> Browsers don't have to accept broken certs for WebSocket with a
> clickthrough the way many still do for Web sites. I would argue that they
> should not, because the security consequences of the decision cannot
> possibly be understood by the typical user.
>
>
> BTW - there is another data point here; deployment of WebSockets over port
> 80 was measured in Chrome to have ~67% success rate today.  Deployment over
> port 443 (with TLS) has a >95% success rate.  So, if you don't use TLS, then
> browsers and websites will need to be made more complex to deal with the
> edge case of WebSockets failing in weird ways due to existing intermediaries
> which fail, even after the WebSocket handshake.
>
>
> This point is very important. Building on top of TLS has huge practical
> benefits. I think this outweighs the desire to more easily build transparent
> intermediaries. Any mechanism that allows intermediaries without being
> authorized by either endpoint is by definition a security vulnerability in
> the protocol.
>
> I think the benefits of TLS also outweigh the "amateur server implementor"
> argument. I don't think we want to make it easy to implement a security
> hole.
>
> Regards,
> Maciej
>
>
> _______________________________________________
> hybi mailing list
> hybi@ietf.org
> https://www.ietf.org/mailman/listinfo/hybi
>
>