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.
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.
$ 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.
$ docker build -t sympc -f docker-images/Dockerfile . #builds image named sympc
$ docker run -i -t sympc #runs the container
If we want to start learning how to use SyMPC we can go to the examples folder and execute the introduction.ipynb.
$ 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
$ 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.
SyMPC supports the following protocols.
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.
We are open to collaboration! If you want to start contributing you only need to:
- Check the contributing guidelines.
- Search for an issue in which you would like to work. Issues for newcomers are labeled with good first issue.
- Create a PR solving the issue.
This project is licensed under the MIT License.
This library should not be used in a production environment because it is still a prototype.