[TLS] Server abort because of unrecognised vs rejected client provided parameters

Hubert Kario <hkario@redhat.com> Fri, 21 October 2016 13:24 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 4A5AE129560 for <tls@ietfa.amsl.com>; Fri, 21 Oct 2016 06:24:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.454
X-Spam-Level:
X-Spam-Status: No, score=-5.454 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.431, 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 xIf-aOc73Dgf for <tls@ietfa.amsl.com>; Fri, 21 Oct 2016 06:24:43 -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 A6B2812943D for <tls@ietf.org>; Fri, 21 Oct 2016 06:24:43 -0700 (PDT)
Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (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 5DB2FC057FA5 for <tls@ietf.org>; Fri, 21 Oct 2016 13:24:43 +0000 (UTC)
Received: from pintsize.usersys.redhat.com (dhcp-0-191.brq.redhat.com [10.34.0.191]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u9LDOgGm022706 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <tls@ietf.org>; Fri, 21 Oct 2016 09:24:43 -0400
From: Hubert Kario <hkario@redhat.com>
To: "tls@ietf.org" <tls@ietf.org>
Date: Fri, 21 Oct 2016 15:24:35 +0200
Message-ID: <2807298.nMSlSttlYL@pintsize.usersys.redhat.com>
User-Agent: KMail/5.3.1 (Linux/4.7.7-200.fc24.x86_64; KDE/5.26.0; x86_64; ; )
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart41033876.HFTSU0vPTT"; micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Fri, 21 Oct 2016 13:24:43 +0000 (UTC)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/e27Z7gfOp9LBeM8uTvbyZxawa90>
Subject: [TLS] Server abort because of unrecognised vs rejected client provided parameters
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: Fri, 21 Oct 2016 13:24:45 -0000

Currently TLS has two alert descriptions for when there is no intersection 
between ciphers/sigalgs/groups advertises by client and ones that are enabled 
in server. It's the handshake_failure and insufficient_security alerts.

While it is a step in good direction in providing users with better messages 
in case of connection failure, I think there is one edge case which may ruin 
the effort.

Let's say we have a client that advertises following signature methods:
rsa-ssa-sha256
rsa-ssa-sha384

and this client is connecting to server which requires use of rsa-ssa-sha512 
signatures only, but does implement weaker hashes and the requirement is just 
result of administrator requiring high security.

I think that such connection attempt should end with insufficient_security.

Problem is, what if the server does not implement some even never RSA 
signature format, but client does advertise support for them?

I think then the connection should end with handshake_failure.

So I think we should add to the insufficient_security description the 
following sentence:

   In case the connection peer advertised security parameters not recognized 
   or unsupported by the implementation, the implementation MUST send
   "handshake_failure" alert instead.
-- 
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