OpenMined / PySyft

Perform data science on data that remains in someone else's server
https://www.openmined.org/
Apache License 2.0
9.49k stars 2k forks source link

Implement BGV Homomorphic Encryption from Scratch #3098

Closed gmuraru closed 4 years ago

gmuraru commented 4 years ago

BGV (Brakerski-Gentry-Vaikuntanathan) Homomorphic Encryption is one of the leading approaches to homomorphic encryption. While current work is underway within our community to wrap the SEAL homomorphic encryption library, this will have limited portability. However, algorithms that are natively implemented in PySyft can be automatically run across Python, GPUs, Javascript, Android (Kotlin), and iOS (Swift). Thus, it is very advantageous for us to re-implement BGV encryption from scratch.

The goal of this project will be to create a new tensor type that allows one to leverage BGV to perform encrypted tensor operations.

Required Skills:

Difficulty: Advanced

While the API aspects of this project are not complex (we have straightforward instructions for how to implement new tensor types), the BGV algorithm is non-trivial.

More details You can have a look at how the tensors are implemented in PySyft in syft/frameworks/torch/tensors/interpreters/. A tensor example that implements homomorphic encryption is the Paillier tensor (you can found it in the repo). The classes from the above-mentioned repository are an example of how someone could implement a SyftFramework Tensor.

Some keypoint for the phases of the algorithms:

shashank-m commented 4 years ago

Hey! I'm a sophomore at BITS Pilani Goa and am currently doing the Udacity course by openmined on secure AI. I've done Stanford's cs231n course and would love to work on this project. Could you please guide me on what I'd need to do to complete this task?

vineetjai commented 4 years ago

Hi @gmuraru I am Vineet Jain, a final year undergraduate student at IIT Kharagpur. I had experience in DL, TensorFlow, PyTorch, and PySyft. I had done my past summer internship in Federated Learning Project(where I had implemented FL on Raspberry pi's (as clients' server) using PySyft ) where I had used PySyft, Tensorflow federated learning, and Tensorflow Federated Core. I am interested in PySyft projects. I am looking forward to contributing!

gmuraru commented 4 years ago

Hello. Glad to see you are interested in the project :).

As a community, we are using the slack channel from here (it is a faster way to communicate).

I think some issues that are marked with good first issue will help you get more accustomed to the codebase. Also, another great resource to learn more about PySyft are the tutorials -- they can be found in the examples folder.

If you have any further questions you can also contact me on the above mentioned slack channel. Our community is friendly and anyone can help you with any questions.

github-actions[bot] commented 4 years ago

This issue has been marked stale because it has been open 30 days with no activity. Leave a comment or remove the stale label to unmark it. Otherwise, this will be closed in 7 days.

akshat1136 commented 4 years ago

Hi @gmuraru sir. I just wanted to ask, can I still contribute to this one? I mean, was this only the part of GSoC?

gmuraru commented 4 years ago

Hey @akshat1136. Sure, you can contribute to it :D

github-actions[bot] commented 4 years ago

This issue has been marked stale because it has been open 30 days with no activity. Leave a comment or remove the stale label to unmark it. Otherwise, this will be closed in 7 days.