Preuve de connaissance zéro

Une preuve à divulgation nulle de connaissance (ZKP) est un protocole cryptographique qui permet à une partie, désignée comme le prouveur, de convaincre une autre partie, désignée comme le vérificateur, qu'une déclaration mathématique particulière est vraie sans divulguer d'informations autres que le simple fait que la déclaration est effectivement vraie.

Ce concept repose sur l'idée fondamentale que la connaissance et la vérification sont fondamentalement séparables : il est possible de démontrer la possession d'une connaissance sans la transférer.

Dans le contexte de la technologie blockchain et des cryptomonnaies, les preuves à divulgation nulle de connaissance sont devenues l'une des technologies les plus transformatrices. cryptographique primitives permettant des transactions préservant la confidentialité, un calcul de couche 2 évolutif, un traitement hors chaîne vérifiable et des systèmes d'identité qui prouvent les attributs sans révéler les données sous-jacentes.

Le fondement mathématique des preuves à divulgation nulle de connaissance repose sur la théorie de la complexité algorithmique et les systèmes de preuve interactifs. Un système de preuve satisfait la propriété de divulgation nulle de connaissance si, pour tout vérificateur possible, y compris les vérificateurs adverses tentant d'extraire des informations, il existe un simulateur capable de produire une transcription indiscernable d'une interaction de preuve réelle sans accès au témoin secret du prouveur.

Ce modèle de simulation, introduit par Goldwasser, Micali et Rackoff dans leur article fondateur de 1985, a formalisé l'intuition selon laquelle une preuve ne révèle « rien » en montrant que tout ce que le vérificateur pouvait calculer à partir de l'interaction de la preuve, il pouvait également le calculer indépendamment sans aucune interaction.

Les trois propriétés essentielles sont la complétude (un prouveur honnête peut toujours convaincre un vérificateur honnête d'une affirmation vraie), la validité (aucun prouveur malhonnête ne peut convaincre un vérificateur d'une affirmation fausse, sauf avec une probabilité négligeable) et la connaissance nulle (le vérificateur n'apprend rien d'autre que la vérité de l'affirmation).

Dans les applications blockchain, les preuves à divulgation nulle de connaissance (ZKP) permettent de résoudre la tension fondamentale entre transparence et confidentialité qui caractérise les systèmes de registre public. Bitcoin et Ethereum, par leur conception, rendent publiques toutes les données de transaction, y compris les montants, les adresses et les interactions des contrats intelligents, créant ainsi un registre permanent et auditable qui expose simultanément les utilisateurs à la surveillance, au délit d'initié et au profilage financier. Les ZKP remédient à ce problème en permettant aux utilisateurs et aux systèmes de prouver la conformité, l'exactitude ou la possession des données sans les divulguer. Une ZKP peut prouver la validité d'une transaction (entrées égales sorties, absence de double dépense, solde suffisant de l'expéditeur) sans révéler qui a envoyé combien à qui.

Origine & Histoire

1985: Shafi Goldwasser, Silvio Micali et Charles Rackoff publient « La complexité des connaissances des systèmes de preuve interactifs », introduisant la définition formelle des preuves à divulgation nulle de connaissance et établissant les fondements théoriques du domaine. Cet article a contribué à l'obtention par Goldwasser et Micali du prix Turing en 2012 pour leurs travaux en cryptographie.

1986: Oded Goldreich, Silvio Micali et Avi Wigderson démontrent que tout problème de NP admet une preuve à divulgation nulle de connaissance, établissant ainsi l'extraordinaire généralité de ce type de preuve : toute affirmation vérifiable efficacement peut également être prouvée à divulgation nulle de connaissance. À la même époque, Amos Fiat et Adi Shamir publient l'heuristique de Fiat-Shamir, transformant les preuves interactives en preuves non interactives en remplaçant les défis du vérificateur par les sorties de fonctions de hachage. Cette transformation est devenue la technique standard pour le déploiement des preuves à divulgation nulle de connaissance dans des contextes non interactifs, notamment la blockchain.

1988: Manuel Blum, Paul Feldman et Silvio Micali introduisent les preuves à divulgation nulle de connaissance non interactive (NIZK) utilisant un modèle de chaîne de référence commun, supprimant ainsi la nécessité d'une communication bidirectionnelle et jetant les bases d'applications pratiques.

2012: Nir Bitansky, Ran Canetti, Alessandro Chiesa et Eran Tromer formalisent les arguments de connaissance succincts non interactifs (SNARK), fournissant la base théorique des preuves compactes qui deviendraient essentielles à la confidentialité et à la mise à l'échelle de la blockchain.

2013: Le protocole Pinocchio, développé par Bryan Parno, Jon Howell, Craig Gentry et Mariana Raykova chez Microsoft Research, démontre la première construction pratique de zk-SNARK suffisamment efficace pour un déploiement dans le monde réel, prouvant que le calcul vérifiable à usage général était faisable.

2014: Le projet Zcash (initialement Zerocash) entre en phase de développement, marquant le premier déploiement majeur de zk-SNARK dans une cryptomonnaie. La cérémonie de lancement de Zcash, coordonnée par Electric Coin Company, génère les premiers paramètres de configuration de confiance utilisés en production, permettant des transactions de cryptomonnaie entièrement sécurisées (privées).

2016: Jens Groth publie le système de preuve Groth16, qui offrait alors les preuves les plus compactes et les temps de vérification les plus rapides parmi les SNARK basés sur l'appariement. Groth16 est devenu l'un des SNARK les plus déployés en production, utilisé notamment par Zcash, Tornado Cash et de nombreux autres protocoles.

2018: Eli Ben-Sasson, Iddo Bentov, Yinon Horesh et Michael Riabzev publient la construction zk-STARK, qui élimine les exigences de configuration de confiance et offre une sécurité post-quantique. StarkWare Industries a été fondée pour commercialiser la technologie STARK pour la mise à l'échelle de la blockchain.

2019: Ariel Gabizon, Zachary J. Williamson et Oana Ciobotaru publient PLONK, introduisant des chaînes de référence structurées universelles et actualisables. Grâce à ses portes logiques personnalisées et à ses arguments de permutation, PLONK offre une flexibilité considérablement supérieure à celle de Groth16 pour les circuits complexes, et a rapidement été adopté par des projets tels qu'Aztec, zkSync et Mina Protocol.

2020: Sean Bowe, Jack Grigg et Daira Hopwood de la société Electric Coin publient la construction Halo, puis Halo 2, réalisant une composition de preuves récursive sans configuration de confiance, une percée qui a permis des preuves qui vérifient d'autres preuves, essentielles pour la vérification incrémentale de l'état de la blockchain.

2021: zkSync (Matter Labs) et StarkNet (StarkWare) sont lancés en tant que réseaux de couche 2 zk-rollup sur Ethereum, utilisant respectivement les SNARK et les STARK pour regrouper des milliers de transactions en preuves uniques vérifiées par les contrats intelligents Ethereum. La concurrence entre les projets zk-rollup s'intensifie, positionnant les ZKP comme une technologie de mise à l'échelle de premier plan pour Ethereum.

2022: Nova, développé par Kothapalli, Setty et Tzialla, introduit des schémas de pliage pour un calcul incrémental vérifiable efficace, réduisant considérablement la charge du prouveur pour les systèmes de preuve récursifs. Polygon acquiert les projets Hermez et Miden et annonce Polygon zkEVM, une machine virtuelle Ethereum basée sur la preuve à virgule flottante zéro (ZKP).

2023 à 2024: L'écosystème zk-rollup continue de gagner en maturité. zkSync Era, StarkNet, Polygon zkEVM, Scroll, Linea et Taiko lancent tous des zk-rollups sur leur réseau principal ou sur leur réseau de test public. La génération de preuves est de plus en plus parallélisée grâce à l'accélération GPU et FPGA. L'agrégation et le partage des preuves émergent comme des axes de recherche actifs, avec des projets proposant des couches de vérification ZKP partagées.

