Groth16
Groth16 est l'un des SNARKs les plus utilisés (2016, Jens Groth). Vérification très rapide mais setup de confiance requis. Standard de Zcash et plusieurs ZK-rollups.
Définition et origine
Groth16 est un schéma de preuve à divulgation nulle de connaissance (zero-knowledge proof) publié en 2016 par le cryptographe danois Jens Groth. Il appartient à la famille des SNARKs (Succinct Non-interactive ARguments of Knowledge) et reste, dix ans après sa publication, l'un des schémas les plus compacts et efficaces à vérifier.
Caractéristiques techniques
| Propriété | Valeur typique | |-----------|---------------| | Taille de la preuve | ~200 octets (3 éléments de courbe) | | Temps de vérification | ~5-10 ms | | Temps de génération | Polynomial dans la taille du circuit | | Hypothèses cryptographiques | Bilinear pairings, courbes BN254/BLS12-381 |
Cette compacité est inégalée : un Groth16 tient dans un tweet, là où un STARK fait plusieurs Mo.
Le setup de confiance (trusted setup)
Le talon d'Achille de Groth16 : avant utilisation, il faut générer des paramètres publics à partir d'un secret. Si le secret est conservé, n'importe qui peut forger de fausses preuves indétectables. Pour résoudre cela :
- Le setup est exécuté en cérémonie multipartite (MPC).
- Tant qu'un seul participant détruit honnêtement sa part, le secret global est inaccessible.
- Zcash a réalisé deux cérémonies historiques (2016, 2018) impliquant jusqu'à 90 participants mondiaux.
Pire : ce setup est spécifique à chaque circuit. Changer le programme prouvé impose une nouvelle cérémonie.
Usage dans l'écosystème
- Zcash (Sapling) : preuves de transactions confidentielles.
- Tornado Cash (Ethereum) : mixeur de fonds.
- ZK-rollups historiques : Loopring, certaines versions de zkSync.
- Recherche Bitcoin : utilisé dans des prototypes de sidechains et de coin-mixing.
Concurrents
Plusieurs SNARKs sans trusted setup ou avec setup universel ont émergé depuis :
- PLONK (2019) : setup universel partagé entre circuits.
- Halo2 : zéro trusted setup, utilisé par Zcash depuis Orchard.
- STARKs : pas de trusted setup, mais preuves plus volumineuses.
À retenir
Groth16 reste la référence en compacité et vitesse de vérification, mais son setup de confiance le rend impropre aux protocoles voulant la transparence totale. C'est un compromis classique : performance vs hypothèses cryptographiques.
Termes lies
- SNARKUn SNARK (Succinct Non-Interactive Argument of Knowledge) est une ZKP courte et vérifiable rapidement. Variantes : Groth16, PLONK, Halo. Utilisée par Citrea, ZeroSync.
- ZKP (Zero-Knowledge Proof)Une ZKP permet de prouver une affirmation sans révéler la donnée sous-jacente. SNARK et STARK en sont les variantes. Utilisée par Citrea, ZeroSync, Bullets, etc. Future bricklayer de Bitcoin.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.