Re: [TLS] [sasl] lasgt call comments (st Call: draft-altman-tls-channel-bindings (Channel Bindings for TLS) to Proposed Standard)

Nicolas Williams <Nicolas.Williams@sun.com> Wed, 28 October 2009 16:44 UTC

Return-Path: <Nicolas.Williams@sun.com>
X-Original-To: tls@core3.amsl.com
Delivered-To: tls@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4E3663A68AC; Wed, 28 Oct 2009 09:44:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.987
X-Spam-Level:
X-Spam-Status: No, score=-5.987 tagged_above=-999 required=5 tests=[AWL=0.059, BAYES_00=-2.599, HELO_MISMATCH_COM=0.553, RCVD_IN_DNSWL_MED=-4]
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 DAVGvXcO6lh9; Wed, 28 Oct 2009 09:44:47 -0700 (PDT)
Received: from brmea-mail-2.sun.com (brmea-mail-2.Sun.COM [192.18.98.43]) by core3.amsl.com (Postfix) with ESMTP id E9B1E28C205; Wed, 28 Oct 2009 09:44:34 -0700 (PDT)
Received: from dm-central-02.central.sun.com ([129.147.62.5]) by brmea-mail-2.sun.com (8.13.6+Sun/8.12.9) with ESMTP id n9SGin5V013332; Wed, 28 Oct 2009 16:44:49 GMT
Received: from binky.Central.Sun.COM (binky.Central.Sun.COM [129.153.128.104]) by dm-central-02.central.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id n9SGinsL050176; Wed, 28 Oct 2009 10:44:49 -0600 (MDT)
Received: from binky.Central.Sun.COM (localhost [127.0.0.1]) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3) with ESMTP id n9SGXNJL002486; Wed, 28 Oct 2009 11:33:23 -0500 (CDT)
Received: (from nw141292@localhost) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3/Submit) id n9SGXN8L002485; Wed, 28 Oct 2009 11:33:23 -0500 (CDT)
X-Authentication-Warning: binky.Central.Sun.COM: nw141292 set sender to Nicolas.Williams@sun.com using -f
Date: Wed, 28 Oct 2009 11:33:23 -0500
From: Nicolas Williams <Nicolas.Williams@sun.com>
To: Larry Zhu <larry.zhu@microsoft.com>
Message-ID: <20091028163322.GO1105@Sun.COM>
References: <20091005162704.8C1B43A6873@core3.amsl.com> <D3DC9D45B39CFC4CB312B2DD279B354C29BAE0E5@TK5EX14MBXW653.wingroup.windeploy.ntdev.microsoft.com> <20091028160013.GL1105@Sun.COM>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20091028160013.GL1105@Sun.COM>
User-Agent: Mutt/1.5.7i
Cc: "channel-binding@ietf.org" <channel-binding@ietf.org>, "tls@ietf.org" <tls@ietf.org>, "sasl@ietf.org" <sasl@ietf.org>
Subject: Re: [TLS] [sasl] lasgt call comments (st Call: draft-altman-tls-channel-bindings (Channel Bindings for TLS) to Proposed Standard)
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 28 Oct 2009 16:44:48 -0000

On Wed, Oct 28, 2009 at 11:00:13AM -0500, Nicolas Williams wrote:
> On Wed, Oct 28, 2009 at 10:18:04AM +0000, Larry Zhu wrote:
> > There is a design issue in tls-unique. For vendors who implement TLS
> > in a separate library, the TLS library does not by itself control the
> > transport therefore it would not know if there is a new connection, so
> > that the current specification is not implementable for these vendors.
> > 
> > It would be much easier to say the following instead:
> > 
> > The client's TLS Finished message from the first handshake of the
> > session (note: TLS session, not connection, so that the channel
> > binding is specific to each TLS session regardless of whether session
> > resumption is used).

I spoke to Jeff and I think I understand your issue, and I agree that we
never meant for that interpretation.  Proposed new text is below, but
first...

What the text says now:

   Description: The client's TLS Finished message (note: the Finished
   struct) from the first handshake of the connection (note: connection,
   not session, so that the channel binding is specific to each
   connection regardless of whether session resumption is used).

I think we meant to say is that if you're a server, and you see a
ClientHello, and you do a handshake and then receive a client Finished
message, and then return a handle to the application for the resulting
TLS whatever-you-call-it, then _that_ Finished message will be the
channel binding, EVEN IF the client then does a second handshake (for
re-keying, for authenticating the client, whatever).

Similarly, if you're a client and send a ClientHello and so on and so
forth and then return a handle to the application for the resulting TLS
whatever-you-call-it, then the first Finished message will be the
channel binding, EVEN IF the client then does a second handshake (for
re-keying, for authenticating the client, whatever).

The reason we used the word "connection" in the description was to avoid
the possibility that in a session resumption someone might interpret
tls-unique to be the client Finished message of the original connection
that established the session resumption state.  Changing the text to say
"session" instead of "connection" now would risk creating that
confusion.

The key issue here is how to write the description in such a way that
it is obvious to a TLS implementor in spite of the fact that the words
"connection", "session" and "transport" have multiple possible meanings
in the contexts where TLS is used.

Here, then, is my proposed clarification:

   Description: The client's TLS Finished message (note: the Finished 
   struct) from the first handshake of the TLS session.

(Yes, I changed "connection" to "session", followed by this:)

   Clarification: If a connection resumes a previous session, then the
   Finished message to use is that of the new session, not the one from
   the original session.  If a session has multiple handshakes and,
   therefore, multiple client Finished messages, the first client
   Finished message of that session is the one to use as the tls-unique
   channel binding.  From an application programming interface (API)
   perspective, the client's Finished message is saved in the contextual
   object handle that the client and server applications obtain when
   they initiate or resume a TLS session; later, when the applications
   request the tls-unique channel binding, the TLS implementation
   retrieves the saved first client Finished message from that context
   handle.

Nico
--