$30 off During Our Annual Pro Sale. View Details »

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
Tweet

More Decks by Dan Yamamoto

Other Decks in Technology

Transcript

  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/

    View Slide

  2. Datastore
    1
    Data Consumer Datastore Data Source
    query
    data
    result
    consume
    data
    Data Source
    ...

    View Slide

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

    View Slide

  4. 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)

    View Slide

  5. 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

    View Slide

  6. 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

    View Slide

  7. 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 }

    View Slide

  8. 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/

    View Slide

  9. 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

    View Slide

  10. 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, ...

    View Slide