All Projects → toonsegers → verifiable_mpc

toonsegers / verifiable_mpc

Licence: MIT license
A scheme that produces a zero-knowledge proof of correctness for an MPC computation. The scheme allows anyone, particularly someone external to the secure computation, to check the correctness of the output, while preserving the privacy properties of the MPC protocol.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to verifiable mpc

mpc
Secure Multi-Party Computation (MPC) with Go. This project implements secure two-party computation with Garbled circuit protocol.
Stars: ✭ 41 (+173.33%)
Mutual labels:  mpc
ParNMPC
A Parallel Optimization Toolkit for Nonlinear Model Predictive Control (NMPC)
Stars: ✭ 173 (+1053.33%)
Mutual labels:  mpc
PPML-Resource
Materials about Privacy-Preserving Machine Learning
Stars: ✭ 93 (+520%)
Mutual labels:  mpc
high mpc
Policy Search for Model Predictive Control with Application to Agile Drone Flight
Stars: ✭ 299 (+1893.33%)
Mutual labels:  mpc
Model-Predictive-Control
C++ implementation of Model Predictive Control(MPC)
Stars: ✭ 51 (+240%)
Mutual labels:  mpc
MOTION
An efficient, user-friendly, modular, and extensible framework for mixed-protocol secure multi-party computation with two or more parties
Stars: ✭ 59 (+293.33%)
Mutual labels:  mpc
simple-mpc
A GNU Emacs frontend to mpc.
Stars: ✭ 38 (+153.33%)
Mutual labels:  mpc
tokucore
A Simple, Powerful, Modular Library for Bitcoin Blockchain As a Service(BAAS)
Stars: ✭ 61 (+306.67%)
Mutual labels:  mpc
emp-tool
No description or website provided.
Stars: ✭ 155 (+933.33%)
Mutual labels:  mpc
WeDPR-Lab-Core
Core libraries of WeDPR instant scenario-focused solutions for privacy-inspired business; WeDPR即时可用场景式隐私保护高效解决方案核心算法组件
Stars: ✭ 147 (+880%)
Mutual labels:  mpc
WeDPR-Lab-Android-SDK
Android SDK of WeDPR-Lab-Core; WeDPR即时可用场景式隐私保护高效解决方案核心算法组件Android SDK
Stars: ✭ 14 (-6.67%)
Mutual labels:  mpc
awesome-secure-computation
Awesome list for cryptographic secure computation paper. This repo includes *Lattice*, *DifferentialPrivacy*, *MPC* and also a comprehensive summary for top conferences.
Stars: ✭ 125 (+733.33%)
Mutual labels:  mpc
CasADi MPC MHE Python
This repository is an implementation of the work from Mohamed W. Mehrez. I convert the original code in MATLAB to the Python
Stars: ✭ 44 (+193.33%)
Mutual labels:  mpc
proof of custody
MPC implementation of proof of custody
Stars: ✭ 32 (+113.33%)
Mutual labels:  secure-multi-party-computation
keep-ecdsa
The smart contracts and client behind the Keep ECDSA client
Stars: ✭ 55 (+266.67%)
Mutual labels:  threshold-cryptography
crypto-primitives
Interfaces and implementations of cryptographic primitives, along with R1CS constraints for them
Stars: ✭ 76 (+406.67%)
Mutual labels:  snark
Model-Predictive-Control
Udacity Self-Driving Car Engineer Nanodegree. Project: Model Predictive Control
Stars: ✭ 50 (+233.33%)
Mutual labels:  mpc
Groth16BatchVerifier
Batch verification proposal for the zkSNARK verification with the same(!) circuit
Stars: ✭ 17 (+13.33%)
Mutual labels:  snark
Model-Predictive-Control
This project is to use Model Predictive Control (MPC) to drive a car in a game simulator. The server provides reference waypoints (yellow line in the demo video) via websocket, and we use MPC to compute steering and throttle commands to drive the car. The solution must be robust to 100ms latency, since it might encounter in real-world application.
Stars: ✭ 93 (+520%)
Mutual labels:  mpc
ocs2
Optimal Control for Switched Systems
Stars: ✭ 263 (+1653.33%)
Mutual labels:  mpc

Build Status

Verifiable MPC

The 'Verifiable MPC' Python package implements the verifiable secure multi-party computation (MPC) scheme.

Verifiable MPC scheme

Electronic voting protocols are prime examples of secure multi-party computation (MPC) that separate input and compute parties. In this setting, there are many input parties that outsource the tallying operation to a set of compute parties. This setting introduces new requirements versus classical MPC protocols where parties are considered both input and compute party. A necessary requirement for voting protocols is public verifiability. While voting protocols specialize in the linear operation of tallying votes, the focus of this work is a scheme that defines publicly verifiable MPC for general arithmetic circuits.

The compute parties produce a zero-knowledge proof of correctness of the computation that allows anyone, particularly someone external to the secure computation, to check the correctness of the output, while preserving the privacy properties of the MPC protocol.

Our scheme addresses the challenge of general arithmetic circuits using recent results in zero-knowledge proof systems, particularly compressed Sigma-protocols [https://eprint.iacr.org/2020/152] by Attema and Cramer (AC20), and Bulletproofs [https://eprint.iacr.org/2017/1066] by Bünz, Bootle, Boneh, Poelstra, Wuille and Maxwell (BBB+17).

Our construction is based on AC20, which reconciles Bulletproofs with Sigma-protocol theory. The construction yields proofs of logarithmic size and does not require a trusted setup, i.e., the setup does not require knowledge of a trapdoor.

For our implementation we use the MPyC framework: [https://github.com/lschoe/].

Please find the write-up of this work in Chapter 8 of this Horizon2020 deliverable (published on June 30, 2021): [https://media.voog.com/0000/0042/1115/files/D3.3%20-%20Revision%20of%20Extended%20Core%20Protocols.pdf]

Note: This implementation is work-in-progress. Expect many bugs/issues.

Installation

This implementation depends on MPyC (version 0.8 or above), which is automatically installed with the following command. In the project root, enter:

pip install .

Or alternatively:

pip install -e .

to overwrite the directory in site-packages with a symbolic link to this local project directory, making local changes directly available.

Preferably, install 'gmpy2' for better performance:

pip install gmpy2   				# for Linux (first running `apt install libmpc-dev` may be necessary)
pip install gmpy2-[version etc].whl	# for Windows, see Gohlke's unofficial binaries [https://www.lfd.uci.edu/~gohlke/pythonlibs/]

Demos

The following demos are included:

  • demo_circuit_builder.py to use standard Python and automatically construct an arithmetic circuit in memory;
  • demo_zkp_*ac20*.py to use the AC20/Bulletproofs proof system to prove correctness of the (MPC) computation;
  • demo_zkp_pynocchio.py and *trinocchio.py to use the Pinocchio zk-SNARK to prove correctness of the (MPC) computation.

Run the demos as follows. From the project root, for example:

python ./demos/demo_zkp_mpc_ac20.py -M3 --elliptic

This runs the prover side of the AC20 ZK-proof system in MPC using three local parties and the Ed25519 elliptic curve group.

Testing

Run the following commands:

python -m unittest discover .

Acknowledgements

This work has received funding from the European Union's Horizon 2020 research and innovation program under grant agreements No 780477 (PRIViLEDGE).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].