Re: [apps-discuss] [websec] [kitten] [saag] HTTP authentication: the next generation

Nathan <nathan@webr3.org> Sun, 19 December 2010 14:12 UTC

Return-Path: <nathan@webr3.org>
X-Original-To: apps-discuss@core3.amsl.com
Delivered-To: apps-discuss@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0BAB13A6452 for <apps-discuss@core3.amsl.com>; Sun, 19 Dec 2010 06:12:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.17
X-Spam-Level:
X-Spam-Status: No, score=-3.17 tagged_above=-999 required=5 tests=[AWL=-0.571, BAYES_00=-2.599]
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 VElUis9n-sHb for <apps-discuss@core3.amsl.com>; Sun, 19 Dec 2010 06:12:02 -0800 (PST)
Received: from p3plsmtpa01-10.prod.phx3.secureserver.net (p3plsmtpa01-10.prod.phx3.secureserver.net [72.167.82.90]) by core3.amsl.com (Postfix) with SMTP id 83D9A3A6405 for <apps-discuss@ietf.org>; Sun, 19 Dec 2010 06:12:02 -0800 (PST)
Received: (qmail 8465 invoked from network); 19 Dec 2010 13:47:14 -0000
Received: from unknown (86.156.126.71) by p3plsmtpa01-10.prod.phx3.secureserver.net (72.167.82.90) with ESMTP; 19 Dec 2010 13:47:13 -0000
Message-ID: <4D0E0CDA.6030605@webr3.org>
Date: Sun, 19 Dec 2010 13:47:06 +0000
From: Nathan <nathan@webr3.org>
Organization: webr3
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
To: Adrien de Croy <adrien@qbik.com>
References: <4D02AF81.6000907@stpeter.im> <p06240809c928635499e8@10.20.30.150> <ADDEC353-8DE6-408C-BC75-A50B795E2F6C@checkpoint.com> <78BD0B98-0F20-478B-85F1-DBB45691EB0D@padl.com> <4D0479E3.4050508@gmail.com> <4D04D7D6.4090105@isode.com> <A23730A9-728B-4533-96D7-0B62496CC98A@checkpoint.com> <4D051731.1020400@isode.com> <4D054041.7010203@cisco.com> <0435D11C-DF55-464D-B23F-F5D114DEE2C3@checkpoint.com> <2229.1292235952.971571@puncture> <4D05FB8F.3070804@qbik.com> <2229.1292239384.281779@puncture> <96517E19-5DC7-47A0-8C21-C710F6F8F772@tzi.org> <2229.1292253372.639419@puncture> <AANLkTi=iGWnBtOgPhN9tRtaJTxQhvRkjq3p0UCkRdT8=@mail.gmail.com> <4D0DE882.50201@qbik.com>
In-Reply-To: <4D0DE882.50201@qbik.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Mailman-Approved-At: Sun, 19 Dec 2010 08:25:39 -0800
Cc: General discussion of application-layer protocols <apps-discuss@ietf.org>, websec <websec@ietf.org>, foaf-protocols <foaf-protocols@lists.foaf-project.org>, Common Authentication Technologies - Next Generation <kitten@ietf.org>, "http-auth@ietf.org" <http-auth@ietf.org>, "saag@ietf.org" <saag@ietf.org>, Phillip Hallam-Baker <hallam@gmail.com>, Story Henry <henry.story@bblfish.net>, "ietf-http-wg@w3.org Group" <ietf-http-wg@w3.org>
Subject: Re: [apps-discuss] [websec] [kitten] [saag] HTTP authentication: the next generation
X-BeenThere: apps-discuss@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: nathan@webr3.org
List-Id: General discussion of application-layer protocols <apps-discuss.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/apps-discuss>
List-Post: <mailto:apps-discuss@ietf.org>
List-Help: <mailto:apps-discuss-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 19 Dec 2010 14:12:04 -0000

Hi Adrien, All,

What you describe sounds very much like WebID Protocol (formerly 
FOAF+SSL) - there's an incubator group just starting at the W3C [1] 
although the protocol [2] has been under development for some time.

Essentially it leverages X509 certificates on the client side, which 
contains an identifier (in the form of a URI) which can then be 
dereferenced to machine readable data (containing the public key from 
the x509 and any other data the entity wishes to expose), it serves as 
decentralized stateless authentication / identification, compatible with 
and built on the deployed stack of internet technologies, and further 
enables all kinds of trust & reputation hooks.

cc'd: Henry Story, foaf-protocols

[1] http://bblfish.net/tmp/2010/12/15/webid-charter-draft.html
[2] http://getwebid.org/spec/drafts/ED-webid-20100809/index.html

Best,

Nathan

