Re: [TLS] TLS renegotiation issue

Nicolas Williams <> Thu, 05 November 2009 20:41 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id CE3273A6889 for <>; Thu, 5 Nov 2009 12:41:57 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.015
X-Spam-Status: No, score=-6.015 tagged_above=-999 required=5 tests=[AWL=0.031, BAYES_00=-2.599, HELO_MISMATCH_COM=0.553, RCVD_IN_DNSWL_MED=-4]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id U4h3RjPtkYZ1 for <>; Thu, 5 Nov 2009 12:41:56 -0800 (PST)
Received: from (sca-ea-mail-4.Sun.COM []) by (Postfix) with ESMTP id E348E3A67AD for <>; Thu, 5 Nov 2009 12:41:56 -0800 (PST)
Received: from ([]) by (8.13.6+Sun/8.12.9) with ESMTP id nA5KgGia023285 for <>; Thu, 5 Nov 2009 20:42:16 GMT
Received: from binky.Central.Sun.COM (binky.Central.Sun.COM []) by (8.13.8+Sun/8.13.8/ENSMAIL, v2.2) with ESMTP id nA5KgGGf021172 for <>; Thu, 5 Nov 2009 13:42:16 -0700 (MST)
Received: from binky.Central.Sun.COM (localhost []) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3) with ESMTP id nA5KUj2N009361; Thu, 5 Nov 2009 14:30:45 -0600 (CST)
Received: (from nw141292@localhost) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3/Submit) id nA5KUjQL009360; Thu, 5 Nov 2009 14:30:45 -0600 (CST)
X-Authentication-Warning: binky.Central.Sun.COM: nw141292 set sender to using -f
Date: Thu, 5 Nov 2009 14:30:45 -0600
From: Nicolas Williams <>
To: Martin Rex <>
Message-ID: <20091105203044.GI1105@Sun.COM>
References: <20091105184615.GG1105@Sun.COM> <>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
User-Agent: Mutt/1.5.7i
Subject: Re: [TLS] TLS renegotiation issue
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." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 05 Nov 2009 20:41:57 -0000

On Thu, Nov 05, 2009 at 08:29:28PM +0100, Martin Rex wrote:
> Nicolas Williams wrote:
> > 
> > Initial comments based on a brief skim:
> > 
> >  - Please add a normative reference to RFC5056.
> I admit to not know what that exactly means, but it sounds wrong.
> It is perfectly possible to write this document in a fashion that
> an implementor does NOT NEED to read rfc5056, and therefore I
> would strongly prefer to keep it that way.

Referencing RFC5056 wouldn't so much be to provide guidance to
implementors as to say "this document conforms to RFC5056".

> >  - There's no real need for the ServerHello to include both of the
> >    Finished messages from the outer TLS connection.  (I think there's no
> >    real need for the ServerHello to include either of them, actually,
> >    but I've not thought enough about that.)  But it's OK as is, of
> >    course.
> The Server should send back something different than on initial
> connect in order to indicate to the client that it is convinced
> this is a renegotiation rather than an initial handshake.

Indeed, it must send something.  Even one bit will do -- that was my

> Sending back the verify_data from Server finished seems fair to me.

I agree -- that allows the client to verify that the server did
something more than agree.  There's no point in the server sending back
the client's Finished message though -- that adds no value and wastes
space on the wire (very little, granted).

> >    (In practice there's probably never more than one outer and one inner
> >    handshake, right?)
> Technically, there can NEVER be more than two, as required by the TLS
> spec (there is only one current and one pending) so technically, the
> existing proposal is referencing the "outer-most" TLS session.


> >  - There is a way for clients to protect themselves even when servers
> >    don't implement this extension:
> I would hope there is a way, but I have not seen one so far!
> There are actually two different scenarios:
> the one I suggested where both sides, client and server perform
> a renegotiation, and the one described by Marsh, where a clients
> initial TLS handshake is proxied into a renegotiation for the
> server.

Ah.  I was considering only one of those attacks.  You're correct, there
is no workaround short of fixing the protocol.

> >  - Might as well update RFC5246 to indicate that the Finished messages
> >    for any connection MUST be exported to applications.  Better get this
> >    done now.
> I haven't sufficiently thought about this to like it.
> Adding the finished messages to the renegotiation handshake
> is fine, because they have originally exchanged under the protection
> of the currently active ciphersuite, so this should have zero impact.

For an implementation like Microsoft's SSPI-based implementation TLS
that might not be true, since there each TLS connection is represented
by a separate "security context" -- for such an implementation the fix
requires that the application help the implementation link those
security contexts.

> You're asking to make something available that has not been previously
> available to the application.  This might be harmless, but I don't know.

How could it not be harmless?  What damage could ensue from making the
Finished messages of a TLS connection available to the application?
Remember: there are cipher suites that provide only integrity
protection, therefore Finished messages must not leak any information
about the master secret (and indeed, they do not, module the
cryptographic strength of the relevant algorithms used in the Finished
message construction).