Giter VIP home page Giter VIP logo

did-comp's Introduction

DID-Comp

Decentralised & Privacy Preserving Querying

This repository hosts the implementation of a decentralised and privacy-preserving querying system. This approach enables secure and private communication for SQL query processing between different parties using decentralised identifiers (DIDs) & secure multi-party computation (MPC).

Supported Platforms

  • Linux

Overview

The system comprises two main agents: Alice and Bob. Alice acts as the querier, initiating SQL queries via a web interface, while Bob serves as the query responder, processing these queries and returning results to Alice's web interface. Additionally, there are two remote sites who hold data that can be queried. Alice can be thought of as a 'client' querying a distributed network of data, and Bob a 'network node' that can query data sources. The system leverages SMCQL for executing SQL queries across remote sites, employing secure MPC and differential privacy techniques to ensure the privacy of the data during processing.

Setup involves the remote sites agreeing on a database schema according to which they will store data. This schema is published so that Alice and any other party knows what queries they can make.

When Bob receives a query from Alice, he compiles it into MPC protocol. This privacy-preserving protocol is then run by the two remote sites, who return their outputs to Bob. From these outputs, Bob can construct a response to Alice's query that looks as if he had queried a single unified database that he owns. The privacy guarantee is that Bob learns nothing about how data is distributed between remote sites: he only learns the query response. Additionally, the remote sites learn nothing about each other's data. In this proof-of-concept work, the remote sites trust Bob to compile a protocol that respects privacy of data they hold. Trust relationships are described further in the smcql-experiment repository.

Communication between Alice and Bob is facilitated using DIDComm, ensuring that SQL queries and responses are exchanged securely and privately.

This approach enables the system to compute results over private data, allowing multiple parties to collaborate on data analysis or query execution without revealing their individual datasets to each other, thus maintaining data privacy and security throughout the process.

alt text

Self-Sovereign Identity (SSI) Framework

The DIDComm protocol used in this project utilises the Self-Sovereign Identity (SSI) framework implemented in veritable-cloudagent. This framework provides the foundational elements for secure and private communication using decentralised identifiers.

Submodules:

This project utilises the veritable-cloudagent repository as a submodule. You can find the repository here: veritable-cloudagent.

Additionally, this project utilises the smcql-experiment repository as a submodule, a modified version of smcql. You can find the repository here: smcql-experiment.

Web Interfaces

The system includes a web interface for the end user acting as Alice, enabling easy interaction with the application.

  • Alice's Web Interface: You can access Alice's web interface by navigating to http://localhost:3200 in your web browser. This interface allows you to interact with Alice, initiate SQL queries, and observe the results.

Getting Started

Ensure to clone this repository with the --recursive option to clone all the relevant submodules.

git clone --recursive https://github.com/digicatapult/did-comp.git

To get started with this system, you can use the provided scripts to start and stop the application.

Starting the Application

./scripts/start.sh

Stopping the Application

./scripts/stop.sh

Flow

Alice (Querier): Initiates SQL queries via the web interface and sends them to Bob using DIDComm for secure and private communication.

Bob (Query Responder): Receives SQL queries from Alice, processes them using SMCQL, and sends back the results via DIDComm, displayed on Alice's web interface.

did-comp's People

Contributors

dblane-digicatapult avatar doowt avatar jamcatapult avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.