Skip to main content

MPyC -- Secure Multiparty Computation in Python

Project description

Binder Travis CI codecov PyPI

MPyC MPyC logo Secure 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.

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.

Installation:

Just run: python setup.py install (pure Python, no dependencies).

See demos for usage examples and MPyC docs for pydoc-based documentation.

Notes:

  1. Python 3.6+ (Python 3.5 or lower is not sufficient).

  2. Installing package gmpy2 is optional, but will considerably enhance the performance of mpyc. If you use the conda package and environment manager, conda install gmpy2 should do the job. Otherwise, pip install gmpy2 can be used on Linux (first running apt install libmpc-dev may be necessary too), but on Windows, this may fail with compiler errors. Fortunately, ready-to-go Python wheels for gmpy2 can 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.whl to finish installation.

  3. Use run-all.sh or run-all.bat in the demos directory to have a quick look at all pure Python demos. The demos bnnmnist.py and cnnmnist.py require Numpy, the demo kmsurvival.py requires pandas, Matplotlib, and lifelines, and the demo ridgeregression.py even requires Scikit-learn. Also note the example Linux shell scripts and Windows batch files in the docs and tests directories.

  4. Directory demos\.config contains 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.

  5. 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. 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 await by running python -m asyncio to launch a natively async REPL.

Copyright © 2018-2020 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-0.7.tar.gz (49.7 kB view details)

Uploaded Source

Built Distribution

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

mpyc-0.7-py3-none-any.whl (52.5 kB view details)

Uploaded Python 3

File details

Details for the file mpyc-0.7.tar.gz.

File metadata

  • Download URL: mpyc-0.7.tar.gz
  • Upload date:
  • Size: 49.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for mpyc-0.7.tar.gz
Algorithm Hash digest
SHA256 9f7bc693997dad3be61211c9433a148f6122bd9eadee74dca70540c2ea356a83
MD5 8d97f4e191313ba7ba85756652330dfe
BLAKE2b-256 da94e68ac2c7b0a13a7b7296e067708fae76aa29c4b40a5c906b2256706159ce

See more details on using hashes here.

File details

Details for the file mpyc-0.7-py3-none-any.whl.

File metadata

  • Download URL: mpyc-0.7-py3-none-any.whl
  • Upload date:
  • Size: 52.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for mpyc-0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 66491b6e8e8a81544e59194bc44086048b04c6e24ec5dec068adf777eaf80d1e
MD5 e8099d3408a6b96587553dac608803a6
BLAKE2b-256 227e713d832f7d37f1313eb1dd65c21da97e7d111438cfcbd2dfe48462ccf435

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