Re: [TLS] Last Call: draft-ietf-tls-renegotiation (Transport Layer Security (TLS) Renegotiation Indication Extension) to Proposed Standard

Chris Newman <Chris.Newman@Sun.COM> Wed, 02 December 2009 07:05 UTC

Return-Path: <Chris.Newman@Sun.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 810843A69EE; Tue, 1 Dec 2009 23:05:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.896
X-Spam-Level:
X-Spam-Status: No, score=-5.896 tagged_above=-999 required=5 tests=[AWL=0.150, BAYES_00=-2.599, HELO_MISMATCH_COM=0.553, RCVD_IN_DNSWL_MED=-4]
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 br9VkAx+c8qq; Tue, 1 Dec 2009 23:05:30 -0800 (PST)
Received: from sca-es-mail-1.sun.com (sca-es-mail-1.Sun.COM [192.18.43.132]) by core3.amsl.com (Postfix) with ESMTP id 4F1283A6844; Tue, 1 Dec 2009 23:05:30 -0800 (PST)
Received: from fe-sfbay-10.sun.com ([192.18.43.129]) by sca-es-mail-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id nB275Kgp028547; Tue, 1 Dec 2009 23:05:20 -0800 (PST)
MIME-version: 1.0
Content-transfer-encoding: 7bit
Content-disposition: inline
Content-type: text/plain; CHARSET="US-ASCII"; format="flowed"
Received: from conversion-daemon.fe-sfbay-10.sun.com by fe-sfbay-10.sun.com (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul 2 2009)) id <0KU000900JGP8W00@fe-sfbay-10.sun.com>; Tue, 01 Dec 2009 23:05:20 -0800 (PST)
Received: from [192.168.15.4] ([unknown] [71.92.75.71]) by fe-sfbay-10.sun.com (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul 2 2009)) with ESMTPSA id <0KU000FGJJOUFB80@fe-sfbay-10.sun.com>; Tue, 01 Dec 2009 23:05:20 -0800 (PST)
Date: Tue, 01 Dec 2009 23:04:43 -0800
From: Chris Newman <Chris.Newman@Sun.COM>
In-reply-to: <20091130153734.D44C63A6AA9@core3.amsl.com>
Sender: Chris.Newman@Sun.COM
To: ietf@ietf.org
Message-id: <CAFD78256E5E61BEEA08CA00@446E7922C82D299DB29D899F>
X-Mailer: Mulberry/4.0.8 (Mac OS X)
References: <20091130153734.D44C63A6AA9@core3.amsl.com>
Cc: tls@ietf.org
Subject: Re: [TLS] Last Call: draft-ietf-tls-renegotiation (Transport Layer Security (TLS) Renegotiation Indication Extension) to Proposed Standard
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, 02 Dec 2009 07:05:31 -0000

I strongly support publishing this draft either in its present form or with 
any modification that does not impact the protocol's security analysis.

This the most time-sensitive and security-critical IETF draft with respect 
to impact on the Internet community that I have seen in 17 years of IETF 
participation.  As such, I strongly support the decision to start IETF last 
call early as permitted by RFC 2418 section 7.4.  I also encourage the IESG 
to move this document to the front of the queue for all support 
organizations (Secretariat, IANA, RFC editor) when processing occurs and to 
avoid holding a blocking DISCUSS after the telechat unless that blocking 
issue is more serious than the ongoing presence of this TLS security 
vulnerability on the Internet.


===
Three changes to draft-ietf-tls-renegotiation-01 I consider important (but 
not blocking):

* The header should explicitly state it Updates RFC 5246, 4346, 4366, 2246. 
This
  gets forward pointers in the RFC index to increase chances implementers 
of those
  specs will also find this one.  This is also necessary for RFC 5246 as 
this creates
  an exception to a MUST NOT.

* There is an error-of-fact in the introduction; this is incorrect:
"   If certificate-based client authentication is used, the server will
   believe that the initial traffic corresponds to the authenticated
   client identity."
