Re: [TLS] advertizing the minimum TLS supported version [was: Last Call: <draft-ietf-tls-downgrade-scsv-03.txt>]

Michael Clark <> Thu, 22 January 2015 11:06 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 0385B1AC447 for <>; Thu, 22 Jan 2015 03:06:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.668
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 ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Ccx5NhlS0n2x for <>; Thu, 22 Jan 2015 03:06:43 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 907F81AC443 for <>; Thu, 22 Jan 2015 03:06:43 -0800 (PST)
Received: from monty.local ( [] (may be forged)) (authenticated bits=0) by (8.14.4/8.14.4/Debian-4) with ESMTP id t0MBSXuj013003 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Thu, 22 Jan 2015 11:28:36 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;; s=klaatu; t=1421926119; bh=gCgQjJV7jebJadvT3MEfyTypZnWreJ5q00zulzM6acQ=; h=Date:From:To:CC:Subject:References:In-Reply-To:From; b=S+s63c0DM3Q+vBUEENJRX29KDcmgsoBUYElW/2vsOSwYKAc5LQCllo6EoHj4yHs0s xMul4Z2Smq2PwqZpk8xPo8UmEK0PyVgjgbVXUdJLPO3yCPxvJBvg2YKdzcfEeqGmH8 6DylH0ixvD8t4RJc1KMx67n6DfBo7NkjiUK+Ue+Y=
Message-ID: <>
Date: Thu, 22 Jan 2015 19:06:31 +0800
From: Michael Clark <>
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 <>
References: <> <, > <> <, > <> <BAY180-W688DE2930CB7F231E60989FF480@phx.gbl> <, <> <> > <BAY180-W1849690A1D8C42F1063DDBFF480@phx.gbl> <> <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: 8bit
X-Virus-Scanned: clamav-milter 0.98.4 at
X-Virus-Status: Clean
Archived-At: <>
Cc: "" <>
Subject: Re: [TLS] advertizing the minimum TLS supported version [was: Last Call: <draft-ietf-tls-downgrade-scsv-03.txt>]
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." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 22 Jan 2015 11:06:45 -0000

On 22/1/15 6:40 pm, Michael Clark wrote:
> On 22/1/15 6:24 pm, Nikos Mavrogiannopoulos wrote:
>> On Thu, 2015-01-22 at 18:11 +0800, Michael Clark wrote:
>>>> 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
>>> OK. Then an extension to indicate supported versions would in fact be an
>>> improvement as it would be protected by verify_data.
>> Some time ago, I had proposed a method for clients to advertise the list
>> of protocols they support, for the same reason. To allow the server to
>> fallback to their preferred protocol:
> Good idea. Thanks I understand now. More logical than SCSV to have the
> minimum version in the handshake hash.

I would audit the handshake hash in an open implementation to be certain
and (based on new information in *my head* at least):

a) support Nikos proposal to advertise the list of protocols as
   a better short/medium term mitigation in preference to SCSV as
   this is the real issue. We could easily make the SCSV mistake if
   we were unaware of the handshake hash construction. I did.

b) TLSv1.3 in the medium to long should authenticate the entire
   handshake. There shouldn't be any unauthenticated bytes that
   can be tampered with. This would be in concert with reviewing
   verify_data_length and the 12 octet and the wording that defers
   to the cipher suite to increase it, but then they don't.
   TLSv1.3 could address this in a more permanent way.

So the thought experiment still stands, rather we made a false
assumption on authentication of the handshake. Some bytes can
be tampered with.

I will be reading (Open|Boring)SSL code to make sure. The reality
is however that when I reasoned from the spec, I saw hash(handshake)
but I did not see the wording that specified whether this is
the content of the handshake record or the whole record. I will look
for the wording in the spec. If it is there and specifies only the
content then it is a little mistake (for some value of little).

The reasoning in my prior email still stands despite the *pivot*
on the knowledge of the handshake hash construction.

I will read code...