MPyC for Multiparty Computation in Python
MPyC Multiparty Computation in Python
MPyC supports secure m-party computation tolerating a dishonest minority of up to t passively corrupt parties, where m ≥ 1 and 0 ≤ t < m/2. The underlying cryptographic protocols are based on threshold secret sharing over finite fields (using Shamir's threshold scheme as well as pseudorandom secret sharing).
The details of the secure computation protocols are mostly transparent due to the use of sophisticated operator overloading combined with asynchronous evaluation of the associated protocols.
Read the Docs for
Sphinx-based documentation, including an overview of the
GitHub Pages for
demos for Python programs and Jupyter notebooks with lots of example code. Click the "launch binder" badge above to view the entire
repository and try out the Jupyter notebooks from the
demos directory in the cloud, without any install.
The MPyC homepage has some more info and background.
Pure Python, no dependencies. Python 3.8+ (following NumPy's deprecation policy).
pip install . in the root directory (containing file
pip install -e ., if you want to edit the MPyC source files.
pip install numpy to enable support for secure NumPy arrays in MPyC, along with vectorized implementations.
pip install gmpy2 to run MPyC with the package gmpy2 for considerably better performance.
demosdirectory to have a quick look at all pure Python demos. Demos
cnnmnist.pyrequire NumPy, demo
kmsurvival.pyrequires pandas, Matplotlib, and lifelines, and demo
ridgeregression.py(and therefore demo
multilateration.py) even require Scikit-learn.
demosdirectory to run all Python demos employing MPyC's secure arrays. Major speedups are achieved due to the reduced overhead of secure arrays and vectorized processing throughout the protocols.
To use the Jupyter notebooks
demos\*.ipynb, you need to have Jupyter installed, e.g., using
pip install jupyter. An interesting feature of Jupyter is the support of top-level
await. For example, instead of
mpc.run(mpc.start())you can simply use
await mpc.start()anywhere in a notebook cell, even outside a coroutine.
For Python, you also get top-level
python -m asyncioto launch a natively async REPL. By running
python -m mpycinstead you even get this REPL with the MPyC runtime preloaded!
demos\.configcontains configuration info used to run MPyC with multiple parties. The file
gen.batshows how to generate fresh key material for SSL. To generate SSL key material of your own, first run
pip install cryptography(alternatively, run
pip install pyOpenSSL).
Copyright © 2018-2023 Berry Schoenmakers
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.