Re: [TLS] Extensions "supported_groups" and "key_share" in TLS 1.3

Hubert Kario <hkario@redhat.com> Fri, 27 November 2015 12:44 UTC

Return-Path: <hkario@redhat.com>
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 CCA1F1B33DA for <tls@ietfa.amsl.com>; Fri, 27 Nov 2015 04:44:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.486
X-Spam-Level:
X-Spam-Status: No, score=-7.486 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.585, SPF_HELO_PASS=-0.001] 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 dh9k4VM5D6NZ for <tls@ietfa.amsl.com>; Fri, 27 Nov 2015 04:44:38 -0800 (PST)
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 7A6A01B2EE1 for <tls@ietf.org>; Fri, 27 Nov 2015 04:44:38 -0800 (PST)
Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id 3A918743; Fri, 27 Nov 2015 12:44:38 +0000 (UTC)
Received: from pintsize.usersys.redhat.com (ovpn-112-54.ams2.redhat.com [10.36.112.54]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id tARCiXt8003770 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 27 Nov 2015 07:44:37 -0500
From: Hubert Kario <hkario@redhat.com>
To: Xuelei Fan <xuelei.fan@vimino.com>
Date: Fri, 27 Nov 2015 13:44:21 +0100
Message-ID: <1786049.OYDTVEIchY@pintsize.usersys.redhat.com>
User-Agent: KMail/4.14.10 (Linux/4.2.6-200.fc22.x86_64; KDE/4.14.14; x86_64; ; )
In-Reply-To: <CAAgBOhs_bPRrV8FZ0=aw-Snt8cJpjT8TYqH4a22Ub5Lp_Es4MA@mail.gmail.com>
References: <CAAgBOhuOPB=jxO=WWHmy_y7ARY5qfdK2x4xC9t-Z-vn0UU5Paw@mail.gmail.com> <5330051.tMbHWVtgER@pintsize.usersys.redhat.com> <CAAgBOhs_bPRrV8FZ0=aw-Snt8cJpjT8TYqH4a22Ub5Lp_Es4MA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart1468959.Qnv9nnF9Gh"; micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.27
Archived-At: <http://mailarchive.ietf.org/arch/msg/tls/ESEe6HqTG3HGpPoWWwXfcwcFFCQ>
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Extensions "supported_groups" and "key_share" in TLS 1.3
X-BeenThere: tls@ietf.org
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." <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, 27 Nov 2015 12:44:40 -0000

On Friday 27 November 2015 20:33:46 Xuelei Fan wrote:
> On Fri, Nov 27, 2015 at 8:12 PM, Hubert Kario <hkario@redhat.com> 
wrote:
> > On Friday 27 November 2015 10:50:40 Xuelei Fan wrote:
> > > > On Thursday, November 26, 2015 09:12:14 pm Xuelei Fan wrote:
> > > > > Can key_share offers two shares for the same group?
> > > > 
> > > > It's currently worded "Clients MUST NOT offer multiple
> > > > KeyShareEntry
> > > > values for the same parameters", which is a little ambiguous,
> > > > but I
> > > > interpret this as one share per group. I don't know why you'd
> > > > need
> > > > to offer more than one, anyway.
> > > 
> > > Need no more than one.  Then, it may be more simple that key_share
> > > does
> > > not define the preference order. The preference order is covered
> > > by
> > > supported_groups.
> > 
> > What would then be the expected behaviour of the server if the first
> > group in the supported_groups does not have a associated key share?
> > 
> Try the next  group in the supported_groups until find an associated
> key
> share.
>
> > I think that specifying *both* in preference order, and recommending
> > the servers to first inspect key shares and then supported_groups
> > (if no intersect between what server supports and what key shares
> > client provided) would end up with more predictable behaviour and
> > cleaner code.
> > 
> But if the orders are not consistent, the logic get annoyed.  It's a
> good
> practice to keep the order consistent, but it would be better if the
> preference order is unique and specified in one place.

that means that the code needs to keep references to two arrays at the 
same time and either create a hash table for lookups in key shares or 
iterate over key shares for every try - this makes code and logic more 
complex, not less

> > That being said, we probably should say that clients MUST advertise
> > support for all groups for which they send key shares and servers
> > MUST abort connection with something like illegal_parameter if that
> > happens
> This adds additional checking on both client and server.  Personally,
> I would prefer to use one preference order in order to avoid any
> order conflict.

not the first, and certainly not the last checks that need to be done to 
implement TLS securely...
-- 
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