Adrien de Croy wrote:
> I think we need to go a bit further and consider the issue of trust.
> 
> one problem with delegating account-holding back to a domain under the control 
> of the account-holder, is you have no trust.  I could be hacker@hackyou.com or 
> spammer@spamyou.com.  I can set up whatever account I like.  Websites have no 
> information about whether I'm trustworthy or not, and have to build up their own 
> individual profile of me.
> 
> To be really useful, the account-holding must be with a trusted independent 
> organisation able to be relied on by other websites. 
> 
> The organisation then has the opportunity to add value by
> 
> a) verifying the true identity of the account holder
> b) maintaining reputation information about the account holder
> c) revoking abusive accounts.
> 
> Ends up looking a lot like X.509 certificate infrastructure.  Imagine if 
> everyone needed a client certificate to send any mail.  We'd have no spam.
> 
> Of course these sorts of concepts are completely unpalatable to many people on 
> account of privacy issues. Some of these activities are the sort of things that 
> governments should really be doing (and already are in many cases).
> 
> Solving this problem has implications for all internet use, not just HTTP.
> 
> Regards
> 
> Adrien
> 
> On 19/12/2010 5:48 a.m., Phillip Hallam-Baker wrote:
>> I think that we need to distinguish between an authentication mechanism and an 
>> authentication infrastructure.
>>
>> Part of the problem with HTTP authentication is that it was quickly superseded 
>> by HTML based authentication mechanisms. And these in turn suffer from the 
>> problem that password authentication fails when people share their passwords 
>> across sites, which of course they have no choice but to do when every stupid 
>> web site requires them to create yet another stupid account. 
>>
>> Since Digest Authentication became an RFC, I don't think there has ever been 
>> more than about 6 weeks elapsed without someone suggesting to me that we 
>> include SHA1 or SHA2 as a digest algorithm. Which is of course pointless when 
>> the major flaw in the authentication infrastructure is the lack of an 
>> authentication infrastructure. The original reason for designing Digest the 
>> way that I did was that public key cryptography was encumbered. Had public key 
>> cryptography been available, I would have used it.
>>
>> By authentication infrastructure, I mean an infrastructure that allows the 
>> user to employ the same credentials at multiple sites with minimal or no user 
>> interaction. I do not mean a framework that allows for the use of 20 different 
>> protocols for verifying a username and password.
>>
>>
>> We do have almost as many proposals for federated authentication as 
>> authentication schemes of course. But each time there seems to be an obsession 
>> with things that technocrats obsess about and at best contempt for the actual 
>> user.
>>
>> OpenID almost succeeded. But why on earth did we have to adopt URIs as the 
>> means of representing a user account? And why was it necessary to design a 
>> spec around the notion that what mattered most in the design of the spec was 
>> the ability to hack together an account manager using obsolete versions of 
>> common scripting languages?
>>
>> Another feature of that debate I cannot understand is why we had to start 
>> talking about 'identity' as if it was some new and somehow profound problem 
>> that had only just been discovered.
>>
>>
>> There is of course a standard for representing federated user accounts that 
>> has already emerged on the net. And once that is realized, the technical 
>> requirements of a solution become rather obvious.
>>
>> As Web sites discover that their account holders cannot remember their 
>> username, most have adopted email addresses as account identifiers. That is 
>> what we should use as the basis for federated web authentication. 
>>
>>
>> So if the user account identifier looks like username@example.com 
>> <mailto:username@example.com>, how does an entity verify that a purported user 
>> has a valid claim to that account?
>>
>> The obvious mechanism in my view is to use DNS based discovery of an 
>> authentication service. For example, we might use the ESRV scheme I have been 
>> working on:
>>
>> _auth._ws.example.com <http://ws.example.com>  ESRV 0 prot "_saml._ws"
>> _auth._ws.example.com <http://ws.example.com>  ESRV 0 prot "_xcat._ws"
>>
>> Which declares that the SAML and 'XCAT' (presumably kitten in XML) protocols 
>> may be used to resolve authentication requests.
>>
>>
>> One major advantage of this approach is that it makes it easy for sites to 
>> move to using the new federated auth scheme. Most sites already store an email 
>> address that is used to validate the account. 
>>
>>
>> The actual mechanism by which the authentication claim is verified is not very 
>> interesting, nor does it particularly need to be standardized. What does 
>> require standardization is the ability to embed the protocol in 'the Web' in a 
>> fluent and secure manner.
>>
>> Here is how I suggest this be achieved:
>>
>> 1) HTTP header
>>
>> The Web browser attaches an offer of authentication by means  of an account 
>> attached to a specific domain to (potentially) every request:
>>
>> Auth-N: domain=example.com <http://example.com>
>>
>> If the server does not support Auth-N, the header will simply be ignored. 
>> Otherwise  the server can ask for automated authentication.
>>
>>
>> 2) HTTP Response
>>
>> If the server decides to use the authentication mechanism, it responds with 
>> information that tells the client what level of authentication is required. 
>> For example, a bank might require a 2 factor scheme. There is going to be at a 
>> minimum a nonce.
>>
>> Auth-N: snonce=<128bits>
>>
>>
>>
>> 3) HTTP Request
>>
>> It should be possible for the client to prove that it has ownership of the 
>> authentication token corresponding to the account. 
>>
>> It is not necessarily the case that the account owner wants to reveal to the 
>> site all their information. For example, it may not even want the site to know 
>> the account name. This is all fairly easy to set up using symmetric techniques.
>>
>> Auth-N: domain=example.com <http://example.com>; blindedaccount=<> 
>> snonce=<128bits>; cnonce=<128bits>
>>
>>
>> One feature that the OpenID work has highlighted the need for is some form of 
>> user directed account manager. If the user is going to be in control of this 
>> process, they need to be able to specify what information is made available to 
>> specific sites.
>>
>>
>> Conclusion:
>>
>> I think that what we require here is not yet another authentication framework 
>> or protocol. What we need is the glue to bind it into an infrastructure that 
>> makes it useful.
>>
>> The most important design decision is to make use of RFC822 email address 
>> format as the format for federated authentication accounts. 
>>
>> Once that decision is made, the rest will simply fall out of stating the 
>> requirements precisely. 
>>
>> The risk here is that yet again we end up redo-ing the parts that we know how 
>> to build rather than focus on the real problem which is fitting them together. 
>>
>> Above all, the user has to be the first priority in any design. 
> 
> -- 
> Adrien de Croy - WinGate Proxy Server - http://www.wingate.com
>