Accueil / Chroniques / Zero-knowledge : la solution aux problèmes de confidentialité sur la blockchain ? 
tribune04_-Julien-Prat_FR copy
π Numérique π Économie

Zero-knowledge : la solution aux problèmes de confidentialité sur la blockchain ? 

AUGOT_Daniel
Daniel Augot
directeur de recherche à l'Inria et responsable de la chaire Blockchain
En bref
  • 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 blo­ck­chains et des cryp­to­mon­naies, le concept de zero-know­ledge est sou­vent évo­qué comme une solu­tion effi­ciente aux pro­blèmes de confi­den­tia­li­té et de res­pect de la vie pri­vée. En effet, le prin­cipe de cette tech­no­lo­gie est de prou­ver l’exis­tence de cer­taines infor­ma­tions sans avoir à les divul­guer. Une avan­cée majeure qui n’obstrue pas la recherche sur les sys­tèmes déjà existants.

La preuve « zero-knowledge » est-elle l’avenir des blockchains ?

Il faut dire que les cas pra­tiques autour de cette tech­no­lo­gie sont nom­breux. Elle peut notam­ment ser­vir à véri­fier l’i­den­ti­té d’une per­sonne sans en révé­ler le nom. Si quelqu’un sou­haite prou­ver qu’il a plus de 18 ans, il peut uti­li­ser son per­mis de conduire. Cepen­dant, ce geste révè­le­ra non seule­ment des infor­ma­tions sur son âge, mais aus­si son nom, sa date de nais­sance et un cer­tain nombre de don­nées per­son­nelles. Une preuve « zero-know­ledge » peut per­mettre de prou­ver que cette per­sonne a plus de 18 ans, sans révé­ler aucune des infor­ma­tions figu­rant sur le per­mis de conduire. 

Le zero-know­ledge peut éga­le­ment prou­ver que quel­qu’un a bien effec­tué une tran­sac­tion sans en dévoi­ler le mon­tant. Le pro­ces­sus ? La fonc­tion dite de hachage cryp­to­gra­phique. Cette fonc­tion de hachage, qui n’a pas d’équivalent dans le monde réel, est un algo­rithme qui trans­forme n’im­porte quel don­née numé­rique (une image, un fichier texte, etc.) en une valeur de taille fixe, comme une suite de 256 bits. Par exemple, le stan­dard SHA-256 est très uti­li­sé dans les blo­ck­chains, car il dis­pose d’un haut niveau de sécu­ri­té, et il donne tou­jours comme résul­tat une chaîne de 64 carac­tères hexa­dé­ci­maux. Et si on lui pro­pose le même fichier une seconde fois, il don­ne­ra la même réponse, c’est-à-dire un hash de 64 octets. Ces algo­rithmes sont stan­dar­di­sés, et moins d’une dizaine sont recon­nus mondialement. 

Ce hash peut être com­pa­ré à une empreinte digi­tale, bien moins com­plexe que l’information d’origine, mais per­met­tant une iden­ti­fi­ca­tion pré­cise et unique. Cette empreinte ou cette trace mini­male est enre­gis­trée sur une blo­ck­chain, et c’est sur la base de cette empreinte qu’il est pos­sible de prou­ver des faits por­tant sur cette infor­ma­tion sans la révé­ler. Ce qu’il faut com­prendre, c’est que cette tech­no­lo­gie est à dis­tin­guer du chif­fre­ment, qui uti­lise un algo­rithme cryp­to­gra­phique per­met­tant de rendre les don­nées inin­tel­li­gibles et que l’on peut rendre tota­le­ment acces­sibles à l’aide d’une clé de déchif­fre­ment. Le chif­fre­ment est la solu­tion du tout ou rien : si l’on n’est pas en pos­ses­sion de cette clé, on ne peut rien savoir.

Comment cela fonctionne-t-il au niveau des cryptomonnaies ?

Les preuves zero-know­ledge fonc­tionnent dif­fé­rem­ment, car elles per­mettent de prou­ver la véra­ci­té des don­nées cachées sans pour autant les révé­ler. Dans le réseau Bit­coin par exemple, les arbres de Merkle sont uti­li­sés pour la véri­fi­ca­tion des data : cette méthode consiste à n’utiliser que quelques don­nées au lieu de la tota­li­té. Concrè­te­ment, des blocs contiennent les tran­sac­tions, et les entêtes de ces blocs vont conte­nir la racine d’un arbre de Merkle. Cette racine per­met de « mettre en gage » un grand nombre de don­nées avec des hash très courts, et chaque don­née peut être cer­ti­fiée indi­vi­duel­le­ment. Il existe ain­si une ver­sion Bit­coin dite « client léger » qui, dans les faits, ne télé­charge que les entêtes des blocs. 

