Re: [certid] URI match

Bruno Harbulot <Bruno.Harbulot@manchester.ac.uk> Tue, 23 March 2010 15:11 UTC

Return-Path: <Bruno.Harbulot@manchester.ac.uk>
X-Original-To: certid@core3.amsl.com
Delivered-To: certid@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E11F93A68C2 for <certid@core3.amsl.com>; Tue, 23 Mar 2010 08:11:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.069
X-Spam-Level:
X-Spam-Status: No, score=-1.069 tagged_above=-999 required=5 tests=[BAYES_50=0.001, DNS_FROM_OPENWHOIS=1.13, J_CHICKENPOX_43=0.6, J_CHICKENPOX_45=0.6, J_CHICKENPOX_46=0.6, RCVD_IN_DNSWL_MED=-4]
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 W4R3VfXVOD-u for <certid@core3.amsl.com>; Tue, 23 Mar 2010 08:11:36 -0700 (PDT)
Received: from clarity.mcc.ac.uk (clarity.mcc.ac.uk [130.88.200.144]) by core3.amsl.com (Postfix) with ESMTP id 61B043A68D0 for <certid@ietf.org>; Tue, 23 Mar 2010 08:11:26 -0700 (PDT)
Received: from kelvin.its.manchester.ac.uk ([130.88.25.195]) by clarity.mcc.ac.uk with esmtps (TLSv1:AES256-SHA:256) (Exim 4.69 (FreeBSD)) (envelope-from <Bruno.Harbulot@manchester.ac.uk>) id 1Nu5lf-000KXL-Gv; Tue, 23 Mar 2010 15:11:43 +0000
Received: from pulsar.rcs.manchester.ac.uk ([130.88.1.47]:43214 helo=mymachine) by kelvin.its.manchester.ac.uk with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from <Bruno.Harbulot@manchester.ac.uk>) id 1Nu5lf-0000kD-DL; Tue, 23 Mar 2010 15:11:43 +0000
Message-ID: <4BA8DA2E.6030405@manchester.ac.uk>
Date: Tue, 23 Mar 2010 15:11:42 +0000
From: Bruno Harbulot <Bruno.Harbulot@manchester.ac.uk>
User-Agent: Thunderbird 2.0.0.24 (X11/20100317)
MIME-Version: 1.0
To: Ludwig Nussel <ludwig.nussel@suse.de>
References: <201003231500.05187.ludwig.nussel@suse.de>
In-Reply-To: <201003231500.05187.ludwig.nussel@suse.de>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Authenticated-Sender: Bruno Harbulot from pulsar.rcs.manchester.ac.uk (mymachine) [130.88.1.47]:43214
X-Authenticated-From: Bruno.Harbulot@manchester.ac.uk
X-UoM: Scanned by the University Mail System. See http://www.itservices.manchester.ac.uk/email/filtering/information/ for details.
Cc: certid@ietf.org
Subject: Re: [certid] URI match
X-BeenThere: certid@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Representation and verification of identity in certificates <certid.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/certid>
List-Post: <mailto:certid@ietf.org>
List-Help: <mailto:certid-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 23 Mar 2010 15:11:38 -0000

Hi Ludwig,

We've been using URIs in subjectAltName in FOAF+SSL 
<http://esw.w3.org/Foaf%2Bssl> (currently only for client-certificate 
authentication).

FOAF+SSL is an authentication mechanism that provides global 
identifiers, typically the URI of a Person using semantic web technology 
(we call such a URI a 'WebID').
One of the objectives is to rely on social networks to make 
authentication and authorisation decisions. In principle, you can have 
both hierarchical and decentralised models to assert and verify the 
identity of an agent.

Just to give a bit of background, this relies on FOAF [1] 
(Friend-of-a-Friend), which is an RDF vocabulary to describe people, 
organisations and relations between them.
For example, my WebID is <http://www.harbulot.com/foaf/bruno#me>. If you 
get this document, you'll get a description saying that:
    <http://www.harbulot.com/foaf/bruno#me> is a foaf:Person
