Blockchain est le nouveau mot à la mode en ce moment dans le monde des nouvelles technologies. Certains l’annoncent comme la prochaine grande révolution du numérique comme a pu l’être Internet en son temps. Dans cet article, nous allons essayer de vulgariser cette technologie à travers un exemple simple d’application qui va permettre d’en introduire les concepts généraux. Les termes importants à retenir sont notés en gras et c’est ces termes qu’il faut assimiler pour bien comprendre la technologie.
I – Qu’est-ce qu’une blockchain ?
Une blockchain est une base de données distribuée servant à stocker de l’information et qui présente trois caractéristiques essentielles :
- elle est publique c’est-à-dire qu’elle est consultable par tous, librement
- elle est décentralisée c’est-à-dire qu’elle fonctionne sans organe central de contrôle
- elle est sécurisée c’est-à-dire que toute tentative de falsification est rendue extrêmement complexe
Une blockchain, c’est en quelque sorte un grand livre (on dit aussi un registre) dans lequel chacun peut lire et écrire des données : c’est son côté public.
Ce livre n’appartient à personne car tout le monde peut le posséder s’il le souhaite : c’est son côté décentralisé.
Et une fois qu’on décide d’y écrire quelque chose, les mécanismes cryptographiques mises en jeu et l’effort qui a été réalisé pour écrire dans ce livre sont tellement important qu’il devient quasiment impossible de l’effacer ou de le modifier : c’est son côté sécurisé.
II – La blockchain par l’exemple
1. Présentation d’un cas concret
Imagine que ton professeur de mathématiques souhaite modifier le mécanisme de notation de la classe. Dans le système actuel, il est le seul officiellement à connaître les notes de tous les élèves et tu lui fais entièrement confiance pour calculer la moyenne qu’il va inscrire sur ton bulletin : on dit qu’il représente un tiers de confiance. S’il lui prend l’envie de modifier une de tes notes pour faire baisser ta moyenne, rien ne l’en empêche (oui je sais c’est un méchant prof 😈 ). Dans le nouveau système, il souhaite mettre en place un registre informatique qui stockera l’ensemble des notes de la classe et que même lui ne pourra plus modifier une fois que les notes y auront été inscrites.
À chaque DS, il inscrira les notes de chaque élève dans un fichier qu’on appellera un bloc.
À chaque DS, il désignera trois ou quatre élèves qui seront chargés de contrôler que les notes inscrites sur le bloc sont bien celles que les élèves ont réellement eu et qui valideront alors le bloc : on appellera ces élèves des mineurs et on dira que ceux-ci ont en charge de valider les transactions et de les ajouter au registre.
Afin de rendre le registre infalsifiable, les élèves mineurs devront résoudre un problème cryptographique complexe suite à quoi une récompense leur sera attribuée sous la forme de points bonus qu’ils pourront ajouter à leur prochaine note 🙂 . On dira alors qu’ils ont fourni une preuve de travail (proof of work en anglais abrégé en POW) et que cette preuve a permis de produire un consensus distribué qui garantit la sécurité de la blockchain à ses utilisateurs.
2. Aspects techniques de la mise en oeuvre
Principe général
Un bloc est le support servant à stocker les notes de chaque élève à un DS. Il se présente ainsi :
Le premier élément du bloc est un lien vers le bloc précédent. Celui-ci ne pointe sur rien lors du premier DS. Le deuxième élément du bloc est un couple de valeurs hash_cible / nonce (ne t’inquiète pas, nous allons expliquer plus en détail tout ça dans le paragraphe suivant) : le hash_cible est une chaîne de caractères composée de chiffres et de lettres et le nonce est un entier numérique. Ces deux valeurs jouent un rôle dans le problème cryptographique qui va être proposé aux élèves mineurs. Vient ensuite la liste des notes de tous les élèves. Enfin, le dernier élément du bloc est le hash du bloc précédent qui ne vaut rien lors du premier DS.
Chaque bloc de note, une fois ajouté au registre, forment une chaîne de blocs d’où le nom de blockchain :
Qu’est-ce qu’un hash ?
Le hash est l’empreinte alphanumérique qui identifie une structure de données informatique : de la même manière que ton empreinte digitale identifie de manière unique ta personne.
En informatique, une fonction de hachage est une fonction qui prend en entrée une suite de caractères de longueur quelconque et qui fournit en sortie une chaîne de caractères de longueur constante que l’on appelle un hash. On dit aussi que la chaîne de sortie est l’empreinte cryptographique de la chaîne d’entrée :
C’est une fonction qui a comme particularité intéressante qu’une toute petite modification des données en entrée génère une très grande différence dans la chaîne de sortie :
De la même manière, si on passe à la moulinette d’une fonction de hachage un roman de 1000 pages et qu’on enlève ne serait-ce qu’une virgule à la page 218 alors l’empreinte obtenue sera totalement différente de l’empreinte originale. Et enfin, une particularité fondamentale d’une telle fonction, c’est qu’il est impossible de retrouver le texte original à partir de son empreinte (comme il est impossible de reconstituer ton visage à partir de ta seule empreinte digitale) : on dit que c’est une fonction à sens unique.
Comment valider un bloc de notes ?
Revenons-en à nos élèves mineurs. Leur problème est donc le suivant : ils doivent déterminer la valeur particulière du nonce incluse dans le bloc qui permette d’obtenir en sortie de la fonction de hachage une empreinte qui soit inférieure à la valeur du hash_cible contenue dans ce même bloc :
La seule et unique manière de résoudre ce problème est de faire varier méthodiquement la valeur du nonce (en l’augmentant de 1 à chaque test) afin de tomber, par chance, sur une empreinte qui réponde à la problématique : on dit que les élèves mineurs utilisent une technique par force brute où seule compte la puissance informatique du matériel utilisé. Plus le matériel informatique dont on dispose est puissant, plus le temps passé à tester des valeurs sera faible. En fait, ce système s’apparente à une sorte de loterie dans laquelle les élèves mineurs entre en concurrence afin d’être le plus rapide à résoudre le problème. La difficulté de résolution du problème peut-être ajuster en modifiant la valeur du hash_cible : plus celle-ci est petite, plus la probabilité de trouver une valeur du nonce qui convienne est faible et plus la difficulté du problème est grande.
Le premier élève mineur à avoir trouvé la solution demande à ses camarades de la valider. Pour cela, ceux-ci vérifient simplement que la valeur du nonce permet bien d’obtenir un hash inférieur au hash_cible. Une fois la solution validée, on ajoute le bloc à la blockchain et on crée un nouveau bloc vierge dans lequel on stocke l’empreinte du bloc précédent. On dit que les mineurs ont atteint un consensus c’est-à-dire qu’ils se sont mis d’accord sur la validité du nouveau bloc.
Les récompenses pour les élèves mineurs sont alors les suivantes : +3 points au prochain DS pour le mineur qui a trouvé la solution et +1 point pour les mineurs l’ayant validé.
3. Sécurisation de la blockchain
Imaginons que Zorro décide de pirater la blockchain pour augmenter sa note de 5. Pour cela, il va attaquer le bloc contenant cette note et la modifier en se mettant un 17 par exemple. L’ennui pour lui maintenant, c’est que cette attaque a modifié l’empreinte du bloc et s’il veut que la blockchain reste cohérente, il va devoir résoudre le petit problème cryptographique, ce qui va lui prendre un certain temps. Imaginons qu’il y arrive, nouvel ennui pour lui, étant donnée que l’empreinte du bloc suivant dépend de celle du bloc qu’il vient de modifier, il va devoir encore passer du temps à valider ce bloc suivant, et ainsi de suite jusqu’au bloc en cours. En parallèle, la véritable blockchain continue à se développer si bien que Zorro n’atteindra jamais le bloc courant.
Imaginons maintenant qu’il attaque la blockchain au niveau du dernier bloc. L’enjeu pour lui maintenant et d’arriver à être plus rapide que l’ensemble des autres mineurs du réseau afin de gagner la loterie et faire valider son bloc avant tout le monde. Pour cela, il faut qu’il arrive à regrouper plus de 50% de la puissance de minage totale du réseau, ce qui est techniquement possible mais revient très cher en terme de ressources. Cette attaque est connue sous le nom d’attaque des 51% ou attaque Goldfinger dont voici une explication très technique.
Pour résumer simplement, on peut dire que ce qui rend la blockchain quasiment impossible à falsifier, c’est que toute modification d’un bloc entraîne une succession de problèmes cryptographiques à résoudre et ceux-ci demandent tellement de ressources matérielles et énergétiques, que le coût en devient trop important.
III – La blockchain Bitcoin
Le concept de blockchain a été imaginé par un certain Satoshi Nakamoto en 2007. Pour la petite histoire, personne ne sait exactement qui il est et plusieurs hypothèses circulent au sujet de sa véritable identité. Dans un document de seulement 9 pages, il présente les principes techniques pour créer une blockchain de transactions de monnaie entre individus. Ce nouveau type de monnaie purement numérique est baptisé Bitcoin. Elle fait aujourd’hui partie d’un ensemble de monnaies numériques que l’on appelle des crypto-monnaies et qui ont toutes été créées plus ou moins selon le même modèle.
Pour faire un parallèle avec notre exemple et la blockchain du Bitcoin, on retiendra que :
- les élèves de la classe, c’est le réseau Bitcoin, c’est-à-dire l’ensemble de ses utilisateurs
- le registre de notes, c’est la blockchain Bitcoin
- le professeur, c’est la banque, l’organe centralisé, le tiers de confiance dont on veut se passer et qui vérifie que lorsque tu fais un achat en carte bleue par exemple, tu possèdes bien les fonds sur ton compte pour honorer ta dépense
- les notes, ce sont les transactions en bitcoins : Alice envoie 20 bitcoins à Bob, Bob envoie 5 bitcoins à Zorro, …
- les élèves mineurs, ce sont les mineurs du réseau Bitcoin qui vont vérifier et valider les transactions
- et les points en plus servant à récompenser les élèves mineurs pour leur preuve de travail, ce sont des bitcoins fraîchement créés au moment de la validation (on dit qu’il y a création de tokens ou de jetons) qui vont directement dans la poche des mineurs
Les personnes ayant miné du bitcoin au moment de sa création sont aujourd’hui potentiellement millionnaires comme en témoigne le cours actuel du bitcoin sur les différentes places de marché où s’échangent les crypto-monnaies. La toile regorge d’anecdotes en tout genre au sujet du bitcoin, comme celle des deux pizzas les plus chères de l’histoire ou encore celle des bitcoins jetés dans une décharge.
Pour une explication plus complète et plus technique du Bitcoin, rendez-vous ici.
IV – Conclusion
Bitcoin par ci, bitcoin par là, en ce moment, c’est l’effervescence autour de cette nouvelle monnaie. Les médias consacrés à l’économie en parlent régulièrement et personne ne sait vers quel sommet sa valeur va monter. Les banques, au début indifférentes, se sentent maintenant menacées par sa fulgurante progression et en réaction, elles ont elles-mêmes créées leur propre crypto-monnaie sur une blockchain privée contrôlée par des consortiums bancaires. Cette blockchain privée s’apparente à une simple base de données et ne présente pas une des caractéristiques fondamentales de la blockchain originelle à savoir son côté décentralisé.
Mais au-delà du bitcoin, ce qu’il faut retenir, c’est la technologie de la blockchain en elle-même. C’est une révolution en ce sens qu’elle promet aux utilisateurs de se passer de tout organisme centralisé pour gérer leurs actifs. On peut imaginer des blockchains de toutes sortes : pour stocker des transactions immobilières ou des titres de propriétés, pour stocker les diplômes acquis durant sa vie, pour stocker des points de fidélité universels que l’on pourrait utiliser dans des enseignes différentes,…
C’est une technologie naissante qui en est à ses balbutiements et qui demandent encore beaucoup d’ajustements techniques. Un des principaux reproches à l’encontre de la blockchain Bitcoin est notamment que le processus de validation basé sur la preuve de travail engendre une dépense phénoménale d’électricité (équivalente à un pays comme l’Irlande) et que les ressources mises en jeu pourraient servir à autres choses de plus utile (actuellement les mineurs sont regroupés dans ce que l’on appelle des fermes de minage). La proof of stake (preuve de participation ou POS) est une tentative pour rendre la sécurisation de la blockchain moins énergivore. D’autres processus de validation existent et avec l’arrivée massive d’objets connectés dans notre quotidien, on peut imaginer que ceux-ci pourraient se regrouper pour miner en apportant une faible puissance de calcul certes mais qui serait multipliée par leur très grand nombre.
Les projets sont nombreux et on assiste à la naissance d’une véritable économie programmable. Comme dans toute activité naissante, la très grande majorité n’iront certainement pas jusqu’à leur terme comme ce fut le cas de beaucoup d’acteurs d’internet à ses débuts. Peut-être que le Bitcoin lui-même ne survivra pas (qui se souvient qu’avant google, altavista était le moteur de recherche de référence). En tout cas, il y a fort à parier que se crée actuellement des projets qui vont bouleverser et impacter directement notre vie quotidienne dans quelques années… sauf si un jour le blackout d’internet n’annonce la fin de la partie, la blockchain ne sera alors probablement pas notre principal souci.
Très bon article didactique sur le sujet. Une comparaison bien trouvée et bien menée.
Continue comme ça !
PS : Un article récent sur l’identité de satoshi nakamoto : https://longreads.com/2017/10/10/the-creator-of-bitcoin-comes-clean-only-to-disappear-again/
Dans un autre genre la NSA aurait l’info 😉 https://medium.com/cryptomuse/how-the-nsa-caught-satoshi-nakamoto-868affcef595
Merci !
Super article ! Bravo