This statement is true only for application protocols with a badly designed 
state transition from unauthenticated to authenticated state.  That is 
primarily limited to HTTPS and protocols based on HTTPS.  It is not true 
for most other IETF application protocols including SMTP, POP, IMAP, LDAP, 
NNTP, BEEP and XMPP (however, I suspect all of these are impacted by the 
TLS vulnerability in other ways).  Changing "is used" to "is used with 
HTTPS" would correct the error.

* Nomenclature: when discussing TLS_RENEGO_PROTECTION_REQUEST, the term 
"cipher suite value" needs to be used instead of "cipher suite", and the 
text needs to explicitly state that TLS_RENEGO_PROTECTION_REQUEST is not a 
cipher suite (it is not sufficient to say it can't be negotiated).  This is 
important for evaluating implementations against government standards that 
dictate which cipher suites an implementation may advertise.

Evaluation relative to draft-mrex-tls-secure-renegotiation-03:

Kudos to Martin Rex for producing such a good alternate proposal.  The 
introductory text up to and including section 4.1 is very good and would 
improve draft-ietf-tls-renegotiation.  While I would support a consensus to 
publish the mrex document as the solution, I presently prefer 
draft-ietf-tls-renegotiation-01 for four reasons:
1. Running code: multiple implementations and interop testing was performed 
on an
   earlier version of draft-ietf-tls-renegotiation.
2. Impact to core protocol handshake: The mrex proposal alters the 
handshake to include
   data that is not exchanged in-protocol.  If this impacts PKCS#11 
hardware tokens or
   other SSL accelerators (an issue mentioned by Dr Stephen Henson on the 
TLS list on
   Nov 26, 2009 19:24:55 +0000) that could severely impact deployment.  I 
do not know
   if that concern applies to the mrex proposal, but I know it does not 
apply to the
   draft-ietf-tls-renegotiation.  The point being the mrex proposal 
requires more analysis
   to verify impact.  As we're in a hurry, I prefer to easier to analyze 
proposal.
3. Extensibility.  In my experience one of the protocol design features 
most important to
   get right is extensibility.  SSL/TLS didn't really get that right until 
v1.2 (which is
   causing problems now).  As draft-ietf-tls-renegotiation uses the TLS 
extension
   facility more extensively, it will help future-proof more 
implementations.
4. The mrex proposal requires use of TLS_RENEGO_PROTECTION_REQUEST in some 
circumstances.
   That approach is untested in the field and I have concerns it will 
negatively impact
   middleboxes.  As draft-ietf-tls-renegotiation allows use of either the 
cipher suite
   value or the extension for C->S signaling, that mitigates the concern -- 
the field
   can choose the mechanism that works best.

My take on some controversial issues:

* There may not be a sufficient number of "extension intolerant" SSL/TLS 
servers in operation to justify the added complexity of 
TLS_RENEGO_PROTECTION_REQUEST.  However, I do not object to inclusion as 
it's possibly helpful for some alleged extension intolerant servers 
compliant with early drafts of SSLv3 and it helped move closer to WG 
consensus.

* I believe Bodo Moeller's proposal to exclude client's verify_data from 
ServerHello improves the protocol, but I do not find it a blocking or 
compelling issue.

* I find the present text in security considerations on identity change 
mid-stream acceptable from my perspective as an application developer. 
However, I do not care if that text is included or excluded from the 
approved version as it is ancillary to the important core purpose.

* Changing the handshake hash to include the previous verify_data after 
renegotiation: In the abstract, I find the "fail safe" nature of including 
verify_data in the hash a better design than having to explicitly check 
validity.  However, I find that less compelling than issues 1 & 2 above. 
Particularly given that TLS already requires skilled implementers to get 
tricky details correct in a fashion that can not be easily verified (e.g. 
PRNG).

* Non-extension signaling for ServerHello: I am strongly opposed to using 
any mechanism other than TLS extensions for signaling in the ServerHello. 
I found all such proposals (including overloading the version field) far 
too risky.  As the earlier mrex draft proposing such mechanisms was 
replaced by a revision which now uses the extension mechanism, I believe 
the matter is settled.

		- Chris