Sujet Redocs Qwant 2020

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