Re: [websec] draft-williams-websec-session-continue-prob-00

Yoav Nir <ynir@checkpoint.com> Tue, 15 January 2013 14:04 UTC

Return-Path: <ynir@checkpoint.com>
X-Original-To: websec@ietfa.amsl.com
Delivered-To: websec@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1001621F87D9 for <websec@ietfa.amsl.com>; Tue, 15 Jan 2013 06:04:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.765
X-Spam-Level:
X-Spam-Status: No, score=-9.765 tagged_above=-999 required=5 tests=[AWL=-0.833, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8, SARE_FWDLOOK=1.666]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CCLqtMtAc5H9 for <websec@ietfa.amsl.com>; Tue, 15 Jan 2013 06:04:24 -0800 (PST)
Received: from smtp.checkpoint.com (smtp.checkpoint.com [194.29.34.68]) by ietfa.amsl.com (Postfix) with ESMTP id 9143121F873E for <websec@ietf.org>; Tue, 15 Jan 2013 06:04:23 -0800 (PST)
Received: from DAG-EX10.ad.checkpoint.com ([194.29.34.150]) by smtp.checkpoint.com (8.13.8/8.13.8) with ESMTP id r0FE4KJL015428; Tue, 15 Jan 2013 16:04:20 +0200
X-CheckPoint: {50F55F6D-3-1B221DC2-2FFFF}
Received: from IL-EX10.ad.checkpoint.com ([169.254.2.18]) by DAG-EX10.ad.checkpoint.com ([fe80::80df:1c2c:3d29:3748%11]) with mapi id 14.02.0328.009; Tue, 15 Jan 2013 16:04:20 +0200
From: Yoav Nir <ynir@checkpoint.com>
To: James M Snell <jasnell@gmail.com>
Thread-Topic: [websec] draft-williams-websec-session-continue-prob-00
Thread-Index: AQHN8p9I7Of/xGWYU0m2QufJ2qbPJ5hKS6iA
Date: Tue, 15 Jan 2013 14:04:19 +0000
Message-ID: <4613980CFC78314ABFD7F85CC302772111984CB4@IL-EX10.ad.checkpoint.com>
References: <CABP7RbcUNkxZ55T626iGBVCVRzt_r6DsyLBLeEjN-of8H3xHFA@mail.gmail.com>
In-Reply-To: <CABP7RbcUNkxZ55T626iGBVCVRzt_r6DsyLBLeEjN-of8H3xHFA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [91.90.139.159]
Content-Type: multipart/alternative; boundary="_000_4613980CFC78314ABFD7F85CC302772111984CB4ILEX10adcheckpo_"
MIME-Version: 1.0
Cc: "<websec@ietf.org>" <websec@ietf.org>
Subject: Re: [websec] draft-williams-websec-session-continue-prob-00
X-BeenThere: websec@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Web Application Security Minus Authentication and Transport <websec.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/websec>, <mailto:websec-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/websec>
List-Post: <mailto:websec@ietf.org>
List-Help: <mailto:websec-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/websec>, <mailto:websec-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Jan 2013 14:04:25 -0000

Hi James

I've now read your draft. It looks to solve the same kind of problem as PHB's integrity draft [1], although that one currently uses HTTP/1 syntax.

The protocol you propose binds a key to a session (or "KEY-ID") and this allows to integrity protect both requests and responses. It also allows the client to bind specific requests to specific sessions, which is one of the requirements in the session-continue draft. Integrity protection of the requests (an possibly responses) is definitely a key component of any solution to make sessions secure. It doesn't help to authenticate just the fact that there is a request, if we then allow a proxy to rewrite the entire content of the request.

What's missing for me is a binding of that key-id to an authenticated identity. Identities can be authenticated multiple ways. There's the user certificate in TLS, Some better or worse HTTP schemes (everything from Basic to ZKPPs), two-factor methods using some side-channel (such as instant messaging to mobile phones), and even HTTP forms, whether they are the insecure kind we use today or something with browser-based encryption. I think it would be a worthy goal to have all of these bind somehow to the key-id.

The other thing that's missing, but should probably be in a separate document (that I think we're not ready to start yet) is a specification of client behavior, meaning when should the client use the same session id (or "key id") for different requests. For example, if I have gmail open in one browser tab, and in another tab I have a site, where teh HTML says "<img src="mail.google.com/imgs/yellow_arrow.gif<http://mail.google.com/imgs/yellow_arrow.gif>">", should the request to mail.google.com<http://mail.google.com> use the same key id that I am using with GMail?  The one that is bound to my identity? With the current cookie mechanism, the answer is yes. If we define a new session mechanism, we can re-think this.

Yoav
[1] http://tools.ietf.org/html/draft-hallambaker-httpintegrity-02

On Jan 14, 2013, at 11:36 PM, James M Snell <jasnell@gmail.com<mailto:jasnell@gmail.com>> wrote:

Hello,

Just jumped over here from the http list per Yoav Nir's request for feedback with regards to the draft-williams-websec-session-continue-prob draft.

Overall I think the draft is a good start. There definitely does need to be more of an explanation as to why the existing cookie-based mechanism is bad.

As far as more forward looking feedback is concerned, I wanted to point to the In-Session Key Negotiation draft I wrote as input to the ongoing http/2 discussion

  http://tools.ietf.org/html/draft-snell-httpbis-keynego-00

This draft introduces a new (currently experimental) bidirectional key-negotiation sub-protocol within spdy/http2 for the negotiation of secure keys and can be used for the establishment of authenticated and unauthenticated sessions. (Note that I'm just making sure folks know about this draft as it is relevant to the discussion)... Running down through the list of requirements stated by the websec-session-continue-prob draft it covers a good deal of the issues.

- James