Zero-knowledge : la solution aux problèmes de confidentialité sur la blockchain ?
- Le « zero-knowledge » est un concept du monde de la cryptomonnaie qui permet de prouver l’existence de certaines informations sans les divulguer.
- Cette technologie est à distinguer du chiffrement, où toutes les données sont accessibles dès lors qu’on possède la clé de déchiffrement.
- Les deux protocoles de preuve zero-knowledge les plus connus dans le monde de la blockchain sont les zk-STARKs et les zk-SNARKs.
- Ces protocoles présentent l’avantage de fournir des preuves plus courtes et plus rapides à vérifier.
- Le monde de la recherche n’a pas dit son dernier mot pour autant et cherche toujours à optimiser les performances de calcul et de vérification des données.
Dans le monde des blockchains et des cryptomonnaies, le concept de zero-knowledge est souvent évoqué comme une solution efficiente aux problèmes de confidentialité et de respect de la vie privée. En effet, le principe de cette technologie est de prouver l’existence de certaines informations sans avoir à les divulguer. Une avancée majeure qui n’obstrue pas la recherche sur les systèmes déjà existants.
La preuve « zero-knowledge » est-elle l’avenir des blockchains ?
Il faut dire que les cas pratiques autour de cette technologie sont nombreux. Elle peut notamment servir à vérifier l’identité d’une personne sans en révéler le nom. Si quelqu’un souhaite prouver qu’il a plus de 18 ans, il peut utiliser son permis de conduire. Cependant, ce geste révèlera non seulement des informations sur son âge, mais aussi son nom, sa date de naissance et un certain nombre de données personnelles. Une preuve « zero-knowledge » peut permettre de prouver que cette personne a plus de 18 ans, sans révéler aucune des informations figurant sur le permis de conduire.
Le zero-knowledge peut également prouver que quelqu’un a bien effectué une transaction sans en dévoiler le montant. Le processus ? La fonction dite de hachage cryptographique. Cette fonction de hachage, qui n’a pas d’équivalent dans le monde réel, est un algorithme qui transforme n’importe quel donnée numérique (une image, un fichier texte, etc.) en une valeur de taille fixe, comme une suite de 256 bits. Par exemple, le standard SHA-256 est très utilisé dans les blockchains, car il dispose d’un haut niveau de sécurité, et il donne toujours comme résultat une chaîne de 64 caractères hexadécimaux. Et si on lui propose le même fichier une seconde fois, il donnera la même réponse, c’est-à-dire un hash de 64 octets. Ces algorithmes sont standardisés, et moins d’une dizaine sont reconnus mondialement.
Ce hash peut être comparé à une empreinte digitale, bien moins complexe que l’information d’origine, mais permettant une identification précise et unique. Cette empreinte ou cette trace minimale est enregistrée sur une blockchain, et c’est sur la base de cette empreinte qu’il est possible de prouver des faits portant sur cette information sans la révéler. Ce qu’il faut comprendre, c’est que cette technologie est à distinguer du chiffrement, qui utilise un algorithme cryptographique permettant de rendre les données inintelligibles et que l’on peut rendre totalement accessibles à l’aide d’une clé de déchiffrement. Le chiffrement est la solution du tout ou rien : si l’on n’est pas en possession de cette clé, on ne peut rien savoir.
Comment cela fonctionne-t-il au niveau des cryptomonnaies ?
Les preuves zero-knowledge fonctionnent différemment, car elles permettent de prouver la véracité des données cachées sans pour autant les révéler. Dans le réseau Bitcoin par exemple, les arbres de Merkle sont utilisés pour la vérification des data : cette méthode consiste à n’utiliser que quelques données au lieu de la totalité. Concrètement, des blocs contiennent les transactions, et les entêtes de ces blocs vont contenir la racine d’un arbre de Merkle. Cette racine permet de « mettre en gage » un grand nombre de données avec des hash très courts, et chaque donnée peut être certifiée individuellement. Il existe ainsi une version Bitcoin dite « client léger » qui, dans les faits, ne télécharge que les entêtes des blocs.
Cette mise en gage, ou commitment, est un sceau de certification. Si je désire prouver que j’ai bien mis un document dans la blockchain, je produis le document et tout le monde peut ainsi en vérifier la validité. Dans le cas d’un arbre de Merkle, il faut de plus produire une chaîne de hash. Mais le Bitcoin n’est pas le seul à utiliser les arbres de Merkle, Ethereum, par exemple, fait usage de trois arbres de Merkle. Ils sont essentiels pour réduire les quantités de données qui doivent être conservées dans une blockchain à des fins de vérification.
Le zero-knowledge permet aussi de fournir la preuve que des calculs ont été correctement exécutés.
Cette technologie apporte de plus une deuxième avancée importante : le zero-knowledge permet de fournir la preuve que des calculs ont été correctement exécutés, sans avoir à les refaire, et sans révéler toutes ses informations nécessaires. C’est un gain de temps et de ressources indéniable.
Quels protocoles sont concernés ?
Les deux protocoles de preuve « zero-knowledge » les plus répandus sont connus dans le monde des blockchains sous le nom de zk-STARKs et zk-SNARKs. Le zk-STARKs signifie « Argument transparent de connaissance extensible à connaissance nulle », et le zk-SNARKs équivaut à « Argument de connaissance succinct et non interactif de connaissance zéro ». Leur point commun est de ne pas être interactifs par nature, ce qui signifie que la preuve peut être déployée et agir de manière autonome. La soumission et la vérification des preuves sont généralement effectuées par lot, avec un grand nombre de transactions. Les preuves sont ainsi beaucoup plus petites et peuvent être vérifiées bien plus rapidement.
Les zk-SNARKs sont déjà utilisés depuis plusieurs années grâce au protocole Zcash qui les exploite pour offrir une expérience blockchain respectant la confidentialité des échanges, tout en fournissant une preuve suffisante que chaque transaction soit valide.
Les zk-STARKs, eux, sont apparus plus récemment, en 2018. Au-delà des problèmes de confidentialité et de vie privée, les preuves zk-STARKs se positionnent comme une solution au problème du passage à l’échelle, c’est-à-dire la capacité de la blockchain à traiter un nombre grandissant de transactions. En permettant de déplacer les calculs et le stockage hors de la chaîne, les zk-STARKs seraient également plus sécurisées, car résistantes aux attaques quantiques puisqu’elles s’appuient sur des fonctions de hachage qui ne sont pas menacées par l’ordinateur quantique. Les zk-STARKs et les zk-SNARKs ouvrent ainsi la voie à des vérifications plus rapides.
S’ils utilisent tous deux une cryptographie de pointe, si cette technologie zero-knowledge est d’ores et déjà très utilisée par certaines startups, ce potentiel à résoudre des problèmes industriels cruciaux dans le monde des blockchains n’a pas rendu la recherche actuelle muette quant à l’amélioration des performances des systèmes existants. Cette dernière n’a pas dit son dernier mot en matière de performances, et souhaite que les preuves soient les plus courtes possibles, rapides à vérifier, et rapides à calculer.