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.
See the MPyC homepage for more info and background.
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.
Pure Python, no dependencies.
Run pip install .
in the root directory (containing file setup.py
).
Or, run pip install -e .
, if you want to edit the MPyC source files.
See demos
for Python programs and Jupyter notebooks with lots of example code.
See Read the Docs for Sphinx
-based documentation, including an overview of the demos
.
See GitHub Pages for pydoc
-based documentation.
-
Python 3.7+ (Python 3.6 or lower is not sufficient).
-
Installing package gmpy2 is optional, but will considerably enhance the performance of
mpyc
. As of December 12, 2021 with the release of gmpy2 2.1, installation has been simplified greatly:pip install gmpy2
is now supported on all major Linux/MacOS/Windows platforms via prebuilt wheels. If you use the conda package and environment manager,conda install gmpy2
should do the job. -
Use
run-all.sh
orrun-all.bat
in thedemos
directory to have a quick look at all pure Python demos. Demosbnnmnist.py
andcnnmnist.py
require NumPy, demokmsurvival.py
requires pandas, Matplotlib, and lifelines, and demoridgeregression.py
(and therefore demomultilateration.py
) even require Scikit-learn. Also note the example Linux shell scripts and Windows batch files in thedocs
andtests
directories. -
Directory
demos\.config
contains configuration info used to run MPyC with multiple parties. Also, Windows batch filegen.bat
shows how to generate fresh key material for SSL. To generate SSL key material of your own, first runpip install cryptography
(alternatively, runpip install pyOpenSSL
, which will also install thecryptography
package). -
To use the Jupyter notebooks
demos\*.ipynb
, you need to have Jupyter installed, e.g., usingpip install jupyter
. The latest version of Jupyter will come with IPython 7.x, which supports top-levelawait
. For example, instead ofmpc.run(mpc.start())
one can now simply writeawait mpc.start()
anywhere in a notebook cell, even outside a coroutine. -
For Python 3.8+, you also get top-level
await
by runningpython -m asyncio
to launch a natively async REPL. By runningpython -m mpyc
instead you even get this REPL with the MPyC runtime preloaded!
Copyright © 2018-2022 Berry Schoenmakers