Application et développement de la technologie zk-SNARKs dans le domaine de la Blockchain
Résumé
Cet article présente une revue systématique de près de quarante ans de littérature historique et de recherches récentes sur la technologie des zk-SNARKs (ZKP). Il commence par introduire les concepts de base et le contexte historique des ZKP, puis analyse en profondeur les technologies de ZKP basées sur des circuits, y compris la conception, les applications et les méthodes d'optimisation des modèles tels que zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs et Ligero. Dans le domaine des environnements de calcul, l'article présente ZKVM et ZKEVM, en explorant comment ils améliorent la capacité de traitement des transactions, protègent la vie privée et augmentent l'efficacité de validation. L'article présente également le fonctionnement et les méthodes d'optimisation du Rollup à connaissance nulle en tant que solution d'extension Layer 2, ainsi que les dernières avancées en matière d'accélération matérielle, de solutions hybrides et de ZK EVM dédiés.
Enfin, cet article envisage des 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 sur la Blockchain. En analysant ces technologies et tendances récentes, cet article offre une perspective complète pour comprendre et appliquer les technologies ZKP, montrant leur énorme 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
Introduction
Une, connaissances de base sur les zk-SNARKs
Aperçu
Exemple de zk-SNARKs
Deux, zk-SNARKs non interactifs
Contexte
La 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 des circuits dans les zk-SNARKs
Défauts et défis potentiels
Quatre, modèle zk-SNARKs
Contexte
Modèles d'algorithmes courants
Schéma basé sur le PCP linéaire et le problème du logarithme discret
Solutions basées sur les preuves des gens ordinaires
Preuve vérifiable par probabilité ( PCP ) de zk-SNARKs
Classification basée sur la phase de configuration CPC
Cinq, aperçu et développement de la machine virtuelle zk-SNARKs
Contexte
Classification actuelle de ZKVM
Paradigmes front-end et back-end
Avantages et inconvénients du paradigme ZKVM
VI. Aperçu et développement des zk-SNARKs sur Ethereum Virtual Machine
Contexte
Fonctionnement de ZKEVM
Le processus de mise en œuvre de ZKEVM
Les caractéristiques de ZKEVM
Sept, aperçu et développement des solutions de réseau de deuxième couche zk-SNARKs
Contexte
Mécanisme de fonctionnement des zk-SNARKs 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
La proposition et le développement de ZKML
Développement des technologies d'extension ZKP
Le développement de l'interopérabilité des zk-SNARKs
IX. Conclusion
Introduction
Ces dernières années, le développement des applications Blockchain (DApps) a été rapide, avec de nouvelles applications émergentes chaque jour. Les plateformes Blockchain supportent chaque jour les activités de millions d'utilisateurs, traitant des milliards de transactions. Les données massives 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 des comptes et les soldes des comptes. Étant donné les caractéristiques d'ouverture et de transparence de la Blockchain, ces données stockées sont accessibles à tous, ce qui soulève divers problèmes de sécurité et de confidentialité.
Actuellement, plusieurs techniques de cryptographie peuvent relever ces défis, y compris 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é, contribuant ainsi à protéger la sécurité des soldes de compte et des montants de transaction, mais ne protège pas la sécurité des adresses de compte. 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 de compte, mais n'offre aucune protection pour les soldes de compte et les montants de transaction. Le calcul multipartite sécurisé permet de répartir les tâches de calcul entre plusieurs participants, sans que aucun participant ne connaisse les données des autres, protégeant efficacement la sécurité des soldes de compte et des montants de transaction, mais ne peut pas non plus protéger la sécurité des adresses de compte. De plus, le chiffrement homomorphe, les signatures en anneau et le calcul multipartite sécurisé ne peuvent pas être utilisés pour vérifier dans un environnement Blockchain si le prouveur dispose d'un montant de transaction suffisant sans divulguer le montant de la transaction, l'adresse du compte et le solde du compte.
Les zk-SNARKs sont 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. Ce protocole ne nécessite pas d'infrastructure à clé publique complexe et sa mise en œuvre répétée ne donne pas l'opportunité aux utilisateurs malveillants d'obtenir des informations utiles supplémentaires. Grâce aux zk-SNARKs, le vérificateur peut confirmer si le prouveur dispose d'un montant de transaction suffisant sans divulguer les données de transaction privées. Le processus de vérification comprend la génération d'une preuve contenant le montant de transaction revendiqué par le prouveur, puis cette preuve est transmise au vérificateur, qui effectue des calculs prédéfinis sur la preuve et produit un résultat final, permettant ainsi de conclure s'il accepte la déclaration du prouveur. 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 des zk-SNARKs en fait un acteur clé dans les transactions Blockchain et les applications de cryptomonnaie, notamment en matière de protection de la vie privée et d'évolutivité du réseau, faisant d'eux non seulement un sujet de recherche académique, mais également largement considérés comme l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie des technologies de registre distribué - en particulier Bitcoin. Ils représentent également une voie privilégiée pour les applications industrielles et le capital-risque.
De ce fait, de nombreux projets de réseau basés sur ZKP ont vu le jour, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, les innovations algorithmiques concernant ZKP ne cessent d'émerger, et il a été rapporté qu'un nouvel algorithme est publié presque chaque semaine. De plus, le développement de matériel lié à la technologie ZKP progresse rapidement, y compris des puces spécifiquement optimisées pour ZKP. Par exemple, des projets comme Ingonyama, Irreducible et Cysic ont déjà réalisé des levées de fonds à grande échelle, ces évolutions non seulement démontrent les progrès rapides de la technologie ZKP, mais reflètent également la transition du matériel général vers du matériel spécialisé tel que les GPU, FPGA et ASIC.
Ces progrès montrent que la technologie des zk-SNARKs n'est pas seulement une percée importante dans le domaine de la cryptographie, mais aussi un moteur clé pour réaliser une application plus large de la Blockchain, en particulier en ce qui concerne l'amélioration de la protection de la vie privée et de la capacité de traitement.
Ainsi, nous avons décidé de rassembler systématiquement les connaissances relatives aux 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 sur les ZKP ( classés par pertinence et par nombre de citations ) ; en même temps, nous avons également analysé en détail les informations et les livres blancs des projets leaders dans ce domaine ( classés par leur taille de financement ). Cette collecte et cette analyse de données complètes ont fourni une base solide pour la rédaction de cet article.
Une, zk-SNARKs connaissances de base
1. Vue d'ensemble
En 1985, les chercheurs Goldwasser, Micali et Rackoff ont introduit pour la première fois les zk-SNARKs dans leur article intitulé « The Knowledge Complexity of Interactive Proof-Systems ». Cet article est une œuvre fondatrice sur les zk-SNARKs, définissant de nombreux concepts qui ont influencé la recherche académique ultérieure. Par exemple, la définition de la connaissance est « la sortie d'un calcul non faisable », ce qui signifie que la connaissance doit être une sortie et qu'elle est un calcul non faisable, ce qui implique qu'elle ne peut pas être une fonction simple, mais doit être une fonction complexe. Le calcul non faisable peut généralement être compris comme un problème NP, c'est-à-dire un problème dont la validité de la solution peut être vérifiée en temps polynomial, le temps polynomial désignant le temps d'exécution d'un algorithme qui peut être représenté 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. En raison de la complexité du processus de résolution des problèmes NP, ils sont considérés comme des calculs non faisables ; cependant, leur processus de vérification est relativement simple, ce qui les rend très adaptés à la vérification des zk-SNARKs.
Un exemple classique de problème NP est le problème du voyageur de commerce, qui consiste à 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 distance totale d'un chemin spécifique peut être vérifiée en un temps polynomial.
Goldwasser et al. ont introduit dans leur article le concept de "complexité de connaissance" ( knowledge complexity ), qui quantifie la quantité de connaissance divulguée 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 du 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 véracité de l'énoncé lors du processus de vérification ; et trois caractéristiques fondamentales ont été proposées, notamment :
Complétude ( completeness ) : Si la preuve est vraie, un prouveur honnête peut convaincre un vérificateur honnête de ce fait ;
Fiabilité ( solidité ) : 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 ;
3.zk-SNARKs(zero-knowledge) : À la fin du processus de preuve, le vérificateur ne reçoit que l'information "le prouveur possède cette connaissance", sans obtenir aucun contenu supplémentaire.
(# 2.zk-SNARKs exemple
Pour mieux comprendre les zk-SNARKs et leurs propriétés, voici un exemple de vérification si le prouveur possède certaines informations privées, cet exemple est divisé en trois phases : configuration, défi et réponse.
Première étape : configurer )Setup(
À cette étape, l'objectif du prouveur est de créer une preuve qu'il connaît un certain nombre secret s, mais sans afficher directement s. Soit le nombre secret s=5;
Choisissez deux grands nombres premiers p et q, puis calculez leur produit n. Soit le nombre premier p=11, q=13, le produit obtenu est n=143;
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 que le vérificateur ou tout observateur puisse déduire s. v=5^2 mod 143=25;
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 s. Supposons que l'entier aléatoire r=7, alors x=49.
Deuxième étape : défi )Challenge(
Le validateurs choisissent aléatoirement un bit a) qui peut être 0 ou 1###, puis l'envoient au prouveur. Ce "défi" détermine les étapes suivantes que le prouveur doit suivre.
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 le 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 bit aléatoire envoyé par le vérificateur soit a=1, selon la valeur de a, le prouveur calcule g=75 mod 143=35;
Enfin, le validateur vérifie si x est égal à g^2/v^a 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, la vérification de droite x=49 ; lorsque a=1, le validateur calcule g^2/v mod n=35^2/25 mod 143=49, la vérification de droite x=49.
Ici, nous voyons que le x calculé par le validateur indique que le prouveur a réussi à passer le processus de validation, tout en ne révélant pas son chiffre secret s. Ici, comme a ne peut prendre que 0 ou 1, il n'y a que deux possibilités, la probabilité que le prouveur passe la validation par chance est (1/2)( lorsque a est 0. Mais le validateur défie ensuite le prouveur n fois, le prouveur change constamment les chiffres pertinents et les soumet au validateur, réussissant toujours à passer le processus de validation. Ainsi, la probabilité que le prouveur passe la validation par chance )1/2(^n) tend effectivement vers 0(, prouvant que le prouveur connaît un chiffre secret s. Cet exemple prouve l'intégrité, la fiabilité et la non-divulgation du système de preuve à connaissance nulle.
) Deux, zk-SNARKs non interactifs
(# 1. Contexte
zk-SNARKs)ZKP( est généralement considéré comme une forme de protocole interactif et en ligne dans les concepts traditionnels ; 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 l'application de la technologie Blockchain, où la fonctionnalité de vérification hors ligne est 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 est possible sans nécessiter de plusieurs interactions.
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.
8 J'aime
Récompense
8
2
Partager
Commentaire
0/400
GweiTooHigh
· Il y a 20h
C'est-à-dire que le code chante et le portefeuille copie.
Voir l'originalRépondre0
GasSavingMaster
· Il y a 20h
zk est si populaire parce qu'il ne peut jamais battre ce circuit.
L'application de la technologie zk-SNARKs dans le Blockchain et les tendances de développement futur
Application et développement de la technologie zk-SNARKs dans le domaine de la Blockchain
Résumé
Cet article présente une revue systématique de près de quarante ans de littérature historique et de recherches récentes sur la technologie des zk-SNARKs (ZKP). Il commence par introduire les concepts de base et le contexte historique des ZKP, puis analyse en profondeur les technologies de ZKP basées sur des circuits, y compris la conception, les applications et les méthodes d'optimisation des modèles tels que zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs et Ligero. Dans le domaine des environnements de calcul, l'article présente ZKVM et ZKEVM, en explorant comment ils améliorent la capacité de traitement des transactions, protègent la vie privée et augmentent l'efficacité de validation. L'article présente également le fonctionnement et les méthodes d'optimisation du Rollup à connaissance nulle en tant que solution d'extension Layer 2, ainsi que les dernières avancées en matière d'accélération matérielle, de solutions hybrides et de ZK EVM dédiés.
Enfin, cet article envisage des 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 sur la Blockchain. En analysant ces technologies et tendances récentes, cet article offre une perspective complète pour comprendre et appliquer les technologies ZKP, montrant leur énorme 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
Introduction
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 zk-SNARKs
Cinq, aperçu et développement de la machine virtuelle zk-SNARKs
VI. Aperçu et développement des zk-SNARKs sur Ethereum Virtual Machine
Sept, aperçu et développement des solutions de réseau de deuxième couche zk-SNARKs
Huit, les directions futures du zk-SNARKs.
IX. Conclusion
Introduction
Ces dernières années, le développement des applications Blockchain (DApps) a été rapide, avec de nouvelles applications émergentes chaque jour. Les plateformes Blockchain supportent chaque jour les activités de millions d'utilisateurs, traitant des milliards de transactions. Les données massives 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 des comptes et les soldes des comptes. Étant donné les caractéristiques d'ouverture et de transparence de la Blockchain, ces données stockées sont accessibles à tous, ce qui soulève divers problèmes de sécurité et de confidentialité.
Actuellement, plusieurs techniques de cryptographie peuvent relever ces défis, y compris 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é, contribuant ainsi à protéger la sécurité des soldes de compte et des montants de transaction, mais ne protège pas la sécurité des adresses de compte. 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 de compte, mais n'offre aucune protection pour les soldes de compte et les montants de transaction. Le calcul multipartite sécurisé permet de répartir les tâches de calcul entre plusieurs participants, sans que aucun participant ne connaisse les données des autres, protégeant efficacement la sécurité des soldes de compte et des montants de transaction, mais ne peut pas non plus protéger la sécurité des adresses de compte. De plus, le chiffrement homomorphe, les signatures en anneau et le calcul multipartite sécurisé ne peuvent pas être utilisés pour vérifier dans un environnement Blockchain si le prouveur dispose d'un montant de transaction suffisant sans divulguer le montant de la transaction, l'adresse du compte et le solde du compte.
Les zk-SNARKs sont 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. Ce protocole ne nécessite pas d'infrastructure à clé publique complexe et sa mise en œuvre répétée ne donne pas l'opportunité aux utilisateurs malveillants d'obtenir des informations utiles supplémentaires. Grâce aux zk-SNARKs, le vérificateur peut confirmer si le prouveur dispose d'un montant de transaction suffisant sans divulguer les données de transaction privées. Le processus de vérification comprend la génération d'une preuve contenant le montant de transaction revendiqué par le prouveur, puis cette preuve est transmise au vérificateur, qui effectue des calculs prédéfinis sur la preuve et produit un résultat final, permettant ainsi de conclure s'il accepte la déclaration du prouveur. 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 des zk-SNARKs en fait un acteur clé dans les transactions Blockchain et les applications de cryptomonnaie, notamment en matière de protection de la vie privée et d'évolutivité du réseau, faisant d'eux non seulement un sujet de recherche académique, mais également largement considérés comme l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie des technologies de registre distribué - en particulier Bitcoin. Ils représentent également une voie privilégiée pour les applications industrielles et le capital-risque.
De ce fait, de nombreux projets de réseau basés sur ZKP ont vu le jour, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, les innovations algorithmiques concernant ZKP ne cessent d'émerger, et il a été rapporté qu'un nouvel algorithme est publié presque chaque semaine. De plus, le développement de matériel lié à la technologie ZKP progresse rapidement, y compris des puces spécifiquement optimisées pour ZKP. Par exemple, des projets comme Ingonyama, Irreducible et Cysic ont déjà réalisé des levées de fonds à grande échelle, ces évolutions non seulement démontrent les progrès rapides de la technologie ZKP, mais reflètent également la transition du matériel général vers du matériel spécialisé tel que les GPU, FPGA et ASIC.
Ces progrès montrent que la technologie des zk-SNARKs n'est pas seulement une percée importante dans le domaine de la cryptographie, mais aussi un moteur clé pour réaliser une application plus large de la Blockchain, en particulier en ce qui concerne l'amélioration de la protection de la vie privée et de la capacité de traitement.
Ainsi, nous avons décidé de rassembler systématiquement les connaissances relatives aux 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 sur les ZKP ( classés par pertinence et par nombre de citations ) ; en même temps, nous avons également analysé en détail les informations et les livres blancs des projets leaders dans ce domaine ( classés par leur taille de financement ). Cette collecte et cette analyse de données complètes ont fourni une base solide pour la rédaction de cet article.
Une, zk-SNARKs connaissances de base
1. Vue d'ensemble
En 1985, les chercheurs Goldwasser, Micali et Rackoff ont introduit pour la première fois les zk-SNARKs dans leur article intitulé « The Knowledge Complexity of Interactive Proof-Systems ». Cet article est une œuvre fondatrice sur les zk-SNARKs, définissant de nombreux concepts qui ont influencé la recherche académique ultérieure. Par exemple, la définition de la connaissance est « la sortie d'un calcul non faisable », ce qui signifie que la connaissance doit être une sortie et qu'elle est un calcul non faisable, ce qui implique qu'elle ne peut pas être une fonction simple, mais doit être une fonction complexe. Le calcul non faisable peut généralement être compris comme un problème NP, c'est-à-dire un problème dont la validité de la solution peut être vérifiée en temps polynomial, le temps polynomial désignant le temps d'exécution d'un algorithme qui peut être représenté 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. En raison de la complexité du processus de résolution des problèmes NP, ils sont considérés comme des calculs non faisables ; cependant, leur processus de vérification est relativement simple, ce qui les rend très adaptés à la vérification des zk-SNARKs.
Un exemple classique de problème NP est le problème du voyageur de commerce, qui consiste à 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 distance totale d'un chemin spécifique peut être vérifiée en un temps polynomial.
Goldwasser et al. ont introduit dans leur article le concept de "complexité de connaissance" ( knowledge complexity ), qui quantifie la quantité de connaissance divulguée 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 du 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 véracité de l'énoncé lors du processus de vérification ; et trois caractéristiques fondamentales ont été proposées, notamment :
Complétude ( completeness ) : Si la preuve est vraie, un prouveur honnête peut convaincre un vérificateur honnête de ce fait ;
Fiabilité ( solidité ) : 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 ;
3.zk-SNARKs(zero-knowledge) : À la fin du processus de preuve, le vérificateur ne reçoit que l'information "le prouveur possède cette connaissance", sans obtenir aucun contenu supplémentaire.
(# 2.zk-SNARKs exemple
Pour mieux comprendre les zk-SNARKs et leurs propriétés, voici un exemple de vérification si le prouveur possède certaines informations privées, cet exemple est divisé en trois phases : configuration, défi et réponse.
Première étape : configurer )Setup(
À cette étape, l'objectif du prouveur est de créer une preuve qu'il connaît un certain nombre secret s, mais sans afficher directement s. Soit le nombre secret s=5;
Choisissez deux grands nombres premiers p et q, puis calculez leur produit n. Soit le nombre premier p=11, q=13, le produit obtenu est n=143;
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 que le vérificateur ou tout observateur puisse déduire s. v=5^2 mod 143=25;
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 s. Supposons que l'entier aléatoire r=7, alors x=49.
Deuxième étape : défi )Challenge(
Le validateurs choisissent aléatoirement un bit a) qui peut être 0 ou 1###, puis l'envoient au prouveur. Ce "défi" détermine les étapes suivantes que le prouveur doit suivre.
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 le 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 bit aléatoire envoyé par le vérificateur soit a=1, selon la valeur de a, le prouveur calcule g=75 mod 143=35;
Enfin, le validateur vérifie si x est égal à g^2/v^a 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, la vérification de droite x=49 ; lorsque a=1, le validateur calcule g^2/v mod n=35^2/25 mod 143=49, la vérification de droite x=49.
Ici, nous voyons que le x calculé par le validateur indique que le prouveur a réussi à passer le processus de validation, tout en ne révélant pas son chiffre secret s. Ici, comme a ne peut prendre que 0 ou 1, il n'y a que deux possibilités, la probabilité que le prouveur passe la validation par chance est (1/2)( lorsque a est 0. Mais le validateur défie ensuite le prouveur n fois, le prouveur change constamment les chiffres pertinents et les soumet au validateur, réussissant toujours à passer le processus de validation. Ainsi, la probabilité que le prouveur passe la validation par chance )1/2(^n) tend effectivement vers 0(, prouvant que le prouveur connaît un chiffre secret s. Cet exemple prouve l'intégrité, la fiabilité et la non-divulgation du système de preuve à connaissance nulle.
) Deux, zk-SNARKs non interactifs
(# 1. Contexte
zk-SNARKs)ZKP( est généralement considéré comme une forme de protocole interactif et en ligne dans les concepts traditionnels ; 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 l'application de la technologie Blockchain, où la fonctionnalité de vérification hors ligne est 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 est possible sans nécessiter de plusieurs interactions.