Re: [TLS] Protocol version for inappropriate_fallback alerts (was: Re: I-D Action: draft-ietf-tls-downgrade-scsv-01.txt)

mrex@sap.com (Martin Rex) Thu, 13 November 2014 21:36 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 EE85E1AD62A for <tls@ietfa.amsl.com>; Thu, 13 Nov 2014 13:36:17 -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 Z8aAz69D3kQz for <tls@ietfa.amsl.com>; Thu, 13 Nov 2014 13:36:16 -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 A36A01AD620 for <tls@ietf.org>; Thu, 13 Nov 2014 13:36:15 -0800 (PST)
Received: from mail05.wdf.sap.corp (mail05.sap.corp [194.39.131.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtpde01.smtp.sap-ag.de (Postfix) with ESMTPS id A8FDF3A33D; Thu, 13 Nov 2014 22:36:13 +0100 (CET)
Received: from ld9781.wdf.sap.corp (ld9781.wdf.sap.corp [10.21.82.193]) by mail05.wdf.sap.corp (Postfix) with ESMTP id 9F160423E3; Thu, 13 Nov 2014 22:36:13 +0100 (CET)
Received: by ld9781.wdf.sap.corp (Postfix, from userid 10159) id 9302B1AFCC; Thu, 13 Nov 2014 22:36:13 +0100 (CET)
In-Reply-To: <CADMpkc+Niny8OQ47P8xYdLg=EpJduwUstKF5z6BsGv=aoJ84YQ@mail.gmail.com>
To: Bodo Moeller <bmoeller@acm.org>
Date: Thu, 13 Nov 2014 22:36:13 +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: <20141113213613.9302B1AFCC@ld9781.wdf.sap.corp>
From: mrex@sap.com
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/Pdla-qa2R1SsEGyP4-VCsSjuX9M
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Protocol version for inappropriate_fallback alerts (was: Re: I-D Action: draft-ietf-tls-downgrade-scsv-01.txt)
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: Thu, 13 Nov 2014 21:36:18 -0000

Bodo Moeller wrote:
>>
>> But I do _not_ think that a MUST for ClientHello.client_version
>> would be appropriate for an fatal alert that is sent instead
>> of ServerHello.  For alerts that early in the handshake a server
>> may for simplicity reuse the record layer protocol that was used
>> for the in coming ClientHello.
> 
> 
> God point.  If the record-layer version number differs from
> ClientHello.client_version, the client should really be ready to accept
> both version numbers. So what about the following?
> 
> [...]  The record layer version number for this alert MUST be set to either
> ClientHello.client_version (as it would for the Server Hello message if the
> server was continuing the handshake), or to the record layer version number
> used by the client.


I thought you were looking for simplicity and ease-of-implementation.
I believe you should get rid of the MUST.

we're talking about the text on page 3 of your I-D, right?

   o  If TLS_FALLBACK_SCSV appears in ClientHello.cipher_suites and the
      highest protocol version supported by the server is higher than
      the version indicated in ClientHello.client_version, the server
-     MUST respond with a fatal inappropriate_fallback alert (unless it
-     responds with a fatal protocol_version alert because the version
-     indicated in ClientHello.client_version is unsupported).  The
-     record layer versio
- 2000
- n number for this alert MUST be set to either
-      ClientHello.client_version (as it would for the Server Hello
-      message if the server was continuing the handshake), or to the
-      record layer version number used by the client.
+     MUST respond with a fatal inappropriate_fallback alert.  There
+     has not been a protocol version negotiated at this point of the
+     TLS handshake, so the inappropriate_fallback alert, like any
+     other fatal alert this early during the handshake, should use
+     a record layer protocol_version that the client can reasonably
+     be expected to understand, such as the record layer protocol_version
+     that carried the client's ClientHello handshake message or the
+     ClientHello.client_version.

I have a serious problem with the text in the parentheses in your current
version (from above, re-flowed):

-     (unless it responds with a fatal protocol_version alert because the
-      version indicated in ClientHello.client_version is unsupported).


This text (a) is ignorant about how the SSL&TLS version negotiation is
supposed to work and (b) gives a blessing to version-intolerant servers.

It hurts to see such text in a proposal whose purpose is to ask servers
to mitigate dangerous client behaviour.  Client behaviour that was invented
to compensate for the failure of TLS servers to properly negotiate SSL&TLS
protocol versions in combination with server's protocol version intolerance.


-Martin