Si Bitcoin et les cryptomonnaies formant l'écosystème qui nous intéresse tant ont pu être créés, c'est grâce à des algorithmes cryptographiques. Ces derniers ont des fonctionnements bien spécifiques et répondent à des besoins tels que la gestion autonome d'un wallet par exemple. C'est donc par le biais de clés, de signatures de transaction et d'autres systèmes que nous pouvons prouver que nous possédons nos bitcoins, sans avoir à décliner notre identité. Cela a donc permis à Bitcoin de voir le jour, un système non pas anonyme, mais pseudonyme.

Mais pourrions-nous aller plus loin, c'est-à-dire de mettre en place des transactions anonymes ? Il nous faudrait alors d'autres briques cryptographiques, dont les zero-knowledge proofs font partie.

 

Que sont les zero-knowledge proofs ou ZKP ?

Les zero-knowledge proofs (ZKP), ou preuves à divulgation nulle de connaissance en français, sont des protocoles permettant à un acteur de prouver qu'une situation est réelle sans avoir à révéler les informations relatives à cette dernière. Pour vous donner un exemple, cela permettrait de prouver à un utilisateur qu'il possède bien des bitcoins, sans pour autant indiquer sa signature ou adresse publique. En sortant du cadre des crypto-monnaies, cela peut également être utilisé pour prouver une identité sans avoir à révéler cette dernière. Nous étudierons en détail ces deux exemples très pertinents par la suite, mais intéressons-nous d'abord à l'origine de ces protocoles.

Le terme « zero-knowledge proof » est assez récent, mais ne provient évidemment pas de l’écosystème des cryptomonnaies actuel. C'est en 1989 que trois experts - Shafi Goldwasser, Silvio Micali et Charles Rackoff - ont utilisé ce terme pour la première fois dans une publication scientifique qui décrivait de nombreux concepts liés aux preuves cryptographiques. Aujourd'hui, ces preuves sont devenues un sujet d'étude en cryptographie à part entière.

 

Comment fonctionnent les ZKP ?

De la même manière qu'il existe de nombreux cas d'utilisations des ZKP, il existe également de nombreux fonctionnements différents, car ils sont adaptés à des situations précises. En effet, chaque cas particulier nécessite une mise en situation unique et le protocole est développé en fonction de ces paramètres.

Cependant, les ZKP suivent des principes généraux, ce qui fait qu'il existe différents exemples permettant d'illustrer leurs fonctionnements.

 

La grotte d'Ali Baba

On considère Alice et Bob devant la grotte d'Ali Baba, Alice possédant le mot de passe de cette dernière. La porte bloque le passage de deux couloirs A et B. Bob souhaite passer la porte, mais Alice ne veut pas pour autant divulguer le mot de passe. Le fonctionnement du protocole ZKP associé à cette situation serait qu'Alice ouvre la porte et que Bob sorte de la grotte en utilisant le mot de passe.

 

Alice va donc au fond de la grotte, attendant les instructions de Bob.

alice va choisir un couloir d'entré

 

Bob sélectionne alors l'un des couloirs par lequel Alice doit pouvoir ressortir.

bob choisi par quel couloir alice va ressortir

 

Alice, ressort par le couloir sélectionné par Bob.

alice ressort

 

Puisqu'Alice ne connaît pas à l'avance le couloir choisi par Bob, il y a une chance sur deux qu'elle mente. En répétant l'opération un nombre suffisant de fois, Alice prouve qu'elle a accès aux deux, et qu'elle possède le mot de passe permettant de passer d'un couloir à l'autre au besoin.

 

Les bonbons d'Halloween

De retour de leur récolte d’Halloween, Alice et Bob souhaitent connaître s'ils ont obtenu le même nombre de bonbons sans pour autant révéler le nombre exact qu'ils possèdent.

Pour ce faire, Bob va créer des boites pour chaque possibilité de récolte et y inscrire un nombre à l'intérieur. Il les ferme à clé et jette les clés des boites contenant un nombre erroné.

Alice, quant à elle, va prendre autant de bouts de papier que de boites et écrit le signe "-" sur tous, sauf sur un qui sera marqué d'un "+". Elle va ensuite mettre un bout de papier dans chacune des boites de Bob, le "+" étant dans la boite correspondant au nombre de bonbons qu'elle a récoltés.

Par la suite, Bob va récupérer la seule boite à laquelle il a accès, c'est-à-dire celle qui contient le nombre de bonbons qu'il possède et va prendre connaissance du signe associé. Si c'est un "+", ils ont le même nombre. Dans le cas contraire, leurs récoltes sont différentes. Dans les deux cas aucun des deux n'a eu accès à la récolte de l'autre puisque Bob n'a pas les clés des autres boites et ne peut pas donc chercher celle qui contient le "+".

Nous remarquons donc par ces explications que les protocoles peuvent prendre de nombreuses formes différentes et s'adaptent aux situations. Très souvent, ils sont plus complexes que celle présentés ici, et ne doivent montrer aucune faille de logique pour être utilisés dans des applications réelles. En effet, des failles dans ces protocoles pourraient divulguer des informations sensibles, justement censées être protégées par ces derniers.

 

Les applications des ZKP

Les applications des ZKP peuvent être très nombreuses puisqu'elles ne sont pas cantonnées aux systèmes de crypto-monnaie ou d'identité décentralisée que nous allons étudier par la suite. En effet, ils peuvent également prendre part dans le cadre de la diffusion d'informations sensibles sans citer de sources, comme l'évaluation des forces armées de différents pays. Enfin, ils sont largement utilisés dans le cadre des plateformes blockchain comme nous allons le voir ensemble.

 

