Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

La science facile !

S'amuser à apprendre: des explications simples en quelques dizaines de ligne sur les concepts scientifiques et des projets et tutoriels en électronique, domotique, informatique, rétrogaming, etc.

La blockchain pour les nuls

Qu'est-ce que la blockchain ?

Littéralement, ça se traduit par "chaîne de bloc". Une blockchain est un ensemble de données distribué et sécurisé; j'expliquerai plus bas ces deux qualificatifs. La blockchain trouve son intérêt dans le stockage de données qui nécessitent d'être absolument sécurisées, c'est-à-dire ne pas pouvoir être modifiées par une personne non autorisée. Aujourd'hui, la blockchain publique utilisée par la monnaie bitcoin stocke l'intégralité des transactions de bitcoin (voir mon article sur la monnaie électronique bitcoin), mais des blockchains privées commencent aussi à être utilisées pour d'autres services comme de la gestion de contrat d'assurance par exemple. A noter que tout le monde peut lire librement les données d'une blockchain publique, mais pas les données des blockchains privées.

Cet ensemble de données est découpé en bloc, chaque bloc contenant des données ainsi que deux informations que j'expliquerai plus bas: un "nonce" et l'empreinte numérique ("hash") du précédent bloc.

Les blocs sont chaînés entre eux grâce à l'empreinte numérique ("hash") du bloc précédent. Un bloc désigne son prédécesseur grâce à son empreinte numérique, sauf le premier bloc, qui ne pointe vers rien, évidement wink De plus, il existe un bloc libre qui stocke les données qui sont en attente d'ajout à la blockchain.

Dans l'exemple ci-dessus, il y a 153 blocs de données dans la blockchain. Le bloc 2 pointe vers le 1, le bloc 3 vers le bloc 2, etc. Le bloc 154 est le bloc libre en cours de remplissage par de nouvelles données. Une fois le bloc 154 validé et inséré dans la blockchain, il pointera vers le bloc 153.

Chaque nouvelle donnée est ajoutée dans le bloc libre. Une fois ce bloc rempli, il est soumis pour validation et insertion à la fin de la blockchain. Si la blockchain est publique comme celle utilisée pour le bitcoin, la validation est faite par la communauté des utilisateurs, sinon elle est réalisée par des ordinateurs identifiés et certifiés.

 

Et maintenant, on en arrive à la partie un peu plus compliquée de l'article, qui explique comment la blockchain est sécurisée. C'est parti ! smiley

Il existe plusieurs façon de valider un bloc, mais le plus répandu est celui utilisé par la monnaie électronique bitcoin: la preuve de travail ou "proof of work" en anglais. Ce principe consiste à dire que seul un travail long et complexe doit permettre la validation d'un bloc. Cette preuve de travail est réalisée par ce qu'on appelle le "minage".

Le minage consiste à calculer l'empreinte numérique ("hash" en anglais) du bloc que l'on souhaite ajouter à la blockchain. Cette empreinte prend la forme d'une suite de lettres et de chiffres qui dépend uniquement des données à l'intérieur du bloc: un bloc avec les mêmes données donne la même empreinte, mais si les données du bloc changent, l'empreinte du bloc est totalement différente.

Le calcul d'une empreinte est très rapide. Mais dans un souci de sécuriser la blockchain, on souhaite néanmoins que le minage d'un bloc nécessite de longs calculs informatiques (je vous expliquerai plus bas pourquoi). Donc, comment faire durer les calculs de l'empreinte ?

La solution choisie est de rajouter des conditions de validité sur l'empreinte. On demande par exemple que cette empreinte commence par une suite de caractères "0" (zéro), par exemple 10 zéros. Or, je vous ai dis plus haut que l'empreinte est calculée à partir des données du bloc. Il faut donc trouver un mécanisme permettant de générer des empreintes différentes pour ce bloc sans changer les données du bloc. Pour cela, on rajoute une donnée particulière dans le bloc, un nombre entier "nonce", qui entrera dans le calcul de l'empreinte numérique du bloc (en plus des données normales et de l'empreinte du bloc précédent). Tant que l'empreinte ne commence pas par la suite attendue de zéro, on rajoute 1 à la valeur du nonce et on recalcule l'empreinte. Plus ou moins rapidement, un des mineurs finira par tomber sur une valeur de nonce qui générera une empreinte numérique commençant par la suite de zéro attendue. C'est ce mineur qui gagne le droit de valider le bloc et de l'ajouter à la blockchain, avec l'empreinte numérique qu'il a calculé. La blockchain, incluant le nouveau bloc, est ensuite propagée aux autres utilisateurs afin que tous disposent de la bonne version de la blockchain.

Cette méthode de validation des blocs par preuve de travail est une horreur écologique car le résultat du challenge mathématique est inutile par lui-même (il faut juste trouver une solution parmi celles possibles, ce qui prouve que l'on a passé du temps à vérifier), et il représente un gâchis énorme d'électricité en tenant compte de toute les machines essayant de "miner" le bloc pour le valider... crying D'autres méthodes de validation moins énergivores commencent donc à apparaître, mais cela dépasse le cadre de cet article.

 

Chaque ordinateur se chargeant de la validation des nouveaux blocs dispose d'une copie intégrale de la blockchain: on dit que la blockchain est un ensemble de donnée "distribué". De plus, chaque bloc pointe vers le bloc précédant en utilisant son empreinte numérique. Cela rend très compliqué la falsification des données par des pirates informatiques:

  • si le pirate change seulement une donnée d'un bloc, la modification est détectée par les autres utilisateurs car l'empreinte numérique du bloc devient incorrecte. Dans l'exemple ci-dessous, une donnée de l'avant dernier bloc a été modifiée mais l'empreinte udn45 n'a pas été modifiée, la chaîne est donc incorrecte.

     

  • si le pirate change une donnée du bloc et recalcule une nouvelle empreinte numérique pour le bloc modifié, il devra aussi aller modifier le pointeur vers ce bloc dans le bloc suivant, ce qui introduit une erreur dans le bloc suivant, etc. Dans l'exemple ci-dessous, le pirate a modifié la donnée ainsi que l'empreinte (de udn45 vers pot7), donc le bloc est correct. Par contre, le bloc suivant pointe toujours le bloc udn47... qui n'existe plus. La chaîne est donc incorrecte. Il faudrait recalculer l'empreinte... et ainsi de suite jusqu'au dernier bloc.

     

Pour pirater une blockchain, il faudrait donc recalculer l'empreinte du bloc piraté ainsi que les empreintes de tous les blocs suivants pour soumettre une blockchain valide aux autres utilisateurs, ce qui prendrait un temps fou! Or, priorité est donnée à la chaîne la plus longue en nombre de bloc. Le temps que le pirate recalcule les empreintes numériques de chaque bloc, et sauf à disposer d'une puissance de calcul gigantesque, sa blockchain sera devenue plus courte que la blockchain non piratée, à laquelle d'autres blocs auront été ajouté entre-temps. Et elle sera donc invalide... smiley

Pour résumer, pirater une blockchain nécessiterait donc des ressources informatiques gigantesques. C'est ce qui rend la technologie de la blockchain si sûre. yes

Retour à l'accueil

Partager cet article

Repost0
Pour être informé des derniers articles, inscrivez vous :

À propos

Sly

Ingénieur en informatique travaillant pour une multinationale de télécommunication.
Voir le profil de Sly sur le portail Overblog

Commenter cet article