Re: [TLS] Quest for Unified Solution to TLS Renegotiation

Yoav Nir <ynir@checkpoint.com> Thu, 26 November 2009 22:39 UTC

Return-Path: <ynir@checkpoint.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 C37E63A6B19 for <tls@core3.amsl.com>; Thu, 26 Nov 2009 14:39:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.163
X-Spam-Level:
X-Spam-Status: No, score=-2.163 tagged_above=-999 required=5 tests=[AWL=-0.315, BAYES_00=-2.599, SARE_OBFU_ALL=0.751]
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 K8+18UGwL3Mn for <tls@core3.amsl.com>; Thu, 26 Nov 2009 14:39:04 -0800 (PST)
Received: from dlpdemo.checkpoint.com (dlpdemo.checkpoint.com [194.29.32.54]) by core3.amsl.com (Postfix) with ESMTP id A17EE3A6B13 for <tls@ietf.org>; Thu, 26 Nov 2009 14:39:03 -0800 (PST)
X-CheckPoint: {4B0EFFB7-2-14201DC2-FFFF}
Received: by dlpdemo.checkpoint.com (Postfix, from userid 105) id 9A57D29C008; Fri, 27 Nov 2009 00:38:56 +0200 (IST)
Received: from michael.checkpoint.com (michael.checkpoint.com [194.29.32.68]) by dlpdemo.checkpoint.com (Postfix) with ESMTP id 70F5A29C002; Fri, 27 Nov 2009 00:38:56 +0200 (IST)
X-CheckPoint: {4B0EFFB6-0-14201DC2-FFFF}
Received: from il-ex01.ad.checkpoint.com (localhost [127.0.0.1]) by michael.checkpoint.com (8.12.10+Sun/8.12.10) with ESMTP id nAQMctGo010673; Fri, 27 Nov 2009 00:38:56 +0200 (IST)
Received: from il-ex01.ad.checkpoint.com ([126.0.0.2]) by il-ex01.ad.checkpoint.com ([126.0.0.2]) with mapi; Fri, 27 Nov 2009 00:39:01 +0200
From: Yoav Nir <ynir@checkpoint.com>
To: "Blumenthal, Uri - 0662 - MITLL" <uri@ll.mit.edu>
Date: Fri, 27 Nov 2009 00:38:51 +0200
Thread-Topic: [TLS] Quest for Unified Solution to TLS Renegotiation
Thread-Index: Acpu6T/MK5UJCyFuQrCECzXomLVfRQ==
Message-ID: <32C4392B-749C-47D7-B625-C769A18DE9DE@checkpoint.com>
References: <C7342F07.6C8C%uri@ll.mit.edu>
In-Reply-To: <C7342F07.6C8C%uri@ll.mit.edu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Quest for Unified Solution to TLS Renegotiation
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: Thu, 26 Nov 2009 22:39:04 -0000

On Nov 26, 2009, at 8:11 PM, Blumenthal, Uri - 0662 - MITLL wrote:

> I forgot about that. Good point. I agree.
> 
> As for SSLv3 - SMNP (Simply Not My Problem :). Would be nice to address it
> as well, but I'd rather not bend over backwards to also fix SSLv3.
> 
> On 11/26/09  12:23 , "David-Sarah Hopwood" <david-sarah@jacaranda.org>
> wrote:
>> Blumenthal, Uri - 0662 - MITLL wrote:
>>> Yes, previous_verify_data MUST be a part of the input to the PRF. What Yoav
>>> Nir said (XOR-ing it with the master_secret), should work (out of hand -
>>> anybody sees a problem with it?).
>> 
>> The previous_verify_data is not necessarily secret, so this requires the
>> PRF to be secure against related-key attack. The particular PRFs used in
>> SSLv3 and TLS 1.0 to 1.2 should be secure in that sense, but (if we
>> decide to use this approach) I still prefer what I suggested before:
>> 
>>    verify_data =
>>      PRF(master_secret, finished_label, Hash(handshake_messages)
>>                                         + previous_verify_data)
>>        [0..verify_data_length-1];
>> 
>> which uses the PRF in a more conventional way.
> -- 
> Regards,
> Uri         uri@ll.mit.edu

I don't see why my suggestion doesn't hold for SSLv3 as well. Here's from the spec:

enum { client(0x434C4E54), server(0x53525652) } Sender;

struct {
        opaque md5_hash[16];
        opaque sha_hash[20];
} Finished;

md5_hash
        MD5(master_secret + pad2 + MD5(handshake_messages +
                Sender + master_secret + pad1));


sha_hash
        SHA(master_secret + pad2 + SHA(handshake_messages +
                Sender + master_secret + pad1));


So this could be changed in renegotiation to the following, or the Sender field could be replaced with the contents of the previous Finished message (it's like the finished label)


enum { client(0x434C4E54), server(0x53525652) } Sender;

struct {
        opaque md5_hash[16];
        opaque sha_hash[20];
} Finished;

md5_hash
        MD5(master_secret^previous_Finished_message + pad2 + MD5(handshake_messages +
                Sender + master_secret + pad1));


sha_hash
        SHA(master_secret^previous_Finished_message + pad2 + SHA(handshake_messages +
                Sender + master_secret + pad1));