Zero Knowledge Proof : protection des données sans compromis

2022-11-18

La "Zero Knowledge Proof" est une méthode permettant de prouver la connaissance de quelque chose sans révéler la connaissance elle-même. Cela peut par exemple être utilisé pour se connecter à un service sans avoir à transmettre le mot de passe. Nous expliquons ici comment cela fonctionne.

Chaque jour, nous renonçons un peu à notre vie privée pour pouvoir utiliser un site web ou une application. Car, soyons honnêtes : qui d'entre nous a vraiment lu en détail la déclaration de protection des données ou les conditions d'utilisation pour décider ensuite de ne pas utiliser cette offre ?

D'un point de vue technique, il serait tout à fait possible de mieux protéger la vie privée et les données des utilisateurs. Le modèle de "Zero Knowlegde Proof", décrit par Shafi Goldwasser, Silvio Micali et Charles Rackoff dans leur article "The knowledge complexity of interactive proof systems", en est un exemple.

Exemple d'utilisation des mots de passe

Il veut avant tout résoudre un problème : Comment puis-je prouver que j'ai connaissance de quelque chose sans le révéler moi-même ? Exemple pratique : les mots de passe. Nous avons tous créé des dizaines de codes d'accès pour les services les plus divers. Pour pouvoir nous y connecter, nous transmettons le mot de passe au service concerné, qui le compare aux informations qu'il a enregistrées.

Cette procédure offre différents points d'attaque, par exemple sur le propre appareil, sur le serveur du service et sur la voie de transmission. Il existe certes des mesures de sécurité, comme une connexion cryptée, qui offrent en général une protection élevée. Mais à condition d'avoir une motivation suffisamment forte, il est possible de trouver des moyens de les déjouer. Un exemple est l'attaque "man-in-the-middle", où les informations échangées sont écoutées et éventuellement manipulées par un tiers.

Enfin, les personnes elles-mêmes sont souvent le maillon faible de la chaîne de sécurité et, lorsque les cibles valent la peine d'être visées , les assaillants recourent à des tactiques parfois étonnamment sophistiquées.

Pour les accès particulièrement importants, il serait préférable de pouvoir s'y connecter sans révéler de mot de passe. C'est ce que fait par exemple le protocole "Secure Remote Password", qui mise sur une preuve de connaissance zéro. Ici, on prouve d'une autre manière que l'on a les connaissances nécessaires et que l'on est autorisé à accéder.

Mais comment cela fonctionne-t-il maintenant ?

La preuve de connaissance zéro expliquée simplement

Pour illustrer l'idée de la preuve du savoir zéro, une histoire racontée par Jean-Jacques Quisquater, Louis Guillou et al dans "How to explain zero-knowledge protocols to your children" est appropriée.

En bref, elle se déroule ainsi : Dans une grotte, il y a une bifurcation et quel que soit le chemin que l'on suit, on finit par arriver à une porte. Si l'on pouvait l'ouvrir, on constaterait que derrière se trouve l'autre chemin, celui que l'on n'a pas pris à la bifurcation. Les deux chemins de la bifurcation sont donc reliés, interrompus par la porte fermée.

Si une personne A prétend pouvoir ouvrir la porte, elle pourrait emmener une personne B et faire une démonstration pure et simple. Mais à ce moment-là, elle révélerait comment elle ouvre la porte. Comment peut-elle prouver qu'elle possède ce savoir sans le révéler au même moment ?

Dans l'histoire ci-dessus, cela fonctionne comme suit : La personne A entre dans la grotte et choisit au hasard l'un des deux chemins à la fourche. La personne B attend d'abord à l'extérieur, puis entre également et crie à la personne A de quel côté de la bifurcation elle doit revenir. Si la personne A est déjà du bon côté, elle revient simplement sur ses pas. Si elle est du mauvais côté, elle doit ouvrir la porte pour utiliser l'autre chemin.

Les deux personnes répètent ce processus jusqu'à ce que la personne B soit convaincue que la personne A ne se trouve pas par hasard du bon côté à chaque fois, mais qu'elle peut effectivement ouvrir la porte entre les deux. Plus cette opération est répétée, plus elle devient probable.

Dans le cas d'une preuve de connaissance zéro, la personne A de cet exemple est appelée le "prouveur" ("prover"), la personne B est le "vérificateur" ("verifier").

Les défis des applications à connaissance zéro

L'une des principales difficultés consiste à développer et à mettre en œuvre un test approprié. Un autre défi peut consister à détecter les erreurs : Après tout, les processus sont délibérément organisés de manière à ce qu'ils ne soient pas facilement visibles.

Un autre problème est d'ordre pratique : si un utilisateur perd son mot de passe, le fournisseur n'a aucun moyen de le récupérer ou de le modifier. Il est donc de la responsabilité de l'utilisateur de le conserver en toute sécurité.

Mot de la fin

Il s'avère qu'avec de l'ingéniosité et des efforts, il est tout à fait possible de trouver une solution qui ne transmet pas de données susceptibles d'être interceptées et exploitées par un pirate. La "Zero Knowledge Proof" et les architectures et applications qui en découlent constituent à cet égard un bon exemple de solutions particulièrement sûres et peu gourmandes en données.

Prêt pour la sécurité numérique de qualité suisse ?