Mettre en place un service respectueux de la vie privée basé sur un protocole cryptographique 0-knowledge
Supposons que nous ayons un profil P contenant les préférences d’un utilisateur U. P est calculé, stocké et mis à jour côté client (typiquement dans le navigateur).
Note : La création et la mise à jour de P ne sont pas à traiter dans ce travail.
L’utilisateur U envoie des requêtes Req au fournisseur de service FS pour recevoir des résultats R.
Nous pouvons illustrer le fonctionnement sans personnalisation comme suit :
1. U ---------------> FS
Req
2. U <---------------FS
R
Dans ce projet nous souhaitons enrichir Req avec un embedding e, correspondant aux préférences de U, pour permettre à FS de retourner des résultats personnalisés RPers :
1. U ---------------> FS
Req,e
2. U <--------------- FS
RPers
Le défi est de déterminer un protocole cryptographique pour l’élaboration de e côté client et son utilisation côté serveur pour la personnalisation des résultats..
Le tout avec pour règle de ne pas rompre le contrat de confiance entre U et FS qui est le suivant : « nous respectons votre vie privée, vos préférences ne nous regarde pas, nous souhaitons juste améliorer votre expérience utilisateur avec des résultats personnalisés et plus pertinents ».
Autrement dit : « Quel sont les spécificités à avoir sur l’embedding e pour ne pas fuiter des infos personnelles de U; à savoir; respecter les propriétés suivantes : anonimity, unlinkability, unobservability« .
Nous mettons à votre disposition un environnement de test pour le client et le serveur avec une mesure des performances (mémoire/temps ) intégrée. Vous pourrez mettre à jour facilement le code pour les deux entités.
L’objectif de ce travail :
- Elaborer un protocole cryptographique répondant à nos critères et respectant le maximum de propriété d’anonymisation
- Implémenter ce protocole avec :
- le calcul de l’embedding côté client
- l’utilisation de l’embedding côté serveur
- Respecter des contraintes de temps côté client et idéalement côté serveur