La blockchain est une base de données distribuée qui permet de stocker de l’information de façon sécuritaire, infalsifiable et immuable. La BBC a fait ce beau petit vidéo qui illustre très bien comment la blockchain fonctionne, en prenant pour exemple le Bitcoin, du moins : https://www.youtube.com/watch?v=SzAuB2FG79A
Mais au-delà de l’analogie, voici comment on peut tenter d’expliquer le fonctionnement technique de ce qu’est une chaîne de blocs. Et en quoi cette méthode est sécuritaire pour empêcher toute falsification de données.
Tout d’abord, une information est stockée dans un «bloc» qui, selon les données qui y sont inscrites, génère un identifiant (un Hash ID) en son pied de page. Cet identifiant est en fait une signature. Cette signature en pied de page sera par la suite recopiée dans l’entête du prochain bloc.
Par exemple, si on écrit «banane» dans le bloc #1, l’ensemble des caractères écrits dans ce bloc sont encryptés de façon à générer un identifiant unique (Hash) en pied de page. Et cet identifiant pourrait ressembler à ceci :
«0df55addf230c0040da973a7a30da952d9c107bb055314a7d3bdba3335ec099d».
Or, si on modifie le mot «banane» pour «bananes», l’encryption de cette formation générera une signature en pied de page qui sera complètement différente. «bananes» avec un «S» pourrait alors ressembler à
«9216783518022914ea16d5e7d1c99fe4244b069a6fe68cf3bc3ec972cbd98eb6».
Si vous voulez expérimenter le tout, je vous invite à aller écrire «banane» sur cette page : https://anders.com/blockchain/hash.html Puis ajoutez-lui un «S», juste pour voir. 🙂
Des blocs liés les uns aux autres
Un bloc peut contenir une certaine quantité d’information (un méga-octets d’information, par exemple). Pour qu’un bloc soit complété, il faut qu’il ait atteint sa quantité maximale de données prévues. Ce n’est qu’à ce moment que l’ensemble des caractères qu’il contient seront encryptés pour générer l’identifiant du pied de page, ou sa «signature». Cette dernière opération d’encryption s’appelle le minage (ou mining). Elle nécessite l’exécution d’un encodage des données dans le bloc, selon un algorithme (ou problème mathématique) qui nécessite un «effort de calcul» pour l’ordinateur.
Puisque l’identifiant en pied de page du bloc #1 est recopié en entête du prochain bloc #2, si jamais on changeait ne serait-ce qu’une seule virgule dans le bloc #1, l’entête du bloc #2 ne correspondrait alors plus au pied de page du bloc précédent. C’est ainsi qu’une «chaîne de bloc» se brise.
Et que le plus rapide gagne !
Le minage d’un bloc se fait concurremment, en même temps, par plusieurs ordinateurs compétiteurs disponibles dans un même réseau, qui prêtent leur puissance de calcul pour encrypter les données du bloc (afin de créer la «signature»). Et le premier ordinateur qui terminera cet encryptage gagnera la course. D’où l’importance de la vitesse du processeur de l’ordinateur. Pour souligner le fait d’avoir gagné cette «course au calcul», le mineur vainqueur sera financièrement récompensé par une petite rémunération (des «frais de réseau»). Enfin, ce vainqueur publiera le bloc qu’il a complété sur l’ensemble du réseau, un réseau constitué de tous les ordinateurs mineurs compétiteurs qui copieront le nouveau bloc sur leur disque dur, à la suite des autres.
C’est ainsi que la blockchain qui héberge l’information concernant les 300+ millions de transactions du Bitcoin (depuis 2009) se retrouve copiée sur des dizaines de milliers de disques durs, en même temps, partout dans le monde. À ce jour, la taille de la blockchain du Bitcoin pèse 175.43 GB et compte toutes les transactions depuis le début de la blockchain.
Une technologie toujours «incraquable»
Or, dans un tel contexte, pour qu’un «hackeur» parvienne à modifier de l’information dans un bloc (comme le solde de mon portefeuille, par exemple), il faudrait qu’il réussisse à :
- modifier mon solde dans le bon bloc, sans que l’information du bloc subséquent ne devienne invalide (sachant que toute modification dans un bloc affecte son pied de page et, conséquemment, l’entête du bloc subséquent, etc.);
- faire cette modification partout, en même temps, sur toutes les copies de la blockchain distribuées tous les ordinateurs du réseau.
Bonne chance !
Même avec un ordinateur quantique qui, en théorie, pourrait réussir à décrypter l’encodage de chaque bloc sur une chaîne, il serait tout de même impossible de modifier la donnée sur toute les copies du registre – en même temps – sans que cela ne paraisse. La raison est d’ordre physique. La latence des réseaux rend impossible l’inscription d’une donnée au même moment exact, ce sur différents disques durs répartis au travers de la planète. Parce que tous ces ordinateurs sont accessibles via Internet à des distances et des vitesses de connexion différentes.
Voilà pourquoi la blockchain derrière le Bitcoin n’a jamais été «craquée» depuis son invention, en 2009. Si le passé est garant de l’avenir, fort est à parier que personne ne pourra jamais «hacker» la chaîne de blocs derrière cette cryptomonnaie.