Re: [TLS] Client certificate alerts

Hubert Kario <hkario@redhat.com> Mon, 19 September 2016 13:00 UTC

Return-Path: <hkario@redhat.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C39CC12B3C7 for <tls@ietfa.amsl.com>; Mon, 19 Sep 2016 06:00:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.238
X-Spam-Level:
X-Spam-Status: No, score=-9.238 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-2.316, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 uIUv52c2xLOS for <tls@ietfa.amsl.com>; Mon, 19 Sep 2016 06:00:54 -0700 (PDT)
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6B9F812B0B9 for <tls@ietf.org>; Mon, 19 Sep 2016 06:00:34 -0700 (PDT)
Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D20B131B307; Mon, 19 Sep 2016 13:00:33 +0000 (UTC)
Received: from pintsize.usersys.redhat.com (dhcp-0-191.brq.redhat.com [10.34.0.191]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u8JD0WYa030293 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 19 Sep 2016 09:00:33 -0400
From: Hubert Kario <hkario@redhat.com>
To: tls@ietf.org
Date: Mon, 19 Sep 2016 15:00:26 +0200
Message-ID: <4253003.XfSaxAqzbM@pintsize.usersys.redhat.com>
User-Agent: KMail/5.2.3 (Linux/4.7.3-200.fc24.x86_64; KDE/5.26.0; x86_64; ; )
In-Reply-To: <CAF8qwaDp+mqimkq_euXtjkhZRrb_f=86Q_RgdEE27teTwpWHxA@mail.gmail.com>
References: <CAF8qwaDp+mqimkq_euXtjkhZRrb_f=86Q_RgdEE27teTwpWHxA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart4204585.Byke7Fg5od"; micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 19 Sep 2016 13:00:33 +0000 (UTC)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/2oelur0oZOpIJfqggi9tZvG9Vns>
Subject: Re: [TLS] Client certificate alerts
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
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, 19 Sep 2016 13:00:59 -0000

On Saturday, 17 September 2016 20:09:40 CEST David Benjamin wrote:
> Hi folks,
> 
> We've run into some problems with client certificate alerts in Chrome that
> I'd like to fix going forward.
> 
> The first is easy. handshake_failure is an unhelpful alert for server which
> required client certs. This confuses users, so we're planning to
> heuristically map it to a client certificate error if it's received after
> declining to send certs. This seems poor, so I've uploaded this PR which
> adds a certificate_required alert:
> https://github.com/tlswg/tls13-spec/pull/640

+1 

> Second, there is the access_denied alert. This alert has an unfortunate
> name. Per spec, it is for:
> 
>    access_denied
>       A valid certificate [TLS1.3: or PSK] was received, but when access
> control was
>       applied, the sender decided not to proceed with negotiation.  This
>       message is always fatal.
> 
> Accordingly, Chrome maps it to a client certificate error. But, by the name
> alone, it sounds much more general. We're seeing evidence of some kind of
> network filtering software mistakenly sending it to block a connection. (I
> can't blame them too much, since we ourselves mistook it for an alert to
> send in a server-side DoS handler! This has since been fixed.)
> 
> From an unscientific survey of recent Chrome user complaints about this
> error, this is twice as prominent as actual client cert errors! So we'll
> want to add another heuristic: if we see access_denied without a
> CertificateRequest, map it to a more generic TLS error. This also seems
> worth fixing going forward.
> 
> Does anyone actually send this alert? OpenSSL does not appear to.

I've done a quick survey of about 60 servers, given the different 
intolerancies and limits they appear to have. Just that 60 servers were 
handled by at least a dozen different implementations, 2 of which were unique 
and unless people already deployed 1.1.0 in droves, the dominant 
implementation didn't look like OpenSSL.

So I don't think we should guide ourselves with what OpenSSL does or doesn't 
do.

> My best
> rename is certificate_denied if we drop 1.3's "or PSK", but perhaps we can
> remove the alert completely? You haven't gotten application data yet, so
> you don't really have anything to apply access control on, particularly for
> PSK. (For certs, there's post-handshake auth, but I would think you'd send
> an application-level error there?)

if it was already misused by multiple people, deprecating it and creating a 
new one probably is a good idea to make it unambiguous.

-- 
Regards,
Hubert Kario
Senior Quality Engineer, QE BaseOS Security team
Web: www.cz.redhat.com
Red Hat Czech s.r.o., Purkyňova 99/71, 612 45, Brno, Czech Republic