Calculs sur des données chiffrées
Au sein de Worldline, il a été demandé de mettre en place un protocole permettant de comparer les proportions d’un produit industriel à des valeurs seuil établies par Worldline. L’industriel désire que ses proportions soient gardées secrètes et les stocke dans une blockchain, de plus Worldline garde privées les valeurs de seuil, et cela, tout le long de la comparaison. Ce use-case peut s’étendre fondamentalement à un problème plus général.
Ce problème consiste à permettre à deux parties (un client et un serveur) de comparer leurs valeurs numériques d’une manière privée. Le calcul fait sur les entrées de chaque partie permettra de déterminer quelle valeur est la plus grande sans compromettre leurs confidentialités.
Notons la valeur secrète du client par input_client et celle du serveur par input_server, nous distinguons deux scénarios :
- le premier correspond au mode Offline, où le client publie une valeur qui dépendra de input_client, que le serveur utilisera par la suite afin de trouver le résultat de comparaison (si input_server est supérieure à input_client). Aucune interaction n’est possible entre les deux parties après l’envoie du message par le client.
- le deuxième scénario correspond au mode Online où les deux parties peuvent s’échanger des messages en suivant un protocole interactif. Plusieurs approches existent dans la littérature, notamment : le chiffrement homomorphe, les garbled circuits, l’arithmetic black box model, etc. L’objectif de ce projet est d’identifier et d’implémenter les protocoles cryptographiques les plus adaptés à notre cas d’usage. L’identification dépendra du modèle de sécurité, du mode de fonctionnement : online/offline, du coût en temps et en communication, de la possibilité de pré calcul, etc.
Pour cela, nous mettons à disposition un état de l’art détaillé sur les différentes approches possibles, ainsi qu’une base de code source (en C/Java) qui permettra de les implémenter.