rubensworks / article-privacy-decentralized

📜 Vision/position article 2020
https://rubensworks.github.io/article-privacy-decentralized/
1 stars 0 forks source link

What's the list of sources U a CSQE is provided with by its invoking user/app? #4

Open simonstey opened 4 years ago

simonstey commented 4 years ago

image here a CSQE is provided with a set of sources U by the user/app invoking it (top left corner). What are those? sources against which the app has already been authorized?

if yes, this would prevent apps to dynamically discover relevant data sources they would be allowed to fetch data from, e.g. from data pods with more generic ac policies like

.) all foaf:members of ex:Company1 which have at least 1 vcard:hasEmail are permitted 
   to acl:Read all quads of F1
.) Everyone is permitted to read rdf:type quads of F1 and F2

if they aren't aware of their existence in the first place..

or am I missing something?

rubensworks commented 4 years ago

U is the initial list of sources over which the user wants to query. This list will then be filtered using the aggregator-provided list of sources it aggregates over.

This indeed assumes that the query sources are defined statically. We'd need a whole different query algorithm if dynamic source detection was needed. Future work :-)

simonstey commented 4 years ago

This indeed assumes that the query sources are defined statically. We'd need a whole different query algorithm if dynamic source detection was needed.

for data pods that expose some data publicly (i.e., not require keys for it) we could check whether qk(q) is empty and if that's the case set the key to -1 (-1 & x = x)

FOREACH q in Q
  FOREACH c in [subject, predicate, object, graph]
    IF qk(q) is empty
      Σ.c = SummaryAdd(Σ.c, q.c, -1, u)
      CONTINUE
    FOREACH k in qk(q)
      Σ.c = SummaryAdd(Σ.c, q.c, k, u)

then something along the lines of this should work right? ->

1) get aggregated summary from aggregator 2) select sources 2.1 in addition to U, public sources are now picked up too by checking SummaryContains(Σ.c, q.c, -1, u) 3) continue like usual

rubensworks commented 4 years ago

Sure, that's one way of making public data access explicit.

Another way that does not require any changes to the algorithm would be to assume that qk(q) can return -1 as a key that is used for public data. We could for example discuss this in the text.