<!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>
      <journal-title-group>
        <journal-title>Hersonissos, Greece
$ sebastian.schmid@fau.de (S. Schmid); daniel.schraudner@fau.de (D. Schraudner);
andreas.harth@iis.fraunhofer.de (A. Harth)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>The Rights Delegation Proxy: An Approach for Delegations in the Solid Dataspace</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sebastian Schmid</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniel Schraudner</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Harth</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Fraunhofer Institute for Integrated Circuits IIS</institution>
          ,
          <addr-line>Nuremberg</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Friedrich-Alexander-Universität Erlangen-Nürnberg</institution>
          ,
          <addr-line>Nuremberg</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2024</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>We propose the Rights Delegation Proxy to check and execute delegations in dataspaces building on the Social Linked Data project (Solid). The Rights Delegation Proxy ensures privacy by keeping delegation details hidden and validates delegated actions against policies for legitimacy. We show our implemented architecture in a loan contract scenario, where a person signs a contract on behalf of a company with a bank. Additionally, we analyze the flow of our architecture for privacy and legitimacy using formal models.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>• Delegator: an agent that defines a policy for a delegate to act in the delegator’s name
An example of a delegation is a company SME (delegator) that grants its employee Alice
(delegate) the right to sign contracts on its behalf (policy) with BigBank (afiliate). Considering
the requirements delegators have for a delegation, we obtain three basic points:
R1 Privacy: An afiliate shall not necessarily be informed, whether a delegation has happened
and who is the delegate.</p>
      <p>R2 Legitimacy: Every taken action by the delegate shall be validated against the policies as
defined by the delegator and only approved actions may happen.</p>
      <p>R3 Completeness: Every initiated action by a potential delegate shall receive a response.</p>
      <p>A conventional delegation process in SDS may use access and manipulation rights for
resources based on Web Access Control (WAC)1, e.g. read, write, append rights based on Access
Control Lists (ACL). While ACLs ensure that at least authenticated or specified agents may use
the granted rights, only small extensions for more complex agent structures are possible by
using vCard groups2 in Solid. With groups, the hierarchy has to stay flat as no nesting of groups
and rights is possible, while the members of a group need to be shared with external afiliates
who need to check if acting agents are part of a group defined in the ACL.</p>
      <p>
        The conventional delegation process is even less attractive when considering privacy issues
(cf. General Data Protection Regulation [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]) - there is neither a per se necessity for a delegator
to share that an action was delegated nor the need to share the delegate’s identity. A delegate’s
identity and the delegation act are revealed to an afiliate who has to set the corresponding
ACLs, despite, the delegate’s potential interest to stay secret towards an afiliate. The afiliate
shall only know that the action was taken and to that extent that the party that was originally
granted that right, the delegator, has taken the action.
      </p>
      <p>
        Dataspace proposals like the International Data Space (IDS) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] or GAIA-X [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] try to solve
