Re: [TLS] simplistic renego protection

David-Sarah Hopwood <david-sarah@jacaranda.org> Sat, 21 November 2009 22:10 UTC

Return-Path: <djhopwood@googlemail.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 568253A67E3 for <tls@core3.amsl.com>; Sat, 21 Nov 2009 14:10:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
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 ERYGNTLv6tDN for <tls@core3.amsl.com>; Sat, 21 Nov 2009 14:10:02 -0800 (PST)
Received: from ey-out-2122.google.com (ey-out-2122.google.com [74.125.78.25]) by core3.amsl.com (Postfix) with ESMTP id DF9F53A67F5 for <tls@ietf.org>; Sat, 21 Nov 2009 14:10:01 -0800 (PST)
Received: by ey-out-2122.google.com with SMTP id 25so1231395eya.51 for <tls@ietf.org>; Sat, 21 Nov 2009 14:09:55 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :x-enigmail-version:content-type; bh=dSjL/VcXqmJGZCghQoXAR/B41ROfC95hjns+MwKILJA=; b=x2fNJGnnCfG3kbNxiTNI4LpHo9OOm47GgWztpltLmab4LBQBKQgwqqHeH/yCHYWg/F hVTRSoLnyNwDc/UNFQMYOuwUy1KeEKaL3r68p6Dp1ZevezWcLxzhwboYm5sO8CwSsL76 D+ZuR+HExsu52Bq+oDlHIkmlWY/BD/85Ke9WM=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:x-enigmail-version:content-type; b=ugQMFZeOLAz3ef9Gi44atl52GfgybY73UmOdHBMNdQMhWkpEpzqRnanVP1stmX28cU 5d1cLVhTeANtfXIh3BhvuGHsTeqbUJ1K5h+w2T045GLIcItm3SqGOlWQwNGfRTNaJYmi w7L3Y2I35rmkWPKmIKFbK6ClmTNxeB6KXSvWA=
Received: by 10.213.1.5 with SMTP id 5mr1769600ebd.71.1258841394903; Sat, 21 Nov 2009 14:09:54 -0800 (PST)
Received: from ?192.168.0.2? (5e023669.bb.sky.com [94.2.54.105]) by mx.google.com with ESMTPS id 16sm1319872ewy.10.2009.11.21.14.09.53 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sat, 21 Nov 2009 14:09:54 -0800 (PST)
Sender: David-Sarah Hopwood <djhopwood@googlemail.com>
Message-ID: <4B08650A.9090409@jacaranda.org>
Date: Sat, 21 Nov 2009 22:09:14 +0000
From: David-Sarah Hopwood <david-sarah@jacaranda.org>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.3) Gecko/20070326 Thunderbird/2.0.0.0 Mnenhy/0.7.5.666
MIME-Version: 1.0
To: tls@ietf.org
References: <C72E1052.6851%stefan@aaa-sec.com>
In-Reply-To: <C72E1052.6851%stefan@aaa-sec.com>
X-Enigmail-Version: 0.96.0
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="------------enig22C0C688740A63788D437358"
Subject: Re: [TLS] simplistic renego protection
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: Sat, 21 Nov 2009 22:10:03 -0000

Stefan Santesson wrote:
> On 09-11-21 8:00 PM, "David-Sarah Hopwood" <david-sarah@jacaranda.org>
> wrote:
> 
>> That's an oversimplification.
>>
>> The attacker is able to add a prefix to the server's view of the session.
>> This changes the server's state from what it would have been on an
>> initial connection. How far the attacker's influence on the server's
>> state extends into that session, is dependent on the application protocol.
> 
> So we are saying the same thing.
> 
> As you say, it depends on the application. What I claim is that it is
> possible to design an application that use channel binding to keep itself
> safe from this attack. All it needs to do is to make sure that it's state is
> reset after completed channel binding.

That's not correct; it needs to know that the client's state is reset as
well (see below). But suppose for the sake of argument, that both the client
and server's state is reset when a renegotiation occurs. In that case,
channel binding is a red herring. Resetting the client and server states
prevents the attack regardless of channel binding. But then, why use
renegotiation (and unnecessarily risk interoperability problems) if you're
going to use it in a way that is completely equivalent to making a new
connection?

> The fact that it is possible to be safe despite this vulnerability is an
> argument that lenient servers should be supported in the solution.

Suppose that an unpatched client performs a renegotiation. The server
doesn't know whether this is an intended renegotiation or an attack; so,
it must reset its state, as though the client had made a new connection.
But with most application protocols, that won't work, because the client
hasn't reset its state.

It might work in some special cases, where the application protocol is
stateless between requests (like HTTP) and the renegotiation occurred
at a request boundary. But then, there is absolutely no advantage to
using renegotiation; it's unnecessary complexity.

One might argue: OK, renegotiation is unnecessary, but what if we want to
retain interoperability with clients that do it anyway (between stateless
requests, since that's the only case that would work)? However, in practice
clients don't renegotiate just for the fun of it; we need to consider how
renegotiation is actually used. I have not yet seen any plausible use case
for continuing to support renegotiation with unpatched clients, where it
wouldn't be simpler and more secure to do something else (given that you're
suggesting that we modify how the server uses the application protocol in
any case). For instance, when using renegotiation to prompt the client to
present a client cert, it's easier to have it make such requests on a
different port.

-- 
David-Sarah Hopwood  ⚥  http://davidsarah.livejournal.com