Glossaire

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).

Voir aussi