Re: [TLS] EAP-in-TLS and channel bindings

Nico Williams <nico@cryptonector.com> Mon, 11 April 2011 18:20 UTC

Return-Path: <nico@cryptonector.com>
X-Original-To: tls@core3.amsl.com
Delivered-To: tls@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A79243A6A09 for <tls@core3.amsl.com>; Mon, 11 Apr 2011 11:20:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.884
X-Spam-Level:
X-Spam-Status: No, score=-1.884 tagged_above=-999 required=5 tests=[AWL=0.093, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HtYYemgZ7dNO for <tls@core3.amsl.com>; Mon, 11 Apr 2011 11:20:21 -0700 (PDT)
Received: from homiemail-a26.g.dreamhost.com (caiajhbdccah.dreamhost.com [208.97.132.207]) by core3.amsl.com (Postfix) with ESMTP id C16AC3A6946 for <tls@ietf.org>; Mon, 11 Apr 2011 11:20:21 -0700 (PDT)
Received: from homiemail-a26.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a26.g.dreamhost.com (Postfix) with ESMTP id 3D5DBB8074 for <tls@ietf.org>; Mon, 11 Apr 2011 11:20:22 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; c=nofws; d=cryptonector.com; h=mime-version :in-reply-to:references:date:message-id:subject:from:to:cc :content-type:content-transfer-encoding; q=dns; s= cryptonector.com; b=jpRyH5YPuylB+mNhHJfzjePN9UmIMYlqA+BYX6NxsQay I0wMFICxsFtWMnExml856qaIqtm/bw7FJHQ8BB+a1z7Qq5Obpv6xZ8f8kvLcuB+G y3v3d+B8EznvyfLGmA28R82nP4cKJ/EfP6p2ty4uwJ4ZOmNE5ppmsmfRUeE5/8g=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=cryptonector.com; h= mime-version:in-reply-to:references:date:message-id:subject:from :to:cc:content-type:content-transfer-encoding; s= cryptonector.com; bh=c12sfiyZ4St1PdDO/s9lc6TLuCM=; b=FX17/27NozI SU3APP5R1QRXmuNMdpMKrCqhhW8JQQoQk43H/3rO3rHHGR6Gg/YXy21BZ6hFm4KA 7Zin/0pGIE6VnK0dHEK8iNvAH5lU+mR7+mm9a4mLI0SVKv7luv8haXecI97mazMq NUsBWMpcHw9FM+p9ZGv2pATXnMexxIxQ=
Received: from mail-vx0-f172.google.com (mail-vx0-f172.google.com [209.85.220.172]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: nico@cryptonector.com) by homiemail-a26.g.dreamhost.com (Postfix) with ESMTPSA id 0880AB805C for <tls@ietf.org>; Mon, 11 Apr 2011 11:20:21 -0700 (PDT)
Received: by vxg33 with SMTP id 33so5402543vxg.31 for <tls@ietf.org>; Mon, 11 Apr 2011 11:20:21 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.52.111.41 with SMTP id if9mr2325184vdb.54.1302546021364; Mon, 11 Apr 2011 11:20:21 -0700 (PDT)
Received: by 10.52.166.42 with HTTP; Mon, 11 Apr 2011 11:20:21 -0700 (PDT)
In-Reply-To: <7D27F068-C1F3-4FB1-A321-4D813A2DD9BD@checkpoint.com>
References: <B870629719727B4BA82A6C06A31C2912323A75403A@hqmailsvr01.voltage.com> <006FEB08D9C6444AB014105C9AEB133F013ABE025DFD@il-ex01.ad.checkpoint.com> <B870629719727B4BA82A6C06A31C2912323A7540B0@hqmailsvr01.voltage.com> <BANLkTimS+7iDsbdm+_BAJh+cZoLcagXpEw@mail.gmail.com> <B870629719727B4BA82A6C06A31C2912323A7540E3@hqmailsvr01.voltage.com> <006FEB08D9C6444AB014105C9AEB133F013ABE025E05@il-ex01.ad.checkpoint.com> <4D9D6DF2.4070801@gnutls.org> <48F16295-4EC7-4C7F-938A-D56D97EB2412@checkpoint.com> <4D9F2DB8.8070506@gnutls.org> <BANLkTi=J94Cas8=UP6b_0w5Gv=_1qdS6_Q@mail.gmail.com> <BANLkTi=cfZyYzz_vo22Kyam0K5WmjhYz8A@mail.gmail.com> <601D84F0-847A-47CC-BA7B-D33D1A183503@checkpoint.com> <BANLkTi=iWPyXeusXXfs4QdL4GXK_uzaFKQ@mail.gmail.com> <7D27F068-C1F3-4FB1-A321-4D813A2DD9BD@checkpoint.com>
Date: Mon, 11 Apr 2011 13:20:21 -0500
Message-ID: <BANLkTimUPYkmO2SuEjf4mF2FBHJi889=Gg@mail.gmail.com>
From: Nico Williams <nico@cryptonector.com>
To: Yoav Nir <ynir@checkpoint.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] EAP-in-TLS and channel bindings
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.9
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/listinfo/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/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, 11 Apr 2011 18:20:22 -0000

