Re: [TLS] Verify data in the RI extension?

David-Sarah Hopwood <david-sarah@jacaranda.org> Sun, 29 November 2009 00:33 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 985F53A67E7 for <tls@core3.amsl.com>; Sat, 28 Nov 2009 16:33:44 -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 aE5lTERn-+sP for <tls@core3.amsl.com>; Sat, 28 Nov 2009 16:33:43 -0800 (PST)
Received: from mail-ew0-f215.google.com (mail-ew0-f215.google.com [209.85.219.215]) by core3.amsl.com (Postfix) with ESMTP id 3B4523A67C0 for <tls@ietf.org>; Sat, 28 Nov 2009 16:33:43 -0800 (PST)
Received: by ewy7 with SMTP id 7so3101009ewy.28 for <tls@ietf.org>; Sat, 28 Nov 2009 16:33:32 -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=7knYYOA3mdGbHybvMkrKZQTb1K397Xeq8eRoKqFkhSY=; b=IJKRDEPSu9+u3J0ne+XdgtXBAyOyyAj9y82rQkZeS1dfWb43XQk35sPtO6pKWRvnH9 i8cWeuKC6Y3ZZ7TcCVwWuRHsH2iuRCI2OBOJ437NN7ZYrrnOkwch0DzgExih/u03HzY2 SfOvNoTkvzFlsNOP1iN7CxfuJJ/3tXy8z7mCQ=
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=JIO1ce1Umh8ymdj4aZ4QMbT+ZXG9rnE6eUzZfVBrdNswWgyrqcbGV6DqCbwAITHFCA gLIcrjnmCCb/ZzqLAgH945i99+JZ7r7lY3GzvFrZJJaJ1wK7Y+YqmsNaKvz+DV8xkn+O mdmU0sGWxwr3nP4culC3zUkkX9ejNu7BlGfcw=
Received: by 10.216.88.139 with SMTP id a11mr843621wef.50.1259454812467; Sat, 28 Nov 2009 16:33:32 -0800 (PST)
Received: from ?192.168.0.2? (5adcc5d2.bb.sky.com [90.220.197.210]) by mx.google.com with ESMTPS id n12sm7102556gve.29.2009.11.28.16.33.31 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sat, 28 Nov 2009 16:33:31 -0800 (PST)
Sender: David-Sarah Hopwood <djhopwood@googlemail.com>
Message-ID: <4B11C156.7060204@jacaranda.org>
Date: Sun, 29 Nov 2009 00:33:26 +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: <9923D81D-BABA-4897-A0E3-6938FFB70045@checkpoint.com> <C7355261.6BB2%stefan@aaa-sec.com> <20091127151113.BDEF16C3795@kilo.networkresonance.com> <4B10E225.4010501@jacaranda.org> <4B117AF2.20703@pobox.com>
In-Reply-To: <4B117AF2.20703@pobox.com>
X-Enigmail-Version: 0.96.0
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="------------enigB512E07993C521E8F3DE6897"
Subject: Re: [TLS] Verify data in the RI extension?
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: Sun, 29 Nov 2009 00:33:44 -0000

Michael D'Errico wrote:
> David-Sarah Hopwood wrote:
>> Eric Rescorla wrote:
>>> I also share [David-Sarah] Hopwood's concern about ambiguity in the
>>> handshake hashes stream created by having data which is not properly
>>> formatted injected into the hash
>>> (http://www.ietf.org/mail-archive/web/tls/current/msg04857.html),
>>> so I don't think the particular approach in Martin's draft is
>>> really satisfactory.
>>
>> That potential weakness can be avoided by encoding the data to be added
>> into the hash as follows:
>>
>>    struct {
>>        enum { fake_finished(20) } fake_handshake_type;
>>        enum { zero(0), (2^24-1) } fake_length;
>>        opaque previous_client_verify_data<12..255>;
>>        opaque previous_server_verify_data<12..255>;
>>    } PreviousVerifyData;
> 
> I like the direction this is going, but think that using a length of
> zero doesn't quite patch the potential weakness.

It does: as I said, for an implementation to be vulnerable it would
have to violate two existing 'MUST's -- failing to abort the handshake
on an out-of-order handshake message, and failing to check the correctness
of the verify_data in a Finished message. If it gets the latter wrong,
then it's clearly insecure anyway. What is sent after the fake Finished
message doesn't matter for avoiding this weakness.

(Since the previous_{client,server}_verify_data are variable-length,
I chose to encode their length explicitly, but that's a separate issue.)

> So instead of zero, why not use 0xFFFFFF?

That would work as well, but only for the same reason, i.e. that
0xFFFFFF is not a valid length for the content of a correct Finished
message.

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