Need help with mpyc?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

lschoe
135 Stars 32 Forks MIT License 247 Commits 0 Opened issues

Description

MPyC for Secure Multiparty Computation in Python

Services available

!
?

Need anything else?

Contributors list

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
    . 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.
  6. For Python 3.8+, 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!

Copyright © 2018-2021 Berry Schoenmakers

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.