Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/OpenMined/SyMPC

A SMPC companion library for Syft
https://github.com/OpenMined/SyMPC

cryptography machine-learning mpc privacy python torch

Last synced: about 1 month ago
JSON representation

A SMPC companion library for Syft

Awesome Lists containing this project

README

        

.. raw:: html




SyMPC


SyMPC



A library that extends PySyft with SMPC support






SyMPC **/ˈsɪmpəθi/** is a library which extends `PySyft `_ ≥0.3 with SMPC support. It allows computing over encrypted data, and to train and evaluate neural networks.

Installation
############

SyMPC is a companion library for PySyft. Therefore, we will need to install PySyft among other dependencies. We recommend using a virtual environment like `conda`.

.. code:: bash

$ conda create -n sympc python=3.9
$ conda activate sympc
$ pip install -r requirements.txt
$ pip install .

You can also run SyMPC using docker by running the following commands.

.. code:: bash

$ docker build -t sympc -f docker-images/Dockerfile . #builds image named sympc
$ docker run -i -t sympc #runs the container

Getting Started
###############

If we want to start learning how to use SyMPC we can go to the *examples* folder and execute the *introduction.ipynb*.

.. code:: bash

$ conda activate sympc
$ pip install jupyter
$ jupyter notebook examples/introduction.ipynb

If we decided to use docker, we would need to run the image and publish the jupyter notebook port

.. code:: bash

$ sudo docker run -i -t -p 8888:8888 sympc
$ jupyter notebook examples/introduction.ipynb --allow-root --ip=0.0.0.0

Finally, we would need to copy the url shown in the docker to our browser.

Supported protocols
###################

SyMPC supports the following protocols.

.. table::

+--------------+------------------------+-----------------------+
| **Protocol** | **Security Guarantee** | **Number of Parties** |
+==============+========================+=======================+
| ABY3 | Semi-honest, Malicious | 3 |
+--------------+------------------------+-----------------------+
| Falcon | Semi-honest, Malicious | 3 |
+--------------+------------------------+-----------------------+
| FSS | Semi-honest | 2 |
+--------------+------------------------+-----------------------+
| SPDZ | Semi-honest | 2+ |
+--------------+------------------------+-----------------------+

We can see other interesting information about the supported operations and Neural
Network layers in `Supported operations and Neural Network layers `_.

Contributing
############

We are open to collaboration! If you want to start contributing you only need to:

1. Check the `contributing guidelines `_.
2. Search for an issue in which you would like to work. Issues for newcomers are labeled with **good first issue**.
3. Create a PR solving the issue.

License
#######

This project is licensed under the `MIT License `_.

Disclaimer
##########

This library should not be used in a production environment because it is still a prototype.