Skip to main content

MPyC for Multiparty Computation in Python

Project description

Binder Travis CI codecov Read the Docs PyPI

MPyC MPyC logo 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 and optionally 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.

Documentation

Read the Docs for Sphinx-based documentation, including an overview of the demos.
GitHub Pages for pydoc-based documentation.

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

Installation

Pure Python, no dependencies. Python 3.10+ (following SPEC 0 -- Minimum Supported Dependencies).

Run pip install . in the root directory (containing file pyproject.toml).
Or, run pip install -e ., if you want to edit the MPyC source files.

Use pip install numpy to enable support for secure NumPy arrays in MPyC, along with vectorized implementations.

Use pip install gmpy2 to run MPyC with the package gmpy2 for considerably better performance.

Use pip install uvloop (or pip install winloop on Windows) to replace Python's default asyncio event loop in MPyC for generally improved performance.

Some Tips

  • Try run-all.sh or run-all.bat in the demos directory to have a quick look at all pure Python demos. Demos bnnmnist.py and cnnmnist.py require NumPy, demo kmsurvival.py requires pandas, Matplotlib, and lifelines, and demo ridgeregression.py (and therefore demo multilateration.py) even require Scikit-learn.
    Try np-run-all.sh or np-run-all.bat in the demos directory 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 await by running python -m asyncio to launch a natively async REPL. By running python -m mpyc instead you even get this REPL with the MPyC runtime preloaded!

  • Directory demos\.config contains configuration info used to run MPyC with multiple parties. The file gen.bat shows how to generate fresh key material for SSL. To generate SSL key material of your own, first run pip install cryptography.

Copyright © 2018-2024 Berry Schoenmakers

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mpyc_custom-0.10.9.tar.gz (134.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mpyc_custom-0.10.9-py3-none-any.whl (114.0 kB view details)

Uploaded Python 3

File details

Details for the file mpyc_custom-0.10.9.tar.gz.

File metadata

  • Download URL: mpyc_custom-0.10.9.tar.gz
  • Upload date:
  • Size: 134.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for mpyc_custom-0.10.9.tar.gz
Algorithm Hash digest
SHA256 5a3814666072701b6a19a53caf84765d78bd0f97323abf687538b6d3e1e9589f
MD5 030d8204c95c1be5b6b291dc80149a5a
BLAKE2b-256 761bddd53f7003a48f1a9cdf27d1303a84c9936a0520c0910f1a4c68f14bcd76

See more details on using hashes here.

File details

Details for the file mpyc_custom-0.10.9-py3-none-any.whl.

File metadata

  • Download URL: mpyc_custom-0.10.9-py3-none-any.whl
  • Upload date:
  • Size: 114.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for mpyc_custom-0.10.9-py3-none-any.whl
Algorithm Hash digest
SHA256 51eba042aec877a2ccfd753d686039a524376197c85d5c1c8b7cdd6167d331b0
MD5 5c2412b83cd8d79fc8db49aec1cfee33
BLAKE2b-256 3ec7890088f676328c566a2c92582b35d06e5f0c54b25fa1b7d200b9fb426f01

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page