OpenMined / PySyft

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

Implement ZKP From Scratch in PyTorch #3100

Closed Jasopaum closed 4 years ago

Jasopaum commented 4 years ago

Zero-knowledge proofs have an important role to play in the future of verified machine learning prediction. However, no deep learning framework has the ability to perform verified computation of neural networks using ZKPs. Furthermore, algorithms which 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 ZKP encryption from scratch using PyTorch tensor operations. In this project, you will implement from scratch or port an existing ZKP library into PyTorch operations. This will allow us to generate, evaluate, and verify ZKP graphs across all platforms supported by PySyft.

We will be using the following resources:

Required Skills:

Difficulty: Advanced While the API shouldn’t be complex, ZKP algorithms are challenging to understand and implement. There are, however, many great implementations to use as references.

Kritikalcoder commented 4 years ago

I'd like to contribute to this

Jasopaum commented 4 years ago

Note: I added a few resources in the issue

pierrepocreau commented 4 years ago

I also would like to work on this project.

jimboH commented 4 years ago

Hi @Jasopaum , I would like to work on this issue. I have made a merged PR at https://github.com/OpenMined/PySyft/pull/3092 and also filled up the application form. I would like to know how could I go further on this issue. Thank you!

Jasopaum commented 4 years ago

Could you guys (and also others that could be interested) contact me on Slack (Jason Paumier) so that we can talk about this?

vineetjai commented 4 years ago

Hi @Jasopaum 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!

jon-chuang commented 4 years ago

Hi, what is the movement like on this issue? Could there be an elaboration on the potential use-cases? For instance, is ZK to be used wrt to MPC protocols? Is one to use interactive challenges or SNARKs? Or is this meant to be a standalone system for delegated computing? What are the design goals? For instance, ZK could introduce about ~1000x computational overhead, although for good schemes, communication and verification could be cheap.

I am not convinced this could gel well with GPU computations, since one requires to store and encode all the intermediate values of a computation, unless the entire ZKP encoding and proving was performed simultaneously on GPU.

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.

karynaur commented 2 years ago

Hey! I would love to work on this issue!