Un protocole à divulgation nulle est une méthode par laquelle une partie (le prouveur) peut prouver à une autre partie (le vérificateur) que quelque chose est vrai, sans révéler aucune information autre que le fait que cette déclaration spécifique est vraie.
Les preuves de zéro connaissance ont progressé au fil des ans et sont maintenant utilisées dans plusieurs applications du monde réel.
Mais il y a des problèmes avec cette approche, principalement le manque de confidentialité. Les informations personnellement identifiables (PII) partagées avec des services tiers sont stockées dans des bases de données centrales, qui sont vulnérables aux piratages. Avec le vol d'identité devenant un problème critique, des appels sont lancés en faveur de moyens plus protecteurs de la vie privée pour partager des informations sensibles.
Les preuves de zéro-connaissance résolvent ce problème en éliminant le besoin de révéler des informations pour prouver la validité des revendications. Le protocole de zéro-connaissance utilise l'énoncé (appelé un 'témoin') comme entrée pour générer une preuve succincte de sa validité. Cette preuve fournit des garanties solides qu'un énoncé est vrai sans exposer les informations utilisées pour le créer.
Revenons à notre exemple précédent, la seule preuve dont vous avez besoin pour prouver votre revendication de citoyenneté est une preuve de connaissance nulle. Le vérificateur n'a qu'à vérifier si certaines propriétés de la preuve sont vraies pour être convaincu que l'affirmation sous-jacente est également vraie.
Un protocole de zéro-connaissance doit satisfaire les critères suivants :
Complétude: Si l'entrée est valide, le protocole de preuve à divulgation nulle renvoie toujours 'true'. Ainsi, si l'énoncé sous-jacent est vrai et que le prouveur et le vérificateur agissent honnêtement, la preuve peut être acceptée.- Solidité : Si l'entrée est invalide, il est théoriquement impossible de tromper le protocole de preuve de zéro-connaissance pour renvoyer 'vrai'. Ainsi, un prouveur menteur ne peut pas tromper un vérificateur honnête en lui faisant croire qu'une déclaration invalide est valide (sauf avec une marge de probabilité minime).- Zéro-connaissance : Le vérificateur n'apprend rien sur une déclaration au-delà de sa validité ou de sa fausseté (il a "zéro connaissance" de la déclaration). Cette exigence empêche également le vérificateur de déduire l'entrée d'origine (le contenu de la déclaration) de la preuve.Dans sa forme de base, une preuve de zero-knowledge est composée de trois éléments : témoin, défi et réponse.
Témoin : Avec une preuve de connaissance nulle, le prouveur souhaite prouver la connaissance de certaines informations cachées. Les informations secrètes sont le "témoin" de la preuve, et la connaissance présumée du témoin par le prouveur établit un ensemble de questions qui ne peuvent être répondues que par une partie ayant connaissance des informations. Ainsi, le prouveur commence le processus de preuve en choisissant aléatoirement une question, en calculant la réponse, et en l'envoyant au vérificateur.- Défi : Le vérificateur choisit au hasard une autre question de l'ensemble et demande au prouveur d'y répondre.- Réponse: Le prouveur accepte la question, calcule la réponse et la renvoie au vérificateur. La réponse du prouveur permet au vérificateur de vérifier si ce dernier a réellement accès au témoin. Pour s'assurer que le prouveur ne devine pas à l'aveuglette et n'obtient pas les bonnes réponses par hasard, le vérificateur pose plus de questions à poser. En répétant cette interaction de nombreuses fois, la possibilité pour le prouveur de simuler une connaissance du témoin diminue considérablement jusqu'à ce que le vérificateur soit satisfait.Ce qui précède décrit la structure d'une 'preuve de connaissance zéro interactive'. Les premiers protocoles de connaissance zéro utilisaient une preuve interactive, où vérifier la validité d'une déclaration nécessitait une communication aller-retour entre les prouveurs et les vérificateurs.
Un bon exemple qui illustre comment fonctionnent les preuves interactives est le célèbre Jean-Jacques Quisquater.Histoire de la caverne d'Ali Baba
. Dans l'histoire, Peggy (le prover) veut prouver à Victor (le vérificateur) qu'elle connaît la phrase secrète pour ouvrir une porte magique sans révéler la phrase.
Pour résoudre ce problème, Manuel Blum, Paul Feldman et Silvio Micali ont proposé le premier preuves de connaissance nulle non interactives
(s'ouvre dans un nouvel onglet)
où le prouveur et le vérificateur ont une clé partagée. Cela permet au prouveur de démontrer sa connaissance de certaines informations (c'est-à-dire, le témoin) sans fournir les informations elles-mêmes.
Contrairement aux preuves interactives, les preuves non interactives ne nécessitent qu'un seul tour de communication entre les participants (le prouveur et le vérificateur). Le prouveur transmet les informations secrètes à un algorithme spécial pour calculer une preuve de zéro-connaissance. Cette preuve est envoyée au vérificateur, qui vérifie que le prouveur connaît les informations secrètes à l'aide d'un autre algorithme.
La preuve non interactive réduit la communication entre le prouveur et le vérificateur, rendant les preuves ZK plus efficaces. De plus, une fois qu'une preuve est générée, elle est disponible pour toute autre personne (avec accès à la clé partagée et à l'algorithme de vérification) pour vérification.
Les preuves non interactives ont représenté une avancée majeure pour la technologie de la connaissance nulle et ont stimulé le développement des systèmes de preuve utilisés aujourd'hui. Nous discutons ci-dessous de ces types de preuves :
(s'ouvre dans un nouvel onglet)
est un moyen de réduire les risques liés à la génération de paramètres publics. Plusieurs parties participent à un cérémonie de configuration de confiance
(s'ouvre dans un nouvel onglet)
, où chaque personne contribue à des valeurs aléatoires pour générer le CRS. Tant qu'une partie honnête détruit sa part d'entropie, le protocole ZK-SNARK conserve la validité computationnelle.
Les installations de confiance nécessitent que les utilisateurs fassent confiance aux participants à la génération de paramètres. Cependant, le développement des ZK-STARKs a permis de mettre en place des protocoles de preuve qui fonctionnent avec une configuration non fiable.
Les cryptomonnaies ont été conçues pour offrir aux utilisateurs un moyen de mener des transactions privées de pair à pair. Mais la plupart des transactions de cryptomonnaie sont ouvertement visibles sur les blockchains publiques. Les identités des utilisateurs sont souvent pseudonymes et peuvent être intentionnellement liées à des identités du monde réel (par exemple, en incluant des adresses ETH sur les profils Twitter ou GitHub) ou peuvent être associées à des identités du monde réel en utilisant des analyses de données de base sur et hors chaîne.
Il existe des "privacy coins" spécifiques conçues pour des transactions complètement anonymes. Les blockchains axées sur la confidentialité, telles que Zcash et Monero, protègent les détails des transactions, y compris les adresses de l'expéditeur/du destinataire, le type d'actif, la quantité et le calendrier des transactions.
En intégrant la technologie du zéro connaissance dans le protocole, les réseaux blockchain axés sur la confidentialité permettent aux nœuds de valider les transactions sans avoir besoin d'accéder aux données de transaction.
Les preuves de connaissance nulle sont également appliquées à l'anonymisation des transactions sur les blockchains publiques. Un exemple est Tornado Cash, un service décentralisé et non dépositaire qui permet aux utilisateurs d'effectuer des transactions privées sur Ethereum. Tornado Cash utilise des preuves de connaissance nulle pour obscurcir les détails des transactions et garantir la confidentialité financière. Malheureusement, parce qu'il s'agit d'outils de confidentialité "opt-in", ils sont associés à des activités illicites. Pour surmonter cela, la confidentialité doit finalement devenir la norme sur les blockchains publiques.
Les preuves de connaissance nulle sont particulièrement utiles dans le contexte de identité décentraliséeL'identité décentralisée (également décrite comme une 'identité souveraine') donne à l'individu la capacité de contrôler l'accès aux identifiants personnels. Prouver votre citoyenneté sans révéler vos détails d'identifiant fiscal ou de passeport est un bon exemple de la manière dont la technologie du savoir zéro permet l'identité décentralisée.
Les preuves de zéro connaissance, cependant, peuvent simplifier l'authentification pour les plateformes et les utilisateurs. Une fois qu'une preuve de ZK a été générée en utilisant des entrées publiques (par exemple, des données attestant de l'appartenance de l'utilisateur à la plateforme) et des entrées privées (par exemple, les détails de l'utilisateur), l'utilisateur peut simplement la présenter pour authentifier son identité lorsqu'il a besoin d'accéder au service. Cela améliore l'expérience des utilisateurs et libère les organisations de la nécessité de stocker d'énormes quantités d'informations utilisateur.
La computation vérifiable est essentielle pour améliorer les vitesses de traitement sur les blockchains sans compromettre la sécurité. Comprendre cela nécessite de connaître les différences dans les solutions proposées pour mettre à l'échelle Ethereum.
Solutions de mise à l'échelle sur chaîne, comme le sharding, nécessitent une modification approfondie de la couche de base de la blockchain. Cependant, cette approche est très complexe et des erreurs dans la mise en œuvre peuvent compromettre le modèle de sécurité d'Ethereum.
Solutions de mise à l'échelle hors chaînene nécessitent pas de refonte du protocole de base d'Ethereum. Au lieu de cela, ils reposent sur un modèle de calcul externalisé pour améliorer le débit sur la couche de base d'Ethereum.
Voici comment cela fonctionne en pratique :
La chaîne a besoin d'un moyen de valider les transactions hors chaîne sans les ré-exécuter, sinon la valeur de l'exécution hors chaîne est perdue.
C'est là que la computation vérifiable entre en jeu. Lorsqu'un nœud exécute une transaction en dehors d'Ethereum, il soumet une preuve de connaissance nulle pour prouver la justesse de l'exécution hors chaîne. Cette preuve (appelée
garantit que la preuve de validité) d'une transaction est valide, permettant à Ethereum d'appliquer le résultat à son état—sans attendre que quelqu'un le conteste.
Rouleaux à connaissance nulleetvalidiumssont deux solutions de mise à l'échelle hors chaîne qui utilisent des preuves de validité pour offrir une scalabilité sécurisée. Ces protocoles exécutent des milliers de transactions hors chaîne et soumettent des preuves pour vérification sur Ethereum. Ces résultats peuvent être appliqués immédiatement une fois la preuve vérifiée, permettant à Ethereum de traiter plus de transactions sans augmenter le calcul sur la couche de base.
Défini comme "coordonner pour limiter la concurrence ouverte en trompant, fraudant et trompant les autres", la collusion peut prendre la forme d'un acteur malveillant influençant le vote en offrant des pots-de-vin. Par exemple, Alice pourrait recevoir un pot-de-vin de Bob pour voter pour l'option B sur un bulletin, même si elle préfère l'option A.
La corruption et la collusion limitent l'efficacité de tout processus utilisant le vote comme mécanisme de signalisation (en particulier lorsque les utilisateurs peuvent prouver comment ils ont voté). Cela peut avoir des conséquences significatives, en particulier lorsque les votes sont responsables de l'allocation de ressources rares.
Par exemple, mécanismes de financement quadratique
reposez-vous sur des dons pour mesurer la préférence pour certaines options parmi différents projets de biens publics. Chaque don compte comme un "vote" pour un projet spécifique, les projets qui reçoivent plus de votes recevant plus de fonds du pool de correspondance.
L'utilisation du vote sur chaîne rend le financement quadratique susceptible à la collusion : les transactions blockchain sont publiques, donc les corrupteurs peuvent inspecter l'activité sur chaîne d'un corrompu pour voir comment il a "voté". Ainsi, le financement quadratique cesse d'être un moyen efficace d'allouer des fonds en fonction des préférences agrégées de la communauté.
Heureusement, de nouvelles solutions telles que MACI (Minimum Anti-Collusion Infrastructure) utilisent des preuves de connaissance nulle pour rendre les votes sur chaîne (par exemple, les mécanismes de financement quadratique) résistants à la corruption et à la collusion. MACI est un ensemble de contrats intelligents et de scripts qui permettent à un administrateur central (appelé un “coordinateur”) d'agréger les votes et de calculer les résultats sans révéler les détails sur la manière dont chaque individu a voté. Néanmoins, il est toujours possible de vérifier que les votes ont été correctement comptés, ou de confirmer qu'un individu particulier a participé au tour de vote.
Dans MACI, des preuves de connaissance nulle sont utilisées pour garantir la correction du calcul en rendant impossible pour le coordinateur de traiter incorrectement les votes et de totaliser les résultats. Cela est obtenu en exigeant que le coordinateur génère des preuves de ZK-SNARK vérifiant que a) tous les messages ont été traités correctement b) le résultat final correspond à la somme de tous les votes valides.
Ainsi, même sans partager un décompte des votes par utilisateur (comme c'est généralement le cas), MACI garantit l'intégrité des résultats calculés lors du processus de décompte. Cette fonctionnalité est utile pour réduire l'efficacité des schémas de collusion de base. Nous pouvons explorer cette possibilité en utilisant l'exemple précédent de Bob soudoyant Alice pour voter pour une option :
Mais dans les cas où le coordinateur reste honnête, MACI représente un outil puissant pour garantir la sanctité du vote on-chain. Cela explique sa popularité parmi les applications de financement quadratique (par exemple,clr.fund
(s'ouvre dans un nouvel onglet)
) qui reposent fortement sur l'intégrité des choix de vote de chaque individu.
.
Mais il n'y a vraiment aucun moyen pour les utilisateurs d'évaluer l'honnêteté des participants et les utilisateurs doivent prendre les développeurs au mot. Les ZK-STARKs sont exempts d'hypothèses de confiance car la randomité utilisée pour générer la chaîne est publiquement vérifiable. Pendant ce temps, les chercheurs travaillent sur des configurations non fiables pour les ZK-SNARKs afin d'augmenter la sécurité des mécanismes de preuve.
ECDSA) pour le cryptage. Bien que l'algorithme ECDSA soit sécurisé pour l'instant, le développement d'ordinateurs quantiques pourrait compromettre son modèle de sécurité à l'avenir.
ZK-STARK est considéré comme immunisé contre la menace de l'informatique quantique, car il utilise des hachages résistants aux collisions pour le chiffrement. Contrairement aux appariements de clés publique-privée utilisés dans la cryptographie à courbes elliptiques, le hachage résistant aux collisions est plus difficile à casser pour les algorithmes d'informatique quantique.