2025 à 2026: Les preuves à divulgation nulle de connaissance (ZKP) s'intègrent de plus en plus dans l'infrastructure blockchain principale. La feuille de route de recherche d'Ethereum continue d'intégrer les « preuves Verkle » basées sur les ZKP et les techniques connexes de gestion d'état, et les ponts ZKP inter-chaînes continuent d'être développés en vue d'une interopérabilité plus sûre entre les chaînes. Parallèlement, la mise à niveau Fusaka d'Ethereum, prévue pour fin 2025, a introduit une technique de mise à l'échelle cryptographique différente mais connexe, l'échantillonnage de disponibilité des données (DAS), en production pour les données blob du réseau.

« Les preuves à divulgation nulle de connaissance sont l'une des technologies les plus sous-estimées, tant dans l'univers de la blockchain qu'au-delà. Elles vont devenir absolument fondamentales pour notre conception de la confidentialité et de la vérification dans le monde numérique. » Vitalik Buterin, cofondateur d'Ethereum, EthCC Paris, 2022.

En termes simples

L'analogie avec le mot de passe : imaginez que vous deviez prouver à un site web que vous connaissez votre mot de passe, mais qu'au lieu de le saisir (ce qui pourrait être intercepté), vous résolviez un problème mathématique complexe, dont la solution ne peut être trouvée que si vous connaissez le mot de passe. Le site web vérifie votre réponse et confirme que vous connaissez le mot de passe sans jamais le voir. C'est le principe d'une preuve à divulgation nulle de connaissance : prouver que vous savez quelque chose sans révéler ce que vous savez.

Solution du Sudoku : vous avez résolu une grille de Sudoku difficile et souhaitez le prouver sans dévoiler votre solution. Vous recouvrez chaque ligne, colonne et carré 3×3 avec des cartes, puis vous laissez le vérificateur choisir au hasard une ligne, une colonne ou un carré à examiner. Il constate qu'il contient les chiffres de 1 à 9 sans répétition. Après suffisamment de vérifications aléatoires, il est convaincu que la solution est correcte, mais il n'en a jamais vu suffisamment pour la reconstituer.

Important: Bien que les preuves à divulgation nulle de connaissance (ZKP) offrent de puissantes capacités de confidentialité et de vérification, ce sont des systèmes cryptographiques complexes qui exigent une implémentation rigoureuse. Des bogues dans les circuits ZKP (la description mathématique du calcul à prouver) peuvent engendrer des vulnérabilités de validité, permettant ainsi l'acceptation de preuves erronées. La sécurité de nombreux systèmes ZKP repose sur des hypothèses cryptographiques, telles que la difficulté logarithmique discrète ou les hypothèses d'appariement, qui pourraient en principe être compromises par des ordinateurs quantiques suffisamment performants. Les utilisateurs qui s'appuient sur la confidentialité basée sur les ZKP doivent comprendre que la garantie de confidentialité dépend de la robustesse de l'implémentation cryptographique sous-jacente et que les progrès en cryptanalyse ou en informatique quantique pourraient impacter la sécurité au fil du temps.

Caractéristiques techniques clés

Les fondements mathématiques : engagements polynomiaux et circuits arithmétiques

Au cœur des systèmes modernes de preuve à divulgation nulle de connaissance se trouve la représentation des calculs sous forme d'équations polynomiales sur des corps finis. Tout calcul, qu'il s'agisse de la vérification d'une transaction blockchain, de l'exécution d'un contrat intelligent ou de la validation d'un attribut d'identité, peut être exprimé comme un circuit arithmétique : un graphe acyclique orienté de portes d'addition et de multiplication agissant sur les éléments d'un corps fini (les entiers modulo un nombre premier).

La tâche du prouveur consiste à démontrer qu'il possède une affectation de valeurs (un « témoin ») aux fils du circuit telle que toutes les portes soient satisfaites, sans révéler le témoin.

La transformation des calculs en équations polynomiales s'effectue par arithmétique. Le démonstrateur encode les valeurs des fils du circuit sous forme de coefficients ou de points d'évaluation de polynômes, et les contraintes du circuit deviennent des vérifications d'identité polynomiales. Par exemple, une porte de multiplication a × b = c devient une contrainte polynomiale qui doit être vérifiée en des points d'évaluation spécifiques.

Si le démonstrateur peut démontrer que ces identités polynomiales sont valides, évaluées à des points de défi aléatoires fournis par le vérificateur ou dérivées via l'heuristique de Fiat-Shamir, le vérificateur est convaincu que le calcul sous-jacent a été effectué correctement.

Les schémas d'engagement polynomial sont le mécanisme par lequel le démonstrateur s'engage sur un polynôme sans le révéler, puis « lève » cet engagement en des points spécifiques pour prouver des évaluations. Le schéma d'engagement KZG (Kate-Zaverucha-Goldberg), basé sur les appariements de courbes elliptiques, est parmi les plus utilisés : le démonstrateur calcule un seul point de la courbe elliptique comme engagement, et la vérification ne requiert que quelques opérations d'appariement, quel que soit le degré du polynôme.

C’est cette concision qui rend les zk-SNARKs si compacts. Parmi les autres schémas d’engagement, on trouve FRI (Fast Reed-Solomon Interactive Oracle Proofs of Proximity), utilisé dans STARKs, qui repose sur des fonctions de hachage plutôt que sur des appariements et offre transparence et sécurité post-quantique au prix de preuves plus volumineuses.

