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.
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.
python setup.py install (pure Python, no dependencies).
demos for Python programs and Jupyter notebooks with lots of example code.
- Python 3.6+ (Python 3.5 or lower is not sufficient).
- Installing package
gmpy2is optional, but will considerably enhance the performance of
mpyc. If you use the conda package and environment manager,
conda install gmpy2should do the job. Otherwise,
pip install gmpy2can be used on Linux (first running
apt install libmpc-devmay be necessary too), but on Windows, this may fail with compiler errors. Fortunately, ready-to-go Python wheels for
gmpy2can be downloaded from Christoph Gohlke's excellent Unofficial Windows Binaries for Python Extension Packages webpage. Use, for example,
pip install gmpy2-2.0.8-cp39-cp39-win_amd64.whlto finish installation.
demosdirectory to have a quick look at all pure Python demos. The demos
cnnmnist.pyrequire NumPy, the demo
kmsurvival.pyrequires pandas, Matplotlib, and lifelines, and the demo
ridgeregression.pyeven requires Scikit-learn. Also note the example Linux shell scripts and Windows batch files in the
demos\.configcontains configuration info used to run MPyC with multiple parties. Also, Windows batch file 'gen.bat' shows how to generate fresh key material for SSL. OpenSSL is required to generate SSL key material of your own, use
pip install pyOpenSSL.
- To use the Jupyter notebooks
demos\*.ipynb, you need to have Jupyter installed, e.g., using
pip install jupyter. The latest version of Jupyter will come with IPython 7.x, which supports top-level
await. For example, instead of
mpc.run(mpc.start())one can now simply write
await mpc.start()anywhere in a notebook cell, even outside a coroutine.
- For Python 3.8+, 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!