Upgrade to Pro — share decks privately, control downloads, hide ads and more …

zk-SPARQL

Dan Yamamoto
November 15, 2022

 zk-SPARQL

Verifiable and anonymous personal datastore supporting SPARQL queries

presented at Internet Identity Workshop (IIW) on 17th November, 2022

Dan Yamamoto

November 15, 2022

Transcript

10 slides
  1. zk-SPARQL: verifiable and anonymous personal datastore supporting SPARQL queries November

    15, 2022 Internet Identity Workshop (IIW) 35 Dan Yamamoto (Internet Initiative Japan Inc.) Joint work with: Yuji Suga (Internet Initiative Japan Inc.) Kazue Sako (Waseda University) Photo: CC BY 2.0 - Kanko* / Flickr https://www.flickr.com/photos/kankan/33346213/
  2. Verifiable Datastore 2 Data Consumer Datastore Data Source query signed

    data result + signatures verify & consume signed data Data Source ... authenticity
  3. Verifiable Personal Datastore 3 Data Consumer Datastore Data Source query

    signed data result + signatures verify & consume signed data Data Source ... authenticity privacy (signed data containing the query results must be fully disclosed for verification)
  4. Verifiable & Anonymous Personal Datastore 4 Data Consumer Datastore Data

    Source query signed data result + proofs with selective disclosure verify & consume signed data Data Source ... authenticity privacy
  5. Verifiable & Anonymous Personal Datastore 5 Data Consumer Datastore Data

    Source query signed data result + proofs with selective disclosure verify & consume signed data Data Source ... Issuer Issuer VC VC VP Verifier Holder zk-SPARQL
  6. Example 6 Data Consumer Datastore Data Source query signed data

    result + proofs with selective disclosure verify & consume signed data Data Source ... { "type": "VerifiableCredential", "credentialSubject": { "id": "did:example:John", "type": "Person", "name": "John Smith", "homeLocation": "http://example.org/cityA", "birthDate": "2000-01-01", }, "proof": ... } { "type": "VerifiableCredential", "credentialSubject": { "id": "http://example.org/cityA", "type": "Place", "name": "City A", "maximumAtendeeCapacity": 10000 }, "proof": ... } SELECT ?population WHERE { ?s a :Person . ?s :homeLocation ?place . ?place a :Place . ?place :maximumAttendeeCapacity ?population . } { "type": "VerifiablePresentation", "verifiableCredential": [ { "type": "VerifiableCredential", "credentialSubject": { "id": "anoni:eX2hjL", "type": "Person", "homeLocation": "anoni:38CqTd" }, { "type": "VerifiableCredential", "credentialSubject": { "id": "anoni:eX2hjL", "type": "Person", "maximumAtendeeCapacity": 10000 } ], "proof": ... } { "population": 10000 }
  7. Veanpods 7 ◼ Verifiable & Anonymous Personal Datastore • stores

    signed RDF data (= JSON-LD VC) • can be queried using zk-SPARQL, an extension of SPARQL • responds minimal result with zero-knowledge proof • supports unlinkability • and predicate proofs (as future work) • repository: https://github.com/zkp-ld/veanpods (super experimental version) Photo: CC BY 2.0 - Kanko* / Flickr https://www.flickr.com/photos/kankan/33346213/
  8. Structure 8 RDF store zk-SPARQL processor SPARQL UI for owner

    BBS+ signatures for RDF bulletproofs, zk-SNARKs, ... secure storage SPARQL UI for consumer store-binding consumer authorization = YASGUI use SPARQL.js use quadstore based on jsonld-signatures-bbs Data Consumer Data Source Veanpods owner
  9. Future Work 9 ◼ create, update, delete function (CRUD) ◼

    more than SELECT queries, i.e., ASK, CONSTRUCT, ... ◼ rich predicate proofs ⚫ require general-purpose zero-knowledge proofs, e.g., zk-SNARK, zk-STARK, bulletproofs ◼ zk-GraphQL, zk-GQL, zk-Cypher, ... ⚫ (maybe) possible by using existing translators (e.g., GraphQL-LD by Comunica) ◼ associate with Solid Pods (need to enhance my Solid knowledge) ◼ secure storage for signed data (VCs) and keys ◼ security & privacy formalization ◼ and more ⚫ revocation, PPID, issuer-hiding, mobile, ...

More Decks by Dan Yamamoto

Other Decks in Technology