and some semantic description that binds a public key to it.
RDF allows you to build graphs made of statements like this, which can 
then be processed and reasoned about by a machine.

FOAF can be used to write statements like "someone knows someone" and 
"someone belongs to this organisation", for example. This allows for 
modelling peer-to-peer models of trusts as well as more hierarchical ones.


What we do is embedding the WebID in an X.509 certificate (which may or 
may not be self-signed) and replace the trust model on the server side, 
not to use PKIX.

When the client connects to the server, the server knows that the client 
has the private key for the certificate's public key (via the TLS 
handshake), irrespectively of whether the certificate is trusted or not.

Then, the server needs to check how it trusts this certificate to 
perform the authentication.
In its simplest form, we do an HTTP GET on the URI itself to get the 
FOAF document at that WebID. In turns, this document contains a graph 
that links the WebID to a public key: we verify that this matches the 
public key in the certificate. This level of assurance relies on the 
control over the hosting of this URI (and this is sufficient for a 
number of applications).
Alternatively, we've been working on signing parts of such graphs, or 
how to get better level of assurances by getting these graphs from 
better trusted sources.

This allows for the discovery of information related to an identifier, 
via the (semantic) web, as well as the decoupling of identifier and 
assertions made about an identifier.


While this is mainly targeted at client certificates, the WebID is in 
principle that of a foaf:Agent ("An agent (eg. person, group, software 
or physical artifact)." [2]), foaf:Person being a specialisation of 
foaf:Agent, so this might be usable for server certificates one day 
(although there's a bootstrapping issue then).
We still rely on traditional PKI and HTTPS hostname matching for the 
verification of the server's identity.



More generally, URIs have the advantage that they're universal 
identifiers, not just URLs. A URI identifies something, which may or may 
not resolve when you point a browser at it. On that basis, URIs in a 
cert could identify the signer (whatever that is), although verifying 
how you tie that thing to this identity would certainly fall outside the 
scope of this I-D if you can't get that URI.
If there's a service behind that URI, it would seem appropriate to use 
that (again, probably more useful for some message-level security, 
rather than TLS).
In principle the server (machine or daemon) itself could have access to 
the private key, but it's then a matter of making explicit what entity 
or sub-entity is referred to. That's the same problem as mentioned by 
Paul Hoffman in the previous thread; you could just dig further than the 
daemon and refer to what's specifically behind that URI I guess (e.g. a 
specific webapp):
> A public key listed in a certificate is associated with *something*
> that has access to the associated private key. The machine has access
> to that private key, as does the server application/daemon. If you
> want to make this distinction, you need to do so much more clearly in
> the draft.


Best wishes,

Bruno.


[1] http://www.foaf-project.org/
[2] http://xmlns.com/foaf/spec/#term_Agent

Ludwig Nussel wrote:
> Hi,
> 
> What's the purpose of URIs in subjAltnames? Are they meant for
> things like "https://example.com/"?
> 
> If so, does "telnet://example.com/" match "https://example.com/"? I
> guess not as the URI schemes are different. The exact matching rules
> for URIs are not defined in the I-D though.
> 
> The I-D allows multiple different types in subjAltnames so I guess
> it's legal to have subjAltnames of type dNSName and
> uniformResourceIdentifier in the same certificate. So a subjAltname
> 'URI:telnet://example.com/, DNS:example.com' would be valid. Assume
> the user wants to connect to a server with that subjAltname and
> enters 'https://example.com/' in the browser. Should that succeed?
> Again I guess the URI doesn't match. However, when mapping the URI
> to the host part only the dNSName would match and the connection
> succeeds. Also, clients that don't support URIs in subjAltnames (as
> almost all software out there) would ignore the URI and match
> dNSName only.
> 
> So, without defining further constraints an URI in subjAltnames is
> rather useless, isn't it?
> 
> cu
> Ludwig
>