Re: [TLS] TLS renegotiation issue

Nicolas Williams <Nicolas.Williams@sun.com> Thu, 05 November 2009 17:24 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 EA58C3A6AEA for <tls@core3.amsl.com>; Thu, 5 Nov 2009 09:24:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.245
X-Spam-Level:
X-Spam-Status: No, score=-5.245 tagged_above=-999 required=5 tests=[AWL=-0.799, BAYES_00=-2.599, HELO_MISMATCH_COM=0.553, J_BACKHAIR_46=1, J_CHICKENPOX_66=0.6, 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 jhN9cNfCp0BD for <tls@core3.amsl.com>; Thu, 5 Nov 2009 09:24:41 -0800 (PST)
Received: from sca-ea-mail-4.sun.com (sca-ea-mail-4.Sun.COM [192.18.43.22]) by core3.amsl.com (Postfix) with ESMTP id CB1253A67D9 for <tls@ietf.org>; Thu, 5 Nov 2009 09:24:16 -0800 (PST)
Received: from dm-central-01.central.sun.com ([129.147.62.4]) by sca-ea-mail-4.sun.com (8.13.6+Sun/8.12.9) with ESMTP id nA5HOdP2028895 for <tls@ietf.org>; Thu, 5 Nov 2009 17:24:39 GMT
Received: from binky.Central.Sun.COM (binky.Central.Sun.COM [129.153.128.104]) by dm-central-01.central.sun.com (8.13.8+Sun/8.13.8/ENSMAIL, v2.2) with ESMTP id nA5HOdPW051900 for <tls@ietf.org>; Thu, 5 Nov 2009 10:24:39 -0700 (MST)
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 nA5HD8Rl009208; Thu, 5 Nov 2009 11:13:08 -0600 (CST)
Received: (from nw141292@localhost) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3/Submit) id nA5HD8nP009207; Thu, 5 Nov 2009 11:13:08 -0600 (CST)
X-Authentication-Warning: binky.Central.Sun.COM: nw141292 set sender to Nicolas.Williams@sun.com using -f
Date: Thu, 05 Nov 2009 11:13:08 -0600
From: Nicolas Williams <Nicolas.Williams@sun.com>
To: Martin Rex <mrex@sap.com>
Message-ID: <20091105171308.GY1105@Sun.COM>
References: <73843DF9-EFCB-4B8D-913E-FE2235E5BDD3@rtfm.com> <200911051711.nA5HBfOl028765@fs4113.wdf.sap.corp>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <200911051711.nA5HBfOl028765@fs4113.wdf.sap.corp>
User-Agent: Mutt/1.5.7i
Cc: Eric Rescorla <ekr@rtfm.com>, tls@ietf.org
Subject: Re: [TLS] TLS renegotiation issue
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: Thu, 05 Nov 2009 17:24:42 -0000

On Thu, Nov 05, 2009 at 06:11:41PM +0100, Martin Rex wrote:
> One conceivable approach would be a TLS extension for secure renegotiation
> with roughly the following semantics:
> 
> 
>  - on initial TLS handshakes (aka Re-nego of a TLS_NULL_WITH_NULL_NULL)
>    the client that supports secure renegotiation should send the
>    TLS extension in the client hello with an empty extension data
>    to signal to the server that it support secure renegotation.
> 
>  - on TLS session renegotiations, the client should sent the TLS extension
>    with the extension data containing the client.random and server.random
>    from the existing session.

The MITM can make sure they match.

Why not just send an extension with the tls-unique channel binding for
the first/outer connection, and then make sure that that gets fed as an
input for the PRF in the second/inner connection?  I.e., proper channel
binding.  The MITM _cannot_ make sure that the tls-unique CB of the
client<->MITM and MITM<->server outer connections match.

>  - A server that receives a ClientHello without the TLS extension for
>    secure renegotiation should NOT perform old-style renegotiation
>    for that session (and get apps with flawed assumptions into trouble),
>    i.e. NOT support delayed authentication for those TLS clients.

Right.

>  - A server that receives a ClientHello on an initial TLS handshake
>    with a TLS extension (empty data) for secure renegotiation may decide to
>    delay client-cert authentication to a securely renegotiated session

Right.

>  - A server that receives a ClientHello with a TLS extension for secure
>    negotiation and a reference to a previous session MUST compare the
>    client.random and server.random from the extension data to that of
>    the current session (and abort if they do not match).  And the
>    server should probably insist on doing a ChangeCipherSpec on both
>    directions in the renegotiation handshake.

See above.

> Since Larry is looking for a means to uniquely identify a single
> TLS "connection" independent of whether its a single TLS handshake
> or renegotiated, we should check whether we can carry-over some
> information form the initial handshake on a connection along
> with the client.random&server.random.  Technically there is no
> limit on the number of renegotiations, so a simple pointer
> only one TLS session into the past does not seem sufficient
> for that purpose.

See above.  Use tls-unique.

Nico
--