Les transactions anonymes

vie privée et preuve à divulgation nulle de connaissance

La mise en place d'un protocole ZKP peut rendre anonymes des transactions, de cryptomonnaie par exemple. En effet, certaines blockchains se voulant anonymes utilisent des procédés ZKP pour garantir la confidentialité de leurs utilisateurs. Mais certains de ces systèmes peuvent être déployés au sein de smart-contracts afin d'apporter de l'anonymat au sein de plateformes existantes. C'est le cas de Tornado Cash par exemple qui a déployé récemment sa version 2 et que nous avons présenté sur Cryptoast. Ce service utilise en effet des preuves sans divulgation pour réussir à rendre des transactions Ethereum anonymes.

 

Les identités décentralisées

identités décentralisées et zero knowledge proof

Mais là où les protocoles ZKP nous intéressent réellement, c'est dans le cadre des identités décentralisées. En effet, une des problématiques des identités décentralisées se trouve dans le fait de sélectionner et de limiter les données partagées. Personne ne souhaite divulguer à tous certaines données sensibles, les données médicales viennent en premier dans la liste.

Les solutions utilisant les ZKP dans le cadre de la gestion de données personnelles disposent de plusieurs avantages :

  • Elles sont largement compatibles avec les RGPD puisque la conception du système est basée sur l'intimité des données.
  • Elles apportent aux utilisateurs une très grande transparence dans le cadre des protocoles ouverts.

Mais si ces avantages peuvent être apportés par des systèmes centralisés, avec divulgation d'information en toute transparence, les ZKP permettent d'aller plus loin.

Tout d'abord, les informations ne sont pas divulguées, c'est le principe. Elles ne peuvent pas donc être stockées, à la merci des attaques, ou transférées à des tiers moins transparents sur leur utilisation. Si le sujet vous intéresse, je vous renvoie vers le très bon travail de Blockchain Partner sur ces sujets.

 

L'exploitation des données d'IOT

iot et zkp

Si l'IoT (Internet of Things) propose de belles promesses d'optimisation du quotidien, de manière personnalisée pour chacun, cet écosystème de produits et de services souffre de nombreux problèmes : un manque général de sécurité sur les produits IoT, souvent peu chers, ainsi qu'une gestion très opaque des données récoltées, nécessaires pour l'optimisation des services. Si la sécurité n'est pas réellement garantie par l'utilisation de preuves à divulgation nulle de connaissance (encore moins par l'utilisation d'une blockchain !), ces solutions peuvent résoudre le dilemme de l'utilisation des données.

En effet, la problématique n'est pas tant l'exploitation des données (reventes, optimisation des systèmes, etc.), mais plutôt le lien entre les données récoltées et les propriétaires des objets connectés. Tout le monde imagine ces dystopies quasi réelles aujourd'hui, dans lesquelles les frais d'assurances dépendent de manière immédiate des données récoltées autour de vous. L'utilisation d'échanges d'informations à divulgation nulle permettrait de garantir l'anonymat des utilisateurs sans accorder sa confiance au constructeur (dans le cadre de contrats intelligents ou celui où le code est rendu open source).

 

Des surcouches de scalabilité

scalabilité

L'une des utilisations un peu plus méconnues du grand public, mais proposant des promesses intéressantes, est l'utilisation des ZKP dans des solutions de scalabilité. Principalement présentes dans des projets de surcouches Ethereum, les signatures à divulgations nulle permettent de réaliser un plus grand nombre de transactions sur un temps donné en ne transmettant que la preuve de transaction. Ainsi, moins de données sont distribuées sur le réseau, tout en assurant la validation du consensus de ce dernier. Des exemples de protocoles de scalabilité ZKP existent déjà aujourd'hui, notamment en surcouche d'Ethereum.

Nous pouvons notamment citer ZK-Rollup et son implémentation zkSync, une DApp Ethereum permettant d'effectuer des transactions à moindre coût sur Ethereum. Il s'agit donc d'une solution de micropaiements, qui possède tout de même des désavantages à l'utilisation. On note par exemple un schéma initial assez centralisé, ainsi qu'une plus grande demande de puissance de calcul pour des preuves à divulgation nulle que pour des transactions classiques.

 

Voilà qui conclut cette présentation des zero-knowledge proofs, de leur fonctionnement ainsi que des cas d'utilisation qui nous intéressent. Ethereum est aujourd'hui le protocole avec la communauté la plus active sur la question des preuves à divulgation nulle. Mais elles ne sont pas nécessairement liées aux technologies blockchain, mais plus généralement des protocoles sans confiance. Si vous avez des questions ou remarques à propos de cet article, n'hésitez pas à nous contacter dans les commentaires ou sur les réseaux sociaux.

Newsletter 🍞
Recevez un récapitulatif de l'actualité crypto chaque dimanche 👌 Et c'est tout.

A propos de l'auteur : Guillaume Chanut

twitter-soothsayerdatatwitter-soothsayerdata

Passionné par les crypto-monnaies, j’ai rapidement appris à développer des outils dans le domaine des technologies blockchain. J’aime partager mes connaissances sur le sujet et je participe activement au rayonnement des aspects techniques de la blockchain au sein de la communauté crypto. Je suis principalement intéressé par Ethereum et par son code Solidity.
Tous les articles de Guillaume Chanut.

guest
0 Commentaires
Inline Feedbacks
View all comments