- From: Patrick Stickler <patrick.stickler@nokia.com>
- Date: Fri, 19 Mar 2004 09:33:09 +0200
- To: ext Jeremy Carroll <jjc@hpl.hp.com>, Jeremy Carroll <jjc@hplb.hpl.hp.com>, Pat Hayes <phayes@ihmc.us>, "<www-archive@w3.org> <www-archive@w3.org>" <www-archive@w3.org>, ext Chris Bizer <chris@bizer.de>
Our recent interchanges about signatures, certificates, certification authorities, etc. as well as the realization that multiple authorities may publish/assert the same graph jointly yet use different certification schemes has led me to think that we are blurring a necessary distinction between qualifications of the graph versus characteristics of particular warrants which are used to verify/authenticate a graph. So, I've massaged/expanded the swp vocabulary a bit with the goal of making warrants distinct objects which are associated with a graph, and inferring the origin and/or asserting authorities of a graph from those (presumably valid) warrants. I.e.: (feel free to skip down first to the concrete examples) swp:Authority a rdfs:Class ; rdfs:comment "An authority, or origin, of a graph; such as a person or company." . swp:Warrant a rdfs:Class ; rdfs:comment "A bundle of essential information needed to authenticate a graph." . swp:Signature a rdfs:Class ; rdfs:comment "A signature used to authenticate a graph." . swp:Certificate a rdfs:Class ; rdfs:comment "A digital object by which an authority can be authenticated." . swp:CertificationAuthority a rdfs:Class ; rdfs:comment "An authority which issues certificates." . swp:warrant a rdf:Property ; rdfs:comment "The object is a warrant by which the subject graph can be authenticated and its assertional status and asserting or originating authority determined." ; rdfs:domain rdfg:Graph ; rdfs:range swp:Warrant . swp:authority a rdf:Property ; rdfs:comment "The object is the authority, or origin, of the graph with which the subject warrant is associated." ; rdfs:domain swp:Warrant ; rdfs:range swp:Authority ; owl:cardinality "1"^^xsd:nonNegativeInteger . swp:assertingAuthority a rdf:Property ; rdfs:subPropertyOf swp:authority ; rdfs:comment "The object is the asserting authority of the graph with which the subject warrant is associated." ; rdfs:domain swp:Warrant ; rdfs:range swp:Authority . swp:signature a rdf:Property ; rdfs:comment "The object is the signature to be used to authenticate the graph with which the subject warrant is associated." ; rdfs:domain swp:Warrant ; rdfs:range swp:Signature ; owl:cardinality "1"^^xsd:nonNegativeInteger . swp:certificate a rdf:Property ; rdfs:comment "The object is a certificate by which the authority can be authenticated." ; rdfs:domain swp:Warrant ; rdfs:range swp:Certificate ; owl:maxCardinality "1"^^xsd:nonNegativeInteger . swp:certificationAuthority a rdf:Property ; rdfs:comment "The object is the certification authority issuing the certificate specified using swp:certificate." ; rdfs:domain swp:Warrant ; rdfs:range swp:CertificationAuthority ; owl:maxCardinality "1"^^xsd:nonNegativeInteger . swp:origin a rdf:Property ; rdfs:comment "The object is the origin of the subject graph." ; rdfs:domain swp:Graph ; rdfs:range swp:Authority . swp:assertedBy a rdf:Property ; rdfs:subPropertyOf swp:authority ; rdfs:comment "The object asserts the subject graph." ; rdfs:domain rdfg:Graph ; rdfs:range swp:Authority . Note the cardinality constraints defined for swp:authority and swp:signature. A warrant for a graph must have one and only one of each. The ability to explicitly specify a certificate and certification authority for the authority of the warrant is simply a convenience, so that agents need not have to go out and discover such information themselves based on the URI denoting the authority -- though some paranoid agents may choose to do that anyway, just to be sure. -- OK, here's a concrete example: Graph G is published by four authorities with distinct authentication credentials, one of which (Bill) is not asserting the claims expressed in the graph, only sharing authorship/publication, and one warrant being external to the graph itself: :G ( some:resource some:property some:value . :G swp:warrant [ a swp:Warrant ; swp:assertingAuthority ex:Bob ; swp:signature "..."^^sig:PGPSignature . swp:certificate "..." . swp:certificationAuthority <http://www.certificates-R-us.com> . ] :G swp:warrant [ a swp:Warrant ; swp:authority ex:Bill ; swp:signature "..."^^sig:X509Signature . ] :G swp:warrant [ a swp:Warrant ; swp:assertingAuthority ex:Mary ; swp:signature "..."^^xyz:XYZSignature ; xyz:policy xyz:blargh . ] :G swp:warrant <http://www.foo.bar.com/us282uss82wsauia9whjrui.wnt> . ) Note how datatypes are used to differentiate the type of signatures used. Note that in the third warrant, for Mary, an authentication scheme is used which requires explicit specification of a particular authentication policy to successfuly authenticate the graph (and, no, I'm not going to suggest what that policy might be or why it would be required -- the point is that this approach allows for extensibility where additional information can be provided in the warrant which is specific to the authentication machinery and doesn't directly describe the graph itself). Note also that in the case of the external warrant, the agent is going to have to *first* validate/authenticate that external warrant before it can reliably apply it to the graph in question; so while this approach allows for reference to external warrants, it has a higher operational cost. From the above graph, if all of the warrants are valid (and let's presume the external warrant contains [ swp:assertingAuthority ex:Jane ]), one can apply the following two closure rules: IF :G swp:warrant ?warrant . AND ?warrant swp:assertingAuthority ?authority . THEN :G swp:assertedBy ?authority . and IF :G swp:warrant ?warrant . AND ?warrant swp:authority ?authority . THEN :G swp:origin ?authority . along with the relevant RDFS closure rules to infer that :G swp:assertedBy ex:Bob . :G swp:assertedBy ex:Mary . :G swp:assertedBy ex:Jane . :G swp:origin ex:Bob . :G swp:origin ex:Bill . :G swp:origin ex:Mary . :G swp:origin ex:Jane . by which one can then apply ones trust policies to make determinations about whether to trust graph G. E.g. IF ?graph swp:assertedBy ?authority . AND ?authority rdf:type trust:TrustedAuthority . THEN ?graph rdf:type trust:TrustedGraph . etc. with all queries then being constrained to statements made within trusted graphs. Eh? Patrick -- Patrick Stickler Nokia, Finland patrick.stickler@nokia.com
Received on Friday, 19 March 2004 02:44:51 UTC