<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Towards a Con gurable Framework for Iterative Signing of Distributed Graph Data</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Andreas Kasten</string-name>
          <email>andreas.kasten@uni-koblenz.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ansgar Scherp</string-name>
          <email>ansgar@informatik.uni-mannheim.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Koblenz</institution>
          ,
          <addr-line>56070 Koblenz</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Mannheim</institution>
          ,
          <addr-line>68131 Mannheim</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>When publishing graph data on the web such as vocabularies using RDF(S) or OWL, one has only limited means to verify its authenticity and integrity. Today's approaches require a high signature overhead and do not allow for an iterative signing of graph data. This paper presents a con gurable framework for signing arbitrary graph data provided in RDF(S), Named Graphs, or OWL. Our framework supports signing graph data at di erent levels of granularity: minimum selfcontained graphs (MSG), sets of MSGs, and entire graphs. It supports an iterative signing of graph data, e. g., when di erent parties provide different parts of a common graph, and allows for signing multiple graphs. Both can be done with a constant, low overhead for the signature graph, even when iteratively signing graph data.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Exchanging trusted graph data on the Semantic Web is only possible to a limited
extend today. On the contrary, the amount of graph data published and shared on
the web has tremendously increased. In order to track provenance and building
trust networks for knowledge-based systems, it becomes inherently necessary to
be able to verify the authenticity and integrity of the graph data by signing
it. Authenticity and integrity are basic security requirements which ensure that
graph data is really created by the party who claims to be its creator and that
any modi cations on the data are only carried out by authorized parties. To the
best of our knowledge, the only solution for signing graph data so far is the work
by Tummarello et al. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. It provides a simple graph signing function for so-called
minimum self-contained graphs (MSGs). An MSG is de ned over statements. It
is the smallest subgraph of the complete RDF graph that contains a statement
and the statements of all blank nodes associated either directly or recursively
with it. Statements without blank nodes are an MSGs on their own.
      </p>
      <p>Tummarello et al. provide an important early step for signing graph data.
However, it has signi cant shortcomings regarding the functionality provided
and overhead required for representing the graph signature: First, the signing
function can be applied on MSGs only. To this end, the signature is attached
to the MSG by using the RDF Statement rei cation mechanism. This requires
signi cant overhead for representing the signature statements. Second, it cannot
be applied on, e. g., sets of statements like ontology design patterns or graphs
as a whole. The approach does not support signing Named Graphs or signing
multiple graphs at the same time. Finally, the approach by Tummarello et al.
does not allow for an iterative signing of graph data as the signature statements
become part of the MSG they sign. There is no explicit relationship between
the signature and the signed statements. This makes it practically impossible to
verify the integrity and authenticity of the graph data.</p>
      <p>
        In this paper, we present a con gurable framework for signing RDF(S) graphs,
