Le 5 février 2019, l'équipe de Zcash publie un disclosure discret qui aurait pu faire trembler l'ensemble du secteur des crypto-actifs. Une vulnérabilité critique, présente depuis le lancement du protocole en octobre 2016, permettait à quiconque la découvrait de créer un nombre illimité de ZEC. Non pas par une attaque complexe sur le consensus, mais par une simple faille mathématique dans le système de preuve à divulgation nulle de connaissance, le fameux zk-SNARK qui fait la réputation de confidentialité de Zcash.
Cette faille Zcash permettant la création infinie de ZEC est passée relativement inaperçue dans les médias grand public. Pourtant, elle représente l'un des cas les plus instructifs de vulnérabilité cryptographique jamais révélés. Non seulement par sa gravité technique, mais surtout par ce qu'elle nous enseigne sur la sécurité des systèmes décentralisés et sur la confiance que nous plaçons dans les protocoles que nous utilisons.
Une vulnérabilité invisible par conception
Pour comprendre la gravité de cette faille, il faut d'abord saisir ce qui fait la particularité de Zcash. Contrairement à Bitcoin où toutes les transactions sont publiques, Zcash propose des transactions « blindées » (shielded) qui masquent l'émetteur, le destinataire et le montant. Cette confidentialité repose sur un système mathématique appelé zk-SNARK : une preuve cryptographique qui permet de valider une transaction sans en révéler le contenu.

