Re: [TLS] TLS renegotiation issue

Nicolas Williams <> Fri, 06 November 2009 20:20 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id C39623A6AA5 for <>; Fri, 6 Nov 2009 12:20:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -5.718
X-Spam-Status: No, score=-5.718 tagged_above=-999 required=5 tests=[AWL=-0.272, BAYES_00=-2.599, HELO_MISMATCH_COM=0.553, J_CHICKENPOX_44=0.6, RCVD_IN_DNSWL_MED=-4]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id v+tP6934HlnL for <>; Fri, 6 Nov 2009 12:20:46 -0800 (PST)
Received: from (brmea-mail-4.Sun.COM []) by (Postfix) with ESMTP id 8B8BF3A6AA4 for <>; Fri, 6 Nov 2009 12:20:46 -0800 (PST)
Received: from ([]) by (8.13.6+Sun/8.12.9) with ESMTP id nA6KL9fC007952 for <>; Fri, 6 Nov 2009 20:21:09 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 nA6KL9ZT006086 for <>; Fri, 6 Nov 2009 13:21:09 -0700 (MST)
Received: from binky.Central.Sun.COM (localhost []) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3) with ESMTP id nA6Jl9c2010273; Fri, 6 Nov 2009 13:47:09 -0600 (CST)
Received: (from nw141292@localhost) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3/Submit) id nA6Jl9jW010272; Fri, 6 Nov 2009 13:47:09 -0600 (CST)
X-Authentication-Warning: binky.Central.Sun.COM: nw141292 set sender to using -f
Date: Fri, 6 Nov 2009 13:47:09 -0600
From: Nicolas Williams <>
To: Martin Rex <>
Message-ID: <20091106194708.GC1105@Sun.COM>
References: <> <>
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: Fri, 06 Nov 2009 20:20:47 -0000

On Fri, Nov 06, 2009 at 02:05:45AM +0100, Martin Rex wrote:
> Michael Gray wrote:
> > 
> > Eric Rescorla <> wrote:
> > >
> > 
> > IMHO The proposed fix looks to be also introducing the concept of
> > Retrospective Trust into TLS.  This being necessary due to the problem
> > highlighted in the HTTP protocol in that it will process messages that
> > arrived prior to authentication etc.

What is "Retrospective Trust"?  A search for that finds unrelated items.
A search for "Retrospective Trust security" finds restrospectives on
workshops and what not.

In any case, assuming that you mean that authenticating something said
earlier is bad, I disagree, provided that one actually does that (as
opposed, as in the case of this bug, merely thinking that one is
authenticating something already said but not really).

There are, in fact, a number of places in our protocols where we
authenticate something said earlier.  In many of those cases we have no
choice but to do that!  Consider TLS, SSHv2, IKv2, etcetera.  They all
start with an unprotected negotiation and key exchange, followed by an
exchange of messages that authenticates the unprotected negotiation
using the exchanged keys.  That's a matter of bootstrapping security,
yes, but that happens often.

> To some degree I share your concern.  
> However, I do believe that the the proposed fix to provide secure
> renegotiation primarily fixes a problem in the TLS protocol, which
> does not live up to its own promises on security of a TLS session
> renegotiation.
> Admittedly, the momentum behind this effort is the prospective
> blessing this will provide on the current awful practice in this
> area, because first of all, vendors _and_ implementors are trying
> to maintain the current level of look&feel / usability -- or maybe
> we should call it "convenience".
> If we forgive the applications today, they are going to do even
> more daring things tomorrow -- and that could be things that
> we cannot fix easily.

I don't think what the apps do, particularly HTTP, is bad at all.
What's bad is the lack of binding between the disparate TLS connections
that result.

What's so bad about deferring authentication of the user until after you
know that it's needed?  Nothing, _provided that_ you also ensure that
the request that required authentication came from the same entity that
you subsequently authenticated.

I think it's fair to say that folks using TLS expected the binding,
which we now know wasn't there, to be there -- or at least that they
intuitively expected such a binding, even if the explicit thought of it
never entered their consciousness.  They use a security tool, and as far
as they knew they used it correctly.  It is not their fault, but ours,
that we did not document the lack of this binding, or that we didn't
provide it to begin with (I'm using the royal we; I'm not to blame! :)

> In real life, however, security is much more about risk management
> than absolute security.  Bruce Schneier has written at least a dozen
> good articles about that topic.  The more difficult security is to
> use, the more often people will work around it.

What's the relevance of that here?  IIUC, you think delaying
authentication was purely for convenience, and that convenience is the
mother of all security bugs -- that convenience is almost a sin.  Right?
But if so, I don't agree.  Security features have to be convenient in
order to stand a chance of being used properly or at all.  That doesn't
mean that we should accept convenience over security, but that where we
can get both, we should.

> I think we should improve on guidance, rather than be totally anal
> about who goofed which part.

In this case we need to improve the design, not the guidance.  Granted,
we could choose to not improve the design and rely only on guidance.
However, it's much better to make the problem just go away.