Définition
zk-SNARK : définition
Un zk-SNARK est un type de preuve à divulgation nulle de connaissance qui est très courte et rapide à vérifier, sans échange entre les parties. Beaucoup de constructions exigent une configuration initiale de confiance, unique ou universelle, mais pas toutes.
Thème : Confidentialité
L'acronyme signifie Zero-Knowledge Succinct Non-interactive Argument of Knowledge. Succinct signifie que la preuve est petite et vérifiable rapidement, quelle que soit la complexité du calcul prouvé. Non-interactive signifie que le prouveur produit une preuve en une seule fois, sans dialogue avec le vérificateur. Argument of Knowledge signifie que le prouveur démontre qu'il connaît une information, par exemple une clé ou des données, sans la révéler si la propriété zero-knowledge est utilisée.
Les zk-SNARK ont été popularisés par Zcash pour les transactions confidentielles, puis largement adoptés par les ZK-rollups pour prouver la validité de lots de transactions. Des systèmes comme Groth16 demandent une cérémonie de configuration propre à chaque circuit, d'autres comme PLONK utilisent une configuration universelle réutilisable. Leur sécurité repose sur des hypothèses mathématiques, notamment liées aux courbes elliptiques, qui ne sont pas considérées comme résistantes aux futurs ordinateurs quantiques.
Un exemple concret
Imaginons qu'Alice veuille prouver à un contrat qu'elle fait partie d'une liste de membres autorisés, sans révéler laquelle de ses adresses y figure. Elle génère un zk-SNARK sur son ordinateur. Le contrat vérifie cette preuve de quelques centaines d'octets en une seule opération et lui accorde l'accès sans connaître son identité.
Les risques à connaître
Si les secrets générés lors d'une configuration de confiance n'ont pas été détruits, quelqu'un pourrait fabriquer de fausses preuves. Une erreur dans le circuit peut aussi rendre valide une preuve incorrecte. La génération de preuves est coûteuse en calcul.
Questions fréquentes sur zk-SNARK
Qu'est-ce qu'une trusted setup dans un zk-SNARK ?
C'est une cérémonie qui génère les paramètres publics du système. Si les secrets temporaires utilisés ne sont pas détruits par au moins un participant, de fausses preuves deviennent possibles.
Tous les zk-SNARK rendent-ils les données confidentielles ?
Non. La propriété zero-knowledge est optionnelle dans la pratique ; de nombreux rollups utilisent des SNARK surtout pour leur compacité, avec des données publiques.