Cette mise en gage, ou com­mit­ment, est un sceau de cer­ti­fi­ca­tion. Si je désire prou­ver que j’ai bien mis un docu­ment dans la blo­ck­chain, je pro­duis le docu­ment et tout le monde peut ain­si en véri­fier la vali­di­té. Dans le cas d’un arbre de Merkle, il faut de plus pro­duire une chaîne de hash. Mais le Bit­coin n’est pas le seul à uti­li­ser les arbres de Merkle, Ethe­reum, par exemple, fait usage de trois arbres de Merkle. Ils sont essen­tiels pour réduire les quan­ti­tés de don­nées qui doivent être conser­vées dans une blo­ck­chain à des fins de vérification.

Le zero-know­ledge per­met aus­si de four­nir la preuve que des cal­culs ont été cor­rec­te­ment exécutés. 

Cette tech­no­lo­gie apporte de plus une deuxième avan­cée impor­tante : le zero-know­ledge per­met de four­nir la preuve que des cal­culs ont été cor­rec­te­ment exé­cu­tés, sans avoir à les refaire, et sans révé­ler toutes ses infor­ma­tions néces­saires. C’est un gain de temps et de res­sources indéniable.

Quels protocoles sont concernés ?

Les deux pro­to­coles de preuve « zero-know­ledge » les plus répan­dus sont connus dans le monde des blo­ck­chains sous le nom de zk-STARKs et zk-SNARKs. Le zk-STARKs signi­fie « Argu­ment trans­pa­rent de connais­sance exten­sible à connais­sance nulle », et le zk-SNARKs équi­vaut à « Argu­ment de connais­sance suc­cinct et non inter­ac­tif de connais­sance zéro ». Leur point com­mun est de ne pas être inter­ac­tifs par nature, ce qui signi­fie que la preuve peut être déployée et agir de manière auto­nome. La sou­mis­sion et la véri­fi­ca­tion des preuves sont géné­ra­le­ment effec­tuées par lot, avec un grand nombre de tran­sac­tions. Les preuves sont ain­si beau­coup plus petites et peuvent être véri­fiées bien plus rapidement. 

Les zk-SNARKs sont déjà uti­li­sés depuis plu­sieurs années grâce au pro­to­cole Zcash qui les exploite pour offrir une expé­rience blo­ck­chain res­pec­tant la confi­den­tia­li­té des échanges, tout en four­nis­sant une preuve suf­fi­sante que chaque tran­sac­tion soit valide. 

Les zk-STARKs, eux, sont appa­rus plus récem­ment, en 2018. Au-delà des pro­blèmes de confi­den­tia­li­té et de vie pri­vée, les preuves zk-STARKs se posi­tionnent comme une solu­tion au pro­blème du pas­sage à l’échelle, c’est-à-dire la capa­ci­té de la blo­ck­chain à trai­ter un nombre gran­dis­sant de tran­sac­tions. En per­met­tant de dépla­cer les cal­culs et le sto­ckage hors de la chaîne, les zk-STARKs seraient éga­le­ment plus sécu­ri­sées, car résis­tantes aux attaques quan­tiques puisqu’elles s’appuient sur des fonc­tions de hachage qui ne sont pas mena­cées par l’ordinateur quan­tique. Les zk-STARKs et les zk-SNARKs ouvrent ain­si la voie à des véri­fi­ca­tions plus rapides. 

S’ils uti­lisent tous deux une cryp­to­gra­phie de pointe, si cette tech­no­lo­gie zero-know­ledge est d’ores et déjà très uti­li­sée par cer­taines star­tups, ce poten­tiel à résoudre des pro­blèmes indus­triels cru­ciaux dans le monde des blo­ck­chains n’a pas ren­du la recherche actuelle muette quant à l’amélioration des per­for­mances des sys­tèmes exis­tants. Cette der­nière n’a pas dit son der­nier mot en matière de per­for­mances, et sou­haite que les preuves soient les plus courtes pos­sibles, rapides à véri­fier, et rapides à calculer.

Jean Zeid

Soutenez une information fiable basée sur la méthode scientifique.

Faire un don