Le problème avec cette architecture, c'est qu'elle crée un angle mort fondamental. Sur Bitcoin, si quelqu'un tente de créer des bitcoins ex nihilo, l'anomalie est immédiatement visible dans la blockchain : la somme des sorties d'une transaction excéderait la somme des entrées. Mais avec Zcash, dans une transaction blindée, personne ne peut vérifier que les montants entrés et sortis correspondent réellement. On fait confiance aux mathématiques du zk-SNARK pour garantir cette cohérence.
La vulnérabilité découverte exploitait précisément cette zone d'ombre. Elle permettait de construire une preuve zk-SNARK mathématiquement valide qui attestait d'une transaction équilibrée, alors qu'en réalité elle créait de la monnaie à partir de rien. Techniquement, il s'agissait d'une faiblesse dans la manière dont le protocole vérifiait l'intégrité cryptographique des « notes » (les équivalents des UTXO de Bitcoin dans Zcash).
L'impossible audit sécurité crypto : comment détecter ce qui ne laisse aucune trace
Voici où le problème devient véritablement vertigineux. Après avoir corrigé la faille dans la mise à jour Sapling (octobre 2018), l'équipe Zcash a publié son disclosure en février 2019. Et elle a dû faire un aveu glaçant : il est mathématiquement impossible de savoir si quelqu'un a exploité cette vulnérabilité pendant les deux années où elle était active.
L'offre totale de ZEC affichée sur les explorateurs de blocs ? Elle ne signifie rien. Quelqu'un aurait pu créer 10 millions, 100 millions de ZEC fantômes sans que cela ne laisse la moindre trace détectable dans la blockchain. Ces ZEC fantômes auraient pu être vendus progressivement sur les marchés, diluant la valeur de tous les autres détenteurs, sans que personne ne puisse jamais le prouver.
C'est là toute la particularité de cette affaire. Dans la plupart des piratages crypto, on peut suivre les fonds, analyser les mouvements on-chain, estimer les pertes — comme dans le cas des 577 millions volés par la Corée du Nord. Ici, rien. Le système de confidentialité conçu pour protéger les utilisateurs légitimes crée également le cadre parfait pour un crime financier indétectable.
L'équipe de Zcash a mené des analyses statistiques sur les volumes de transactions blindées, cherché des anomalies dans les patterns de trading. Rien de conclusif. Leur position officielle ? Aucune preuve d'exploitation. Mais aucune possibilité de certitude non plus. Cette incertitude fondamentale soulève une question philosophique troublante : qu'est-ce qui différencie un vol parfait d'un vol qui n'a jamais eu lieu, si les deux sont absolument indistinguables ?
Les leçons d'une crise évitée (ou pas)
Le cas Zcash révèle plusieurs vérités inconfortables sur la sécurité des protocoles cryptographiques de nouvelle génération. La première concerne le delta entre innovation cryptographique et maturité opérationnelle. Les zk-SNARKs représentent une avancée mathématique remarquable, mais leur complexité même multiplie les surfaces d'attaque potentielles. Bitcoin utilise des primitives cryptographiques relativement simples et éprouvées depuis des décennies. Zcash s'aventure en territoire cryptographique beaucoup plus récent.
Cette vulnérabilité protocole n'était pas un bug d'implémentation classique que des tests rigoureux auraient pu détecter. Elle résidait dans la conception même du système de preuve. Même les cryptographes de premier plan qui ont audité le protocole avant son lancement ne l'ont pas identifiée. C'est finalement un chercheur de l'équipe interne, Ariel Gabizon, qui l'a découverte en 2018 lors d'un audit de routine avant la mise à jour Sapling.
La deuxième leçon concerne la gouvernance de la divulgation des vulnérabilités. Zcash a attendu quatre mois après le correctif pour publier le disclosure complet. Cette prudence est compréhensible : révéler trop tôt aurait pu inciter des acteurs malveillants à exploiter la faille sur d'autres protocoles utilisant des zk-SNARKs similaires. Mais ce délai soulève aussi des questions éthiques. Pendant ces quatre mois, des investisseurs continuaient d'acheter du ZEC sans connaître ce risque historique majeur.
Zcash n'est d'ailleurs pas le seul protocole à confidentialité qui a rencontré ce type de problème. Monero a subi plusieurs vulnérabilités permettant la création de faux montants. La différence ? Sur Monero, il a été possible de vérifier a posteriori qu'aucune inflation anormale n'avait eu lieu, grâce à des mécanismes de vérification indépendants. Sur Zcash, cette vérification reste structurellement impossible pour les transactions blindées.
Ce que cette faille nous apprend sur la confiance en crypto
Le secteur des crypto-actifs se construit sur un principe fondamental : don't trust, verify. Ne faites pas confiance, vérifiez. Mais la faille Zcash révèle les limites de ce principe. Il existe des situations où, même en auditant chaque ligne de code et chaque transaction on-chain, vous ne pouvez pas vérifier. Vous devez faire confiance. Confiance dans les mathématiques, dans les cryptographes qui ont conçu le système, dans le processus d'audit, dans la bonne foi des développeurs qui corrigent les failles avant qu'elles ne soient exploitées.
Cette réalité doit vous conduire à réévaluer la manière dont vous appréciez le risque contrepartie sur les protocoles que vous utilisez ou recommandez. Un protocole qui privilégie la confidentialité maximale accepte nécessairement un compromis : une part irréductible d'opacité. Cette opacité protège votre vie privée, mais elle protège également les attaquants potentiels.
Depuis 2019, Zcash a considérablement renforcé ses processus d'audit sécurité crypto. La mise à jour Halo 2 (2020) a remplacé l'ancienne cérémonie de trusted setup par un système qui élimine ce point de confiance centralisé. D'autres protocoles à confidentialité, comme Aztec ou Aleo, intègrent dès leur conception des leçons tirées de cette faille. Mais le risque fondamental demeure : plus un système cryptographique est sophistiqué, plus il devient difficile de garantir formellement son absence totale de vulnérabilité.
Le point de vigilance : Si vous détenez des actifs sur des protocoles à confidentialité avancée (Zcash, Monero, Tornado Cash), comprenez que vous acceptez un risque cryptographique résiduel plus élevé que sur des blockchains transparentes. Ce risque n'est pas nécessairement rédhibitoire, mais il doit être conscient et proportionné à votre exposition. Privilégiez les protocoles qui ont fait l'objet d'audits multiples par des équipes indépendantes reconnues, et qui disposent de processus de bug bounty généreux. Un protocole qui paie 1 million de dollars pour la découverte d'une faille critique démontre qu'il prend la sécurité au sérieux. Pour comprendre comment évaluer ces risques dans une approche globale de gestion patrimoniale, la métrique du drawdown peut vous offrir un cadre d'analyse pertinent.
Checklist : Évaluer le risque cryptographique d'un protocole
Avant d'utiliser un protocole reposant sur de la cryptographie avancée (zk-SNARKs, zk-STARKs, signatures en anneau, etc.), vérifiez les points suivants :
- Maturité du protocole : A-t-il au moins 2-3 ans d'existence en production avec un volume significatif ? Les vulnérabilités cryptographiques se découvrent souvent après plusieurs années.
- Audits multiples : Le protocole a-t-il été audité par au moins deux sociétés spécialisées reconnues (Trail of Bits, Kudelski Security, NCC Group, etc.) ? Les rapports d'audit sont-ils publics ?
- Programme de bug bounty : Existe-t-il un programme actif avec des récompenses substantielles (au minimum 100 000$ pour une faille critique) ? Consultez les plateformes comme Immunefi ou HackerOne.
- Transparence sur les incidents passés : L'équipe a-t-elle déjà publié des post-mortems détaillés sur des vulnérabilités découvertes ? La transparence est un indicateur de maturité de la gouvernance.
- Capacité de vérification indépendante : Même sur un protocole à confidentialité, existe-t-il des mécanismes permettant de vérifier l'intégrité de l'offre totale ou de détecter des anomalies statistiques ? Zcash a depuis implémenté des outils comme le turnstile audit.
- Diversification : Ne concentrez jamais une part significative de votre patrimoine crypto sur un seul protocole utilisant de la cryptographie expérimentale, aussi prometteur soit-il.
Conclusion : La sécurité comme processus continu
La faille Zcash n'a pas détruit le protocole. Cinq ans plus tard, ZEC continue d'exister et de se négocier. Certains y voient la preuve que la faille n'a jamais été exploitée. D'autres estiment qu'un attaqueur rationnel aurait précisément intérêt à rester discret pour pouvoir continuer à monétiser sa découverte sur le long terme. Nous ne saurons probablement jamais.
Ce que nous savons en revanche, c'est que cette affaire doit nous rendre plus humbles face à la complexité des systèmes que nous utilisons. Il n'existe pas de protocole parfaitement sécurisé. Il existe des protocoles dont les vulnérabilités n'ont pas encore été découvertes. La sécurité n'est pas un état qu'on atteint, c'est un processus qu'on entretient : audits réguliers, bug bounties généreux, culture de transparence, diversification des risques.
Pour vous, détenteur ou utilisateur de crypto-actifs, la leçon est claire. Avant d'utiliser un protocole, posez-vous cette question simple : si une vulnérabilité critique était découverte demain, aurais-je les moyens de vérifier si elle a été exploitée ? Si la réponse est non, vous devez considérer ce risque d'opacité comme partie intégrante de votre évaluation. La confidentialité a un prix. Ce prix, c'est une part irréductible de confiance dans des systèmes qu'on ne peut pas entièrement vérifier soi-même.



