[TLS] Downgrade Dance steps (Re: drop obsolete SSL 2 backwards compatibility from TLS 1.3 draft)

mrex@sap.com (Martin Rex) Sat, 14 February 2015 08:54 UTC

Return-Path: <mrex@sap.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 0847F1A1B38 for <tls@ietfa.amsl.com>; Sat, 14 Feb 2015 00:54:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.551
X-Spam-Level:
X-Spam-Status: No, score=-6.551 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001] autolearn=ham
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 9r_lItwEYSdX for <tls@ietfa.amsl.com>; Sat, 14 Feb 2015 00:54:32 -0800 (PST)
Received: from smtpde01.smtp.sap-ag.de (smtpde01.smtp.sap-ag.de [155.56.68.170]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1B1391A1A68 for <tls@ietf.org>; Sat, 14 Feb 2015 00:54:31 -0800 (PST)
Received: from mail05.wdf.sap.corp (mail05.sap.corp [194.39.131.55]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtpde01.smtp.sap-ag.de (Postfix) with ESMTPS id 7A9CB2A935; Sat, 14 Feb 2015 09:54:29 +0100 (CET)
X-purgate-ID: 152705::1423904069-0000765A-5F97AC1B/0/0
X-purgate-size: 2934
X-purgate: clean
X-purgate: This mail is considered clean (visit http://www.eleven.de for further information)
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate-type: clean
Received: from ld9781.wdf.sap.corp (ld9781.wdf.sap.corp [10.21.82.193]) by mail05.wdf.sap.corp (Postfix) with ESMTP id 6F38043B2F; Sat, 14 Feb 2015 09:54:29 +0100 (CET)
Received: by ld9781.wdf.sap.corp (Postfix, from userid 10159) id 650061B1A6; Sat, 14 Feb 2015 09:54:29 +0100 (CET)
In-Reply-To: <BLU177-W21BE1BB9BC3F129D6421CEC3220@phx.gbl>
To: Yuhong Bao <yuhongbao_386@hotmail.com>
Date: Sat, 14 Feb 2015 09:54:29 +0100
X-Mailer: ELM [version 2.4ME+ PL125 (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="US-ASCII"
Message-Id: <20150214085429.650061B1A6@ld9781.wdf.sap.corp>
From: mrex@sap.com
Archived-At: <http://mailarchive.ietf.org/arch/msg/tls/hJcbFZ2iTZHajjxW7hRM3uV86Cw>
Cc: Florian Weimer <fweimer@redhat.com>, "tls@ietf.org" <tls@ietf.org>
Subject: [TLS] Downgrade Dance steps (Re: drop obsolete SSL 2 backwards compatibility from TLS 1.3 draft)
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: mrex@sap.com
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: Sat, 14 Feb 2015 08:54:37 -0000

Yuhong Bao wrote:
>
> Just confirmed that IE on Win7 even when misconfigured to enable
> SSLv2 doesn't send a SSLv2 ClientHello with TLS 1.2 on it which
> means that SChannel probably can't do it at all. Andrei Popov
> should be able to confirm this.

IIRC, Win7 shipped with TLSv1.2 *disabled*.

I see the following downgrade dances with MSIE 10
on (a fully patched) 64-bit Win7sp1.

What's a little weird about the MSIE downgrade dances:
  - duplicated attempts with certain Hellos in certain configurations
  - empty connection attempts when SSLv2 is disabled.

The (dummy) server that I had MSIE connect to read the ClientHello
from the network waited a second and then closed the network connection.


-Martin


everything enabled (SSLv2->TLSv1.2):

  TLS record (3,3)  ClientHello.client_version(3,3) with TLS extensions
  SSL2 record  ClientHello.client_version(3,1)
  SSL2 record  ClientHello.client_version(3,0)
  SSL2 record  ClientHello.client_version(0,2)


SSLv2 plus default (SSLv3,TLSv1.0,TLSv1.1):

  SSL2 record  ClientHello.client_version(3,2)
  SSL2 record  ClientHello.client_version(3,1)
  SSL2 record  ClientHello.client_version(3,0)
  SSL2 record  ClientHello.client_version(0,2)

SSLv2 plus TLSv1.0+TLSv1.1 (this looks weird!):

  SSL2 record  ClientHello.client_version(3,2)
  SSL2 record  ClientHello.client_version(3,1)
  SSL2 record  ClientHello.client_version(0,2)
  SSL2 record  ClientHello.client_version(0,2)


For comparison the (hopefully more common scenarios):

SSLv3->TLSv1.2:

  TLS  record (3,3)  ClientHello.client_version(3,3) with TLS extensions
  TLS  record (3,1)  ClientHello.client_version(3,1) with TLS extensions
  SSL3 record (3,0)  ClientHello.client_version(3,0)
  TCP-connect + TCP-close

TLSv1.0+TLSv1.1+TLSv1.2

  TLS  record (3,3)  ClientHello.client_version(3,3) with TLS extensions
  TLS  record (3,1)  ClientHello.client_version(3,1) with TLS extensions
  TCP-connect + TCP-close


And finally the more esoteric configurations:

TLSv1.1+TLSv1.2

  TLS  record (3,3)  ClientHello.client_version(3,3) with TLS extensions
  TCP-connect + TCP-close

TLSv1.2 alone

  TLS  record (3,3)  ClientHello.client_version(3,3) with TLS extensions
  TCP-connect + TCP-close

SSLv3+TLSv1.2

  TLS  record (3,3)  ClientHello.client_version(3,3) with TLS extensions
  SSL3 record (3,0)  ClientHello.client_version(3,0)
  SSL3 record (3,0)  ClientHello.client_version(3,0)
  TCP-connect + TCP-close

TLSv1.0+TLSv1.2

  TLS  record (3,3)  ClientHello.client_version(3,3) with TLS extensions
  TLS  record (3,1)  ClientHello.client_version(3,1)
  TCP-connect + TCP-close

SSLv2+TLSv1.2

  TLS  record (3,3)  ClientHello.client_version(3,3) with TLS extensions
  SSL2 record  ClientHello.client_version(0,2)
  SSL2 record  ClientHello.client_version(0,2)
  SSL2 record  ClientHello.client_version(0,2)