Protocoles de blockchain : dans la boîte noire du Bitcoin
A la croisée de la cryptographie, du peer-to-peer et de la théorie des jeux, l'écosystème de la crypto-monnaie Bitcoin est la première implémentation réussie d’un protocole de blockchain.
Parler de “boîte noire” à propos du Bitcoin n’est pas approprié, tant le protocole de blockchain au cœur de la conception de cette crypto-monnaie libre est public, transparent, ouvert et documenté. L’expression “boîte noire” fait plutôt référence à l’effort de compréhension nécessaire, de notions essentiellement informatiques, pour saisir toute l’inventivité du système décrit dans le livre blanc publié le 31 octobre 2008 par un mystérieux Satoshi Nakamoto, sur une liste de distribution électronique consacrée à la cryptographie.
Le jeu en vaut la chandelle. De simples protocoles informatiques peuvent changer la face du monde - comme la suite de protocoles TCP/IP, sur laquelle s’est appuyé tout le développement d’Internet. L’impact des protocoles de blockchain sur la société et sur l’économie sera probablement du même ordre puissance mille. Il peut être utile d’en avoir une intelligence intuitive. Les technologies utilisées ne sont pas des plus récentes : les bases de données, la cryptographie, le peer-to-peer (celui de Napster en 1999, étendu à tout le champ transactionnel). Le tout relié par du calcul cryptographique et un peu de théorie des jeux, pour un cocktail détonant.
Consensus informatique
La blockchain de la crypto-monnaie Bitcoin est un système de confiance informatisé qui permet de se passer de tiers (par exemple une banque) pour garantir le bon déroulement de transactions électroniques de pair à pair (directement entre personnes, comme avec de l’argent liquide) et les valider. Elle garde une trace de toutes les transactions en bitcoins qui se sont produites depuis l'origine - et qui ont été validés par blocs, selon un procédé dit de “consensus informatique distribué”. C’est un registre informatique public et sécurisé.
Plus la blockchain de la crypto-monnaie Bitcoin grossit – elle pèse plus de 300 giga-octets aujourd’hui -, plus les moyens à mobiliser pour la compromettre sont gigantesques. Afin de ne pas prêter le flanc à une attaque informatique, cet historique horodaté des transactions en bitcoins, qui permet de connaître les avoirs de chacun (ou plutôt de chaque adresse Bitcoin) à un instant donné, n’est pas stocké sur les serveurs d’une entité unique, qui pourrait être un organisme bancaire, mais répliqué sur l’ensemble des ordinateurs du réseau Bitcoin, qui exécutent tous le logiciel conçu par Satoshi Nakamoto. Directement héritée du peer-to-peer, cette architecture distribuée s'est imposée comme référence en terme de stabilité et de sécurité.
Minage
Appelés « mineurs », les ordinateurs du réseau Bitcoin hébergent chacun une copie de la blockchain qu'ils se chargent de mettre à jour au fur et à mesure que de nouveaux blocs de transactions sont validés. Ces « mineurs » sont incités à mettre à la disposition du réseau leurs capacités de calcul pour valider de nouveaux blocs de transactions. Cette activité, qu'on appelle le « minage », et qui exige une énorme puissance de calcul et une dépense considérable d’électricité, est rétribuée par l'émission de nouveaux bitcoins, et par une faible commission sur les transactions.
Les milliers de mineurs du réseau Bitcoin se font concurrence pour valider de nouveaux blocs de transactions et percevoir les récompenses. C'est le mineur qui parvient à valider le bloc suivant le premier qui empoche la rémunération prévue. Un nouveau bloc est validé toutes les dix minutes en moyenne. Le minage est le seul moyen de générer de nouveaux bitcoins. C'était le seul moyen de s'en procurer à l'origine. Des plateformes d'échange ont vu le jour depuis, qui permettent d'échanger les bitcoins déjà créés.
D'abord rémunéré par la création de 50 bitcoins (BTC), le minage d'un bloc de transactions ne rapportait plus que 25 BTC en 2016. Sa rémunération est passée à 12,5 BTC en juillet 2016, et à 6,26 BTC en juillet 2020. Le code source du logiciel Bitcoin prévoit qu'elle soit divisée par deux tous les 210 000 blocs validés, soit environ tous les quatre ans. Il fixe également à 21 millions le nombre de bitcoins qui pourront être mis en circulation, afin de prévenir tout phénomène d’inflation. Une fois cette limite atteinte, ce qui ne devrait survenir qu’en 2140, le minage ne sera plus rémunéré que par des commissions sur les transactions.
Empreinte numérique
Au cours du processus de minage, chaque nouveau bloc de transactions traité (il peut en comporter des milliers) doit être estampillé d’un « hashcash », ou empreinte numérique, qui va permettre à tous les mineurs de vérifier son intégrité avant de l'ajouter à leur copie de la blockchain. Le hashcash est une série de 32 caractères obtenue au terme d’un calcul cryptographique (le système Bitcoin recours à l’algorithme cryptographique SHA-256) réalisé à partir des données du bloc (on parle d'exécution d'une "fonction de hachage cryptographique").
Les données utilisées pour ce calcul incluent le hashcash du bloc précédent (pour le chaînage des blocs, d'où l’appellation de blockchain, ou « chaîne de blocs ») ; le montant des transactions inscrites dans le bloc ; les adresses Bitcoin des parties impliquées ; ainsi que le “nonce” (un nombre aléatoire) utilisé ; et un timestamp, ou marque d'horodatage, qui associe le bloc à une date et une heure précises, et constitue une sorte de cachet de la poste, ou preuve d'antériorité.
Autant le calcul du hashcash est rendu volontairement complexe et nécessite des équipements de plus en plus lourds, autant les mineurs peuvent en vérifier rapidement la conformité avant de mettre à jour leur copie de la blockchain. Modifier un seul caractère du bloc produit en effet un hashcash totalement différent, ce qui permet de détecter toute corruption des données source presque qu’instantanément.
Preuve de travail
Dans le dispositif de la blockchain, le calcul du hashcash de chaque bloc de transactions est une épreuve imposée aux mineurs. Il joue un rôle de « preuve de travail » (proof-of-work, en anglais), et leur impose d’investir énormément en puissance de calcul et en énergie pour parvenir au résultat. Cette épreuve de calcul rend improbable la possibilité de compromettre la blockchain. Une attaque en règle nécessiterait de mobiliser (et donc de contrôler) plus de la moitié de la puissance de calcul du réseau.
La tâche qui requiert le plus de puissance informatique n'est pas tant de calculer des empreintes numériques des blocs de transactions, ce qu'un ordinateur peut faire en une fraction de seconde, que d'en calculer un nombre indéfini, à partir des données du bloc et d'une chaîne de caractères aléatoire différente à chaque fois (appelée « nonce »), jusqu'à parvenir à produire une empreinte conforme à une difficulté cible.
Cette difficulté cible, appelée « difficulté de minage », peut consister, par exemple, à recommencer le calcul jusqu'à obtenir une empreinte commençant par un nombre défini de zéro, ce qui est parfaitement aléatoire et nécessite d'effectuer un nombre tout aussi aléatoire de tentatives infructueuses. Pour parvenir à ce résultat, les équipements spécifiques dédiés au minage sont capables de calculer des milliers de milliards d'empreintes par seconde. C'est ce qu'on appelle le hashrate, ou taux de "hachage".
Taux de hachage
Le hashrate des matériels de minage s'exprime en « gigahash » par seconde (GH/s), ce qui correspond à un milliard de hash, ou empreintes, calculés chaque seconde. Certains matériels affichent une capacité de calcul en « terahash » par seconde (TH/s), soit plusieurs milliers de milliards d'empreintes.
Exprimée en multiple de la capacité de calcul déployée pour générer le premier bloc de transactions en bitcoins, la difficulté de minage est ajustée automatiquement tous les 2016 blocs de transactions résolus, en fonction de la montée en puissance de calcul du réseau, et de manière à ce que la génération des 2016 blocs suivants dure toujours quatorze jours.
Le système Bitcoin maintient cet intervalle à des fins d'autorégulation. Grâce au réglage automatique de la difficulté de minage, son protocole prévient qu'un trop grand nombre de transactions ne vienne submerger le réseau, et qu’il puisse être exposé à une attaque de type “déni de service”.
La difficulté de minage, et par la même occasion la sécurité du réseau, augmentent au fur et à mesure que le nombre de mineurs augmente, ou que les équipements utilisés pour le minage montent en puissance. Le minage n'est plus une activité accessible ou rentable pour les particuliers, comme ce fut le cas aux premiers temps du Bitcoin. Seuls quelques sites industriels suréquipés parviennent à tirer leur épingle du jeu aujourd'hui (1).
Théorie des jeux
Une fois un nouveau bloc de transactions inscrit dans la blockchain avec son hashrate, que chaque mineur a vérifié avant de mettre à jour sa copie (il suffit d’en reproduire le calcul avec le nombre aléatoire inscrit en clair dans le bloc, ce qui ne prend qu’une fraction de seconde), les informations qu’il contient, dont le montant des transactions validées et l’adresse Bitcoin des parties impliquées, ne peuvent plus être modifiées.
Des fermes de mineurs pourraient s’allier pour mobiliser la puissance de calcul et les sources d’électricité nécessaires à une compromission de la blockchain, qui exigerait de recalculer le hashrate de tous les blocs modifiés et de tous les suivants, avant que d’autres mineurs ne parviennent à valider de nouveaux blocs et à constituer une blockchain plus longue. Dans le protocole de Nakamoto, c’est en effet la blockchain la plus longue qui fait foi, parce qu’elle contient le plus grand nombre de blocs déjà validés par la majorité des mineurs à un instant donné.
Une telle prouesse informatique, cependant, n’aurait pas beaucoup d’intérêt. Elle ferait voler en éclat le processus de consensus informatique et la confiance dans le système qui garantit la valeur des gains qu’elle est susceptible de générer. C’est ainsi que le protocole de Nakamoto parvient à établir ce qu’on appelle en théorie des jeux un “équilibre de Nash”, notion élaborée en 1950 par le mathématicien et économiste américain John Forbes Nash. Cet équilibre garantit que même dans un cadre non-coopératif, où l’instinct de préservation comme la cupidité peuvent l’emporter, aucun mineur ne sera tenté de déroger (parce que ce n’est pas son intérêt) à sa fidélité au protocole.
Double clé
Le calcul du hashcash imposé aux mineurs pour sécuriser l'enregistrement d'un nouveau bloc de transactions dans la blockchain, n'est pas le seul dispositif cryptographique mis en œuvre dans le système Bitcoin. La sécurité des transactions elles-mêmes est assurée par le biais d'un système cryptographique « à double clé » publique et privée, dit « asymétrique », qui permet d’en authentifier les parties.
Le principe est simple. Les deux interlocuteurs disposent chacun de deux clés (des séries de chiffres et de caractères) : l'une publique, qu'ils diffusent largement ; l'autre privée, qu'ils gardent secrète. S'il doit garantir la confidentialité de son message, l'expéditeur le code en utilisant la clef publique du destinataire, qui devra utiliser sa propre clef privée pour le déchiffrer. S'il doit authentifier son message, l'émetteur ajoute un champ d'identification (sa « signature numérique »), qu'il génère avec sa clef privée. Le destinataire pourra vérifier la validité de la signature avec la clef publique de l'expéditeur.
L'intérêt est de ne pas avoir à échanger la clé permettant de déchiffrer le message ou de vérifier son authenticité, ce qui constituerait une vulnérabilité. Tout système de cryptographie asymétrique permet de cumuler ces deux fonctions de confidentialité et d'authentification. Dans le cas de la crypto-monnaie Bitcoin, la problématique n'est pas d'assurer la confidentialité des transactions, dont les données circulent en clair sur le réseau, mais d'en authentifier les parties.
Pour ce faire, l'émetteur d'une transaction sur le réseau, qui doit envoyer un message à tous les mineurs pour les en informer, doit le signer « cryptographiquement » avec sa clé privée, qui doit correspondre à la clé publique du compte à partir duquel la transaction est effectuée. Les mineurs peuvent vérifier l’authenticité de l’ordre de transaction avec la clé publique de l’émetteur. A aucun moment le logiciel Bitcoin n'utilise des données personnelles pour identifier les parties d'une transaction. Leur adresse Bitcoin, qui est une empreinte (ou hash) de leur clé publique, est la seule référence utilisée. Et seule la clé privée correspondante permet d'utiliser les bitcoins crédités à cette adresse (2).
Au delà du Bitcoin
La crypto-monnaie Bitcoin n’est que la première implémentation réussie d’une blockchain publique indépendante de toute autorité de régulation. En tant que telle, elle a fait preuve d’une remarquable robustesse depuis plus de dix ans. D’autres blockchains publiques ont vu le jour depuis, comme la blockchain Ethereum, qui utilise sa propre crypto-monnaie Ether (ETH), et propose un langage de programmation beaucoup plus élaboré. Baptisé Solidity, il permet de développer toutes sortes d’applications décentralisées (ou Dapps) s’appuyant sur la blockchain Ethereum, très au delà du seul champ crypto-monétaire.
Le propre du langage Solidity est de permettre de programmer des “smart-contracts”, ou contrats auto-certifiés, qui s’exécutent automatiquement sur la blockchain Ethereum en fonction de conditions préétablies, et dont l’exécution est irrévocable. Un smart-contract peut par exemple se charger de répartir automatiquement les revenus générés par l’exploitation d’une chanson à tous ses ayant droit référencés sur une blockchain, et lancer ainsi l’exécution de tout un volet de transactions. Le développement de Dapps s’appuyant sur des smart-contracts ouvre tout un champ d’innovations informatiques, dont il temps de partir explorer les recoins.
[à suivre]
A lire également : Protocoles de blockchain : d'abord une révolution informatique
(1) Les processeurs d'ordinateurs personnels (CPU) ne sont plus assez puissants pour faire du minage. Ce sont des circuits intégrés spécifiquement conçus pour cette activité (ou ASIC, pour Application-Specific Integrated Circuit) qui s'en chargent. Ces circuits ASIC sont beaucoup moins énergivores que les CPU. Faire du minage nécessite désormais de s'équiper d'appareils spécialisés qui en sont dotés, et qui peuvent coûter plusieurs centaines ou milliers d'euros pièce, sachant qu'une ferme de minage peut en exploiter plusieurs milliers.
(2) En cas de perte de la clé privée, qui peut-être stockée sur un ordinateur, un téléphone mobile ou une clé USB (voire écrite à la main sur un bout de papier), ces bitcoins resteront à jamais inaccessibles. On estime que 20 % à 25 % des bitcoins émis depuis l’origine sont aujourd’hui définitivement perdus.