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 blockchains et des cryp­tomon­naies, le con­cept de zero-knowl­edge est sou­vent évo­qué comme une solu­tion effi­ciente aux prob­lèmes de con­fi­den­tial­ité et de respect de la vie privée. En effet, le principe de cette tech­nolo­gie est de prou­ver l’ex­is­tence de cer­taines infor­ma­tions sans avoir à les divulguer. Une avancé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­nolo­gie sont nom­breux. Elle peut notam­ment servir à véri­fi­er l’i­den­tité d’une per­son­ne sans en révéler le nom. Si quelqu’un souhaite prou­ver qu’il a plus de 18 ans, il peut utilis­er son per­mis de con­duire. Cepen­dant, ce geste révèlera non seule­ment des infor­ma­tions sur son âge, mais aus­si son nom, sa date de nais­sance et un cer­tain nom­bre de don­nées per­son­nelles. Une preuve « zero-knowl­edge » peut per­me­t­tre de prou­ver que cette per­son­ne a plus de 18 ans, sans révéler aucune des infor­ma­tions fig­u­rant sur le per­mis de conduire. 

Le zero-knowl­edge peut égale­ment prou­ver que quelqu’un a bien effec­tué une trans­ac­tion sans en dévoil­er le mon­tant. Le proces­sus ? La fonc­tion dite de hachage cryp­tographique. 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 fichi­er texte, etc.) en une valeur de taille fixe, comme une suite de 256 bits. Par exem­ple, le stan­dard SHA-256 est très util­isé dans les blockchains, car il dis­pose d’un haut niveau de sécu­rité, et il donne tou­jours comme résul­tat une chaîne de 64 car­ac­tères hexa­déci­maux. Et si on lui pro­pose le même fichi­er une sec­onde fois, il don­nera la même réponse, c’est-à-dire un hash de 64 octets. Ces algo­rithmes sont stan­dard­is­és, et moins d’une dizaine sont recon­nus mondialement. 

Ce hash peut être com­paré à une empreinte dig­i­tale, bien moins com­plexe que l’information d’origine, mais per­me­t­tant une iden­ti­fi­ca­tion pré­cise et unique. Cette empreinte ou cette trace min­i­male est enreg­istrée sur une blockchain, et c’est sur la base de cette empreinte qu’il est pos­si­ble de prou­ver des faits por­tant sur cette infor­ma­tion sans la révéler. Ce qu’il faut com­pren­dre, c’est que cette tech­nolo­gie est à dis­tinguer du chiffre­ment, qui utilise un algo­rithme cryp­tographique per­me­t­tant de ren­dre les don­nées inin­tel­li­gi­bles et que l’on peut ren­dre totale­ment acces­si­bles à l’aide d’une clé de déchiffre­ment. Le chiffre­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-knowl­edge fonc­tion­nent dif­férem­ment, car elles per­me­t­tent de prou­ver la vérac­ité des don­nées cachées sans pour autant les révéler. Dans le réseau Bit­coin par exem­ple, les arbres de Merkle sont util­isés pour la véri­fi­ca­tion des data : cette méth­ode con­siste à n’utiliser que quelques don­nées au lieu de la total­ité. Con­crète­ment, des blocs con­ti­en­nent les trans­ac­tions, et les entêtes de ces blocs vont con­tenir la racine d’un arbre de Merkle. Cette racine per­met de « met­tre en gage » un grand nom­bre de don­nées avec des hash très courts, et chaque don­née peut être cer­ti­fiée indi­vidu­elle­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 doc­u­ment dans la blockchain, je pro­duis le doc­u­ment et tout le monde peut ain­si en véri­fi­er la valid­ité. 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 à utilis­er les arbres de Merkle, Ethereum, par exem­ple, fait usage de trois arbres de Merkle. Ils sont essen­tiels pour réduire les quan­tités de don­nées qui doivent être con­servées dans une blockchain à des fins de vérification.

Le zero-knowl­edge per­met aus­si de fournir la preuve que des cal­culs ont été cor­recte­ment exécutés. 

Cette tech­nolo­gie apporte de plus une deux­ième avancée impor­tante : le zero-knowl­edge per­met de fournir la preuve que des cal­culs ont été cor­recte­ment exé­cuté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 ressources indéniable.

Quels protocoles sont concernés ?

Les deux pro­to­coles de preuve « zero-knowl­edge » les plus répan­dus sont con­nus dans le monde des blockchains sous le nom de zk-STARKs et zk-SNARKs. Le zk-STARKs sig­ni­fie « Argu­ment trans­par­ent de con­nais­sance exten­si­ble à con­nais­sance nulle », et le zk-SNARKs équiv­aut à « Argu­ment de con­nais­sance suc­cinct et non inter­ac­t­if de con­nais­sance zéro ». Leur point com­mun est de ne pas être inter­ac­t­ifs par nature, ce qui sig­ni­fie que la preuve peut être déployée et agir de manière autonome. La soumis­sion et la véri­fi­ca­tion des preuves sont générale­ment effec­tuées par lot, avec un grand nom­bre de trans­ac­tions. Les preuves sont ain­si beau­coup plus petites et peu­vent être véri­fiées bien plus rapidement. 

Les zk-SNARKs sont déjà util­isés depuis plusieurs années grâce au pro­to­cole Zcash qui les exploite pour offrir une expéri­ence blockchain respec­tant la con­fi­den­tial­ité des échanges, tout en four­nissant une preuve suff­isante que chaque trans­ac­tion soit valide. 

Les zk-STARKs, eux, sont apparus plus récem­ment, en 2018. Au-delà des prob­lèmes de con­fi­den­tial­ité et de vie privée, les preuves zk-STARKs se posi­tion­nent comme une solu­tion au prob­lème du pas­sage à l’échelle, c’est-à-dire la capac­ité de la blockchain à traiter un nom­bre gran­dis­sant de trans­ac­tions. En per­me­t­tant de déplac­er les cal­culs et le stock­age hors de la chaîne, les zk-STARKs seraient égale­ment plus sécurisées, car résis­tantes aux attaques quan­tiques puisqu’elles s’appuient sur des fonc­tions de hachage qui ne sont pas men­acé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 utilisent tous deux une cryp­togra­phie de pointe, si cette tech­nolo­gie zero-knowl­edge est d’ores et déjà très util­isée par cer­taines star­tups, ce poten­tiel à résoudre des prob­lèmes indus­triels cru­ci­aux dans le monde des blockchains n’a pas ren­du la recherche actuelle muette quant à l’amélioration des per­for­mances des sys­tèmes exis­tants. Cette dernière n’a pas dit son dernier mot en matière de per­for­mances, et souhaite que les preuves soient les plus cour­tes pos­si­bles, rapi­des à véri­fi­er, et rapi­des à calculer.

Jean Zeid

Le monde expliqué par la science. Une fois par semaine, dans votre boîte mail.

Recevoir la newsletter