Re: [http-auth] Doing it the TLS mutual way...

Nico Williams <nico@cryptonector.com> Wed, 15 June 2011 19:54 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 B706D11E817C for <http-auth@ietfa.amsl.com>; Wed, 15 Jun 2011 12:54:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.974
X-Spam-Level:
X-Spam-Status: No, score=-2.974 tagged_above=-999 required=5 tests=[AWL=-0.997, 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 Vpzn6Kbs6Zqv for <http-auth@ietfa.amsl.com>; Wed, 15 Jun 2011 12:54:08 -0700 (PDT)
Received: from homiemail-a16.g.dreamhost.com (caiajhbdcahe.dreamhost.com [208.97.132.74]) by ietfa.amsl.com (Postfix) with ESMTP id 27A8611E8146 for <http-auth@ietf.org>; Wed, 15 Jun 2011 12:54:08 -0700 (PDT)
Received: from homiemail-a16.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a16.g.dreamhost.com (Postfix) with ESMTP id 2D5A550807D for <http-auth@ietf.org>; Wed, 15 Jun 2011 12:54:04 -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=CogpUNCTCOZzUTzsR9wVp jrBo03UO7H1zwobF9MoiX0qHZwTxhAydjgron6Xa9C9ckh3rCRXy3NZbm/oXVTni EyS7OYPSvJcV0emj21tV1562XIKgMJQn9hbOzIFn2sj2siMdoZSzWDpQ3Stm4j9N qrG33URam9lf3AqHbzv5FI=
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=wQqm/Q1gt5vYrHfXuh6B FXCpLBY=; b=hAKa9JfsAR6ka26riywOU1vFAsN19OlwDilXfjYnqaEtKKFW6OBA vHp3xKjuWD3eJyclZUgYDj8byCbeu+4Gyeff6PW6gnznuJ2ESFAbObU0zK48JklS 7ub71ojSDEjsjX/GYxK5N/DosU5mKB4PExEx5lJmnX9WCN/lyPAU1Mc=
Received: from mail-gy0-f172.google.com (mail-gy0-f172.google.com [209.85.160.172]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: nico@cryptonector.com) by homiemail-a16.g.dreamhost.com (Postfix) with ESMTPSA id 702BE508084 for <http-auth@ietf.org>; Wed, 15 Jun 2011 12:53:25 -0700 (PDT)
Received: by gyf3 with SMTP id 3so31947gyf.31 for <http-auth@ietf.org>; Wed, 15 Jun 2011 12:53:24 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.91.163.31 with SMTP id q31mr75579ago.108.1308167604789; Wed, 15 Jun 2011 12:53:24 -0700 (PDT)
Received: by 10.90.95.17 with HTTP; Wed, 15 Jun 2011 12:53:24 -0700 (PDT)
In-Reply-To: <4DF7D71B.2070004@cs.tcd.ie>
References: <4DF7D71B.2070004@cs.tcd.ie>
Date: Wed, 15 Jun 2011 14:53:24 -0500
Message-ID: <BANLkTinpwwYYfrDaWBp+_atZGRDBRe7rtg@mail.gmail.com>
From: Nico Williams <nico@cryptonector.com>
To: Stephen Farrell <stephen.farrell@cs.tcd.ie>
Content-Type: text/plain; charset="UTF-8"
Cc: "http-auth@ietf.org" <http-auth@ietf.org>
Subject: Re: [http-auth] Doing it the TLS mutual way...
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: Wed, 15 Jun 2011 19:54:08 -0000

On Tue, Jun 14, 2011 at 4:48 PM, Stephen Farrell
<stephen.farrell@cs.tcd.ie> wrote:
> As it says below, Russ pointed out that this is quite like
> what the enroll WG tried to do a while back, so I'm clearly
> not suggesting something novel here either.

Something not too unlike this was presented at the W3C IDBROWSER
workshop, and several people have suggested something along these
lines at various times (including at that workshop, where even I
mentioned something of the sort as a possible alternative to my
proposal).


> The Problem
> -----------
>
> - TLS mutual authentication is too hard to deploy on the public
> Internet.

PKI doesn't gives us strong mutual authentication.  Or even strong
authentication at all in a PKI with too many root CAs and too many
principals to really validate them all.  Thus you're not actually
proposing a user cert PKI.

In other words, this doesn't get us mutual authentication because the
servers will continue to be authenticated as weakly as they are today.

This could be addressed by having services whose job is to whitelist
other services.  For example, suppose I'm shopping: I could use a user
cert from a shopping federation and my browser could be smart enough
to go ask that federation if any given server I'm visiting has the
right cert.  This would be more than a remote cert validation service.
 It's at least a remote server cert pinning service, but better than
that, it can be a remote whitelist.  This would allow us to get strong
mutual authentication from TLS.

(Yes, the TLS server cert PKI sticks in my craw.)

> - Password based authentication schemes leave server side
> databases vulnerable.

But they could be pass-through schemes such that the RP doesn't have
to have access to it, thus you minimize the attack surface.  This is
the sort of thing that ABFAB WG is working on.  (I'm assuming you
meant things like DIGEST-MD5 here.)

> - EKE/PAKE schemes may help but may require the verifier to store
> a database of values that are dictionary attackable and these
> schemes do require a password to be sent to the server at least at
> account creation and reset time.

The above comment applies to this as well.

> The Approach
> ------------

Options for getting the user certs issued/enrolled would include:

 - a certification protocol for enrollment and/or remote access to
user certs (basically issue a new, short-lived cert when the user
authenticates to the "IdP");
 - a cert registration protocol for registering self-signed certs as
RP-only user certs.

SACRED could be another option for remote access to credentials.

And yet I don't like this approach, nor any of the possible variants.

I much prefer doing authentication at a higher layer, with channel
binding to TLS -- this would require zero changes to TLS (particularly
when using tls-server-end-point as the channel binding type) and HTTP
(at most one might need a new HTTP error code).  Application-layer
authentication could even be implemented, on the server-side, as CGI
programs to get massive adoption to be trivial (no need to upgrade
existing code, just install new code).  Whereas schemes based on TLS
user certs seem to require at least somewhat invasive changes to TLS
and HTTP.

Still, I'd live with this approach IF we also did something to improve
authentication of the service to the user.  So far no one who proposes
TLS user cert approaches proposes any way to strengthen server
authentication, and that has me quite concerned: this may be the only
chance we get for many years to improve authentication of the servers
to the users -- let's not blow it!

Nico
--