<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">FOAF+SSL: RESTful Authentication for the Social Web</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Henry</forename><surname>Story</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Sun Microsystems</orgName>
							</affiliation>
						</author>
						<author role="corresp">
							<persName><forename type="first">Bruno</forename><surname>Harbulot</surname></persName>
							<email>bruno.harbulot@manchester.ac.uk</email>
							<affiliation key="aff1">
								<orgName type="institution">The University of Manchester</orgName>
								<address>
									<country key="GB">UK</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Ian</forename><surname>Jacobi</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Mike</forename><surname>Jones</surname></persName>
							<affiliation key="aff1">
								<orgName type="institution">The University of Manchester</orgName>
								<address>
									<country key="GB">UK</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">FOAF+SSL: RESTful Authentication for the Social Web</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">FF7A5FADAC00AECC28A8EE3D6BADE344</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T09:52+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>We describe a simple protocol for RESTful authentication, using widely deployed technologies such as HTTP, SSL/TLS and Semantic Web vocabularies. This protocol can be used for one-click sign-on to web sites using existing browsers -requiring the user to enter neither an identifier nor a password. Upon this, distributed, open yet secure social networks and applications can be built. After summarizing each of these technologies and how they come together in FOAF+SSL, 4 we describe declaratively the reasoning of a server in its authentication decision. Finally, we compare this protocol to others in the same space.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>Many services that require authentication rely on centralized systems. The identity of the user is constrained to that administrative domain, forcing her to have a different account and identifier for each organization she interacts with. This inability to relate identities easily across domains also makes the creation of links between people in distinct organizations difficult.</p><p>Every time a person needs authenticated access to a new organization, a new registration needs to be made; this is a burden for both the user and the organization. The process of registration is either (a) minimal -for example, email address confirmation -, or (b) more formal -for example, in a workplace, where an administrator has to create an account after making verifications outof-band. Process (a) is lightweight, but will often provide insufficient information, whereas process (b) may initially be able to give more information about a user, at the expense of a costly verification phase during the registration.</p><p>Attempts to decentralize this process have been made. Shibboleth, 5 for example, aims at sharing accounts across administrative boundaries; however, it relies on a rigid federation process between organizations. OpenID, enables authenticating a user against a URI, but does not build a social web on that.</p><p>Neither Shibboleth nor OpenID fully comply with web architecture principles (see Section 2.1 on REST), which in part explains their limitations.</p><p>This paper describes a novel approach that relies on combining the use of SSL client certificates and Semantic-Web-based FOAF networks. The result is a secure, open and distributed authentication mechanism, which is able to satisfy simple requirements -such as authenticating a user by URI, like OpenID, but without the user needing to remember this URI -as well as more complex requirements, where the authorization to a service depends on distributed properties of the user, such as his position in a social network. This proposal is built on a RESTful architecture, the same that underpins the largest and most successful network of distributed linked information, the Web.</p><p>Section 2 introduces the background technologies of the Semantic Web and FOAF, as well as cryptography and client-certificate authentication. Section 3 presents the FOAF+SSL protocol. Section 4 compares this approach to others.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Background</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">The RESTful Web Architecture</head><p>Representational State Transfer (REST) <ref type="bibr" target="#b0">[1,</ref><ref type="bibr">Chap. 5</ref>] is an architectural style for building large-scale distributed information networks, the most famous of these being the World Wide Web <ref type="bibr" target="#b1">[2]</ref>. To build such a network requires that each of the parts be able to grow independently of any of the others, with very little central coordination, and that each of the resources thus created be able to refer easily to any of the others. The logical building blocks for this are the following:</p><p>1. The specification of universal names, also known as Universal Resource Identifiers (URIs) -such as the familiar Universal Resource Locators (URLs). 2. The mapping of URIs to Resources, also known as the reference relation. 3. Canonical methods for manipulating the resources mapped by each URI, via representations of the resource. Such a protocol specifies a canonical dereferencing mechanism, enabling a holder of a URI to find and manipulate the resource referred to by that URI. http://... URLs use the HTTP protocol as their dereferencing mechanism, for example. By sending a GET request to the object at a given HTTP URL, a representation of the resource is returned. A resource can be created, changed, and deleted using the POST, PUT, and DELETE methods respectively.</p><p>REST specifies the architectural style required to build such a protocol with the aim of maximum networkability; that is, any representation should be able to link to any resource from anywhere, using the URI alone to do so.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">The Semantic Web</head><p>Whereas URLs in the initial web of hyperlinked documents referred only to documents, the Semantic Web specifies how to extend this to enable a web of resources. In the Semantic Web, it becomes possible for URLs to refer to anything, be it:</p><p>1. physical things -for example, &lt;https://romeo.example/#i&gt; may refer to a human named Romeo; 2. relations between two individuals -for example, the relation of knowing someone which &lt;http://xmlns.com/foaf/0.1/knows&gt; refers to; or 3. classes -for example, people may be described as being instances of &lt;http://xmlns.com/foaf/0.1/Person&gt;, the set of persons.</p><p>The meaning of these URLs can be found by dereferencing them using their canonical protocol. Thus, doing an HTTP GET on &lt;http://xmlns.com/foaf/0.1/knows&gt; should return a representation describing it. Since HTTP is built to allow content negotiation, well configured web servers will return the representation best fitting the client's needs. Entering the above URL in a web browser will return a human readable HTML page describing the 'knows' relation. A Semantic Web agent could ask for the standard machine-friendly RDF representation.</p><p>A Semantic Web document is a serialization of a graph of directed relations between objects. Each relation exists as a triple of &lt;subject&gt; &lt;relation&gt; &lt;object&gt;, where each of subject, relation and object can be chosen among any of the URIs or string literals. Since it is tedious to read and write such URLs, this article uses the N3<ref type="foot" target="#foot_1">6</ref> @prefix notation. The following prefixes will be used throughout this article: @prefix log: &lt;http://www.w3.org/2000/10/swap/log#&gt; . @prefix dc: &lt;http://purl.org/dc/elements/1.1/&gt; . @prefix cert: &lt;http://www.w3.org/ns/auth/cert#&gt; . @prefix rsa: &lt;http://www.w3.org/ns/auth/rsa#&gt; @prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; . @prefix rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; . @prefix owl: &lt;http://www.w3.org/2002/07/owl#&gt; . @prefix romeo: &lt;https://romeo.example/#&gt; . #see RFC2606 on .example domains @prefix jult: &lt;https://juliet.example/#&gt; . @prefix : &lt;&gt; . # special vocabulary defined for this paper Thus, to say "Romeo is a person", one can write: romeo:i a foaf:Person.. Since each of the resources in that sentence is named by a URL, one can GET further information about each by dereferencing it, and if that representation itself contains relations do the same recursively. This is known as Linked Data <ref type="foot" target="#foot_2">7</ref> .</p><p>Each representation returned by a resource can be interpreted as a graph of relations, which can be isolated in N3 by placing them within curly brackets { }. <ref type="foot" target="#foot_3">8</ref> The relation that maps a resource to the graph described by the document retrieved using the canonical dereferencing method of its URI is defined as the :semantics relation. Thus, after dereferencing romeo:i, one may state the following, without asserting the actual statements within the brackets as true: (P1) romeo:i :semantics { romeo:i a foaf:Person; :hasPrivateKeyFor pubKey; foaf:name "Romeo"; foaf:knows jult:me . }</p><p>These graphs can also be used to formulate rules, as when we define the above :semantics relation in terms of the established log:semantics property, which relates a document to its graph, and :representation relating a resource to one of its representations (the ? prefixed variables are universally quantified):</p><p>(D1) { ?resource :representation ?doc . ?doc log:semantics ?graph . } =&gt; { ?resource :semantics ?graph . }</p><p>The log: namespace<ref type="foot" target="#foot_4">9</ref> tends to make significant use of enclosed graphs, or "formulas". In particular, the log:includes property links a subject graph to an object graph by asserting that the latter is a subset of the former graph; the log:implies property, also written as =&gt;, can serve as the basis for reasoning based on first-order logic (with the introduction of appropriate variables).</p><p>Even though the Semantic Web is built in order to make merging of information easy, it is not a requirement to do so. We will be using this notation to help illustrate clearly when merging graphs is reasonable.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3">FOAF, reputation networks and the Web of Trust</head><p>FOAF,<ref type="foot" target="#foot_5">10</ref> short for Friend-of-a-Friend, is an RDF vocabulary used to describe people, agents, groups and their relations. When used on the Semantic Web, this allows each person to describe himself and his network of friends.</p><p>By giving oneself a URI -aka. a Web ID -, one can describe one's personal social network by linking oneself to acquaintances by reference. Someone who has been given the romeo:i URL by Romeo himself, and then fetched its :semantics (ending up with the statements in P1) has good reason to trust that the information there is correct and, thus, to merge it (in a defeasible manner) with his own belief store. This graph itself will contain further URIs, such as jult:me, whose :semantics the agent can also GET. Similarly, the user can then add romeo:i to his FOAF file, to publish :me foaf:knows romeo:i.</p><p>Thus, a peer-to-peer information network can be built, where each person specializes in keeping up-to-date the information they feel responsible for, linking to the best sources for objects they do not wish to maintain. In return, as the quality of one's information and links increases, others feel more confident linking to it, reducing their own work and responsibilities.</p><p>As the network grows, the value of the network grows exponentially, as predicted by Metcalf's Law <ref type="bibr" target="#b2">[3]</ref>, creating a virtuous circle. Current social networking sites, such as Facebook and LinkedIn, to name a few among many, have shown how this can work in less distributed settings, taking advantage of the same law.</p><p>The plain foaf:knows relation may be enhanced with trust descriptions so as to create a reputation network <ref type="bibr" target="#b3">[4]</ref>, and, in the case of FOAF+SSL, this trust can be backed by the use of cryptographic keys and signatures, so as to form a secure Web of Trust (as described in the next sections).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.4">Public key cryptography</head><p>Public key cryptography allows two peers to communicate securely without requiring them to share a secret, through the use of unique pairs of keys. One key, called the public key, may be disseminated widely, and the other, the private key, is to be kept only by its owner. This is in contrast to symmetric cryptography, where both participants must share the knowledge of the same secret key for both encryption and decryption.</p><p>Public key cryptography relies on the conjecture that it is infeasible to obtain any private key that corresponds to a given public key through brute force because this operation is too computationally expensive. It also assumes that no two distinct individuals will generate the same key-pair randomly. We can define in D2 an inverse functional property :hasPrivateKeyFor.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>(D2)</head><p>:hasPrivateKeyFor a owl:InverseFunctionalProperty; rdfs:domain foaf:Agent; rdfs:range cert:PublicKey .</p><p>Thanks to the dual-nature of the public and private key pair, two distinct actions are made possible:</p><p>1. Encryption is the obfuscation of a plain text message, generating a scrambled message using the public key of a key pair, so that it may only be decrypted using the corresponding private key. 2. Signing is the process of associating a digital signature with a message; this signature is generated using a private key. The authenticity and integrity of the message can then be verified using the corresponding public key.</p><p>A public key certificate is the signed combination of a public key and some information related to this key. Such a certificate may be self-signed (using the private key that matches the public key it contains) or signed by a third party. The party that signs a certificate (self-signed or not) endorses its contents. Trusting the party that signed a certificate can be a reason for believing its contents.</p><p>Two different architectures have been developed to make use of third party signing of public key certificates: the hierarchical Public Key Infrastructure (Section 2.5) and the cryptographic Web of Trust (Section 2.6). In both architectures, an application or hosting environment is initially configured with a trusted set of certificates known as trust anchors. When presented with an unknown certificate, an application verifies its authenticity by attempting to build a certification path -or chain -between the certificate and one of the trust anchors. A certificate becomes trusted if and only if it has been signed using a certificate which is already trusted. If necessary, this operation may be repeated to build a path through intermediate certificates, through which the trust relation is transitive.</p><p>The hierarchical Public Key Infrastructure model and the cryptographic Web of Trust model mainly differ in the way in which certificates are distributed and intermediates are trusted. In both cases, the initial establishment of trust (i.e. the selection of trust anchors) requires an initial import of certificates which is out of band, but this process is much less onerous than obtaining all public key certificates for all entities likely to take part in secure communications.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.5">PKI and hierarchical model of trust</head><p>The Internet X.509 Public Key Infrastructure <ref type="bibr" target="#b4">[5]</ref> (PKI) is a hierarchical model for distributing and trusting certificates. In this model, certificates are signed by a certification authority (CA). X.509 certificates incorporate a Subject Distinguished Name (Subject DN), which identifies the subject of the certificate, and an Issuer Distinguished Name (Issuer DN), which identifies the issuer of the certificate -the entity that signs the certificate . An X.509 certificate may only have one Issuer DN, which must be the Subject DN of the certificate that has been used to issue it. This structure builds a hierarchical tree from the root CA certificate, via optional intermediate CA certificates, to the end-entity (i.e. client or server) certificates.</p><p>Most web-browsers and operating systems provide a default list of CA certificates which they make their users trust implicitly. This list can usually be changed by the user, a feature often used by institutional PKIs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.6">Cryptographic Web of Trust</head><p>The cryptographic Web of Trust (WoT) is a form of public key infrastructure (although rarely called PKI) where each participant may assert trust in any other participant, without a specific hierarchy.</p><p>The Web of Trust model is used by PGP; what is often referred to as a PGP public key is, in fact, a form of a public key certificate, since it also contains additional information (such as an e-mail address) and is signed so as to assert its authenticity. Such a certificate is self-signed, but may also contain additional signatures -those by whom the association between the key and this additional information is trusted.</p><p>In PGP, the trust anchors are the user's own certificate and the certificates the user trusts, some of which may be from trusted introducers (that is, people through whom trust is transitive). The number a signatures a certificate has reflects the connectivity to other parties. The more signatures a certificate has, the more likely it is that a third party will be able to find a certification path to that certificate via trusted introducers.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.7">SSL authentication</head><p>The most widely deployed protocol for securing communications between a useragent and a web server is Transport Layer Security (TLS) <ref type="bibr" target="#b5">[6]</ref>, itself a successor to the Secure Socket Layer 3.0 (SSLv3) specification;<ref type="foot" target="#foot_6">11</ref> its use in HTTP applications is denoted by the https prefix in URLs.</p><p>During the SSL handshake, at the beginning of the SSL connection, the client obtains an X.509 certificate from the server. At this point, the client relies on its trust anchors to verify it. If this certificate is trusted and verified, the handshake proceeds. Once the handshake has finished, the communication (on top of SSL) can proceed in a secure manner; the only other party capable of reading the communication must have the private key corresponding to this server certificate.</p><p>There exists a variant of the handshake procedure in which the client is requested or required to present a certificate to the server, enabling the server to authenticate the client using the same verification method as above.</p><p>The remainder of this section describes, from a Semantic Web point of view, how trust in a certificate is evaluated. This forms the basis for comparison of how FOAF+SSL differs from this, in Section 3.2. We describes the reasoning of a server, S, for authenticating a client, :client, making a request. Server S has a set of trusted CAs. S would state that issuerDN was a trusted CA with: The CAKey is a cert:PublicKey that is usually identified by a number of inverse functional properties, which form an OWL2 key.<ref type="foot" target="#foot_7">12</ref> For the sake of brevity, these relations are not shown here. Suffice it to say that CA Keys can be uniquely identified by them.</p><formula xml:id="formula_0">(P2)</formula><p>S requests that :client presents a certificate signed by any one of a number of CAs it knows about. S receives :certDoc with semantics such as the following (the subject is also identified via a DN): The client asserts the contents of the certificate (not shown) and that it is signed by issuer:</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>(P5)</head><p>:client :claims { _:certDoc :signature _:certSig; _:certSig :signedWith CAKey; :sigString "XYZ SIG" . } S can assert, after verification, that :certDoc has been signed using the private key corresponding to CAKey:</p><formula xml:id="formula_1">(P6) _:certDoc :signature [ :signedWith CAKey ] .</formula><p>Proving that a document is signed by P , is to assert P claims its contents: (D3) { ?P :hasPrivateKeyFor ?key .</p><p>?doc :signature [ :signedWith ?key ] } =&gt; { ?P :claims [ is :semantics of ?doc ] } .</p><p>Then, from the signature verification P6, the certificate contents P3 and the definition D3, S can assert:</p><p>(P7) issuer :claims _:certSemantics .</p><p>To trust someone is to trust what they claim. S trusts TrustedCAs, thus:</p><p>(D4) { ?ca :claims ?s . ?ca a :TrustedCA } =&gt; { ?s a log:Truth } .</p><p>From P2, P7 and D4, S can conclude:</p><p>(P8) subjectDN :hasPrivateKeyFor pubKey .</p><p>From P4 gained by the SSL handshake, the above P8 and the definition D2 of :hasPrivateKeyGot as a owl:inverseFunctionalProperty, we can deduce:</p><p>(P9) :client owl:sameAs subjectDN .</p><p>At this point, the server S has authenticated the :client as this Distinguished Name (DN). Considering that the :client's request is to access resource R, the server can then find out if this DN is authorized access to R.</p><p>The problem with DNs is that, although they can be made to form a URI, the dereferencing mechanism for DNs is not global in the way http URLs are. Therefore, if access to R is granted in some rule based way, where more information about R needs to be discovered for a decision to be made, then the DN cannot provide a global solution. For very much the same reasons, data in LDAP servers cannot have fields that point resources in any other LDAP server. As a result, current uses of client certificates limit the usage of each to a few domains.</p><p>The ability to link globally is an essential piece required for building a global social network. The next sections shows how FOAF+SSL solves this problem.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">The FOAF+SSL protocol</head><p>This section describes the FOAF+SSL protocol. The FOAF+SSL protocol uses SSL but uses a different trust model than PKI to verify certificates. <ref type="foot" target="#foot_8">13</ref>When protecting a service, it is important to differentiate authentication from authorization. Authentication is the action of verifying the identity of the remote user. Authorization consists of allowing or denying access to or operations on a given resource, based on the identity obtained during authentication.</p><p>FOAF+SSL enables a server to authenticate a client given a simple URL. This URL can then be used directly for authorization, or to explore more information in the web of linked data, in order to decide if the referent of the URL satisfies the constraints required for accessing the resource. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Authentication Logic</head><p>This section draws a parallel with Section 2.7, again, following the reasoning of the web server S trying to authenticate a :client.</p><p>At the end of stage 3 in the FOAF+SSL sequence diagram, S has received the client certificate securely. Being self-signed (or signed by an unknown party), its semantics are somewhat different. S is really only interested in the URI identifiers referring to the subject -abandoning thus the limitations of DNs. In addition, since it is asserted by the client, S knows that:<ref type="foot" target="#foot_9">14</ref>  Hence, from P10, P11, and D2, S may conclude that :client would have to agree that it is romeo:i. This should not be a surprise, as that is indeed what one assumes someone who sends such a certificate intends.</p><p>(P12) :client :mustAgree [ log:includes { romeo:i = :client } ] .</p><p>Since :client asserts it is romeo:i, it accepts to be inspected via romeo:i. Since romeo:i is a URL, S can dereference it and thus discover P1. Then, by P1, P11, D2, and D5: (P13) romeo:i :mustAgree [ log:includes { romeo:i = :client } ] .</p><p>In other words, both romeo:i and :client must agree, given what S knows, that romeo:i owl:sameAs :client. In particular romeo:i cannot repudiate this assertion since romeo:i itself provided P1 authoritatively. It follows that if S is authorized to serve R to romeo:i, S can serve R to :client.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Following links</head><p>In the previous section, we showed how a server can authenticate a client who claims a Web ID. Authorization policies -how to decide which group of agents may access which resource -will be particular to each application. It could be done by giving a list of authorized Web IDs. It could be done by trusting statements returned by a selected group of Web IDs, for example, when allowing all friends of a given friend access to a resource, as specified by the representation returned by their Web ID. This would make the initial list of trusted Web IDs similar to the trust anchors in PKI and WoT. A lot still remains to be explored.</p><p>A topic for further research is to define the various ways in which trust can be transmitted. Let us look at one simple example here. Imagine a user connects to a service and is authenticated as joe:i, using the FOAF+SSL method described above. Imagine joe:i returns a representation claiming joe:i owl:sameAs romeo:i. Since anyone could make that statement, that, in itself, should not be the basis for belief for services that care about security. If, on the other hand, romeo:i :semantics [ log:includes { romeo:i owl:sameAs joe:i . } ], then this could be used as confirmation of the claim, and from there on both IDs could be used interchangeably by S.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Related work</head><p>Unlike the OpenPGP extension to TLS <ref type="bibr" target="#b6">[7]</ref>, which also aims to rely on a Web-of-Trust by using PGP certificates instead of the usual X.509 certificates, FOAF+SSL makes only slight changes in the way X.509 certificates are used; it does not require changes in the actual SSL stack. With the OpenPGP TLS extension, the problem of key distribution still remains. Public PGP keys can be stored on public key servers, but there is no global dereferencing mechanism for finding a key, as there is in the FOAF+SSL protocol.</p><p>OpenID also shares considerable similarities with FOAF+SSL, due in part to OpenID's reliance on URLs as identifiers, just as FOAF+SSL relies on dereferenceable URIs bearing FOAF data. However, OpenID fails to make much use of the information at the OpenID resource, using it only to find the authorization service. As a result, OpenID requires a much higher number of connections to establish identity -6 as opposed to 2 -and parts ways with RESTful design in the attribute exchange protocol, loosing thereby the advantages of a networked architecture.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusions</head><p>FOAF+SSL provides a secure and flexible global authentication system. With public key cryptography at its core, it gains all the security advantages of this technology. Because FOAF+SSL is RESTful and integrates well with the Semantic Web, it can discover more information about an entity by walking the Linked Data cloud. Compared with PKI, FOAF+SSL removes the need for hierarchical authorities to assert identity, making it much more flexible. Thus, this mechanism adapts itself well to the formation and expansion of virtual organisations and distributed social networks.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>:semantics _:certSemantics . _:certSemantics = { &lt;&gt; dc:created issuerDN; foaf:primaryTopic subjectDN . subjectDN :hasPrivateKeyFor pubKey . issuerDN :hasPrivateKeyFor CAKey . } So far, the SSL handshake ensured S that the client has the private key: (P4) :client :hasPrivateKeyFor pubKey .</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>claims { &lt;&gt; dc:created romeo:i; foaf:primaryTopic romeo:i. romeo:i :hasPrivateKeyFor pubKey . } S may know of romeo:i only what it gathered from the SSL handshake: (P11) :client :hasPrivateKeyFor pubKey . When someone makes a claim, they have to agree with the logical consequences of their claim, including those arising from new facts. Thus, someone who makes a claim :mustAgree with the conclusions of the union of what we know securely, what they believe, and established reasoning rules: [ log:conclusion ?C ] } =&gt; { ?client :mustAgree ?C }</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>4. Juliet's server dereferences the Subject Alternative Name URI found in the certificate and ends up with a superset of D1. 5. The document's log:semantics is queried for information regarding the public key contained in the X.509 certificate. This can be done in part with a SPARQL query as shown in Listing 1.2. If the public key of the certificate matches the one published in the FOAF file, romeo:i is authenticated.Listing 1.2. SPARQL query to obtain the public key information. Once this authentication step is complete, the position of romoe:i in Juliet's social graph can be determined. Juliet's server can get this information by crawling the web starting from her FOAF file, or by other means. 7. Authentication has been done; authorization can now take place.</figDesc><table><row><cell>SELECT ?modulus ?exp WHERE {</cell><cell></cell></row><row><cell>?key cert:identity &lt;https://romeo.example/#i&gt;;</cell><cell></cell></row><row><cell>a rsa:RSAPublicKey;</cell><cell></cell></row><row><cell>rsa:modulus [ cert:hex ?modulus; ];</cell><cell></cell></row><row><cell>rsa:public_exponent [ cert:decimal ?exp ] .</cell><cell>}</cell></row><row><cell>6.</cell><cell></cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" xml:id="foot_0">This article is available under the "Attribution 3.0 Unported" Creative Commons License.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_1">Current N3 tutorial at: http://www.w3.org/2000/10/swap/doc/Overview.html.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="7" xml:id="foot_2">see Tim Berners-Lee's note http://www.w3.org/DesignIssues/LinkedData.html</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="8" xml:id="foot_3">Unlike the Named Graph brackets in SPARQL; N3 supports anonymous graphs.This article is available under the "Attribution 3.0 Unported" Creative Commons License.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="9" xml:id="foot_4">The log: namespace is described at http://www.w3.org/DesignIssues/N3Logic.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="10" xml:id="foot_5">Defined at http://xmlns.com/foaf/0.1/.This article is available under the "Attribution 3.0 Unported" Creative Commons License.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="11" xml:id="foot_6">Unless explicitly noted, this article uses SSL to encompass TLS 1.x and SSL 3.0.This article is available under the "Attribution 3.0 Unported" Creative Commons License.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="12" xml:id="foot_7">http://www.w3.org/TR/owl2-syntax/#Keys This article is available under the "Attribution 3.0 Unported" Creative Commons License.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="13" xml:id="foot_8">Although the examples we use are based on the Web, FOAF+SSL could in principle also be used for authentication to other SSL-enabled services, such as IMAPS.This article is available under the "Attribution 3.0 Unported" Creative Commons License.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="14" xml:id="foot_9">The signer being the author, following the reasoning from P10, P6, D3 would also end up with this result -for self signed certificates only.This article is available under the "Attribution 3.0 Unported" Creative Commons License.</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgements</head><p>Ian Jacobi acknowledges funding for this project from NSF Cybertrust award #0524481 and IARPA award #FA8750-07-2-0031. Bruno Harbulot acknowledges EPSRC funding under grant EP/E001947/1 (http://www.nanocmos.ac.uk/).</p></div>
			</div>

			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The FOAF+SSL authentication protocol consists of the following steps, as illustrated in Figure <ref type="figure">1:</ref> A client fetches a public HTTP resource which points to a protected resource, for example &lt;https://juliet.example/location&gt;. </p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Architectural Styles and the Design of Network-based Software Architectures</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">T</forename><surname>Fielding</surname></persName>
		</author>
		<ptr target="http://www.ics.uci.edu/∼fielding/pubs/dissertation/top.htm" />
		<imprint>
			<date type="published" when="2000">2000</date>
		</imprint>
		<respStmt>
			<orgName>University of California, Irvine</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">PhD thesis</note>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<ptr target="http://www.w3.org/TR/2004/REC-webarch-20041215/" />
		<title level="m">Architecture of the World Wide Web</title>
				<editor>
			<persName><forename type="first">I</forename><surname>Jacobs</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">N</forename><surname>Walsh</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="2004-12">December 2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Metcalfe&apos;s law, Web 2.0, and the Semantic Web</title>
		<author>
			<persName><forename type="first">J</forename><surname>Hendler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Golbeck</surname></persName>
		</author>
		<ptr target="http://www.cs.umd.edu/∼golbeck/downloads/Web20-SW-JWS-webVersion.pdf" />
	</analytic>
	<monogr>
		<title level="j">Web Semant</title>
		<imprint>
			<biblScope unit="volume">6</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="14" to="20" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Trust networks on the semantic web</title>
		<author>
			<persName><forename type="first">J</forename><surname>Golbeck</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Parsia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Hendler</surname></persName>
		</author>
		<ptr target="http://mindswap.org/papers/Trust.pdf" />
	</analytic>
	<monogr>
		<title level="m">WWW (Posters</title>
				<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<author>
			<persName><forename type="first">D</forename><surname>Cooper</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Santesson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Farrell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Boeyen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Housley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Polk</surname></persName>
		</author>
		<title level="m">Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile. RFC 5280</title>
				<imprint>
			<date type="published" when="2008-05">May 2008</date>
		</imprint>
	</monogr>
	<note>Proposed Standard</note>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<author>
			<persName><forename type="first">T</forename><surname>Dierks</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Allen</surname></persName>
		</author>
		<title level="m">The TLS Protocol Version 1.0. RFC 2246</title>
				<imprint>
			<date type="published" when="1999-01">January 1999</date>
		</imprint>
	</monogr>
	<note>Proposed Standard. Obsoleted by RFC 4346, updated by RFC 3546</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Using OpenPGP Keys for Transport Layer Security (TLS) Authentication</title>
		<author>
			<persName><forename type="first">N</forename><surname>Mavrogiannopoulos</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Experimental</title>
		<imprint>
			<biblScope unit="volume">5081</biblScope>
			<date type="published" when="2007-11">November 2007</date>
		</imprint>
	</monogr>
	<note>RFC</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
