GithubHelp home page GithubHelp logo

erikp0 / ppac Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 37.87 MB

A privacy-preserving access control system using secret-sharing and zkSnarks

License: GNU General Public License v3.0

Dockerfile 0.05% Solidity 3.75% Rust 95.64% Makefile 0.06% JavaScript 0.50%
zk-snarks ethereum zokrates secret-sharing

ppac's Introduction

About

This is a prototype implementation of a distributed key-management system with privacy-preserving access control.

Key management is distributed among policy enforcement (PEP) nodes that use secret-sharing and various threshold cryptography protocols to generate, manage and re-encrypt key material.

Access policies to keys are encoded as zero-knowledge proof statements in the ZoKrates format. A requester then creates a zk-snark proof over the given statement and uses this proof as authorization. The proof is checked in a smart contract in a (private) Ethereum blockchain.

In short:

  • Keys are secret-shared and thus partial compromise of PEP nodes is tolerated
  • A requester uses a privacy-preserving authorization with minimal release of information

The implementation consists of three parts

Building

Make sure that the submodule is pulled: git submodule update --init.

Prerequisites:

  • Rust installation supporting Rust 2018 with stable and nightly toolchains available to Cargo

All build commands and steps are abbreviated via make

Type make to see list of all targets,

client             Builds the client
client-test        Runs client tests
secretstore        Builds secretstore server
secretstore-test   Runs secretstore server tests

The binaries for make client and make secretstore can be found in target/client and target/secretstore respectively.

secretstore-test is fast to build and run while client-test will take a while to compile at the first run as a full secretstore instance will be built to run tests against.

Docker

There are docker images for the client and secretstore server available.

They can be build manually via docker build -f [client|secretstore].Dockerfile ..

Pre-built images are available from the GitHub package repository:

docker pull docker.pkg.github.com/erikp0/ppac/secretstore:latest

and

docker pull docker.pkg.github.com/erikp0/ppac/client:latest

Demo

See demo directory.

License

Parts of this work use code from Parity's secret-store implementation licensed under GPL3.

ppac's People

Contributors

erikp0 avatar

Stargazers

 avatar

Watchers

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