Re: [TLS] Deprecate SHA1 for signatures in TLS 1.3 (was Re: TLS 1.3 draft-07 sneak peek)

Viktor Dukhovni <ietf-dane@dukhovni.org> Mon, 13 July 2015 18:01 UTC

Return-Path: <ietf-dane@dukhovni.org>
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 067751B2CE3 for <tls@ietfa.amsl.com>; Mon, 13 Jul 2015 11:01:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7] 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 caO0skKq5LHn for <tls@ietfa.amsl.com>; Mon, 13 Jul 2015 11:01:54 -0700 (PDT)
Received: from mournblade.imrryr.org (mournblade.imrryr.org [38.117.134.19]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3ACC71B2CE2 for <tls@ietf.org>; Mon, 13 Jul 2015 11:01:54 -0700 (PDT)
Received: by mournblade.imrryr.org (Postfix, from userid 1034) id 5C950284D6A; Mon, 13 Jul 2015 18:01:53 +0000 (UTC)
Date: Mon, 13 Jul 2015 18:01:53 +0000
From: Viktor Dukhovni <ietf-dane@dukhovni.org>
To: tls@ietf.org
Message-ID: <20150713180153.GO28047@mournblade.imrryr.org>
References: <CALuAYvbteowTeyWe9VneRHgyvzTRS3LfKdorWt=jmEy2k+wNqw@mail.gmail.com> <201507111709.27725.davemgarrett@gmail.com> <CABcZeBNCBrNeMKm5hCLQ741zFRpcXQ321onofH2EWJbiQrSs6w@mail.gmail.com> <201507111929.02696.davemgarrett@gmail.com> <BLUPR03MB13965B49B433823B6A04B3088C9C0@BLUPR03MB1396.namprd03.prod.outlook.com> <20150713044104.GK28047@mournblade.imrryr.org> <BLUPR03MB1396DF5184A7E3DFAF3F11028C9C0@BLUPR03MB1396.namprd03.prod.outlook.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <BLUPR03MB1396DF5184A7E3DFAF3F11028C9C0@BLUPR03MB1396.namprd03.prod.outlook.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
Archived-At: <http://mailarchive.ietf.org/arch/msg/tls/5MSLQ36uKvOYmWVTWXkOT339oJw>
Subject: Re: [TLS] Deprecate SHA1 for signatures in TLS 1.3 (was Re: TLS 1.3 draft-07 sneak peek)
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: tls@ietf.org
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 13 Jul 2015 18:01:56 -0000

On Mon, Jul 13, 2015 at 05:11:29PM +0000, Andrei Popov wrote:

> I think a good design is to have the client explicitly advertise any
> algorithms the client is willing/able to support, and for the server to
> honor the client's capabilities.

To the extent possible.  However, the server SHOULD NOT refuse to
continue the handshake merely because it believes that some
certificates in its chain might have signatures the client can't
check.  The point being that the client may not need or attempt to
check those signatures.

> IMHO the existing specs already meet the above goal,

No, the language about the certificate chain is needlessly restrictive.
The decision as to whether the chain works for the client or not,
SHOULD be left to the client.  The server's job is to *try* to avoid
problems by sending a known-compatible chain when available.

> No, I don't care for SHA1; let's deprecate it ASAP. I do care for a
> straightforward and deterministic handshake where the client MUST advertise
> supported algorithms and the server MUST honor the client's capabilities.

The MUST honour bit cleanly applies to choices of algorithms in
signature the server makes during and after the handshake.  However,
honouring the algorithms for the chain signatures is more subtle.
Yes, send a compatible chain when possible, HOWEVER, DO NOT prejudge
the client's inability to handle an alternative chain if that's
all you have.  As explained before, opportunistic TLS, DANE, pinning,
...  may mean that the client does not in fact examine the signatures
in the chain and the handshake would succeed, if only the server
were not needlessly pedantic.

Let's not be needlessly pedantic.

> Having shipped a product that implements the strict interpretation of the
> current specs (WRT signature_algorithms) for a number of years now, I
> remember exactly 3 related problem reports. Without pointing fingers (as
> much as possible), here they are:

Past performance is not a guarantee of future returns.

Today, TLS 1.2 clients generally support all the defined hash
algorithms, so problems are rare.  In the future, there will be
new hash algorithms that not all clients will support, and there
will servers with chains that are signed with bleeding-edge
algorithms, there's no need to reject connections from clients that
don't need to verify said signatures.


> My preference would be to keep the client explicitly advertising its
> capabilities, and the server strictly honoring the client-advertised
> capabilities. And since the concept of "default algorithms" confuses
> people, let's just get rid of it in 1.3. Conveniently, most of this WG no
> longer wants SHA1 or MD5. Why not just make signature_algorithms (even
> more) clearly and unambiguously MTI in 1.3?

An opportunistic TLS or DANE TLSA client cannot advertise the
capability of supporting algorithms it was aware existed (by ignoring
all signatures in the chain).

We surely don't want to muddy the waters by adding "wildcard"
algorithm code-points, and new APIs for clients to request that
the TLS stack send those.

The proposal on the table is simply sensible.  The server lacks
sufficient information to make an informed decision as to whether
its chain is unacceptable, and therefore should send whatever chain
it has if it lacks a known compatible chain.  This is simply sound
engineering.  The alternative is needless incompatibility. 

That this also fixes the problem for some folks who don't want to
make sending the extension mandatory (and happen to get back a
chain they can accept) is a harmless accident.

-- 
	Viktor.