Preuve à Connaissance Nulle (ZKP)
17/04/2026
Une preuve à connaissance nulle (ZKP) est un protocole cryptographique dans lequel une partie (le prouveur) convainc une autre partie (le vérificateur) qu'une déclaration est vraie — sans révéler d'informations supplémentaires au-delà du fait qu'elle est vraie. Les preuves à connaissance nulle ont été introduites par Shafi Goldwasser, Silvio Micali et Charles Rackoff dans leur article de 1985 "The Knowledge Complexity of Interactive Proof Systems" — un résultat qui a remporté le Prix Gödel (1993) et contribué au Prix Turing de Goldwasser et Micali (2012).
Les trois propriétés
Chaque système de preuve à connaissance nulle satisfait :
- Complétude — si la déclaration est vraie, un prouveur honnête peut convaincre un vérificateur honnête
- Solidité — si la déclaration est fausse, aucun prouveur tricheur ne peut convaincre le vérificateur (sauf avec une probabilité négligeable)
- Connaissance nulle — le vérificateur n'apprend rien au-delà de la vérité de la déclaration ; aucune information sur pourquoi la déclaration est vraie ne fuit
L'intuition canonique : prouver que vous connaissez un mot de passe sans révéler le mot de passe.
Systèmes de preuve modernes
- zk-SNARK (Succinct Non-interactive ARgument of Knowledge) — preuves très petites (centaines d'octets), vérification en temps constant. Les constructions classiques (Groth16, PGHR13) nécessitent une configuration de confiance spécifique au circuit ; PLONK et Marlin utilisent une configuration universelle et mise à jour ; Halo 2 (développé par Electric Coin Company pour Zcash) utilise un engagement polynomial sans configuration de confiance.
- zk-STARK (Scalable Transparent ARgument of Knowledge) — introduit par Ben-Sasson et al. (2018). Transparent (pas de configuration de confiance), repose uniquement sur des fonctions de hachage, et est plausiblement sécurisé post-quantique. Les preuves sont plus grandes (dizaines à centaines de Ko). Utilisé par StarkWare dans Starknet et StarkEx.
- Bulletproofs — preuves de gamme courtes sans configuration de confiance. Utilisé par Monero pour des montants confidentiels depuis 2018.
- Nova / HyperNova, Plonky2 / Plonky3 — systèmes modernes de schéma de pliage et de SNARK récursifs, optimisés pour le calcul incrémental.
Utilisations dans la crypto
Confidentialité
- Zcash — transactions protégées utilisant zk-SNARKs (Groth16 → Halo 2)
- Aztec Network, Aleo, Namada — contrats intelligents axés sur la confidentialité
- Monero — Bulletproofs pour les preuves de gamme
- Tornado Cash — mélange zk-SNARK (sanctions du Trésor américain partiellement annulées par le 5ème Circuit en 2024)
Scalabilité — ZK-rollups
- zkSync Era, Starknet, Polygon zkEVM, Scroll, Linea — compressent des milliers de transactions L2 en une seule preuve de validité postée sur Ethereum. Ces rollups utilisent ZK pour la succinctesse, pas pour cacher les données.
Identité et justificatifs
- Worldcoin — preuve de personnalité à partir de scans d'iris sans révéler le scan lui-même
- zk-email — prouver la réception d'emails sans révéler le contenu des emails
- Polygon ID, Semaphore — identité sur chaîne sans historique de portefeuille traçable
Calcul vérifiable
- zkML (EZKL, Modulus Labs) — prouver qu'un modèle d'IA a fonctionné correctement sur des entrées spécifiques
- Coprocesseurs sur chaîne (Axiom, Herodotus) — prouver les résultats de calcul hors chaîne
Idée reçue courante — "ZK" ≠ "privé"
Un zk-rollup affiche "ZK" dans son nom mais ne fournit généralement pas de confidentialité utilisateur. La propriété de connaissance nulle ici est utilisée pour la succinctesse — une petite preuve atteste de nombreuses transactions — pas pour cacher les données. Toutes les transactions restent publiques sur le rollup. Pour la confidentialité utilisateur, une conception supplémentaire est requise (Aztec, Aleo).
