Aujourd’hui la question des données personnelles sur Internet est un sujet majeur de l’écosystème tout entier. Comment les informations confidentielles peuvent-elles être protégées? De quelle manière les stocker efficacement, sont-elles utilisées à l’insu des utilisateurs? Autant de questions souvent difficiles à répondre à l’heure actuelle. Même si les récentes réglementations européennes visent à protéger davantage les utilisateurs. C’est bien qu’il existe malgré tout des formes d’abus à propos de l’utilisation de ces données sur la toile. Mais alors qu’est-ce que la preuve à divulgation nulle de connaissance ou Zero-Knowledge Proof, (ZKP) en anglais.
Basiquement, le réseau d’une blockchain fonctionne grâce à un protocole. Il détermine une méthode de consensus afin de sécuriser le réseau. L’algorithme de consensus permet aux validateurs d’avoir des règles à suivre pour valider les transactions et sécuriser le réseau. L’utilisation de cette technique permet d’améliorer les résultats des blockchains actuelles mais aussi de protéger les données personnelles des utilisateurs. L’article vous présente ce qu’est la preuve de divulgation nulle de connaissance, ZKP, et de quelle manière elle fonctionne à l’intérieur d’un environnement blockchain.
Une liste de liens accessibles en bas de page est disponible afin de vous diriger vers nos précédents articles qui traitent des sujets abordés dans cet article. Comme par exemple la cryptomonnaie Loopring ou Algorand.
Définition des concepts de base
Le consensus d’une blockchain
Le consensus de validation garantit que chaque nouveau bloc créé, validé et ajouté à la blockchainsoit une version unique de la vérité. Tous les nœuds, les validateurs du réseau doivent être en commun accord pour valider une version similaire de la blockchain. Concrètement, le mécanisme de consensusest un audit interne automatique de la chaîne de blocs.
Découvrez notre article au sujet du mécanisme de consensus d’une blockchain
L’histoire du « ZKP »
En 1985 une équipe de trois personnes, Charles Rackoff, Shafi Goldwasser et Silvio Micali développent une innovation au sujet des connaissances complexes des systèmes de preuve interactives. Rappelons que Silvio Micali est le créateur du projet Algorand et a reçu avec Shafi Goldwasser le prix Turing en 2012.
La preuve à divulgation nulle de connaissance ou ZKP – « Zero-knowledge proof » connaît une émergence importante actuellement car cette méthode peut être la solution concernant la protection des données personnelles. D’ailleurs, la cryptomonnaie Loopring utilise déjà cette solution comme consensus de validation pour assurer la sécurité de ses utilisateurs.
Qu’est-ce que le Zero-Knowledge Proof
Le protocole fonctionne grâce à un ZKP, en quelque sorte, il s’agit d’une validation qui ne fournit aucune information personnelle. Ce système est utilisé en cryptographie pour «authentifier» ou «identifier» de manière sécurisée.
Dans le schéma de validation se trouve un fournisseur de preuve et un vérificateur. Le fournisseur de preuve cherche à prouver quelque chose d’une manière mathématique au validateur. Cependant, il ne pourra dévoiler aucune autre information que la solution au problème.
Les protocoles sont de types «défi/réponse» où les deux entités s’échangent des informations et le validateur contrôle si la réponse finale est positive ou négative.
L’objectif des ZKP
1. La confidentialité
La preuve à divulgation nulle de connaissance accélère les procédés existants. Cette preuve permet de valider quelque chose sans pour autant transmettre des informations confidentielles. Elle se concentre sur la véracité de la proposition. Toutes les blockchains disposent de leurs systèmes de consensus. Il permet de trouver un accord entre les utilisateurs du réseau sur l’implémentation d’un nouveau bloc ainsi que la validation des transactions au sein de la blockchain. Les plus connus, la preuve de travail pour Bitcoin et la preuve d’enjeu pour Ethereum sont deux algorithmes qui permettent d’intégrer plus ou moins rapidement les transactions sur le réseau de façon sécurisée.
Ces cryptomonnaies enregistrent des informations détaillées lors de la validation des transactions : l’émetteur, le destinataire, la date et le montant par exemple. De cette manière, il est simple de connaître les instigateurs de l’utilisation du réseau, mais certaines entités souhaitent garder un certain niveau de confidentialité. C’est dans ce cas de figure que l’utilisation du protocole ZKP devient intéressante.
C’est d’ailleurs la cryptomonnaie Zcash qui a été la première à initier l’utilisation de ce protocole à divulgation nulle de connaissance. Cela permet de masquer les détails de la transaction tout en validant et en sécurisant son implémentation au sein de la blockchain.
2. La conformité
Les exigences européennes en matière de protection des données personnelles ont évolué durant l’année 2018. Il est désormais obligatoire pour une entreprise de surveiller et de protéger l’utilisation des données de ses utilisateurs. Mais la question ne se pose pas si elle utilise un protocole à divulgation nulle de connaissance puisque les informations confidentielles ne sont pas utilisées. Aucune manipulation des données personnelles permet de se conformer à la législation en vigueur.
3. L’anonymisation
L’anonymat total des données pose un problème en cas d’usage illégal ou de litige car il est impossible de relier l’utilisation et l’utilisateur. Aujourd’hui les entreprises sont à la croisée des chemins, d’un côté elles doivent soutenir le développement des innovations et des nouvelles technologies grâce par exemple à l’intelligence artificielle et la convergence des technologies. Mais en plus de ça, elles reçoivent des réglementations de plus en plus strictes au sujet des données personnelles. L’anonymisation serait la porte pour la création d’une base de données anonymes pour le développement de l’intelligence artificielle par exemple.
Comment fonctionne la preuve du ZKP ?
Le protocole ZKP permet de partager des preuves plutôt que des informations personnelles alors que la plupart des systèmes d’aujourd’hui utilisent les données confidentielles.
Pour fonctionner, le protocole doit satisfaire à trois propriétés:
- ZK – Zero Knowledge – Aucune information
Le fournisseur de preuve ne fournit aucune information, aucune donnée personnelle confidentielle. Le validateur est missionné pour vérifier la véracité de la preuve fournie par l’initiateur de la demande. Il s’agit d’un processus de résolution de problèmes mathématiques qui servira de preuve pour valider la demande de transaction par exemple.
- Robustesse
Dans le cas où la proposition serait fausse, aucun demandeur malveillant ne pourra convaincre un validateur honnête. La méthode de calcul utilisée est vérifiée de façon à ce que l’ensemble des résultats n’ait pas la possibilité d’être faux.
- Consistance
Si les deux parties suivent les règles dictées par le protocole alors ils seront tous deux convaincus de la véracité de la solution.
Exemple simple
Cet exemple prouve que la vérification peut être réalisée sans divulgation de la vérité. Lors d’une partie de cartes, le premier joueur veut prouver à son adversaire qu’il dispose d’une figure dans sa main sans dévoiler sa carte. Il lui suffit de montrer le nombre exact de cartes numérales. Cela va prouver à son adversaire qu’il est en possession d’une figure. Sans pour autant que son adversaire connaisse la valeur exacte de sa carte.
Exemple pour comprendre l’algorithme
L’article rédigé par les trois chercheurs dont Silvio Micali au sujet de la présentation de la divulgation nulle de connaissance s’appuie sur l’exemple du tunnel.
Bob est le demandeur et Alice la validatrice. Bob souhaite prouver à Alice qu’il dispose d’une clef et Alice doit s’appuyer sur un protocole pour valider le fait que Bob dispose bien de la clé. Règle importante, Bob ne dévoile aucune information hormis bien sur le fait qu’il soit dans le tunnel.
Alice à l’entrée du tunnel va demander à Bob de la rejoindre soit en empruntant le chemin A ou le chemin B, de façon à savoir s’il détient bien la clé.
Il existe 4 possibilités pour Alice si Bob détient la clé, Bob doit apparaître depuis le chemin :
- A alors qu’il est déjà sur le chemin A → Il résout le protocole sans détenir la clé
- A alors qu’il se trouve sur le chemin B → Il valide le protocole grâce à la clé
- B alors qu’il se trouve sur le chemin A → Il valide le protocole grâce à la clé
- B alors qu’il se trouve déjà sur le chemin B → Il résout le protocole sans détenir la clé
Il existe 4 possibilités pour Alice si Bob ne détient pas la clé, Bob doit apparaître depuis le chemin :
- A alors qu’il est déjà sur le chemin A → Il résout le protocole pas besoin d’avoir la clé
- A alors qu’il se trouve sur le chemin B → Il ne valide pas le protocole
- B alors qu’il se trouve sur le chemin A → Il ne valide pas le protocole
- B alors qu’il se trouve déjà sur le chemin B → Il résout le protocole pas besoin d’avoir la clé
*Remarque : Si Bob ment et ne détient pas la clé, il a tout de même une chance sur deux de valider le protocole. Afin de rendre le protocole plus robuste, il faut répéter l’opération pour être sûr que Bob détient la clé.
Plus en détail
Le développement du protocole ZKP
La question était de savoir comment servir plus de deux acteurs en même temps? Une technique plus avancée a vu le jour nommée NIZKPs (Non Interactive Zero Knowledge Proof) qui a plusieurs avantages :
- Les preuves à fournir sont moins complexes et le temps associé à la vérification est plus court
- Il y a très peu d’interactions entre les parties. Cela ne nécessite pas forcément d’avoir un canal de communication stable entre les parties pour soumettre le protocole
- Cette mise à niveau du protocole nécessite juste l’envoi de la preuve au système. De cette façon, à ce que celle-ci soit stockée pour que tous les validateurs puissent y avoir accès
La famille des zk-SNARKs
Cette famille des zk-SNARKs est utilisée au sein de la blockchain Loopring, elle permet de vérifier l’exactitude des calculs sans les réaliser. Il est vrai que sur une blockchain publique lorsque l’on souhaite réaliser une transaction, on connaît la clé publique. Elle est associée à diverses informations, portefeuilles, pseudonymes ou identités, le montant, etc…
Grâce à ce protocole amélioré, un système externe à la blockchain va venir vérifier l’ensemble des informations disponibles pour la validation de la transaction. Il va générer une preuve comme quoi les informations sont vraies et vérifiées. De cette manière, les mineurs qui s’occupent du réseau ont accès seulement aux preuves de véracité de la transaction. Le protocole permet de garder des informations secrètes à l’intérieur d’une blockchain publique.
Auteur de l’article :
Stan – « Chancellor on brink of second bailout for banks »
L’homme solitaire pense seul et crée des nouvelles valeurs pour la communauté