Qu’est-ce que «Zero-Knowledge Proof» (ZKP)?
Traduction de https://blog.chain.link/what-is-a-zero-knowledge-proof-zkp/ July 21, 2021 Chainlink
Si la transparence inhérente aux blockchains constitue un avantage dans de nombreuses situations, il existe également un certain nombre de cas d’utilisation de smart contracts qui nécessitent une confidentialité pour diverses raisons commerciales ou juridiques, comme l’utilisation de données propriétaires comme entrées pour déclencher l’exécution d’un smart contract. Une façon de plus en plus courante d’assurer la confidentialité sur les blockchains publiques consiste à utiliser Zero-Knowledge Proof — preuve de connaissance zéro (ZKP) — une méthode permettant à une partie de prouver cryptographiquement à une autre qu’elle possède des connaissances sur un élément d’information sans révéler les informations sous-jacentes réelles. Dans le contexte des blockchains, la seule information révélée on-chain par une ZKP est qu’un élément d’information caché est valide et connu par le “prouveur” avec un degré élevé de certitude.
Dans cet article, nous explorons comment les ZKPs fonctionnent pour fournir des garanties de confidentialité, les principaux avantages qu’elles offrent aux utilisateurs, et un éventail de cas d’utilisation de la blockchain qui exploitent les ZKPs. En outre, nous montrons comment la technologie DECO de Chainlink permet de créer des oracles préservant la confidentialité qui peuvent prouver que les données proviennent d’un serveur web spécifique de manière confidentielle et rétrocompatible.
Comment fonctionne Zero-Knowledge Proof
Les ZKPs ont été décrites pour la première fois en 1985 dans un article du MIT de Shafi Goldwasser et Silvio Micali intitulé “The Knowledge Complexity of Interactive Proof-Systems”. Dans cet article, les auteurs démontrent qu’il est possible pour un prouveur de convaincre un vérificateur qu’une déclaration spécifique sur un point de données est vraie sans divulguer aucune information supplémentaire sur les données. Les ZKPs peuvent être soit interactives — où un prouveur convainc un vérificateur spécifique mais doit répéter ce processus pour chaque vérificateur individuel — soit non interactives — où un prouveur génère une preuve qui peut être vérifiée par quiconque utilise la même preuve. De plus, il existe maintenant diverses implémentations de ZKP, notamment zk-SNARKS, zk-STARKS, PLONK et Bulletproofs, chacune ayant ses propres compromis en termes de taille de preuve, de temps de démonstration, de temps de vérification, etc.
Les trois caractéristiques fondamentales qui définissent un ZKP sont les suivantes :
- L’exhaustivité : Si une déclaration est vraie, alors un vérificateur honnête peut être convaincu par un prouveur honnête qu’ils possèdent la connaissance de l’entrée correcte.
- La solidité : Si une déclaration est fausse, alors aucun vérificateur malhonnête ne peut convaincre unilatéralement un vérificateur honnête qu’il possède la connaissance de l’entrée correcte.
- Connaissance zéro: Si l’état est vrai, alors le vérificateur n’apprend rien d’autre du prouveur que l’état est vrai.
À un niveau élevé, la création d’un ZKP implique qu’un vérificateur demande au vérificateur d’exécuter une série d’actions qui ne peuvent être exécutées avec précision que si le vérificateur connaît les informations sous-jacentes. Si le vérificateur ne fait que deviner le résultat de ces actions, le test du vérificateur finira par lui donner tort avec un haut degré de probabilité.
Un exemple conceptuel pour comprendre intuitivement la preuve de données en connaissance zéro est d’imaginer une grotte avec une seule entrée mais deux chemins (chemin A et B) qui se connectent à une porte commune verrouillée par un mot de passe. Alice veut prouver à Bob qu’elle connaît le code d’accès à la porte, mais sans révéler le code à Bob. Pour ce faire, Bob se tient à l’extérieur de la grotte et Alice entre dans la grotte en empruntant l’un des deux chemins (sans que Bob sache lequel a été emprunté). Bob demande ensuite à Alice de prendre l’un des deux chemins pour retourner à l’entrée de la grotte (choisi au hasard). Si Alice a choisi à l’origine de prendre le chemin A jusqu’à la porte, mais que Bob lui demande ensuite de reprendre le chemin B, la seule façon de terminer le puzzle est qu’Alice connaisse le code de la porte verrouillée. Ce processus peut être répété plusieurs fois pour prouver qu’Alice connaît le code de la porte et qu’elle n’a pas choisi le bon chemin à prendre initialement avec un haut degré de probabilité.
Une fois ce processus terminé, Bob a un haut degré de confiance dans le fait qu’Alice connaît le code de la porte sans avoir à le révéler à Bob. Bien qu’il ne s’agisse que d’un exemple conceptuel, les ZKPs déploient cette même stratégie, mais en utilisant la cryptographie pour prouver la connaissance d’un point de données sans révéler ce point de données. Dans cet exemple de grotte, il y a une entrée, un chemin et une sortie. En informatique, il existe des systèmes similaires, les circuits, qui prennent une entrée, font passer le signal d’entrée par un chemin de portes électriques et génèrent une sortie. ZKP s’appuie sur des circuits de ce type pour prouver des affirmations.
Imaginez un circuit de calcul qui produit une valeur sur une courbe, pour une entrée donnée. Si un utilisateur est capable de fournir systématiquement la réponse correcte à un point de la courbe, on peut être sûr que l’utilisateur possède une certaine connaissance de la courbe, car il devient de plus en plus improbable de deviner la bonne réponse à chaque tour de défi successif. On peut considérer le circuit comme le chemin qu’Alice emprunte dans la grotte. Si elle est capable de traverser le circuit avec son entrée, elle prouve qu’elle détient une certaine connaissance, le “code” du circuit, avec un haut degré de probabilité. Le fait de pouvoir prouver la connaissance d’un point de données sans révéler d’autres informations que la connaissance des données présente un certain nombre d’avantages essentiels, en particulier dans le contexte des blockchains.
Les avantages des Zero-Knowledge Proofs
Le principal avantage de ZKP est la possibilité d’exploiter des ensembles de données préservant la vie privée dans des systèmes transparents tels que les blockchains publiques comme Ethereum. Alors que les blockchains sont conçues pour être très transparentes, c’est-à-dire que toute personne exploitant son propre nœud de blockchain peut voir et télécharger toutes les données stockées sur le grand livre, l’ajout de la technologie ZKP permet aux utilisateurs et aux entreprises d’exploiter leurs ensembles de données privées dans l’exécution de smart contracts sans révéler les données sous-jacentes.
Garantir le respect de la vie privée au sein des blockchains est crucial pour les institutions traditionnelles telles que les sociétés dans la Supply Chain, les entreprises et les banques qui souhaitent interagir avec les smart contracts et les lancer, mais qui doivent préserver la confidentialité de leurs secrets commerciaux pour rester compétitives. En outre, ces institutions sont souvent tenues par la loi de protéger les informations personnellement identifiables (PII) de leurs clients et de se conformer à des réglementations telles que le règlement général sur la protection des données (GDPR) de l’Union européenne et la loi sur la portabilité et la responsabilité de l’assurance maladie (HIPAA) aux États-Unis.
Alors que les blockchains à autorisation ont émergé comme un moyen de préserver la confidentialité des transactions pour les institutions du regard du public, les ZKPs permet aux institutions d’interagir en toute sécurité avec les blockchain publics — qui bénéficient souvent d’un important effet de réseau d’utilisateurs dans le monde entier — sans renoncer au contrôle des ensembles de données sensibles et propriétaires. En conséquence, la technologie ZKP ouvre avec succès un large éventail de cas d’utilisation institutionnels pour les blockchains publiques qui étaient auparavant inaccessibles, incitant à l’innovation et créant une économie mondiale plus efficace.
Les utilisations de Zero-Knowledge Proof
Les ZKPs ont été utilisées par des blockchains telles que Zcash pour permettre aux utilisateurs de créer des transactions préservant la vie privée et dont le montant, l’expéditeur et le destinataire restent privés. Les oracles décentralisés, qui fournissent aux smart contracts un accès aux données et aux calculs off-chain, peuvent également exploiter les ZKPs pour prouver certains faits concernant un point de données off-chain, sans révéler les données sous-jacentes on-chain.
Une mise en œuvre d’une solution d’oracle basée ZKP en cours de développement est DECO, un protocole d’oracle préservant la confidentialité au sein de la suite de calculs off-chain sécurisés du réseau Chainlink. En étendant HTTPS/TLS, le protocole le plus communément utilisé pour transférer des données sur Internet, DECO garantit que les données restent privées et inviolables pendant leur livraison à partir de diverses sources de données privées et premium. DECO fonctionne avec les versions modernes de TLS, ne nécessite pas de matériel de confiance et fonctionne de manière rétrocompatible sans nécessiter de modifications côté serveur. Par conséquent, les nœuds oracles Chainlink équipés de DECO peuvent prouver des faits concernant des données provenant de serveurs de confiance sans révéler les données on-chain, tout en prouvant également la source des données puisque la TLS est maintenue.
Avec des ZKPs comme DECO, un large éventail de cas d’utilisation de smart contracts est rendu possible, y compris les prêts sous-collatéralisés, où les emprunteurs génèrent des références de haute assurance attestant de leur solvabilité d’une manière préservant la vie privée. Plus précisément, les emprunteurs peuvent générer ces justificatifs sur la base d’enregistrements provenant de sources en ligne faisant autorité, telles que des institutions établies, sans exposer de données potentiellement sensibles telles que leur nom, leur localisation ou la valeur exacte de leur cote de crédit (seulement qu’elle dépasse un seuil prédéfini).
DECO peut également servir à la création de protocoles d’identité décentralisée (DID) tels que CanDID, où les utilisateurs peuvent obtenir et gérer leurs propres justificatifs d’identité, plutôt que de s’en remettre à un tiers centralisé. Ces justificatifs sont signés par des entités, appelées émetteurs, qui peuvent associer avec autorité des déclarations aux utilisateurs, comme la citoyenneté, la profession, les diplômes universitaires, etc. DECO permet à n’importe quel serveur web existant de devenir un émetteur et fournit une gestion du partage des clés pour sauvegarder les comptes, ainsi qu’une forme de résistance à la sybille préservant la vie privée et basée sur des identifiants uniques définitifs tels que les numéros de sécurité sociale (SSNs).
Enfin, les solutions ZKPs comme DECO profitent non seulement aux utilisateurs, mais permettent également aux institutions traditionnelles et aux fournisseurs de données de monétiser leurs ensembles de données exclusives et sensibles de manière confidentielle. Au lieu de publier les données directement on-chain, seules les attestations dérivées des ZKPs prouvant les faits relatifs aux données doivent être publiées. Cela ouvre de nouveaux marchés aux fournisseurs de données, qui peuvent monétiser les ensembles de données existants et augmenter leurs revenus tout en garantissant l’absence de fuite de données. Lorsqu’elle est associée à Chainlink Mixicles, la confidentialité est étendue au-delà des données d’entrée exécutant un accord pour inclure également les termes de l’accord lui-même.
En combinant la nature intrinsèquement transparente des blockchains avec la conception préservant la vie privée des ZKPs, les entreprises et les institutions bénéficient du meilleur des deux mondes : elles peuvent garder leurs ensembles de données internes privés tout en les exploitant dans les environnements d’exécution fiables des applications de smart contracts.
Lisez le white paper Chainlink 2.0 pour en savoir plus sur le rôle des oracles décentralisés dans les systèmes de smart contracts préservant la confidentialité et inscrivez-vous à la newsletter Chainlink pour recevoir les dernières mises à jour sur Chainlink.