Re: [TLS] Confirming consensus about one

Martin Rex <mrex@sap.com> Thu, 28 January 2010 15:07 UTC

Return-Path: <mrex@sap.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 DB97F3A6A1E for <tls@core3.amsl.com>; Thu, 28 Jan 2010 07:07:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.249
X-Spam-Level:
X-Spam-Status: No, score=-10.249 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_HI=-8]
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 0zpQSvkEPtxN for <tls@core3.amsl.com>; Thu, 28 Jan 2010 07:07:40 -0800 (PST)
Received: from smtpde01.sap-ag.de (smtpde01.sap-ag.de [155.56.68.171]) by core3.amsl.com (Postfix) with ESMTP id A11D13A695C for <tls@ietf.org>; Thu, 28 Jan 2010 07:07:39 -0800 (PST)
Received: from mail.sap.corp by smtpde01.sap-ag.de (26) with ESMTP id o0SF7jQN000487 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 28 Jan 2010 16:07:45 +0100 (MET)
From: Martin Rex <mrex@sap.com>
Message-Id: <201001281507.o0SF7iKb016361@fs4113.wdf.sap.corp>
To: mrex@sap.com
Date: Thu, 28 Jan 2010 16:07:44 +0100 (MET)
In-Reply-To: <201001281456.o0SEulXn015572@fs4113.wdf.sap.corp> from "Martin Rex" at Jan 28, 10 03:56:47 pm
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Scanner: Virus Scanner virwal07
X-SAP: out
Cc: DPKemp@missi.ncsc.mil, tls@ietf.org
Subject: Re: [TLS] Confirming consensus about one
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.9
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/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: Thu, 28 Jan 2010 15:07:41 -0000

Martin Rex wrote:
> 
> Yoav Nir wrote:
> > 
> > A new version of TLS (4.0?  It's time to stop explaining that
> > three-point-one-means-one-point-zero) would have to be certified
> > again anyway, so it might as well change the way Finished is
> > calculated. Then you don't need either SCSV or RI.
> > 
> > Of course as long as you support older versions of TLS, you still
> > need them, but fully 4.0 handshakes will need neither SCSV nor RI.
> 
> I could imagine that a part of the installed base might have an
> interop problems with protcol_versions where the major_number
> is != 0x03.  (I believe ours does). 
> 
> In order to allow servers to perform some plausibility tests on
> the initial incoming data of a connection to recognize ClientHellos
> and distinguish them from e.g. HTTP GET/PUT/... the protocol_version
> at the record layer should IMHO use the lowest(!) protocol_version
> acceptable to the client.
> 
> I'm also wondering about one thing I encountered not so long ago
> during interop tests:  when a Server aborts a handshake while
> processing the initial ClientHello on a connection, there seems
> to be an uncertainty what protocol_version that alert will
> use at the record layer and from which set of available alerts
> it will be chosen.
> 
> If possible, the protocol_version for that alert (and therefore
> the set of avaiable alert numbers) should --if possible-- be chosen
> to match a protocol version _not_ exceeding the highest protocol_version
> proposed by the client in client_version.  There may be TLS server
> implementations that do not account for this yet.

Ooops, bad memories.

The confusion I ran into was different and may apply only to the
specific case that the highest protocol_version offered by the
client in ClientHello.client_version is lower than the lowest
protocol_version offered/allowed by the Server  (so the server
should send back the alert with a protocol version lower than
it would accept for communication).

The problem gets more complicated for clients that send (for whatever
reason) a client version  {0x03,0x00} (aka SSLv3).  SSLv3 does not
define an alert protocol_version(70).  But sending this alert value
anyway (_while_ using the 0x03,0x00 protocol version on the record
layer for the alert packet!) is maybe still a good idea.

-Martin