Re: [TLS] SCSVs and SSLv3 fallback

Yoav Nir <ynir@checkpoint.com> Wed, 24 April 2013 08:47 UTC

Return-Path: <ynir@checkpoint.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2B95A21F8ECE for <tls@ietfa.amsl.com>; Wed, 24 Apr 2013 01:47:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.599
X-Spam-Level:
X-Spam-Status: No, score=-10.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ywv5lfUxKFqI for <tls@ietfa.amsl.com>; Wed, 24 Apr 2013 01:47:28 -0700 (PDT)
Received: from smtp.checkpoint.com (smtp.checkpoint.com [194.29.34.68]) by ietfa.amsl.com (Postfix) with ESMTP id 1FFAB21F8EC1 for <tls@ietf.org>; Wed, 24 Apr 2013 01:47:27 -0700 (PDT)
Received: from DAG-EX10.ad.checkpoint.com ([194.29.34.150]) by smtp.checkpoint.com (8.13.8/8.13.8) with ESMTP id r3O8lPRU014981; Wed, 24 Apr 2013 11:47:25 +0300
X-CheckPoint: {51779B3D-C-1B221DC2-1FFFF}
Received: from IL-EX10.ad.checkpoint.com ([169.254.2.54]) by DAG-EX10.ad.checkpoint.com ([169.254.3.48]) with mapi id 14.02.0342.003; Wed, 24 Apr 2013 11:47:25 +0300
From: Yoav Nir <ynir@checkpoint.com>
To: "<mrex@sap.com>" <mrex@sap.com>
Thread-Topic: [TLS] SCSVs and SSLv3 fallback
Thread-Index: AQHOMXe9vLGGrL29KEC+QldzTnP8YJjGdnAAgAFg3ACAAB0uAIAAC1oAgAACGwCAAAfhAIAACK2AgABaT4CAAH5xAIAAT6EAgAAjG4CAAxxZgIAAFXqAgAA6sgCAF5CjgIAABZKAgAAOKICAABqZgIAAcf+A
Date: Wed, 24 Apr 2013 08:47:24 +0000
Message-ID: <B0A9FE1E-30D8-4A8A-ADE2-7340C4F67088@checkpoint.com>
References: <20130424015923.B39761A6CF@ld9781.wdf.sap.corp>
In-Reply-To: <20130424015923.B39761A6CF@ld9781.wdf.sap.corp>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [91.90.139.159]
x-kse-antivirus-interceptor-info: scan successful
x-kse-antivirus-info: Clean
x-cpdlp: 1121327bc0bbbccdcb6b9f93741f6b009da6303823
Content-Type: text/plain; charset="us-ascii"
Content-ID: <93E7BA454A31E041AF5B4095402A9AEE@ad.checkpoint.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] SCSVs and SSLv3 fallback
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.12
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/options/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, 24 Apr 2013 08:47:29 -0000

On Apr 24, 2013, at 4:59 AM, Martin Rex <mrex@sap.com> wrote:

> Yngve N. Pettersen wrote:
>> 
>> Martin Rex <mrex@sap.com> wrote:
>>> 
>>> For any kind of alternative TLS version negotiation, the server ought to
>>> entirely ignore the existing ClientHello.client_version, and use the
>>> new version signaling alone for determining the highest common protocol
>>> version.
>> 
>> Martin, how do you propose to get *rid* of the broken servers, if clients  
>> are not allowed to demonstrate their brokenness?
>> 
>> My point is that the old broken server will "never" go away as long as  
>> clients allow them to function, and new servers will be released in broken  
>> condition because clients are not telling them that they are broken during  
> 
> ... writes the one who has been shipping a multi-stage reconnect fallback
> for years.

What else can Opera do? Ship a browser that works on only 90% of the web? I think they're doing as much as they can to combat new kinds of brokenness. If Microsoft had had this attitude when they had a 98% of the browser market, we would be seeing a lot less brokenness today.

> The Engineering part of IETF is about creating and maintaining interop,
> the IETF is no manufacturer cartel for enforcing planned obsolescense!

The IETF is not a manufacturer's cartel. But if people want to change the way TLS clients behave (for whatever reason), this is the place to discuss it, and maybe document it.

> A non-marginal fraction of the problematic servers are not really broken,
> primarily they're old and based on an old version of the specification.

What old version of the specification had renegotiation info, but didn't have proper version negotiation?  Going strictly by the RFCs a lot more handshakes would be dropped.

> What concerns me *MUCH* more is the reconnect fallback hacks in several
> recent TLS clients (primarily Web Browsers), because that is what is
> causing most of the interop problems (=failed TLS handshakes).
> 
> That negotiating TLSv1.2 by sending ClientHello.client_version = {03,03}
> is an EXTREMELY dumb idea given the installed base should have been
> (and still is) painfully obvious for everyone who cared to check, so
> I really fail to understand why such ostrich behaviour was published
> as rfc5246 in the first place.
> 
> Actually the problem already existed in 2006, when rfc4346 was published.
> Surprise, surprise, ignoring the problem didn't make it go away.
> 
> When revising a protocol, it is a bad idea to perform it in a fashion
> that only works in a fantasy fairy-tale, but instead take into account
> what is going to be interoperable with the real world.
> 
> What is really needed, is a negotiation of TLSv1.2 protocol&features
> that does not need ClientHello.client_version = {03,03}, but instead
> can use ClientHello.client_version = {03,01}.  This would get rid
> of most of the TLS handshake failures and obviate the TLS reconnect
> fallback hacks in clients.  Now _that_ would be really an improvement!

Are you proposing a TLS 1.2 SCSV? If Mozilla hadn't made the decisions to include Camelia in the list of ciphersuites, we would probably have quite a few servers out there that didn't tolerate unknown ciphersuites. As it is, ClientHello.client_version = {03,03} works quite well for the vast, vast majority of web sites. The ostrich wins, and they lived happily ever after.

> But while doing that, we also SHOULD REALLY fix the semantics that are
> currently specified in rfc5246 for the SignatureAlgorithm TLS extension:
> strip all the crap between the contents of that extension and
> signature algorithms in the certificates.
> 
> 
> -Martin