Comment fonctionne une preuve zk-SNARK (étape par étape)

  1. Compilation du circuit : Le calcul à prouver, par exemple « cette transaction est valide », est exprimé sous forme de circuit arithmétique, une série de portes d'addition et de multiplication sur un corps fini. Des langages spécialisés, tels que Circom, Noir, Leo ou Cairo, compilent les programmes de haut niveau en ces circuits.
  2. Génération de témoins : Le prouveur calcule le circuit complet, en attribuant des valeurs concrètes à chaque connexion (entrée, intermédiaire et sortie). Le témoin inclut des entrées publiques, visibles par le vérificateur, telles que le hachage d'une transaction, et des entrées privées, secrètes, telles que le solde de l'expéditeur ou sa clé privée.
  3. Arithmétisation : Le circuit et le témoin sont transformés en un système d'équations polynomiales grâce à un schéma d'arithmétique spécifique. Dans R1CS (Rank-1 Constraint System, utilisé par Groth16), chaque porte devient une contrainte spécifique impliquant le vecteur témoin et les vecteurs de sélection. Dans l'arithmétique de type PLONK, les portes sont codées par des polynômes de sélection, des arguments de permutation et des tables de consultation.
  4. Engagement polynomial : Le prouveur encode le témoin et la satisfaction des contraintes sous forme de polynômes et s'y engage à l'aide d'un schéma d'engagement polynomial : KZG pour les SNARK ou FRI pour les STARK. Ces engagements sont des objets cryptographiques compacts, tels que des points de courbe elliptique ou des racines de Merkle, qui lient le prouveur à des polynômes spécifiques sans les révéler.
  5. Génération de défis : Des points d'évaluation aléatoires sont générés, soit par interaction avec le vérificateur (mode interactif), soit par l'heuristique de Fiat-Shamir (mode non interactif, où les défis sont dérivés en hachant la transcription de la preuve jusqu'à présent).
  6. Construction de la preuve : Le démonstrateur évalue les polynômes engagés aux points de contrainte et fournit des preuves initiales démontrant que les évaluations sont cohérentes avec les engagements. La preuve inclut également des polynômes quotients qui démontrent que les identités polynomiales sont valides pour tous les points de contrainte.
  7. Vérification: Le vérificateur contrôle la preuve en vérifiant les ouvertures d'engagement polynomiales et en s'assurant que les identités polynomiales sont valides aux points de défi aléatoires. Pour Groth16, cela nécessite un petit nombre fixe d'appariements de courbes elliptiques ; pour PLONK, quelques vérifications d'appariements supplémentaires ; pour STARK, des évaluations de fonctions de hachage et des vérifications de chemins de Merkle. La vérification est généralement plusieurs ordres de grandeur plus rapide que la réexécution du calcul.

Groth16 : Un étalon de preuve compact

Groth16, publié par Jens Groth en 2016, demeure une référence en matière de compacité des preuves. Une preuve Groth16 se compose de trois éléments de groupe de courbes elliptiques, totalisant environ 128 à 192 octets selon la courbe.

La vérification nécessite un nombre restreint et fixe d'opérations d'appariement, ainsi que quelques multiplications de groupes, ce qui prend environ 1 à 3 millisecondes sur du matériel moderne. Cette extrême concision rend Groth16 parfaitement adapté à la vérification sur la chaîne, où les coûts en gaz sont proportionnels à la taille de la preuve et au calcul de la vérification.

En contrepartie, Groth16 exige une configuration de confiance spécifique à chaque circuit : chaque circuit unique nécessite sa propre chaîne de référence structurée, générée par une cérémonie de calcul multipartite. Si tous les participants à la cérémonie s’entendent ou si leur aléatoire est compromis, les données ainsi générées pourraient en principe servir à falsifier des preuves.

La cérémonie des Pouvoirs de Tau de Zcash et la cérémonie d'Hermez qui lui a succédé ont toutes deux impliqué de nombreux participants afin de garantir qu'au moins un participant honnête rende la falsification pratiquement impossible. Malgré cette mesure, l'exigence d'une configuration fiable a motivé la recherche d'alternatives transparentes.

PLONK : Configuration universelle et évolutive

PLONK a révolutionné le paysage des clés à divulgation nulle de connaissance (ZKP) en introduisant une chaîne de référence structurée universelle : une configuration unique et fiable, compatible avec tous les circuits jusqu’à une taille maximale. Ainsi, une seule cérémonie, renforcée en continu par l’ajout de participants, couvre l’ensemble d’un écosystème de circuits, éliminant le besoin de cérémonies par circuit.

L'arithmétisation de PLONK utilise un système d'équations de portes avec des polynômes de sélection, un mécanisme de contrainte de copie (un argument de grand produit) pour imposer les connexions de fils et la possibilité de définir des portes personnalisées pour les motifs fréquemment rencontrés.

La taille des preuves de PLONK est supérieure à celle de Groth16, de l'ordre de 400 à 900 octets selon la variante, et la vérification est légèrement plus lente, bien que toujours rapide en valeur absolue. L'universalité et la facilité de mise à jour de la configuration, combinées à la flexibilité des portes personnalisées et des tables de correspondance, en ont fait un système de choix pour les applications blockchain complexes. Des variantes, notamment des versions avec portes personnalisées, tables de correspondance de type plookup et traitement par lots amélioré, ont été déployées sur zkSync, Aztec, Polygon zkEVM et Scroll.

Halo 2 : Preuves récursives sans configuration de confiance

Halo 2, développé par l'équipe Zcash/Electric Coin Company, a franchi une étape auparavant considérée comme fondamentale : la composition récursive efficace de preuves sans configuration préalable. La composition récursive de preuves permet à une preuve d'en vérifier une autre au sein de son circuit, créant ainsi une chaîne de preuves où chaque preuve atteste de la validité de la précédente, et concentrant une quantité arbitraire de calculs dans une seule preuve finale.

L'innovation technique de Halo réside dans un mécanisme d'accumulation des engagements polynomiaux basé sur le produit scalaire. Plutôt que de vérifier chaque engagement individuellement, ce qui nécessiterait des appariements et donc une configuration de confiance, Halo « accumule » les vérifications d'engagement, reportant ainsi la vérification coûteuse à la fin de la chaîne récursive.

Cette vérification différée permet la récursivité sans confiance. Halo 2 a étendu ce principe avec une arithmétique de type PLONK et des arguments de recherche, ce qui en fait un système de preuve complet. Zcash a adopté Halo 2 pour son pool protégé Orchard, éliminant ainsi l'exigence d'une configuration de confiance qui faisait l'objet de critiques récurrentes depuis le lancement de Zcash.

Nova et schémas de pliage : calcul incrémental efficace

Nova, introduit en 2022, représente une avancée majeure dans la construction des preuves récursives. Au lieu de prouver intégralement chaque étape d'un calcul incrémental, puis de vérifier récursivement la preuve, Nova utilise un mécanisme de pliage pour fusionner deux instances de calcul en une seule. Ce procédé réduit la charge de travail du prouveur à chaque étape, passant de la génération d'une preuve complète à une simple multiplication scalaire de groupe. Le système de calcul incrémentalement vérifiable (IVC) qui en résulte présente des coûts de preuve considérablement inférieurs à ceux des SNARK récursifs traditionnels pour les calculs comportant de nombreuses étapes répétées, comme le traitement séquentiel des transactions de la blockchain.

zk-STARKs : Transparence et sécurité post-quantique

Les zk-STARKs garantissent leur transparence (absence de configuration de confiance) et leur sécurité post-quantique en remplaçant les appariements de courbes elliptiques par des fonctions de hachage et la théorie du codage algébrique. Le mécanisme d'engagement principal des STARKs est FRI, qui vérifie si une fonction est proche d'un polynôme de faible degré en « repliant » la fonction de manière itérative, en réduisant son domaine de moitié par des combinaisons linéaires aléatoires et en vérifiant la cohérence à l'aide d'arbres de Merkle. Comme FRI repose uniquement sur des fonctions de hachage résistantes aux collisions, réputées insensibles aux attaques quantiques, les STARKs héritent d'une sécurité post-quantique.

Machines virtuelles à connaissance nulle (zkVM et zkEVM)

L'ambition ultime de la technologie ZKP dans la blockchain est la machine virtuelle à divulgation nulle de connaissance : un environnement de calcul générique où l'exécution de tout programme peut être prouvée sans divulgation de connaissance. Une zkEVM (machine virtuelle Ethereum à divulgation nulle de connaissance) prouve la bonne exécution des contrats intelligents Ethereum, permettant ainsi la création de zk-rollups entièrement compatibles avec l'EVM. Différentes approches existent selon le degré de compatibilité :

  • Type 1 (entièrement équivalent à Ethereum) : Prouve l'environnement d'exécution réel d'Ethereum, y compris les essais d'état et la comptabilisation des frais de gaz, un objectif ambitieux pour de nombreux projets. Compatibilité maximale, mais coûts de preuve les plus élevés.
  • Type 2 (entièrement équivalent à l'EVM) : Permet l'exécution de bytecode EVM, mais avec une gestion d'état modifiée, comme pour Scroll et Polygon zkEVM. Compatibilité quasi totale avec quelques différences mineures.
  • Type 3 (quasi équivalent à l'EVM) : Vérifie la plupart des opcodes EVM, mais modifie ou supprime ceux qui sont incompatibles avec ZKP, comme certaines précompilations. Vérification plus rapide, avec des problèmes de compatibilité mineurs.
  • Type 4 (équivalent en langage de haut niveau) : Prouve l'exécution de code compilé à partir de Solidity ou Vyper vers un jeu d'instructions compatible ZKP, plutôt que de prouver directement le bytecode EVM, comme le fait zkSync Era. La preuve est rapide, mais les contrats doivent être recompilés et peuvent se comporter légèrement différemment au niveau du bytecode.

Les machines virtuelles zkVM à usage général, autres qu'Ethereum, comprennent RISC Zero (qui garantit l'exécution des instructions RISC-V), SP1 (également basée sur RISC-V) et Miden VM (une machine virtuelle basée sur STARK avec un jeu d'instructions personnalisé optimisé pour l'efficacité des preuves à virgule flottante zéro). Ces systèmes permettent d'exécuter des programmes écrits en Rust, C, Go ou autres langages compilés en RISC-V avec une preuve cryptographique de leur exactitude.

Avantages désavantages

AspectAvantageDésavantage
Préservation de la confidentialitéPermet des transactions et des calculs privés sur des blockchains publiques ; les utilisateurs peuvent effectuer des transactions, prouver leur identité et interagir avec des contrats intelligents sans révéler de données sensibles aux observateurs ou aux validateurs.Les fonctionnalités de protection de la vie privée peuvent être détournées à des fins de blanchiment d'argent, de contournement des sanctions et de financement illicite ; les sanctions infligées par l'OFAC à Tornado Cash en 2022 ont illustré les risques réglementaires liés aux outils de protection de la vie privée basés sur la technologie ZKP (Zero-Knowledge-Precision).
ÉvolutivitéLes zk-rollups compressent des milliers de transactions en une seule preuve vérifiée sur la couche 1, les principales plateformes traitant des milliers de transactions par seconde tout en héritant des garanties de sécurité d'Ethereum.La génération de preuves est gourmande en ressources de calcul ; générer une preuve SNARK pour un circuit complexe peut prendre de quelques minutes à plusieurs heures sur du matériel grand public, et nécessite une infrastructure spécialisée telle que des clusters de GPU ou des accélérateurs FPGA pour les systèmes de production.
Modèle de sécuritéSécurité mathématique (cryptographique) plutôt que sécurité purement économique ; contrairement aux rollups optimistes, qui reposent sur des preuves de fraude et des périodes de contestation, les rollups zk offrent une finalité beaucoup plus rapide, garantie par une certitude mathématique.Les hypothèses cryptographiques sous-jacentes aux SNARK, telles que le problème du logarithme discret et diverses hypothèses d'appariement, pourraient en principe être brisées par des ordinateurs quantiques suffisamment puissants, ce qui pourrait affecter les preuves générées sous ces hypothèses.
Élimination de la configuration de confianceLes systèmes modernes, tels que STARKs, Halo 2 et Nova, ont totalement éliminé les exigences de configuration de confiance, supprimant ainsi le risque de compromission des paramètres de cérémonie et la charge logistique liée à l'exécution des cérémonies MPC.Les systèmes qui requièrent encore des configurations fiables, comme Groth16, dépendent de l'intégrité de la cérémonie ; si tous les participants complotent ou si l'aléatoire est compromis, la falsification de preuves devient théoriquement possible sans être détectée.
Efficacité de la vérificationLa vérification sur la chaîne est rapide et relativement peu coûteuse ; une preuve Groth16 coûte généralement entre 200 000 et 300 000 unités de gaz sur Ethereum, quelle que soit la complexité du calcul prouvé.Le développement de circuits est complexe ; la conception de circuits ZKP corrects exige une expertise approfondie en arithmétique des corps finis, en systèmes de contraintes et en ingénierie cryptographique, et les bogues dans les circuits peuvent être subtils et graves.
ComposabilitéLes systèmes basés sur ZKP sont généralement compatibles avec l'infrastructure blockchain existante ; les zk-rollups s'installent sur les chaînes de couche 1 existantes, les systèmes d'identité ZKP s'intègrent aux protocoles DeFi existants et les ponts ZKP connectent les chaînes existantes.L'écosystème ZKP reste assez fragmenté ; les différents systèmes de preuve, arithmétiques et types de zkVM créent des défis d'interopérabilité.
Compression de donnéesLes preuves de validité permettent de publier sur la blockchain les différences d'état plutôt que l'intégralité des données de transaction, réduisant ainsi les coûts de données de la couche 1 par rapport aux agrégats optimistes qui doivent publier l'intégralité des données d'appel de transaction.La taille des preuves varie considérablement ; les preuves STARK, par exemple, peuvent aller de quelques dizaines à plusieurs centaines de kilo-octets, ce qui, bien que inférieur aux données transactionnelles brutes qu’elles remplacent, représente tout de même un coût non négligeable sur la blockchain, proportionnel à la complexité de la preuve.
Vérification inter-chaînesLes ZKP permettent des ponts inter-chaînes plus fiables en prouvant l'état d'une chaîne à un contrat de vérification sur une autre chaîne, réduisant ainsi la dépendance à l'égard d'opérateurs de ponts de confiance ou de comités multi-signatures.La vérification ZKP inter-chaînes nécessite des circuits clients légers pour chaque chaîne source, complexes à construire, à maintenir et à auditer, car le mécanisme de consensus et la structure d'état de chaque chaîne doivent être encodés sous forme de circuit ZKP.
Conformité réglementaireLes ZKP permettent une « conformité dès la conception », permettant aux utilisateurs de prouver leur conformité réglementaire, comme le statut KYC ou l'absence de sanctions dans certaines juridictions, sans révéler de données personnelles, répondant ainsi aux objectifs de confidentialité et de conformité réglementaire.L’incertitude réglementaire entourant les outils de protection de la vie privée ZKP persiste ; le précédent Tornado Cash a eu un effet dissuasif, et les autorités de réglementation de plusieurs juridictions continuent d’élaborer des cadres qui pourraient restreindre ou exiger des informations supplémentaires dans les systèmes de protection de la vie privée.

Gestion du risque

Exigences en matière de solidité du circuit et d'audit : Le risque le plus critique des systèmes ZKP réside dans la fiabilité des circuits, c'est-à-dire la possibilité qu'un bug dans le circuit arithmétique permette à un prouveur de générer une preuve d'apparence valide pour une affirmation fausse. Contrairement aux bugs des contrats intelligents, dont le code est accessible publiquement sous une forme familière, les bugs des circuits ZKP peuvent être extrêmement subtils car ils impliquent souvent une sous-spécification des contraintes : un circuit peut ne pas contraindre une valeur de transmission, permettant ainsi au prouveur d'insérer des valeurs arbitraires qui satisfont la preuve mais correspondent à des transactions invalides. Des chercheurs, notamment des équipes travaillant sur la feuille de route d'Ethereum en matière de confidentialité et de scalabilité, ont documenté plusieurs classes de vulnérabilités de circuits, telles que des contraintes manquantes, des vérifications de plage incorrectes et des dépassements de capacité arithmétiques dans les opérations sur les corps finis. Les utilisateurs ne devraient interagir qu'avec des systèmes ZKP dont les circuits ont été audités par des sociétés d'audit ZKP spécialisées et, idéalement, ont fait l'objet d'une vérification formelle.

Risques et mesures d'atténuation liés à la configuration de confiance : Pour les systèmes utilisant des configurations de confiance, comme Groth16 ou le PLONK original, l'intégrité de la cérémonie de configuration constitue un point de défaillance unique. Si les « déchets toxiques », c'est-à-dire l'aléatoire secret utilisé lors de la cérémonie, sont reconstituables, un attaquant pourrait en principe falsifier des preuves, créer des jetons à partir de rien, dépenser des fonds qui ne lui appartiennent pas ou générer de fausses preuves d'identité. Les stratégies d'atténuation comprennent des cérémonies de calcul multipartites avec de nombreux participants (où un seul participant honnête est nécessaire pour la sécurité), des cérémonies perpétuelles de « pouvoirs de tau » qui renforcent continuellement la configuration, et la migration vers des systèmes transparents, tels que STARKs ou Halo 2, qui éliminent complètement la configuration. Les utilisateurs doivent vérifier que tout système basé sur une configuration de confiance avec lequel ils interagissent a effectué une cérémonie suffisamment importante et bien documentée.

Vulnérabilités de mise en œuvre : Même si le système de preuve mathématique est robuste, des bogues d'implémentation dans le prouveur, le vérificateur ou l'infrastructure environnante peuvent créer des vulnérabilités exploitables. Parmi les incidents notables, citons un bogue d'inflation documenté dans Zcash, où une faille dans la vérification des circuits aurait pu permettre la création de jetons indétectable si elle avait été découverte en premier par une personne malveillante, ainsi que divers bogues découverts dans les implémentations de circuits grâce à des programmes de primes aux bogues au fil des ans. La complexité des implémentations ZKP, impliquant l'arithmétique des corps finis, les opérations sur les courbes elliptiques, l'évaluation de polynômes et les fonctions de hachage, crée une surface d'attaque importante. Les stratégies de défense comprennent la vérification formelle des circuits critiques, le fuzzing extensif et les tests basés sur les propriétés, de multiples implémentations indépendantes pour la vérification critique du consensus et un déploiement prudent avec un déploiement progressif.

Menaces liées à l'informatique quantique : Les SNARKs basés sur le couplage, tels que Groth16 et PLONK avec engagements KZG, exploitent la difficulté du problème du logarithme discret sur les courbes elliptiques, qui serait efficacement résolu par l'algorithme de Shor sur un ordinateur quantique suffisamment puissant. Bien que les ordinateurs quantiques actuels soient encore loin d'atteindre l'échelle requise, les estimations couramment citées suggèrent que des milliers de qubits logiques seraient nécessaires pour casser des courbes elliptiques de 256 bits, ce qui se traduirait par un nombre beaucoup plus important de qubits physiques aux taux d'erreur actuels. Le risque à long terme est pris au sérieux par la communauté scientifique. Les STARKs et les schémas d'engagement basés sur le hachage sont considérés comme résistants à l'informatique quantique, et la transition en cours vers les systèmes de preuve basés sur les STARKs et les réseaux offre une voie de migration. Les utilisateurs détenant des actifs protégés par des ZKPs basés sur le couplage doivent suivre de près les progrès de l'informatique quantique et se préparer à migrer vers des alternatives post-quantiques si et quand cela s'avérera nécessaire.

Limitations en matière de confidentialité et fuites de métadonnées : Les preuves à divulgation nulle de connaissance (ZKP) protègent le contenu des calculs, mais pas intrinsèquement les métadonnées. La vérification ZKP sur la blockchain révèle qu'une preuve a été soumise, notamment l'horodatage, le contrat intelligent utilisé, les frais de gaz payés et la position de la transaction dans un bloc. Pour les applications axées sur la confidentialité, telles que les transactions protégées ou les preuves d'identité, ces métadonnées peuvent divulguer des informations importantes. La taille de l'ensemble d'anonymisation est cruciale : si un petit nombre d'utilisateurs seulement utilisent un pool protégé, l'analyse du graphe des transactions peut potentiellement révéler leur identité malgré la confidentialité cryptographique sous-jacente. Il est recommandé aux utilisateurs d'utiliser des outils de protection de la vie privée ZKP avec de grands ensembles d'anonymisation, l'obfuscation de l'horodatage et des réseaux de relais minimisant les métadonnées.

Pertinence culturelle

Les preuves à divulgation nulle de connaissance (ZK) ont dépassé leur statut initial de construction purement théorique en théorie de la complexité pour devenir l'une des technologies les plus importantes culturellement au sein de l'écosystème blockchain. Le terme « ZK » est entré dans le langage courant du discours sur les cryptomonnaies : « ZK-rollup », « ZK-proof », « ZK-EVM » et « ZK-bridge » font partie du vocabulaire quotidien des communautés de développeurs Ethereum, et « ZK » est devenu un préfixe de marque, gage de sophistication technologique et de rigueur cryptographique. La période 2021-2024 a été marquée par une véritable « ruée vers l'or ZK », où de nombreux projets ont ajouté « ZK » à leur nom, alimentant les débats au sein de la communauté sur le « ZK-washing », la pratique consistant à revendiquer les propriétés des ZK sans réellement implémenter de preuves à divulgation nulle de connaissance.

L'importance culturelle des preuves à divulgation nulle de connaissance (ZKP) dans le domaine des cryptomonnaies dépasse le simple cadre technologique pour s'inscrire dans une perspective philosophique. Le mouvement cypherpunk, dont le manifeste d'Eric Hughes de 1993 défendait l'idée que la protection de la vie privée est essentielle à une société ouverte à l'ère numérique, trouve l'une de ses expressions techniques les plus marquantes dans les ZKP. Ces dernières concrétisent une grande partie de l'aspiration cypherpunk à une protection de la vie privée vérifiable : la possibilité de participer pleinement aux systèmes numériques sans renoncer à son autonomie informationnelle. Cette convergence philosophique a fait des chercheurs et développeurs de ZKP des figures influentes au sein de la communauté crypto, parmi lesquels Eli Ben-Sasson (StarkWare), Vitalik Buterin (qui a largement défendu les ZKP), Barry Whitehat (associé au protocole Semaphore et aux travaux sur la confidentialité et la scalabilité), ainsi que des membres de l'équipe Zcash comme Zooko Wilcox, Sean Bowe et Daira Hopwood.

Le récit de « l'hiver ZK à l'été ZK », où des années de recherche essentiellement théorique (de 2016 à 2020 environ) ont été suivies d'une explosion de déploiements pratiques à partir de 2021, est devenu une sorte de modèle pour la compréhension de la maturation technologique au sein de la communauté crypto. L'idée que les « ZKP contribueront à résoudre le problème de scalabilité d'Ethereum » est devenue l'une des positions consensuelles les plus fortes de la communauté Ethereum, Vitalik Buterin affirmant que les zk-rollups l'emporteraient probablement sur les rollups plus optimistes à long terme. Cette conviction a entraîné d'importants investissements de capital-risque dans les projets ZKP, attiré des chercheurs en cryptographie du monde universitaire vers les startups crypto et fait de l'expertise ZKP l'une des spécialisations les plus recherchées en ingénierie blockchain.

Au sein de la communauté académique de la cryptographie, la demande de l'industrie blockchain en systèmes ZKP pratiques a engendré un cercle vertueux remarquable : le financement industriel soutient la recherche académique, qui produit de nouveaux systèmes de preuve, lesquels sont rapidement commercialisés par des startups, générant des revenus qui financent de nouvelles recherches. Les conférences et ateliers consacrés à la recherche sur les preuves zéro-clé (ZKP) sont devenus des lieux d'échange privilégiés entre cryptographes universitaires et ingénieurs blockchain. Le rythme d'innovation, de Groth16 à PLONK, puis à Halo 2 et enfin à Nova en l'espace de sept ans environ, témoigne de l'intensité de cette collaboration.

Les sanctions infligées à Tornado Cash en août 2022, lorsque l'Office of Foreign Assets Control (OFAC) du Trésor américain a ajouté les contrats intelligents de Tornado Cash à sa liste de sanctions, ont marqué un tournant culturel pour la communauté ZKP. Ces sanctions ont de facto criminalisé l'utilisation d'un outil de protection de la vie privée open source, suscitant un débat sur la légitimité de la protection de la vie privée sur la blockchain, la qualification du code comme forme d'expression et la tension entre surveillance financière et droit à la vie privée. Les poursuites engagées ultérieurement contre un développeur de Tornado Cash aux Pays-Bas ont intensifié ces débats et rallié une partie de la communauté ZKP autour du principe selon lequel la protection de la vie privée n'est pas intrinsèquement criminelle. Cet incident a influencé la conception des projets de protection de la vie privée ZKP ultérieurs, qui intègrent de plus en plus des mécanismes de conformité sélectifs, tels que la preuve de l'absence de sanctions, en complément de la protection de la vie privée des transactions.

Exemples du monde réel

Transactions protégées Zcash : une cryptomonnaie privée pionnière

Scénario: Bitcoin et les premières cryptomonnaies fonctionnent sur des registres entièrement transparents où tous les montants des transactions, les adresses des expéditeurs et des destinataires sont visibles publiquement. Les défenseurs de la confidentialité financière et les utilisateurs institutionnels avaient besoin d'une cryptomonnaie permettant de vérifier cryptographiquement la validité des transactions sans divulguer publiquement aucun détail.

Mise en œuvre: Zcash a déployé les zk-SNARKs, initialement avec le circuit Sprout, puis Sapling avec Groth16, et plus récemment Orchard avec Halo 2, afin de permettre les transactions « protégées ». Dans une transaction protégée, l'expéditeur, le destinataire et le montant sont chiffrés sur la blockchain. Une preuve zk-SNARK associée à la transaction atteste que l'expéditeur possède la clé privée des notes d'entrée, que ces notes existent dans l'arbre d'engagement et n'ont pas été dépensées, que la somme des entrées est égale à la somme des sorties plus les frais, et qu'aucune double dépense n'a eu lieu, le tout sans révéler aucune de ces informations. La mise à niveau vers Sapling a considérablement réduit le temps de génération des preuves par rapport à Sprout, et Halo 2 (Orchard) a totalement supprimé l'exigence de configuration de confiance.

Résultat: Zcash a démontré la viabilité en production des ZKP pour la protection de la vie privée dans les cryptomonnaies, en traitant un grand nombre de transactions protégées depuis son lancement en 2016. Les cérémonies Zcash sont devenues des modèles de référence pour les bonnes pratiques de mise en place de comptes de confiance. Bien que l'adoption des transactions protégées soit restée historiquement marginale par rapport au total des transactions Zcash, en raison de la charge de calcul et de la préférence des plateformes d'échange pour les adresses transparentes, le protocole a prouvé que la protection de la vie privée cryptographique à grande échelle était techniquement réalisable et a servi de modèle à de nombreuses implémentations ultérieures de ZKP dans la blockchain.

Ère zkSync : Mise à l’échelle d’Ethereum grâce aux rollups à connaissance nulle

Scénario: Les faibles débits et les coûts de gaz de la couche 1 d'Ethereum lors des pics de demande rendaient le réseau impraticable pour de nombreux usages quotidiens, tels que les micropaiements, les transactions de jeux et les interactions DeFi à haute fréquence. Le trilemme de la blockchain, soit la tension entre scalabilité, sécurité et décentralisation, exigeait une solution permettant d'accroître le débit sans compromettre les garanties de sécurité d'Ethereum.

Mise en œuvre: zkSync Era, développé par Matter Labs, a lancé un rollup zkEVM de type 4 qui compile les contrats intelligents Solidity et Vyper en un jeu d'instructions personnalisé compatible avec la preuve à zéro (ZKP) et génère des preuves SNARK attestant de la bonne exécution de lots de transactions. Des milliers de transactions sont exécutées hors chaîne, une différence d'état est calculée, et une preuve SNARK de bonne exécution est publiée sur un contrat intelligent Ethereum. Ce dernier vérifie la preuve et applique la différence d'état, héritant ainsi de la sécurité d'Ethereum pour l'ensemble du lot.

Résultat: Durant ses premières années d'exploitation sur le réseau principal, zkSync Era a traité un très grand nombre de transactions, avec un débit et un coût bien supérieurs à ceux de la couche 1 d'Ethereum. Le système a démontré que la mise à l'échelle basée sur les ZKP pouvait prendre en charge des applications DeFi et NFT complexes tout en maintenant un niveau de sécurité équivalent à celui d'Ethereum. Son lancement a contribué à stimuler la concurrence entre les projets zk-rollup et a fait des ZKP une technologie clé dans la feuille de route de mise à l'échelle à long terme d'Ethereum.

Worldcoin : Preuve biométrique de l'identité

Scénario: Les attaques Sybil, qui consistent à créer de multiples fausses identités, fragilisent les mécanismes de gouvernance démocratique, la distribution équitable des jetons et les propositions de revenu universel dans l'écosystème Web3. La vérification d'identité traditionnelle exige la divulgation d'informations personnelles, tandis que les adresses blockchain pseudonymes permettent une création d'identité quasi illimitée. Il était donc nécessaire de trouver une solution permettant de prouver l'unicité d'une personne sans compromettre la confidentialité de son identité.

Mise en œuvre: Worldcoin a développé le système World ID, qui utilise la reconnaissance de l'iris grâce à un dispositif matériel spécifique appelé Orb, afin de créer un identifiant biométrique unique pour chaque personne. Ce système génère ensuite une preuve à divulgation nulle de connaissance (ZKP), utilisant le protocole Semaphore basé sur Groth16, qui atteste que « cette personne est un être humain enregistré unique » sans révéler le scan d'iris précis utilisé pour l'enregistrement. La ZKP est conçue pour empêcher les doubles enregistrements, prévenant ainsi les attaques Sybil, et pour garantir qu'aucun vérificateur ne puisse relier une preuve à un modèle biométrique spécifique.

Résultat: Dans les années qui ont suivi son lancement, Worldcoin a enregistré des millions d'utilisateurs uniques et vérifiés, créant ainsi l'un des plus vastes systèmes d'identité basés sur les preuves à divulgation nulle de connaissance (ZKP) au monde. Le projet a démontré que les ZKP pouvaient concilier identité biométrique et confidentialité blockchain, tout en suscitant un débat important sur la collecte de données biométriques, le consentement dans les pays en développement et les risques de centralisation des systèmes d'identité dépendants du matériel. Plusieurs protocoles de gouvernance et de distribution de jetons (airdrops) ont intégré la vérification World ID, faisant de la preuve de personnalité un cas d'utilisation notable des ZKP, au-delà de la simple protection de la vie privée financière.

Polygon zkEVM : Équivalence EVM de type 2 avec preuves à divulgation nulle de connaissance

Scénario: Les développeurs d'Ethereum avaient besoin d'une solution de mise à l'échelle entièrement compatible avec les contrats intelligents Ethereum existants, permettant le déploiement du même bytecode Solidity sans recompilation ni modification, tout en offrant les garanties de sécurité des preuves de validité plutôt que la finalité différée des rollups optimistes. L'obtention d'une équivalence EVM au niveau octet avec la vérification ZKP était considérée comme l'un des défis techniques les plus complexes de l'ingénierie blockchain.

Mise en œuvre: Polygon zkEVM a conçu une implémentation de type 2 de zkEVM qui prouve l'exécution correcte du bytecode EVM grâce à un système de preuve personnalisé combinant les éléments SNARK et STARK. Ce système utilise une approche d'engagement multi-polynomial où différents aspects de l'exécution EVM sont prouvés par des circuits spécialisés distincts, et une preuve d'agrégation récursive les combine en une seule vérification sur la chaîne.

Résultat: Polygon zkEVM a été lancé sur le réseau principal Ethereum en mars 2023, devenant ainsi l'une des premières zkEVM de type 2 en production. Le système a démontré qu'une équivalence quasi parfaite avec l'EVM était possible grâce à la preuve ZKP, la grande majorité des contrats intelligents Ethereum étant déployables sans modification. Plusieurs protocoles DeFi ont été déployés sur Polygon zkEVM, et le temps de génération des preuves a été considérablement amélioré grâce aux mises à jour successives du protocole, validant ainsi l'approche zkEVM de type 2 et influençant la conception des implémentations concurrentes.

Tableau de comparaison

Fonctionnalitézk-SNARKs (Groth16/PLONK)zk-STARKRollups optimistesEnvironnements d'exécution fiables (TEE)
Taille de l'épreuveTrès petit : Groth16 environ 128 à 192 octets, PLONK environ 400 à 900 octets ; empreinte minimale sur la blockchainTaille importante : généralement de quelques dizaines à quelques centaines de kilo-octets par preuve ; toujours beaucoup plus petite que les données transactionnelles brutes qu’elle remplace.Aucune preuve de validité requise ; les données complètes de la transaction sont publiées sur la blockchain en tant que données d'appel.Aucune preuve cryptographique ; les attestations matérielles offrent des garanties comparativement plus faibles.
Heure de vérificationExtrêmement rapide, généralement de l'ordre de quelques millisecondes ; à peu près constant quelle que soit la taille du calcul.Modérée, et s'adapte à la taille du calcul en raison de la vérification FRI, bien que généralement rapide.Aucune vérification immédiate ; un délai de plusieurs jours est nécessaire pour la vérification des preuves de fraude, ce qui retarde les retraits.Vérification minimale de l'attestation matérielle ; aucune preuve mathématique de l'exécution correcte
Configuration de confianceGroth16 requiert une cérémonie spécifique au circuit ; PLONK utilise une configuration universelle et évolutive ; les deux comportent un risque de contamination par des déchets toxiques.Aucune configuration requise (transparence) ; repose uniquement sur des fonctions de hachage et une génération de nombres aléatoires publics.Aucun requis ; la sécurité repose sur des incitations économiques via un jeu anti-fraudeFait confiance au fabricant de matériel ; comporte des risques liés à la chaîne d’approvisionnement et aux attaques par canaux auxiliaires
Résistance quantiqueNon ; les schémas basés sur l’appariement pourraient être compromis par l’algorithme de Shor, ce qui nécessiterait une migration vers des alternatives post-quantiques.Oui ; les engagements basés sur le hachage résistent aux attaques quantiques connuesNon directement applicable ; dépend de la résistance quantique propre à la chaîne sous-jacenteNon ; les modules de sécurité matériels pourraient être compromis par des attaques par canaux auxiliaires permises par l’informatique quantique
Coût du démonstrateurNiveau élevé ; nécessite des FFT et des multiplications multi-scalaires sur des courbes elliptiquesTrès élevé pour les petits calculs, mais évolue plus efficacement pour les très grands circuitsFaible ; aucune génération de preuve n’est requise, car le séquenceur exécute et regroupe uniquement les transactions.Faible ; les calculs s’exécutent dans une enclave matérielle avec des performances quasi natives, sans génération de preuves cryptographiques.
Capacité de confidentialitéPreuves à divulgation nulle de connaissance ; les preuves ne révèlent rien sur le témoin.Preuve de connaissance totale lorsqu'ils sont configurés en tant que ZK-STARKs ; capacités de confidentialité similaires à celles des SNARKsAucune confidentialité intrinsèque ; toutes les données de transaction sont publiées publiquement en tant que données d'appel sur la couche 1Partiel ; les données sont chiffrées pendant le calcul, mais on fait davantage confiance au fabricant du matériel qu’aux mathématiques.
FinalitéImmédiatement une fois la preuve vérifiée sur la chaîneImmédiate, similaire aux SNARKs, car la vérification des preuves sur la chaîne assure une finalité mathématique instantanée.Le retrait est généralement retardé d'environ une semaine avant d'être finalisé, même si les opérations de pont permettent des sorties plus rapides, assorties d'un risque de liquidité accru.Immédiate mais plus faible ; l’attestation est vérifiée instantanément, mais la sécurité repose sur des hypothèses matérielles plutôt que sur des preuves cryptographiques.

Termes connexes

  • zk-SNARK (Argument de connaissance succinct non interactif à divulgation nulle de connaissance): Une famille de systèmes de preuve produisant des preuves extrêmement compactes avec une vérification rapide, utilisés dans Zcash, Tornado Cash et la plupart des zk-rollups ; caractérisés par leur concision mais nécessitant historiquement des configurations fiables.
  • zk-STARK (Argument de connaissance transparent, évolutif et à divulgation nulle de connaissance) : Une famille de systèmes de preuve utilisant des engagements basés sur le hachage (FRI) pour garantir la transparence et la sécurité post-quantique au prix de preuves plus volumineuses ; développée par Eli Ben-Sasson et déployée par StarkWare
  • zk-Rollup : A Layer 2 Solution de mise à l'échelle qui exécute les transactions hors chaîne et envoie les preuves de validité (SNARK ou STARK) à la couche 1, héritant ainsi de la sécurité de la couche de base tout en atteignant un débit beaucoup plus élevé et des coûts réduits.
  • Circuit arithmétique : La représentation mathématique d'un calcul sous forme d'un graphe acyclique orienté de portes d'addition et de multiplication sur un corps fini ; la structure fondamentale sur laquelle les systèmes ZKP démontrent des énoncés concernant
  • Configuration de confiance : Une cérémonie cryptographique ponctuelle qui génère les paramètres publics nécessaires à certains systèmes SNARK ; la compromission du caractère aléatoire secret de cette cérémonie permet la falsification de preuves.
  • Schéma d'engagement polynomial : Une primitive cryptographique permettant à un prouveur de s'engager sur un polynôme et de prouver ultérieurement des évaluations à des points spécifiques ; KZG (basé sur l'appariement) et FRI (basé sur le hachage) sont deux des schémas dominants sous-jacents aux ZKP modernes.
  • Heuristique de Fiat-Shamir : Une technique permettant de convertir des protocoles de preuve interactifs en protocoles non interactifs en remplaçant les défis aléatoires du vérificateur par des sorties de fonctions de hachage, ce qui permet de vérifier les ZKP sans interaction en temps réel.
  • Composition de preuves récursives : La technique consistant à créer une preuve qui en vérifie une autre au sein de son circuit, permettant ainsi des chaînes de preuves qui compressent des quantités arbitraires de calcul ; réalisée sans infrastructure de confiance par Halo 2, et à coût minimal par les schémas de pliage de Nova.
  • R1CS (Système de contraintes de rang 1) : Format d'arithmétique représentant les contraintes de circuit sous forme d'équations quadratiques de rang 1 sur des vecteurs ; utilisé par Groth16, Marlin et Nova.
  • Arithmétisation PLONKish : Le format de système de contraintes utilisé par PLONK et ses variantes, comprenant des polynômes de sélection, des portes personnalisées, des arguments de permutation et des tables de consultation pour une conception de circuits flexible.
  • Le Caire (langage de programmation) : Un langage de programmation conçu pour écrire des programmes prouvables, utilisé par StarkNet pour compiler des contrats intelligents en une représentation pouvant être prouvée avec des STARKs.
  • Circom : Un langage dédié à la définition de circuits arithmétiques, largement utilisé dans l'écosystème Ethereum ZKP pour écrire des circuits compatibles avec les contraintes R1CS des prouveurs Groth16 et PLONK.

QFP

Q : Quelle est la différence entre un zk-SNARK et un zk-STARK ? Les deux principales différences résident dans la configuration de confiance et les hypothèses cryptographiques sous-jacentes. Les zk-SNARKs, notamment ceux basés sur le couplage comme Groth16 et PLONK avec KZG, nécessitent une procédure de configuration de confiance et reposent sur des hypothèses relatives aux courbes elliptiques, vulnérables aux ordinateurs quantiques. Ils produisent des preuves très courtes avec une vérification rapide. Les zk-STARKs, quant à eux, ne nécessitent aucune configuration de confiance et utilisent des fonctions de hachage réputées résistantes aux ordinateurs quantiques. Ils produisent des preuves plus longues avec une vérification plus lente, mais toujours rapide. En pratique, le choix entre SNARKs et STARKs implique des compromis entre la taille de la preuve (coût sur la chaîne), les performances du prouveur, la résistance quantique et les hypothèses de confiance. De nombreux systèmes modernes utilisent des approches hybrides, par exemple en générant une preuve STARK puis en l'encapsulant dans un SNARK pour une vérification sur la chaîne moins coûteuse.

Q : Comment les preuves à divulgation nulle de connaissance permettent-elles la mise à l'échelle de la blockchain ? Les ZKP permettent une mise à l'échelle via les zk-rollups. Un opérateur de rollup exécute des milliers de transactions hors chaîne, calcule les modifications d'état résultantes et génère une ZKP attestant de la bonne exécution de toutes les transactions. Cette preuve unique est publiée sur la blockchain de couche 1 avec la différence d'état. Le contrat intelligent de couche 1 vérifie la preuve, ce qui nécessite une puissance de calcul sensiblement identique quel que soit le nombre de transactions du lot, et applique les modifications d'état. Ainsi, la couche 1 n'a besoin de vérifier qu'une seule preuve au lieu de réexécuter des milliers de transactions, ce qui permet un gain de débit important tout en bénéficiant des garanties de sécurité de la couche de base.

Q : Qu’est-ce qu’une configuration de confiance, et pourquoi est-elle controversée ? Une procédure de configuration de confiance est une cérémonie unique qui génère les paramètres cryptographiques, appelés chaîne de référence structurée, nécessaires à certains systèmes de preuve SNARK. Lors de cette cérémonie, des valeurs secrètes aléatoires, parfois qualifiées de « déchets toxiques », sont utilisées pour calculer ces paramètres. Si quelqu'un parvient à reconstituer ces valeurs secrètes, il pourrait en principe falsifier des preuves, créer de fausses transactions, générer des jetons ex nihilo ou produire de fausses preuves d'identité, autant d'actions qui seraient acceptées comme valides par le vérificateur. Le problème vient du fait que la sécurité repose sur la destruction irréversible de ces secrets. Les cérémonies de calcul multipartites atténuent ce risque en faisant contribuer l'aléatoire par de nombreux participants, puisqu'un seul participant honnête suffit à garantir la sécurité. Cependant, la procédure de configuration de confiance demeure un enjeu philosophique pour les systèmes aspirant à une confiance totalement défaillante, raison pour laquelle les systèmes plus récents comme STARKs et Halo 2 l'éliminent complètement.

Q : Les preuves à divulgation nulle de connaissance peuvent-elles être utilisées pour la vérification d'identité sans révéler de données personnelles ? Oui, il s'agit d'une application particulièrement performante. Grâce aux systèmes d'identité basés sur la preuve à divulgation nulle de connaissance (ZKP), vous pouvez prouver certaines caractéristiques vous concernant sans révéler les données sous-jacentes. Par exemple, vous pouvez prouver que vous avez plus de 18 ans sans dévoiler votre date de naissance, que vous avez effectué la procédure KYC sans révéler votre nom ni votre numéro de passeport, que vous ne figurez pas sur une liste de sanctions sans révéler votre identité, ou encore que vous êtes un investisseur qualifié sans révéler votre patrimoine. Le protocole ou service DeFi reçoit une preuve cryptographique de la véracité de l'affirmation et peut la vérifier sur la blockchain, sans jamais accéder aux données personnelles sous-jacentes. Ceci permet de garantir simultanément la conformité réglementaire et la protection de la vie privée.

Q : Qu'est-ce que la composition récursive de preuves et pourquoi est-ce important ? La composition récursive de preuves permet à une preuve zéro (ZKP) de vérifier une autre ZKP au sein de son circuit ; il s'agit essentiellement d'une preuve qui en vérifie une autre. Ceci crée une chaîne où chaque preuve atteste de la validité de toutes les preuves précédentes, compressant ainsi une quantité arbitraire de calculs en une seule preuve finale de taille constante. Pour les blockchains, c'est crucial : au lieu de vérifier une nouvelle preuve pour chaque lot de transactions, un système récursif peut générer une preuve indiquant que la preuve précédente était valide et que le nouveau lot de transactions l'est également, accumulant ainsi l'historique de la chaîne en une seule preuve. Certains protocoles utilisent cette approche pour maintenir une blockchain de taille relativement constante, quelle que soit sa longueur. Les schémas de pliage de Nova rendent cette récursion considérablement moins coûteuse en « pliant » les instances de calcul plutôt qu'en générant des preuves complètes à chaque étape.

Q : Combien coûte la vérification d'une preuve à divulgation nulle de connaissance sur Ethereum ? Les coûts de vérification sur la blockchain varient selon le système de preuve. La vérification d'une preuve Groth16 coûte généralement de l'ordre de quelques centaines de milliers de gas sur Ethereum. La vérification PLONK a tendance à coûter un peu plus cher. La vérification STARK est généralement plus onéreuse en raison de la taille plus importante de la preuve, c'est pourquoi de nombreux systèmes basés sur STARK encapsulent leurs preuves dans un SNARK final pour une vérification sur la blockchain moins coûteuse. Dans le cadre d'un zk-rollup, ce coût de vérification est amorti sur toutes les transactions du lot, de sorte que le coût effectif de vérification par transaction peut être très faible lorsque les lots contiennent des milliers de transactions. Les transactions blob EIP-4844 d'Ethereum, et les augmentations de capacité des blobs ultérieures de l'ère Fusaka, ont encore réduit le coût de publication des différences d'état qui accompagnent ces preuves.

Q : Les preuves à divulgation nulle de connaissance sont-elles véritablement « à divulgation nulle de connaissance » en pratique ? La propriété mathématique de preuve à divulgation nulle de connaissance (ZKP) garantit que la preuve ne révèle rien sur le témoin secret, hormis la véracité de l'énoncé prouvé. Cependant, en pratique, plusieurs facteurs peuvent entraîner des fuites d'informations. Le simple fait qu'une preuve ait été soumise constitue une métadonnée publique ; un observateur sait qu'une transaction a été effectuée à un moment précis. La taille de l'ensemble d'anonymisation est importante, car si un petit nombre de personnes utilisent un pool protégé, l'analyse du graphe des transactions peut permettre d'identifier les participants. Les attaques par canaux auxiliaires lors de la génération de preuves, telles que l'analyse du temps d'exécution ou de la consommation d'énergie, peuvent divulguer des informations sur le témoin. Les entrées publiques de la preuve, visibles par conception, peuvent révéler plus que prévu si le circuit n'est pas conçu avec soin. Pour une confidentialité maximale, les systèmes basés sur la ZKP doivent être associés à de vastes ensembles d'anonymisation, à l'obfuscation temporelle et à une conception de circuit rigoureuse minimisant les entrées publiques.

Références

  • Goldwasser, S., Micali, S. et Rackoff, C., "La complexité des connaissances des systèmes de preuve interactifs
  • Groth, J., « Sur la taille des arguments non interactifs basés sur l’appariement » (Groth16)
  • Gabizon, A., Williamson, Z. et Ciobotaru, O., « PLONK »,
  • Ben-Sasson, E., Bentov, I., Horesh, Y., et Riabzev, M., « Intégrité computationnelle évolutive, transparente et post-quantique sécurisée » (STARKs)
  • Bowe, S., Grigg, J. et Hopwood, D., « Composition de preuves récursives sans configuration fiable » (Halo)
  • Kothapalli, A., Setty, S. et Tzialla, I., « Nova : arguments récursifs à connaissance nulle issus de schémas de pliage »,
  • Fondation Ethereum, « Preuves à divulgation nulle de connaissance », ethereum.org
  • Buterin, V., « Guide incomplet des enrouleurs », vitalik.eth.limo

Dernières ressources et blogs