Application et développement de la technologie zk-SNARKs dans le domaine de la Blockchain
Résumé
Les zk-SNARKs ( ZKP ) sont considérés comme l'une des innovations les plus importantes dans le domaine de la Blockchain, et représentent également un axe de préoccupation majeur pour le capital-risque. Cet article passe en revue le développement des ZKP au cours des quarante dernières années et les derniers progrès de la recherche.
Tout d'abord, le concept de base et le contexte historique des ZKP sont présentés, en mettant l'accent sur l'analyse de la technologie ZKP basée sur des circuits, y compris la conception, l'application et l'optimisation des modèles tels que zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs et Ligero. En ce qui concerne l'environnement de calcul, on explore comment ZKVM et ZKEVM améliorent la capacité de traitement des transactions, protègent la vie privée et augmentent l'efficacité de la vérification. L'article présente également le mécanisme de fonctionnement et les méthodes d'optimisation du ZK Rollup en tant que solution d'extension Layer 2, ainsi que les avancées récentes en matière d'accélération matérielle, de solutions hybrides et de ZK EVM dédiées.
Enfin, cet article envisage les concepts émergents tels que ZKCoprocessor, ZKML, ZKThreads, ZK Sharding et ZK StateChannels, et explore leur potentiel en matière d'évolutivité, d'interopérabilité et de protection de la vie privée dans le domaine de la Blockchain.
En analysant ces technologies et tendances de développement, cet article offre une perspective globale pour comprendre et appliquer la technologie ZKP, démontrant son immense potentiel pour améliorer l'efficacité et la sécurité des systèmes Blockchain, fournissant ainsi des références importantes pour les décisions d'investissement futures.
Table des matières
Avant-propos
Une, connaissances de base sur les zk-SNARKs
Présentation
Exemple de zk-SNARKs
Deux, zk-SNARKs non interactifs
Contexte
Proposition de NIZK
Transformation Fiat-Shamir
Jens Groth et ses recherches
Autres recherches
Trois, preuves de connaissance nulle basées sur des circuits
Contexte
Concepts et caractéristiques de base du modèle de circuit
Conception et application de circuits dans les zk-SNARKs
Défauts et défis potentiels
Quatre, modèle de zk-SNARKs
Contexte
Modèles d'algorithmes courants
Schéma basé sur le PCP linéaire et le problème du logarithme discret
Proposition basée sur la preuve des gens ordinaires
Preuve vérifiable par probabilité ( PCP ) de zk-SNARKs
Classification basée sur la phase de configuration de la construction de preuve générique CPC( ).
Cinq, aperçu et développement des zk-SNARKs virtuels.
Contexte
Classification actuelle du ZKVM
Paradigmes front-end et back-end
Les avantages et inconvénients du paradigme ZKVM
Six, aperçu et développement des zk-SNARKs de la machine virtuelle Ethereum
Contexte
Le fonctionnement de ZKEVM
Processus de mise en œuvre de ZKEVM
Les caractéristiques de ZKEVM
Sept, aperçu et développement des solutions de réseau de seconde couche zk-SNARKs
Contexte
Le mécanisme de fonctionnement de ZK Rollup
Les inconvénients et les optimisations des ZK Rollup
Huit, les directions futures du zk-SNARKs.
Accélérer le développement de l'environnement de calcul
Proposition et développement de ZKML
Développements liés à la technologie d'extension ZKP
Le développement de l'interopérabilité des zk-SNARKs
Neuf, conclusion
Introduction
Avec l'arrivée de l'ère Web3, les applications Blockchain ( DApps ) se développent rapidement, avec de nouvelles applications apparaissant chaque jour. Ces dernières années, les plateformes Blockchain supportent chaque jour les activités de millions d'utilisateurs, traitant des milliards de transactions. Les énormes quantités de données générées par ces transactions incluent souvent des informations personnelles sensibles, telles que l'identité des utilisateurs, le montant des transactions, les adresses de compte et les soldes, etc. En raison de l'ouverture et de la transparence de la Blockchain, ces données stockées sont accessibles à tous, ce qui soulève diverses questions de sécurité et de confidentialité.
Actuellement, plusieurs techniques de cryptographie peuvent relever ces défis, notamment le chiffrement homomorphe, les signatures en anneau, le calcul multipartite sécurisé et les zk-SNARKs. Le chiffrement homomorphe permet d'effectuer des opérations sans déchiffrer le texte chiffré, ce qui aide à protéger la sécurité des soldes et des montants des transactions, mais ne peut pas protéger la sécurité des adresses des comptes. Les signatures en anneau offrent une forme particulière de signature numérique capable de cacher l'identité du signataire, protégeant ainsi la sécurité des adresses des comptes, mais elles ne peuvent pas protéger les soldes et les montants des transactions. Le calcul multipartite sécurisé permet de répartir des tâches de calcul entre plusieurs participants sans que l'un d'eux ne connaisse les données des autres participants, protégeant efficacement la sécurité des soldes et des montants des transactions, mais ne peut pas non plus protéger la sécurité des adresses des comptes. De plus, ces techniques ne peuvent pas être utilisées pour vérifier si un prouveur possède un montant de transaction suffisant dans un environnement blockchain sans révéler les montants des transactions, les adresses des comptes et les soldes des comptes.
zk-SNARKs(ZKP) est une solution plus complète. Ce protocole de vérification permet de valider la véracité de certaines propositions sans révéler aucune donnée intermédiaire. Le protocole ne nécessite pas d'infrastructure de clé publique complexe, et sa mise en œuvre répétée ne donne pas aux utilisateurs malveillants l'occasion d'obtenir des informations supplémentaires utiles. Grâce à ZKP, le vérificateur peut confirmer si le prouveur dispose d'un montant de transaction suffisant sans divulguer aucune donnée de transaction privée. Le processus de vérification comprend la génération d'une preuve contenant le montant de transaction revendiqué par le prouveur, puis la transmission de cette preuve au vérificateur, qui effectue un calcul préétabli sur la preuve et produit le résultat final, permettant ainsi de déterminer si la déclaration du prouveur est acceptée. Si la déclaration du prouveur est acceptée, cela signifie qu'il dispose d'un montant de transaction suffisant. Le processus de vérification susmentionné peut être enregistré sur la Blockchain, sans aucune falsification.
Cette caractéristique du ZKP lui permet de jouer un rôle central dans les transactions Blockchain et les applications de crypto-monnaie, en particulier en matière de protection de la vie privée et d'extension du réseau, ce qui en fait non seulement un point focal de la recherche académique, mais également largement considéré comme l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie de la technologie des registres distribués. C'est également une piste clé pour les applications industrielles et le capital-risque.
De ce fait, de nombreux projets de réseau basés sur ZKP ont émergé, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, les innovations algorithmiques concernant ZKP apparaissent sans cesse, et il est rapporté qu'une nouvelle algorithme est publiée presque chaque semaine. De plus, le développement de matériel lié à la technologie ZKP progresse rapidement, y compris des puces spécialement optimisées pour ZKP. Par exemple, certains projets ont déjà achevé des levées de fonds à grande échelle, ces développements non seulement démontrent les avancées rapides de la technologie ZKP, mais reflètent également la transition du matériel général vers du matériel spécialisé comme les GPU, FPGA et ASIC.
Ces avancées montrent que la technologie zk-SNARKs n'est pas seulement une percée importante dans le domaine de la cryptographie, mais aussi un moteur clé pour réaliser des applications plus larges de la technologie Blockchain, notamment en matière de protection de la vie privée et de capacité de traitement.
Ainsi, nous avons décidé de rassembler systématiquement des connaissances pertinentes sur zk-SNARKs ( ZKP ) afin de mieux nous aider à prendre des décisions d'investissement futures. Pour ce faire, nous avons examiné de manière exhaustive les articles académiques clés concernant ZKP, classés par pertinence et par nombre de citations ( ; en même temps, nous avons également analysé en détail les données et les livres blancs des projets leaders dans ce domaine, classés par leur taille de financement ). Cette collecte et analyse complètes de données ont fourni une base solide pour la rédaction de ce document.
I. Connaissances de base sur les zk-SNARKs
( 1. Aperçu
En 1985, les chercheurs Goldwasser, Micali et Rackoff ont proposé pour la première fois le concept de zk-SNARKs dans leur article intitulé "The Knowledge Complexity of Interactive Proof-Systems", ainsi que Zero-Knowledge Proof, ZKP et Interactive Zero-Knowledge, IZK. Cet article est une œuvre fondatrice des zk-SNARKs et définit de nombreux concepts qui ont influencé les recherches académiques ultérieures. Par exemple, la définition de la connaissance est "la sortie d'un calcul non faisable", c'est-à-dire que la connaissance doit être une sortie et qu'elle doit être un calcul non faisable, ce qui signifie qu'elle ne peut pas être une fonction simple, mais doit être une fonction complexe. Un calcul non faisable peut généralement être compris comme un problème NP, c'est-à-dire un problème dont la solution peut être vérifiée en temps polynomial, le temps polynomial signifiant que le temps d'exécution de l'algorithme peut être exprimé par une fonction polynomiale de la taille de l'entrée. C'est un critère important pour évaluer l'efficacité et la faisabilité des algorithmes en informatique. Étant donné que le processus de résolution des problèmes NP est complexe, il est donc considéré comme un calcul non faisable ; cependant, son processus de vérification est relativement simple, ce qui le rend très adapté à la vérification des zk-SNARKs.
Un exemple classique de problème NP est le problème du voyageur de commerce, où il s'agit de trouver le chemin le plus court pour visiter une série de villes et revenir au point de départ. Bien qu'il puisse être difficile de trouver le chemin le plus court, il est relativement facile de vérifier si un chemin donné est le plus court. En effet, la vérification de la distance totale d'un chemin spécifique peut être effectuée en temps polynomial.
Dans leur article, Goldwasser et al. ont introduit le concept de "complexité de la connaissance" pour quantifier la quantité de connaissances divulguées par le prouveur au vérificateur dans les systèmes de preuve interactifs. Ils ont également proposé des systèmes de preuve interactifs )Interactive Proof Systems, IPS###, dans lesquels le prouveur (Prover) et le vérificateur (Verifier) interagissent par plusieurs tours pour prouver la véracité d'une déclaration.
En résumé, la définition des zk-SNARKs résumée par Goldwasser et al. est une forme spéciale de preuve interactive, dans laquelle le vérificateur ne reçoit aucune information supplémentaire en dehors de la valeur de vérité de l'énoncé au cours du processus de vérification; et trois caractéristiques fondamentales ont été proposées, y compris :
Complétude : Si la preuve est vraie, un prouveur honnête peut convaincre un vérificateur honnête de ce fait ;
Fiabilité : si le prouveur ne connaît pas le contenu de la déclaration, il ne peut tromper le vérificateur qu'avec une probabilité négligeable;
Propriété de connaissance nulle : À la fin du processus de preuve, le vérificateur ne reçoit que l'information "le prouveur possède cette connaissance", sans obtenir de contenu supplémentaire.
( 2. Exemple de zk-SNARKs
Pour mieux comprendre les zk-SNARKs et leurs propriétés, voici un exemple de vérification du fait qu'un prouveur possède certaines informations privées, cet exemple est divisé en trois phases : configuration, défi et réponse.
Première étape : définir )Setup(
À cette étape, l'objectif du prouveur est de créer une preuve qu'il connaît un certain nombre secret s, mais sans montrer directement s. Soit le nombre secret s;
Choisissez deux grands nombres premiers p et q, puis calculez leur produit n. Soit p et q premiers, calculez le n obtenu.
Calculer v=s^2 mod n, ici, v est envoyé au vérificateur comme une partie de la preuve, mais il n'est pas suffisant pour permettre au vérificateur ou à tout observateur déduire s;
Choisissez un entier aléatoire r, calculez x=r^2 mod n et envoyez-le au vérificateur. Cette valeur x est utilisée pour le processus de vérification ultérieur, mais ne révèle pas non plus s. Soit r un entier aléatoire, calculez x obtenu.
Deuxième étape : défi )Challenge(
Le validateur choisit au hasard un emplacement a) qui peut être 0 ou 1###, puis l'envoie au prouveur. Ce "défi" détermine les étapes que le prouveur doit suivre ensuite.
Troisième étape : réponse (Response)
Selon la valeur a émise par le validateur, le prouveur répond :
Si a=0, le prouveur envoie g=r( où r est un nombre aléatoire qu'il a choisi précédemment ).
Si a=1, le prouveur calcule g=rs mod n et l'envoie. Supposons que le vérificateur envoie le bit aléatoire a, en fonction de la valeur de a, le prouveur calcule g;
Enfin, le validateur vérifie si g^2 mod n est égal à xa^v mod n en fonction de g reçu. Si l'égalité est vérifiée, le validateur accepte cette preuve. Lorsque a=0, le validateur calcule g^2 mod n, le côté droit vérifie xa^v mod n=x; lorsque a=1, le validateur calcule g^2 mod n, le côté droit vérifie xa^v mod n=xv.
Ici, nous voyons que g^2 mod n=xa^v mod n calculé par le vérificateur indique que le prouveur a réussi le processus de vérification sans révéler son chiffre secret s. Ici, puisque a ne peut prendre que 0 ou 1, il n'y a que deux possibilités, la probabilité que le prouveur réussisse la vérification par chance est de 1/2( lorsque a prend 0, soit ). Mais le vérificateur défie ensuite le prouveur k fois, le prouveur change constamment les chiffres pertinents et les soumet au vérificateur, et réussit toujours à passer le processus de vérification, de sorte que la probabilité que le prouveur réussisse la vérification par chance est de (1/2)^k(, tendant ainsi vers 0), prouvant que le prouveur connaît effectivement un chiffre secret s. Cet exemple prouve l'intégrité, la fiabilité et le caractère non révélateur du système de zk-SNARKs.
Deux, zk-SNARKs non interactifs
( 1. Contexte
zk-SNARKs)ZKP( dans le concept traditionnel, il s'agit généralement d'une forme de protocole interactif et en ligne ; par exemple, le protocole Sigma nécessite généralement de trois à cinq tours d'interaction pour compléter l'authentification. Cependant, dans des scénarios tels que les transactions instantanées ou le vote, il n'y a souvent pas d'opportunité pour plusieurs interactions, en particulier dans les applications de la technologie Blockchain, où la capacité de vérification hors ligne devient particulièrement importante.
) 2. Proposition de NIZK
En 1988, Blum, Feldman et Micali ont proposé pour la première fois le concept de preuve non interactive de connaissance nulle (NIZK) (, prouvant qu'il était possible pour le prouveur )Prover### et le vérificateur (Verifier) de compléter le processus d'authentification sans nécessiter de multiples interactions. Cette percée a permis que même
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
Analyse complète de la technologie zk-SNARKs dans les applications Blockchain et perspectives d'avenir
Application et développement de la technologie zk-SNARKs dans le domaine de la Blockchain
Résumé
Les zk-SNARKs ( ZKP ) sont considérés comme l'une des innovations les plus importantes dans le domaine de la Blockchain, et représentent également un axe de préoccupation majeur pour le capital-risque. Cet article passe en revue le développement des ZKP au cours des quarante dernières années et les derniers progrès de la recherche.
Tout d'abord, le concept de base et le contexte historique des ZKP sont présentés, en mettant l'accent sur l'analyse de la technologie ZKP basée sur des circuits, y compris la conception, l'application et l'optimisation des modèles tels que zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs et Ligero. En ce qui concerne l'environnement de calcul, on explore comment ZKVM et ZKEVM améliorent la capacité de traitement des transactions, protègent la vie privée et augmentent l'efficacité de la vérification. L'article présente également le mécanisme de fonctionnement et les méthodes d'optimisation du ZK Rollup en tant que solution d'extension Layer 2, ainsi que les avancées récentes en matière d'accélération matérielle, de solutions hybrides et de ZK EVM dédiées.
Enfin, cet article envisage les concepts émergents tels que ZKCoprocessor, ZKML, ZKThreads, ZK Sharding et ZK StateChannels, et explore leur potentiel en matière d'évolutivité, d'interopérabilité et de protection de la vie privée dans le domaine de la Blockchain.
En analysant ces technologies et tendances de développement, cet article offre une perspective globale pour comprendre et appliquer la technologie ZKP, démontrant son immense potentiel pour améliorer l'efficacité et la sécurité des systèmes Blockchain, fournissant ainsi des références importantes pour les décisions d'investissement futures.
Table des matières
Avant-propos
Une, connaissances de base sur les zk-SNARKs
Deux, zk-SNARKs non interactifs
Trois, preuves de connaissance nulle basées sur des circuits
Quatre, modèle de zk-SNARKs
Cinq, aperçu et développement des zk-SNARKs virtuels.
Six, aperçu et développement des zk-SNARKs de la machine virtuelle Ethereum
Sept, aperçu et développement des solutions de réseau de seconde couche zk-SNARKs
Huit, les directions futures du zk-SNARKs.
Neuf, conclusion
Introduction
Avec l'arrivée de l'ère Web3, les applications Blockchain ( DApps ) se développent rapidement, avec de nouvelles applications apparaissant chaque jour. Ces dernières années, les plateformes Blockchain supportent chaque jour les activités de millions d'utilisateurs, traitant des milliards de transactions. Les énormes quantités de données générées par ces transactions incluent souvent des informations personnelles sensibles, telles que l'identité des utilisateurs, le montant des transactions, les adresses de compte et les soldes, etc. En raison de l'ouverture et de la transparence de la Blockchain, ces données stockées sont accessibles à tous, ce qui soulève diverses questions de sécurité et de confidentialité.
Actuellement, plusieurs techniques de cryptographie peuvent relever ces défis, notamment le chiffrement homomorphe, les signatures en anneau, le calcul multipartite sécurisé et les zk-SNARKs. Le chiffrement homomorphe permet d'effectuer des opérations sans déchiffrer le texte chiffré, ce qui aide à protéger la sécurité des soldes et des montants des transactions, mais ne peut pas protéger la sécurité des adresses des comptes. Les signatures en anneau offrent une forme particulière de signature numérique capable de cacher l'identité du signataire, protégeant ainsi la sécurité des adresses des comptes, mais elles ne peuvent pas protéger les soldes et les montants des transactions. Le calcul multipartite sécurisé permet de répartir des tâches de calcul entre plusieurs participants sans que l'un d'eux ne connaisse les données des autres participants, protégeant efficacement la sécurité des soldes et des montants des transactions, mais ne peut pas non plus protéger la sécurité des adresses des comptes. De plus, ces techniques ne peuvent pas être utilisées pour vérifier si un prouveur possède un montant de transaction suffisant dans un environnement blockchain sans révéler les montants des transactions, les adresses des comptes et les soldes des comptes.
zk-SNARKs(ZKP) est une solution plus complète. Ce protocole de vérification permet de valider la véracité de certaines propositions sans révéler aucune donnée intermédiaire. Le protocole ne nécessite pas d'infrastructure de clé publique complexe, et sa mise en œuvre répétée ne donne pas aux utilisateurs malveillants l'occasion d'obtenir des informations supplémentaires utiles. Grâce à ZKP, le vérificateur peut confirmer si le prouveur dispose d'un montant de transaction suffisant sans divulguer aucune donnée de transaction privée. Le processus de vérification comprend la génération d'une preuve contenant le montant de transaction revendiqué par le prouveur, puis la transmission de cette preuve au vérificateur, qui effectue un calcul préétabli sur la preuve et produit le résultat final, permettant ainsi de déterminer si la déclaration du prouveur est acceptée. Si la déclaration du prouveur est acceptée, cela signifie qu'il dispose d'un montant de transaction suffisant. Le processus de vérification susmentionné peut être enregistré sur la Blockchain, sans aucune falsification.
Cette caractéristique du ZKP lui permet de jouer un rôle central dans les transactions Blockchain et les applications de crypto-monnaie, en particulier en matière de protection de la vie privée et d'extension du réseau, ce qui en fait non seulement un point focal de la recherche académique, mais également largement considéré comme l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie de la technologie des registres distribués. C'est également une piste clé pour les applications industrielles et le capital-risque.
De ce fait, de nombreux projets de réseau basés sur ZKP ont émergé, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, les innovations algorithmiques concernant ZKP apparaissent sans cesse, et il est rapporté qu'une nouvelle algorithme est publiée presque chaque semaine. De plus, le développement de matériel lié à la technologie ZKP progresse rapidement, y compris des puces spécialement optimisées pour ZKP. Par exemple, certains projets ont déjà achevé des levées de fonds à grande échelle, ces développements non seulement démontrent les avancées rapides de la technologie ZKP, mais reflètent également la transition du matériel général vers du matériel spécialisé comme les GPU, FPGA et ASIC.
Ces avancées montrent que la technologie zk-SNARKs n'est pas seulement une percée importante dans le domaine de la cryptographie, mais aussi un moteur clé pour réaliser des applications plus larges de la technologie Blockchain, notamment en matière de protection de la vie privée et de capacité de traitement.
Ainsi, nous avons décidé de rassembler systématiquement des connaissances pertinentes sur zk-SNARKs ( ZKP ) afin de mieux nous aider à prendre des décisions d'investissement futures. Pour ce faire, nous avons examiné de manière exhaustive les articles académiques clés concernant ZKP, classés par pertinence et par nombre de citations ( ; en même temps, nous avons également analysé en détail les données et les livres blancs des projets leaders dans ce domaine, classés par leur taille de financement ). Cette collecte et analyse complètes de données ont fourni une base solide pour la rédaction de ce document.
I. Connaissances de base sur les zk-SNARKs
( 1. Aperçu
En 1985, les chercheurs Goldwasser, Micali et Rackoff ont proposé pour la première fois le concept de zk-SNARKs dans leur article intitulé "The Knowledge Complexity of Interactive Proof-Systems", ainsi que Zero-Knowledge Proof, ZKP et Interactive Zero-Knowledge, IZK. Cet article est une œuvre fondatrice des zk-SNARKs et définit de nombreux concepts qui ont influencé les recherches académiques ultérieures. Par exemple, la définition de la connaissance est "la sortie d'un calcul non faisable", c'est-à-dire que la connaissance doit être une sortie et qu'elle doit être un calcul non faisable, ce qui signifie qu'elle ne peut pas être une fonction simple, mais doit être une fonction complexe. Un calcul non faisable peut généralement être compris comme un problème NP, c'est-à-dire un problème dont la solution peut être vérifiée en temps polynomial, le temps polynomial signifiant que le temps d'exécution de l'algorithme peut être exprimé par une fonction polynomiale de la taille de l'entrée. C'est un critère important pour évaluer l'efficacité et la faisabilité des algorithmes en informatique. Étant donné que le processus de résolution des problèmes NP est complexe, il est donc considéré comme un calcul non faisable ; cependant, son processus de vérification est relativement simple, ce qui le rend très adapté à la vérification des zk-SNARKs.
Un exemple classique de problème NP est le problème du voyageur de commerce, où il s'agit de trouver le chemin le plus court pour visiter une série de villes et revenir au point de départ. Bien qu'il puisse être difficile de trouver le chemin le plus court, il est relativement facile de vérifier si un chemin donné est le plus court. En effet, la vérification de la distance totale d'un chemin spécifique peut être effectuée en temps polynomial.
Dans leur article, Goldwasser et al. ont introduit le concept de "complexité de la connaissance" pour quantifier la quantité de connaissances divulguées par le prouveur au vérificateur dans les systèmes de preuve interactifs. Ils ont également proposé des systèmes de preuve interactifs )Interactive Proof Systems, IPS###, dans lesquels le prouveur (Prover) et le vérificateur (Verifier) interagissent par plusieurs tours pour prouver la véracité d'une déclaration.
En résumé, la définition des zk-SNARKs résumée par Goldwasser et al. est une forme spéciale de preuve interactive, dans laquelle le vérificateur ne reçoit aucune information supplémentaire en dehors de la valeur de vérité de l'énoncé au cours du processus de vérification; et trois caractéristiques fondamentales ont été proposées, y compris :
Complétude : Si la preuve est vraie, un prouveur honnête peut convaincre un vérificateur honnête de ce fait ;
Fiabilité : si le prouveur ne connaît pas le contenu de la déclaration, il ne peut tromper le vérificateur qu'avec une probabilité négligeable;
Propriété de connaissance nulle : À la fin du processus de preuve, le vérificateur ne reçoit que l'information "le prouveur possède cette connaissance", sans obtenir de contenu supplémentaire.
( 2. Exemple de zk-SNARKs
Pour mieux comprendre les zk-SNARKs et leurs propriétés, voici un exemple de vérification du fait qu'un prouveur possède certaines informations privées, cet exemple est divisé en trois phases : configuration, défi et réponse.
Première étape : définir )Setup(
À cette étape, l'objectif du prouveur est de créer une preuve qu'il connaît un certain nombre secret s, mais sans montrer directement s. Soit le nombre secret s;
Choisissez deux grands nombres premiers p et q, puis calculez leur produit n. Soit p et q premiers, calculez le n obtenu.
Calculer v=s^2 mod n, ici, v est envoyé au vérificateur comme une partie de la preuve, mais il n'est pas suffisant pour permettre au vérificateur ou à tout observateur déduire s;
Choisissez un entier aléatoire r, calculez x=r^2 mod n et envoyez-le au vérificateur. Cette valeur x est utilisée pour le processus de vérification ultérieur, mais ne révèle pas non plus s. Soit r un entier aléatoire, calculez x obtenu.
Deuxième étape : défi )Challenge(
Le validateur choisit au hasard un emplacement a) qui peut être 0 ou 1###, puis l'envoie au prouveur. Ce "défi" détermine les étapes que le prouveur doit suivre ensuite.
Troisième étape : réponse (Response)
Selon la valeur a émise par le validateur, le prouveur répond :
Si a=0, le prouveur envoie g=r( où r est un nombre aléatoire qu'il a choisi précédemment ).
Si a=1, le prouveur calcule g=rs mod n et l'envoie. Supposons que le vérificateur envoie le bit aléatoire a, en fonction de la valeur de a, le prouveur calcule g;
Enfin, le validateur vérifie si g^2 mod n est égal à xa^v mod n en fonction de g reçu. Si l'égalité est vérifiée, le validateur accepte cette preuve. Lorsque a=0, le validateur calcule g^2 mod n, le côté droit vérifie xa^v mod n=x; lorsque a=1, le validateur calcule g^2 mod n, le côté droit vérifie xa^v mod n=xv.
Ici, nous voyons que g^2 mod n=xa^v mod n calculé par le vérificateur indique que le prouveur a réussi le processus de vérification sans révéler son chiffre secret s. Ici, puisque a ne peut prendre que 0 ou 1, il n'y a que deux possibilités, la probabilité que le prouveur réussisse la vérification par chance est de 1/2( lorsque a prend 0, soit ). Mais le vérificateur défie ensuite le prouveur k fois, le prouveur change constamment les chiffres pertinents et les soumet au vérificateur, et réussit toujours à passer le processus de vérification, de sorte que la probabilité que le prouveur réussisse la vérification par chance est de (1/2)^k(, tendant ainsi vers 0), prouvant que le prouveur connaît effectivement un chiffre secret s. Cet exemple prouve l'intégrité, la fiabilité et le caractère non révélateur du système de zk-SNARKs.
Deux, zk-SNARKs non interactifs
( 1. Contexte
zk-SNARKs)ZKP( dans le concept traditionnel, il s'agit généralement d'une forme de protocole interactif et en ligne ; par exemple, le protocole Sigma nécessite généralement de trois à cinq tours d'interaction pour compléter l'authentification. Cependant, dans des scénarios tels que les transactions instantanées ou le vote, il n'y a souvent pas d'opportunité pour plusieurs interactions, en particulier dans les applications de la technologie Blockchain, où la capacité de vérification hors ligne devient particulièrement importante.
) 2. Proposition de NIZK
En 1988, Blum, Feldman et Micali ont proposé pour la première fois le concept de preuve non interactive de connaissance nulle (NIZK) (, prouvant qu'il était possible pour le prouveur )Prover### et le vérificateur (Verifier) de compléter le processus d'authentification sans nécessiter de multiples interactions. Cette percée a permis que même