[TLS] Another critical problem with RI

Michael D'Errico <mike-list@pobox.com> Sat, 21 November 2009 00:05 UTC

Return-Path: <mike-list@pobox.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 283323A67BE for <tls@core3.amsl.com>; Fri, 20 Nov 2009 16:05:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.487
X-Spam-Level:
X-Spam-Status: No, score=-2.487 tagged_above=-999 required=5 tests=[AWL=0.112, 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 t7dvSKvG9YdN for <tls@core3.amsl.com>; Fri, 20 Nov 2009 16:05:30 -0800 (PST)
Received: from sasl.smtp.pobox.com (a-pb-sasl-quonix.pobox.com [208.72.237.25]) by core3.amsl.com (Postfix) with ESMTP id 3C7F93A67B2 for <tls@ietf.org>; Fri, 20 Nov 2009 16:05:30 -0800 (PST)
Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id 22D03819EA for <tls@ietf.org>; Fri, 20 Nov 2009 19:05:27 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=message-id :date:from:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; s=sasl; bh=0gwXHSAsC2v2 +RNdb03N92Vk4Ok=; b=SBOH3+YE52KhztZxHTYfYQSMYdwOQR5hmePzAOuxtuWg Ylt18tlNTZyu4gI6+GkQ1utIxY8DPMjLPb6VmYIySnI4jQnYuE1XYNBZMVWRlknW ab3GOe2mpAA0LPxaskDJumBDWm4jNDaC+RBpyoxSZvV+9hF8+KLFpLq5uAgm8Is=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=message-id:date :from:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; q=dns; s=sasl; b=FMlejA ktc6RZG66xuaCVmflDUks+KWe8QAmqwRKxD2vOkq4O0ueNSN1XwpXalHzb7llFzI yCQdrTzDvADi1iTrhe6LIJOiAz8qHUDjTKUhNWz8G0bJRTzvLzeVC/27o8oojrdJ 0jmHN2ZWKjXHNrDH0BjbA262idCaDz0kwyhGM=
Received: from a-pb-sasl-quonix. (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id 1EFD3819E9 for <tls@ietf.org>; Fri, 20 Nov 2009 19:05:27 -0500 (EST)
Received: from administrators-macbook-pro.local (unknown [24.234.114.35]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTPSA id C9800819E8 for <tls@ietf.org>; Fri, 20 Nov 2009 19:05:26 -0500 (EST)
Message-ID: <4B072F1C.8050505@pobox.com>
Date: Fri, 20 Nov 2009 16:06:52 -0800
From: Michael D'Errico <mike-list@pobox.com>
User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812)
MIME-Version: 1.0
To: tls@ietf.org
References: <AC1CFD94F59A264488DC2BEC3E890DE5092192D6@xmb-sjc-225.amer.cisco.com>
In-Reply-To: <AC1CFD94F59A264488DC2BEC3E890DE5092192D6@xmb-sjc-225.amer.cisco.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Pobox-Relay-ID: 92B7AC12-D631-11DE-B0A1-9F3FEE7EF46B-38729857!a-pb-sasl-quonix.pobox.com
Subject: [TLS] Another critical problem with RI
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 00:05:31 -0000

Here is yet another reason to reject Renegotiation_Info:

The security of RI relies on implementations verifying that the data
carried in the extension is correct.  It is possible for implementors
to get this wrong.  A client or server could correctly get all of the
mechanics of sending and receiving the extension working but fail to
actually compare what they received to the old verify_data.  Looking
at the bits-on-the-wire it will not be possible to tell that a client
or server is broken in this way.  These broken implementations will
be able to perform initial connections and renegotiations.  Such a
broken client paired with a broken server would still be vulnerable
to a MitM attack.

Changing the Finished message calculation, on the other hand, is fool-
proof.  Either you add the old verify_data to the handshake messages
or you don't.  If you don't, then handshakes will fail regularly[*]
and the problem will be noticed and fixed.

Note that adding the verify_data to the ClientHello.random and
ServerHello.random suffers from this same problem.

Mike

[*] To make this even more fool-proof, I suggest making sure that the
data added to the handshake message stream is never empty (i.e. as it
would be on an initial handshake in Martin's proposal); this can be
easily done by including length byte(s) or even a single fixed byte.