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

Michael D'Errico <mike-list@pobox.com> Wed, 25 November 2009 23:18 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 4E68A3A68FA for <tls@core3.amsl.com>; Wed, 25 Nov 2009 15:18:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.506
X-Spam-Level:
X-Spam-Status: No, score=-2.506 tagged_above=-999 required=5 tests=[AWL=0.093, 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 eWdQNrvzwxLj for <tls@core3.amsl.com>; Wed, 25 Nov 2009 15:18:39 -0800 (PST)
Received: from sasl.smtp.pobox.com (a-pb-sasl-sd.pobox.com [64.74.157.62]) by core3.amsl.com (Postfix) with ESMTP id 1893C3A6873 for <tls@ietf.org>; Wed, 25 Nov 2009 15:18:39 -0800 (PST)
Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTP id C2E00A128E for <tls@ietf.org>; Wed, 25 Nov 2009 18:18:33 -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=5XTiD0Jj5NTK NDxA9izYn5Vasuc=; b=Dqpn2Ko8hG0SG4U1H99k7B6vBvPKVdjXama/lGYrZJC6 ntMcmP2P/6kR2Qrluj7qJDXOVniibZLR0DnRjFwFXl9U8YTVOM40GEMG8s1+7snV u7x3nKf9yHliZJqEPmMZG/Er1picBSABJudVTgpdHLD74YXEiTlldJrWk648B6s=
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=CUMGaC ekLxNVKFQiQ1p0NYKKDom4Mx1KMUieCGobwxG2eugJ8cEmLV4qflqWCM0hlp3wpr BehgtRjjqTS8LUh6jzyc6nFyi77cFHPhib0sSO3SN6a6YAv1HWcQguA3fDrh1OQy ZotK29UREzsfQT8+Tsr98XnUEk4IriT76gX3Q=
Received: from a-pb-sasl-sd.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTP id BF8C7A128D for <tls@ietf.org>; Wed, 25 Nov 2009 18:18:33 -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-sd.pobox.com (Postfix) with ESMTPSA id 35BD6A128C for <tls@ietf.org>; Wed, 25 Nov 2009 18:18:32 -0500 (EST)
Message-ID: <4B0DBB97.5050500@pobox.com>
Date: Wed, 25 Nov 2009 15:19:51 -0800
From: Michael D'Errico <mike-list@pobox.com>
User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812)
MIME-Version: 1.0
To: TLS Working Group <tls@ietf.org>
References: <4B0D9B94.9080205@pobox.com> <20091125225408.42FB96C3288@kilo.networkresonance.com>
In-Reply-To: <20091125225408.42FB96C3288@kilo.networkresonance.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Pobox-Relay-ID: D9E3D6E8-DA18-11DE-86CF-EF34BBB5EC2E-38729857!a-pb-sasl-sd.pobox.com
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: Wed, 25 Nov 2009 23:18:40 -0000

Eric Rescorla wrote:
> Michael D'Errico wrote:
>> I think that it would be good to find a unified solution that
>> everybody is happy with, and believe that this may be it:
> 
> This was actually suggested by Bodo Moeller last week.

Yes, I just reread his message of Nov. 15 which states:

      One way to avoid most of the overhead from the current
      ID would be to keep the extension *always* empty.  If
      the client and server both send it during any given
      handshake, then the Finished messages concluding that
      handshake will be computed mostly in the standard way,
      but if it's a renegotiation handshake, including the
      previous handshake's Finished messages in the handshake_
      messages that will be hashed.  [Open question: Where
      should they go?  Maybe the easiest is to always hash
      them at the end; client first, server second.]

>>    1) Client-to-Server signalling can be done in either of
>>       two ways:
>>
>>       A) an empty Secure_Renegotiation (SR) extension, or
>>       B) a "magic" cipher suite
>>
>>    2) Server-to-Client signal is always an empty SR extension
> 
> I just sent a message suggesting 1 and almost 2.

Great, we are getting closer.

>>    3) Incorporate previous verify_data into Finished calc.
> 
> I'm not happy with this, actually.
> 
> This requires breaking the current clean definition of handshake
> hashes as the hash of all the handshake messages and simply adding
> some synthetic message in the middle. I don't think this is anywhere
> near as clean, as evidenced by the ongoing debate about whether to put
> it the synthetic data in the front, the back, incorporate it into the
> PRF, or chain the pre-existing handshake messages. [FWIW, I think I
> prefer the last of these implicit versions.]
> 
> By contrast, RI allows that part of the system (which is well
> understood) to remain the same and in fact when RI is offered on the
> first handshake, there is no change to the TLS core at all. It's all
> just hashed into Finished as part of the ordinary TLS procedures,
> and everything is in fact compliant TLS, which I think is desirable.
> 
> I appreciate that this is to some extent a matter of tradeoffs,
> but I don't find the arguments in favor of the implicit version
> very compelling when weighed against the above.

I think that moving forward to TLS 1.3 and beyond, we really want
the old verify_data incorporated directly into Finished, don't we?
Using an extension for this only makes sense because we need to
patch old versions.

The complaint I have about sending the verify_data over the wire is
that that alone does not plug the hole.  You need to take the extra
step to check that it's correct, and a maintenance programmer not
intimately familiar with TLS might miss this fact.

Changing Finished to the way we would like it in TLS 1.3 and beyond
seems like a better way to proceed.  Chaining the previous handshake
messages with the renegotiation does seem like a cleaner approach
than inserting the old verify_data into the handshake stream, so I'd
support that if that's the consensus.

Mike