Re: [kitten] draft-hansen-scram-sha256 and incorporating session hashing for channel binding

Simon Josefsson <simon@josefsson.org> Thu, 28 May 2015 20:01 UTC

Return-Path: <simon@josefsson.org>
X-Original-To: kitten@ietfa.amsl.com
Delivered-To: kitten@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 17E1A1A88C1 for <kitten@ietfa.amsl.com>; Thu, 28 May 2015 13:01:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.551
X-Spam-Level:
X-Spam-Status: No, score=-1.551 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_SE=0.35, SPF_PASS=-0.001] autolearn=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 ha3oYtSEiM5l for <kitten@ietfa.amsl.com>; Thu, 28 May 2015 13:01:55 -0700 (PDT)
Received: from duva.sjd.se (duva.sjd.se [IPv6:2001:9b0:1:1702::100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CE6B01A88C0 for <kitten@ietf.org>; Thu, 28 May 2015 13:01:54 -0700 (PDT)
Received: from latte.josefsson.org ([155.4.17.3]) (authenticated bits=0) by duva.sjd.se (8.14.4/8.14.4/Debian-4) with ESMTP id t4SK1heM031719 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NOT); Thu, 28 May 2015 22:01:45 +0200
Date: Thu, 28 May 2015 22:01:42 +0200
From: Simon Josefsson <simon@josefsson.org>
To: Nico Williams <nico@cryptonector.com>
Message-ID: <20150528220142.374f2626@latte.josefsson.org>
In-Reply-To: <20150528164000.GF1733@localhost>
References: <54DC00D0.2050900@cs.tcd.ie> <54EC66FF.50603@cs.tcd.ie> <54ECABD8.3090902@att.com> <87zj82f1yj.fsf@latte.josefsson.org> <54F4B8B8.8090406@isode.com> <555FC6CF.5020306@att.com> <20150523162728.5b6b63cd@latte.josefsson.org> <5564F27D.70109@att.com> <20150526223206.GE27628@localhost> <20150528171122.2bceebb6@latte.josefsson.org> <20150528164000.GF1733@localhost>
X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.25; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256; boundary="Sig_/pQsHjr1bw6dS1Z.Fj8H3b6k"; protocol="application/pgp-signature"
X-Virus-Scanned: clamav-milter 0.98.7 at duva.sjd.se
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/kitten/9G6YdBX1jclj5rq_M7EJjRNLEKY>
Cc: "kitten@ietf.org" <kitten@ietf.org>
Subject: Re: [kitten] draft-hansen-scram-sha256 and incorporating session hashing for channel binding
X-BeenThere: kitten@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Common Authentication Technologies - Next Generation <kitten.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/kitten>, <mailto:kitten-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/kitten/>
List-Post: <mailto:kitten@ietf.org>
List-Help: <mailto:kitten-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/kitten>, <mailto:kitten-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 28 May 2015 20:01:56 -0000

> On Thu, May 28, 2015 at 05:11:22PM +0200, Simon Josefsson wrote:
> > > > You then go on to say: "Personally, I would prefer to change to
> > > > another mandatory channel binding that is secure for all TLS
> > > > versions."
> > > 
> > > This is not really appropriate here because it's the applications
> > > that need to do this, and we can't say anything here about this
> > > that will force them to.
> > 
> > > A reference to TLS-SESSION-HASH of the same level (i.e., normative
> > > or informative) as RFCs 5246 and 5929 would be nice.
> > 
> > I believe that what is required is
> > 
> >   1) scram-sha256 has a normative reference to tls-session-hash; or
> > 
> >   2) tls-session-hash uses an Update: that makes it applicapable to
> > all TLS versions, and that it is clarified (if not already the
> > case) that tls-session-hash must be used; or
> 
> And RFC5929.

That's not strictly necessary, is it?  5929 refer to TLS, so if
tls-session-hash update TLS specs, 5929 indirectly refer too
tls-session-hash.  At least that is how I would interprete it.  But
I'm all for making things explicit.

> My vote is for (2).  I don't mind (1) in addition, but I want (2).

There is precedent for that for TLS, several of the security fixes
Update:'s all TLS RFCs.
 
> >   3) scram-sha256 uses a new channel binding that is secure with or
> >   without tls-session-hash.
> 
> We disagree as to (3).  This is advice we can give to apps in the
> security considerations section, not something we can force a SASL or
> GSS mechanism to do because API-wise the mechanism doesn't get a
> choice.

I don't understand this...

> > I believe 1) and 2) would be worse than 3) for the next ~5 years or
> > so, and things being equal after that.  SASL libraries/applications
> > rarely have any influence over TLS internals, but they directly
> > influence the channel binding used.  Using another channel binding
> > for [...]
> 
> No, they don't.  Certainly not GSS ones, and the SASL implementations
> I'm familiar with don't either.
> 
> E.g., GSS_Init_sec_context() doesn't get a handle to a channel to bind
> to, it only gets the channel binding as already extracted by the app.
> Worse, GSS_Init_sec_context() doesn't even get the channel binding
> type.

...and I don't understand any of this.

A new channel binding in SCRAM-SHA256 would work exactly the same way
as tls-unique works in SCRAM-SHA1 today.

In my SASL library, the app has to provide the tls-unique channel
binding (either upfront or in a callback) when SCRAM-SHA1 is used.  If
I would implement SCRAM-SHA256, and assuming that document referred
directly to tls-unique-prf, the app would need to supply the
tls-unique-prf data upfront or in a callback when SCRAM-SHA256 is
used.  I don't see any problem with this.  The channel binding type is
hardcoded with the SASL mechanism name.

> (3) is unworkable.

We disagree.

/Simon