Re: [TLS] Last Call: <draft-ietf-tls-downgrade-scsv-03.txt> (TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks) to Proposed Standard

Michael Clark <michael@metaparadigm.com> Thu, 22 January 2015 10:12 UTC

Return-Path: <michael@metaparadigm.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9A3391A887B for <tls@ietfa.amsl.com>; Thu, 22 Jan 2015 02:12:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.668
X-Spam-Level:
X-Spam-Status: No, score=-1.668 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, IP_NOT_FRIENDLY=0.334, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XsKHYGcNTYjv for <tls@ietfa.amsl.com>; Thu, 22 Jan 2015 02:12:05 -0800 (PST)
Received: from tlsx.org (tlsx.org [67.207.128.90]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7A5401A1B62 for <tls@ietf.org>; Thu, 22 Jan 2015 02:12:05 -0800 (PST)
Received: from monty.local (unknown.maxonline.com.sg [58.182.168.20] (may be forged)) (authenticated bits=0) by tlsx.org (8.14.4/8.14.4/Debian-4) with ESMTP id t0MAXtqE012789 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Thu, 22 Jan 2015 10:33:59 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=metaparadigm.com; s=klaatu; t=1421922840; bh=nA2Jd5HXvP3X59z1Rzt2ILQaAzRWkAmy6s81Fs9dAXQ=; h=Date:From:To:CC:Subject:References:In-Reply-To:From; b=crVaaAhTr5Qwxnsdk8Qd5tXC6wWwxEX1V70s0xNHOxsHjhM6ZfDtQEkdxPjGWV6HY Na9FIDXo2cn4V5tW9o+BaX59FaMP6LdnCNJlA2rdpwvyXU4Q7lo7lUs3Bx15HjmhUC f1MM8GIHgX5WbdkyeHvaKbr94q7jjnnvtd2JNnY0=
Message-ID: <54C0CCE9.40604@metaparadigm.com>
Date: Thu, 22 Jan 2015 18:11:53 +0800
From: Michael Clark <michael@metaparadigm.com>
Organization: Metaparadigm
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.4.0
MIME-Version: 1.0
To: Nikos Mavrogiannopoulos <nmav@redhat.com>
References: <40128f312378442fbd26459bf5d7593b@usma1ex-dag1mb2.msg.corp.akamai.com> <, > <20150119192701.190C71B0FF@ld9781.wdf.sap.corp> <, > <CAFewVt6LRafnJN_L=xVeiAxNcpSB+8vPYzquPfjXsduudyj+QQ@mail.gmail.com> <BAY180-W688DE2930CB7F231E60989FF480@phx.gbl> <, <04690E05-4905-4941-A60D-7BC5CDC93431@gmail.com> <> > <BAY180-W1849690A1D8C42F1063DDBFF480@phx.gbl> <39B8BC24-D539-456F-970B-B11665B0E892@gmail.com> <54C0B783.2060604@metaparadigm.com> <1421919642.2723.63.camel@redhat.com>
In-Reply-To: <1421919642.2723.63.camel@redhat.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: clamav-milter 0.98.4 at klaatu.tlsx.org
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/tls/VNk5gtMIXhUAQlPhsHEvY2We3YA>
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Last Call: <draft-ietf-tls-downgrade-scsv-03.txt> (TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks) to Proposed Standard
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
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: Thu, 22 Jan 2015 10:12:06 -0000

On 22/1/15 5:40 pm, Nikos Mavrogiannopoulos wrote:
> On Thu, 2015-01-22 at 16:40 +0800, Michael Clark wrote:
> 
>> = TLSv1.3 implementations could remove SSLv3.0 support such that
>>   the minimum TLS record layer version for TLS 1.3 is 1.0 { 3, 1 }
>>   instead of { 3, 0 } which is mentioned in the Appendix as a
>>   "typical value" and the maximum "message layer" version a server
>>   accepts is specified as { 3, XX }. A TLSv1.2 client could send
>>   { 3, 1 } { 3, 3 } and a TLSv1.3 client would send { 3, 1 } { 3, 4 }
>>   in its ClientHello to support TLSv1.0 through TLSv1.2/3. This accords
>>   with protocol major/minor best practices for binary changes and
>>   backwards compatibility. i.e. no binary incompatible changes in minor
>>   versions. Just raise non-compliance with Appendix E.1 as a bug.
>> [...]
>> = ClientHello Record Layer TLS version intolerance; strict lower bound
>>   for the *record layer* TLS "minor" protocol version) is protective.
>>   Use { 3, 1 } to deprecate SSLv3.0, which is now past its use by date
>>   (from an evolutionary perspective).
> 
> These recommendations are plainly wrong, and worse, they harm
> interoperability for no security benefit. Unfortunately for some reason
> they somehow got implemented.
> 
> 1. The version in the record layer, _DOES NOT_ indicate the minimum
> version the client supports. It does indicate the format of the record
> packet. Having SSL 3.0 is perfectly valid, since the packet format
> remained the same.

The spec has wording that alludes to this. In my read.

> 2. Using it as an indicator of the client's minimum version is wrong as
> this field is not protected by the handshake hashes, so it shouldn't
> affect any of the decisions taken as part of the handshake.


This I was not aware of. That is a hole I can now see (in my reasoning
with respect to handshake tampering). Thanks for pointing this out.

I was under the impression that verify data protects the handshake.

Thanks. This should be addressed.

> 3. Forbidding SSL 3.0 version from the record layer breaks perfectly
> valid clients, which advertise TLS 1.2. These clients can only use a
> variant of fallback dance to connect to broken servers which impose
> those limits. Please _DON'T CREATE MORE REASONS FOR FALLBACK DANCES_.

OK. Then an extension to indicate supported versions would in fact be an
improvement as it would be protected by verify_data.

I'm not in supported of downgrade dancing. I was completely unaware that
the entire handshake is not hashed.

Thanks.