On Mon, Apr 11, 2011 at 1:00 PM, Yoav Nir <ynir@checkpoint.com> wrote:
> On Apr 11, 2011, at 7:56 PM, Nico Williams wrote:
>>> There are two attributes that we consider for EAP methods. They can be key-generating (produce an MSK), in which case that MSK can be used for channel binding, and they can be mutually-authenticating, in which case you are safe to use anonymous D-H. If the method is not mutually-authenticating, the client needs to verify the server certificate.
>>
>> Key generation can definitely be used for RFC5056 CB.  EAP
>> Cryptographic Binding can also be used to implement RFC5056 CB.
>>
>> I don't understand the comment about mutual authentication though.
>> Can you expand on that?
>
> It was in response to Nikos' earlier line: "If for example I use anonymous DH and perform mutual authentication of
> peers using EAP and mschapv2, then it is broken."
>
> This is because MS-Chapv2 is vulnerable to dictionary attacks, so it can't be considered mutually-authenticated. If you don't use an ADH ciphersuite, and the client does verify the server certificate, then you don't have this problem.

But this is not enough.  You want to protect the method against the
TLS server as well.  After all you might be federating authentication
(OK, that's probably out of scope for your protocol, but then that's
quite limiting, particularly in comparison to the ABFAB work, so I'd
have to wonder why bother with EAP-in-TLS!  see below), and even if
you're not, you'd still want defense in depth, wouldn't you?

So, for weak methods I think you'd want to use tunneling, with the
tunnel end-point located in some server other than the peer of the TLS
client.

> I intend to use the MSK or a mix of MSK and master secret or extractor to compute a signature similar to the "Finished" message.

What you should sign (MAC) is the tls-unique channel bindings data of
the TLS connection.

> I'm not sure whether this is enough for binding, or whether you also need to mix the key into the session resumption state cache, or actually into the secret used for computing extractors.

It's enough binding, provided both peers send a MAC and check the one
received.  But you'll want to associate the authenticated user name
with the TLS session ID.

What is the story regarding federation?  If there isn't one, then I
really have to ask: why bother with this work?  I'd much rather you
pursue draft-williams-tls-sasl-opt + the ABFAB WG GSS-EAP mechanism.
That way you'd get: a) EAP (which is what you want), b) in/over TLS
(also what you want), c) with CB (which you should want), d) plus
federation (which others are bound to want, even if you don't), e)
much more of the crypto worked out for you already (in ABFAB), f) a
fair bit of source code (since much of the Project Moonshot stuff is
open source).  That's a lot of benefits, meriting at least serious
consideration.

(Note also that there's a further one round-trip optimization to make
for draft-williams-tls-sasl-opt by making an optimistic SASL/GS2
mechanism selection and using MIC tokens, one of them PROT_READY, to
do the CB.  If some of those terms mean nothing to you, don't worry --
they are GSS-API specific, and we can go into them later if you choose
to investigate this approach in depth.)

Nico
-- 

Nico
--