Named Graph, and OWL graphs. The general process of signing and verifying
graph data is based on the XML signature standard [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and depicted in Fig. 1.
First, a canonicalization function normalizes the data to a unique
representation. Second, a serialization function transforms the canonicalized data into a
sequential representation (if not already provided in sequential form). Third, a
hash function [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] computes a cryptographic hash value on the serialized data.
Fourth, a signature function combines the data's hash value with a signature
key [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The results of the rst four functions are combined and together
constitute the graph signing step. Fifth, an assembly function creates a signature
graph containing all data for verifying the graph's integrity and authenticity,
which is the last step.
      </p>
      <p>Step 1</p>
      <p>Canonicalization
Graph signing</p>
      <p>Step 2
Serialization</p>
      <p>Step 3
Hash</p>
      <p>Step 4
Signature</p>
      <p>Step 5
Assembly</p>
      <p>Step 6
Verification</p>
      <p>The framework as outlined in Fig. 1 can be con gured, e. g., to optimize
the signing process towards e ciency or minimizing the signature overhead.
The resulting signature graph is assembled with the signed graph and can be
published on the web. The contribution of this work is:
{ A con gurable framework for implementing di erent signing functions of
graph data.
{ The framework supports di erent levels of granularity of signing graph data.</p>
      <p>It can be used to sign a minimum self-contained graph (MSG), a set of MSGs,
entire graphs, and multiple graphs at once.
{ The signing process can be applied on graph data distributed over the web.
{ The framework allows for an iterative signing of graph data.
{ Signed graphs can contain assertional knowledge as well as terminological
knowledge.
{ The overhead for signing graphs is constant even when iteratively signing
graph data.</p>
      <p>The following scenario motivates the need for iteratively signing di erent
types of graph data. The related work is presented in Section 3. Three di
erent con gurations are discussed in Section 4. Finally, we present an example
implementation of our framework in Section 5.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Scenario: Trust Network for Content Regulation:</title>
      <p>In the scenario depicted in Fig. 2, we consider building a trust network for
Internet regulation in Germany. The information about what kind of content is to
be regulated is encoded as graph data, which is provided by di erent authorities.
An authority receives signed graph data from another authority, adds its own
graph data, digitally signs the result, and publishes it on the web.</p>
      <p>
        Due to Germany's history in the
second World War, until today the ac- BKA
cess to neo-Nazi material on the
Internet is prohibited by German law
(Criminal Code, x86 [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]). The German
Federal Criminal Police O ce (Bundeskrim- German Telecom ContentWatch
inalamt, BKA) provides a set of formally XXX
de ned ontologies making use of ontology
design patterns [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The patterns
represent knowledge such as wanted persons, Primary School
recent crimes, and regulation information
for Internet communication like it is re- XXX
quired by x86. In addition, the BKA
provides a blacklist of web sites to be blocked
according to x86. It signs both the
ontologies and the blacklist and publishes Pupil Computers
the ontologies on the web. Internet
service providers (ISPs) such as the German Fig. 2. Content Trust Network.
Telecom receive the regulating
information from the BKA. By verifying its authenticity and integrity, the ISPs can
trust the BKA's regulation data. This data only describes what is to be
regulated and not how it is regulated. Thus, ISPs like the German Telecom interpret
the data received from the BKA and add concrete details such as the proxy
servers and routers used for blocking the web sites. As shown in Fig. 2, the ISP
compiles its technical regulation details as RDF graph which is based on the
BKA's ontology pattern. It digitally signs the BKA's blacklist together with its
own regulation graph and sends it to its customers. The customers such as the
primary school depicted in Fig. 2 are able to verify the authenticity and integrity
of the regulating information. The school has to ensure that its pupils cannot
access illegal neo-Nazi content. The iterative signing of the regulation data
allows the school to check which party is responsible for which parts of the data.
Thus, it can track the provenance of the regulation's creation. In addition, the
school has to ensure that adult content cannot be accessed by the pupils. To this
end, it receives regulation information for adult content from private authorities
such as ContentWatch (http://www.contentwatch.com), which o ers
regulation data as Named Graphs to protect children from Internet pornography and
the like. Thus, di erent regulation information from multiple sources is
incorporated by the school. Finally, the primary school digitally signs the incorporated
regulation information before providing it to its client computers. This ensures
that the pupils using these computers access the Internet only after passing the
prede ned regulation mechanisms.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Related Work</title>
      <p>
        The related work is structured along the process of signing data as outlined in
the introduction. An explicit discussion of the runtime complexity and space
complexity of the presented functions is provided in our TR [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. We summarize
this section by explaining why the related work is not su cient and describe
the unique features of our approach. A canonicalization function assures that in
principle arbitrary identi ers of a graph's blank nodes do not a ect the graph's
signature. Carroll [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] presents a canonicalization function that replaces all blank
node identi ers with a uniform place holder, sorts all serialized statements of the
graph, and renames the blank nodes according to the order of their statements.
Additional statements are added for blank nodes sharing the same identi er.
Fisteus et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] provide a canonicalization function which requires a hash value
of each statement based on the authors' hash function described below and sorts
the statements according to their hash values. Sayers and Karp [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] provide a
canonicalization function which stores the identi er of each blank node in an
additional statement. If the identi er is changed, the original one can be recreated
using this statement. The subsequent serialization function transforms a graph
into a sequential representation such as a bit string . Functions for serializing
(RDF) graphs are well known, e. g., N-Triples [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and TriG [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Applying a hash
function on a graph is often based on computing and combining the hash values
of the serialized statements. Melnik [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] computes the hash value of a statement
by concatenating the hash value of its subject, predicate, and object and
hashing the result. The hash values of all statements in an RDF graph are sorted,
concatenated, and hashed again. Fisteus et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] suggest a hash function which
associates all blank nodes with the same identi er, computes the statements'
hash values like with Melnik's approach [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], and combines these values to form
the hash value of the entire graph. Carroll [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] uses a hash function which sorts all
serialized statements, concatenates the result into a bit string, and hashes this
bit string using a simple hash function such as SHA-2 [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Finally, Sayers and
Karp [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] compute a graph's hash value by incrementally multiplying the hash
values of its statements modulo a prime number. Signature functions compute the
actual signature of a graph by combining the hash values with a signature key.
Possible signature functions are DSA [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and RSA [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Tummarello et al. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
present a graph signing function for minimum self-contained graphs (MSGs). An
MSG of a statement is the smallest subgraph of the entire RDF graph containing
this statement and the statements of all associated blank nodes. The graph
signing function of Tummarello et al. is based on Carroll's canonicalization function
and hash function [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The resulting signature is stored as a set of six statements,
which are linked to the signed MSG via RDF Statement rei cation of one of the
MSG's statements. The graph signing function signs one MSG at a time.
Signing multiple MSGs requires multiple signatures. Individually signing MSGs with
only one statement creates a high overhead of six signature statements. The
approach by Tummarello et al. does not allow for iterative signing of graph data.
The signature statements created for each signing step become part of the signed
MSG. Signing this MSG again also signs the included signature statements. This
makes it impossible to relate a set of signature statements to the corresponding
signed graph data. Thus, verifying the signature becomes practically impossible.
A graph can also be signed by signing a particular serialization of it [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. For
example, a graph serialized as RDF/XML [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] or OWL/XML [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] can be signed
using the XML signature standard [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. However, such a signature can only be
veri ed as long as the speci c serialization is still available. Finally, assembly
functions create a detailed description of how a graph's signature can be
veried. This description may be added to the signed graph data or be stored at a
separate location. Tummarello et al. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] present a simple assembly function which
adds the signature value and a URL to the signature key to a signed MSG.
Information about the graph signing function and its subfunctions is not provided.
If the signature key is not available anymore at the URL, the signature can no
longer be veri ed. In order to describe the parameters of a signing function, the
XML signature standard [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] may be used.
      </p>
      <p>In contrast to the related work on graph signing and the individual functions
that contribute to graph signing, our approach allows for signing graphs at
different levels of granularity like a single MSG, a set of MSGs, an entire graphs,
and even multiple graphs at the same time. It supports for signing both
terminological knowledge and assertional knowledge that can be distributed over
di erent sources on the web. Finally, our graph signing approach only requires a
low signature overhead, which is constant also for iteratively signed graph data.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Example Con gurations of the Framework</title>
      <p>We present three example con gurations of the signing framework. To ease
comparability, each con guration uses N-Triples for serialization and RSA as
signature function. The con gurations di er only in the canonicalization function
and hash function. In the following, n refers to the number of statements to be
signed and b corresponds to the number of blank nodes in the graph. Please note
that di erent con gurations are also possible.</p>
      <p>
        A) Tummarello et al. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] use the canonicalization function and hash function
of Carroll [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Due to their complexity, the runtime complexity of the graph
signing function is O(n log n) and its space complexity is O(n). Carroll's
canonicalization function handles blank node identi ers by sorting all of a graph's
statements. Additional statements are created for blank nodes sharing the same
identi er. With bh b being the number of such statements, the canonicalized
graph contains bh more statements than the original graph. The approach by
Tummarello et al. only allows for signing a single MSG at a time. The signature
is stored using six additional statements. Signing a graph with r MSGs requires
r di erent signatures. The overhead created by the assembly functions is then
6r statements. Thus, the total overhead is bh + 6r statements.
      </p>
      <p>
        B) Minimum Signature Overhead Using the canonicalization function and hash
function of Fisteus et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] leads to a signing process with a minimum signature
overhead. Both functions have a runtime complexity of O(n log n) and a space
complexity of O(n). Thus, the runtime complexity of the signing function N
is O(n log n) and the space complexity is O(n). Since the functions of Fisteus
et al. do not create any additional statements, the signature overhead is solely
determined by the signature graph S. Using a signature graph as in the
example depicted in Fig. 4 results in a signature overhead of 19 statements. When
m graphs are signed at the same time, the m graphs are arranged using RDF
bag. The resulting signature graph is of 19 + 2m statements.
      </p>
      <p>
        C) Minimum Runtime Complexity Using the blank node labeling approach and
incremental hash function of Sayers and Karp [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] leads to a minimum runtime
complexity. In order to detect already handled blank nodes, the blank node
labeling algorithm maintains a list of additional statements created so far. This
list contains at most b entries with b being the total number of additional
statements. Assuming that each statement of a graph can contain no, one, or two
blank nodes and that a blank node is part of at least one statement, the graph
can contain at most twice as many blank nodes as statements, i. e., b 2n. This
results in a space complexity of O(n) of the graph signing function. The signing
overhead consists of b statements added by the blank node labeling algorithm
and 19 statements created by the assembly function for the signature graph S.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Implementation and Examples of Signed Graph Data</title>
      <p>
        Our graph signing approach is designed as component-based software
framework [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Our framework allows for implementing and providing various
algorithms for the di erent steps of the signing process. It is implemented in Java
and can be executed as command-line tool. The tool takes as input a graph or
multiple graphs to sign and the user's private key and generates as output the
signed graph. As output format, we use an extension of the TriG syntax [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. This
extension supports nesting of Named Graphs and thus re ects the framework's
feature of iterative signing graph data. The signature statements are stored
together with the content graphs, i. e., the signed graph data. Please note that
this is just one possible implementation and that di erent output formats can
also be used. It is also possible to store the content graphs separately from the
signature statements. A formalization of the framework is given in our TR [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>The subsequent examples are structured along the scenario given in Section 2.
Fig. 3 shows the graph created in the scenario of Section 2. The graph has di
erent parts signed by di erent parties. Each part is created by applying the graph
signing function and the assembly function. In the following, we demonstrate the
signing process for each party. All examples are based on con guration B of our
framework (see Section 4). The rst four examples (1) to (4a) use Named Graphs
to associate the signature graph with the signed content graphs. In this case, the
relation between the signature statements and the content graphs is implicitly
given by embedding them into the same Named Graph. The last example (4b)
uses a di erent output format which stores the signature statements separately
from the content graphs. In this example, the relation between the signature
statements and the content graphs is explicitly modeled as statements.
ps:ps-sg-4
_:ps-data-4
gt:gt-sg-2
_:gt-data-2
bka:bka-sg-1
_:bka-pattern-1
_:bka-rules-1
cw:cw-sg-3
cw:cw-rules-3</p>
      <p>Example 1: Signing an OWL Graph In the rst step of the scenario, the
BKA creates an ontology design pattern for describing web sites to be blocked
according to x86 of the German Criminal Code. Using this pattern, the BKA
compiles a list of such web sites and encodes it as an OWL graph. It then
signs the list along with the used regulation ontology design pattern. Listing 1
depicts a fragment of the resulting graph. The graph contains the regulation
ontology design pattern, the list of blocked web sites, and a signature graph.
The design pattern contains T-box knowledge of the BKA and is modeled as
a separate graph :bka-pattern-1 shown in lines 20 to 32. The list of blocked
web sites contains A-box knowledge. It is modeled as the graph :bka-rules-1
and shown in lines 33 to 39. Signing both :bka-pattern-1 and :bka-rules-1
results in the Named Graph bka:bka-sg-1 and a signature graph. bka:bka-sg-1
contains the graphs :bka-pattern-1 and :bka-rules-1 as its content graphs
and the signature graph as its annotation graph. The graph bka:bka-sg-1 is
shown in lines 8 to 40 and the signature statements are shown in lines 9 to 19.
bka:bka-sg-1 and its two content graphs :bka-pattern-1 and :bka-rules-1
are also shown in Fig. 3 as part of the graph ps:ps-sg-4.</p>
      <p>
        The complete signature graph created by the assembly function is depicted
in Fig. 4. The signature is de ned in a vocabulary following the XML signature
standard [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. The vocabulary is available from our homepage, referenced in the
provide additional information covering the signature's creator and creation date.
The signature graph stores the computed signature bka:bka-sig-1, its signature
value, and all parameters of the graph signing function required for verifying this
value. In the signature graph, the function is identi ed as bka:bka-gsm-1 and
linked to all its subfunctions. This includes the graph canonicalization function
sig:gcm-fisteus-2010, the graph serialization function sig:gsm-n-triples,
the hash function (also called digest function) sig:dm-md5, the graph hashing
function sig:gdm-fisteus-2010, and the signature function sig:sm-rsa. In
order to verify the signature, the signature graph contains a reference to the
BKA's public key certi cate. The certi cate contains the corresponding public
key of the secret key, which was used as the signature key. The certi cate is
represented as bka:bka-pck-1 and corresponds to an X.509 certi cate [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] issued
by the organization bka:zivit-1.
1 @prefix bka: &lt;http://icp.it-risk.iwvi.uni-koblenz.de/policies/bka-graph#&gt; .
2 @prefix DUL: &lt;http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#&gt; .
3 @prefix flow: &lt;http://icp.it-risk.iwvi.uni-koblenz.de/ontologies/flow_control.owl#&gt; .
4 @prefix proxy: &lt;http://icp.it-risk.iwvi.uni-koblenz.de/ontologies/proxy_flow_control.owl#&gt; .
5 @prefix sig: &lt;http://icp.it-risk.iwvi.uni-koblenz.de/ontologies/signature.owl#&gt; .
6 @prefix tec: &lt;http://icp.it-risk.iwvi.uni-koblenz.de/ontologies/technical_regulation.owl#&gt; .
8 bka:bka-sg-1 {
9 bka:bka-sig-1 a sig:Signature ;
10 sig:hasGraphSigningMethod bka:bka-gsm-1 ;
11 sig:hasSignatureValue "TmV2ZXIgR29ubmEgR2l2ZSBZb3UgVXA=" ;
12 sig:hasVerificationCertificate bka:bka-pck-1 .
13 bka:bka-gsm-1 a sig:GraphSigningMethod ;
14 sig:hasDigestMethod sig:dm-md5 ;
15 sig:hasGraphCanonicalizationMethod sig:gcm-fisteus-2010 ;
16 sig:hasGraphDigestMethod sig:gdm-fisteus-2010 ;
17 sig:hasGraphSerializationMethod sig:gsm-n-triples ;
18 sig:hasSignatureMethod sig:sm-rsa .
19 ...
20 _:bka-pattern-1 {
21 proxy:URLBlockingRuleMethod a owl:Class ;
      </p>
      <p>Example 2: Signing a Named Graph In the scenario, ContentWatch
compiles a blacklist of web sites providing adult content and encodes it as Named
Graph. Signing a Named Graph is similar to signing an RDF/OWL graph.
Listing 2 depicts the signed Named Graph created by ContentWatch. The blacklist
is identi ed as cw:cw-rules-3 (lines 7 to 12). Signing it results in several
signature statements (lines 2 to 6). The statements cover the used graph signing
function cw:cw-gsm-3 (line 3), the created signature value (line 4), and
ContentWatch's public key certi cate cw:cw-pck-3 (line 5). The signature statements
and the Named Graph cw:cw-rules-3 are part of the newly created Named
Graph cw:cw-sg-3 (lines 1 to 13), which contains the signature statements as
its annotation graph and the graph cw:cw-rules-3 as its content graph.
1 cw:cw-sg-3 {
2 cw:cw-sig-3 a sig:Signature ;
3 sig:hasGraphSigningMethod cw:cw-gsm-3 ;
4 sig:hasSignatureValue "SXQncyBibHVlIGxpZ2h0" ;
5 sig:hasVerificationCertificate cw:cw-pck-3 .
6 ...
7 cw:cw-rules-3 {
8 cw:wst-3 a tec:WebSite ; DUL:hasQuality cw:uq-3 ; DUL:hasSetting cw:ri-3 .
9 cw:uq-3 a tec:URLQuality ; DUL:hasRegion cw:ur-3 .
10 cw:ur-3 a tec:URLRegion ; tec:hasURL "http://www.youporn.com/" ; DUL:hasSetting cw:ri-3 .
11 ...
12 }
13 }</p>
      <p>Listing 2. Example of a signed Named Graph.</p>
      <p>Example 3: Iteratively Signing of Graphs The German Telecom receives
the BKA's Named Graph bka:bka-sg-1. This graph contains general regulation
information but does not describe how the regulations shall be implemented by
the ISP. Thus, the German Telecom adds its own RDF graph :gt-data-2
with detailed regulation information including a proxy server and its IP address.
Subsequently, it signs the graph :gt-data-2 together with the received Named
Graph bka:bka-sg-1. The resulting Named Graph gt:gt-sg-2 is depicted in
Listing 3. It contains the created signature statements (lines 2 to 6), the graph
:gt-data-2 created by the German Telecom (lines 7 to 13), and the BKA's
Named Graph bka:bka-sg-1 (lines 14 to 22). The signature statements cover
the used graph signing function gt:gt-gsm-2 (line 3), the resulting signature
value (line 4), and the ISP's public key certi cate gt:gt-pck-2 (line 5). The
Named Graph gt:gt-sg-2 contains the signature statements as its annotation
graph and the two graphs :gt-data-2 and bka:bka-sg-1 as its content graphs.</p>
      <p>Example 4a: Signing Multiple, Distributed Graphs The last party in the
scenario of Section 2 is the primary school. It retrieves the graph gt:gt-sg-2
from the German Telecom and the graph cw:cw-sg-3 from ContentWatch. In
order to enrich the generic information encoded in cw:cw-sg-3 with speci c
regulation details, the school adds its own regulation data as RDF graph :ps-data-4.
This includes a proxy server run by the school. The school signs the graph
:ps-data-4 together with the two graphs cw:cw-sg-3 and cw:cw-sg-3. This
results in the Named Graph ps:ps-sg-4 shown in Listing 4. It contains the
graph :ps-data-4 (lines 7 to 13), the German Telecom's graph gt:gt-sg-2
(lines 14 to 30), and ContentWatch's graph cw:cw-sg-3 (lines 31 to 38). The
school's signature graph contains the used graph signing function ps:ps-gsm-4
(line 3), created signature value (line 4), and the certi cate ps:ps-pck-4 (line 5).
1 ps:ps-sg-4 {
2 ps:ps-sig-4 a sig:Signature ;
3 sig:hasGraphSigningMethod ps:ps-gsm-4 ;
4 sig:hasSignatureValue "QWxsIHlvdXIgYmFzZSBhcmU=" ;
5 sig:hasVerificationCertificate ps:ps-pck-4 .
6 ...
7 _:ps-data-4 {
8 cw:pr-3 DUL:hasQuality ps:naq-4 .
9 ps:naq-4 a tec:NetworkAddressQuality ; DUL:hasRegion ps:ipr-4 .
10 ps:ipr-4 a tec:IPv4AddressRegion ; DUL:hasSetting cw:pi-3, cw:ri-3 ;
11 tec:hasIPAddress "141.26.83.116" ; tec:hasSubnetMask "255.255.0.0" .
12 ...
13 }
14 gt:gt-sg-2 {
15 gt:gt-sig-2 a sig:Signature ;
16 sig:hasGraphSigningMethod gt:gt-gsm-2 ;
Graph ps:ps-sg-4, ps:ps-sg-4 only contains the signature statements and
refers to the signed graphs by their URIs. The signature statements are the
same as in Listing 4 and shown in lines 5 and 6. The signed graphs are modeled
as list (lines 7 to 11) and contains the graphs :ps-data-4, gt:gt-sg-2, and
cw:cw-sg-3.
1 @prefix lst: &lt;http://ontologydesignpatterns.org/cp/owl/list.owl#&gt; .
2 @prefix bag: &lt;http://ontologydesignpatterns.org/cp/owl/bag.owl#&gt; .
4 ps:ps-sg-4 {
5 ps:ps-sig-4 a sig:Signature .
6 ...
7 ps:ps-sg-4 sig:hasSignature ps:ps-sig-4 ; sig:hasContentGraphs _:ps-cgs-1 .
8 _:ps-cgs-1 a lst:List ; lst:hasFirstItem _:cg-ps-data-4 .
9 _:cg-ps-data-4 a lst:ListItem ; bag:itemContent _:ps-data-4 ; lst:nextItem _:cg-gt-sg-2 .
10 _:cg-gt-sg-2 a lst:ListItem ; bag:itemContent gt:gt-sg-2 ; lst:nextItem _:cg-cw-sg-3 .
11 _:cg-cw-sg-3 a lst:ListItem ; bag:itemContent cw:cw-sg-3 .
12 }</p>
      <p>Listing 5. Multiple signed graphs with content graphs referred to by their URI.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper, we presented a</p>
      <p>
        rst version of our generic framework for
iterative signing of distributed RDF(S) graphs, OWL graphs, and Named Graphs.
It supports signing A-box and T-box knowledge at di erent granularity such as
single MSGs, ontology design patterns, and whole graphs. We have discussed
three di erent con gurations of our framework and its implementation and
application based on TriG [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. The complete examples as well as the signature
ontology are available from: http://icp.it-risk.iwvi.uni-koblenz.de/wiki/
Signing_Graphs.
      </p>
      <p>Acknowledgement: We thank Frederik Armknecht and Matthias Krause from
the University of Mannheim, Theoretical Computer Science and IT Security
Group for their very valuable feedback on the security aspects of graph signing
framework. We also thank Peter Schau for implementing our framework.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Tummarello</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morbidoni</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Puliti</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Piazza</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Signing individual fragments of an RDF graph</article-title>
          . In: WWW,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2005</year>
          )
          <volume>1020</volume>
          {
          <fpage>1021</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bartel</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boyer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fox</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>LaMacchia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simon</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>XML signature syntax and processing</article-title>
          .
          <source>W3C</source>
          (
          <year>2008</year>
          ) http://www.w3.org/TR/xmldsig-core/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Schneier</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Protocol Building Blocks</article-title>
          . In: Applied Cryptography. Wiley (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Bundesrepublik</given-names>
            <surname>Deutschland</surname>
          </string-name>
          : x86
          <source>StGB</source>
          (
          <year>1975</year>
          ) http://www. gesetze
          <article-title>-im-internet</article-title>
          .de/stgb/__86.html.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Gangemi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Presutti</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Ontology design patterns</article-title>
          .
          <source>In: Handbook on Ontologies</source>
          . Springer (
          <year>2009</year>
          )
          <volume>221</volume>
          {
          <fpage>243</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kasten</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scherp</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Iterative signing of RDF(S) graphs, Named Graphs, and OWL graphs: Formalization and application</article-title>
          .
          <source>Technical report</source>
          , University of Koblenz-Landau (
          <year>2013</year>
          ) http://www.uni-koblenz.de/~fb4reports/
          <year>2013</year>
          /2013_ 03_Arbeitsberichte.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Carroll</surname>
            ,
            <given-names>J.J.</given-names>
          </string-name>
          :
          <article-title>Signing RDF graphs</article-title>
          .
          <source>In: ISWC 2003</source>
          , Springer (
          <year>2003</year>
          )
          <volume>369</volume>
          {
          <fpage>384</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fisteus</surname>
            ,
            <given-names>J.A.</given-names>
          </string-name>
          ,
          <article-title>Garc a</article-title>
          ,
          <string-name>
            <given-names>N.F.</given-names>
            ,
            <surname>Fernandez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.S.</given-names>
            ,
            <surname>Kloos</surname>
          </string-name>
          , C.D.:
          <article-title>Hashing and canonicalizing Notation 3 graphs</article-title>
          .
          <source>JCSS</source>
          <volume>76</volume>
          (
          <year>2010</year>
          )
          <volume>663</volume>
          {
          <fpage>685</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Sayers</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karp</surname>
            ,
            <given-names>A.H.</given-names>
          </string-name>
          :
          <article-title>Computing the digest of an RDF graph</article-title>
          .
          <source>Technical report, HP Laboratories</source>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Beckett</surname>
          </string-name>
          , D.:
          <string-name>
            <surname>N-Triples</surname>
          </string-name>
          .
          <source>W3C</source>
          (
          <year>2001</year>
          ) http://www.w3.org/2001/sw/RDFCore/ ntriples/.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Bizer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cyganiak</surname>
          </string-name>
          , R.:
          <article-title>TriG: RDF Dataset Language</article-title>
          .
          <source>W3C</source>
          (
          <year>2013</year>
          ) http://www. w3.org/TR/trig/.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Melnik</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : RDF API draft (
          <year>2001</year>
          ) http://infolab.stanford.edu/~melnik/rdf/.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. NIST:
          <article-title>Secure hash standard</article-title>
          .
          <source>FIPS PUB 180-4</source>
          (
          <year>2012</year>
          ) http://csrc.nist.gov/ publications/fips/fips180-4/fips-180-4.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. NIST:
          <article-title>Digital signature standard (DSS)</article-title>
          .
          <source>FIPS PUB 186-3</source>
          (
          <year>2009</year>
          ) http://csrc. nist.gov/publications/fips/fips186-3/fips_
          <fpage>186</fpage>
          -
          <lpage>3</lpage>
          .pdf.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Rivest</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shamir</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Adleman</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>A method for obtaining digital signatures and public-key cryptosystems</article-title>
          .
          <source>CACM</source>
          <volume>21</volume>
          (
          <year>1978</year>
          )
          <volume>120</volume>
          {
          <fpage>126</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Sayers</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karp</surname>
            ,
            <given-names>A.H.</given-names>
          </string-name>
          :
          <article-title>RDF graph digest techniques and potential applications</article-title>
          .
          <source>Technical report, HP Laboratories</source>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Beckett</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>RDF/XML syntax speci cation</article-title>
          .
          <source>W3C</source>
          (
          <year>2004</year>
          ) http://www.w3.org/ TR/rdf-syntax-grammar/.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Motik</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.F.</given-names>
          </string-name>
          :
          <article-title>OWL 2 web ontology language XML serialization</article-title>
          .
          <source>W3C</source>
          (
          <year>2009</year>
          ) http://www.w3.org/TR/owl2-xml-serialization/.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Szyperski</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Component software: beyond object-oriented programming</article-title>
          .
          <source>Pearson Education</source>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Groth</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moreau</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>An overview of the prov family of documents</article-title>
          .
          <source>W3C</source>
          (
          <year>2013</year>
          ) http://www.w3.org/TR/prov-overview/.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Cooper</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Santesson</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Farrell</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boeyen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Housley</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polk</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Internet X.509 public key infrastructure</article-title>
          .
          <source>RFC 5280</source>
          ,
          <string-name>
            <surname>IETF</surname>
          </string-name>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>