delegations via connectors, however, introduce complexities by building on specific architectures
and custom protocols instead of using established Web technologies, but promise to ofer
trustworthy and sovereign data sharing instead [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. An extension of IDS and GAIA-X with
verifiable credentials can address delegations of data processing [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], but the question is left
unanswered how much privacy remains for delegators and delegates in an IDS delegation. Solid
in its current state implements a solution based on ACLs on a resource- and WebID-bound level,
which is insuficient for delegations. The possibility to declare rights for groups of WebIDs
lacks the sophistication to mirror more complex hierarchies. Besides, the SDS ofers a
Webbased solution for dataspaces instead of custom protocols. All in all, current solutions lack an
elaborated mechanism to ensure a GDPR-conformant solution that separates the identities of
delegator and delegate, as well as the possibility of keeping the delegation itself hidden.
      </p>
      <p>
        As we see the SDS approach as the most promising to realize dataspaces, because of the SDS
foundation on Web standards, easy adoption, interoperability, and inherently decentralized
architecture, we propose to extend Solid’s architecture on the dataspace application layer, where
currently aspects of certification and policy enforcement are lacking [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]: we present the Rights
Delegation Proxy (RDP) as an approach for private and legitimate data sharing and delegations.
1https://solidproject.org/TR/wac
2https://www.w3.org/2006/vcard/ns#Group
      </p>
      <p>Alice
(delegate)</p>
      <p>SME
(delegator)</p>
      <p>BigBank
(affiliate)
2</p>
      <p>Sign
document
1</p>
      <p>Furthermore, the overall architecture shall be compatible with the inherently decentralized
style of the Web and allow automated validation and execution of actions in a delegation. Our
contributions are:
• We present the architecture of the Rights Delegation Proxy and its implementation to
extend Solid dataspaces that enable privacy and legitimacy for delegations among agents
• We give formal proof to show that our architecture fulfills the requirements of privacy
and legitimacy for delegations among agents and compare our architecture formally to a
conventional delegation process based on the example of a loan signature delegation</p>
    </sec>
    <sec id="sec-2">
      <title>2. Running example</title>
      <p>We explain our running example, where two legal entities, the banking institution BigBank and
the enterprise SME, and the natural person Alice interact. We show a simplified, conventional
delegation process for a loan contract that contains a delegation (see also Fig. 1):
Example 1 Because of a previous business relation, SME received a loan ofer from BigBank.
Today, the ofer has to be signed such that SME gets the loan. SME defines a policy that its
employee Alice has the right to sign loan ofers from BigBank and informs BigBank about the
policy (1). Alice concludes that the ofer is beneficial for SME and gives her signature as "on
behalf of SME, Alice" (2). The contract is sent back to BigBank (3) and some days later, SME
receives the details to access their money.</p>
      <p>SME and BigBank are legal entities that cannot act on their own - a natural person has to
act "on behalf of" them via a delegation. Here, the natural person Alice acts on behalf of SME
where Alice is accepting the ofer by giving her signature (that is acting) for SME. Similarly, but
not shown here, BigBank has to delegate its actions, e.g. ofering the loan contract. Consider
the implications that the example loan process hides in terms of delegation:
• SME (the delegator) defines a right to sign loan ofers (a policy) for Alice (the delegate)
via her role in the organization and thus creates a delegation.
• The delegation to Alice is an SME internal step that is shared externally, here with BigBank
(an afiliate). The loss of privacy is necessary to declare that Alice may sign on behalf
of SME, otherwise BigBank would receive a signature from an unknown natural person
called Alice who only claims to act on behalf of SME.
• Alice could have signed even if she did not receive a delegation. Although the misconduct
could be detected later on, loss of reputation and money can be the consequence.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Background and related work</title>
      <sec id="sec-3-1">
        <title>3.1. The Solid project</title>
        <p>
          Solid is a collection of technological specifications for read/write Linked Data supported by
authentication and authorization [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Solid builds on the RESTful HTTP specification of Linked
Data Platform (LDP)3 for manipulating and controlling data resources, and on (Semantic) Web
standards [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. Solid aims to be easy to integrate by using lightweight specifications without
restrictions to the used database backend. Access control to resources is realized via WAC or
ACP. We briefly define two crucial concepts of Solid:
• Solid storage:4 a place for storing resources managed by access control. The physical
location and identity provider can be freely chosen or self-hosted.
• Solid agent:5 a person, social entity, or software identified by an HTTP URI called
        </p>
        <p>WebID6, including a profile to uniquely describe the denoted agent.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Dataspaces and Solid dataspaces</title>
        <p>
          The idea of dataspaces shall help to manage multiple data sources with multiple schemas [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ],
mostly for single stakeholders that lack control or ownership across multiple required data
sources. Initiatives like the International Data Space (IDS) [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] or GAIA-X [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] picked up
dataspaces for datasharing that uses standards, governance models, and a secure and standardized
data exchange, with a focus on multiple participants across organizations and data sovereignty
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Meckler et al. [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] identified Solid as a viable framework for decentralized dataspaces,
called Solid dataspaces: Solid builds on established technologies for interoperability like the
Web for communication and Linked Data for data, while Solid itself specifies the interaction,
and dataspaces on top of Solid can be extended for additional processes and protocols.
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Delegation and power of attorney</title>
        <p>
          Concerning the power of attorney, an agent (called delegate or attorney-in-fact) may be granted
the authority to act on behalf of someone else (called delegator or principal) [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], e.g. usually
an organization or entity, and make decisions or enter into agreements on their behalf. While
national laws of delegation and the range may vary, the authority for business afairs includes
3https://www.w3.org/TR/ldp/
4formerly known as Solid Personal Online Data (Pod) (https://solidproject.org/TR/protocol#storage)
5https://solidproject.org/TR/protocol#agent
6https://www.w3.org/2005/Incubator/webid/spec/tls/
e.g. contract negotiation and signature rights [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. The limits of a power of attorney have to be
considered and stated carefully, as abuse of power or lost income may be the consequence [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Approach</title>
      <sec id="sec-4-1">
        <title>4.1. Solid agents</title>
        <p>We assume that all involved roles are represented as authenticated Solid agents (see Sec. 3.1). We
do not make assumptions on how delegator and delegate share their delegation, or how afiliate
and delegator agree on granted rights for the prepared location and regard this communication
as domain dependent and thus out of scope.</p>
        <p>Afiliate The afiliate stores web resources on a Solid storage that the delegator may access
or manipulate. Thus, the afiliate needs to know the delegator’s WebID to define ACLs for the
Web resource with respective rights for the delegator.</p>
        <p>Delegator The delegator defines policies that connect the delegate’s WebID and the afiliate’s
web resource, so the delegator knows the delegate’s WebID as well as which applicable rights
shall be granted to the delegate. The granted rights may include all or a subset of the delegator’s
rights towards the afiliate. Additionally, the delegator uses and authorizes an RDP, e.g. as an
own service or hosted by a provider, and shares where policies and logs are stored.
Delegate The delegate ideally (but not necessarily) knows the delegator’s granted rights, the
URI of the afiliate’s web resource that shall be accessed or manipulated, and the RDP’s URI
such that the delegation may be enacted.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Running example revisited</title>
        <p>Compared to the conventional delegation process of Sec. 2, our architecture uses the Solid
dataspace where an Rights Delegation Proxy acts as a mediator between the legal entities and
natural persons. Again, Alice shall sign a loan contract with BigBank for SME (see also Fig. 2):
Example 2 SME has to sign a loan ofer from BigBank to get the loan. To receive the
signature, BigBank prepared a resource https://bankpod.net/signHere that shall hold
the digital signature. As BigBank expects SME to sign the contract, BigBank created an
ACL signHere.acl with acl:Read and acl:Write rights exclusively for SME’s WebID
https://smepod.net/profile/card#me.</p>
        <p>SME defines a policy at https://smepod.net/policies that Alice, is authenticated
by her WebID https://alice.solidcommunity.net, has the right to sign loan
offers from BigBank (1). Alice sends an HTTP PUT request to the RDP pointing to
https://bankpod.net/signHere to give the signature (2). The RDP receives Alice’s
authenticated request and her WebID. RDP gets (3) and checks (4) the SME’s defined policies if
Alice’s WebID has a granted delegation for https://bankpod.net/signHere, and logs the
received request (5).
alice.solidcommunity.net
(delegate)
rdp.org
(RDP)
Existing business relation
PUT /signHere?uri=bankpod.net</p>
        <p>2
204 No Content 8</p>
        <p>Authorize proxy</p>
        <p>3
GET /policies</p>
        <p>200 OK
evaluate 4
policy
5 PUT /logs/2024-01-01
201 Created
smepod.net
(delegator)
1</p>
        <p>Define
policy
4</p>
        <p>GET /signHere</p>
        <p>200 OK
6 PUT /signHere
204 No Content 7</p>
        <p>As Alice fulfills the policy, RDP forwards Alice’s request to the specified
https://bankpod.net/signHere (6), but changes the authentication to SME. At
BigBank, an authenticated request arrives from SME’s WebID. As the ACL is set for SME’s
WebID the signature is created to accept the loan (7), and the response forwarded to Alice (8).</p>
        <p>From BigBank’s perspective, only SME was involved as the request came from SME’s WebID.
But while the legal body of SME could still not act on its own, Alice initiated the action which
resulted in an accepted ofer. Again, we consider the implications:
• SME delegates to sign the contract with BigBank to Alice via a defined policy. The
delegation is not shared with BigBank.
• BigBank knows and anticipates only SME, so the ACL lets only SME interact with the
protected resource, but not Alice.
• The signature comes from SME directly after being checked against the policies. SME has
thus been informed and approved of the interaction.
• Alice may only sign after SME defines and approves the delegation via a policy. Without
a valid policy, the RDP does not forward Alice’s request. A request from Alice directly to
BigBank would be blocked as unauthorized from the ACL.</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Implementation of the Rights Delegation Proxy architecture</title>
        <sec id="sec-4-3-1">
          <title>4.3.1. Rights Delegation Proxy</title>
          <p>Below, we present an overview of the interactions between the Solid agents and the RDP during
the delegation process. We use Fig. 2 to illustrate how the delegation works for our running
example from Sec. 4.2.
1. The delegator defines a policy that states the delegate’s rights of transactions towards the
afiliate. We discern two types of policies that are evaluated: pre-conditions and post-conditions.
• Pre-conditions define how a to-be-accessed resource has to look like before the delegate
may access it.</p>
          <p>• Post-conditions define how a resource has to look like after the delegate accessed it.
LoanContractShape LoanContractSignedShape
ea&lt;xL[:oefoaxr:nLCCouoasnntCtormoancettrSr[ahscamtp]ee}:&gt;mCe]L;OSED{ eea&lt;xxL[::oefsoaixgr:nLnCCoeuoadsnnt[Ctotrmroaunceettr]Sr[ai}gscmnt]ee;d: mShea];pe&gt; CLOSED{</p>
          <p>The afiliate created a resource at https://bankpod.net/signHere together with an
ACL with read and write rights for SME:
https://bankpod.net/signHere https://bankpod.net/signHere.acl</p>
          <p>@prefix acl: &lt;https://www.w3.org/ns/auth/acl#&gt; .
&lt;&gt; a ex:LoanContract ; &lt;&gt; a acl:Authorization ;
ex:forCustomer acl:accessTo &lt;./signHere&gt; ;
&lt;https://smepod.net/profile/card#me&gt; . acl:agent &lt;https://smepod.net/profile/card#me&gt; ;
acl:mode acl:Read, acl:Write .
2. The delegate makes an authenticated HTTP request to the Rights Delegation Proxy, where
the accessed path is equal to the web resource at the afiliate and the query contains the host of
the afiliate’s URI.</p>
          <p>Fig. 2, step 2: Alice is authenticated as https://alice.solidcommunity.net/profile/card#me
and sends a PUT request to the RDP at https://rdp.org/signHere?uri=https://bankpod.net
as Alice wants to access https://bankpod.net/signHere as a delegate. To sign the
contract, the message body contains:
3. The RDP receives the request, verifies the delegate’s identity using the Solid-OIDC WebID
claim, and extracts the afiliate’s URI as well as the path to the web resource. The RDP looks up
suiting policies at the delegator depending on the WebID or web resource.</p>
          <p>Fig. 2, step 3: The RDP receives the HTTP PUT request from
https://alice.solidcommunity.net/profile/card#me, verifies the identity, and
retrieves defined policies from https://smepod.net/policies for Alice’s WebID.
4. The RDP evaluates if the delegate’s request is valid concerning the policy’s conditions.
• To check a pre-condition, the RDP does a "preflight GET request" to the requested resource
and evaluates if the response matches the pre-condition. If not, the RDP responds to the
delegate with a 403 Forbidden.
• To check a post-condition, the RDP evaluates if the message body, which contains the
to-be-expected resource state, adheres to the post-condition. If the post-condition does
not hold, the RDP responds with 403 Forbidden.</p>
          <p>Fig. 2, step 4: In the retrieved policy, RDP finds two ShEx shapes as pre- and post-condition. For
the pre-condition, RDP does a "preflight" GET request to https://bankpod.net/signHere,
validates the retrieved state with LoanContractShape, and finds it valid. For the post-condition,
RDP extracts the content of the PUT request, validates it with LoanContractSignedShape, and
ifnds it valid, too.
5. After checking the request, the RDP logs the applied policy, its result as well as time, content,
accessed resource, and requesting WebID at a location defined by the delegator.</p>
          <p>Fig. 2, step 5: The RDP logs Alice’s request to https://bankpod.net/signHere at
https://smepod.net/logs/2024-01-01 with:
&lt;&gt; a ex:Log ;
ex:checkedPolicy (&lt;LoanContractShape&gt; &lt;LoanContractSignedShape&gt;);
ex:forAgent &lt;https://alice.solidcommunity.net/profile/card#me&gt; ;
ex:forRessource &lt;https://bankpod.net/signHere&gt; .
6. The RDP authenticates as delegator to forward the checked request to the resource as
specified by the delegate in the query string.</p>
          <p>Fig. 2, step 6: The RDP authenticates as https://smepod.net/profile/card#me via
Solid OIDC and forwards Alice’s HTTP PUT request to https://bankpod.net/signHere
such that the state is now:
7. The afiliate responds to the RDP as the sender of the forwarded request. The RDP logs the
response.</p>
          <p>Fig. 2, step 7 : The afiliate https://bankpod.net responds to the RDP https://rdp.org
with 204 No Content as the HTTP PUT was enacted as requested.
8. The RDP sends the afiliate’s response to the delegate and concludes the flow of messages
for the initiated request.</p>
          <p>Fig. 2, step 8: The RDP https://rdp.org sends the afiliate’s response 204 No Content back
to Alice.</p>
          <p>As a remark, if the afiliate responds with error codes, e.g. 500 Internal Server Error, the RDP
forwards the messages to the client and logs the error.</p>
        </sec>
        <sec id="sec-4-3-2">
          <title>4.3.2. Implementation</title>
          <p>Our implementation for the RDP is available online 8. We use node.js9 and express.js10 as a
web framework for the RDP server side and use the OIDC library Jose 11 to handle the Solid
authentication. We use ShEx12 to express pre- and post-conditions of policies.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Proof</title>
      <p>
        We used ProVerif [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], an established software for protocol verification with formal models, to
analyze the RDP approach and present a formal proof for the correctness of our approach. Note
that our proof focuses on the correctness of the delegation process via events and makes no
claims about cryptographic security. We make the explicit assumption that Transport Layer
Security and Solid OpenID Connect13 are correct and functionable during the RDP process.
Our ProVerif models, written in applied  -calculus, are available online 14. ProVerif defines
concurrent processes that use channels to communicate with each other. Channels may transport
names that act as constants.
      </p>
      <p>8https://github.com/wintechis/delegation-proxy
9https://nodejs.org/en
10https://expressjs.com/
11https://github.com/cisco/node-jose
12https://shex.io/
13https://solidproject.org/TR/oidc
14https://github.com/wintechis/delegation-proxy</p>
      <sec id="sec-5-1">
        <title>5.1. Components</title>
        <p>We assume the following processes that represent the roles and agents in a delegation: clients
, the RDP , the delegator , and the afiliate .</p>
        <p>We define a client as a process that wants to send an operation to the afiliate. In case a client
received a delegation before, it is also considered a delegate: we instantiate two clients with
a to-be-performed operation , the client  (that is also a delegate) and the client  (that
is not a delegate), where  is initialized with a name   and  is initialized with
 .  regards  as delegate and knows the client’s   together with an
allowed operation  which defines the policy.  knows the delegator’s  , also with
an allowed operation .  only knows the delegator’s name.</p>
        <p>We give the system with the RDP in the style of ProVerif15, where for two processes  and 
we call  | a parallel composition of  and  (processes run in parallel), and ! an infinite
composition  | | . . . , which denotes an unbounded number of processes:
!( ( , )| ( , )|( )|( , )|( , ))</p>
      </sec>
      <sec id="sec-5-2">
        <title>5.2. Checked properties</title>
        <p>In Sec. 1 we identified three requirements for delegations from which we derive goals to prove
in ProVerif:</p>
        <p>R1 Privacy: afiliates shall not know whether a delegation has happened
R2 Legitimacy: all delegate actions are validated against delegator’s policies
R3 Completeness: clients shall receive a response to all of their requests</p>
        <p>The following goals shall ensure that the delegation process is correct. Each goal G1-3 maps
directly to the corresponding requirement R1-3:</p>
        <p>G1 The afiliate  will never get to know a client ’s name, regardless of whether ’s name
was a delegate or not according to the delegator .</p>
        <p>G2 For all messages a client  or  sends to the afiliate  (possibly using the RDP ),
the delegator ’s policies have been validated.</p>
        <p>G3 For all messages a client  or  sends to the afiliate  (possibly using the RDP ),
the client will receive a response afterwards.</p>
        <p>Thus, we define events that may occur during the exchange:
•   - event emitted by a client  after sending a message
•  - event emitted by a client  after receiving a response
•  - event emitted by the delegator  after providing policies for validation
• affReceivesMsg - event emitted by afiliate  after accepting a message</p>
        <p>We represent our goals as injective correspondences in ProVerif where  →−  is true for two
events  and  if and only if when there is an occurrence of  , then there is a distinct earlier
occurrence of  before that is  and  have a one-to-one-relationship. For a fact  , e.g. a name,
we check with attacker( ) if  is accessible on a public channel. Here, we check for facts
arriving at the afiliate (see Sec. 5.3). We want the following goals to hold as true.
15https://bblanche.gitlabpages.inria.fr/proverif/manual.pdf
G1 ¬attacker( ) and ¬attacker( )
G2 affReceivesMsg→−</p>
        <p>G3 →−</p>
      </sec>
      <sec id="sec-5-3">
        <title>5.3. Modeled processes for RDP architecture</title>
        <p>We give the processes of Sec. 5.1 in detail, as used in ProVerif. With Solid OIDC, we assume the
channels between clien→t← RDP, RDP→← delegator, and RD→P← afiliate as private. Sending a
name via a channel is equal to being authenticated via the name’s respective identity provider.</p>
        <p>Note that we create a  at the client at the beginning of the process, similar to a session
ID. While there is no explicit nonce in the RDP, we use it in our model to check for the injective
correspondence of events. It serves no further purpose.
5.3.1. Client 
The client sends its name and used operator via channel  to the RDP and expects an answer
at channel .
let client(clientname:Name, op:bitstring) =
new nonce:bitstring;
let m0 = (clientname, op, nonce) in event clientSendName(nonce) ;
out(cout, m0);
in(cin, m4:bitstring) ;
let (resp:bitstring,nonce2:bitstring) = m4 in if nonce = nonce2 then
event clientReceiveResponse(nonce) .</p>
        <sec id="sec-5-3-1">
          <title>5.3.2. Rights Delegation Proxy</title>
          <p>The RDP receives a name and desired operator of the clients on channel . The RDP sends
the client’s name to the delegator via channel  to receive a policy as the answer on channel
. If the policy matches the client name and operator, the delegator’s name and operator
are sent to the afiliate on channel affin and the response received on channel affout. The client
receives the response to its request on channel .
let rdp(orgName:Name) =
in(cout, m0:bitstring) ;
let (xname:Name , xop:bitstring, nonce:bitstring) = m0 in
let m1 = (xname, nonce) in out(orgin, m1) ; (* send Name to delegator *)
in(orgout, m2:bitstring) ;
let (polName:Name, polOp:bitstring, nonce2:bitstring) = m2 in
if (xname, xop, nonce) = (polName, polOp, nonce2) then
let m3 = (orgName, xop, nonce) in out(affin, m3 );
in(affout, m4:bitstring); (* proxy response*)
let (resp:bitstring,nonce3:bitstring) = m4 in
if nonce = nonce3 then event rdpWasSuccessful(nonce);
out(cin, m4) .
5.3.3. Delegator 
The delegator receives requests from the RDP via channel . The RDP receives a response
via channel , depending on the relayed name being equal to the initialized value of the
delegator that is if it matches a policy.
let delegator(okName:Name, okOp:bitstring) =
in(orgin, m1:bitstring ) ;
let (yname:Name, nonce:bitstring) = m1 in
if yname = okName then event orgOK(nonce) ;
let m2 = (okName, okOp, nonce) in out(orgout, m2) .
5.3.4. Afiliate 
The afiliate receives a name and operation from the RDP via the channel affin and checks if
the name is equal to the known delegator name as well as the operation being allowed. The
afiliate responds via channel affout and sends the received name to a public channel . We
use the public channel functionality of ProVerif to check which name reaches the afiliate and
which does not (see Sec. 5.2). Note that a client  sending a request directly to  will always
result in a negative response, as  only accepts requests carrying the delegator’s name.
let affiliate(orgName:Name, op:bitstring) =
in(affin, m3:bitstring) ;
let (zname:Name, zop:bitstring, nonce:bitstring) = m3 in
if (zname, zop) = (orgName, op) then event affReceivesMsg(nonce) ;
let m4 = (OK,nonce) in out(affout,m4) ;
out(pub,zname) . (* check if affiliate received client Name*)</p>
        </sec>
      </sec>
      <sec id="sec-5-4">
        <title>5.4. Proof results</title>
        <sec id="sec-5-4-1">
          <title>5.4.1. Results for RDP</title>
          <p>ProVerif proved that for the presented architecture of Sec. 5.3 that indeed</p>
          <p>G1 ¬attacker( ) = true and ¬attacker( ) = true
G2 affReceivesMsg→−  = true</p>
          <p>G3 →−   = true
meaning that the afiliate will not get to know a client’s or delegate’s name, that a delegate’s
message using the RDP will always reviewed by the delegator, and that any client will receive a
response to a request. These proofs are independent of a client being a delegate.</p>
        </sec>
        <sec id="sec-5-4-2">
          <title>5.4.2. Comparison to conventional delegation</title>
          <p>For comparison, we analyzed a conventional delegation without an RDP, based on Fig. 1, with
!( ( , )|( , )|( , )|( , ))
where  sends its policy with the delegate’s   to  (similar to setting ACLs to include
the delegate), and clients  send their name and operation directly to . We find that in the
conventional delegation</p>
          <p>G1 ¬attacker( ) = false and ¬attacker( ) = false
G2 affReceivesMsg→−  = true</p>
          <p>G3 →−   = true
meaning that a client’s or delegate’s name does not stay hidden from the afiliate after receiving
a message, that a delegate’s message is only accepted after the delegator informs the afiliate of
the applied policy, and that any client will receive a response to a request.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Discussion</title>
      <p>We proposed the RDP to address the gap of more complex delegations in Solid dataspaces.
Up to now, only basic possibilities exist to define delegated actions, but with the RDP, we
extend the architecture by introducing an active component that checks the actions of delegates
while keeping their privacy and still makes sure that every tracked, forwarded action on the
delegator’s behalf is legitimate.</p>
      <p>The RDP acts in its presented state as a necessary medium between the explicitly separated
agents delegator, delegate, and afiliate. As all actions of the delegate have to go through the
RDP and the RDP can authenticate (like a Solid App) as the delegator, the RDP is a component
with high responsibility and no delegated action may happen without it. As a consequence,
we shift the power over actions to the delegator by having exclusive control over policies,
while shifting responsibility away from the afiliate, who has to know only the delegator and
nobody else. The delegate powers are (rightfully) limited to exist only in the defined policies.
The enhanced responsibility of RDP thus solves the privacy problem straightforwardly: with
authentication as delegator (comparable to the usage of a Solid App through the delegator),
there is no diferentiation of the action’s origins towards a third party, while the delegate’s
identity is obfuscated. Solid OIDC establishes an authenticated and trusted connection between
agents in our architecture.</p>
      <p>
        Admittedly, the RDP as presented in our example appears a centralized component that
manages all incoming delegated requests, which presents a bottleneck and a potential single
point of failure [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Handling a single request, however, is independent of other requests
such that multiple instances of an RDP may be run in parallel. Here, a load balancer may
distribute incoming requests to several RDP instances to scale for big organizations. The RDP
authenticates as the delegator to execute actions which currently needs the delegator to share
credentials with the proxy, which might pose a security issue if the RDP is implemented and
handled carelessly. For the authentication of the RDP, OIDC ofers the possibility to use client
credentials, Solid IDPs, however, are not forced to ofer client credentials by Solid OIDC.
      </p>
      <p>
        For illustration, our example in Sec. 4.3.1 uses a simplistic, custom approach with ShEx
shapes for policies. The specific implementation is of course subject to the applied use case of
the RDP, but we see huge potential for other approaches that make complex, custom policies
for large organizations possible: the Open Rights Digital Language16 may be used to define
post-condition via obligations and pre-conditions via constraints. SPARQL17 ASK queries can
be used instead of shapes to evaluate the pre- and post-conditions. If the specified conditions
in the query are met (as with shapes), the delegate request is forwarded. As organizations
often use Business Process Model and Notation (BPMN) to describe more complex workflows
(e.g. a contract may only be signed after an accountant agrees), ontologies like WiLD [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]
can be used to represent and monitor workflows similarly and be validated by the RDP. We
connect delegates and policies explicitly via WebIDs. For organizations, the connection can
be broadened to include memberships in departments or specific roles e.g. modeled in the
organization ontology ORG18. In any case, the complexity and number of policies have to be
chosen carefully as the RDP needs time to validate all policies associated with a request, which
may lead to delays.
      </p>
      <p>All in all, we argue that our presented approach to extend the Solid dataspace with an Rights
Delegation Proxy component leads to a more flexible, privacy-respecting, secure delegation
mechanism that builds directly on existing Web standards.</p>
    </sec>
    <sec id="sec-7">
      <title>7. Conclusion and outlook</title>
      <p>We present a solution for the gap of possible delegation between agents in the Solid dataspace
which we call the Rights Delegation Proxy (RDP). With the Rights Delegation Proxy, a delegating
party can define and check policies over actions while a delegate can exercise rights with their
privacy respected. An afiliate that receives these actions can still ensure that the actions are
taken by the delegating party, as opposed to conventional delegation processes. We base our
approach on Solid, Linked Data, and Web technologies to describe and implement an RDP that
checks, logs, and forwards HTTP requests of delegates to an afiliate for defined policies by the
delegator. We show the system in the context of our running example, a loan contract scenario
where a natural person signs a contract on behalf of a company.</p>
      <p>In the future, we want to extend the RDP towards more sophisticated policies to define
delegations, which includes the possible use of SPARQL ASK queries and reasoning to distinguish
internal and external relationships in organizations.</p>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgments</title>
      <p>This work is partially funded by the German Federal Ministry of Education and Research via the
MANDAT project (FKZ 16DTM107A). The authors thank Christoph H.-J. Braun for his advice
regarding ProVerif and the models.</p>
      <p>16https://www.w3.org/TR/odrl-model/
17https://www.w3.org/TR/sparql11-overview/
18https://www.w3.org/TR/vocab-org/</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Russell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Norvig</surname>
          </string-name>
          , Artificial Intelligence:
          <string-name>
            <given-names>A Modern</given-names>
            <surname>Approach</surname>
          </string-name>
          , 3rd ed., Prentice Hall Press, USA,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>M. M. Hughes</surname>
          </string-name>
          ,
          <article-title>Remedying financial abuse by agents under a power of attorney for finances, Marquette Elder's Advisor 2 (</article-title>
          <year>2012</year>
          )
          <fpage>39</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>W. C.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <article-title>Supported decision-making proxy decision-making : A legal perspective</article-title>
          ,
          <year>2015</year>
          . URL: https://api.semanticscholar.org/CorpusID:53399327.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Capadisli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Berners-Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Verborgh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Kjernsmo</surname>
          </string-name>
          , Solid Protocol,
          <year>2021</year>
          . URL: https: //solidproject.org/TR/protocol.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Meckler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Dorsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Henselmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          ,
          <article-title>The Web and Linked Data as a Solid Foundation for Dataspaces</article-title>
          ,
          <source>in: Companion Proceedings of the ACM Web Conference</source>
          <year>2023</year>
          , WWW '23 Companion, Association for Computing Machinery, New York, NY, USA,
          <year>2023</year>
          , p.
          <fpage>1440</fpage>
          -
          <lpage>1446</lpage>
          . URL: https://doi.org/10.1145/3543873.3587616.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <article-title>[6] Parliament and Council of the European Union, Regulation (EU) 2016/679 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data</article-title>
          ,
          <source>and repealing directive</source>
          <volume>95</volume>
          /46/EC (General
          <source>Data Protection Regulation)</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Steinbuss</surname>
          </string-name>
          , et al.,
          <source>IDS Reference Architecture Model 4. Technical Report</source>
          ,
          <year>2024</year>
          . URL: https:// github.com/International-Data-Spaces-Association/IDS-RAM_
          <article-title>4_0?tab=readme-ov-file.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Gaia-X</surname>
          </string-name>
          ,
          <string-name>
            <surname>Gaia-X Architecture</surname>
          </string-name>
          Document -
          <volume>22</volume>
          .04 Release,
          <year>2022</year>
          . URL: https://docs.gaia-x.
          <source>eu/ technical-committee/architecture-document/22</source>
          .04/.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9] H. Meyer zum Felde,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kollenstart</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Bellebaum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Dalmolen</surname>
          </string-name>
          , G. Brost,
          <article-title>Extending actor models in data spaces</article-title>
          ,
          <source>in: Companion Proceedings of the ACM Web Conference</source>
          <year>2023</year>
          , WWW '23 Companion, Association for Computing Machinery, New York, NY, USA,
          <year>2023</year>
          , p.
          <fpage>1447</fpage>
          -
          <lpage>1451</lpage>
          . URL: https://doi.org/10.1145/3543873.3587645.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Mansour</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Sambra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Hawke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zereba</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Capadisli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ghanem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Aboulnaga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Berners-Lee</surname>
          </string-name>
          ,
          <article-title>A Demonstration of the Solid Platform for Social Web Applications</article-title>
          ,
          <source>in: Proceedings of the 25th International Conference Companion on World Wide Web - WWW '16 Companion</source>
          , ACM Press,
          <year>2016</year>
          , pp.
          <fpage>223</fpage>
          -
          <lpage>226</lpage>
          . doi:
          <volume>10</volume>
          .1145/2872518.2890529.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Franklin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Halevy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Maier</surname>
          </string-name>
          ,
          <article-title>From databases to dataspaces: a new abstraction for information management</article-title>
          ,
          <source>SIGMOD Rec</source>
          .
          <volume>34</volume>
          (
          <year>2005</year>
          )
          <fpage>27</fpage>
          -
          <lpage>33</lpage>
          . URL: https://doi.org/10.1145/ 1107499.1107502. doi:
          <volume>10</volume>
          .1145/1107499.1107502.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Reiberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Niebel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kraemer</surname>
          </string-name>
          ,
          <article-title>What is a Data Space? Definition of the concept Data Space</article-title>
          ,
          <year>2022</year>
          . URL: https://gaia-x-hub.de/wp-content/uploads/2022/10/White_Paper_ Definition_Dataspace_EN.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>B.</given-names>
            <surname>Blanchet</surname>
          </string-name>
          ,
          <article-title>Modeling and Verifying Security Protocols with the Applied Pi Calculus and ProVerif, Foundations</article-title>
          and Trends® in
          <source>Privacy and Security</source>
          <volume>1</volume>
          (
          <year>2016</year>
          )
          <fpage>1</fpage>
          -
          <lpage>135</lpage>
          . URL: https://inria.hal.science/hal-01423760. doi:
          <volume>10</volume>
          .1561/3300000004.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>R. de Lemos</surname>
          </string-name>
          , et al.,
          <source>Software Engineering for Self-Adaptive Systems: A Second Research Roadmap</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2013</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>T.</given-names>
            <surname>Käfer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          , Specifying, monitoring, and
          <article-title>executing workflows in linked data environments</article-title>
          , in: D.
          <string-name>
            <surname>Vrandečić</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Bontcheva</surname>
            ,
            <given-names>M. C.</given-names>
          </string-name>
          <string-name>
            <surname>Suárez-Figueroa</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Presutti</surname>
            , I. Celino,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Sabou</surname>
            ,
            <given-names>L.-A.</given-names>
          </string-name>
          <string-name>
            <surname>Kafee</surname>
          </string-name>
          , E. Simperl (Eds.),
          <source>The Semantic Web - ISWC 2018</source>
          , Springer International Publishing, Cham,
          <year>2018</year>
          , pp.
          <fpage>424</fpage>
          -
          <lpage>440</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>