Re: [http-auth] Tunisian/Syrian phishing attacks

Nico Williams <nico@cryptonector.com> Sat, 11 June 2011 22:42 UTC

Return-Path: <nico@cryptonector.com>
X-Original-To: http-auth@ietfa.amsl.com
Delivered-To: http-auth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8A5FE11E80CD for <http-auth@ietfa.amsl.com>; Sat, 11 Jun 2011 15:42:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.31
X-Spam-Level:
X-Spam-Status: No, score=-3.31 tagged_above=-999 required=5 tests=[AWL=-1.333, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id a-dBcdyZHJHR for <http-auth@ietfa.amsl.com>; Sat, 11 Jun 2011 15:42:06 -0700 (PDT)
Received: from homiemail-a25.g.dreamhost.com (caiajhbdcaib.dreamhost.com [208.97.132.81]) by ietfa.amsl.com (Postfix) with ESMTP id BBF4311E80CB for <http-auth@ietf.org>; Sat, 11 Jun 2011 15:42:06 -0700 (PDT)
Received: from homiemail-a25.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a25.g.dreamhost.com (Postfix) with ESMTP id 6518D678062 for <http-auth@ietf.org>; Sat, 11 Jun 2011 15:42:06 -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; q=dns; s=cryptonector.com; b=fZgBOsiMPs8o5POTWRreE 8Psi8jj25wcyif98G5iE16dcXGiCL78tCxz/BcYw3ZyBpwWcf+XlLPfx5pNw+haC eeD4O3BTDlS98RykNeLQa7+rODG7UuyVlZy6CtQgw6VISC6sUVa8jk84jJli5BQu u5yQnYKJpWfIvDtXsx5w1k=
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; s=cryptonector.com; bh=Xyrn9KDZ2GKp1EhGLyTI 99FmCPM=; b=COYcU3zA5VrxUXZ53l81nwjcQ8b8aby2TV20rQ1NRIeVVS/nEZwn MnM50wbmFAM2uQBIGnuDUV+u7XLVklTPReob7abn45JKGo18HNgqYWaQHcoL/J4j lO85ot8PTmZzH6+tuEeWHKQBu0eMtPub6nPoVFwhLHyk+Q1z33OZhx8=
Received: from mail-pv0-f172.google.com (mail-pv0-f172.google.com [74.125.83.172]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: nico@cryptonector.com) by homiemail-a25.g.dreamhost.com (Postfix) with ESMTPSA id 452B1678056 for <http-auth@ietf.org>; Sat, 11 Jun 2011 15:42:06 -0700 (PDT)
Received: by pvh18 with SMTP id 18so1836053pvh.31 for <http-auth@ietf.org>; Sat, 11 Jun 2011 15:42:05 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.68.17.7 with SMTP id k7mr1559676pbd.322.1307832125607; Sat, 11 Jun 2011 15:42:05 -0700 (PDT)
Received: by 10.68.50.39 with HTTP; Sat, 11 Jun 2011 15:42:05 -0700 (PDT)
In-Reply-To: <4DF384FD.10804@gmx.com>
References: <mailman.214.1307403028.3017.http-auth@ietf.org> <4DF384FD.10804@gmx.com>
Date: Sat, 11 Jun 2011 17:42:05 -0500
Message-ID: <BANLkTin3Me6DxH+nG8LX8wKTiA735tiwjQ@mail.gmail.com>
From: Nico Williams <nico@cryptonector.com>
To: Yaron Sheffer <yaronf@gmx.com>
Content-Type: text/plain; charset="UTF-8"
Cc: http-auth@ietf.org
Subject: Re: [http-auth] Tunisian/Syrian phishing attacks
X-BeenThere: http-auth@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: HTTP authentication methods <http-auth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/http-auth>, <mailto:http-auth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/http-auth>
List-Post: <mailto:http-auth@ietf.org>
List-Help: <mailto:http-auth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/http-auth>, <mailto:http-auth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 11 Jun 2011 22:42:07 -0000

On Sat, Jun 11, 2011 at 10:08 AM, Yaron Sheffer <yaronf@gmx.com> wrote:
> Let's assume the following:
> 1. Users are authenticated to Facebook with a password, using a
> zero-knowledge password protocol (ZKPP), with authentication at the TLS or
> the HTTP layer.

So, mutual authentication.  The specific mechanism doesn't matter, as
long as it gives us mutual authentication in a way such that it
doesn't suffer from the problems that the TLS server PKI does when it
comes to authenticating the service.

> 2. In any case, authentication is crypto-bound into the TLS-protected
> session (OK, let's assume Facebook sessions are TLS-protected...).

So, channel binding.  (Because we're not going to throw away our
investment in TLS for transport protection, but we need to make sure
there's no MITM there.)

> 3. Passwords are stored in the browser's password manager. The browser
> doesn't "paste" the password into a form; rather, the browser only releases
> the password when going through the ZKPP. This is done behind the scenes,
> the user doesn't get to see the plaintext password or even a row of
> asterisks.

Browser chrome, a TCB.  What does "releases" here mean?  Does it give
the password plaintext to an untrusted script that implements the
ZKPP?

> 4. This is further hardened with an HSTS-like mechanism: only use this site
> if you can perform mutual authentication with it.

Indeed!

> 5. Also, users are trained *not* to enter their passwords explicitly, and
> will be suspicious when the see a "please enter your password" page.

Right: death to echo-off text input elements in HTML!

> I suggest that this combination is well protected against phishing attacks,
> without having to rely on trusted JavaScript code or on fancy user interface
> elements.

This (mutual auth + channel binding) is pretty much what some of us
proposed at the W3C IDBROWSER workshop three weeks ago.  (Instead of a
ZKPP I propose we allow multiple different mechanisms, because there
are different mechanisms that people will want to use depending on the
context; Kerberos in the enterprise, GSS-EAP in the .edu cases and
many others, etcetera.)

But here's the gotcha: this can't be implemented in a script served by
the site, because there's no way to know what the script intends to do
with the password, and we haven't really authenticated the site yet,
and if you think the TLS server PKI is enough, then why ask for mutual
auth here?  We could add a script signing PKI, but chances are it'd
end up with the same faults as the TLS server PKI (namely: the CAs
don't have any responsibility to the RPs, the public at large).

This wouldn't eliminate all phishing attacks, but it would eliminate
the kinds of phishing attacks that involve theft of credential by
impersonating a service that a user wants to login to.  Well, assuming
the phisher can't trick the user into typing the password into an
echo-off (or simulated echo-off) prompt, which is why browser chrome
and things like SAS (secure attention sequence) matter, but still ,
we'd be making significant progress.

Nico
--