zama-ai / bounty-program

Zama Bounty Program: Contribute to the FHE space and Zama's open source libraries and get rewarded 💰
https://zama.ai
244 stars 13 forks source link

Create an encrypted travel routing demo application #7

Closed thomas-quadratic closed 7 months ago

thomas-quadratic commented 1 year ago

Zama Bounty Program Proposal : Travel Routing

Description:

Introduction

Geolocalisation is sensitive personal data that can easily be used to identify and deduce further information about oneself such as home address, work, favourite foods, hobbies, and more. Nonetheless, almost all of us use some form of maps on smartphones to compute best itinerairies when traveling. We thus accept to send our localisation to an external party who could potentially use it for other purposes.

We propose in this tutorial to showcase how Zama's homomorphic encryption could be used to preserve our localisation's privacy while still offering an itinerary computation service. In this scenario, the server does not learn anything about a client's position at anytime as it sees only encrypted data.

Deliverables

The solution would be a demo client/server app which would demonstrate the feasability of the usecase, together with explanations of the methods and choices made along the way. Concretely, the deliverables could include:

Roadmap

Part 1: Algorithm

The first phase of the project consists in exploring the feasability of using tfhe for some shortest path algorithm. Benchmarks will permit to understand what size of a task is computationnally reasonable today. This will influence how to setup pre-indexing vs caching in order to accelerate computations over time. Possible algorithms include Djikstra, Bellman-Ford, A*, and many others.

Part 2 : Client-Server

In a second time, we will now code the usecase. The solution we envision is in the lines of:

Part 3 : Tutorials and Demo

Write a gist about the app, what problems were encountered and how they were solved/avoided. Optionnally, build a demo app that allows a user to select an origin and destination on a map and obtain the shortest path. A panel will show the messages that are transmitted encrypted to the server, with their decrypted variants client-side.

Potential Difficulties

Homomorphic encryption is computationally intensive and noisy. This project tries to go to the limit of what is possible today, but there are risks involved:

Macro Sizing (Estimated)

bcm-at-zama commented 7 months ago

Merged into https://github.com/zama-ai/fhe-tutorials/tree/main/TravelRouting