La preuve à connaissance nulle (ZKP) est une technologie cryptographique introduite pour la première fois dans un article intitulé "The Knowledge Complexity Of Interactive Proof Systems" au début des années 1980 par S. Goldwasser, S. Micali et C. Rackoff. Conçu à l'origine comme un modèle théorique, il visait à relever le défi de la vérification des énoncés mathématiques sans révéler de preuves. Ce concept a suscité une grande attention dans le monde universitaire parce qu'il remet en question les limites des techniques de cryptage traditionnelles et offre une nouvelle approche du traitement des informations sensibles.
Au fil du temps, le ZKP est passé d'un concept théorique abstrait à des protocoles concrets pouvant être intégrés dans diverses applications. Au début du 21e siècle, avec la croissance explosive de l'internet et de la communication numérique, le potentiel du ZKP a commencé à être exploré dans le monde réel. En particulier avec l'essor de la blockchain et des crypto-monnaies, ZKP a démontré sa capacité à renforcer la confidentialité et la sécurité tout en maintenant l'efficacité des transactions et du traitement des données.
Aujourd'hui, le ZKP est non seulement un sujet d'actualité dans la recherche cryptographique, mais il a également été intégré dans de multiples plateformes et applications de blockchain. Par exemple, l'application de zk-SNARKs sur Ethereum Layer2 offre des transactions anonymes sans révéler les détails de la transaction. Ce passage de la théorie à l'application pratique prouve non seulement la valeur pratique du ZKP, mais stimule également l'exploration d'interactions numériques plus efficaces et plus sûres. Avec les progrès technologiques constants, le ZKP joue un rôle de plus en plus important dans la protection de la vie privée, la sécurité des données et la mise en place de systèmes numériques fiables.
La preuve à connaissance nulle (ZKP) est une méthode de cryptage qui permet à une partie (le prouveur) de prouver l'exactitude d'une déclaration à une autre partie (le vérificateur) sans révéler aucune information supplémentaire, c'est-à-dire sans divulguer aucune connaissance dont dépend l'exactitude de la déclaration. Ce processus protège non seulement la vie privée du prouveur, mais garantit également que le vérificateur ne peut pas reproduire le processus de preuve ou l'utiliser pour obtenir des informations supplémentaires.
Diagramme conceptuel des preuves à zéro connaissance (Source : ChainLink)
Les principes fondamentaux des preuves à zéro connaissance (ZKP) peuvent être définis par les trois attributs suivants :
Le principe du ZKP est souvent compris à l'aide d'exemples simples : Si je dois prouver à la personne A que j'ai le numéro de téléphone de la personne B, je n'ai pas besoin de révéler directement le numéro de B à A. Au lieu de cela, je peux le prouver en appelant le numéro de B. Une fois l'appel connecté, il démontre que je possède effectivement le numéro de B, sans divulguer aucune information sur le numéro lui-même.
Dans les applications pratiques, le ZKP nécessite généralement des constructions mathématiques complexes telles que des équations polynomiales, des courbes elliptiques ou d'autres défis mathématiques. La sécurité de ces constructions repose sur la difficulté de calcul de problèmes tels que la factorisation ou les logarithmes discrets. Avec les progrès de la cryptographie, diverses implémentations de ZKP ont émergé, telles que les zk-SNARKs et les zk-STARKs, offrant une protection efficace de la vie privée dans différents contextes, en particulier dans les domaines de la blockchain et des crypto-monnaies.
La forme de base de la preuve à connaissance nulle se compose de trois éléments : le témoin, le défi et la réponse.
Témoin : Dans une preuve à connaissance nulle, le prouveur veut démontrer qu'il a connaissance d'une information cachée. Cette information secrète agit comme le "témoin" de la preuve. Le prouveur, sur la base de sa connaissance du témoin, établit une série de questions auxquelles seule une personne connaissant l'information peut répondre. Ainsi, le prouveur sélectionne au hasard une question pour lancer la preuve, calcule la réponse, puis l'envoie au vérificateur.
Défi : le vérificateur choisit au hasard une autre question dans l'ensemble et demande au prouveur d'y répondre.
Réponse : Le prouveur reçoit la question, calcule la réponse et la renvoie au vérificateur. La réponse du prouveur permet au vérificateur de vérifier si le prouveur a effectivement accès au témoin. Pour s'assurer que le prouveur ne se contente pas de deviner correctement par hasard, le vérificateur sélectionne une autre question. En répétant ce processus plusieurs fois, la probabilité que le prouveur fabrique la vérité diminue considérablement jusqu'à ce que le vérificateur soit satisfait.
Dans l'exemple de l'appel téléphonique susmentionné, "Je" est le témoin qui ne veut pas divulguer l'information, tandis que A est le vérificateur, et le défi posé est "Prouvez que 'Je' possède le numéro de B". Le processus de réponse implique que "moi" connecte un appel au numéro de B pour prouver que je l'ai vraiment.
Comme nous l'avons vu précédemment, les preuves à connaissance nulle (ZKP) offrent intrinsèquement des avantages significatifs dans le domaine de la protection de la vie privée. À l'heure de la surcharge d'informations, les données personnelles sont souvent stockées sur des plateformes tierces, ce qui accroît le risque de violation des données. De plus, en raison des barrières techniques et du retard des sanctions légales, la sécurité de l'information repose en grande partie sur des contraintes éthiques, ce qui rend difficile pour les utilisateurs de contrôler réellement leurs informations privées. L'avènement de la technologie ZKP offre une solution qui permet à la fois de protéger la vie privée et d'améliorer l'efficacité et la sécurité de la vérification.
Par rapport à d'autres technologies de cryptage, le ZKP présente de nombreux avantages :
Que ce soit dans le domaine traditionnel du Web 2.0 ou dans le domaine émergent du Web 3.0, les perspectives d'application du ZKP sont vastes.
Il existe de nombreuses implémentations de preuves sans connaissance, telles que zk-SNARKs, zk-STARKs, PLONK et Bulletproofs. Chaque type a ses avantages et ses inconvénients en termes de taille de la preuve, de temps d'exécution et de temps de vérification. Cet article présente les quatre types les plus couramment utilisés dans les scénarios d'application.
Les zk-SNARK, qui signifient "Zero-Knowledge Succinct Non-Interactive Argument of Knowledge", sont des outils cryptographiques utilisés pour prouver qu'une personne connaît un élément d'information sans révéler l'information elle-même. Dans les zk-SNARK, le terme "zéro connaissance" signifie que le prouveur peut prouver qu'une déclaration est vraie sans fournir d'autre information que son exactitude. La "concision" fait référence à la taille réduite de la preuve et à la rapidité du processus de vérification. Le terme "non interactif" signifie qu'une fois qu'une preuve est générée, elle peut être vérifiée par n'importe qui sans interaction supplémentaire entre le prouveur et le vérificateur. Les principaux éléments des zk-SNARKs sont les suivants :
Les zk-SNARK sont utilisés dans divers scénarios de préservation de la vie privée, tels que les crypto-monnaies avec des transactions anonymes, les systèmes de vote sécurisés, l'authentification et le partage de données préservant la vie privée, et les technologies d'évolutivité de la blockchain.
Les zk-STARK, ou "Zero-Knowledge Scalable Transparent Arguments of Knowledge", permettent à une partie (le prouveur) de prouver à une autre (le vérificateur) qu'elle connaît certaines informations sans révéler les informations elles-mêmes. Contrairement aux zk-SNARK, les zk-STARK ne nécessitent pas de processus d'installation fiable. Cela signifie qu'ils ne reposent pas sur la confidentialité de certaines informations privées, une caractéristique souvent considérée comme cruciale pour la sécurité, car la configuration de confiance peut constituer une vulnérabilité systémique.
Les zk-STARKs reposent sur des concepts issus de plusieurs domaines mathématiques, notamment les fonctions de hachage, les calculs polynomiaux et la théorie de la correction des erreurs. Ils utilisent une construction connue sous le nom d'"argument transparent évolutif à connaissance nulle", qui permet de générer des preuves sans configuration de confiance. Les applications potentielles des zk-STARK sont similaires à celles des zk-SNARK, mais en raison de leur évolutivité et de leur transparence, elles sont particulièrement adaptées aux applications à grande échelle, notamment les crypto-monnaies préservant la vie privée, les technologies d'évolutivité de la blockchain et la vérification sécurisée dans l'informatique en nuage.
PLONK, qui n'est pas un acronyme, fait référence aux noms de famille de ses créateurs. Il est conçu pour fournir une solution ZKP universelle et efficace, en particulier dans les applications blockchain telles que les contrats intelligents et les transactions protégées par la confidentialité. Le cœur de PLONK est l'utilisation d'une technique de "dissimulation homomorphique", qui permet d'effectuer des opérations arithmétiques sur des données sans révéler les données d'origine. Il utilise un algorithme spécial - un schéma d'engagement polynomial - pour créer des preuves, ce qui permet aux prouveurs de prouver efficacement qu'ils disposent des résultats de calcul corrects pour un ensemble de données.
L'une des principales caractéristiques de PLONK est son universalité. Une fois que les paramètres ont été définis pour une tâche de calcul spécifique (par le biais d'une configuration de confiance unique), ils peuvent être réutilisés plusieurs fois pour créer de nouvelles preuves, sans qu'il soit nécessaire de procéder à de nouvelles configurations à chaque fois. PLONK est ainsi très efficace pour créer et vérifier des preuves et est souvent conçu pour prendre en charge diverses tâches de calcul dans les blockchains et autres systèmes distribués.
Les Bulletproofs, une solution ZKP récemment introduite, ne nécessitent pas de configuration de confiance et sont spécifiquement conçus pour construire des preuves d'étendue et certains types de preuves arithmétiques. Proposés par Benedikt Bunz, Jonathan Bootle, Dan Boneh et d'autres en 2017, les Bulletproofs reposent sur des constructions mathématiques complexes telles que le chiffrement homomorphique et la cryptographie à courbe elliptique. Ils s'appuient sur une série de techniques mathématiques permettant aux prouveurs de créer une preuve de portée efficace pour un nombre sans révéler sa valeur exacte. En particulier dans le domaine des crypto-monnaies, cela peut être utilisé pour prouver que les valeurs des transactions se situent dans une fourchette légale sans exposer les montants réels des transactions.
En raison de leur caractéristique à l'épreuve de la portée, les Bulletproofs sont largement utilisés dans les domaines des crypto-monnaies et de la blockchain, en particulier dans les monnaies de confidentialité comme Monero, pour cacher les montants des transactions tout en vérifiant la légitimité des transactions. En outre, ils peuvent être utilisés dans d'autres applications où la confidentialité numérique est nécessaire.
Comprenons mieux ces quatre différentes technologies Zero-Knowledge Proof (ZKP) - zk-SNARKs, zk-STARKs, PLONK et Bulletproofs - à l'aide d'une analogie avec une carte au trésor.
Imaginez que vous disposiez d'une carte au trésor qui mène à l'emplacement exact d'un trésor enterré. Vous voulez prouver à quelqu'un que vous savez où se trouve le trésor sans révéler le contenu de la carte ou l'emplacement réel du trésor.
zk-SNARKs : Vous créez un puzzle complexe de la carte au trésor. Vous sélectionnez une petite pièce clé de ce puzzle (une preuve) et la montrez à l'autre partie, suffisamment pour la convaincre que vous savez comment assembler le puzzle complet, c'est-à-dire l'emplacement du trésor, sans révéler l'ensemble du puzzle. Toutefois, pour ce faire, vous avez besoin de marqueurs spéciaux provenant d'un imprimeur de confiance afin de prouver que votre pièce de puzzle est authentique.
zk-STARKs : Vous montrez une partie de la carte au trésor à l'autre partie, en lui disant qu'elle peut utiliser une loupe spéciale (un algorithme de vérification) pour vérifier au hasard les détails de la carte afin de s'assurer qu'elle pointe bien vers le trésor, sans qu'il soit nécessaire de connaître l'emplacement exact du trésor. Cette loupe est si puissante que même les technologies du futur (ordinateurs quantiques) ne pourront pas percer le secret de votre carte au trésor.
PLONK : Cette fois, vous créez une série d'énigmes, chacune indiquant l'emplacement du trésor. Vous présentez à l'autre partie une méthode universelle de vérification des solutions à ces énigmes (une configuration universelle), suffisante pour qu'elle croie que vous connaissez toutes les réponses sans avoir à résoudre chaque énigme individuellement.
À l'épreuve des balles : Vous décidez de prouver que vous connaissez la portée approximative de l'emplacement du trésor sans révéler sa position exacte. Vous fournissez une série de solutions à des problèmes mathématiques qui démontrent la portée de l'emplacement du trésor. Votre méthode ne nécessite pas de marqueurs ou de techniques d'impression spéciaux, ce qui signifie qu'il n'y a pas besoin de confiance initiale.
Dans cette analogie :
Chaque méthode a ses inconvénients dans les applications pratiques, et le choix dépend du scénario d'application spécifique et des besoins en matière de sécurité.
Avant de procéder à une comparaison, nous devons comprendre les critères d'évaluation des ZKP :
Comparons maintenant les zk-SNARKs, les zk-STARKs, les PLONKs et les Bulletproofs sur la base de ces indicateurs et discutons de leurs avantages et de leurs inconvénients.
Pour
Cons
Pour
Cons
Pour
Cons
Pour
Cons
Dans Web3, il existe de nombreux cas d'application de ZKP, et nous avons sélectionné deux cas typiques pour l'étude.
Les zk-Rollups sont une solution de niveau 2 qui regroupe des centaines ou des milliers de transactions hors chaîne et génère une preuve zk-SNARK. Cette preuve, ainsi que les données de la transaction, sont soumises à la chaîne principale d'Ethereum. Il permet de valider les transactions sans que la chaîne principale ne traite chaque transaction, ce qui réduit les frais et augmente le débit. zk-Sync Era et Starknet ont adopté la technologie zk-rollup, et Polygon a récemment introduit Polygon zk-EVM utilisant des zk-rollups.
Démonstration d'une application de zk-SNARKs dans la couche 2 (Source : Simon Brown)
La preuve des réserves de change fait référence à la vérification des soldes détenus par les bourses de crypto-monnaies ou d'autres institutions financières, en veillant à ce que les actifs enregistrés correspondent aux actifs réels détenus. Dans un premier temps, les bourses ont utilisé des arbres Merkle et des sociétés d'audit tierces pour cette vérification, mais ce processus reposait sur des tiers et pouvait entraîner des fuites de données privées sur les utilisateurs, telles que les soldes des comptes. Des bourses comme Gate.io utilisent désormais la technologie zk-SNARK pour les preuves de réserve, en chiffrant les données des utilisateurs et en obtenant les numéros d'actifs des utilisateurs par le biais des circuits zk-SNARK, émettant ainsi des rapports complets sur les preuves de réserve.
Les diverses solutions de la technologie de preuve de l'absence de connaissance mettent en évidence son puissant potentiel dans le Web3. De la protection de la confidentialité des données à la mise à l'échelle de la blockchain, ZKP est important pour construire une infrastructure Web3 sécurisée et efficace. Bien que les différentes approches aient leurs avantages et leurs limites, elles s'orientent collectivement vers un avenir numérique plus fiable et plus respectueux de la vie privée. Au fur et à mesure que la technologie progresse, les défis liés à l'optimisation des performances et de la sécurité avec le ZKP seront progressivement relevés, ce qui témoigne de son rôle de plus en plus important dans le monde numérique.
La preuve à connaissance nulle (ZKP) est une technologie cryptographique introduite pour la première fois dans un article intitulé "The Knowledge Complexity Of Interactive Proof Systems" au début des années 1980 par S. Goldwasser, S. Micali et C. Rackoff. Conçu à l'origine comme un modèle théorique, il visait à relever le défi de la vérification des énoncés mathématiques sans révéler de preuves. Ce concept a suscité une grande attention dans le monde universitaire parce qu'il remet en question les limites des techniques de cryptage traditionnelles et offre une nouvelle approche du traitement des informations sensibles.
Au fil du temps, le ZKP est passé d'un concept théorique abstrait à des protocoles concrets pouvant être intégrés dans diverses applications. Au début du 21e siècle, avec la croissance explosive de l'internet et de la communication numérique, le potentiel du ZKP a commencé à être exploré dans le monde réel. En particulier avec l'essor de la blockchain et des crypto-monnaies, ZKP a démontré sa capacité à renforcer la confidentialité et la sécurité tout en maintenant l'efficacité des transactions et du traitement des données.
Aujourd'hui, le ZKP est non seulement un sujet d'actualité dans la recherche cryptographique, mais il a également été intégré dans de multiples plateformes et applications de blockchain. Par exemple, l'application de zk-SNARKs sur Ethereum Layer2 offre des transactions anonymes sans révéler les détails de la transaction. Ce passage de la théorie à l'application pratique prouve non seulement la valeur pratique du ZKP, mais stimule également l'exploration d'interactions numériques plus efficaces et plus sûres. Avec les progrès technologiques constants, le ZKP joue un rôle de plus en plus important dans la protection de la vie privée, la sécurité des données et la mise en place de systèmes numériques fiables.
La preuve à connaissance nulle (ZKP) est une méthode de cryptage qui permet à une partie (le prouveur) de prouver l'exactitude d'une déclaration à une autre partie (le vérificateur) sans révéler aucune information supplémentaire, c'est-à-dire sans divulguer aucune connaissance dont dépend l'exactitude de la déclaration. Ce processus protège non seulement la vie privée du prouveur, mais garantit également que le vérificateur ne peut pas reproduire le processus de preuve ou l'utiliser pour obtenir des informations supplémentaires.
Diagramme conceptuel des preuves à zéro connaissance (Source : ChainLink)
Les principes fondamentaux des preuves à zéro connaissance (ZKP) peuvent être définis par les trois attributs suivants :
Le principe du ZKP est souvent compris à l'aide d'exemples simples : Si je dois prouver à la personne A que j'ai le numéro de téléphone de la personne B, je n'ai pas besoin de révéler directement le numéro de B à A. Au lieu de cela, je peux le prouver en appelant le numéro de B. Une fois l'appel connecté, il démontre que je possède effectivement le numéro de B, sans divulguer aucune information sur le numéro lui-même.
Dans les applications pratiques, le ZKP nécessite généralement des constructions mathématiques complexes telles que des équations polynomiales, des courbes elliptiques ou d'autres défis mathématiques. La sécurité de ces constructions repose sur la difficulté de calcul de problèmes tels que la factorisation ou les logarithmes discrets. Avec les progrès de la cryptographie, diverses implémentations de ZKP ont émergé, telles que les zk-SNARKs et les zk-STARKs, offrant une protection efficace de la vie privée dans différents contextes, en particulier dans les domaines de la blockchain et des crypto-monnaies.
La forme de base de la preuve à connaissance nulle se compose de trois éléments : le témoin, le défi et la réponse.
Témoin : Dans une preuve à connaissance nulle, le prouveur veut démontrer qu'il a connaissance d'une information cachée. Cette information secrète agit comme le "témoin" de la preuve. Le prouveur, sur la base de sa connaissance du témoin, établit une série de questions auxquelles seule une personne connaissant l'information peut répondre. Ainsi, le prouveur sélectionne au hasard une question pour lancer la preuve, calcule la réponse, puis l'envoie au vérificateur.
Défi : le vérificateur choisit au hasard une autre question dans l'ensemble et demande au prouveur d'y répondre.
Réponse : Le prouveur reçoit la question, calcule la réponse et la renvoie au vérificateur. La réponse du prouveur permet au vérificateur de vérifier si le prouveur a effectivement accès au témoin. Pour s'assurer que le prouveur ne se contente pas de deviner correctement par hasard, le vérificateur sélectionne une autre question. En répétant ce processus plusieurs fois, la probabilité que le prouveur fabrique la vérité diminue considérablement jusqu'à ce que le vérificateur soit satisfait.
Dans l'exemple de l'appel téléphonique susmentionné, "Je" est le témoin qui ne veut pas divulguer l'information, tandis que A est le vérificateur, et le défi posé est "Prouvez que 'Je' possède le numéro de B". Le processus de réponse implique que "moi" connecte un appel au numéro de B pour prouver que je l'ai vraiment.
Comme nous l'avons vu précédemment, les preuves à connaissance nulle (ZKP) offrent intrinsèquement des avantages significatifs dans le domaine de la protection de la vie privée. À l'heure de la surcharge d'informations, les données personnelles sont souvent stockées sur des plateformes tierces, ce qui accroît le risque de violation des données. De plus, en raison des barrières techniques et du retard des sanctions légales, la sécurité de l'information repose en grande partie sur des contraintes éthiques, ce qui rend difficile pour les utilisateurs de contrôler réellement leurs informations privées. L'avènement de la technologie ZKP offre une solution qui permet à la fois de protéger la vie privée et d'améliorer l'efficacité et la sécurité de la vérification.
Par rapport à d'autres technologies de cryptage, le ZKP présente de nombreux avantages :
Que ce soit dans le domaine traditionnel du Web 2.0 ou dans le domaine émergent du Web 3.0, les perspectives d'application du ZKP sont vastes.
Il existe de nombreuses implémentations de preuves sans connaissance, telles que zk-SNARKs, zk-STARKs, PLONK et Bulletproofs. Chaque type a ses avantages et ses inconvénients en termes de taille de la preuve, de temps d'exécution et de temps de vérification. Cet article présente les quatre types les plus couramment utilisés dans les scénarios d'application.
Les zk-SNARK, qui signifient "Zero-Knowledge Succinct Non-Interactive Argument of Knowledge", sont des outils cryptographiques utilisés pour prouver qu'une personne connaît un élément d'information sans révéler l'information elle-même. Dans les zk-SNARK, le terme "zéro connaissance" signifie que le prouveur peut prouver qu'une déclaration est vraie sans fournir d'autre information que son exactitude. La "concision" fait référence à la taille réduite de la preuve et à la rapidité du processus de vérification. Le terme "non interactif" signifie qu'une fois qu'une preuve est générée, elle peut être vérifiée par n'importe qui sans interaction supplémentaire entre le prouveur et le vérificateur. Les principaux éléments des zk-SNARKs sont les suivants :
Les zk-SNARK sont utilisés dans divers scénarios de préservation de la vie privée, tels que les crypto-monnaies avec des transactions anonymes, les systèmes de vote sécurisés, l'authentification et le partage de données préservant la vie privée, et les technologies d'évolutivité de la blockchain.
Les zk-STARK, ou "Zero-Knowledge Scalable Transparent Arguments of Knowledge", permettent à une partie (le prouveur) de prouver à une autre (le vérificateur) qu'elle connaît certaines informations sans révéler les informations elles-mêmes. Contrairement aux zk-SNARK, les zk-STARK ne nécessitent pas de processus d'installation fiable. Cela signifie qu'ils ne reposent pas sur la confidentialité de certaines informations privées, une caractéristique souvent considérée comme cruciale pour la sécurité, car la configuration de confiance peut constituer une vulnérabilité systémique.
Les zk-STARKs reposent sur des concepts issus de plusieurs domaines mathématiques, notamment les fonctions de hachage, les calculs polynomiaux et la théorie de la correction des erreurs. Ils utilisent une construction connue sous le nom d'"argument transparent évolutif à connaissance nulle", qui permet de générer des preuves sans configuration de confiance. Les applications potentielles des zk-STARK sont similaires à celles des zk-SNARK, mais en raison de leur évolutivité et de leur transparence, elles sont particulièrement adaptées aux applications à grande échelle, notamment les crypto-monnaies préservant la vie privée, les technologies d'évolutivité de la blockchain et la vérification sécurisée dans l'informatique en nuage.
PLONK, qui n'est pas un acronyme, fait référence aux noms de famille de ses créateurs. Il est conçu pour fournir une solution ZKP universelle et efficace, en particulier dans les applications blockchain telles que les contrats intelligents et les transactions protégées par la confidentialité. Le cœur de PLONK est l'utilisation d'une technique de "dissimulation homomorphique", qui permet d'effectuer des opérations arithmétiques sur des données sans révéler les données d'origine. Il utilise un algorithme spécial - un schéma d'engagement polynomial - pour créer des preuves, ce qui permet aux prouveurs de prouver efficacement qu'ils disposent des résultats de calcul corrects pour un ensemble de données.
L'une des principales caractéristiques de PLONK est son universalité. Une fois que les paramètres ont été définis pour une tâche de calcul spécifique (par le biais d'une configuration de confiance unique), ils peuvent être réutilisés plusieurs fois pour créer de nouvelles preuves, sans qu'il soit nécessaire de procéder à de nouvelles configurations à chaque fois. PLONK est ainsi très efficace pour créer et vérifier des preuves et est souvent conçu pour prendre en charge diverses tâches de calcul dans les blockchains et autres systèmes distribués.
Les Bulletproofs, une solution ZKP récemment introduite, ne nécessitent pas de configuration de confiance et sont spécifiquement conçus pour construire des preuves d'étendue et certains types de preuves arithmétiques. Proposés par Benedikt Bunz, Jonathan Bootle, Dan Boneh et d'autres en 2017, les Bulletproofs reposent sur des constructions mathématiques complexes telles que le chiffrement homomorphique et la cryptographie à courbe elliptique. Ils s'appuient sur une série de techniques mathématiques permettant aux prouveurs de créer une preuve de portée efficace pour un nombre sans révéler sa valeur exacte. En particulier dans le domaine des crypto-monnaies, cela peut être utilisé pour prouver que les valeurs des transactions se situent dans une fourchette légale sans exposer les montants réels des transactions.
En raison de leur caractéristique à l'épreuve de la portée, les Bulletproofs sont largement utilisés dans les domaines des crypto-monnaies et de la blockchain, en particulier dans les monnaies de confidentialité comme Monero, pour cacher les montants des transactions tout en vérifiant la légitimité des transactions. En outre, ils peuvent être utilisés dans d'autres applications où la confidentialité numérique est nécessaire.
Comprenons mieux ces quatre différentes technologies Zero-Knowledge Proof (ZKP) - zk-SNARKs, zk-STARKs, PLONK et Bulletproofs - à l'aide d'une analogie avec une carte au trésor.
Imaginez que vous disposiez d'une carte au trésor qui mène à l'emplacement exact d'un trésor enterré. Vous voulez prouver à quelqu'un que vous savez où se trouve le trésor sans révéler le contenu de la carte ou l'emplacement réel du trésor.
zk-SNARKs : Vous créez un puzzle complexe de la carte au trésor. Vous sélectionnez une petite pièce clé de ce puzzle (une preuve) et la montrez à l'autre partie, suffisamment pour la convaincre que vous savez comment assembler le puzzle complet, c'est-à-dire l'emplacement du trésor, sans révéler l'ensemble du puzzle. Toutefois, pour ce faire, vous avez besoin de marqueurs spéciaux provenant d'un imprimeur de confiance afin de prouver que votre pièce de puzzle est authentique.
zk-STARKs : Vous montrez une partie de la carte au trésor à l'autre partie, en lui disant qu'elle peut utiliser une loupe spéciale (un algorithme de vérification) pour vérifier au hasard les détails de la carte afin de s'assurer qu'elle pointe bien vers le trésor, sans qu'il soit nécessaire de connaître l'emplacement exact du trésor. Cette loupe est si puissante que même les technologies du futur (ordinateurs quantiques) ne pourront pas percer le secret de votre carte au trésor.
PLONK : Cette fois, vous créez une série d'énigmes, chacune indiquant l'emplacement du trésor. Vous présentez à l'autre partie une méthode universelle de vérification des solutions à ces énigmes (une configuration universelle), suffisante pour qu'elle croie que vous connaissez toutes les réponses sans avoir à résoudre chaque énigme individuellement.
À l'épreuve des balles : Vous décidez de prouver que vous connaissez la portée approximative de l'emplacement du trésor sans révéler sa position exacte. Vous fournissez une série de solutions à des problèmes mathématiques qui démontrent la portée de l'emplacement du trésor. Votre méthode ne nécessite pas de marqueurs ou de techniques d'impression spéciaux, ce qui signifie qu'il n'y a pas besoin de confiance initiale.
Dans cette analogie :
Chaque méthode a ses inconvénients dans les applications pratiques, et le choix dépend du scénario d'application spécifique et des besoins en matière de sécurité.
Avant de procéder à une comparaison, nous devons comprendre les critères d'évaluation des ZKP :
Comparons maintenant les zk-SNARKs, les zk-STARKs, les PLONKs et les Bulletproofs sur la base de ces indicateurs et discutons de leurs avantages et de leurs inconvénients.
Pour
Cons
Pour
Cons
Pour
Cons
Pour
Cons
Dans Web3, il existe de nombreux cas d'application de ZKP, et nous avons sélectionné deux cas typiques pour l'étude.
Les zk-Rollups sont une solution de niveau 2 qui regroupe des centaines ou des milliers de transactions hors chaîne et génère une preuve zk-SNARK. Cette preuve, ainsi que les données de la transaction, sont soumises à la chaîne principale d'Ethereum. Il permet de valider les transactions sans que la chaîne principale ne traite chaque transaction, ce qui réduit les frais et augmente le débit. zk-Sync Era et Starknet ont adopté la technologie zk-rollup, et Polygon a récemment introduit Polygon zk-EVM utilisant des zk-rollups.
Démonstration d'une application de zk-SNARKs dans la couche 2 (Source : Simon Brown)
La preuve des réserves de change fait référence à la vérification des soldes détenus par les bourses de crypto-monnaies ou d'autres institutions financières, en veillant à ce que les actifs enregistrés correspondent aux actifs réels détenus. Dans un premier temps, les bourses ont utilisé des arbres Merkle et des sociétés d'audit tierces pour cette vérification, mais ce processus reposait sur des tiers et pouvait entraîner des fuites de données privées sur les utilisateurs, telles que les soldes des comptes. Des bourses comme Gate.io utilisent désormais la technologie zk-SNARK pour les preuves de réserve, en chiffrant les données des utilisateurs et en obtenant les numéros d'actifs des utilisateurs par le biais des circuits zk-SNARK, émettant ainsi des rapports complets sur les preuves de réserve.
Les diverses solutions de la technologie de preuve de l'absence de connaissance mettent en évidence son puissant potentiel dans le Web3. De la protection de la confidentialité des données à la mise à l'échelle de la blockchain, ZKP est important pour construire une infrastructure Web3 sécurisée et efficace. Bien que les différentes approches aient leurs avantages et leurs limites, elles s'orientent collectivement vers un avenir numérique plus fiable et plus respectueux de la vie privée. Au fur et à mesure que la technologie progresse, les défis liés à l'optimisation des performances et de la sécurité avec le ZKP seront progressivement relevés, ce qui témoigne de son rôle de plus en plus important dans le monde numérique.