zk-SNARKs : arguments succincts non interactifs
Comprenez la configuration Groth16, la génération des preuves et leur vérification.
zk-SNARKs : arguments succincts non interactifs est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.
Qu'est-ce qu'un zk-SNARK ?
Un zk-SNARK (Zero-Knowledge Succinct Non-interactive ARgument of Knowledge) est une preuve qui : (1) est à divulgation nulle de connaissance, (2) est concise (preuve minuscule, vérification rapide quelle que soit la taille du calcul), (3) est non interactive (une seule chaîne de preuve).
Motivation
Les protocoles Sigma conviennent aux affirmations simples (connaissance d'un logarithme discret). Pour des calculs complexes — « J'ai exécuté correctement cette fonction sur des données d'entrée privées » — il faut un système de preuve généraliste. Les SNARK prouvent des calculs quelconques en un temps de vérification O(1).
Circuits arithmétiques
Le calcul est d'abord exprimé sous la forme d'un circuit arithmétique : un graphe orienté acyclique composé de portes d'addition et de multiplication sur un corps fini. Exemple : prouver que vous connaissez x tel que x^3 + x + 5 = 35 sans révéler x=3. Le circuit comporte environ 5 portes.
R1CS : système de contraintes de rang 1
Un circuit arithmétique est converti en R1CS : un ensemble de contraintes (A*z)*(B*z) = C*z, où z est un vecteur contenant les valeurs de tous les fils. Chaque porte de multiplication devient une contrainte. Le prouveur doit trouver un z qui satisfait toutes les contraintes sans révéler les fils privés.
QAP : programmes arithmétiques quadratiques
R1CS est converti en QAP : des polynômes A(x), B(x), C(x) tels que A(x)*B(x)-C(x) est divisible par un polynôme cible t(x) si et seulement si les contraintes sont satisfaites. Le prouveur montre qu'il connaît un quotient polynomial H(x) sans révéler le témoin.
Preuve Groth16
Groth16 (2016) est le SNARK généraliste le plus efficace. Après une configuration de confiance (génération du CRS), le prouveur produit une preuve composée de 3 éléments de groupe (environ 192 octets pour BLS12-381). Vérification : 3 opérations d'appariement. La preuve a une taille constante, quelle que soit la taille du circuit.
Cérémonie de configuration de confiance
Groth16 nécessite une configuration de confiance pour chaque circuit : générer un secret toxique (un secret aléatoire), calculer la chaîne de référence commune, puis détruire le secret toxique. Si ce secret subsiste, un adversaire peut forger des preuves. Les cérémonies multipartites (Powers of Tau) répartissent la confiance.
PLONK : configuration universelle
PLONK (2019) utilise une configuration de confiance universelle : une seule cérémonie fonctionne pour tous les circuits jusqu'à une limite de taille donnée. Aucune configuration propre à chaque circuit n'est nécessaire. Compromis : les preuves sont légèrement plus grandes que celles de Groth16. Utilisé dans les implémentations de ZK-EVM (Polygon Hermez, zkSync Era).
STARK ou SNARK
Les STARK (Scalable Transparent ARguments of Knowledge) ne nécessitent aucune configuration de confiance et utilisent des fonctions de hachage (sûres après l'arrivée des ordinateurs quantiques). Compromis : des preuves plus grandes (des dizaines de Ko contre 200 octets). Utilisés dans StarkWare/StarkNet et dans le langage Cairo. Les SNARK sont plus petits ; les STARK résistent aux attaques quantiques.
Cryptographie fondée sur les appariements
Groth16 utilise des appariements bilinéaires : e: G1 × G2 → GT, où e(a*P, b*Q) = e(P,Q)^{ab}. Cela permet de vérifier des identités polynomiales dans l'exposant sans révéler les valeurs. La courbe BLS12-381 est optimisée pour des appariements Groth16 efficaces.
Coût de génération d'une preuve
Temps de génération d'une preuve Groth16 pour un circuit de 10^6 portes : environ 10 secondes sur un CPU moderne. Vérification : environ 1 ms. Cette asymétrie est intentionnelle : le prouveur (qui a effectué le calcul intensif) réalise le travail ; le vérificateur (le nœud de la chaîne de blocs) n'effectue presque aucun travail.
Vérification rapide
Quel est le principal inconvénient de Groth16 par rapport à PLONK ?
Récapitulatif
Les zk-SNARK prouvent des calculs quelconques au moyen de preuves de taille constante. Chaîne de traitement : calcul → circuit arithmétique → R1CS → QAP → preuve SNARK. Groth16 est le plus efficace (configuration de confiance pour chaque circuit) ; PLONK utilise une configuration universelle. Ensuite : applications des ZKP dans la chaîne de blocs.
Questions Fréquemment Posées
La leçon « zk-SNARKs : arguments succincts non interactifs » est-elle gratuite ?
Oui — le texte complet de « zk-SNARKs : arguments succincts non interactifs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « zk-SNARKs : arguments succincts non interactifs » ?
Comprenez la configuration Groth16, la génération des preuves et leur vérification. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cryptology Academy ?
Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « zk-SNARKs : arguments succincts non interactifs » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?
Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Intuition des ZKP : la grotte d’Ali Baba
- Protocoles Sigma et identification de Schnorr
- zk-SNARKs : arguments succincts non interactifs
- Applications des ZKP : ZK Rollups et cryptomonnaies confidentielles