mercredi 13 septembre 2017

Dans la boîte noire du bitcoin

La blockchain de la crypto-monnaie bicoin est un système de confiance informatisé qui permet de se passer de tiers (par exemple une banque) pour garantir le bon déroulement des transactions et les valider. Elle garde une trace de toutes les transactions en bitcoins qui se sont produites depuis l'origine. Plus la blockchain de la crypto-monnaie Bitcoin grossit – elle pèse plus de 130 gigaoctets 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 n’est pas stocké sur les serveurs d’une entité unique, qui pourrait être une banque, mais répliqué sur l’ensemble des ordinateurs du réseau Bitcoin. Cette architecture décentralisée, héritée du peer-to-peer, s'est imposée comme référence en terme de stabilité et de sécurité.

Appelés « mineurs », les ordinateurs du réseau Bitcoin, dont on estime le nombre à plusieurs milliers et qui sont répartis dans plus de 80 pays, 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 » ont une autre fonction : ils mettent volontairement à la disposition du réseau Bitcoin leurs capacités de calcul pour valider de nouveaux blocs de transactions. Cette activité, qu'on appelle le « minage », exige une énorme puissance de calcul. Elle 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. C'est le mineur qui parvient à valider un bloc 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'en acheter ou d'en vendre. D'abord rémunéré 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. 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. Le système de génération de bitcoins limite à 21 millions le nombre de bitcoins qui pourront être créés. Cette règle vise à éviter tout phénomène d'inflation monétaire. Le minage ne sera alors plus rémunéré que par des commissions sur les transactions.

Au cours du processus de minage, chaque nouveau bloc de transactions traité doit être estampillé d’un « hashcash », ou somme de contrôle, qui va permettre à tous les mineurs de vérifier son intégrité avant de l'ajouter à leur copie de la blockchain. Cette série de 32 caractères est obtenue au terme d’un calcul cryptographique réalisé à partir des données du bloc (on parle d'exécution d'une "fonction de hachage"). Ces données 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 et les adresses Bitcoin des parties ; ainsi qu'un timestamp, ou marque d'horodatage (repère temporel). En informatique, l'horadatage consiste à lier un événement, une information ou une donnée à une date et une heure précises. C'est une sorte de cachet de la poste, une preuve d'antériorité qui contribue à garantir l'intégrité du bloc.

Le hashcash est une empreinte numérique des données du bloc qui permet à la fois de l'identifier et de vérifier qu’il n’a pas été corrompu.  Autant son calcul est rendu complexe et nécessite des équipements de plus en plus lourds, autant les mineurs peuvent en vérifier rapidement la conformité. Modifier un seul caractère du bloc produit une somme de contrôle différente, ce qui permet de détecter toute corruption des données source. Dans le dispositif de la blockchain, le calcul du hashcash de chaque bloc de transactions est une sorte d’épreuve imposée aux mineurs. Il joue un rôle de « preuve de travail » (proof-of-work en anglais). En clair, il garantit que la compromission du réseau nécessite une telle puissance de calcul qu’elle relève de l’impossible.

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". 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. Le jour où j'écris ces lignes, le taux de hachage global de tous les mineurs du réseau Bitcoin a été de près de 8 milliards de GH/s, pour miner 173 nouveaux blocs de transactions.

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 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, le protocole Bitcoin prévient qu'un trop grand nombre de transactions ne vienne submerger le réseau ; par exemple, avec le développement d'activités de micro-trading.

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. Les processeurs d'ordinateurs personnels (CPU) ne sont plus assez puissants. 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.

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 oeuvre 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 ». 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'authentifier les parties, c'est à dire de s'assurer que les montants seront déduits des bons comptes émetteurs et crédités sur les bons comptes destinataires. Pour ce faire, l'émetteur d'une transaction doit la signer « cryptographiquement » avec sa clé privée, qui doit correspondre à la clé publique du compte à partir duquel la transaction est effectuée. 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. 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.

2 commentaires:

  1. J'oublie de souligner une notion importante, me signale un lecteur : le hashcash du blog est calculé à partir de ses données, qui intègrent aussi, outre le hashcah du blog précédent et les transactions à valider, un timestamp, ou marque d'horodatage (repère temporel). En informatique, l'horadatage consiste à lier un événement, une information ou une donnée à une date et une heure précises. C'est une sorte de cachet de la poste, une preuve d'antériorité qui contribue à garantir l'intégrité du bloc.

    RépondreSupprimer

L'effondrement qui vient...

Notre monde est devenu un amoncellement de systèmes complexes - politiques, économiques, industriels, financiers - qui s'imbriquent le...