Quelles applications pour les Zero Knowledge Proofs dans les technologies blockchain?
Preuve sans connaissance plutôt que connaissance sans preuve – Issues de nombreuses années de recherche dans le domaine de la cryptographie, les Zero Knowledge Proofs (ZKP) font partie de ces domaines d’étude particulièrement abstraits et complexes à saisir pleinement. Parmi les champs d’applications de ces technologies figurent les réseaux cryptographiques distribués, généralement construits selon un modèle ne procurant aucun réel anonymat.
Être en mesure de divulguer ou non une information personnelle constitue un prérequis indispensable au développement d’un système d’identification numérique viable et sain. Par ailleurs, la bonne exécution des transactions sur lesdits réseaux est souvent altérée du fait de problèmes de congestion, qu’elles sont potentiellement en mesure de résoudre. Les usages potentiels d’un tel protocole sont donc nombreux et particulièrement importants dans le contexte actuel.
>> Mettez vos cryptomonnaies au vert. Choisissez un portefeuille Ledger (lien commercial) <<
Qu’est-ce qu’une Zero Knowledge Proof ?
Génèse des ZKP
Les Zero Knowledge Proofs (ZKP) – ou preuves à divulgation nulle de connaissance – ont vu le jour il y a une quarantaine d’années. Développées principalement par Shafi Goldwasser et Silvio Micali, tous deux informaticiens, ainsi que le cryptologue Charles Rackoff, ces fameuses preuves renvoient à un protocole cryptographique sécurisé permettant à une partie, appelée « prouveur », de prouver la validité d’une proposition à une autre partie appelée « vérificateur », sans révéler la moindre information relative à la proposition elle-même. Ainsi, aucune donnée ne peut être obtenue à partir d’une preuve à divulgation nulle de connaissance, hormis l’information de la véracité et de l’intégrité de la proposition.
De nombreux scientifiques ont par la suite étudié ce tout nouveau sous-domaine de la cryptographie. Citons entre autres Jean-Jacques Quisquater, participant actuellement au développement du portefeuille froid de cryptomonnaies NGRAVE, qui a publié avec Louis Guillon un article de recherche en 1989 intitulé « How to explain zero-knowledge protocols to your children ». L’objectif de ce dernier était de vulgariser le concept de preuve à divulgation nulle de connaissance par le biais de l’analogie de la grotte d’Ali Baba.
Où est Charlie ?
D’autres situations permettant de se représenter le concept ont par la suite été imaginées. L’une d’elles fait référence aux célèbres livres-jeux « où est Charlie ? ».
Imaginez le scénario suivant : vous connaissez la localisation de Charlie et devez prouver à votre interlocuteur que vous possédez cette information. Plusieurs possibilités s’offrent alors à vous :
- Vous pointez du doigt Charlie sur la page et fournissez ainsi une information directe sur sa localisation. Vous prouvez alors à votre interlocuteur que vous aviez la connaissance de la localisation de Charlie
- Vous dessinez Charlie au bon endroit sur un papier calque possédant les mêmes dimensions que la page. Vous le remettez à votre interlocuteur. Ce dernier pourra le faire correspondre à la page et retrouver Charlie. Vous avez donc fourni la preuve que vous connaissiez la position de Charlie, sans pour autant révéler d’information directe sur sa position.
Cet exemple illustre simplement le concept de preuve à divulgation nulle de connaissance, mais représente mal la mission du vérificateur. En effet, il lui suffisait juste de vérifier la concordance entre le papier calque et la page. En réalité, le vérificateur soumettra la preuve un très grand nombre de fois afin de la caractériser de façon probabiliste comme vraie.
La technologie des ZKP est restée longtemps méconnue du fait du manque d’applications concrètes en l’état. Elle a par la suite engendré un engouement massif lors du développement des blockchains et principalement d’Ethereum.
Il est important de souligner le fait que les ZKP relèvent d’un mécanisme empirique probabiliste. Une telle preuve ne pourra donc jamais garantir formellement l’exactitude d’une proposition. Néanmoins, au-delà d’un certain seuil, la probabilité est si grande qu’il est acceptable de considérer les propositions vérifiées comme exactes. Le résultat se présente alors toujours sous une forme booléenne de type « vrai » ou « faux ».
Les Zero Knowledge Proofs en 3 propriétés
Pour remplir pleinement leurs fonctions, les preuves à divulgation nulle de connaissance doivent respecter les trois propriétés suivantes :
- Consistance (completeness) : dans le cas où la proposition serait vraie, un vérificateur honnête sera toujours en mesure de l’affirmer au prouveur.
- Robustesse (soundness) : dans le cas où la proposition serait fausse, aucun acteur malveillant ne peut convaincre un vérificateur « honnête » que la proposition est vraie. Autrement dit, il est impossible de prouver une proposition erronée.
- Divulgation nulle d’information (zero knowledge) : le vérificateur n’obtient aucune information sur la proposition et sait simplement qu’elle est vraie ou fausse.
Les deux premières propositions sont communes à tout système de preuve, seule la dernière confère la confidentialité caractéristique des ZKP.
Il existe actuellement plusieurs façons de construire une preuve à divulgation nulle de connaissance. Initialement, les protocoles produisaient des preuves interactives, nécessitant une interaction entre le prouveur et le vérificateur pour s’exécuter. Elles s’avèrent peu scalables puisque le prouveur et le vérificateur doivent nécessairement être connectés au réseau au même moment pour valider la preuve. Il est désormais possible d’obtenir des preuves non-interactives avec notamment les zk-SNARK, intégrant une fonction de hachage et réduisant les interactions au simple partage de la preuve sur le réseau, laquelle peut ensuite être vérifiée par quiconque le souhaite.
Les applications potentielles sont nombreuses, et dépassent largement les seules technologies blockchain. Elles incluent notamment l’authentification et la signature sur tout type de réseau sans fil ou encore les systèmes de vote.
3 applications prédominent largement concernant les technologies de registres distribués :
- Augmentation de la scalabilité sur les solutions de seconde couche
- Amélioration de la confidentialité lors des transactions
- Gestion d’un système d’identité numérique
Scalabilité
L’une des propriétés des ZKP particulièrement étudiées est sa capacité à valider rapidement un grand nombre de transactions. En effet, les principales de blockchains dites layer 1 – de première couche – rencontrent fréquemment des difficultés à assumer leur flux de transactions. De cette congestion découle naturellement une augmentation de frais moyens de transaction par escalade de priorisation.
La taille des blocs constitue l’un des éléments majeurs conditionnant la scalabilité d’un réseau blockchain distribué. Plus celle-ci est importante, plus le réseau est en mesure de traiter un grand nombre de transactions par unité de temps. Néanmoins, l’augmenter entraînera nécessairement une charge plus lourde sur les différents nœuds validateurs d’un réseau en preuve d’enjeu. Le risque est donc celui d’une diminution de la décentralisation par concentration des nœuds validateurs actifs.
Augmenter la taille des blocs est susceptible de conduire à d’autres problématiques, avec notamment un risque plus grand de modification de la chaîne en cas d’attaque. Il est ainsi devenu consensuel qu’augmenter la taille des blocs sur un layer 1 n’est pas une solution viable pour résoudre le problème de la scalabilité.
De nombreuses solutions ont alors émergé, principalement sur Ethereum, et qualifiées de « seconde couche » ou layer 2. Leur objectif est simple : soulager la chaîne du layer 1 sujette à congestion en exécutant les transactions ailleurs.
Parmi elles, les technologies utilisant les preuves à divulgation nulle de connaissance semblent sortir du lot pour plusieurs raisons que nous ne détaillerons pas ici. Synthétiquement, elles permettent d’exécuter un grand nombre de transactions off chain en publiant périodiquement une preuve des transactions effectuées. La preuve fournie sur layer 1 peut être accompagnée de la publication des données relatives aux transactions sous une forme compressée appelée calldata, on parlera alors de ZK-rollup. Dans le cas contraire, il s’agira d’un Validium qui conserve les données off chain.
En résumé : les ZK-rollup sont des solutions proposées en surcouche d’une blockchain afin d’en améliorer les performances. Elles exécutent un grand nombre de transactions et utilisent les preuves à divulgation nulle de connaissance afin d’attester de leur validité. Elles publient ensuite ces preuves dans un smart contract sur le réseau mère afin de les valider définitivement, accompagnées ou non des données elles-mêmes.
Soulignons que les solutions de scaling utilisant les ZKP peuvent correspondre à une entité centralisée générant les preuves, ou alors un réseau distribué dont les nœuds s’occupent de la génération des preuves. Dans les deux cas, la sécurité est garantie.
La construction des ZKP étant telle qu’il est impossible de prouver quelque chose de faux, toute preuve publiée sur le réseau mère jouit de facto du niveau de sécurité fourni par celui-ci.
Les SNARK et les STARK, toutes deux très récentes, constituent actuellement les 2 seules ZKP utilisées pour le développement des ZK-rollups.
ZK-SNARK
Les zk-SNARK – Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge – sont comme leur nom l’indique :
- Succinctes : les preuves générées sont de taille réduite.
- Non-interactives : le protocole ne nécessite pas la connexion simultanée du prouveur et du vérificateur. Ainsi, il est possible de diffuser une preuve de type SNARK sur un réseau, la rendant ainsi vérifiable par n’importe qui et n’importe quand, que l’émetteur de la preuve participe encore au réseau ou non.
Toute preuve zk-SNARK requiert un générateur de clés lors d’un trusted setup, dont le rôle est de fabriquer une clé de preuve et une clé de vérification à partir d’une donnée secrète. La gestion de cette dernière est cruciale car sa divulgation peut permettre la création de fausses preuves.
ZCash est la première blockchain ayant utilisé les zk-SNARK dans son protocole. Axée sur la confidentialité des transactions, elle permet une utilisation parfaitement anonyme grâce à des adresses particulières – shielded adresses – dont l’ensemble des transactions associées sont soumises aux zk-SNARK et seule la preuve est publiée sur la chaîne.
ZK-STARK
Encore plus innovantes que les précédents, les zk-STARK – Zero-Knowledge Scalable Transparent Arguments of Knowledge – ont été découvertes en 2019 par Eli Ben-Sasson et son équipe. Rappelons que ce dernier est notamment le créateur de Zcash précédemment décrit. Il est également l’origine de l’entreprise Starkware développant des solutions de seconde couche sur Ethereum.
Les zk-STARK se distinguent du fait de leurs caractéristiques propres :
- Scalables : elles sont capables d’une mise à l’échelle bien plus grande que les zk-SNARK, la preuve fournie est de plus petite taille et peut être vérifiée très rapidement.
- Transparentes : à la différence des zk-SNARK, il n’y a plus de trusted setup nécessaire. Il n’y a donc plus de notion de confiance et les STARK se suffisent à elles-mêmes.
- Résistantes aux calculateurs quantiques contrairement aux zk-SNARK.
Elles sont non-interactives tout comme les zk-SNARK. Leur mécanisme de fonctionnement implique une forme d’interactivité avec un oracle aléatoire permettant la vérification de la preuve sans interaction avec le prouveur.
Elles constituent à l’heure actuelle la solution la plus performante afin d’effectuer une mise à l’échelle sur Ethereum ou toute autre blockchain layer 1.
Confidentialité
Du fait même de sa construction, la preuve à divulgation nulle de connaissance s’associe nécessairement à une confidentialité vis-à-vis du contenu prouvé. Ainsi, toute blockchain intégrant un tel mécanisme peut décider de diffuser ou non les informations liées aux transactions effectuées.
Néanmoins, les ZKP ne sont certainement pas le seul mécanisme permettant de garantir une certaine confidentialité sur un registre distribué. Citons par exemple la blockchain Monero lancée en 2014, bien avant la découverte des SNARK et des STARK. Elle utilise entre autres un système d’adresses furtives afin de protéger la vie privée de ses utilisateurs.
Les ZKP peuvent s’appliquer de différentes manières :
- Intégration dans le fonctionnement d’une blockchain comme c’est le cas pour Starknet, développée par Starkware. L’intérêt serait de pouvoir offrir une confidentialité sur mesure sur la totalité du réseau.
- Utilisation pour des applications spécifiques avec notamment l’exemple de Tornado Cash sur Ethereum, permettant de mixer un pool d’ETH afin de les nettoyer de leur historique.
Il ne fait aucun doute que les applications des ZKP à la protection de la vie privée se développeront à grande vitesse dans les années à venir, le contexte réglementaire s’y prêtant particulièrement.
Identité numérique
Les preuves à divulgation nulle de connaissance sont également étudiées pour leurs propriétés concernant l’identité numérique. C’est d’ailleurs pour résoudre des problèmes d’authentification qu’elles ont initialement vu le jour.
La gestion d’une identité numérique implique la conservation sécurisée de données personnelles et la non-divulgation de celles-ci. Les ZKP trouvent tout leur sens dans ce domaine d’application, et permettront aux utilisateurs du réseau d’effectuer des signatures numériques sans avoir besoin de diffuser plus d’informations que nécessaire. Les applications sont pratiquement infinies.
Les preuves à divulgation nulle de connaissance représentent une avancée majeure dans le domaine de la cryptologie. Leurs applications sont nombreuses et d’actualité : aide pour la mise à l’échelle des blockchains d’infrastructure, amélioration de la vie privée des utilisateurs et développement d’un système d’identité numérique viable. Leur avenir s’annonce radieux, mais la route est encore longue.
Besoin d’un portefeuille sécurisé pour explorer les multiples applications de la DeFi ? La meilleure solution est encore un wallet hardware personnel ? Équipez-vous d’un wallet hardware sécurisé. Ledger, vous offre jusqu’à 30 $ en BTC pour l’achat d’une clé Nano si vous commandez aujourd’hui. Votre sécurité n’a pas de prix (lien commercial).