Homomorphic Encryption for k-NN on the Cloud



Mentors :

  • Nilabha Saha

  • Maithri Suresh

Mentees :

  • 5





In this project, we will create a mechanism for performing secure and controlled k-NN queries that can be employed on the cloud. The system would have a data owner who outsources their data to a cloud server. To ensure that the data owner has sole ownership of the data, we will ensure data confidentiality by storing only encrypted data on the cloud server, thus disallowing the cloud server from knowing the contents of the stored data. We enforce query controllability by allowing a query user to request the data owner's permission to issue a query. Only after the data owner permits the query can it be issued to the cloud server to compute the k nearest neighbours to the supplied query point. Our system would ensure query privacy: neither the data owner nor the cloud server would know the contents of the query. Furthermore, the cloud server would compute on the encrypted data itself, gaining no information about the computed results, which could only be decrypted by the query user. This would be ensured by using an asymmetric scalar product that preserves a homomorphic encryption scheme. For the same, we will be referring to the following paper: https://www.sciencedirect.com/science/article/pii/S0743731515002105 Throughout the course of the project, the mentees would learn the following (in reference to the paper): - how to implement socket programming for communication between the various entities involved - how to set up, create, and interact with a Docker container externally to simulate the cloud server - SageMath and how to implement basic cryptographic schemes - how to implement an asymmetric scalar product preserving homomorphic encryption scheme - how to connect everything they've built together
Prerequisites:
- Python
Expectations: This project entails going through a paper and implementing it. Hence, a respectable amount of serious effort is expected from the mentees, including an investment of 3 - 4 hours per week.

Tentative Timeline :

Week Work
Week 1 Implementing socket programming to establish connection between three entities
Week 2 Learning SageMath and the Number Theory required for the paper
Week 3 Implementing RSA, ElGamal, and Paillier cryptosystems using SageMath
Week 4 Paper Reading and Cloud Architecture Theory
Week 5 Learn how to set up, create, and connect to a Docker container externally
Week 6-7 Implementation of the paper
Week 8 Tying up loose ends; Final documentation